evofr.models package

Subpackages

Submodules

evofr.models.mlr_hierarchical module

class HierMLR(tau, pool_scale=None, xi_prior=None, xi_by_group=False)

Bases: ModelSpec

Parameters:
  • tau (float)

  • pool_scale (float | None)

  • xi_prior (float | None)

  • xi_by_group (bool)

augment_data(data)

Augments existing data for inference with model specific information.

Parameters:

data (dict)

Return type:

None

static forecast_frequencies(samples, forecast_L)

Use posterior beta to forecast posterior frequencies.

static make_ols_feature(start, stop, n_groups)

Construct simple OLS features (1, x) for HierMLR as nd.array.

Parameters:
  • start – Start value for OLS feature.

  • stop – Stop value for OLS feature.

  • n_groups – number of groups in the hierarchical model.

hier_MLR_numpyro(seq_counts, N, X, tau=None, pool_scale=None, xi_prior=None, xi_by_group=False, pred=False, var_names=None)
simulate_hier_mlr(growth_advantages, freq0, tau, Ns)

evofr.models.mlr_innovation module

class DeltaNormalPrior(loc=None, scale=None)

Bases: DeltaPriorModel

Parameters:
  • loc (float | None)

  • scale (float | None)

model(N_variants)
class DeltaPriorModel

Bases: ABC

abstract model()
class DeltaRegressionPrior(features)

Bases: DeltaPriorModel

model(N_variants)
predict(features, samples)
class InnovationMLR(tau, delta_prior=None)

Bases: ModelSpec

Parameters:
augment_data(data)

Augments existing data for inference with model specific information.

Parameters:

data (dict)

Return type:

None

class InnovationSequenceCounts(raw_seq, raw_variant_parents, date_to_index=None, var_names=None, pivot=None)

Bases: DataSpec

Parameters:
  • raw_seq (DataFrame)

  • raw_variant_parents (DataFrame)

  • date_to_index (dict | None)

  • var_names (List | None)

  • pivot (str | None)

make_data_dict(data=None)

Get arguments to be passed to numpyro models as a dictionary.

Parameters:

data (dict | None) – Optional dictionary to add arguments to.

Returns:

Dictionary containing arguments.

Return type:

dict

MLR_innovation_model(seq_counts, N, X, innovation_matrix, delta_prior, tau=None, pred=False)
MLR_innovation_model_time_varying(seq_counts, N, innovation_matrix, delta_prior, tau=None, pred=False)
prep_clade_list(raw_variant_parents, var_names=None)

Process ‘raw_variant_parents’ data to nd.array showing which innovations present by variant.

Parameters:
  • raw_variant_parents (DataFrame) – a dataframe containing variant name and parent variant

  • var_names (List | None) – optional list of variants

  • pivot – optional name of variant to place last. Defaults to “other” if present otherwise. This will usually used as a reference or pivot strain.

Returns:

binary matrix showing whether A[i,j] = i has innovation from j.

Return type:

innovation_matrix

evofr.models.mlr_nowcast module

class BetaHazard

Bases: HazardModel

model(N_variants, D)
class DelaySequenceCounts(raw_seq, date_to_index=None, var_names=None, max_delay=None, pivot=None)

Bases: DataSpec

Parameters:
  • raw_seq (DataFrame)

  • date_to_index (dict | None)

  • var_names (List | None)

  • max_delay (int | None)

  • pivot (str | None)

make_data_dict(data=None)

Get arguments to be passed to numpyro models as a dictionary.

Parameters:

data (dict | None) – Optional dictionary to add arguments to.

Returns:

Dictionary containing arguments.

Return type:

dict

class HazardModel

Bases: ABC

abstract model(N_variants, D)
class LinearHazard

Bases: HazardModel

model(N_variants, D)
class LogitRWHazard

Bases: HazardModel

model(N_variants, D)
class LogitSplineHazard(k=None, order=None, pool_scale=None)

Bases: HazardModel

Parameters:
  • k (int | None)

  • order (int | None)

  • pool_scale (float | None)

model(N_variants, D)
class MLRNowcast(tau, hazard_model=None, SeqLik=None)

Bases: ModelSpec

Parameters:
augment_data(data)

Augments existing data for inference with model specific information.

Parameters:

data (dict)

Return type:

None

MLR_nowcast_model(seq_counts, seq_counts_delay, N, X, hazard_model, SeqLik, tau=None, pred=False)
discrete_hazard_to_pmf_cdf(h)
estimate_delay(seq_count_delays, hazard_model)
prep_sequence_counts_delay(raw_seqs, date_to_index=None, var_names=None, max_delay=None, pivot=None)

Process ‘raw_seq’ data to nd.array including unobserved dates.

Parameters:
  • raw_seq – a dataframe containing sequence counts with columns ‘sequences’ and ‘date’.

  • raw_seqs (DataFrame)

  • date_to_index (dict | None)

  • var_names (List | None)

  • max_delay (int | None)

  • pivot (str | None)

date_to_index:

optional dictionary for mapping calender dates to nd.array indices.

var_names:

optional list of variant to count observations.

pivot:

optional name of variant to place last. Defaults to “other” if present otherwise. This will usually used as a reference or pivot strain.

Returns:

  • var_names – list of variants counted

  • C – nd.array containing number of sequences of each variant on each date.

Parameters:
  • raw_seqs (DataFrame)

  • date_to_index (dict | None)

  • var_names (List | None)

  • max_delay (int | None)

  • pivot (str | None)

evofr.models.mlr_spline module

class MLRSpline(tau, s=None, k=None, order=None)

Bases: ModelSpec

Parameters:
  • tau (float)

  • s (Array | None)

  • k (int | None)

  • order (int | None)

augment_data(data)

Augments existing data for inference with model specific information.

Parameters:

data (dict)

Return type:

None

MLR_spline_numpyro(seq_counts, N, X, X_deriv, tau=None, pred=False, var_names=None)

evofr.models.model_spec module

class ModelSpec

Bases: ABC

Abstract model class. Used by evofr to handle model specifications for inference. Classes which inherit from ModelSpec must have an attribute ‘model_fn’ which defines the function to be used for inference in numpyro.

abstract augment_data(data)

Augments existing data for inference with model specific information.

Parameters:

data (dict)

Return type:

None

model_fn: Callable
registry = {'DistanceMigrationModel': <class 'evofr.models.migration_from_distances.DistanceMigrationModel'>, 'HierMLR': <class 'evofr.models.mlr_hierarchical.HierMLR'>, 'HierMLRTime': <class 'evofr.models.mlr_hierarchical_time_varying.HierMLRTime'>, 'HierMLR_HSGP': <class 'evofr.models.mlr_hierarchical_gp.HierMLR_HSGP'>, 'InnovationMLR': <class 'evofr.models.mlr_innovation.InnovationMLR'>, 'MLRNowcast': <class 'evofr.models.mlr_nowcast.MLRNowcast'>, 'MLRSpline': <class 'evofr.models.mlr_spline.MLRSpline'>, 'MultinomialLogisticRegression': <class 'evofr.models.multinomial_logistic_regression.MultinomialLogisticRegression'>, 'PianthamModel': <class 'evofr.models.piantham_model.PianthamModel'>, 'RelativeFitnessDR': <class 'evofr.models.latent_immunity_relative_fitness.RelativeFitnessDR'>, 'RelativeFitnessHSGP': <class 'evofr.models.relative_fitness_hsgp.RelativeFitnessHSGP'>, 'RenewalModel': <class 'evofr.models.renewal_model.renewal_model.RenewalModel'>, 'RenewalRegressionModel': <class 'evofr.models.renewal_model.renewal_regression.RenewalRegressionModel'>, 'SingleRenewalModel': <class 'evofr.models.renewal_model.renewal_single_variant.SingleRenewalModel'>, 'SplineIncidenceModel': <class 'evofr.models.renewal_model.spline_incidence.SplineIncidenceModel'>}

evofr.models.multinomial_logistic_regression module

MLR_numpyro(seq_counts, N, X, tau=None, pred=False, var_names=None, dir_multinomial=False, xi_prior=None)
class MultinomialLogisticRegression(tau, dir_multinomial=False, xi_prior=None)

Bases: ModelSpec

Parameters:
  • tau (float)

  • xi_prior (float | None)

augment_data(data)

Augments existing data for inference with model specific information.

Parameters:

data (dict)

Return type:

None

static forecast_frequencies(samples, forecast_L)

Use posterior beta to forecast posterior frequenicies.

static make_ols_feature(start, stop)

Construct simple OLS features (1, x) for MultinomialLogisticRegression.

Parameters:
  • start – Start value for OLS feature.

  • stop – Stop value for OLS feature.

simulate_MLR(growth_advantage, freq0, tau, Ns)
simulate_MLR_freq(growth_advantage, freq0, tau, max_time)

evofr.models.piantham_model module

class PianthamModel(gen, SeqLik=None, forecast_L=None)

Bases: ModelSpec

Model of frequency dynamics from Piantham 2021 ‘Estimating the elevated transmissibility of the B.1.1.7 strain over previously circulating strains in England using GISAID sequence frequencies’.

augment_data(data)

Augments existing data for inference with model specific information.

Parameters:

data (dict)

Return type:

None

Piantham_model_numpyro(seq_counts, N, gen_rev, SeqLik, forecast_L, pred=False)
compute_frequency_piantham(ga, q0, gen_rev, T)

Compute variant frequencies according to Piantham model.

Parameters:
  • ga – Growth advantages for non-baseline variants.

  • q0 – Initial variant frequencies.

  • gen_rev – Reversed generation time.

  • T – Total length of time to simulate frequencies for.

Return type:

Simulated frequencies as Array.

Module contents