Skip to content

Params

Entire data generation scenario.

AssayParams

Bases: BaseModel

Parameters for assay generation.

Parameters:

Name Type Description Default
plate_size int

plate size

4
mean_control float

mean control reading

0.0
mean_normal float

mean normal specimen reading

2.0
mean_mutant float

mean mutant specimen reading

5.0
reading_noise float

standard deviation of plate reading noise

0.5
image_noise int

plate image noise (grayscale 0-255)

32
max_delay int

delay in performing assay (days)

7
Source code in src/snailz/params.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class AssayParams(BaseModel):
    """Parameters for assay generation."""

    plate_size: int = Field(default=4, gt=0, description="plate size")
    mean_control: float = Field(default=0.0, ge=0.0, description="mean control reading")
    mean_normal: float = Field(
        default=2.0, ge=0.0, description="mean normal specimen reading"
    )
    mean_mutant: float = Field(
        default=5.0, ge=0.0, description="mean mutant specimen reading"
    )
    reading_noise: float = Field(
        default=0.5, ge=0.0, description="standard deviation of plate reading noise"
    )
    image_noise: int = Field(
        default=32,
        ge=0,
        le=255,
        description="plate image noise (grayscale 0-255)",
    )
    max_delay: int = Field(default=7, description="delay in performing assay (days)")

    model_config = {"extra": "forbid"}

LabParams

Bases: BaseModel

Parameters describing laboratory setup.

Parameters:

Name Type Description Default
num_machines int

number of lab machines

5
num_persons int

number of lab staff

5
locale str

name generation locale

'et_EE'
assays_per_specimen int

assays per specimen

2
Source code in src/snailz/params.py
37
38
39
40
41
42
43
44
45
class LabParams(BaseModel):
    """Parameters describing laboratory setup."""

    num_machines: int = Field(default=5, gt=0, description="number of lab machines")
    num_persons: int = Field(default=5, gt=0, description="number of lab staff")
    locale: str = Field(default=DEFAULT_LOCALE, description="name generation locale")
    assays_per_specimen: int = Field(default=2, gt=0, description="assays per specimen")

    model_config = {"extra": "forbid"}

SpecimenParams

Bases: BaseModel

Parameters for specimen generation.

Parameters:

Name Type Description Default
mass_mean float

Mean mass

10.0
mass_sd float

Relative standard deviation in mass

1.0
genome_length int

Length of genomes

20
mut_mass_scale float

Scaling for mutant snail mass

2.0
mut_frac float

Fraction of significant mutants

0.2
mut_prob float

Probability of point mutation

0.05
start_date date

sampling start date

datetime.date(2025, 4, 1)
end_date date

sampling end date

datetime.date(2025, 4, 30)
Source code in src/snailz/params.py
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
class SpecimenParams(BaseModel):
    """Parameters for specimen generation."""

    mass_mean: float = Field(default=10.0, gt=0, description="Mean mass")
    mass_sd: float = Field(
        default=1.0, gt=0, description="Relative standard deviation in mass"
    )
    genome_length: int = Field(default=20, gt=0, description="Length of genomes")
    mut_mass_scale: float = Field(
        default=2.0, description="Scaling for mutant snail mass"
    )
    mut_frac: float = Field(
        default=0.2, ge=0.0, le=1.0, description="Fraction of significant mutants"
    )
    mut_prob: float = Field(
        default=0.05, ge=0.0, le=1.0, description="Probability of point mutation"
    )
    start_date: date = Field(
        default=DEFAULT_START_DATE, description="sampling start date"
    )
    end_date: date = Field(default=DEFAULT_END_DATE, description="sampling end date")

    model_config = {"extra": "forbid"}

SurveyParams

Bases: BaseModel

Parameters for survey sites.

Parameters:

Name Type Description Default
grid_size int

sample grid size

15
num_sites int

number of sample sites

3
num_specimens int

total number of specimens

10
Source code in src/snailz/params.py
73
74
75
76
77
78
79
80
81
82
class SurveyParams(BaseModel):
    """Parameters for survey sites."""

    grid_size: int = Field(default=15, gt=0, description="sample grid size")
    num_sites: int = Field(default=3, gt=0, description="number of sample sites")
    num_specimens: int = Field(
        default=10, gt=0, description="total number of specimens"
    )

    model_config = {"extra": "forbid"}

ScenarioParams

Bases: BaseModel

Parameters for entire scenario.

Parameters:

Name Type Description Default
rng_seed int

random number generation seed

required
pollution_scale float

pollution scaling factor

0.1
delay_scale float

delay scaling factor

0.05
survey_params SurveyParams

survey parameters

required
lab_params LabParams

laboratory parameters

required
specimen_params SpecimenParams

specimen generation parameters

required
assay_params AssayParams

assay generation parameters

required
Source code in src/snailz/params.py
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
class ScenarioParams(BaseModel):
    """Parameters for entire scenario."""

    rng_seed: int = Field(description="random number generation seed")
    pollution_scale: float = Field(
        default=0.1, ge=0, description="pollution scaling factor"
    )
    delay_scale: float = Field(default=0.05, ge=0, description="delay scaling factor")
    survey_params: SurveyParams = Field(description="survey parameters")
    lab_params: LabParams = Field(description="laboratory parameters")
    specimen_params: SpecimenParams = Field(
        description="specimen generation parameters"
    )
    assay_params: AssayParams = Field(description="assay generation parameters")

    model_config = {"extra": "forbid"}