From 0ac1b8225d9cc304f36a85f73877a322c4329c6d Mon Sep 17 00:00:00 2001 From: Francesco Terenzi Date: Thu, 4 Apr 2024 13:21:26 +0100 Subject: [PATCH] v4.3.4 --- CHANGELOG.md | 4 + Cargo.lock | 2 +- Cargo.toml | 2 +- docs/hsc/all.html | 2 +- docs/hsc/constant.MAX_SUBCLONES.html | 2 +- docs/hsc/constant.TIME_AT_BIRTH.html | 2 +- docs/hsc/enum.Probs.html | 39 +++ docs/hsc/fn.write2file.html | 2 +- docs/hsc/genotype/index.html | 2 +- .../hsc/genotype/struct.MutationalBurden.html | 2 +- .../struct.NeutralMutationPoisson.html | 2 +- docs/hsc/genotype/struct.Sfs.html | 2 +- docs/hsc/genotype/type.Variant.html | 2 +- docs/hsc/index.html | 6 +- docs/hsc/process/enum.SavingCells.html | 2 +- docs/hsc/process/enum.Stats2Save.html | 2 +- docs/hsc/process/index.html | 2 +- .../struct.CellDivisionProbabilities.html | 2 +- docs/hsc/process/struct.Exponential.html | 2 +- docs/hsc/process/struct.Moran.html | 2 +- docs/hsc/process/struct.ProcessOptions.html | 2 +- docs/hsc/process/struct.SavingOptions.html | 2 +- docs/hsc/process/struct.Snapshot.html | 2 +- docs/hsc/proliferation/enum.Division.html | 2 +- .../proliferation/enum.NeutralMutations.html | 4 +- docs/hsc/proliferation/index.html | 2 +- .../proliferation/struct.Proliferation.html | 4 +- docs/hsc/sidebar-items.js | 2 +- .../fn.assign_background_mutations.html | 2 +- .../fn.assign_divisional_mutations.html | 2 +- docs/hsc/stemcell/index.html | 2 +- docs/hsc/stemcell/struct.StemCell.html | 2 +- docs/hsc/struct.ProbsPerYear.html | 20 ++ docs/hsc/subclone/enum.Fitness.html | 4 +- .../fn.from_mean_std_to_shape_scale.html | 2 +- docs/hsc/subclone/fn.next_clone.html | 2 +- docs/hsc/subclone/fn.proliferating_cell.html | 2 +- .../subclone/fn.save_variant_fraction.html | 2 +- docs/hsc/subclone/index.html | 2 +- docs/hsc/subclone/struct.Distributions.html | 4 +- docs/hsc/subclone/struct.SubClone.html | 4 +- docs/hsc/subclone/struct.SubClones.html | 16 +- docs/hsc/subclone/struct.Variants.html | 6 +- docs/hsc/subclone/type.CloneId.html | 2 +- docs/search-index.js | 2 +- docs/src/hsc/lib.rs.html | 238 ++++++++++++++++++ docs/src/hsc/process.rs.html | 28 +-- docs/src/hsc/proliferation.rs.html | 20 +- docs/src/hsc/subclone.rs.html | 68 ++--- docs/trait.impl/core/clone/trait.Clone.js | 2 +- docs/trait.impl/core/cmp/trait.PartialEq.js | 2 +- docs/trait.impl/core/default/trait.Default.js | 2 +- docs/trait.impl/core/fmt/trait.Debug.js | 2 +- docs/trait.impl/core/marker/trait.Freeze.js | 2 +- docs/trait.impl/core/marker/trait.Send.js | 2 +- docs/trait.impl/core/marker/trait.Sync.js | 2 +- docs/trait.impl/core/marker/trait.Unpin.js | 2 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 2 +- .../panic/unwind_safe/trait.UnwindSafe.js | 2 +- docs/trait.impl/sosa/trait.AdvanceStep.js | 2 +- src/proliferation.rs | 19 +- 61 files changed, 440 insertions(+), 134 deletions(-) create mode 100644 docs/hsc/enum.Probs.html create mode 100644 docs/hsc/struct.ProbsPerYear.html diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d11df234..5ba1fc243 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog The semantic versioning is kind of random. +## 4.3.4 +### BugFix +- first sample fit variant (clone) for the parental cell, then assigned both cells to that sampled clone, this justifies removing the factor 2 + ## 4.3.3 - create a new type for the probabilities ### BugFix diff --git a/Cargo.lock b/Cargo.lock index 048a0b2b0..f936a621c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -311,7 +311,7 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hsc" -version = "4.3.3" +version = "4.3.4" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 55cc27c02..5dfa7eaf6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hsc" -version = "4.3.3" +version = "4.3.4" edition = "2021" [dependencies] diff --git a/docs/hsc/all.html b/docs/hsc/all.html index d6ecb814f..fb75f11e8 100644 --- a/docs/hsc/all.html +++ b/docs/hsc/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/docs/hsc/constant.MAX_SUBCLONES.html b/docs/hsc/constant.MAX_SUBCLONES.html index 8cb6c9be1..5be9bf3ce 100644 --- a/docs/hsc/constant.MAX_SUBCLONES.html +++ b/docs/hsc/constant.MAX_SUBCLONES.html @@ -1,4 +1,4 @@ -MAX_SUBCLONES in hsc - Rust

Constant hsc::MAX_SUBCLONES

source ·
pub const MAX_SUBCLONES: usize = 1200;
Expand description

Maximal number of fit clones that can arise during the simulation.

+MAX_SUBCLONES in hsc - Rust

Constant hsc::MAX_SUBCLONES

source ·
pub const MAX_SUBCLONES: usize = 1200;
Expand description

Maximal number of fit clones that can arise during the simulation.

If the parameters of the simulation provided by the user (e.g. fit mutation rate) are too extreme, the program will exit with error. To avoid this, increase here the number of clones.

diff --git a/docs/hsc/constant.TIME_AT_BIRTH.html b/docs/hsc/constant.TIME_AT_BIRTH.html index 3b51130a0..6e1ba5ba4 100644 --- a/docs/hsc/constant.TIME_AT_BIRTH.html +++ b/docs/hsc/constant.TIME_AT_BIRTH.html @@ -1,3 +1,3 @@ -TIME_AT_BIRTH in hsc - Rust

Constant hsc::TIME_AT_BIRTH

source ·
pub const TIME_AT_BIRTH: f32 = _; // 0.75f32
Expand description

The time at birth measured in years used for background mutations in the +TIME_AT_BIRTH in hsc - Rust

Constant hsc::TIME_AT_BIRTH

source ·
pub const TIME_AT_BIRTH: f32 = _; // 0.75f32
Expand description

The time at birth measured in years used for background mutations in the exponential growing phase.

\ No newline at end of file diff --git a/docs/hsc/enum.Probs.html b/docs/hsc/enum.Probs.html new file mode 100644 index 000000000..a758712b6 --- /dev/null +++ b/docs/hsc/enum.Probs.html @@ -0,0 +1,39 @@ +Probs in hsc - Rust

Enum hsc::Probs

source ·
pub enum Probs {
+    Asymmetric {
+        u: f32,
+        probs_per_year: ProbsPerYear,
+        asymmetric: f32,
+    },
+    Symmetric {
+        u: f32,
+        probs_per_year: ProbsPerYear,
+    },
+}
Expand description

Probabilities used in the simulations.

+

Variants§

§

Asymmetric

Fields

§u: f32

Arrival rate of fit mutants per cell per division

+
§probs_per_year: ProbsPerYear

Probabilities per year

+
§asymmetric: f32

Probability of asymmetric division per cell per division

+
§

Symmetric

Fields

§u: f32

Arrival rate of fit mutants per cell per division

+
§probs_per_year: ProbsPerYear

Probabilities per year

+

Implementations§

source§

impl Probs

source

pub fn new( + mu_background: f32, + mu_division: f32, + mu: f32, + asymmetric: f32, + cells: u64, + verbosity: u8 +) -> Probs

Panics
+

Panics when mu is greater than cells or when asymmetric is not +within interval of 0 and 1.

+
source

pub fn is_asymmetric(&self) -> bool

Trait Implementations§

source§

impl Clone for Probs

source§

fn clone(&self) -> Probs

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Probs

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Probs

§

impl Send for Probs

§

impl Sync for Probs

§

impl Unpin for Probs

§

impl UnwindSafe for Probs

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

source§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/hsc/fn.write2file.html b/docs/hsc/fn.write2file.html index 9acc60fb3..c4db5b589 100644 --- a/docs/hsc/fn.write2file.html +++ b/docs/hsc/fn.write2file.html @@ -1,4 +1,4 @@ -write2file in hsc - Rust

Function hsc::write2file

source ·
pub fn write2file<T: Display>(
+write2file in hsc - Rust

Function hsc::write2file

source ·
pub fn write2file<T: Display>(
     data: &[T],
     path: &Path,
     header: Option<&str>,
diff --git a/docs/hsc/genotype/index.html b/docs/hsc/genotype/index.html
index cfb4d811d..6346009c4 100644
--- a/docs/hsc/genotype/index.html
+++ b/docs/hsc/genotype/index.html
@@ -1,4 +1,4 @@
-hsc::genotype - Rust

Module hsc::genotype

source ·
Expand description

The neutral mutations representing the genotype of the stem cells.

+hsc::genotype - Rust

Module hsc::genotype

source ·
Expand description

The neutral mutations representing the genotype of the stem cells.

Structs

Fields§

§neutral_mutation: NeutralMutations§division: Division

Implementations§

source§

impl Proliferation

source

pub fn new(neutral_mutation: NeutralMutations, division: Division) -> Self

source

pub fn proliferate( +

Fields§

§neutral_mutation: NeutralMutations§division: Division

Implementations§

source§

impl Proliferation

source

pub fn new(neutral_mutation: NeutralMutations, division: Division) -> Self

source

pub fn proliferate( &self, subclones: &mut SubClones, time: f32, diff --git a/docs/hsc/sidebar-items.js b/docs/hsc/sidebar-items.js index d354a8f18..361efdef1 100644 --- a/docs/hsc/sidebar-items.js +++ b/docs/hsc/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["MAX_SUBCLONES","TIME_AT_BIRTH"],"fn":["write2file"],"mod":["genotype","process","proliferation","stemcell","subclone"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["MAX_SUBCLONES","TIME_AT_BIRTH"],"enum":["Probs"],"fn":["write2file"],"mod":["genotype","process","proliferation","stemcell","subclone"],"struct":["ProbsPerYear"]}; \ No newline at end of file diff --git a/docs/hsc/stemcell/fn.assign_background_mutations.html b/docs/hsc/stemcell/fn.assign_background_mutations.html index 0243e593b..83dbd9d45 100644 --- a/docs/hsc/stemcell/fn.assign_background_mutations.html +++ b/docs/hsc/stemcell/fn.assign_background_mutations.html @@ -1,4 +1,4 @@ -assign_background_mutations in hsc::stemcell - Rust
pub fn assign_background_mutations(
+assign_background_mutations in hsc::stemcell - Rust
pub fn assign_background_mutations(
     stem_cell: &mut StemCell,
     time: f32,
     neutral_poisson: &NeutralMutationPoisson,
diff --git a/docs/hsc/stemcell/fn.assign_divisional_mutations.html b/docs/hsc/stemcell/fn.assign_divisional_mutations.html
index 12a0f41ee..67dede940 100644
--- a/docs/hsc/stemcell/fn.assign_divisional_mutations.html
+++ b/docs/hsc/stemcell/fn.assign_divisional_mutations.html
@@ -1,4 +1,4 @@
-assign_divisional_mutations in hsc::stemcell - Rust
pub fn assign_divisional_mutations(
+assign_divisional_mutations in hsc::stemcell - Rust
pub fn assign_divisional_mutations(
     stem_cell: &mut StemCell,
     neutral_poisson: &NeutralMutationPoisson,
     rng: &mut impl Rng,
diff --git a/docs/hsc/stemcell/index.html b/docs/hsc/stemcell/index.html
index 8e1f6693d..afd928f8c 100644
--- a/docs/hsc/stemcell/index.html
+++ b/docs/hsc/stemcell/index.html
@@ -1,4 +1,4 @@
-hsc::stemcell - Rust

Module hsc::stemcell

source ·
Expand description

The agents whose state defines the system simulated by the process.

+hsc::stemcell - Rust

Module hsc::stemcell

source ·
Expand description

The agents whose state defines the system simulated by the process.

Structs

  • Hematopoietic stem and progenitor cells (HSPCs) are a rare population of precursor cells that possess the capacity for self-renewal and multilineage differentiation.

Functions

  • Assign background mutations to all cells in the system based on the diff --git a/docs/hsc/stemcell/struct.StemCell.html b/docs/hsc/stemcell/struct.StemCell.html index be2198ddb..c8d49232c 100644 --- a/docs/hsc/stemcell/struct.StemCell.html +++ b/docs/hsc/stemcell/struct.StemCell.html @@ -1,4 +1,4 @@ -StemCell in hsc::stemcell - Rust

    Struct hsc::stemcell::StemCell

    source ·
    pub struct StemCell {
    +StemCell in hsc::stemcell - Rust

    Struct hsc::stemcell::StemCell

    source ·
    pub struct StemCell {
         pub variants: Vec<Variant>,
         /* private fields */
     }
    Expand description

    Hematopoietic stem and progenitor cells (HSPCs) are a rare population of diff --git a/docs/hsc/struct.ProbsPerYear.html b/docs/hsc/struct.ProbsPerYear.html new file mode 100644 index 000000000..87648a52c --- /dev/null +++ b/docs/hsc/struct.ProbsPerYear.html @@ -0,0 +1,20 @@ +ProbsPerYear in hsc - Rust

    Struct hsc::ProbsPerYear

    source ·
    pub struct ProbsPerYear {
    +    pub mu_background: f32,
    +    pub mu_division: f32,
    +    pub mu: f32,
    +}

    Fields§

    §mu_background: f32

    Arrival rate of neutral background mutations per year

    +
    §mu_division: f32

    Arrival rate of neutral “divisional” mutations per year

    +
    §mu: f32

    Arrival rate of fit mutants per year

    +

    Trait Implementations§

    source§

    impl Clone for ProbsPerYear

    source§

    fn clone(&self) -> ProbsPerYear

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ProbsPerYear

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    source§

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/hsc/subclone/enum.Fitness.html b/docs/hsc/subclone/enum.Fitness.html index 95a06e51f..41ee7618c 100644 --- a/docs/hsc/subclone/enum.Fitness.html +++ b/docs/hsc/subclone/enum.Fitness.html @@ -1,4 +1,4 @@ -Fitness in hsc::subclone - Rust

    Enum hsc::subclone::Fitness

    source ·
    pub enum Fitness {
    +Fitness in hsc::subclone - Rust

    Enum hsc::subclone::Fitness

    source ·
    pub enum Fitness {
         Neutral,
         Fixed {
             s: f32,
    @@ -21,7 +21,7 @@
     wild-type neutral clone and s_i are sampled from the Gamma
     distribution.
     In this case, all subclones can have different proliferate rates.

    -

    Implementations§

    source§

    impl Fitness

    source

    pub fn get_mean_std(&self) -> (f32, f32)

    Trait Implementations§

    source§

    impl Clone for Fitness

    source§

    fn clone(&self) -> Fitness

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Fitness

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Fitness

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Implementations§

    source§

    impl Fitness

    source

    pub fn get_mean_std(&self) -> (f32, f32)

    Trait Implementations§

    source§

    impl Clone for Fitness

    source§

    fn clone(&self) -> Fitness

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Fitness

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Fitness

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/hsc/subclone/fn.from_mean_std_to_shape_scale.html b/docs/hsc/subclone/fn.from_mean_std_to_shape_scale.html index 5e0cdb285..5f1352922 100644 --- a/docs/hsc/subclone/fn.from_mean_std_to_shape_scale.html +++ b/docs/hsc/subclone/fn.from_mean_std_to_shape_scale.html @@ -1 +1 @@ -from_mean_std_to_shape_scale in hsc::subclone - Rust
    pub fn from_mean_std_to_shape_scale(mean: f32, std: f32) -> (f32, f32)
    \ No newline at end of file +from_mean_std_to_shape_scale in hsc::subclone - Rust
    pub fn from_mean_std_to_shape_scale(mean: f32, std: f32) -> (f32, f32)
    \ No newline at end of file diff --git a/docs/hsc/subclone/fn.next_clone.html b/docs/hsc/subclone/fn.next_clone.html index 9307ca4fc..2c7c2e0e5 100644 --- a/docs/hsc/subclone/fn.next_clone.html +++ b/docs/hsc/subclone/fn.next_clone.html @@ -1,4 +1,4 @@ -next_clone in hsc::subclone - Rust

    Function hsc::subclone::next_clone

    source ·
    pub fn next_clone(
    +next_clone in hsc::subclone - Rust

    Function hsc::subclone::next_clone

    source ·
    pub fn next_clone(
         subclones: &SubClones,
         old_subclone_id: CloneId,
         stem_cell: &StemCell,
    diff --git a/docs/hsc/subclone/fn.proliferating_cell.html b/docs/hsc/subclone/fn.proliferating_cell.html
    index 10f41cd46..fd399f214 100644
    --- a/docs/hsc/subclone/fn.proliferating_cell.html
    +++ b/docs/hsc/subclone/fn.proliferating_cell.html
    @@ -1,4 +1,4 @@
    -proliferating_cell in hsc::subclone - Rust
    pub fn proliferating_cell(
    +proliferating_cell in hsc::subclone - Rust
    pub fn proliferating_cell(
         subclones: &mut SubClones,
         subclone_id: CloneId,
         verbosity: u8,
    diff --git a/docs/hsc/subclone/fn.save_variant_fraction.html b/docs/hsc/subclone/fn.save_variant_fraction.html
    index 4b28d6777..2e2e4e124 100644
    --- a/docs/hsc/subclone/fn.save_variant_fraction.html
    +++ b/docs/hsc/subclone/fn.save_variant_fraction.html
    @@ -1,4 +1,4 @@
    -save_variant_fraction in hsc::subclone - Rust
    pub fn save_variant_fraction(
    +save_variant_fraction in hsc::subclone - Rust
    pub fn save_variant_fraction(
         subclones: &SubClones,
         path2file: &Path,
         verbosity: u8
    diff --git a/docs/hsc/subclone/index.html b/docs/hsc/subclone/index.html
    index 981d00e79..34236b1cb 100644
    --- a/docs/hsc/subclone/index.html
    +++ b/docs/hsc/subclone/index.html
    @@ -1,4 +1,4 @@
    -hsc::subclone - Rust

    Module hsc::subclone

    source ·
    Expand description

    The classes defining the proliferative advantage.

    +hsc::subclone - Rust

    Module hsc::subclone

    source ·
    Expand description

    The classes defining the proliferative advantage.

    Structs

    • Distribution probabilities for the simulations upon cell division.
    • A group of cells sharing the same genetic background with a specific proliferation rate.
    • A collection of subclones each having their proliferative advantage. This collection contains the neutral clone as well.
    • Number of cells in subclones.

    Enums

    • Fitness models implemented so far.

    Functions

    • Returns a CloneId to which the stem cell must be assigned.
    • Determine which cells will proliferate by randomly selecting a cell diff --git a/docs/hsc/subclone/struct.Distributions.html b/docs/hsc/subclone/struct.Distributions.html index 9c4123e08..add192d32 100644 --- a/docs/hsc/subclone/struct.Distributions.html +++ b/docs/hsc/subclone/struct.Distributions.html @@ -1,10 +1,10 @@ -Distributions in hsc::subclone - Rust

      Struct hsc::subclone::Distributions

      source ·
      pub struct Distributions {
      +Distributions in hsc::subclone - Rust

      Struct hsc::subclone::Distributions

      source ·
      pub struct Distributions {
           pub u: f32,
           pub neutral_poisson: NeutralMutationPoisson,
       }
      Expand description

      Distribution probabilities for the simulations upon cell division.

      Fields§

      §u: f32

      arrival rate of fit mutations per division per cell

      §neutral_poisson: NeutralMutationPoisson

      neutral mutations

      -

      Implementations§

      source§

      impl Distributions

      source

      pub fn new(u: f32, background: f32, division: f32, verbosity: u8) -> Self

      Trait Implementations§

      source§

      impl Clone for Distributions

      source§

      fn clone(&self) -> Distributions

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for Distributions

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for Distributions

      source§

      fn default() -> Distributions

      Returns the “default value” for a type. Read more

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for Twhere +

      Implementations§

      source§

      impl Distributions

      source

      pub fn new(probs: Probs, verbosity: u8) -> Self

      Trait Implementations§

      source§

      impl Clone for Distributions

      source§

      fn clone(&self) -> Distributions

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for Distributions

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for Distributions

      source§

      fn default() -> Distributions

      Returns the “default value” for a type. Read more

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for Twhere T: 'static + ?Sized,

      source§

      fn type_id(&self) -> TypeId

      Gets the TypeId of self. Read more
      source§

      impl<T> Borrow<T> for Twhere T: ?Sized,

      source§

      fn borrow(&self) -> &T

      Immutably borrows from an owned value. Read more
      source§

      impl<T> BorrowMut<T> for Twhere T: ?Sized,

      source§

      fn borrow_mut(&mut self) -> &mut T

      Mutably borrows from an owned value. Read more
      source§

      impl<T> From<T> for T

      source§

      fn from(t: T) -> T

      Returns the argument unchanged.

      diff --git a/docs/hsc/subclone/struct.SubClone.html b/docs/hsc/subclone/struct.SubClone.html index fe8a650e1..8781c0286 100644 --- a/docs/hsc/subclone/struct.SubClone.html +++ b/docs/hsc/subclone/struct.SubClone.html @@ -1,4 +1,4 @@ -SubClone in hsc::subclone - Rust

      Struct hsc::subclone::SubClone

      source ·
      pub struct SubClone {
      +SubClone in hsc::subclone - Rust

      Struct hsc::subclone::SubClone

      source ·
      pub struct SubClone {
           pub id: CloneId,
           /* private fields */
       }
      Expand description

      A group of cells sharing the same genetic background with a specific @@ -8,7 +8,7 @@ cells and make it proliferate. Upon proliferation, the cell can be assigned to a new clone with probability p (see crate::process::CellDivisionProbabilities).

      -

      Fields§

      §id: CloneId

      Implementations§

      source§

      impl SubClone

      source

      pub fn new(id: CloneId, cell_capacity: usize) -> SubClone

      source

      pub fn with_capacity(id: usize, capacity: usize) -> SubClone

      source

      pub fn empty_with_id(id: usize) -> SubClone

      source

      pub fn get_mut_cells(&mut self) -> &mut [StemCell]

      source

      pub fn get_cells(&self) -> &[StemCell]

      source

      pub fn get_cells_subclones_idx(&self) -> Vec<(&StemCell, usize)>

      source

      pub fn is_empty(&self) -> bool

      source

      pub fn assign_cell(&mut self, cell: StemCell)

      source

      pub fn random_cell(&mut self, rng: &mut impl Rng) -> Result<StemCell>

      source

      pub fn cell_count(&self) -> u64

      Trait Implementations§

      source§

      impl Clone for SubClone

      source§

      fn clone(&self) -> SubClone

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for SubClone

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Iterator for SubClone

      §

      type Item = StemCell

      The type of the elements being iterated over.
      source§

      fn next(&mut self) -> Option<Self::Item>

      Advances the iterator and returns the next value. Read more
      source§

      fn next_chunk<const N: usize>( +

      Fields§

      §id: CloneId

      Implementations§

      source§

      impl SubClone

      source

      pub fn new(id: CloneId, cell_capacity: usize) -> SubClone

      source

      pub fn with_capacity(id: usize, capacity: usize) -> SubClone

      source

      pub fn empty_with_id(id: usize) -> SubClone

      source

      pub fn get_mut_cells(&mut self) -> &mut [StemCell]

      source

      pub fn get_cells(&self) -> &[StemCell]

      source

      pub fn get_cells_subclones_idx(&self) -> Vec<(&StemCell, usize)>

      source

      pub fn is_empty(&self) -> bool

      source

      pub fn assign_cell(&mut self, cell: StemCell)

      source

      pub fn random_cell(&mut self, rng: &mut impl Rng) -> Result<StemCell>

      source

      pub fn cell_count(&self) -> u64

      Trait Implementations§

      source§

      impl Clone for SubClone

      source§

      fn clone(&self) -> SubClone

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for SubClone

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Iterator for SubClone

      §

      type Item = StemCell

      The type of the elements being iterated over.
      source§

      fn next(&mut self) -> Option<Self::Item>

      Advances the iterator and returns the next value. Read more
      source§

      fn next_chunk<const N: usize>( &mut self ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where Self: Sized,

      🔬This is a nightly-only experimental API. (iter_next_chunk)
      Advances the iterator and returns an array containing the next N values. Read more
      1.0.0 · source§

      fn size_hint(&self) -> (usize, Option<usize>)

      Returns the bounds on the remaining length of the iterator. Read more
      1.0.0 · source§

      fn count(self) -> usizewhere diff --git a/docs/hsc/subclone/struct.SubClones.html b/docs/hsc/subclone/struct.SubClones.html index 52686bf6e..c65749a65 100644 --- a/docs/hsc/subclone/struct.SubClones.html +++ b/docs/hsc/subclone/struct.SubClones.html @@ -1,27 +1,27 @@ -SubClones in hsc::subclone - Rust

      Struct hsc::subclone::SubClones

      source ·
      pub struct SubClones(/* private fields */);
      Expand description

      A collection of subclones each having their proliferative advantage. +SubClones in hsc::subclone - Rust

      Struct hsc::subclone::SubClones

      source ·
      pub struct SubClones(/* private fields */);
      Expand description

      A collection of subclones each having their proliferative advantage. This collection contains the neutral clone as well.

      -

      Implementations§

      source§

      impl SubClones

      source

      pub fn new(cells: Vec<StemCell>, capacity: usize, verbosity: u8) -> Self

      Returns all the newly initiated subclones by assigning all cells +

      Implementations§

      source§

      impl SubClones

      source

      pub fn new(cells: Vec<StemCell>, capacity: usize, verbosity: u8) -> Self

      Returns all the newly initiated subclones by assigning all cells to the neutral clone.

      All clones have their own capacity.

      -
      source

      pub fn new_empty() -> Self

      source

      pub fn with_capacity(capacity: usize) -> Self

      source

      pub fn compute_tot_cells(&self) -> u64

      source

      pub fn the_only_one_subclone_present(&self) -> Option<CloneId>

      returns None if more than one subclone is present else the clone +

      source

      pub fn new_empty() -> Self

      source

      pub fn with_capacity(capacity: usize) -> Self

      source

      pub fn compute_tot_cells(&self) -> u64

      source

      pub fn the_only_one_subclone_present(&self) -> Option<CloneId>

      returns None if more than one subclone is present else the clone id.

      -
      source

      pub fn get_clone(&self, id: usize) -> Option<&SubClone>

      source

      pub fn get_clone_unchecked(&self, id: usize) -> &SubClone

      source

      pub fn get_mut_clone_unchecked(&mut self, id: usize) -> &mut SubClone

      source

      pub fn get_neutral_clone(&self) -> &SubClone

      source

      pub fn gillespie_set_of_reactions(&self) -> [CloneId; 1200]

      source

      pub fn get_mut_cells(&mut self) -> Vec<&mut StemCell>

      source

      pub fn get_cells(&self) -> Vec<&StemCell>

      source

      pub fn get_cells_with_clones_idx(&self) -> Vec<(&StemCell, usize)>

      source

      pub fn get_cells_subsampled( +

      source

      pub fn get_clone(&self, id: usize) -> Option<&SubClone>

      source

      pub fn get_clone_unchecked(&self, id: usize) -> &SubClone

      source

      pub fn get_mut_clone_unchecked(&mut self, id: usize) -> &mut SubClone

      source

      pub fn get_neutral_clone(&self) -> &SubClone

      source

      pub fn gillespie_set_of_reactions(&self) -> [CloneId; 1200]

      source

      pub fn get_mut_cells(&mut self) -> Vec<&mut StemCell>

      source

      pub fn get_cells(&self) -> Vec<&StemCell>

      source

      pub fn get_cells_with_clones_idx(&self) -> Vec<(&StemCell, usize)>

      source

      pub fn get_cells_subsampled( &self, nb_cells: usize, rng: &mut impl Rng -) -> Vec<&StemCell>

      source

      pub fn get_cells_subsampled_with_clones_idx( +) -> Vec<&StemCell>

      source

      pub fn get_cells_subsampled_with_clones_idx( &self, nb_cells: usize, rng: &mut impl Rng -) -> Vec<(&StemCell, usize)>

      source

      pub fn gillespie_rates( +) -> Vec<(&StemCell, usize)>

      source

      pub fn gillespie_rates( &self, fitness: &Fitness, b0: f32, rng: &mut impl Rng ) -> ReactionRates<MAX_SUBCLONES>

      Create the Gillespie reaction rates according to the fitness model with b0 being the proliferative rate of the wild-type clone.

      -

      Trait Implementations§

      source§

      impl Clone for SubClones

      source§

      fn clone(&self) -> SubClones

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for SubClones

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for SubClones

      source§

      fn default() -> Self

      Create new subclones each having one cell (this creates also the cells).

      -
      source§

      impl From<Vec<(StemCell, usize)>> for SubClones

      source§

      fn from(cells: Vec<(StemCell, usize)>) -> Self

      Converts to this type from the input type.

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for Twhere +

      Trait Implementations§

      source§

      impl Clone for SubClones

      source§

      fn clone(&self) -> SubClones

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for SubClones

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for SubClones

      source§

      fn default() -> Self

      Create new subclones each having one cell (this creates also the cells).

      +
      source§

      impl From<Vec<(StemCell, usize)>> for SubClones

      source§

      fn from(cells: Vec<(StemCell, usize)>) -> Self

      Converts to this type from the input type.

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for Twhere T: 'static + ?Sized,

      source§

      fn type_id(&self) -> TypeId

      Gets the TypeId of self. Read more
      source§

      impl<T> Borrow<T> for Twhere T: ?Sized,

      source§

      fn borrow(&self) -> &T

      Immutably borrows from an owned value. Read more
      source§

      impl<T> BorrowMut<T> for Twhere T: ?Sized,

      source§

      fn borrow_mut(&mut self) -> &mut T

      Mutably borrows from an owned value. Read more
      source§

      impl<T> From<T> for T

      source§

      fn from(t: T) -> T

      Returns the argument unchanged.

      diff --git a/docs/hsc/subclone/struct.Variants.html b/docs/hsc/subclone/struct.Variants.html index 7e345d310..d05573bf2 100644 --- a/docs/hsc/subclone/struct.Variants.html +++ b/docs/hsc/subclone/struct.Variants.html @@ -1,12 +1,12 @@ -Variants in hsc::subclone - Rust

      Struct hsc::subclone::Variants

      source ·
      pub struct Variants {}
      Expand description

      Number of cells in subclones.

      -

      Implementations§

      source§

      impl Variants

      source

      pub fn variant_counts(subclones: &SubClones) -> [u64; 1200]

      The total variant count is the number of cells in all subclones.

      +Variants in hsc::subclone - Rust

      Struct hsc::subclone::Variants

      source ·
      pub struct Variants {}
      Expand description

      Number of cells in subclones.

      +

      Implementations§

      source§

      impl Variants

      source

      pub fn variant_counts(subclones: &SubClones) -> [u64; 1200]

      The total variant count is the number of cells in all subclones.

      use hsc::MAX_SUBCLONES;
       // create a process with one cell in each `MAX_SUBCLONES` subclones
       let mut hsc = Moran::default();
       
       assert_eq!(Variants::variant_counts(&hsc.subclones), [1; MAX_SUBCLONES]);
      -
      source

      pub fn variant_fractions(subclones: &SubClones) -> Vec<f32>

      The proportion of cells in all subclones.

      +
      source

      pub fn variant_fractions(subclones: &SubClones) -> Vec<f32>

      The proportion of cells in all subclones.

      use hsc::MAX_SUBCLONES;
       use hsc::subclone::SubClones;
      diff --git a/docs/hsc/subclone/type.CloneId.html b/docs/hsc/subclone/type.CloneId.html
      index 59b6defdf..300de565f 100644
      --- a/docs/hsc/subclone/type.CloneId.html
      +++ b/docs/hsc/subclone/type.CloneId.html
      @@ -1,2 +1,2 @@
      -CloneId in hsc::subclone - Rust

      Type Alias hsc::subclone::CloneId

      source ·
      pub type CloneId = usize;
      Expand description

      Id of the SubClones.

      +CloneId in hsc::subclone - Rust

      Type Alias hsc::subclone::CloneId

      source ·
      pub type CloneId = usize;
      Expand description

      Id of the SubClones.

      \ No newline at end of file diff --git a/docs/search-index.js b/docs/search-index.js index 45dcb8419..2dc174894 100644 --- a/docs/search-index.js +++ b/docs/search-index.js @@ -19,7 +19,7 @@ var searchIndex = JSON.parse('{\ "enum_dispatch":{"doc":"enum_dispatch provides a set of macros that can be used to …","t":"X","n":["enum_dispatch"],"q":[[0,"enum_dispatch"]],"d":["Annotating a trait or enum definition with an …"],"i":[0],"f":[0],"c":[],"p":[],"b":[]},\ "getrandom":{"doc":"Interface to the operating system’s random number …","t":"SSDSSSSSSSSSSSSLLLLLLLLLLFFLLLLLLL","n":["CUSTOM_START","ERRNO_NOT_POSITIVE","Error","FAILED_RDRAND","INTERNAL_START","IOS_SEC_RANDOM","NODE_CRYPTO","NODE_ES_MODULE","NODE_RANDOM_FILL_SYNC","NO_RDRAND","UNSUPPORTED","VXWORKS_RAND_SECURE","WEB_CRYPTO","WEB_GET_RANDOM_VALUES","WINDOWS_RTL_GEN_RANDOM","borrow","borrow_mut","clone","clone_into","code","eq","fmt","fmt","from","from","getrandom","getrandom_uninit","into","raw_os_error","to_owned","to_string","try_from","try_into","type_id"],"q":[[0,"getrandom"],[34,"core::num::nonzero"],[35,"core::fmt"],[36,"core::fmt"],[37,"core::mem::maybe_uninit"],[38,"core::option"],[39,"alloc::string"],[40,"core::any"]],"d":["Codes at or above this point can be used by users to …","The platform-specific errno returned a non-positive value.","A small and no_std compatible error type","RDRAND instruction failed due to a hardware issue.","Codes below this point represent OS Errors (i.e. positive …","Call to iOS SecRandomCopyBytes failed.","Node.js does not have the crypto CommonJS module.","Called from an ES module on Node.js. This is unsupported, …","Calling Node.js function crypto.randomFillSync failed.","RDRAND instruction unsupported on this target.","This target/platform is not supported by getrandom.","On VxWorks, call to randSecure failed (random number …","The environment does not support the Web Crypto API.","Calling Web Crypto API crypto.getRandomValues failed.","Call to Windows RtlGenRandom failed.","","","","","Extract the bare error code.","","","","Returns the argument unchanged.","","Fill dest with random bytes from the system’s preferred …","Version of the getrandom function which fills dest with …","Calls U::from(self).","Extract the raw OS error code (if this error came from the …","","","","",""],"i":[1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[[-1,-2],2,[],[]],[1,3],[[1,1],4],[[1,5],6],[[1,5],6],[-1,-1,[]],[3,1],[[[8,[7]]],[[9,[2,1]]]],[[[8,[[10,[7]]]]],[[9,[[8,[7]],1]]]],[-1,-2,[],[]],[1,[[12,[11]]]],[-1,-2,[],[]],[-1,13,[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,14,[]]],"c":[],"p":[[3,"Error",0],[15,"tuple"],[3,"NonZeroU32",34],[15,"bool"],[3,"Formatter",35],[6,"Result",35],[15,"u8"],[15,"slice"],[4,"Result",36],[19,"MaybeUninit",37],[15,"i32"],[4,"Option",38],[3,"String",39],[3,"TypeId",40]],"b":[[21,"impl-Display-for-Error"],[22,"impl-Debug-for-Error"]]},\ "heck":{"doc":"heck is a case conversion library.","t":"DDDDDDDDDDDKIIIIIIIIIIILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKKKKLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLLLLL","n":["AsKebabCase","AsLowerCamelCase","AsPascalCase","AsShoutyKebabCase","AsShoutySnakeCase","AsShoutySnekCase","AsSnakeCase","AsSnekCase","AsTitleCase","AsTrainCase","AsUpperCamelCase","TO_SHOUTY_SNEK_CASE","ToKebabCase","ToLowerCamelCase","ToPascalCase","ToShoutyKebabCase","ToShoutySnakeCase","ToShoutySnekCase","ToSnakeCase","ToSnekCase","ToTitleCase","ToTrainCase","ToUpperCamelCase","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","to_kebab_case","to_lower_camel_case","to_pascal_case","to_shouty_kebab_case","to_shouty_snake_case","to_snake_case","to_snek_case","to_string","to_string","to_string","to_string","to_string","to_string","to_string","to_string","to_title_case","to_train_case","to_upper_camel_case","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"heck"],[105,"core::fmt"],[106,"core::fmt"],[107,"alloc::string"],[108,"core::result"],[109,"core::any"]],"d":["This wrapper performs a kebab case conversion in …","This wrapper performs a lower camel case conversion in …","This wrapper performs a upper camel case conversion in …","This wrapper performs a kebab case conversion in …","This wrapper performs a shouty snake case conversion in …","This wrapper performs a shouty snake case conversion in …","This wrapper performs a snake case conversion in …","This wrapper performs a snake case conversion in …","This wrapper performs a title case conversion in …","This wrapper performs a train case conversion in …","This wrapper performs a upper camel case conversion in …","CONVERT THIS TYPE TO SNEK CASE.","This trait defines a kebab case conversion.","This trait defines a lower camel case conversion.","ToPascalCase is an alias for ToUpperCamelCase. See …","This trait defines a shouty kebab case conversion.","This trait defines a shouty snake case conversion.","Oh heck, ToShoutySnekCase is an alias for …","This trait defines a snake case conversion.","Oh heck, SnekCase is an alias for ToSnakeCase. See …","This trait defines a title case conversion.","This trait defines a train case conversion.","This trait defines an upper camel case conversion.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Convert this type to kebab case.","Convert this type to lower camel case.","Convert this type to upper camel case.","Convert this type to shouty kebab case.","Convert this type to shouty snake case.","Convert this type to snake case.","Convert this type to snek case.","","","","","","","","","Convert this type to title case.","Convert this type to Train-Case.","Convert this type to upper camel case.","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,1,6,7,8,9,10,11,12,1,6,7,8,9,10,11,12,1,6,7,8,9,10,11,12,1,6,7,8,9,10,11,12,1,6,7,8,9,10,11,12,17,18,19,20,21,22,23,1,6,7,8,9,10,11,12,24,25,26,1,6,7,8,9,10,11,12,1,6,7,8,9,10,11,12,1,6,7,8,9,10,11,12],"f":[0,0,0,0,0,0,0,0,0,0,0,[-1,[],[]],0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]],2],3,[[5,[4]]]],[[[6,[-1]],2],3,[[5,[4]]]],[[[7,[-1]],2],3,[[5,[4]]]],[[[8,[-1]],2],3,[[5,[4]]]],[[[9,[-1]],2],3,[[5,[4]]]],[[[10,[-1]],2],3,[[5,[4]]]],[[[11,[-1]],2],3,[[5,[4]]]],[[[12,[-1]],2],3,[[5,[4]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],[-1,13,[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]],[-1,15,[]]],"c":[],"p":[[3,"AsKebabCase",0],[3,"Formatter",105],[6,"Result",105],[15,"str"],[8,"AsRef",106],[3,"AsLowerCamelCase",0],[3,"AsShoutyKebabCase",0],[3,"AsShoutySnakeCase",0],[3,"AsSnakeCase",0],[3,"AsTitleCase",0],[3,"AsTrainCase",0],[3,"AsUpperCamelCase",0],[3,"String",107],[4,"Result",108],[3,"TypeId",109],[8,"ToShoutySnekCase",0],[8,"ToKebabCase",0],[8,"ToLowerCamelCase",0],[8,"ToPascalCase",0],[8,"ToShoutyKebabCase",0],[8,"ToShoutySnakeCase",0],[8,"ToSnakeCase",0],[8,"ToSnekCase",0],[8,"ToTitleCase",0],[8,"ToTrainCase",0],[8,"ToUpperCamelCase",0]],"b":[]},\ -"hsc":{"doc":"Simulate the dynamics of a stem cell population undergoing …","t":"RRAAAAAFDDDGLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLNDDDDEDNDENNNLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLMMLMMLMMLLLLLLLLLLLLLLLLLLLLLLLLMLLLMMMMMLMMMMMMMMLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLMMNEEDNNNLLLLLLLLLLLLLLLMLLLLLLLLLMLLLLLLLLLLLLLLLLLDFFLLLLLLLLLLLLLLLLLLMLLGDENNNDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLMLLLLLLLMLLLLLFFLFLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLMMM","n":["MAX_SUBCLONES","TIME_AT_BIRTH","genotype","process","proliferation","stemcell","subclone","write2file","MutationalBurden","NeutralMutationPoisson","Sfs","Variant","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","eq","fmt","from","from","from","from_cells","from_cells","from_exp","from_moran","into","into","into","lambda_background","lambda_division","new","new_muts_background","new_muts_upon_division","save","save","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Burden","CellDivisionProbabilities","Exponential","Moran","ProcessOptions","SavingCells","SavingOptions","Sfs","Snapshot","Stats2Save","Subsampling","VariantFraction","WholePopulation","advance_step","advance_step","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cells2sample","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","counter_divisions","counter_divisions","default","distributions","distributions","eq","filename","filename","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","into","into","into","into","into","into","into","into","lambda_poisson","make_path","new","new","p","path","path2dir","proliferation","proliferation","save","save_population","save_population","save_sfs_only","save_sfs_only","snapshots","snapshots","subclones","subclones","switch_to_moran","time","time","time","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_state","update_state","verbosity","verbosity","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","population_as_well","sample_size","Asymmetric","Division","NeutralMutations","Proliferation","Symmetric","UponDivision","UponDivisionAndBackground","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","default","default","default","division","fmt","fmt","fmt","from","from","from","into","into","into","neutral_mutation","new","proliferate","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","StemCell","assign_background_mutations","assign_divisional_mutations","borrow","borrow_mut","burden","clone","clone_into","default","fmt","from","get_last_division_time","has_mutations","interdivision_time","into","new","set_last_division_time","to_owned","try_from","try_into","type_id","variants","vzip","with_mutations","CloneId","Distributions","Fitness","Fixed","GammaSampled","Neutral","SubClone","SubClones","Variants","assign_cell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell_count","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","compute_tot_cells","default","default","empty_with_id","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_mean_std_to_shape_scale","get_cells","get_cells","get_cells_subclones_idx","get_cells_subsampled","get_cells_subsampled_with_clones_idx","get_cells_with_clones_idx","get_clone","get_clone_unchecked","get_mean_std","get_mut_cells","get_mut_cells","get_mut_clone_unchecked","get_neutral_clone","gillespie_rates","gillespie_set_of_reactions","id","into","into","into","into","into","into_iter","is_empty","neutral_poisson","new","new","new","new_empty","next","next_clone","proliferating_cell","random_cell","save_variant_fraction","the_only_one_subclone_present","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","u","variant_counts","variant_fractions","vzip","vzip","vzip","vzip","vzip","with_capacity","with_capacity","s","scale","shape"],"q":[[0,"hsc"],[8,"hsc::genotype"],[53,"hsc::process"],[196,"hsc::process::SavingCells"],[198,"hsc::proliferation"],[248,"hsc::stemcell"],[272,"hsc::subclone"],[379,"hsc::subclone::Fitness"],[382,"std::path"],[383,"core::option"],[384,"anyhow"],[385,"core::fmt"],[386,"core::fmt"],[387,"rand::rng"],[388,"core::result"],[389,"core::any"],[390,"sosa"],[391,"core::hash"],[392,"std::path"]],"d":["Maximal number of fit clones that can arise during the …","The time at birth measured in years used for background …","The neutral mutations representing the genotype of the …","The events to simulate for this Markov process.","The proliferation of cells with the simulation of neutral …","The agents whose state defines the system simulated by the …","The classes defining the proliferative advantage.","Write vector of float into new file with a precision of 6 …","Single-cell mutational burden is a mapping of cells …","The Poisson probability distribution modeling the …","Site frequency spectrum implemented as mapping with keys …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Compute the SFS from the stem cell population.","Compute the single-cell mutational burden from the stem …","Create the single-cell mutational burden from all cells in …","Create the single-cell mutational burden from all cells in …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Create two Poisson distributions, one modelling the neutral","The number of neutral mutations acquired upon cell …","Generate neutral mutations acquired upon cell division …","","","","","","","","","","","","","","","","","","Exponential growing process","The Moran process saves the state of the agents and …","","","","","","","","","","Update the process by simulating the next proliferative …","Update the process by simulating the next proliferative …","","","","","","","","","","","","","","","","","The number of cells to subsample","","","","","","","","","","","","","","","The counter for the number of proliferative events.","The counter for the number of proliferative events.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Rate of neutral mutations per cell-division","","","A Moran process with wild-type subclone with neutral …","Probability of getting a fit mutant upon cell division","","","","","","","","","","","","A collection of clones having a proliferative advantage.","A collection of clones having a proliferative advantage.","End the exponential growing phase and switch to a …","The time at which we subsample","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A stem cell proliferates and gives rise to a differentiate …","Stem cells can either self-renew by symmetric division or …","Specifies the kind of neutral mutations to simulate.","All the updates and changes in the system upon …","A stem cell proliferates and gives to a new stem cell with …","Neutral mutations upon division due to errors in the DNA …","Neutral mutations upon division and background mutations …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Sample a random cell from the subclones with id …","","","","","","","","","","","","","","","","Hematopoietic stem and progenitor cells (HSPCs) are a rare …","Assign background mutations to all cells in the system …","","","","","","","Creates a stem cell without any neutral mutations.","","Returns the argument unchanged.","","","","Calls U::from(self).","Construct a new cell without any neutral mutations.","","","","","","","","","Id of the SubClones.","Distribution probabilities for the simulations upon cell …","Fitness models implemented so far.","According to the Fixed fitness model, the birth-rates for …","According to the GammaSampled fitness model, the …","According to the Neutral fitness model, all subclones have …","A group of cells sharing the same genetic background with …","A collection of subclones each having their proliferative …","Number of cells in subclones.","","","","","","","","","","","","","","","","","","","","","","","Create new subclones each having one cell (this creates …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","Create the Gillespie reaction rates according to the …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","neutral mutations","","","Returns all the newly initiated subclones by assigning all …","","","Returns a CloneId to which the stem cell must be assigned.","Determine which cells will proliferate by randomly …","","","returns None if more than one subclone is present else the …","","","","","","","","","","","","","","","","","","","","arrival rate of fit mutations per division per cell","The total variant count is the number of cells in all …","The proportion of cells in all subclones.","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,14,15,9,14,15,9,9,9,9,9,9,14,15,9,14,15,15,15,14,15,9,9,9,9,9,9,14,15,9,14,15,9,14,15,9,14,15,9,14,15,9,30,0,0,0,0,0,0,30,0,0,25,30,25,16,17,25,26,27,28,30,29,16,17,25,26,27,28,30,29,16,17,26,25,26,27,28,29,16,17,25,26,27,28,29,16,17,16,17,17,16,17,30,27,17,25,26,27,28,29,16,17,25,26,27,28,30,29,16,17,30,25,26,27,28,30,29,16,17,29,17,16,17,29,28,17,16,17,17,27,17,27,17,28,17,16,17,16,26,16,17,25,26,27,28,29,16,17,25,26,27,28,30,29,16,17,25,26,27,28,30,29,16,17,25,26,27,28,30,29,16,17,16,17,16,17,25,26,27,28,30,29,16,17,46,46,38,0,0,0,38,39,39,38,36,39,38,36,39,38,36,39,38,36,39,38,36,39,36,38,36,39,38,36,39,38,36,39,36,36,36,38,36,39,38,36,39,38,36,39,38,36,39,38,36,39,0,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,43,43,43,0,0,0,41,47,35,43,41,34,47,35,43,41,34,41,35,43,41,34,35,43,41,34,34,35,34,41,35,43,41,34,47,35,43,41,34,34,0,41,34,41,34,34,34,34,34,43,41,34,34,34,34,34,41,47,35,43,41,34,41,41,35,35,41,34,34,41,0,0,41,0,34,35,43,41,34,47,35,43,41,34,47,35,43,41,34,47,35,43,41,34,35,47,47,47,35,43,41,34,41,34,48,49,49],"f":[0,0,0,0,0,0,0,[[[1,[-1]],2,[4,[3]],5],[[7,[6]]],8],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[9,9],[[-1,-2],6,[],[]],[[],9],[[9,9],5],[[9,10],11],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[1,[12]],13],[[7,[14]]]],[[[1,[12]],13],[[7,[15]]]],[[16,13],[[7,[15]]]],[[17,13],[[7,[15]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[18,18],[[7,[9]]]],[[9,18,-1,13],[[4,[[20,[19]]]]],21],[[9,-1],[[4,[[20,[19]]]]],21],[[14,2,13],[[7,[6]]]],[[15,2,13],[[7,[6]]]],[-1,-2,[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[16,24,-1],6,21],[[17,24,-1],6,21],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[25,25],[26,26],[27,27],[28,28],[29,29],[16,16],[17,17],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],0,0,[[],17],0,0,[[30,30],5],0,0,[[25,10],11],[[26,10],11],[[27,10],11],[[28,10],11],[[29,10],11],[[16,10],11],[[17,10],11],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[30,-1],6,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[17,30,32,18],[[7,[33]]]],[[34,35,36,13],16],[[28,34,18,27,35,36,13],17],0,0,0,0,0,[[17,18,25,5,-1],[[7,[6]]],21],0,0,0,0,0,0,0,0,[[16,28,35,33,5,5,-1],17,21],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[[16,37],6],[[17,37],6],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,38],[36,36],[39,39],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[],38],[[],36],[[],39],0,[[38,10],11],[[36,10],11],[[39,10],11],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[39,38],36],[[36,34,18,40,35,-1,13],6,21],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[12,18,9,-1,13],6,21],[[12,9,-1,13],6,21],[-1,-2,[],[]],[-1,-2,[],[]],[12,32],[12,12],[[-1,-2],6,[],[]],[[],12],[[12,10],11],[-1,-1,[]],[12,18],[12,5],[[12,18],[[7,[18]]]],[-1,-2,[],[]],[[],12],[[12,18],[[7,[6]]]],[-1,-2,[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,23,[]],0,[-1,-2,[],[]],[[[20,[19]]],12],0,0,0,0,0,0,0,0,0,[[41,12],6],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[41,42],[35,35],[43,43],[41,41],[34,34],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[34,42],[[],35],[[],34],[32,41],[[35,10],11],[[43,10],11],[[41,10],11],[[34,10],11],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[20,[[6,[12,32]]]]],34],[[18,18],[[6,[18,18]]]],[41,[[1,[12]]]],[34,[[20,[12]]]],[41,[[20,[[6,[12,32]]]]]],[[34,32,-1],[[20,[12]]],21],[[34,32,-1],[[20,[[6,[12,32]]]]],21],[34,[[20,[[6,[12,32]]]]]],[[34,32],[[4,[41]]]],[[34,32],41],[43,[[6,[18,18]]]],[41,[[1,[12]]]],[34,[[20,[12]]]],[[34,32],41],[34,41],[[34,43,18,-1],44,21],[34,[[45,[40]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[41,5],0,[[18,18,18,13],35],[[40,32],41],[[[20,[12]],32,13],34],[[],34],[41,4],[[34,40,12,18,35,-1,13],40,21],[[34,40,13,-1],12,21],[[41,-1],[[7,[12]]],21],[[34,2,13],[[7,[6]]]],[34,[[4,[40]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,[[22,[-2]]],[],[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],0,[34,[[45,[42]]]],[34,[[20,[18]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[32,32],41],[32,34],0,0,0],"c":[],"p":[[15,"slice"],[3,"Path",382],[15,"str"],[4,"Option",383],[15,"bool"],[15,"tuple"],[6,"Result",384],[8,"Display",385],[3,"NeutralMutationPoisson",8],[3,"Formatter",385],[6,"Result",385],[3,"StemCell",248],[15,"u8"],[3,"Sfs",8],[3,"MutationalBurden",8],[3,"Exponential",53],[3,"Moran",53],[15,"f32"],[6,"Variant",8],[3,"Vec",386],[8,"Rng",387],[4,"Result",388],[3,"TypeId",389],[3,"NextReaction",390],[4,"SavingCells",53],[3,"Snapshot",53],[3,"SavingOptions",53],[3,"ProcessOptions",53],[3,"CellDivisionProbabilities",53],[4,"Stats2Save",53],[8,"Hasher",391],[15,"usize"],[3,"PathBuf",382],[3,"SubClones",272],[3,"Distributions",272],[3,"Proliferation",198],[3,"CurrentState",390],[4,"Division",198],[4,"NeutralMutations",198],[6,"CloneId",272],[3,"SubClone",272],[15,"u64"],[4,"Fitness",272],[3,"ReactionRates",390],[15,"array"],[13,"Subsampling",196],[3,"Variants",272],[13,"Fixed",379],[13,"GammaSampled",379]],"b":[]},\ +"hsc":{"doc":"Simulate the dynamics of a stem cell population undergoing …","t":"NREDNRLLLLLLLLLLLLALLLMMMLAAAALLLLLLLLLLFMMMMMDDDGLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLNDDDDEDNDENNNLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLMMLMMLMMLLLLLLLLLLLLLLLLLLLLLLLLMLLLMMMMMLMMMMMMMMLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLMMNEEDNNNLLLLLLLLLLLLLLLMLLLLLLLLLMLLLLLLLLLLLLLLLLLDFFLLLLLLLLLLLLLLLLLLMLLGDENNNDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLMLLLLLLLMLLLLLFFLFLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLMMM","n":["Asymmetric","MAX_SUBCLONES","Probs","ProbsPerYear","Symmetric","TIME_AT_BIRTH","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","genotype","into","into","is_asymmetric","mu","mu_background","mu_division","new","process","proliferation","stemcell","subclone","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write2file","asymmetric","probs_per_year","probs_per_year","u","u","MutationalBurden","NeutralMutationPoisson","Sfs","Variant","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","eq","fmt","from","from","from","from_cells","from_cells","from_exp","from_moran","into","into","into","lambda_background","lambda_division","new","new_muts_background","new_muts_upon_division","save","save","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Burden","CellDivisionProbabilities","Exponential","Moran","ProcessOptions","SavingCells","SavingOptions","Sfs","Snapshot","Stats2Save","Subsampling","VariantFraction","WholePopulation","advance_step","advance_step","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cells2sample","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","counter_divisions","counter_divisions","default","distributions","distributions","eq","filename","filename","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","into","into","into","into","into","into","into","into","lambda_poisson","make_path","new","new","p","path","path2dir","proliferation","proliferation","save","save_population","save_population","save_sfs_only","save_sfs_only","snapshots","snapshots","subclones","subclones","switch_to_moran","time","time","time","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_state","update_state","verbosity","verbosity","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","population_as_well","sample_size","Asymmetric","Division","NeutralMutations","Proliferation","Symmetric","UponDivision","UponDivisionAndBackground","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","default","default","default","division","fmt","fmt","fmt","from","from","from","into","into","into","neutral_mutation","new","proliferate","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","StemCell","assign_background_mutations","assign_divisional_mutations","borrow","borrow_mut","burden","clone","clone_into","default","fmt","from","get_last_division_time","has_mutations","interdivision_time","into","new","set_last_division_time","to_owned","try_from","try_into","type_id","variants","vzip","with_mutations","CloneId","Distributions","Fitness","Fixed","GammaSampled","Neutral","SubClone","SubClones","Variants","assign_cell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell_count","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","compute_tot_cells","default","default","empty_with_id","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_mean_std_to_shape_scale","get_cells","get_cells","get_cells_subclones_idx","get_cells_subsampled","get_cells_subsampled_with_clones_idx","get_cells_with_clones_idx","get_clone","get_clone_unchecked","get_mean_std","get_mut_cells","get_mut_cells","get_mut_clone_unchecked","get_neutral_clone","gillespie_rates","gillespie_set_of_reactions","id","into","into","into","into","into","into_iter","is_empty","neutral_poisson","new","new","new","new_empty","next","next_clone","proliferating_cell","random_cell","save_variant_fraction","the_only_one_subclone_present","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","u","variant_counts","variant_fractions","vzip","vzip","vzip","vzip","vzip","with_capacity","with_capacity","s","scale","shape"],"q":[[0,"hsc"],[41,"hsc::Probs"],[46,"hsc::genotype"],[91,"hsc::process"],[234,"hsc::process::SavingCells"],[236,"hsc::proliferation"],[286,"hsc::stemcell"],[310,"hsc::subclone"],[417,"hsc::subclone::Fitness"],[420,"core::fmt"],[421,"core::fmt"],[422,"core::any"],[423,"std::path"],[424,"core::option"],[425,"anyhow"],[426,"core::fmt"],[427,"rand::rng"],[428,"sosa"],[429,"core::hash"],[430,"std::path"]],"d":["","Maximal number of fit clones that can arise during the …","Probabilities used in the simulations.","","","The time at birth measured in years used for background …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","The neutral mutations representing the genotype of the …","Calls U::from(self).","Calls U::from(self).","","Arrival rate of fit mutants per year","Arrival rate of neutral background mutations per year","Arrival rate of neutral “divisional” mutations per year","Panics","The events to simulate for this Markov process.","The proliferation of cells with the simulation of neutral …","The agents whose state defines the system simulated by the …","The classes defining the proliferative advantage.","","","","","","","","","","","Write vector of float into new file with a precision of 6 …","Probability of asymmetric division per cell per division","Probabilities per year","Probabilities per year","Arrival rate of fit mutants per cell per division","Arrival rate of fit mutants per cell per division","Single-cell mutational burden is a mapping of cells …","The Poisson probability distribution modeling the …","Site frequency spectrum implemented as mapping with keys …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Compute the SFS from the stem cell population.","Compute the single-cell mutational burden from the stem …","Create the single-cell mutational burden from all cells in …","Create the single-cell mutational burden from all cells in …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Create two Poisson distributions, one modelling the neutral","The number of neutral mutations acquired upon cell …","Generate neutral mutations acquired upon cell division …","","","","","","","","","","","","","","","","","","Exponential growing process","The Moran process saves the state of the agents and …","","","","","","","","","","Update the process by simulating the next proliferative …","Update the process by simulating the next proliferative …","","","","","","","","","","","","","","","","","The number of cells to subsample","","","","","","","","","","","","","","","The counter for the number of proliferative events.","The counter for the number of proliferative events.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Rate of neutral mutations per cell-division","","","A Moran process with wild-type subclone with neutral …","Probability of getting a fit mutant upon cell division","","","","","","","","","","","","A collection of clones having a proliferative advantage.","A collection of clones having a proliferative advantage.","End the exponential growing phase and switch to a …","The time at which we subsample","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A stem cell proliferates and gives rise to a differentiate …","Stem cells can either self-renew by symmetric division or …","Specifies the kind of neutral mutations to simulate.","All the updates and changes in the system upon …","A stem cell proliferates and gives to a new stem cell with …","Neutral mutations upon division due to errors in the DNA …","Neutral mutations upon division and background mutations …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Sample a random cell from the subclones with id …","","","","","","","","","","","","","","","","Hematopoietic stem and progenitor cells (HSPCs) are a rare …","Assign background mutations to all cells in the system …","","","","","","","Creates a stem cell without any neutral mutations.","","Returns the argument unchanged.","","","","Calls U::from(self).","Construct a new cell without any neutral mutations.","","","","","","","","","Id of the SubClones.","Distribution probabilities for the simulations upon cell …","Fitness models implemented so far.","According to the Fixed fitness model, the birth-rates for …","According to the GammaSampled fitness model, the …","According to the Neutral fitness model, all subclones have …","A group of cells sharing the same genetic background with …","A collection of subclones each having their proliferative …","Number of cells in subclones.","","","","","","","","","","","","","","","","","","","","","","","Create new subclones each having one cell (this creates …","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","","","","Create the Gillespie reaction rates according to the …","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","neutral mutations","","","Returns all the newly initiated subclones by assigning all …","","","Returns a CloneId to which the stem cell must be assigned.","Determine which cells will proliferate by randomly …","","","returns None if more than one subclone is present else the …","","","","","","","","","","","","","","","","","","","","arrival rate of fit mutations per division per cell","The total variant count is the number of cells in all …","The proportion of cells in all subclones.","","","","","","","","","",""],"i":[2,0,0,0,2,0,1,2,1,2,1,2,1,2,1,2,1,2,0,1,2,2,1,1,1,2,0,0,0,0,1,2,1,2,1,2,1,2,1,2,0,48,48,49,48,49,0,0,0,0,20,21,18,20,21,18,18,18,18,18,18,20,21,18,20,21,21,21,20,21,18,18,18,18,18,18,20,21,18,20,21,18,20,21,18,20,21,18,20,21,18,33,0,0,0,0,0,0,33,0,0,28,33,28,22,23,28,29,30,31,33,32,22,23,28,29,30,31,33,32,22,23,29,28,29,30,31,32,22,23,28,29,30,31,32,22,23,22,23,23,22,23,33,30,23,28,29,30,31,32,22,23,28,29,30,31,33,32,22,23,33,28,29,30,31,33,32,22,23,32,23,22,23,32,31,23,22,23,23,30,23,30,23,31,23,22,23,22,29,22,23,28,29,30,31,32,22,23,28,29,30,31,33,32,22,23,28,29,30,31,33,32,22,23,28,29,30,31,33,32,22,23,22,23,22,23,28,29,30,31,33,32,22,23,50,50,41,0,0,0,41,42,42,41,39,42,41,39,42,41,39,42,41,39,42,41,39,42,39,41,39,42,41,39,42,41,39,42,39,39,39,41,39,42,41,39,42,41,39,42,41,39,42,41,39,42,0,0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,45,45,45,0,0,0,44,51,38,45,44,37,51,38,45,44,37,44,38,45,44,37,38,45,44,37,37,38,37,44,38,45,44,37,51,38,45,44,37,37,0,44,37,44,37,37,37,37,37,45,44,37,37,37,37,37,44,51,38,45,44,37,44,44,38,38,44,37,37,44,0,0,44,0,37,38,45,44,37,51,38,45,44,37,51,38,45,44,37,51,38,45,44,37,38,51,51,51,38,45,44,37,44,37,52,53,53],"f":[0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[1,4],5],[[2,4],5],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[2,6],0,0,0,[[7,7,7,7,8,9],2],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[12,[-1]],13,[15,[14]],6],[[16,[3]]],17],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[18,18],[[-1,-2],3,[],[]],[[],18],[[18,18],6],[[18,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[12,[19]],9],[[16,[20]]]],[[[12,[19]],9],[[16,[21]]]],[[22,9],[[16,[21]]]],[[23,9],[[16,[21]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[7,7],[[16,[18]]]],[[18,7,-1,9],[[15,[[25,[24]]]]],26],[[18,-1],[[15,[[25,[24]]]]],26],[[20,13,9],[[16,[3]]]],[[21,13,9],[[16,[3]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[22,27,-1],3,26],[[23,27,-1],3,26],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[28,28],[29,29],[30,30],[31,31],[32,32],[22,22],[23,23],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],0,0,[[],23],0,0,[[33,33],6],0,0,[[28,4],5],[[29,4],5],[[30,4],5],[[31,4],5],[[32,4],5],[[22,4],5],[[23,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[33,-1],3,34],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[23,33,35,7],[[16,[36]]]],[[37,38,39,9],22],[[31,37,7,30,38,39,9],23],0,0,0,0,0,[[23,7,28,6,-1],[[16,[3]]],26],0,0,0,0,0,0,0,0,[[22,31,38,36,6,6,-1],23,26],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[[22,40],3],[[23,40],3],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[41,41],[39,39],[42,42],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[],41],[[],39],[[],42],0,[[41,4],5],[[39,4],5],[[42,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[42,41],39],[[39,37,7,43,38,-1,9],3,26],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[19,7,18,-1,9],3,26],[[19,18,-1,9],3,26],[-1,-2,[],[]],[-1,-2,[],[]],[19,35],[19,19],[[-1,-2],3,[],[]],[[],19],[[19,4],5],[-1,-1,[]],[19,7],[19,6],[[19,7],[[16,[7]]]],[-1,-2,[],[]],[[],19],[[19,7],[[16,[3]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],0,[-1,-2,[],[]],[[[25,[24]]],19],0,0,0,0,0,0,0,0,0,[[44,19],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[44,8],[38,38],[45,45],[44,44],[37,37],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[37,8],[[],38],[[],37],[35,44],[[38,4],5],[[45,4],5],[[44,4],5],[[37,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[25,[[3,[19,35]]]]],37],[-1,-1,[]],[[7,7],[[3,[7,7]]]],[44,[[12,[19]]]],[37,[[25,[19]]]],[44,[[25,[[3,[19,35]]]]]],[[37,35,-1],[[25,[19]]],26],[[37,35,-1],[[25,[[3,[19,35]]]]],26],[37,[[25,[[3,[19,35]]]]]],[[37,35],[[15,[44]]]],[[37,35],44],[45,[[3,[7,7]]]],[44,[[12,[19]]]],[37,[[25,[19]]]],[[37,35],44],[37,44],[[37,45,7,-1],46,26],[37,[[47,[43]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[44,6],0,[[2,9],38],[[43,35],44],[[[25,[19]],35,9],37],[[],37],[44,15],[[37,43,19,7,38,-1,9],43,26],[[37,43,9,-1],19,26],[[44,-1],[[16,[19]]],26],[[37,13,9],[[16,[3]]]],[37,[[15,[43]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],0,[37,[[47,[8]]]],[37,[[25,[7]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[35,35],44],[35,37],0,0,0],"c":[],"p":[[3,"ProbsPerYear",0],[4,"Probs",0],[15,"tuple"],[3,"Formatter",420],[6,"Result",420],[15,"bool"],[15,"f32"],[15,"u64"],[15,"u8"],[4,"Result",421],[3,"TypeId",422],[15,"slice"],[3,"Path",423],[15,"str"],[4,"Option",424],[6,"Result",425],[8,"Display",420],[3,"NeutralMutationPoisson",46],[3,"StemCell",286],[3,"Sfs",46],[3,"MutationalBurden",46],[3,"Exponential",91],[3,"Moran",91],[6,"Variant",46],[3,"Vec",426],[8,"Rng",427],[3,"NextReaction",428],[4,"SavingCells",91],[3,"Snapshot",91],[3,"SavingOptions",91],[3,"ProcessOptions",91],[3,"CellDivisionProbabilities",91],[4,"Stats2Save",91],[8,"Hasher",429],[15,"usize"],[3,"PathBuf",423],[3,"SubClones",310],[3,"Distributions",310],[3,"Proliferation",236],[3,"CurrentState",428],[4,"Division",236],[4,"NeutralMutations",236],[6,"CloneId",310],[3,"SubClone",310],[4,"Fitness",310],[3,"ReactionRates",428],[15,"array"],[13,"Asymmetric",41],[13,"Symmetric",41],[13,"Subsampling",234],[3,"Variants",310],[13,"Fixed",417],[13,"GammaSampled",417]],"b":[]},\ "iana_time_zone":{"doc":"get the IANA time zone for the current system","t":"NENNLLLLLLFLLLLLL","n":["FailedParsingString","GetTimezoneError","IoError","OsError","borrow","borrow_mut","fmt","fmt","from","from","get_timezone","into","source","to_string","try_from","try_into","type_id"],"q":[[0,"iana_time_zone"],[17,"core::fmt"],[18,"core::fmt"],[19,"std::io::error"],[20,"alloc::string"],[21,"core::error"],[22,"core::option"],[23,"core::any"]],"d":["Failed to parse","Error types","Wrapped IO error","Platform-specific error from the operating system","","","","","Returns the argument unchanged.","","Get the current IANA time zone as a string.","Calls U::from(self).","","","","",""],"i":[1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1],"f":[0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[1,2],3],[[1,2],[[6,[4,5]]]],[-1,-1,[]],[7,1],[[],[[6,[8,1]]]],[-1,-2,[],[]],[1,[[10,[9]]]],[-1,8,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,11,[]]],"c":[],"p":[[4,"GetTimezoneError",0],[3,"Formatter",17],[6,"Result",17],[15,"tuple"],[3,"Error",17],[4,"Result",18],[3,"Error",19],[3,"String",20],[8,"Error",21],[4,"Option",22],[3,"TypeId",23]],"b":[[6,"impl-Debug-for-GetTimezoneError"],[7,"impl-Display-for-GetTimezoneError"]]},\ "indicatif":{"doc":"indicatif is a library for Rust that helps you build …","t":"NNNNDNDDDDDDDEIDDDEIDCINDNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLMLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLKKLDIDLLLLLKLLLLLLLLLLLLLLLLLLLLKLKLLLLLLLLLLLLK","n":["Abandon","AbandonWithMessage","AndClear","AndLeave","BinaryBytes","Bottom","DecimalBytes","FormattedDuration","HumanBytes","HumanCount","HumanDuration","HumanFloatCount","MultiProgress","MultiProgressAlignment","ParallelProgressIterator","ProgressBar","ProgressBarIter","ProgressDrawTarget","ProgressFinish","ProgressIterator","ProgressState","ProgressStyle","TermLike","Top","WeakProgressBar","WithMessage","abandon","abandon_with_message","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear","clear_line","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","consume","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","disable_steady_tick","downgrade","drive","drive_unindexed","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","duration","duration","elapsed","elapsed","enable_steady_tick","eta","eta","fill_buf","finish","finish_and_clear","finish_using_style","finish_with_message","flush","flush","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fraction","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","height","height","hidden","hidden","inc","inc_length","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","insert","insert_after","insert_before","insert_from_back","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_par_iter","is_finished","is_finished","is_hidden","is_hidden","is_hidden","len","len","len","length","message","move_cursor_down","move_cursor_left","move_cursor_right","move_cursor_up","new","new","new","new_spinner","next","next_back","per_sec","per_sec","pos","position","prefix","println","println","progress","progress","progress","progress","progress","progress_count","progress_count","progress_count","progress_count","progress_with","progress_with","progress_with","progress_with","progress_with_style","progress_with_style","progress_with_style","progress_with_style","read","read_exact","read_to_string","read_vectored","remove","reset","reset_elapsed","reset_eta","seek","set_alignment","set_draw_target","set_draw_target","set_len","set_length","set_message","set_move_cursor","set_pos","set_position","set_prefix","set_style","set_tab_width","stderr","stderr_with_hz","stdout","stdout_with_hz","stream_position","style","style","suspend","suspend","term","term_like","term_like_with_hz","tick","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_progress","try_progress","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update","upgrade","width","with_draw_target","with_draw_target","with_elapsed","with_elapsed","with_finish","with_finish","with_message","with_message","with_position","with_position","with_prefix","with_prefix","with_producer","with_style","with_style","with_tab_width","wrap_iter","wrap_read","wrap_write","write","write_line","write_str","write_vectored","ProgressStyle","ProgressTracker","TemplateError","borrow","borrow","borrow_mut","borrow_mut","clone","clone_box","clone_into","default_bar","default_spinner","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_final_tick_str","get_tick_str","init","init","into","into","progress_chars","reset","template","tick","tick_chars","tick_strings","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","with_key","with_template","write"],"q":[[0,"indicatif"],[380,"indicatif::style"],[425,"alloc::borrow"],[426,"core::convert"],[427,"std::io::error"],[428,"std::io"],[429,"rayon::iter"],[430,"rayon::iter::plumbing"],[431,"rayon::iter"],[432,"std::io"],[433,"core::fmt"],[434,"core::iter::traits::exact_size"],[435,"alloc::string"],[436,"core::iter::traits::iterator"],[437,"core::iter::traits::double_ended"],[438,"core::convert"],[439,"console::term"],[440,"alloc::boxed"],[441,"core::result"],[442,"core::any"],[443,"rayon::iter::plumbing"],[444,"core::fmt"]],"d":["Finishes the progress bar and leaves the current message …","Finishes the progress bar and sets a message, and leaves …","Finishes the progress bar and completely clears it (this …","Finishes the progress bar and leaves the current message","Formats bytes for human readability using ISO/IEC prefixes","","Formats bytes for human readability using SI prefixes","Wraps an std duration for human basic formatting.","Formats bytes for human readability","Formats counts for human readability using commas","Wraps an std duration for human readable formatting.","Formats counts for human readability using commas for …","Manages multiple progress bars from different threads","Vertical alignment of a multi progress.","Wraps a Rayon parallel iterator.","A progress bar or spinner","Wraps an iterator to display its progress.","Target for draw operations","Behavior of a progress bar when it is finished","Wraps an iterator to display its progress.","The state of a progress bar at a moment in time.","","A trait for minimal terminal-like behavior.","","A weak reference to a ProgressBar.","Finishes the progress bar and sets a message","Finishes the progress bar and leaves the current message …","Finishes the progress bar and sets a message, and leaves …","Adds a progress bar.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Clear the current line and reset the cursor to beginning …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Undoes ProgressBar::enable_steady_tick()","Creates a new weak reference to this ProgressBar","","","","","","","","","","","","","","","","","","The expected total duration (that is, elapsed time + …","Returns the current expected duration","","Returns the current elapsed time","Spawns a background thread to tick the progress bar","The expected ETA","Returns the current ETA","","Finishes the progress bar and leaves the current message","Finishes the progress bar and completely clears it","Finishes the progress bar using the behavior stored in the …","Finishes the progress bar and sets a message","","","","","","","","","","","","","","","","","","","","","","","Returns the completion as a floating-point number between …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the terminal height","Return the terminal height","A hidden draw target.","Creates a completely hidden progress bar","Advances the position of the progress bar by delta","Increase the length of the progress bar","","","","","","","","","","","","","","","","Inserts a progress bar.","Inserts a progress bar after an existing one.","Inserts a progress bar before an existing one.","Inserts a progress bar from the back.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Indicates that the progress bar finished.","Indicates that the progress bar finished","Returns true if the draw target is hidden.","","A quick convenience check if the progress bar is hidden","","","","Returns the current length","Current message","Move the cursor down by n lines","Move the cursor left by n chars","Move the cursor right by n chars","Move the cursor up by n lines","Creates a new multi progress object.","Creates a new progress bar with a given length","Create a new WeakProgressBar that returns None when upgrade…","Creates a new spinner","","","The number of steps per second","Returns the current rate of progress","","Returns the current position","Current prefix","Print a log line above all progress bars in the …","Print a log line above the progress bar","Wrap an iterator with default styling.","Wrap an iterator with default styling.","","","","Wrap an iterator with an explicit element count.","Wrap an iterator with an explicit element count.","Wrap an iterator with an explicit element count.","Wrap an iterator with an explicit element count.","Wrap an iterator with a custom progress bar.","Wrap an iterator with a custom progress bar.","","","Wrap an iterator with a progress bar and style it.","Wrap an iterator with a progress bar and style it.","Wrap an iterator with a progress bar and style it.","Wrap an iterator with a progress bar and style it.","","","","","Removes a progress bar.","Resets all of the progress bar state","Resets elapsed time and the ETA calculation","Resets the ETA calculation","","Set alignment flag","Sets a different draw target for the multiprogress bar.","Sets a different draw target for the progress bar","","Sets the length of the progress bar","Sets the current message of the progress bar","Set whether we should try to move the cursor when possible …","","Sets the position of the progress bar","Sets the current prefix of the progress bar","Overrides the stored style","Sets the tab width (default: 8). All tabs will be expanded …","Draw to a buffered stderr terminal at a max of 20 times a …","Draw to a buffered stderr terminal at a max of refresh_rate…","Draw to a buffered stdout terminal at a max of 20 times a …","Draw to a buffered stdout terminal at a max of refresh_rate…","","","Get a clone of the current progress bar style.","Hide all progress bars temporarily, execute f, then redraw …","Hide the progress bar temporarily, execute f, then redraw …","Draw to a terminal, with a specific refresh rate.","Draw to a boxed object that implements the TermLike trait.","Draw to a boxed object that implements the TermLike trait, …","Manually ticks the spinner or progress bar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrap an iterator with default styling. Uses …","Wrap an iterator with default styling. Uses …","","","","","","","","","","","","","","","","Update the ProgressBar’s inner ProgressState","Attempts to upgrade the Weak pointer to a ProgressBar, …","Return the terminal width","Creates a new multi progress object with the given draw …","Creates a new progress bar with a given length and draw …","Builder-like function for setting underlying progress bar…","A convenience builder-like function for a progress bar …","Builder-like function for setting underlying progress bar…","Sets the finish behavior for the progress bar","Builder-like function for setting underlying progress bar…","A convenience builder-like function for a progress bar …","Builder-like function for setting underlying progress bar…","A convenience builder-like function for a progress bar …","Builder-like function for setting underlying progress bar…","A convenience builder-like function for a progress bar …","","Builder-like function for setting underlying progress bar…","A convenience builder-like function for a progress bar …","A convenience builder-like function for a progress bar …","Wraps an Iterator with the progress bar","Wraps an io::Read with the progress bar","Wraps an io::Write with the progress bar","","Write a string and add a newline.","Write a string","","","Trait for defining stateful or stateless formatters","","","","","","","Creates a new instance of the progress tracker","","Returns the default progress bar style for bars","Returns the default progress bar style for spinners","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the tick string for the finished state","Returns the tick string for a given number","","","Calls U::from(self).","Calls U::from(self).","Sets the progress characters (filled, current, to do)","Notifies the progress tracker of a reset event","Sets the template string for the progress bar","Notifies the progress tracker of a tick event","Sets the tick character sequence for spinners","Sets the tick string sequence for spinners","","","","","","","","","Adds a custom key that owns a ProgressTracker to the …","Sets the template string for the progress bar","Provides access to the progress bar display buffer for …"],"i":[10,10,10,10,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,10,1,1,6,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,6,52,6,8,1,9,10,6,8,1,9,10,11,6,8,9,10,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,1,1,11,11,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,18,1,18,1,1,18,1,11,1,1,1,1,52,11,23,26,26,27,27,28,28,29,29,30,30,31,31,32,32,11,6,8,1,10,18,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,52,52,23,1,1,1,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,6,6,6,6,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,11,11,18,1,23,6,1,18,11,11,1,1,52,52,52,52,6,1,9,1,11,11,18,1,18,1,1,6,1,62,62,63,63,11,62,62,63,63,62,63,11,11,62,62,63,63,11,11,11,11,6,1,1,1,11,6,6,1,18,1,1,6,18,1,1,1,1,23,23,23,23,11,0,1,6,1,23,23,23,1,6,8,1,9,10,26,27,28,29,30,31,32,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,62,62,18,23,26,27,28,29,30,31,32,11,6,8,1,9,10,1,9,52,6,1,11,1,11,1,11,1,11,1,11,1,11,11,1,1,1,1,1,11,52,52,11,0,0,0,45,59,45,59,45,58,45,45,45,45,59,45,59,45,59,59,59,45,59,45,45,45,59,45,59,45,58,45,58,45,45,45,59,45,59,45,59,45,59,45,45,58],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[[1,-1],2,[[5,[[4,[3]]]]]],[[6,1],1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[6,[[7,[2]]]],[-1,[[7,[2]]],[]],[6,6],[8,8],[1,1],[9,9],[10,10],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[11,[-1]],12],2,13],[[],6],[[],8],[[],9],[[],10],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[1,2],[1,9],[[[11,[-1]],-2],[],14,15],[[[11,[-1]],-2],[],16,17],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[12,2],[18,19],[1,19],[18,19],[1,19],[[1,19],2],[18,19],[1,19],[[[11,[-1]]],[[7,[[21,[20]]]]],13],[1,2],[1,2],[1,2],[[1,-1],2,[[5,[[4,[3]]]]]],[-1,[[7,[2]]],[]],[[[11,[-1]]],[[7,[2]]],22],[[23,24],25],[[26,24],25],[[26,24],25],[[27,24],25],[[27,24],25],[[28,24],25],[[28,24],25],[[29,24],25],[[29,24],25],[[30,24],25],[[30,24],25],[[31,24],25],[[31,24],25],[[32,24],25],[[32,24],25],[[[11,[-1]],24],25,33],[[6,24],25],[[8,24],25],[[1,24],25],[[10,24],25],[18,34],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,35,[]],[-1,35,[]],[[],23],[[],1],[[1,36],2],[[1,36],2],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[6,12,1],1],[[6,1,1],1],[[6,1,1],1],[[6,12,1],1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[18,37],[1,37],[23,37],[6,37],[1,37],[18,[[38,[36]]]],[[[11,[-1]]],12,39],[[[11,[-1]]],12,14],[1,[[38,[36]]]],[1,40],[[-1,12],[[7,[2]]],[]],[[-1,12],[[7,[2]]],[]],[[-1,12],[[7,[2]]],[]],[[-1,12],[[7,[2]]],[]],[[],6],[36,1],[[],9],[[],1],[[[11,[-1]]],38,41],[[[11,[-1]]],38,42],[18,43],[1,43],[18,36],[1,36],[1,40],[[6,-1],[[7,[2]]],[[44,[3]]]],[[1,-1],2,[[44,[3]]]],[-1,[[11,[-1]]],39],[-1,[[11,[-1]]],39],[-1,[[11,[-1]]],14],[-1,[[11,[-1]]],14],0,[[-1,36],[[11,[-1]]],[]],[[-1,36],[[11,[-1]]],[]],[[-1,36],[[11,[-1]]],[]],[[-1,36],[[11,[-1]]],[]],[[-1,1],[[11,[-1]]],[]],[[-1,1],[[11,[-1]]],[]],[[-1,1],[[11,[-2]]],[],[]],[[-1,1],[[11,[-2]]],[],[]],[[-1,45],[[11,[-1]]],39],[[-1,45],[[11,[-1]]],39],[[-1,45],[[11,[-1]]],14],[[-1,45],[[11,[-1]]],14],[[[11,[-1]],[21,[20]]],[[7,[12]]],46],[[[11,[-1]],[21,[20]]],[[7,[2]]],46],[[[11,[-1]],40],[[7,[12]]],46],[[[11,[-1]],[21,[47]]],[[7,[12]]],46],[[6,1],2],[1,2],[1,2],[1,2],[[[11,[-1]],48],[[7,[36]]],49],[[6,8],2],[[6,23],2],[[1,23],2],[[18,36],2],[[1,36],2],[[1,-1],2,[[5,[[4,[3]]]]]],[[6,37],2],[[18,36],2],[[1,36],2],[[1,-1],2,[[5,[[4,[3]]]]]],[[1,45],2],[[1,12],2],[[],23],[20,23],[[],23],[20,23],[[[11,[-1]]],[[7,[36]]],49],0,[1,45],[[6,-1],-2,50,[]],[[1,-1],-2,50,[]],[[51,20],23],[[[53,[52]]],23],[[[53,[52]],20],23],[1,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,40,[]],[-1,40,[]],[-1,40,[]],[-1,40,[]],[-1,40,[]],[-1,40,[]],[-1,40,[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[38,[[11,[-1]]]]],[]],[-1,[[38,[[11,[-1]]]]],[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[-1,55,[]],[[1,-1],2,50],[9,[[38,[1]]]],[-1,35,[]],[23,6],[[[38,[36]],23],1],[[[11,[-1]],19],[[11,[-1]]],[]],[[1,19],1],[[[11,[-1]],10],[[11,[-1]]],[]],[[1,10],1],[[[11,[-1]],-2],[[11,[-1]]],[],[[5,[[4,[3]]]]]],[[1,-1],1,[[5,[[4,[3]]]]]],[[[11,[-1]],36],[[11,[-1]]],[]],[[1,36],1],[[[11,[-1]],-2],[[11,[-1]]],[],[[5,[[4,[3]]]]]],[[1,-1],1,[[5,[[4,[3]]]]]],[[[11,[-1]],-2],[],14,56],[[[11,[-1]],45],[[11,[-1]]],[]],[[1,45],1],[[1,12],1],[[1,-1],[[11,[-1]]],41],[[1,-1],[[11,[-1]]],46],[[1,-1],[[11,[-1]]],22],[[[11,[-1]],[21,[20]]],[[7,[12]]],22],[[-1,3],[[7,[2]]],[]],[[-1,3],[[7,[2]]],[]],[[[11,[-1]],[21,[57]]],[[7,[12]]],22],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[45,45],[-1,[[53,[58]]],[]],[[-1,-2],2,[],[]],[[],45],[[],45],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,-1,[]],[12,2],[12,2],[[59,24],25],[[59,24],25],[-1,-1,[]],[-1,-1,[]],[45,3],[[45,36],3],[[],12],[[],12],[-1,-2,[],[]],[-1,-2,[],[]],[[45,3],45],[[-1,18,60],2,[]],[[45,3],[[54,[45,59]]]],[[-1,18,60],2,[]],[[45,3],45],[[45,[21,[3]]],45],[-1,-2,[],[]],[-1,40,[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,[[54,[-2]]],[],[]],[-1,55,[]],[-1,55,[]],[[45,3,-1],45,58],[3,[[54,[45,59]]]],[[-1,18,61],2,[]]],"c":[],"p":[[3,"ProgressBar",0],[15,"tuple"],[15,"str"],[4,"Cow",425],[8,"Into",426],[3,"MultiProgress",0],[6,"Result",427],[4,"MultiProgressAlignment",0],[3,"WeakProgressBar",0],[4,"ProgressFinish",0],[3,"ProgressBarIter",0],[15,"usize"],[8,"BufRead",428],[8,"IndexedParallelIterator",429],[8,"Consumer",430],[8,"ParallelIterator",429],[8,"UnindexedConsumer",430],[3,"ProgressState",0],[3,"Duration",431],[15,"u8"],[15,"slice"],[8,"Write",428],[3,"ProgressDrawTarget",0],[3,"Formatter",432],[6,"Result",432],[3,"FormattedDuration",0],[3,"HumanDuration",0],[3,"HumanBytes",0],[3,"DecimalBytes",0],[3,"BinaryBytes",0],[3,"HumanCount",0],[3,"HumanFloatCount",0],[8,"Debug",432],[15,"f32"],[15,"u16"],[15,"u64"],[15,"bool"],[4,"Option",433],[8,"ExactSizeIterator",434],[3,"String",435],[8,"Iterator",436],[8,"DoubleEndedIterator",437],[15,"f64"],[8,"AsRef",426],[3,"ProgressStyle",380],[8,"Read",428],[3,"IoSliceMut",428],[4,"SeekFrom",428],[8,"Seek",428],[8,"FnOnce",438],[3,"Term",439],[8,"TermLike",0],[3,"Box",440],[4,"Result",441],[3,"TypeId",442],[8,"ProducerCallback",430],[3,"IoSlice",428],[8,"ProgressTracker",380],[3,"TemplateError",380],[3,"Instant",443],[8,"Write",432],[8,"ProgressIterator",0],[8,"ParallelProgressIterator",0]],"b":[[140,"impl-Display-for-FormattedDuration"],[141,"impl-Debug-for-FormattedDuration"],[142,"impl-Display-for-HumanDuration"],[143,"impl-Debug-for-HumanDuration"],[144,"impl-Display-for-HumanBytes"],[145,"impl-Debug-for-HumanBytes"],[146,"impl-Display-for-DecimalBytes"],[147,"impl-Debug-for-DecimalBytes"],[148,"impl-Display-for-BinaryBytes"],[149,"impl-Debug-for-BinaryBytes"],[150,"impl-Display-for-HumanCount"],[151,"impl-Debug-for-HumanCount"],[152,"impl-Display-for-HumanFloatCount"],[153,"impl-Debug-for-HumanFloatCount"],[223,"impl-ExactSizeIterator-for-ProgressBarIter%3CT%3E"],[224,"impl-IndexedParallelIterator-for-ProgressBarIter%3CT%3E"],[398,"impl-Display-for-TemplateError"],[399,"impl-Debug-for-TemplateError"]]},\ "itoa":{"doc":"github crates-io docs-rs","t":"DILLLLLLLLLLL","n":["Buffer","Integer","borrow","borrow_mut","clone","default","format","from","into","new","try_from","try_into","type_id"],"q":[[0,"itoa"],[13,"core::result"],[14,"core::any"]],"d":["A correctly sized stack allocation for the formatted …","An integer that can be written into an itoa::Buffer.","","","","","Print an integer into this buffer and return a reference …","Returns the argument unchanged.","Calls U::from(self).","This is a cheap operation; you don’t need to worry about …","","",""],"i":[0,0,1,1,1,1,1,1,1,1,1,1,1],"f":[0,0,[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[[],1],[[1,-1],2,3],[-1,-1,[]],[-1,-2,[],[]],[[],1],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,5,[]]],"c":[],"p":[[3,"Buffer",0],[15,"str"],[8,"Integer",0],[4,"Result",13],[3,"TypeId",14]],"b":[]},\ diff --git a/docs/src/hsc/lib.rs.html b/docs/src/hsc/lib.rs.html index 64a4b4001..371bd7db7 100644 --- a/docs/src/hsc/lib.rs.html +++ b/docs/src/hsc/lib.rs.html @@ -91,6 +91,125 @@ 91 92 93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212
      //! Simulate the dynamics of a stem cell population undergoing proliferation
       //! and differentiation according to a Moran process (fixed population size).
       //!
      @@ -133,6 +252,82 @@
       /// exponential growing phase.
       pub const TIME_AT_BIRTH: f32 = 9. / 12.;
       
      +#[derive(Clone, Debug)]
      +pub struct ProbsPerYear {
      +    /// Arrival rate of neutral background mutations per year
      +    pub mu_background: f32,
      +    /// Arrival rate of neutral "divisional" mutations per year
      +    pub mu_division: f32,
      +    /// Arrival rate of fit mutants per year
      +    pub mu: f32,
      +}
      +
      +/// Probabilities used in the simulations.
      +#[derive(Clone, Debug)]
      +pub enum Probs {
      +    Asymmetric {
      +        /// Arrival rate of fit mutants per cell per division
      +        u: f32,
      +        /// Probabilities per year
      +        probs_per_year: ProbsPerYear,
      +        /// Probability of asymmetric division per cell per division
      +        asymmetric: f32,
      +    },
      +    Symmetric {
      +        /// Arrival rate of fit mutants per cell per division
      +        u: f32,
      +        /// Probabilities per year
      +        probs_per_year: ProbsPerYear,
      +    },
      +}
      +
      +impl Probs {
      +    pub fn new(
      +        mu_background: f32,
      +        mu_division: f32,
      +        mu: f32,
      +        asymmetric: f32,
      +        cells: u64,
      +        verbosity: u8,
      +    ) -> Probs {
      +        //! ## Panics
      +        //! Panics when `mu` is greater than `cells` or when asymmetric is not
      +        //! within interval of 0 and 1.
      +        assert!(mu <= cells as f32);
      +        let probs_per_year = ProbsPerYear {
      +            mu_background,
      +            mu_division,
      +            mu,
      +        };
      +        let u = mu / (cells as f32);
      +        let probs = if (asymmetric - 0.).abs() > f32::EPSILON {
      +            Probs::Asymmetric {
      +                u,
      +                probs_per_year,
      +                asymmetric,
      +            }
      +        } else {
      +            Probs::Symmetric { u, probs_per_year }
      +        };
      +        if verbosity > 0 {
      +            println!("probs {:#?}", probs);
      +        }
      +        assert!((0f32..1.).contains(&u), "Invalid u: u>=0 and u<1");
      +        assert!(
      +            (0f32..=1.).contains(&asymmetric),
      +            "Invalid asymmetric: asymmetric>=0 and asymmetric<=1"
      +        );
      +        probs
      +    }
      +
      +    pub fn is_asymmetric(&self) -> bool {
      +        match self {
      +            Probs::Symmetric { .. } => false,
      +            Probs::Asymmetric { .. } => true,
      +        }
      +    }
      +}
      +
       pub fn write2file<T: std::fmt::Display>(
           data: &[T],
           path: &Path,
      @@ -171,6 +366,7 @@
       
       #[cfg(test)]
       mod tests {
      +    use super::*;
           use quickcheck::{Arbitrary, Gen};
           use std::num::NonZeroU8;
       
      @@ -183,5 +379,47 @@
                   LambdaFromNonZeroU8(lambda.get() as f32)
               }
           }
      +
      +    #[test]
      +    #[should_panic]
      +    fn panic_asymmetric_neg_cells_test() {
      +        Probs::new(1.1, 1.1, 0.1, -0.1, 10, 0);
      +    }
      +
      +    #[test]
      +    #[should_panic]
      +    fn panic_asymmetric_inf_cells_test() {
      +        Probs::new(1.1, 1.1, 0.1, f32::INFINITY, 10, 0);
      +    }
      +
      +    #[test]
      +    #[should_panic]
      +    fn panic_asymmetric_nan_cells_test() {
      +        Probs::new(1.1, 1.1, 0.1, f32::NAN, 10, 0);
      +    }
      +
      +    #[test]
      +    #[should_panic]
      +    fn panic_mu_gr_cells_test() {
      +        Probs::new(1.1, 1.1, 12., 0., 10, 0);
      +    }
      +
      +    #[test]
      +    #[should_panic]
      +    fn panic_mu_neg_cells_test() {
      +        Probs::new(1.1, 1.1, -0.1, 0., 10, 0);
      +    }
      +
      +    #[test]
      +    #[should_panic]
      +    fn panic_mu_inf_cells_test() {
      +        Probs::new(1.1, 1.1, f32::INFINITY, 0., 10, 0);
      +    }
      +
      +    #[test]
      +    #[should_panic]
      +    fn panic_mu_nan_cells_test() {
      +        Probs::new(1.1, 1.1, f32::NAN, 0., 10, 0);
      +    }
       }
       
      \ No newline at end of file diff --git a/docs/src/hsc/process.rs.html b/docs/src/hsc/process.rs.html index 6dbbeba1e..bfa5e41de 100644 --- a/docs/src/hsc/process.rs.html +++ b/docs/src/hsc/process.rs.html @@ -720,7 +720,6 @@ 720 721 722 -723
      use crate::genotype::{MutationalBurden, Sfs};
       use crate::proliferation::{NeutralMutations, Proliferation};
       use crate::stemcell::{assign_background_mutations, StemCell};
      @@ -1242,7 +1241,7 @@
           use rand::SeedableRng;
           use rand_chacha::ChaCha8Rng;
       
      -    use crate::genotype;
      +    use crate::{genotype, Probs};
       
           use super::*;
       
      @@ -1271,7 +1270,7 @@
           }
       
           fn create_moran(fit_variants: bool, cells: NonZeroU64) -> Moran {
      -        let u = if fit_variants { 0.001 } else { 0. };
      +        let mu = if fit_variants { 0.999 } else { 0. };
               Moran::new(
                   ProcessOptions {
                       path: PathBuf::default(),
      @@ -1284,7 +1283,7 @@
                       save_sfs_only: true,
                       save_population: true,
                   },
      -            Distributions::new(u, 10f32, 1f32, 0),
      +            Distributions::new(Probs::new(1., 1., mu, 1., cells.get(), 0), 0),
                   Proliferation::default(),
                   0,
               )
      @@ -1328,12 +1327,12 @@
               let mut moran = create_moran_fit_variants(NonZeroU64::new(cells.get() as u64).unwrap());
               let reaction = if new_clone {
                   NextReaction {
      -                time: 999.99,
      +                time: cells.get() as f32 * 0.9999,
                       event: 0,
                   }
               } else {
                   NextReaction {
      -                time: 12.2,
      +                time: 0.0002,
                       event: 0,
                   }
               };
      @@ -1346,11 +1345,10 @@
       
               assert_pop_const(&moran.process, moran.tot_cells);
               if new_clone {
      -            // this is ok because time is 999.99
      -            assert_not_all_cells_in_wild_type(&moran.process, moran.tot_cells);
      +            assert_not_all_cells_in_wild_type(&moran.process, moran.tot_cells);
               }
               let burden_after = genotype::MutationalBurden::from_moran(&moran.process, 0).unwrap();
      -        assert!(burden_before.0.keys().sum::<u16>() < burden_after.0.keys().sum::<u16>());
      +        assert!(burden_before.0.keys().sum::<u16>() <= burden_after.0.keys().sum::<u16>());
           }
       
           struct ExpFitVariant {
      @@ -1378,10 +1376,10 @@
           }
       
           fn create_exp(fit_variants: bool, cells: NonZeroU64) -> Exponential {
      -        let u = if fit_variants { 0.001 } else { 0. };
      +        let mu = if fit_variants { 0.999 } else { 0. };
               Exponential::new(
                   SubClones::new(vec![StemCell::new(); cells.get() as usize], 3, 0),
      -            Distributions::new(u, 10f32, 1f32, 0),
      +            Distributions::new(Probs::new(10., 1., mu, 1., cells.get(), 0), 0),
                   Proliferation::default(),
                   0,
               )
      @@ -1412,7 +1410,7 @@
       
               assert_eq!(exp.process.subclones.compute_tot_cells(), old_cells + 1);
               let burden_after = genotype::MutationalBurden::from_exp(&exp.process, 0).unwrap();
      -        assert!(burden_before.0.keys().sum::<u16>() < burden_after.0.keys().sum::<u16>());
      +        assert!(burden_before.0.keys().sum::<u16>() <= burden_after.0.keys().sum::<u16>());
           }
       
           #[quickcheck]
      @@ -1420,12 +1418,12 @@
               let mut exp = create_exp_fit_variants(NonZeroU64::new(cells.get() as u64).unwrap());
               let reaction = if new_clone {
                   NextReaction {
      -                time: 999.99,
      +                time: cells.get() as f32 * 0.9999,
                       event: 0,
                   }
               } else {
                   NextReaction {
      -                time: 1.2,
      +                time: 0.0002,
                       event: 0,
                   }
               };
      @@ -1441,7 +1439,7 @@
                   assert_not_all_cells_in_wild_type_exp(&exp.process, exp.tot_cells);
               }
               let burden_after = genotype::MutationalBurden::from_exp(&exp.process, 0).unwrap();
      -        assert!(burden_before.0.keys().sum::<u16>() < burden_after.0.keys().sum::<u16>());
      +        assert!(burden_before.0.keys().sum::<u16>() <= burden_after.0.keys().sum::<u16>());
           }
       }
       
      \ No newline at end of file diff --git a/docs/src/hsc/proliferation.rs.html b/docs/src/hsc/proliferation.rs.html index 253fee025..a6e837257 100644 --- a/docs/src/hsc/proliferation.rs.html +++ b/docs/src/hsc/proliferation.rs.html @@ -142,6 +142,7 @@ 142 143 144 +145
      use anyhow::Context;
       use rand::Rng;
       use rand_distr::{Bernoulli, Distribution};
      @@ -218,6 +219,16 @@
               //! and panics if there aren't any empty subclones left
               //! 2. else, reassign `cell` to the old subclone with id `old_subclone_id`
               let mut stem_cell = proliferating_cell(subclones, proliferating_subclone, verbosity, rng);
      +        // the fit variant is sampled here
      +        let id = next_clone(
      +            subclones,
      +            proliferating_subclone,
      +            &stem_cell,
      +            time,
      +            distributions,
      +            rng,
      +            verbosity,
      +        );
               if verbosity > 1 {
                   println!("proliferation at time {}", time);
                   println!(
      @@ -258,15 +269,6 @@
                       rng,
                       verbosity,
                   );
      -            let id = next_clone(
      -                subclones,
      -                proliferating_subclone,
      -                &stem_cell,
      -                time,
      -                distributions,
      -                rng,
      -                verbosity,
      -            );
                   stem_cell
                       .set_last_division_time(time)
                       .with_context(|| "wrong time")
      diff --git a/docs/src/hsc/subclone.rs.html b/docs/src/hsc/subclone.rs.html
      index 2ef19f079..c39e97df4 100644
      --- a/docs/src/hsc/subclone.rs.html
      +++ b/docs/src/hsc/subclone.rs.html
      @@ -570,7 +570,10 @@
       570
       571
       572
      +573
      +574
       
      use crate::genotype::NeutralMutationPoisson;
      +use crate::Probs;
       use crate::{stemcell::StemCell, write2file, MAX_SUBCLONES};
       use anyhow::{ensure, Context};
       use rand::seq::IteratorRandom;
      @@ -590,14 +593,21 @@
       }
       
       impl Distributions {
      -    pub fn new(u: f32, background: f32, division: f32, verbosity: u8) -> Self {
      +    pub fn new(probs: Probs, verbosity: u8) -> Self {
      +        let (u, background, division) = match probs {
      +            Probs::Symmetric { u, probs_per_year } => {
      +                (u, probs_per_year.mu_background, probs_per_year.mu_division)
      +            }
      +            Probs::Asymmetric {
      +                u, probs_per_year, ..
      +            } => (u, probs_per_year.mu_background, probs_per_year.mu_division),
      +        };
               if verbosity > 1 {
                   println!(
                       "creating distributions with u: {}, lambda_background: {}, lambda_division: {}",
                       u, background, division
                   );
               }
      -        assert!((0f32..1.).contains(&u), "Invalid u: u>=0 and u<1");
       
               Self {
                   u,
      @@ -734,11 +744,10 @@
               .interdivision_time(time)
               .with_context(|| "wrong interdivision time")
               .unwrap();
      -    // this will panic when u is not small and the cell hasn't divided much
      -    if Bernoulli::new((distr.u * interdivison_time) as f64)
      -        .unwrap()
      -        .sample(rng)
      -    {
      +    let p = (distr.u * interdivison_time) as f64;
      +    // this will panic when u is not small and the cell hasn't divided much,
      +    // i.e. when p > 1
      +    if Bernoulli::new(p).unwrap().sample(rng) {
               let mut rnd_clone_id = rng.gen_range(0..MAX_SUBCLONES);
               let mut counter = 0;
               // the new random clone cannot have `subclone_id` id and must be empty
      @@ -750,13 +759,16 @@
                   counter += 1;
               }
               assert!(counter <= MAX_SUBCLONES, "max number of clones reached");
      -        if verbosity > 2 {
      +        if verbosity > 1 {
                   println!("new fit variant: assign cell to clone {}", rnd_clone_id);
               }
               return rnd_clone_id;
           }
      -    if verbosity > 2 {
      -        println!("no new fit variants");
      +    if verbosity > 1 {
      +        println!(
      +            "no new fit variants with p {} at interdivision time {}",
      +            p, interdivison_time
      +        );
           }
           old_subclone_id
       }
      @@ -1062,7 +1074,11 @@
           #[quickcheck]
           fn division_no_new_clone(seed: u64, cells_present: NonZeroU8) -> bool {
               let mut rng = ChaCha8Rng::seed_from_u64(seed);
      -        let distr = Distributions::new(0.001, 1.1, 1.1, 0);
      +        let mu = 0.001 * cells_present.get() as f32;
      +        let distr = Distributions::new(
      +            Probs::new(1.1, 1.1, mu, 0., cells_present.get() as u64, 0),
      +            0,
      +        );
               let mut cell = StemCell::new();
               cell.set_last_division_time(1.1).unwrap();
       
      @@ -1085,7 +1101,11 @@
           #[quickcheck]
           fn division_new_clone(seed: u64, cells_present: NonZeroU8) -> bool {
               let mut rng = ChaCha8Rng::seed_from_u64(seed);
      -        let distr = Distributions::new(0.1f32, 1.1, 1.1, 0);
      +        let mu = 0.1 * cells_present.get() as f32;
      +        let distr = Distributions::new(
      +            Probs::new(1.1, 1.1, mu, 0., cells_present.get() as u64, 0),
      +            0,
      +        );
               let mut cell = StemCell::new();
               cell.set_last_division_time(1.1).unwrap();
       
      @@ -1102,7 +1122,8 @@
           #[should_panic]
           fn assign_all_clones_occupied() {
               let mut rng = ChaCha8Rng::seed_from_u64(26);
      -        let distr = Distributions::new(1f32, 1.1, 1.1, 0);
      +        let mu = 1. * MAX_SUBCLONES as f32;
      +        let distr = Distributions::new(Probs::new(1.1, 1.1, mu, 1., MAX_SUBCLONES as u64, 0), 2);
       
               let subclones = SubClones::default();
               let mut cell = StemCell::new();
      @@ -1111,30 +1132,13 @@
               next_clone(&subclones, 0, &cell, 1.1, &distr, &mut rng, 0);
           }
       
      -    #[should_panic]
      -    #[test]
      -    fn new_distribution_wrong_p_test() {
      -        Distributions::new(f32::NAN, 1.1, 1.1, 0);
      -    }
      -
      -    #[should_panic]
      -    #[test]
      -    fn new_distribution_wrong_p_inf_test() {
      -        Distributions::new(f32::INFINITY, 1.1, 1.1, 0);
      -    }
      -
      -    #[should_panic]
      -    #[test]
      -    fn new_distribution_wrong_p_neg_test() {
      -        Distributions::new(-0.9, 1.1, 1.1, 0);
      -    }
      -
           #[quickcheck]
           fn new_distribution_test(
               lambda_division: LambdaFromNonZeroU8,
               lambda_background: LambdaFromNonZeroU8,
           ) -> bool {
      -        let distrs = Distributions::new(0.1, lambda_background.0, lambda_division.0, 0);
      +        let probs = Probs::new(lambda_background.0, lambda_division.0, 0.01, 0., 10, 0);
      +        let distrs = Distributions::new(probs, 0);
               distrs.neutral_poisson.eq(&NeutralMutationPoisson::new(
                   lambda_division.0,
                   lambda_background.0,
      diff --git a/docs/trait.impl/core/clone/trait.Clone.js b/docs/trait.impl/core/clone/trait.Clone.js
      index fd02880fb..63cdb8f31 100644
      --- a/docs/trait.impl/core/clone/trait.Clone.js
      +++ b/docs/trait.impl/core/clone/trait.Clone.js
      @@ -13,7 +13,7 @@
       "crossbeam_utils":[["impl Clone for WaitGroup"],["impl Clone for Unparker"],["impl<T: Clone> Clone for CachePadded<T>"]],
       "either":[["impl<L: Clone, R: Clone> Clone for Either<L, R>"]],
       "getrandom":[["impl Clone for Error"]],
      -"hsc":[["impl Clone for SavingCells"],["impl Clone for Moran"],["impl Clone for SubClone"],["impl Clone for NeutralMutations"],["impl Clone for Exponential"],["impl Clone for Fitness"],["impl Clone for Division"],["impl Clone for StemCell"],["impl Clone for CellDivisionProbabilities"],["impl Clone for NeutralMutationPoisson"],["impl Clone for Distributions"],["impl Clone for Snapshot"],["impl Clone for Proliferation"],["impl Clone for ProcessOptions"],["impl Clone for SavingOptions"],["impl Clone for SubClones"]],
      +"hsc":[["impl Clone for Exponential"],["impl Clone for NeutralMutations"],["impl Clone for Distributions"],["impl Clone for Proliferation"],["impl Clone for Division"],["impl Clone for CellDivisionProbabilities"],["impl Clone for Probs"],["impl Clone for Snapshot"],["impl Clone for NeutralMutationPoisson"],["impl Clone for Moran"],["impl Clone for Fitness"],["impl Clone for ProbsPerYear"],["impl Clone for SavingCells"],["impl Clone for SavingOptions"],["impl Clone for StemCell"],["impl Clone for ProcessOptions"],["impl Clone for SubClones"],["impl Clone for SubClone"]],
       "indicatif":[["impl Clone for ProgressBar"],["impl Clone for ProgressStyle"],["impl Clone for Box<dyn ProgressTracker>"],["impl Clone for MultiProgress"],["impl Clone for ProgressFinish"],["impl Clone for MultiProgressAlignment"],["impl Clone for WeakProgressBar"]],
       "itoa":[["impl Clone for Buffer"]],
       "libc":[["impl Clone for siginfo_t"],["impl Clone for __c_anonymous_ptrace_syscall_info_exit"],["impl Clone for termios2"],["impl Clone for sock_fprog"],["impl Clone for glob64_t"],["impl Clone for max_align_t"],["impl Clone for nlmsghdr"],["impl Clone for packet_mreq"],["impl Clone for uinput_setup"],["impl Clone for sockaddr_storage"],["impl Clone for pthread_rwlockattr_t"],["impl Clone for utimbuf"],["impl Clone for signalfd_siginfo"],["impl Clone for input_id"],["impl Clone for uinput_ff_erase"],["impl Clone for dl_phdr_info"],["impl Clone for itimerval"],["impl Clone for sockaddr_alg"],["impl Clone for input_absinfo"],["impl Clone for sctp_sndrcvinfo"],["impl Clone for seccomp_notif_sizes"],["impl Clone for af_alg_iv"],["impl Clone for nl_mmap_hdr"],["impl Clone for fpos64_t"],["impl Clone for if_nameindex"],["impl Clone for Elf64_Shdr"],["impl Clone for protoent"],["impl Clone for in_pktinfo"],["impl Clone for sigaction"],["impl Clone for ipc_perm"],["impl Clone for msqid_ds"],["impl Clone for servent"],["impl Clone for arpreq"],["impl Clone for Elf64_Chdr"],["impl Clone for arpd_request"],["impl Clone for sigval"],["impl Clone for genlmsghdr"],["impl Clone for cpu_set_t"],["impl Clone for mallinfo2"],["impl Clone for uinput_abs_setup"],["impl Clone for Elf64_Ehdr"],["impl Clone for pthread_condattr_t"],["impl Clone for statfs"],["impl Clone for iovec"],["impl Clone for in_addr"],["impl Clone for sockaddr_vm"],["impl Clone for dqblk"],["impl Clone for ptrace_rseq_configuration"],["impl Clone for ptrace_peeksiginfo_args"],["impl Clone for statvfs64"],["impl Clone for DIR"],["impl Clone for pthread_cond_t"],["impl Clone for sctp_initmsg"],["impl Clone for open_how"],["impl Clone for pthread_barrierattr_t"],["impl Clone for pthread_mutexattr_t"],["impl Clone for rtentry"],["impl Clone for ntptimeval"],["impl Clone for itimerspec"],["impl Clone for uinput_user_dev"],["impl Clone for pthread_attr_t"],["impl Clone for timeval"],["impl Clone for posix_spawn_file_actions_t"],["impl Clone for sockaddr_can"],["impl Clone for Elf32_Phdr"],["impl Clone for fanotify_event_metadata"],["impl Clone for nl_pktinfo"],["impl Clone for ff_trigger"],["impl Clone for _libc_xmmreg"],["impl Clone for option"],["impl Clone for msghdr"],["impl Clone for stat"],["impl Clone for ff_constant_effect"],["impl Clone for fd_set"],["impl Clone for FILE"],["impl Clone for __timeval"],["impl Clone for __c_anonymous_sockaddr_can_tp"],["impl Clone for fpos_t"],["impl Clone for sctp_sndinfo"],["impl Clone for Elf32_Chdr"],["impl Clone for pollfd"],["impl Clone for __c_anonymous_sockaddr_can_j1939"],["impl Clone for Elf64_Phdr"],["impl Clone for fsid_t"],["impl Clone for ff_condition_effect"],["impl Clone for stack_t"],["impl Clone for sockaddr_nl"],["impl Clone for __exit_status"],["impl Clone for cmsghdr"],["impl Clone for user"],["impl Clone for regmatch_t"],["impl Clone for in6_rtmsg"],["impl Clone for winsize"],["impl Clone for nlattr"],["impl Clone for Elf32_Shdr"],["impl Clone for statfs64"],["impl Clone for passwd"],["impl Clone for clone_args"],["impl Clone for statvfs"],["impl Clone for utmpx"],["impl Clone for can_frame"],["impl Clone for termios"],["impl Clone for nl_mmap_req"],["impl Clone for __c_anonymous_ptrace_syscall_info_seccomp"],["impl Clone for ff_envelope"],["impl Clone for sockaddr_ll"],["impl Clone for can_filter"],["impl Clone for sctp_authinfo"],["impl Clone for sctp_rcvinfo"],["impl Clone for nlmsgerr"],["impl Clone for rlimit64"],["impl Clone for canfd_frame"],["impl Clone for semid_ds"],["impl Clone for addrinfo"],["impl Clone for user_regs_struct"],["impl Clone for in6_pktinfo"],["impl Clone for mmsghdr"],["impl Clone for dirent"],["impl Clone for sock_txtime"],["impl Clone for statx"],["impl Clone for sock_extended_err"],["impl Clone for _libc_fpstate"],["impl Clone for __c_anonymous_ptrace_syscall_info_entry"],["impl Clone for ifaddrs"],["impl Clone for lconv"],["impl Clone for sockaddr_in"],["impl Clone for timezone"],["impl Clone for sockaddr"],["impl Clone for flock"],["impl Clone for __c_anonymous_ifr_ifru"],["impl Clone for pthread_barrier_t"],["impl Clone for ip_mreqn"],["impl Clone for sock_filter"],["impl Clone for input_mask"],["impl Clone for __c_anonymous_sockaddr_can_can_addr"],["impl Clone for ifreq"],["impl Clone for tms"],["impl Clone for sockaddr_un"],["impl Clone for sctp_nxtinfo"],["impl Clone for shmid_ds"],["impl Clone for sembuf"],["impl Clone for flock64"],["impl Clone for ucred"],["impl Clone for hwtstamp_config"],["impl Clone for file_clone_range"],["impl Clone for mq_attr"],["impl Clone for ff_replay"],["impl Clone for sigset_t"],["impl Clone for timespec"],["impl Clone for user_fpregs_struct"],["impl Clone for regex_t"],["impl Clone for group"],["impl Clone for sigevent"],["impl Clone for aiocb"],["impl Clone for ptrace_syscall_info"],["impl Clone for mcontext_t"],["impl Clone for utsname"],["impl Clone for arpreq_old"],["impl Clone for stat64"],["impl Clone for input_event"],["impl Clone for pthread_rwlock_t"],["impl Clone for uinput_ff_upload"],["impl Clone for mallinfo"],["impl Clone for posix_spawnattr_t"],["impl Clone for seccomp_data"],["impl Clone for statx_timestamp"],["impl Clone for sysinfo"],["impl Clone for in6_ifreq"],["impl Clone for rlimit"],["impl Clone for ff_rumble_effect"],["impl Clone for j1939_filter"],["impl Clone for ip_mreq_source"],["impl Clone for spwd"],["impl Clone for tm"],["impl Clone for __c_anonymous_ifru_map"],["impl Clone for Dl_info"],["impl Clone for ff_effect"],["impl Clone for timex"],["impl Clone for sched_param"],["impl Clone for sem_t"],["impl Clone for input_keymap_entry"],["impl Clone for sockaddr_in6"],["impl Clone for Elf32_Sym"],["impl Clone for _libc_fpxreg"],["impl Clone for seminfo"],["impl Clone for ipv6_mreq"],["impl Clone for ucontext_t"],["impl Clone for ff_periodic_effect"],["impl Clone for in6_addr"],["impl Clone for sctp_prinfo"],["impl Clone for inotify_event"],["impl Clone for __c_anonymous_ptrace_syscall_info_data"],["impl Clone for glob_t"],["impl Clone for ff_ramp_effect"],["impl Clone for mntent"],["impl Clone for ip_mreq"],["impl Clone for epoll_event"],["impl Clone for arphdr"],["impl Clone for msginfo"],["impl Clone for hostent"],["impl Clone for Elf32_Ehdr"],["impl Clone for dirent64"],["impl Clone for fanotify_response"],["impl Clone for pthread_mutex_t"],["impl Clone for rusage"],["impl Clone for linger"],["impl Clone for Elf64_Sym"]],
      diff --git a/docs/trait.impl/core/cmp/trait.PartialEq.js b/docs/trait.impl/core/cmp/trait.PartialEq.js
      index 48915bf08..d7fa892b3 100644
      --- a/docs/trait.impl/core/cmp/trait.PartialEq.js
      +++ b/docs/trait.impl/core/cmp/trait.PartialEq.js
      @@ -12,7 +12,7 @@
       "crossbeam_utils":[["impl<T: PartialEq> PartialEq for CachePadded<T>"]],
       "either":[["impl<L: PartialEq, R: PartialEq> PartialEq for Either<L, R>"]],
       "getrandom":[["impl PartialEq for Error"]],
      -"hsc":[["impl PartialEq for NeutralMutationPoisson"],["impl PartialEq for Stats2Save"]],
      +"hsc":[["impl PartialEq for Stats2Save"],["impl PartialEq for NeutralMutationPoisson"]],
       "number_prefix":[["impl<F: PartialEq> PartialEq for NumberPrefix<F>"],["impl PartialEq for Prefix"]],
       "once_cell":[["impl<T: PartialEq> PartialEq for OnceCell<T>"],["impl<T: PartialEq> PartialEq for OnceCell<T>"]],
       "ppv_lite86":[["impl PartialEq for vec512_storage"],["impl PartialEq for vec128_storage"],["impl PartialEq for vec256_storage"]],
      diff --git a/docs/trait.impl/core/default/trait.Default.js b/docs/trait.impl/core/default/trait.Default.js
      index f9c018daa..6694ea181 100644
      --- a/docs/trait.impl/core/default/trait.Default.js
      +++ b/docs/trait.impl/core/default/trait.Default.js
      @@ -11,7 +11,7 @@
       "crossbeam_deque":[["impl<T> Default for Injector<T>"]],
       "crossbeam_epoch":[["impl<T: ?Sized + Pointable> Default for Shared<'_, T>"],["impl<T: ?Sized + Pointable> Default for Atomic<T>"],["impl Default for Collector"]],
       "crossbeam_utils":[["impl Default for Backoff"],["impl Default for Parker"],["impl<T: Default> Default for ShardedLock<T>"],["impl<T: Default> Default for AtomicCell<T>"],["impl<T: Default> Default for CachePadded<T>"],["impl Default for WaitGroup"]],
      -"hsc":[["impl Default for Division"],["impl Default for StemCell"],["impl Default for Proliferation"],["impl Default for NeutralMutations"],["impl Default for NeutralMutationPoisson"],["impl Default for Distributions"],["impl Default for SubClones"],["impl Default for Moran"]],
      +"hsc":[["impl Default for NeutralMutations"],["impl Default for NeutralMutationPoisson"],["impl Default for StemCell"],["impl Default for Moran"],["impl Default for SubClones"],["impl Default for Distributions"],["impl Default for Proliferation"],["impl Default for Division"]],
       "indicatif":[["impl Default for MultiProgressAlignment"],["impl Default for ProgressFinish"],["impl Default for MultiProgress"],["impl Default for WeakProgressBar"]],
       "itoa":[["impl Default for Buffer"]],
       "once_cell":[["impl<T: Default> Default for Lazy<T>"],["impl Default for OnceNonZeroUsize"],["impl<T> Default for OnceCell<T>"],["impl<T> Default for OnceCell<T>"],["impl Default for OnceBool"],["impl<'a, T> Default for OnceRef<'a, T>"],["impl<T: Default> Default for Lazy<T>"],["impl<T> Default for OnceBox<T>"]],
      diff --git a/docs/trait.impl/core/fmt/trait.Debug.js b/docs/trait.impl/core/fmt/trait.Debug.js
      index 6fe21b840..e487a4add 100644
      --- a/docs/trait.impl/core/fmt/trait.Debug.js
      +++ b/docs/trait.impl/core/fmt/trait.Debug.js
      @@ -13,7 +13,7 @@
       "crossbeam_utils":[["impl<T: Debug> Debug for ShardedLockWriteGuard<'_, T>"],["impl Debug for Backoff"],["impl Debug for WaitGroup"],["impl<T: Debug> Debug for ShardedLockReadGuard<'_, T>"],["impl Debug for Unparker"],["impl<T> Debug for ScopedJoinHandle<'_, T>"],["impl Debug for Parker"],["impl<'scope, 'env> Debug for ScopedThreadBuilder<'scope, 'env>"],["impl Debug for Scope<'_>"],["impl<T: Copy + Debug> Debug for AtomicCell<T>"],["impl<T: ?Sized + Debug> Debug for ShardedLock<T>"],["impl<T: Debug> Debug for CachePadded<T>"]],
       "either":[["impl<L: Debug, R: Debug> Debug for Either<L, R>"]],
       "getrandom":[["impl Debug for Error"]],
      -"hsc":[["impl Debug for NeutralMutations"],["impl Debug for SubClone"],["impl Debug for Distributions"],["impl Debug for SavingCells"],["impl Debug for NeutralMutationPoisson"],["impl Debug for Moran"],["impl Debug for Exponential"],["impl Debug for ProcessOptions"],["impl Debug for SubClones"],["impl Debug for StemCell"],["impl Debug for CellDivisionProbabilities"],["impl Debug for SavingOptions"],["impl Debug for Snapshot"],["impl Debug for Fitness"],["impl Debug for Division"],["impl Debug for Proliferation"]],
      +"hsc":[["impl Debug for SubClone"],["impl Debug for CellDivisionProbabilities"],["impl Debug for SavingOptions"],["impl Debug for Proliferation"],["impl Debug for Fitness"],["impl Debug for ProbsPerYear"],["impl Debug for NeutralMutations"],["impl Debug for StemCell"],["impl Debug for Distributions"],["impl Debug for Snapshot"],["impl Debug for NeutralMutationPoisson"],["impl Debug for SubClones"],["impl Debug for Division"],["impl Debug for Exponential"],["impl Debug for Probs"],["impl Debug for ProcessOptions"],["impl Debug for SavingCells"],["impl Debug for Moran"]],
       "iana_time_zone":[["impl Debug for GetTimezoneError"]],
       "indicatif":[["impl Debug for FormattedDuration"],["impl Debug for HumanBytes"],["impl<T: Debug> Debug for ProgressBarIter<T>"],["impl Debug for TemplateError"],["impl Debug for ProgressDrawTarget"],["impl Debug for BinaryBytes"],["impl Debug for MultiProgress"],["impl Debug for ProgressBar"],["impl Debug for HumanCount"],["impl Debug for HumanDuration"],["impl Debug for ProgressFinish"],["impl Debug for MultiProgressAlignment"],["impl Debug for DecimalBytes"],["impl Debug for HumanFloatCount"]],
       "num_traits":[["impl Debug for ParseFloatError"],["impl Debug for FloatErrorKind"]],
      diff --git a/docs/trait.impl/core/marker/trait.Freeze.js b/docs/trait.impl/core/marker/trait.Freeze.js
      index 1b9ad1e21..fd8eedf02 100644
      --- a/docs/trait.impl/core/marker/trait.Freeze.js
      +++ b/docs/trait.impl/core/marker/trait.Freeze.js
      @@ -14,7 +14,7 @@
       "either":[["impl<L, R> Freeze for Either<L, R>where\n    L: Freeze,\n    R: Freeze,",1,["either::Either"]]],
       "getrandom":[["impl Freeze for Error",1,["getrandom::error::Error"]]],
       "heck":[["impl<T> Freeze for AsKebabCase<T>where\n    T: Freeze,",1,["heck::kebab::AsKebabCase"]],["impl<T> Freeze for AsLowerCamelCase<T>where\n    T: Freeze,",1,["heck::lower_camel::AsLowerCamelCase"]],["impl<T> Freeze for AsShoutyKebabCase<T>where\n    T: Freeze,",1,["heck::shouty_kebab::AsShoutyKebabCase"]],["impl<T> Freeze for AsShoutySnakeCase<T>where\n    T: Freeze,",1,["heck::shouty_snake::AsShoutySnakeCase"]],["impl<T> Freeze for AsSnakeCase<T>where\n    T: Freeze,",1,["heck::snake::AsSnakeCase"]],["impl<T> Freeze for AsTitleCase<T>where\n    T: Freeze,",1,["heck::title::AsTitleCase"]],["impl<T> Freeze for AsTrainCase<T>where\n    T: Freeze,",1,["heck::train::AsTrainCase"]],["impl<T> Freeze for AsUpperCamelCase<T>where\n    T: Freeze,",1,["heck::upper_camel::AsUpperCamelCase"]]],
      -"hsc":[["impl Freeze for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Freeze for Sfs",1,["hsc::genotype::Sfs"]],["impl Freeze for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Freeze for SavingCells",1,["hsc::process::SavingCells"]],["impl Freeze for Snapshot",1,["hsc::process::Snapshot"]],["impl Freeze for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Freeze for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Freeze for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Freeze for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Freeze for Exponential",1,["hsc::process::Exponential"]],["impl Freeze for Moran",1,["hsc::process::Moran"]],["impl Freeze for Division",1,["hsc::proliferation::Division"]],["impl Freeze for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Freeze for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Freeze for StemCell",1,["hsc::stemcell::StemCell"]],["impl Freeze for Distributions",1,["hsc::subclone::Distributions"]],["impl Freeze for Fitness",1,["hsc::subclone::Fitness"]],["impl Freeze for SubClone",1,["hsc::subclone::SubClone"]],["impl Freeze for SubClones",1,["hsc::subclone::SubClones"]],["impl Freeze for Variants",1,["hsc::subclone::Variants"]]],
      +"hsc":[["impl Freeze for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Freeze for Sfs",1,["hsc::genotype::Sfs"]],["impl Freeze for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Freeze for SavingCells",1,["hsc::process::SavingCells"]],["impl Freeze for Snapshot",1,["hsc::process::Snapshot"]],["impl Freeze for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Freeze for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Freeze for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Freeze for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Freeze for Exponential",1,["hsc::process::Exponential"]],["impl Freeze for Moran",1,["hsc::process::Moran"]],["impl Freeze for Division",1,["hsc::proliferation::Division"]],["impl Freeze for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Freeze for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Freeze for StemCell",1,["hsc::stemcell::StemCell"]],["impl Freeze for Distributions",1,["hsc::subclone::Distributions"]],["impl Freeze for Fitness",1,["hsc::subclone::Fitness"]],["impl Freeze for SubClone",1,["hsc::subclone::SubClone"]],["impl Freeze for SubClones",1,["hsc::subclone::SubClones"]],["impl Freeze for Variants",1,["hsc::subclone::Variants"]],["impl Freeze for ProbsPerYear",1,["hsc::ProbsPerYear"]],["impl Freeze for Probs",1,["hsc::Probs"]]],
       "iana_time_zone":[["impl Freeze for GetTimezoneError",1,["iana_time_zone::GetTimezoneError"]]],
       "indicatif":[["impl Freeze for ProgressDrawTarget",1,["indicatif::draw_target::ProgressDrawTarget"]],["impl Freeze for FormattedDuration",1,["indicatif::format::FormattedDuration"]],["impl Freeze for HumanDuration",1,["indicatif::format::HumanDuration"]],["impl Freeze for HumanBytes",1,["indicatif::format::HumanBytes"]],["impl Freeze for DecimalBytes",1,["indicatif::format::DecimalBytes"]],["impl Freeze for BinaryBytes",1,["indicatif::format::BinaryBytes"]],["impl Freeze for HumanCount",1,["indicatif::format::HumanCount"]],["impl Freeze for HumanFloatCount",1,["indicatif::format::HumanFloatCount"]],["impl<T> Freeze for ProgressBarIter<T>where\n    T: Freeze,",1,["indicatif::iter::ProgressBarIter"]],["impl Freeze for MultiProgress",1,["indicatif::multi::MultiProgress"]],["impl Freeze for MultiProgressAlignment",1,["indicatif::multi::MultiProgressAlignment"]],["impl Freeze for ProgressBar",1,["indicatif::progress_bar::ProgressBar"]],["impl Freeze for WeakProgressBar",1,["indicatif::progress_bar::WeakProgressBar"]],["impl Freeze for ProgressState",1,["indicatif::state::ProgressState"]],["impl Freeze for ProgressFinish",1,["indicatif::state::ProgressFinish"]],["impl Freeze for ProgressStyle",1,["indicatif::style::ProgressStyle"]],["impl Freeze for TemplateError",1,["indicatif::style::TemplateError"]]],
       "itoa":[["impl Freeze for Buffer",1,["itoa::Buffer"]]],
      diff --git a/docs/trait.impl/core/marker/trait.Send.js b/docs/trait.impl/core/marker/trait.Send.js
      index 5140d56e6..24a7de5d2 100644
      --- a/docs/trait.impl/core/marker/trait.Send.js
      +++ b/docs/trait.impl/core/marker/trait.Send.js
      @@ -14,7 +14,7 @@
       "either":[["impl<L, R> Send for Either<L, R>where\n    L: Send,\n    R: Send,",1,["either::Either"]]],
       "getrandom":[["impl Send for Error",1,["getrandom::error::Error"]]],
       "heck":[["impl<T> Send for AsKebabCase<T>where\n    T: Send,",1,["heck::kebab::AsKebabCase"]],["impl<T> Send for AsLowerCamelCase<T>where\n    T: Send,",1,["heck::lower_camel::AsLowerCamelCase"]],["impl<T> Send for AsShoutyKebabCase<T>where\n    T: Send,",1,["heck::shouty_kebab::AsShoutyKebabCase"]],["impl<T> Send for AsShoutySnakeCase<T>where\n    T: Send,",1,["heck::shouty_snake::AsShoutySnakeCase"]],["impl<T> Send for AsSnakeCase<T>where\n    T: Send,",1,["heck::snake::AsSnakeCase"]],["impl<T> Send for AsTitleCase<T>where\n    T: Send,",1,["heck::title::AsTitleCase"]],["impl<T> Send for AsTrainCase<T>where\n    T: Send,",1,["heck::train::AsTrainCase"]],["impl<T> Send for AsUpperCamelCase<T>where\n    T: Send,",1,["heck::upper_camel::AsUpperCamelCase"]]],
      -"hsc":[["impl Send for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Send for Sfs",1,["hsc::genotype::Sfs"]],["impl Send for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Send for SavingCells",1,["hsc::process::SavingCells"]],["impl Send for Snapshot",1,["hsc::process::Snapshot"]],["impl Send for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Send for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Send for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Send for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Send for Exponential",1,["hsc::process::Exponential"]],["impl Send for Moran",1,["hsc::process::Moran"]],["impl Send for Division",1,["hsc::proliferation::Division"]],["impl Send for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Send for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Send for StemCell",1,["hsc::stemcell::StemCell"]],["impl Send for Distributions",1,["hsc::subclone::Distributions"]],["impl Send for Fitness",1,["hsc::subclone::Fitness"]],["impl Send for SubClone",1,["hsc::subclone::SubClone"]],["impl Send for SubClones",1,["hsc::subclone::SubClones"]],["impl Send for Variants",1,["hsc::subclone::Variants"]]],
      +"hsc":[["impl Send for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Send for Sfs",1,["hsc::genotype::Sfs"]],["impl Send for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Send for SavingCells",1,["hsc::process::SavingCells"]],["impl Send for Snapshot",1,["hsc::process::Snapshot"]],["impl Send for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Send for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Send for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Send for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Send for Exponential",1,["hsc::process::Exponential"]],["impl Send for Moran",1,["hsc::process::Moran"]],["impl Send for Division",1,["hsc::proliferation::Division"]],["impl Send for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Send for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Send for StemCell",1,["hsc::stemcell::StemCell"]],["impl Send for Distributions",1,["hsc::subclone::Distributions"]],["impl Send for Fitness",1,["hsc::subclone::Fitness"]],["impl Send for SubClone",1,["hsc::subclone::SubClone"]],["impl Send for SubClones",1,["hsc::subclone::SubClones"]],["impl Send for Variants",1,["hsc::subclone::Variants"]],["impl Send for ProbsPerYear",1,["hsc::ProbsPerYear"]],["impl Send for Probs",1,["hsc::Probs"]]],
       "iana_time_zone":[["impl Send for GetTimezoneError",1,["iana_time_zone::GetTimezoneError"]]],
       "indicatif":[["impl Send for ProgressDrawTarget",1,["indicatif::draw_target::ProgressDrawTarget"]],["impl Send for FormattedDuration",1,["indicatif::format::FormattedDuration"]],["impl Send for HumanDuration",1,["indicatif::format::HumanDuration"]],["impl Send for HumanBytes",1,["indicatif::format::HumanBytes"]],["impl Send for DecimalBytes",1,["indicatif::format::DecimalBytes"]],["impl Send for BinaryBytes",1,["indicatif::format::BinaryBytes"]],["impl Send for HumanCount",1,["indicatif::format::HumanCount"]],["impl Send for HumanFloatCount",1,["indicatif::format::HumanFloatCount"]],["impl<T> Send for ProgressBarIter<T>where\n    T: Send,",1,["indicatif::iter::ProgressBarIter"]],["impl Send for MultiProgress",1,["indicatif::multi::MultiProgress"]],["impl Send for MultiProgressAlignment",1,["indicatif::multi::MultiProgressAlignment"]],["impl Send for ProgressBar",1,["indicatif::progress_bar::ProgressBar"]],["impl Send for WeakProgressBar",1,["indicatif::progress_bar::WeakProgressBar"]],["impl Send for ProgressState",1,["indicatif::state::ProgressState"]],["impl Send for ProgressFinish",1,["indicatif::state::ProgressFinish"]],["impl Send for ProgressStyle",1,["indicatif::style::ProgressStyle"]],["impl Send for TemplateError",1,["indicatif::style::TemplateError"]]],
       "itoa":[["impl Send for Buffer",1,["itoa::Buffer"]]],
      diff --git a/docs/trait.impl/core/marker/trait.Sync.js b/docs/trait.impl/core/marker/trait.Sync.js
      index 0d4bdcd29..dabb54d8e 100644
      --- a/docs/trait.impl/core/marker/trait.Sync.js
      +++ b/docs/trait.impl/core/marker/trait.Sync.js
      @@ -14,7 +14,7 @@
       "either":[["impl<L, R> Sync for Either<L, R>where\n    L: Sync,\n    R: Sync,",1,["either::Either"]]],
       "getrandom":[["impl Sync for Error",1,["getrandom::error::Error"]]],
       "heck":[["impl<T> Sync for AsKebabCase<T>where\n    T: Sync,",1,["heck::kebab::AsKebabCase"]],["impl<T> Sync for AsLowerCamelCase<T>where\n    T: Sync,",1,["heck::lower_camel::AsLowerCamelCase"]],["impl<T> Sync for AsShoutyKebabCase<T>where\n    T: Sync,",1,["heck::shouty_kebab::AsShoutyKebabCase"]],["impl<T> Sync for AsShoutySnakeCase<T>where\n    T: Sync,",1,["heck::shouty_snake::AsShoutySnakeCase"]],["impl<T> Sync for AsSnakeCase<T>where\n    T: Sync,",1,["heck::snake::AsSnakeCase"]],["impl<T> Sync for AsTitleCase<T>where\n    T: Sync,",1,["heck::title::AsTitleCase"]],["impl<T> Sync for AsTrainCase<T>where\n    T: Sync,",1,["heck::train::AsTrainCase"]],["impl<T> Sync for AsUpperCamelCase<T>where\n    T: Sync,",1,["heck::upper_camel::AsUpperCamelCase"]]],
      -"hsc":[["impl Sync for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Sync for Sfs",1,["hsc::genotype::Sfs"]],["impl Sync for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Sync for SavingCells",1,["hsc::process::SavingCells"]],["impl Sync for Snapshot",1,["hsc::process::Snapshot"]],["impl Sync for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Sync for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Sync for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Sync for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Sync for Exponential",1,["hsc::process::Exponential"]],["impl Sync for Moran",1,["hsc::process::Moran"]],["impl Sync for Division",1,["hsc::proliferation::Division"]],["impl Sync for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Sync for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Sync for StemCell",1,["hsc::stemcell::StemCell"]],["impl Sync for Distributions",1,["hsc::subclone::Distributions"]],["impl Sync for Fitness",1,["hsc::subclone::Fitness"]],["impl Sync for SubClone",1,["hsc::subclone::SubClone"]],["impl Sync for SubClones",1,["hsc::subclone::SubClones"]],["impl Sync for Variants",1,["hsc::subclone::Variants"]]],
      +"hsc":[["impl Sync for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Sync for Sfs",1,["hsc::genotype::Sfs"]],["impl Sync for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Sync for SavingCells",1,["hsc::process::SavingCells"]],["impl Sync for Snapshot",1,["hsc::process::Snapshot"]],["impl Sync for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Sync for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Sync for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Sync for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Sync for Exponential",1,["hsc::process::Exponential"]],["impl Sync for Moran",1,["hsc::process::Moran"]],["impl Sync for Division",1,["hsc::proliferation::Division"]],["impl Sync for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Sync for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Sync for StemCell",1,["hsc::stemcell::StemCell"]],["impl Sync for Distributions",1,["hsc::subclone::Distributions"]],["impl Sync for Fitness",1,["hsc::subclone::Fitness"]],["impl Sync for SubClone",1,["hsc::subclone::SubClone"]],["impl Sync for SubClones",1,["hsc::subclone::SubClones"]],["impl Sync for Variants",1,["hsc::subclone::Variants"]],["impl Sync for ProbsPerYear",1,["hsc::ProbsPerYear"]],["impl Sync for Probs",1,["hsc::Probs"]]],
       "iana_time_zone":[["impl Sync for GetTimezoneError",1,["iana_time_zone::GetTimezoneError"]]],
       "indicatif":[["impl Sync for ProgressDrawTarget",1,["indicatif::draw_target::ProgressDrawTarget"]],["impl Sync for FormattedDuration",1,["indicatif::format::FormattedDuration"]],["impl Sync for HumanDuration",1,["indicatif::format::HumanDuration"]],["impl Sync for HumanBytes",1,["indicatif::format::HumanBytes"]],["impl Sync for DecimalBytes",1,["indicatif::format::DecimalBytes"]],["impl Sync for BinaryBytes",1,["indicatif::format::BinaryBytes"]],["impl Sync for HumanCount",1,["indicatif::format::HumanCount"]],["impl Sync for HumanFloatCount",1,["indicatif::format::HumanFloatCount"]],["impl<T> Sync for ProgressBarIter<T>where\n    T: Sync,",1,["indicatif::iter::ProgressBarIter"]],["impl Sync for MultiProgress",1,["indicatif::multi::MultiProgress"]],["impl Sync for MultiProgressAlignment",1,["indicatif::multi::MultiProgressAlignment"]],["impl Sync for ProgressBar",1,["indicatif::progress_bar::ProgressBar"]],["impl Sync for WeakProgressBar",1,["indicatif::progress_bar::WeakProgressBar"]],["impl Sync for ProgressState",1,["indicatif::state::ProgressState"]],["impl Sync for ProgressFinish",1,["indicatif::state::ProgressFinish"]],["impl Sync for ProgressStyle",1,["indicatif::style::ProgressStyle"]],["impl Sync for TemplateError",1,["indicatif::style::TemplateError"]]],
       "itoa":[["impl Sync for Buffer",1,["itoa::Buffer"]]],
      diff --git a/docs/trait.impl/core/marker/trait.Unpin.js b/docs/trait.impl/core/marker/trait.Unpin.js
      index 9397a4a79..62174b325 100644
      --- a/docs/trait.impl/core/marker/trait.Unpin.js
      +++ b/docs/trait.impl/core/marker/trait.Unpin.js
      @@ -14,7 +14,7 @@
       "either":[["impl<L, R> Unpin for Either<L, R>where\n    L: Unpin,\n    R: Unpin,",1,["either::Either"]]],
       "getrandom":[["impl Unpin for Error",1,["getrandom::error::Error"]]],
       "heck":[["impl<T> Unpin for AsKebabCase<T>where\n    T: Unpin,",1,["heck::kebab::AsKebabCase"]],["impl<T> Unpin for AsLowerCamelCase<T>where\n    T: Unpin,",1,["heck::lower_camel::AsLowerCamelCase"]],["impl<T> Unpin for AsShoutyKebabCase<T>where\n    T: Unpin,",1,["heck::shouty_kebab::AsShoutyKebabCase"]],["impl<T> Unpin for AsShoutySnakeCase<T>where\n    T: Unpin,",1,["heck::shouty_snake::AsShoutySnakeCase"]],["impl<T> Unpin for AsSnakeCase<T>where\n    T: Unpin,",1,["heck::snake::AsSnakeCase"]],["impl<T> Unpin for AsTitleCase<T>where\n    T: Unpin,",1,["heck::title::AsTitleCase"]],["impl<T> Unpin for AsTrainCase<T>where\n    T: Unpin,",1,["heck::train::AsTrainCase"]],["impl<T> Unpin for AsUpperCamelCase<T>where\n    T: Unpin,",1,["heck::upper_camel::AsUpperCamelCase"]]],
      -"hsc":[["impl Unpin for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Unpin for Sfs",1,["hsc::genotype::Sfs"]],["impl Unpin for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Unpin for SavingCells",1,["hsc::process::SavingCells"]],["impl Unpin for Snapshot",1,["hsc::process::Snapshot"]],["impl Unpin for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Unpin for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Unpin for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Unpin for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Unpin for Exponential",1,["hsc::process::Exponential"]],["impl Unpin for Moran",1,["hsc::process::Moran"]],["impl Unpin for Division",1,["hsc::proliferation::Division"]],["impl Unpin for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Unpin for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Unpin for StemCell",1,["hsc::stemcell::StemCell"]],["impl Unpin for Distributions",1,["hsc::subclone::Distributions"]],["impl Unpin for Fitness",1,["hsc::subclone::Fitness"]],["impl Unpin for SubClone",1,["hsc::subclone::SubClone"]],["impl Unpin for SubClones",1,["hsc::subclone::SubClones"]],["impl Unpin for Variants",1,["hsc::subclone::Variants"]]],
      +"hsc":[["impl Unpin for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl Unpin for Sfs",1,["hsc::genotype::Sfs"]],["impl Unpin for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl Unpin for SavingCells",1,["hsc::process::SavingCells"]],["impl Unpin for Snapshot",1,["hsc::process::Snapshot"]],["impl Unpin for SavingOptions",1,["hsc::process::SavingOptions"]],["impl Unpin for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl Unpin for Stats2Save",1,["hsc::process::Stats2Save"]],["impl Unpin for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl Unpin for Exponential",1,["hsc::process::Exponential"]],["impl Unpin for Moran",1,["hsc::process::Moran"]],["impl Unpin for Division",1,["hsc::proliferation::Division"]],["impl Unpin for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl Unpin for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl Unpin for StemCell",1,["hsc::stemcell::StemCell"]],["impl Unpin for Distributions",1,["hsc::subclone::Distributions"]],["impl Unpin for Fitness",1,["hsc::subclone::Fitness"]],["impl Unpin for SubClone",1,["hsc::subclone::SubClone"]],["impl Unpin for SubClones",1,["hsc::subclone::SubClones"]],["impl Unpin for Variants",1,["hsc::subclone::Variants"]],["impl Unpin for ProbsPerYear",1,["hsc::ProbsPerYear"]],["impl Unpin for Probs",1,["hsc::Probs"]]],
       "iana_time_zone":[["impl Unpin for GetTimezoneError",1,["iana_time_zone::GetTimezoneError"]]],
       "indicatif":[["impl Unpin for ProgressDrawTarget",1,["indicatif::draw_target::ProgressDrawTarget"]],["impl Unpin for FormattedDuration",1,["indicatif::format::FormattedDuration"]],["impl Unpin for HumanDuration",1,["indicatif::format::HumanDuration"]],["impl Unpin for HumanBytes",1,["indicatif::format::HumanBytes"]],["impl Unpin for DecimalBytes",1,["indicatif::format::DecimalBytes"]],["impl Unpin for BinaryBytes",1,["indicatif::format::BinaryBytes"]],["impl Unpin for HumanCount",1,["indicatif::format::HumanCount"]],["impl Unpin for HumanFloatCount",1,["indicatif::format::HumanFloatCount"]],["impl<T> Unpin for ProgressBarIter<T>where\n    T: Unpin,",1,["indicatif::iter::ProgressBarIter"]],["impl Unpin for MultiProgress",1,["indicatif::multi::MultiProgress"]],["impl Unpin for MultiProgressAlignment",1,["indicatif::multi::MultiProgressAlignment"]],["impl Unpin for ProgressBar",1,["indicatif::progress_bar::ProgressBar"]],["impl Unpin for WeakProgressBar",1,["indicatif::progress_bar::WeakProgressBar"]],["impl Unpin for ProgressState",1,["indicatif::state::ProgressState"]],["impl Unpin for ProgressFinish",1,["indicatif::state::ProgressFinish"]],["impl Unpin for ProgressStyle",1,["indicatif::style::ProgressStyle"]],["impl Unpin for TemplateError",1,["indicatif::style::TemplateError"]]],
       "itoa":[["impl Unpin for Buffer",1,["itoa::Buffer"]]],
      diff --git a/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
      index 8dbff0ae9..8c0a0751c 100644
      --- a/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
      +++ b/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
      @@ -14,7 +14,7 @@
       "either":[["impl<L, R> RefUnwindSafe for Either<L, R>where\n    L: RefUnwindSafe,\n    R: RefUnwindSafe,",1,["either::Either"]]],
       "getrandom":[["impl RefUnwindSafe for Error",1,["getrandom::error::Error"]]],
       "heck":[["impl<T> RefUnwindSafe for AsKebabCase<T>where\n    T: RefUnwindSafe,",1,["heck::kebab::AsKebabCase"]],["impl<T> RefUnwindSafe for AsLowerCamelCase<T>where\n    T: RefUnwindSafe,",1,["heck::lower_camel::AsLowerCamelCase"]],["impl<T> RefUnwindSafe for AsShoutyKebabCase<T>where\n    T: RefUnwindSafe,",1,["heck::shouty_kebab::AsShoutyKebabCase"]],["impl<T> RefUnwindSafe for AsShoutySnakeCase<T>where\n    T: RefUnwindSafe,",1,["heck::shouty_snake::AsShoutySnakeCase"]],["impl<T> RefUnwindSafe for AsSnakeCase<T>where\n    T: RefUnwindSafe,",1,["heck::snake::AsSnakeCase"]],["impl<T> RefUnwindSafe for AsTitleCase<T>where\n    T: RefUnwindSafe,",1,["heck::title::AsTitleCase"]],["impl<T> RefUnwindSafe for AsTrainCase<T>where\n    T: RefUnwindSafe,",1,["heck::train::AsTrainCase"]],["impl<T> RefUnwindSafe for AsUpperCamelCase<T>where\n    T: RefUnwindSafe,",1,["heck::upper_camel::AsUpperCamelCase"]]],
      -"hsc":[["impl RefUnwindSafe for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl RefUnwindSafe for Sfs",1,["hsc::genotype::Sfs"]],["impl RefUnwindSafe for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl RefUnwindSafe for SavingCells",1,["hsc::process::SavingCells"]],["impl RefUnwindSafe for Snapshot",1,["hsc::process::Snapshot"]],["impl RefUnwindSafe for SavingOptions",1,["hsc::process::SavingOptions"]],["impl RefUnwindSafe for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl RefUnwindSafe for Stats2Save",1,["hsc::process::Stats2Save"]],["impl RefUnwindSafe for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl RefUnwindSafe for Exponential",1,["hsc::process::Exponential"]],["impl RefUnwindSafe for Moran",1,["hsc::process::Moran"]],["impl RefUnwindSafe for Division",1,["hsc::proliferation::Division"]],["impl RefUnwindSafe for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl RefUnwindSafe for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl RefUnwindSafe for StemCell",1,["hsc::stemcell::StemCell"]],["impl RefUnwindSafe for Distributions",1,["hsc::subclone::Distributions"]],["impl RefUnwindSafe for Fitness",1,["hsc::subclone::Fitness"]],["impl RefUnwindSafe for SubClone",1,["hsc::subclone::SubClone"]],["impl RefUnwindSafe for SubClones",1,["hsc::subclone::SubClones"]],["impl RefUnwindSafe for Variants",1,["hsc::subclone::Variants"]]],
      +"hsc":[["impl RefUnwindSafe for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl RefUnwindSafe for Sfs",1,["hsc::genotype::Sfs"]],["impl RefUnwindSafe for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl RefUnwindSafe for SavingCells",1,["hsc::process::SavingCells"]],["impl RefUnwindSafe for Snapshot",1,["hsc::process::Snapshot"]],["impl RefUnwindSafe for SavingOptions",1,["hsc::process::SavingOptions"]],["impl RefUnwindSafe for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl RefUnwindSafe for Stats2Save",1,["hsc::process::Stats2Save"]],["impl RefUnwindSafe for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl RefUnwindSafe for Exponential",1,["hsc::process::Exponential"]],["impl RefUnwindSafe for Moran",1,["hsc::process::Moran"]],["impl RefUnwindSafe for Division",1,["hsc::proliferation::Division"]],["impl RefUnwindSafe for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl RefUnwindSafe for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl RefUnwindSafe for StemCell",1,["hsc::stemcell::StemCell"]],["impl RefUnwindSafe for Distributions",1,["hsc::subclone::Distributions"]],["impl RefUnwindSafe for Fitness",1,["hsc::subclone::Fitness"]],["impl RefUnwindSafe for SubClone",1,["hsc::subclone::SubClone"]],["impl RefUnwindSafe for SubClones",1,["hsc::subclone::SubClones"]],["impl RefUnwindSafe for Variants",1,["hsc::subclone::Variants"]],["impl RefUnwindSafe for ProbsPerYear",1,["hsc::ProbsPerYear"]],["impl RefUnwindSafe for Probs",1,["hsc::Probs"]]],
       "iana_time_zone":[["impl !RefUnwindSafe for GetTimezoneError",1,["iana_time_zone::GetTimezoneError"]]],
       "indicatif":[["impl !RefUnwindSafe for ProgressDrawTarget",1,["indicatif::draw_target::ProgressDrawTarget"]],["impl RefUnwindSafe for FormattedDuration",1,["indicatif::format::FormattedDuration"]],["impl RefUnwindSafe for HumanDuration",1,["indicatif::format::HumanDuration"]],["impl RefUnwindSafe for HumanBytes",1,["indicatif::format::HumanBytes"]],["impl RefUnwindSafe for DecimalBytes",1,["indicatif::format::DecimalBytes"]],["impl RefUnwindSafe for BinaryBytes",1,["indicatif::format::BinaryBytes"]],["impl RefUnwindSafe for HumanCount",1,["indicatif::format::HumanCount"]],["impl RefUnwindSafe for HumanFloatCount",1,["indicatif::format::HumanFloatCount"]],["impl<T> RefUnwindSafe for ProgressBarIter<T>where\n    T: RefUnwindSafe,",1,["indicatif::iter::ProgressBarIter"]],["impl RefUnwindSafe for MultiProgress",1,["indicatif::multi::MultiProgress"]],["impl RefUnwindSafe for MultiProgressAlignment",1,["indicatif::multi::MultiProgressAlignment"]],["impl RefUnwindSafe for ProgressBar",1,["indicatif::progress_bar::ProgressBar"]],["impl RefUnwindSafe for WeakProgressBar",1,["indicatif::progress_bar::WeakProgressBar"]],["impl RefUnwindSafe for ProgressState",1,["indicatif::state::ProgressState"]],["impl RefUnwindSafe for ProgressFinish",1,["indicatif::state::ProgressFinish"]],["impl !RefUnwindSafe for ProgressStyle",1,["indicatif::style::ProgressStyle"]],["impl RefUnwindSafe for TemplateError",1,["indicatif::style::TemplateError"]]],
       "itoa":[["impl RefUnwindSafe for Buffer",1,["itoa::Buffer"]]],
      diff --git a/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
      index 5cf0ec98d..b925bf2e1 100644
      --- a/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
      +++ b/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
      @@ -14,7 +14,7 @@
       "either":[["impl<L, R> UnwindSafe for Either<L, R>where\n    L: UnwindSafe,\n    R: UnwindSafe,",1,["either::Either"]]],
       "getrandom":[["impl UnwindSafe for Error",1,["getrandom::error::Error"]]],
       "heck":[["impl<T> UnwindSafe for AsKebabCase<T>where\n    T: UnwindSafe,",1,["heck::kebab::AsKebabCase"]],["impl<T> UnwindSafe for AsLowerCamelCase<T>where\n    T: UnwindSafe,",1,["heck::lower_camel::AsLowerCamelCase"]],["impl<T> UnwindSafe for AsShoutyKebabCase<T>where\n    T: UnwindSafe,",1,["heck::shouty_kebab::AsShoutyKebabCase"]],["impl<T> UnwindSafe for AsShoutySnakeCase<T>where\n    T: UnwindSafe,",1,["heck::shouty_snake::AsShoutySnakeCase"]],["impl<T> UnwindSafe for AsSnakeCase<T>where\n    T: UnwindSafe,",1,["heck::snake::AsSnakeCase"]],["impl<T> UnwindSafe for AsTitleCase<T>where\n    T: UnwindSafe,",1,["heck::title::AsTitleCase"]],["impl<T> UnwindSafe for AsTrainCase<T>where\n    T: UnwindSafe,",1,["heck::train::AsTrainCase"]],["impl<T> UnwindSafe for AsUpperCamelCase<T>where\n    T: UnwindSafe,",1,["heck::upper_camel::AsUpperCamelCase"]]],
      -"hsc":[["impl UnwindSafe for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl UnwindSafe for Sfs",1,["hsc::genotype::Sfs"]],["impl UnwindSafe for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl UnwindSafe for SavingCells",1,["hsc::process::SavingCells"]],["impl UnwindSafe for Snapshot",1,["hsc::process::Snapshot"]],["impl UnwindSafe for SavingOptions",1,["hsc::process::SavingOptions"]],["impl UnwindSafe for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl UnwindSafe for Stats2Save",1,["hsc::process::Stats2Save"]],["impl UnwindSafe for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl UnwindSafe for Exponential",1,["hsc::process::Exponential"]],["impl UnwindSafe for Moran",1,["hsc::process::Moran"]],["impl UnwindSafe for Division",1,["hsc::proliferation::Division"]],["impl UnwindSafe for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl UnwindSafe for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl UnwindSafe for StemCell",1,["hsc::stemcell::StemCell"]],["impl UnwindSafe for Distributions",1,["hsc::subclone::Distributions"]],["impl UnwindSafe for Fitness",1,["hsc::subclone::Fitness"]],["impl UnwindSafe for SubClone",1,["hsc::subclone::SubClone"]],["impl UnwindSafe for SubClones",1,["hsc::subclone::SubClones"]],["impl UnwindSafe for Variants",1,["hsc::subclone::Variants"]]],
      +"hsc":[["impl UnwindSafe for NeutralMutationPoisson",1,["hsc::genotype::NeutralMutationPoisson"]],["impl UnwindSafe for Sfs",1,["hsc::genotype::Sfs"]],["impl UnwindSafe for MutationalBurden",1,["hsc::genotype::MutationalBurden"]],["impl UnwindSafe for SavingCells",1,["hsc::process::SavingCells"]],["impl UnwindSafe for Snapshot",1,["hsc::process::Snapshot"]],["impl UnwindSafe for SavingOptions",1,["hsc::process::SavingOptions"]],["impl UnwindSafe for ProcessOptions",1,["hsc::process::ProcessOptions"]],["impl UnwindSafe for Stats2Save",1,["hsc::process::Stats2Save"]],["impl UnwindSafe for CellDivisionProbabilities",1,["hsc::process::CellDivisionProbabilities"]],["impl UnwindSafe for Exponential",1,["hsc::process::Exponential"]],["impl UnwindSafe for Moran",1,["hsc::process::Moran"]],["impl UnwindSafe for Division",1,["hsc::proliferation::Division"]],["impl UnwindSafe for Proliferation",1,["hsc::proliferation::Proliferation"]],["impl UnwindSafe for NeutralMutations",1,["hsc::proliferation::NeutralMutations"]],["impl UnwindSafe for StemCell",1,["hsc::stemcell::StemCell"]],["impl UnwindSafe for Distributions",1,["hsc::subclone::Distributions"]],["impl UnwindSafe for Fitness",1,["hsc::subclone::Fitness"]],["impl UnwindSafe for SubClone",1,["hsc::subclone::SubClone"]],["impl UnwindSafe for SubClones",1,["hsc::subclone::SubClones"]],["impl UnwindSafe for Variants",1,["hsc::subclone::Variants"]],["impl UnwindSafe for ProbsPerYear",1,["hsc::ProbsPerYear"]],["impl UnwindSafe for Probs",1,["hsc::Probs"]]],
       "iana_time_zone":[["impl !UnwindSafe for GetTimezoneError",1,["iana_time_zone::GetTimezoneError"]]],
       "indicatif":[["impl !UnwindSafe for ProgressDrawTarget",1,["indicatif::draw_target::ProgressDrawTarget"]],["impl UnwindSafe for FormattedDuration",1,["indicatif::format::FormattedDuration"]],["impl UnwindSafe for HumanDuration",1,["indicatif::format::HumanDuration"]],["impl UnwindSafe for HumanBytes",1,["indicatif::format::HumanBytes"]],["impl UnwindSafe for DecimalBytes",1,["indicatif::format::DecimalBytes"]],["impl UnwindSafe for BinaryBytes",1,["indicatif::format::BinaryBytes"]],["impl UnwindSafe for HumanCount",1,["indicatif::format::HumanCount"]],["impl UnwindSafe for HumanFloatCount",1,["indicatif::format::HumanFloatCount"]],["impl<T> UnwindSafe for ProgressBarIter<T>where\n    T: UnwindSafe,",1,["indicatif::iter::ProgressBarIter"]],["impl UnwindSafe for MultiProgress",1,["indicatif::multi::MultiProgress"]],["impl UnwindSafe for MultiProgressAlignment",1,["indicatif::multi::MultiProgressAlignment"]],["impl UnwindSafe for ProgressBar",1,["indicatif::progress_bar::ProgressBar"]],["impl UnwindSafe for WeakProgressBar",1,["indicatif::progress_bar::WeakProgressBar"]],["impl UnwindSafe for ProgressState",1,["indicatif::state::ProgressState"]],["impl UnwindSafe for ProgressFinish",1,["indicatif::state::ProgressFinish"]],["impl !UnwindSafe for ProgressStyle",1,["indicatif::style::ProgressStyle"]],["impl UnwindSafe for TemplateError",1,["indicatif::style::TemplateError"]]],
       "itoa":[["impl UnwindSafe for Buffer",1,["itoa::Buffer"]]],
      diff --git a/docs/trait.impl/sosa/trait.AdvanceStep.js b/docs/trait.impl/sosa/trait.AdvanceStep.js
      index 6d18e1c86..9ef7bcaa1 100644
      --- a/docs/trait.impl/sosa/trait.AdvanceStep.js
      +++ b/docs/trait.impl/sosa/trait.AdvanceStep.js
      @@ -1,3 +1,3 @@
       (function() {var implementors = {
      -"hsc":[["impl AdvanceStep<MAX_SUBCLONES> for Moran"],["impl AdvanceStep<MAX_SUBCLONES> for Exponential"]]
      +"hsc":[["impl AdvanceStep<MAX_SUBCLONES> for Exponential"],["impl AdvanceStep<MAX_SUBCLONES> for Moran"]]
       };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
      \ No newline at end of file
      diff --git a/src/proliferation.rs b/src/proliferation.rs
      index 87742b9d3..0678a76e1 100644
      --- a/src/proliferation.rs
      +++ b/src/proliferation.rs
      @@ -74,6 +74,16 @@ impl Proliferation {
               //! and panics if there aren't any empty subclones left
               //! 2. else, reassign `cell` to the old subclone with id `old_subclone_id`
               let mut stem_cell = proliferating_cell(subclones, proliferating_subclone, verbosity, rng);
      +        // the fit variant is sampled here
      +        let id = next_clone(
      +            subclones,
      +            proliferating_subclone,
      +            &stem_cell,
      +            time,
      +            distributions,
      +            rng,
      +            verbosity,
      +        );
               if verbosity > 1 {
                   println!("proliferation at time {}", time);
                   println!(
      @@ -114,15 +124,6 @@ impl Proliferation {
                       rng,
                       verbosity,
                   );
      -            let id = next_clone(
      -                subclones,
      -                proliferating_subclone,
      -                &stem_cell,
      -                time,
      -                distributions,
      -                rng,
      -                verbosity,
      -            );
                   stem_cell
                       .set_last_division_time(time)
                       .with_context(|| "wrong time")