Best Python code snippet using pytest-benchmark
train.py
Source:train.py  
1import logging2import sys34import numpy as np5import numpy as np6import pandas as pd78import symfit as sf9from symfit.core.minimizers import BFGS, DifferentialEvolution101112logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)13logger = logging.getLogger(__name__)141516# Load data17logger.info("Loading data")18df = pd.read_csv(19    "https://opendata.ecdc.europa.eu/covid19/casedistribution/csv/",20    parse_dates=["dateRep"],21    infer_datetime_format=True,22    dayfirst=True,23)2425logger.info("Cleaning data")26df = df.rename(27    columns={"dateRep": "date", "countriesAndTerritories": "country"}28)  # Sane column names29df = df.drop(["day", "month", "year", "geoId"], axis=1)  # Not required3031# Create DF with sorted index32sorted_data = df.set_index(df["date"]).sort_index()3334# Remove all rows with zero deaths in it35sorted_data = sorted_data[sorted_data["deaths"] != 0]3637sorted_data["cumulative_cases"] = sorted_data.groupby(by="country")["cases"].cumsum()38sorted_data["cumulative_deaths"] = sorted_data.groupby(by="country")["deaths"].cumsum()3940# Filter out data with less than 100 deaths, we probably can't get very good estimates from these.41sorted_data = sorted_data[sorted_data["cumulative_deaths"] >= 100]4243# Remove "Czechia" it has a population of NaN44sorted_data = sorted_data[sorted_data["country"] != "Czechia"]4546# Get final list of countries47countries = sorted_data["country"].unique()48n_countries = len(countries)4950# Pull out population size per country51populations = {52    country: df[df["country"] == country].iloc[0]["popData2019"]53    for country in countries54}5556# A map from country to integer index (for the model)57idx_country = pd.Index(countries).get_indexer(sorted_data.country)5859# Create a new column with the number of days since first infection (the x-axis)60country_first_dates = {61    c: sorted_data[sorted_data["country"] == c].index.min() for c in countries62}63sorted_data["100_cases"] = sorted_data.apply(64    lambda x: country_first_dates[x.country], axis=165)66sorted_data["days_since_100_cases"] = (67    sorted_data.index - sorted_data["100_cases"]68).apply(lambda x: x.days)6970logger.info("Training...")71fit_result = {}72ode_model = {}73for country in countries:74    t, S, I, R, D = sf.variables("t, S, I, R, D")75    p_susceptible = 0.0008576    N_mu = populations[country] * p_susceptible77    β_0, γ_0, μ_0 = 0.35, 0.1, 0.0378    N_0 = N_mu79    β = sf.Parameter("β", value=β_0, min=0.1, max=0.5)80    γ = sf.Parameter("γ", value=γ_0, min=0.01, max=0.2)81    N = sf.Parameter("N", value=N_0, min=1e4, max=1e7)82    μ = sf.Parameter("μ", value=μ_0, min=0.0001, max=0.1)8384    print(country, N_0)8586    model_dict = {87        sf.D(S, t): -β * I * S / N,88        sf.D(I, t): β * I * S / N - γ * I - μ * I,89        sf.D(R, t): γ * I,90        sf.D(D, t): μ * I,91    }9293    p_infected = 0.0194    I_0, R_0, D_0 = N_mu * p_infected, N_mu * p_infected - 100.0, 100.095    S_0 = N_mu - I_0 - R_0 - D_096    ode_model[country] = sf.ODEModel(97        model_dict, initial={t: 0.0, S: S_0, I: I_0, R: R_0, D: D_0}98    )99100    idx = sorted_data["country"] == country101    x = sorted_data[idx]["days_since_100_cases"].values102    y = sorted_data[idx]["cumulative_deaths"].values103104    fit = sf.Fit(105        ode_model[country],106        t=x,107        S=None,108        I=None,109        R=None,110        D=y,111        minimizer=[DifferentialEvolution, BFGS],112    )113    fit_result[country] = fit.execute(114        DifferentialEvolution={"seed": 0, "tol": 1e-2, "maxiter": 5}, BFGS={"tol": 1e-6}115    )116    print(fit_result[country])117118logger.info("Inferencing...")119n_days = 365  # Daily predictions120121cumulative_prediction = {}122daily_prediction = {}123residuals_high = {}124residuals_low = {}125for country in countries:126    idx = sorted_data["country"] == country127    x = sorted_data[idx]["days_since_100_cases"].values128    y = sorted_data[idx]["cumulative_deaths"].values129    tvec = np.arange(x.max() + n_days)130    d, i, r, s = ode_model[country](t=tvec, **fit_result[country].params)131    cumulative_prediction[country] = d132    y = sorted_data[idx]["deaths"].values133    daily_prediction[country] = np.diff(d)134    residual_std = np.std(y - daily_prediction[country][: len(y)])135    residuals_high[country] = daily_prediction[country] + residual_std136    residuals_low[country] = daily_prediction[country] - residual_std137138# Remember this is one big vector that contains all countries at all times.139# To do inference we need to construct a new vector with new times140# Create the time index141time_index = np.arange(0, n_days, 1)142time_index = np.repeat(time_index, n_countries)143144# Create the country index145country_index = np.arange(n_countries)146country_index = np.tile(country_index, n_days)147dummy_y = np.zeros(len(time_index))148149logger.info("Saving model")150151# Calculate dates (must be in python datetime to work with pydantic)152country_start = [country_first_dates[x] for x in countries[country_index].tolist()]153country_offset = [pd.DateOffset(x) for x in time_index]154dates = list(155    map(lambda x: (x[0] + x[1]).to_pydatetime(), zip(country_start, country_offset))156)157158# Create a big dataframe with all this info159predictions = pd.DataFrame(160    {161        "timestamp": dates,162        "country": countries[country_index],163        "deaths_prediction": [164            daily_prediction[c][t]165            for t, c in zip(time_index, countries[country_index].tolist())166        ],167        "cumulative_deaths_prediction": [168            cumulative_prediction[c][t]169            for t, c in zip(time_index, countries[country_index].tolist())170        ],171        "residuals_low": [172            residuals_low[c][t]173            for t, c in zip(time_index, countries[country_index].tolist())174        ],175        "residuals_high": [176            residuals_high[c][t]177            for t, c in zip(time_index, countries[country_index].tolist())178        ],179        "days_since_100_cases": time_index,180    },181    index=dates,182)183184# Merge in the ground truth185predictions = pd.merge(186    predictions.rename_axis("index").reset_index(),187    sorted_data[["country", "deaths", "cumulative_deaths"]]188    .rename_axis("index")189    .reset_index(),190    on=["index", "country"],191    how="outer",192).set_index("index")193194# Save to file195predictions.to_pickle("predictions.pkl")
...finder.py
Source:finder.py  
1import csv2from collections import Counter34def get_mean(total_weight, total_entries):5    #Calculating Mean6    mean = total_weight / total_entries7    print(f"Mean(Average) is: {mean:2f}")89def get_median(total_entries, sorted_data):10    #Calculating Median11    if total_entries % 2 == 0:12        median1 = float(sorted_data[total_entries//2])13        median2 = float(sorted_data[total_entries//2 - 1])14        median = (median1 + median2) / 215    else:16        median = float(sorted_data[total_entries//2])17    print(f"Median is: {median:2f}")1819def get_mode(sorted_data):20    #Calculating Mode21    data = Counter(sorted_data)22    mode_data_for_range = {23                            "75-85": 0,24                            "85-95": 0,25                            "95-105": 0,26                            "105-115": 0,27                            "115-125": 0,28                            "125-135": 0,29                            "135-145": 0,30                            "145-155": 0,31                            "155-165": 0,32                            "165-175": 033                        }34    for weight, occurence in data.items():35        if 75 < weight < 85:36            mode_data_for_range["75-85"] += occurence37        elif 85 < weight < 95:38            mode_data_for_range["85-95"] += occurence39        elif 95 < weight < 105:40            mode_data_for_range["95-105"] += occurence41        elif 105 < weight < 115:42            mode_data_for_range["105-115"] += occurence43        elif 115 < weight < 125:44            mode_data_for_range["115-125"] += occurence45        elif 125 < weight < 135:46            mode_data_for_range["125-135"] += occurence47        elif 135 < weight < 145:48            mode_data_for_range["135-145"] += occurence49        elif 145 < weight < 155:50            mode_data_for_range["145-155"] += occurence51        elif 155 < weight < 165:52            mode_data_for_range["155-165"] += occurence53        elif 165 < weight < 175:54            mode_data_for_range["165-175"] += occurence55    mode_range, mode_occurence = 0, 056    for range, occurence in mode_data_for_range.items():57        if occurence > mode_occurence:58            mode_range, mode_occurence = [int(range.split("-")[0]), int(range.split("-")[1])], occurence59    mode = float((mode_range[0] + mode_range[1]) / 2)60    print(f"Mode is: {mode:2f}")6162with open('SOCR-HeightWeight.csv', newline='') as f:63    reader = csv.reader(f)64    file_data = list(reader)6566file_data.pop(0)6768total_weight = 069total_entries = len(file_data)70sorted_data = []7172for person_data in file_data:73    total_weight += float(person_data[2])74    sorted_data.append(float(person_data[2]))7576sorted_data.sort()7778get_mean(total_weight, total_entries)79get_median(total_entries, sorted_data)
...task1.py
Source:task1.py  
1import numpy as np2import matplotlib.pyplot as plt3from matplotlib.ticker import AutoMinorLocator4from lab2.kernel_functions import box_kernel5def interquartile_range(down_quartile_val, up_quartile_val):6    return up_quartile_val - down_quartile_val7def down_quartile(sorted_data):8    l = len(sorted_data)9    down = sorted_data[int((2 + l) / 4)]10    up = sorted_data[np.math.ceil((2 + l) / 4)]11    return (down + up) / 212def up_quartile(sorted_data):13    l = len(sorted_data)14    down = sorted_data[int((2 + 3 * l) / 4)]15    up = sorted_data[np.math.ceil((2 + 3 * l) / 4)]16    return (down + up) / 217def silverman_bandwidth(data):18    sorted_data = sorted(data)19    return 0.9 * min(np.std(data), interquartile_range(down_quartile(sorted_data), up_quartile(sorted_data)) / 1.34) * np.math.pow(len(data), -0.2)20def general_naive_density_estimator(x, data, bandwidth, kernel_function):21    n = len(data)22    kernel_sum = 023    for i in range(n):24        kernel_sum += kernel_function((x - data[i]) / bandwidth)25    return 1 / (n * bandwidth) * kernel_sum26def task1(data):27    sorted_data = sorted(data)28    silverman_band = silverman_bandwidth(data)29    print(silverman_band)30    small_band = 0.131    large_band = 332    val = 0.33    ins = []34    silverman_outs = []35    small_outs = []36    large_outs = []37    for x in sorted_data:38        ins.append(x)39        silverman_outs.append(general_naive_density_estimator(x, data, silverman_band, box_kernel))40        small_outs.append(general_naive_density_estimator(x, data, small_band, box_kernel))41        large_outs.append(general_naive_density_estimator(x, data, large_band, box_kernel))42    plt.figure(2)43    ax = plt.axes()44    ax.yaxis.set_minor_locator(AutoMinorLocator(2))45    ax.xaxis.set_minor_locator(AutoMinorLocator(2))46    ax.spines['top'].set_visible(False)47    ax.spines['right'].set_visible(False)48    plt.plot(ins, small_outs)49    plt.plot(sorted_data, np.zeros_like(sorted_data) + val, 'x', color='orange')50    plt.xlabel('x')51    plt.ylabel('f(x)')52    plt.show()53    plt.figure(3)54    ax = plt.axes()55    ax.yaxis.set_minor_locator(AutoMinorLocator(2))56    ax.xaxis.set_minor_locator(AutoMinorLocator(2))57    ax.spines['top'].set_visible(False)58    ax.spines['right'].set_visible(False)59    plt.plot(ins, silverman_outs)60    plt.plot(sorted_data, np.zeros_like(sorted_data) + val, 'x', color='orange')61    plt.xlabel('x')62    plt.ylabel('f(x)')63    plt.show()64    plt.figure(4)65    ax = plt.axes()66    ax.yaxis.set_minor_locator(AutoMinorLocator(2))67    ax.xaxis.set_minor_locator(AutoMinorLocator(2))68    ax.spines['top'].set_visible(False)69    ax.spines['right'].set_visible(False)70    plt.plot(ins, large_outs)71    plt.plot(sorted_data, np.zeros_like(sorted_data) + val, 'x', color='orange')72    plt.xlabel('x')73    plt.ylabel('f(x)')...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
