Skip to content

Instantly share code, notes, and snippets.

View btseytlin's full-sized avatar
👁️‍🗨️
https://t.me/boris_again

Boris Tseitlin btseytlin

👁️‍🗨️
https://t.me/boris_again
View GitHub Profile
@btseytlin
btseytlin / runpod_submit.py
Created September 18, 2025 16:11
runpod submit
import os
import base64
import shlex
from pathlib import Path
from dataclasses import dataclass
from typing import Any
import click
import runpod
from dotenv import load_dotenv, dotenv_values, find_dotenv
import logging
import os
import sys
from dataclasses import dataclass, field
from typing import Optional
import torch
import transformers
from datasets import load_dataset
from torchvision.transforms import (
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@btseytlin
btseytlin / eval.py
Created June 23, 2021 13:42
Medium "How to actually forecast COVID-19" embed
from sir_models.utils import eval_on_select_dates_and_k_days_ahead
from sir_models.utils import smape
from sklearn.metrics import mean_absolute_error
K = 30
last_day = train_subset.date.iloc[-1] - pd.to_timedelta(K, unit='D')
eval_dates = pd.date_range(start='2020-06-01', end=last_day)[::20]
def eval_hidden_moscow(train_df, t, train_t, eval_t):
weights = {
@btseytlin
btseytlin / train.py
Created June 23, 2021 13:35
Medium "How to actually forecast COVID-19" embed
from sir_models.fitters import HiddenCurveFitter
from sir_models.models import SEIRHidden
stepwize_size = 60
weights = {
'I': 0.25,
'R': 0.25,
'D': 0.5,
}
model = SEIRHidden(stepwise_size=stepwize_size)
fitter = HiddenCurveFitter(
@btseytlin
btseytlin / optim.py
Created June 23, 2021 13:34
Medium "How to actually forecast COVID-19" embed
def smape_resid_transform(true, pred, eps=1e-5):
return (true - pred) / (np.abs(true) + np.abs(pred) + eps)
class HiddenCurveFitter(BaseFitter):
...
def residual(self, params, t_vals, data, model):
model.params = params
initial_conditions = model.get_initial_conditions(data)
@btseytlin
btseytlin / stepwise.py
Last active June 23, 2021 13:23
Medium "How to actually forecast COVID-19" embed
def sigmoid(x, xmin, xmax, a, b, c, r):
x_scaled = (x - xmin) / (xmax - xmin)
out = (a * np.exp(c * r) + b * np.exp(r * x_scaled)) / (np.exp(c * r) + np.exp(x_scaled * r))
return out
def stepwise_soft(t, coefficients, r=20, c=0.5):
t_arr = np.array(list(coefficients.keys()))
min_index = np.min(t_arr)
@btseytlin
btseytlin / serid_run.py
Created June 23, 2021 13:19
Medium "How to actually forecast COVID-19" embed
model = BarebonesSEIR()
model.params = model.get_fit_params()
train_initial_conditions = model.get_initial_conditions(train_subset)
train_t = np.arange(len(train_subset))
(S, E, I, R, D) = model.predict(train_t, train_initial_conditions)
plt.figure(figsize=(10, 7))
plt.plot(train_subset.date, train_subset['total_dead'], label='ground truth')
plt.plot(train_subset.date, D, label='predicted', color='black', linestyle='dashed' )
plt.legend()
plt.title('Total deaths')
@btseytlin
btseytlin / seird.py
Created June 23, 2021 13:15
Medium "How to actually forecast COVID-19" embed
class BarebonesSEIR:
def __init__(self, params=None):
self.params = params
def get_fit_params(self):
params = lmfit.Parameters()
params.add("population", value=12_000_000, vary=False)
params.add("epidemic_started_days_ago", value=10, vary=False)
params.add("r0", value=4, min=3, max=5, vary=True)
params.add("alpha", value=0.0064, min=0.005, max=0.0078, vary=True) # CFR
@btseytlin
btseytlin / smooth_02.py
Created June 23, 2021 13:06
Medium "How to actually forecast COVID-19" embed
df_smoothed = df.rolling(7).mean().round(5)
df_smoothed.columns = [col + '_ma7' for col in df_smoothed.columns]
full_df = pd.concat([df, df_smoothed], axis=1)
for column in full_df.columns:
if column.endswith('_ma7'):
original_column = column.strip('_ma7')
full_df[column] = full_df[column].fillna(full_df[original_column])