From 073bfda4c1a682fd979f213d58396d70d39d0293 Mon Sep 17 00:00:00 2001 From: Francesco Terenzi Date: Tue, 5 Mar 2024 14:33:14 +0000 Subject: [PATCH] v4.1.1 --- 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 | 3 + 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 | 7 +- 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 | 22 +- docs/hsc/process/struct.Moran.html | 20 +- 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 | 23 ++ .../enum.MutateUponDivision.html | 31 --- .../proliferation/enum.NeutralMutations.html | 20 ++ docs/hsc/proliferation/index.html | 9 +- docs/hsc/proliferation/sidebar-items.js | 2 +- ...onAndBackgroundMutationsProliferation.html | 25 -- ...struct.DivisionMutationsProliferation.html | 25 -- .../proliferation/struct.Proliferation.html | 49 ++++ .../proliferation/trait.Proliferation.html | 45 ---- docs/hsc/sidebar-items.js | 2 +- .../fn.assign_background_mutations.html | 2 +- .../fn.assign_divisional_mutations.html | 6 + docs/hsc/stemcell/fn.mutate.html | 1 - docs/hsc/stemcell/index.html | 4 +- docs/hsc/stemcell/sidebar-items.js | 2 +- docs/hsc/stemcell/struct.StemCell.html | 2 +- docs/hsc/subclone/enum.Fitness.html | 2 +- docs/hsc/subclone/fn.assign.html | 17 -- .../hsc/subclone/fn.assign_fit_mutations.html | 17 ++ .../fn.from_mean_std_to_shape_scale.html | 2 +- docs/hsc/subclone/fn.proliferating_cell.html | 2 +- .../subclone/fn.save_variant_fraction.html | 2 +- docs/hsc/subclone/index.html | 4 +- docs/hsc/subclone/sidebar-items.js | 2 +- docs/hsc/subclone/struct.Distributions.html | 2 +- docs/hsc/subclone/struct.SubClone.html | 2 +- docs/hsc/subclone/struct.SubClones.html | 2 +- docs/hsc/subclone/struct.Variants.html | 2 +- docs/hsc/subclone/type.CloneId.html | 2 +- docs/search-index.js | 2 +- docs/src/hsc/genotype.rs.html | 2 +- docs/src/hsc/lib.rs.html | 8 + docs/src/hsc/process.rs.html | 134 +++++---- docs/src/hsc/proliferation.rs.html | 254 ++++++------------ docs/src/hsc/stemcell.rs.html | 44 ++- docs/src/hsc/subclone.rs.html | 8 +- docs/trait.impl/core/clone/trait.Clone.js | 2 +- docs/trait.impl/core/convert/trait.From.js | 2 +- docs/trait.impl/core/convert/trait.TryInto.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/type.impl/uuid/struct.Uuid.js | 2 +- src/lib.rs | 4 + src/process.rs | 49 ++-- 72 files changed, 440 insertions(+), 485 deletions(-) create mode 100644 docs/hsc/constant.TIME_AT_BIRTH.html create mode 100644 docs/hsc/proliferation/enum.Division.html delete mode 100644 docs/hsc/proliferation/enum.MutateUponDivision.html create mode 100644 docs/hsc/proliferation/enum.NeutralMutations.html delete mode 100644 docs/hsc/proliferation/struct.DivisionAndBackgroundMutationsProliferation.html delete mode 100644 docs/hsc/proliferation/struct.DivisionMutationsProliferation.html create mode 100644 docs/hsc/proliferation/struct.Proliferation.html delete mode 100644 docs/hsc/proliferation/trait.Proliferation.html create mode 100644 docs/hsc/stemcell/fn.assign_divisional_mutations.html delete mode 100644 docs/hsc/stemcell/fn.mutate.html delete mode 100644 docs/hsc/subclone/fn.assign.html create mode 100644 docs/hsc/subclone/fn.assign_fit_mutations.html diff --git a/CHANGELOG.md b/CHANGELOG.md index 856d6a8ff..c26ec05e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog The semantic versioning is kind of random. +## 4.1.1 +- Split the exp. growing phase into two: 1. in phase `t_N` we have the growth phase, and `Theta*t_N` mutations from the bg 2. in phase `t_birth - t_N`cells stop dividing, and we only have `(t_birth-t_N)*Theta` mutations from the bg. +- update dependencies: rayon, uuid and others + ## 4.1.0 - introduce asymmetric divisions and refactor the neutral mutations diff --git a/Cargo.lock b/Cargo.lock index dfd0c32e2..a08476678 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -311,7 +311,7 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hsc" -version = "4.1.0" +version = "4.1.1" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 34c795a79..f5e417ae2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hsc" -version = "4.1.0" +version = "4.1.1" edition = "2021" [dependencies] diff --git a/docs/hsc/all.html b/docs/hsc/all.html index 0acc40259..f5ded3628 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 df5614d52..5fea6f69c 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 new file mode 100644 index 000000000..5510c7d86 --- /dev/null +++ b/docs/hsc/constant.TIME_AT_BIRTH.html @@ -0,0 +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 +exponential growing phase.

+
\ No newline at end of file diff --git a/docs/hsc/fn.write2file.html b/docs/hsc/fn.write2file.html index 3a4192c5c..e32ef6a90 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 211458068..ff8a67a98 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

-
source§

fn update_state(&self, state: &mut CurrentState<MAX_SUBCLONES>)

Once the process has been updated by AdvanceStep::advance_step, +
source§

fn update_state(&self, state: &mut CurrentState<MAX_SUBCLONES>)

Once the process has been updated by AdvanceStep::advance_step, update back the CurrentState according to the process’ rules.
source§

fn next_reaction( &self, state: &CurrentState<NB_REACTIONS>, diff --git a/docs/hsc/process/struct.Moran.html b/docs/hsc/process/struct.Moran.html index 9ce570815..e0dcfc21c 100644 --- a/docs/hsc/process/struct.Moran.html +++ b/docs/hsc/process/struct.Moran.html @@ -1,4 +1,4 @@ -Moran in hsc::process - Rust

Struct hsc::process::Moran

source ·
pub struct Moran {
+Moran in hsc::process - Rust

Struct hsc::process::Moran

source ·
pub struct Moran {
     pub subclones: SubClones,
     pub counter_divisions: usize,
     pub time: f32,
@@ -9,35 +9,35 @@
     pub filename: PathBuf,
     pub save_sfs_only: bool,
     pub save_population: bool,
-    pub proliferation: MutateUponDivision,
+    pub proliferation: Proliferation,
 }
Expand description

The Moran process saves the state of the agents and simulates new proliferative events at each timestep according to the Gillespie algorithm, see Moran::advance_step.

Fields§

§subclones: SubClones

A collection of clones having a proliferative advantage.

§counter_divisions: usize

The counter for the number of proliferative events.

-
§time: f32§path2dir: PathBuf§verbosity: u8§distributions: Distributions§snapshots: VecDeque<Snapshot>§filename: PathBuf§save_sfs_only: bool§save_population: bool§proliferation: MutateUponDivision

Implementations§

source§

impl Moran

source

pub fn new( +

§time: f32§path2dir: PathBuf§verbosity: u8§distributions: Distributions§snapshots: VecDeque<Snapshot>§filename: PathBuf§save_sfs_only: bool§save_population: bool§proliferation: Proliferation

Implementations§

source§

impl Moran

source

pub fn new( process_options: ProcessOptions, initial_subclones: SubClones, time: f32, saving_options: SavingOptions, distributions: Distributions, - proliferation: MutateUponDivision, + proliferation: Proliferation, verbosity: u8 ) -> Moran

A Moran process with wild-type subclone with neutral fitness, to which all cells will be assigned.

-
source

pub fn make_path( +

source

pub fn make_path( &self, tosave: Stats2Save, cells: usize, time: f32 -) -> Result<PathBuf>

source

pub fn save( +) -> Result<PathBuf>

source

pub fn save( &mut self, time: f32, saving_cells: &SavingCells, save_sfs_only: bool, rng: &mut impl Rng -) -> Result<()>

Trait Implementations§

source§

impl AdvanceStep<MAX_SUBCLONES> for Moran

§

type Reaction = usize

The id of a subclone CloneId.

-
source§

fn advance_step( +) -> Result<()>

Trait Implementations§

source§

impl AdvanceStep<MAX_SUBCLONES> for Moran

§

type Reaction = usize

The id of a subclone CloneId.

+
source§

fn advance_step( &mut self, reaction: NextReaction<Self::Reaction>, rng: &mut impl Rng @@ -50,7 +50,7 @@ waiting time and the non-empty clone that will proliferate. From the proliferating clone selected, we sample a random cell to which we assign neutral and fit mutations.

-

source§

fn update_state(&self, state: &mut CurrentState<MAX_SUBCLONES>)

Once the process has been updated by AdvanceStep::advance_step, +
source§

fn update_state(&self, state: &mut CurrentState<MAX_SUBCLONES>)

Once the process has been updated by AdvanceStep::advance_step, update back the CurrentState according to the process’ rules.
source§

fn next_reaction( &self, state: &CurrentState<NB_REACTIONS>, @@ -60,7 +60,7 @@ iter_and_time: IterTime, rng: &mut impl Rng ) -> (SimState, Option<NextReaction<Self::Reaction>>)

Find the next reaction in the system according to a -Monte-Carlo generating method. Read more

source§

impl Clone for Moran

source§

fn clone(&self) -> Moran

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 Moran

source§

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

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

impl Default for Moran

source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl RefUnwindSafe for Moran

§

impl Send for Moran

§

impl Sync for Moran

§

impl Unpin for Moran

§

impl UnwindSafe for Moran

Blanket Implementations§

source§

impl Clone for Moran

source§

fn clone(&self) -> Moran

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 Moran

source§

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

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

impl Default for Moran

source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl RefUnwindSafe for Moran

§

impl Send for Moran

§

impl Sync for Moran

§

impl Unpin for Moran

§

impl UnwindSafe for Moran

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/process/struct.ProcessOptions.html b/docs/hsc/process/struct.ProcessOptions.html index ea31bf08e..dda00ce06 100644 --- a/docs/hsc/process/struct.ProcessOptions.html +++ b/docs/hsc/process/struct.ProcessOptions.html @@ -1,4 +1,4 @@ -ProcessOptions in hsc::process - Rust

Struct hsc::process::ProcessOptions

source ·
pub struct ProcessOptions {
+ProcessOptions in hsc::process - Rust

Struct hsc::process::ProcessOptions

source ·
pub struct ProcessOptions {
     pub path: PathBuf,
     pub snapshots: VecDeque<Snapshot>,
 }

Fields§

§path: PathBuf§snapshots: VecDeque<Snapshot>

Trait Implementations§

source§

impl Clone for ProcessOptions

source§

fn clone(&self) -> ProcessOptions

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 ProcessOptions

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 diff --git a/docs/hsc/process/struct.SavingOptions.html b/docs/hsc/process/struct.SavingOptions.html index 57b4a4a04..d5af32b7b 100644 --- a/docs/hsc/process/struct.SavingOptions.html +++ b/docs/hsc/process/struct.SavingOptions.html @@ -1,4 +1,4 @@ -SavingOptions in hsc::process - Rust

Struct hsc::process::SavingOptions

source ·
pub struct SavingOptions {
+SavingOptions in hsc::process - Rust

Struct hsc::process::SavingOptions

source ·
pub struct SavingOptions {
     pub filename: PathBuf,
     pub save_sfs_only: bool,
     pub save_population: bool,
diff --git a/docs/hsc/process/struct.Snapshot.html b/docs/hsc/process/struct.Snapshot.html
index 3b0c2a410..8f3d9ceca 100644
--- a/docs/hsc/process/struct.Snapshot.html
+++ b/docs/hsc/process/struct.Snapshot.html
@@ -1,4 +1,4 @@
-Snapshot in hsc::process - Rust

Struct hsc::process::Snapshot

source ·
pub struct Snapshot {
+Snapshot in hsc::process - Rust

Struct hsc::process::Snapshot

source ·
pub struct Snapshot {
     pub cells2sample: usize,
     pub time: f32,
 }

Fields§

§cells2sample: usize

The number of cells to subsample

diff --git a/docs/hsc/proliferation/enum.Division.html b/docs/hsc/proliferation/enum.Division.html new file mode 100644 index 000000000..2230cc68b --- /dev/null +++ b/docs/hsc/proliferation/enum.Division.html @@ -0,0 +1,23 @@ +Division in hsc::proliferation - Rust
pub enum Division {
+    Asymmetric(Bernoulli),
+    Symmetric,
+}
Expand description

Stem cells can either self-renew by symmetric division or differentiate by +asymmetric division.

+

Variants§

§

Asymmetric(Bernoulli)

A stem cell proliferates and gives rise to a differentiate cell (which +we discard in our simulations)

+
§

Symmetric

A stem cell proliferates and gives to a new stem cell with the same +genetic material as the mother cell plus some additional mutations +acquired upon division (fit divisions and neutral ones)

+

Trait Implementations§

source§

impl Clone for Division

source§

fn clone(&self) -> Division

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 Division

source§

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

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

impl Default for Division

source§

fn default() -> Division

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.

+
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/proliferation/enum.MutateUponDivision.html b/docs/hsc/proliferation/enum.MutateUponDivision.html deleted file mode 100644 index b9f61320c..000000000 --- a/docs/hsc/proliferation/enum.MutateUponDivision.html +++ /dev/null @@ -1,31 +0,0 @@ -MutateUponDivision in hsc::proliferation - Rust
pub enum MutateUponDivision {
-    DivisionAndBackgroundMutations(DivisionAndBackgroundMutationsProliferation),
-    DivisionMutations(DivisionMutationsProliferation),
-}
Expand description

Duplicate cells and deal with subclones. -Also specifies whether to simulate background neutral mutations or only -mutations upon divisions, see Proliferation.

-

Variants§

Trait Implementations§

source§

impl Clone for MutateUponDivision

source§

fn clone(&self) -> MutateUponDivision

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 MutateUponDivision

source§

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

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

impl Default for MutateUponDivision

source§

fn default() -> Self

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

impl From<DivisionAndBackgroundMutationsProliferation> for MutateUponDivision

source§

fn from(v: DivisionAndBackgroundMutationsProliferation) -> MutateUponDivision

Converts to this type from the input type.
source§

impl From<DivisionMutationsProliferation> for MutateUponDivision

source§

fn from(v: DivisionMutationsProliferation) -> MutateUponDivision

Converts to this type from the input type.
source§

impl Proliferation for MutateUponDivision

source§

fn duplicate_cell_assign_mutations( - &self, - __enum_dispatch_arg_0: &mut SubClones, - __enum_dispatch_arg_1: f32, - __enum_dispatch_arg_2: CloneId, - __enum_dispatch_arg_3: &Distributions, - __enum_dispatch_arg_4: &mut impl Rng, - __enum_dispatch_arg_5: u8 -)

source§

impl TryInto<DivisionAndBackgroundMutationsProliferation> for MutateUponDivision

§

type Error = &'static str

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

fn try_into( - self -) -> Result<DivisionAndBackgroundMutationsProliferation, <Self as TryInto<DivisionAndBackgroundMutationsProliferation>>::Error>

Performs the conversion.
source§

impl TryInto<DivisionMutationsProliferation> for MutateUponDivision

§

type Error = &'static str

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

fn try_into( - self -) -> Result<DivisionMutationsProliferation, <Self as TryInto<DivisionMutationsProliferation>>::Error>

Performs the conversion.

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/proliferation/enum.NeutralMutations.html b/docs/hsc/proliferation/enum.NeutralMutations.html new file mode 100644 index 000000000..56e95b110 --- /dev/null +++ b/docs/hsc/proliferation/enum.NeutralMutations.html @@ -0,0 +1,20 @@ +NeutralMutations in hsc::proliferation - Rust
pub enum NeutralMutations {
+    UponDivision,
+    UponDivisionAndBackground,
+}
Expand description

Specifies the kind of neutral mutations to simulate.

+

Variants§

§

UponDivision

Neutral mutations upon division due to errors in the DNA duplication

+
§

UponDivisionAndBackground

Neutral mutations upon division and background mutations (mutations +appearing during the lifetime of the cell)

+

Trait Implementations§

source§

impl Clone for NeutralMutations

source§

fn clone(&self) -> NeutralMutations

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 NeutralMutations

source§

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

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

impl Default for NeutralMutations

source§

fn default() -> NeutralMutations

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.

+
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/proliferation/index.html b/docs/hsc/proliferation/index.html index f08715e17..3d265ee3a 100644 --- a/docs/hsc/proliferation/index.html +++ b/docs/hsc/proliferation/index.html @@ -1,6 +1,3 @@ -hsc::proliferation - Rust

Module hsc::proliferation

source ·
Expand description

The proliferation of cells with the simulation of neutral and fit mutations.

-

Structs

Enums

  • Duplicate cells and deal with subclones. -Also specifies whether to simulate background neutral mutations or only -mutations upon divisions, see Proliferation.

Traits

  • All the updates and changes in the system upon proliferation.
\ No newline at end of file +hsc::proliferation - Rust

Module hsc::proliferation

source ·
Expand description

The proliferation of cells with the simulation of neutral and fit mutations.

+

Structs

  • All the updates and changes in the system upon proliferation.

Enums

  • Stem cells can either self-renew by symmetric division or differentiate by +asymmetric division.
  • Specifies the kind of neutral mutations to simulate.
\ No newline at end of file diff --git a/docs/hsc/proliferation/sidebar-items.js b/docs/hsc/proliferation/sidebar-items.js index 4dc3623a6..9eaf5ba59 100644 --- a/docs/hsc/proliferation/sidebar-items.js +++ b/docs/hsc/proliferation/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["MutateUponDivision"],"struct":["DivisionAndBackgroundMutationsProliferation","DivisionMutationsProliferation"],"trait":["Proliferation"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["Division","NeutralMutations"],"struct":["Proliferation"]}; \ No newline at end of file diff --git a/docs/hsc/proliferation/struct.DivisionAndBackgroundMutationsProliferation.html b/docs/hsc/proliferation/struct.DivisionAndBackgroundMutationsProliferation.html deleted file mode 100644 index cf35466ce..000000000 --- a/docs/hsc/proliferation/struct.DivisionAndBackgroundMutationsProliferation.html +++ /dev/null @@ -1,25 +0,0 @@ -DivisionAndBackgroundMutationsProliferation in hsc::proliferation - Rust
pub struct DivisionAndBackgroundMutationsProliferation;
Expand description

Simulate fit mutations, neutral background mutations and neutral mutations -upon division.

-

Trait Implementations§

source§

impl Clone for DivisionAndBackgroundMutationsProliferation

source§

fn clone(&self) -> DivisionAndBackgroundMutationsProliferation

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 DivisionAndBackgroundMutationsProliferation

source§

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

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

impl From<DivisionAndBackgroundMutationsProliferation> for MutateUponDivision

source§

fn from(v: DivisionAndBackgroundMutationsProliferation) -> MutateUponDivision

Converts to this type from the input type.
source§

impl Proliferation for DivisionAndBackgroundMutationsProliferation

source§

fn duplicate_cell_assign_mutations( - &self, - subclones: &mut SubClones, - time: f32, - proliferating_subclone: CloneId, - distributions: &Distributions, - rng: &mut impl Rng, - verbosity: u8 -)

source§

impl TryInto<DivisionAndBackgroundMutationsProliferation> for MutateUponDivision

§

type Error = &'static str

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

fn try_into( - self -) -> Result<DivisionAndBackgroundMutationsProliferation, <Self as TryInto<DivisionAndBackgroundMutationsProliferation>>::Error>

Performs the conversion.

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/proliferation/struct.DivisionMutationsProliferation.html b/docs/hsc/proliferation/struct.DivisionMutationsProliferation.html deleted file mode 100644 index bbcf3955a..000000000 --- a/docs/hsc/proliferation/struct.DivisionMutationsProliferation.html +++ /dev/null @@ -1,25 +0,0 @@ -DivisionMutationsProliferation in hsc::proliferation - Rust
pub struct DivisionMutationsProliferation;
Expand description

Do not simulate neutral background mutations but only neutral mutations -and fit mutations upon division

-

Trait Implementations§

source§

impl Clone for DivisionMutationsProliferation

source§

fn clone(&self) -> DivisionMutationsProliferation

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 DivisionMutationsProliferation

source§

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

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

impl From<DivisionMutationsProliferation> for MutateUponDivision

source§

fn from(v: DivisionMutationsProliferation) -> MutateUponDivision

Converts to this type from the input type.
source§

impl Proliferation for DivisionMutationsProliferation

source§

fn duplicate_cell_assign_mutations( - &self, - subclones: &mut SubClones, - time: f32, - proliferating_subclone: CloneId, - distributions: &Distributions, - rng: &mut impl Rng, - verbosity: u8 -)

source§

impl TryInto<DivisionMutationsProliferation> for MutateUponDivision

§

type Error = &'static str

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

fn try_into( - self -) -> Result<DivisionMutationsProliferation, <Self as TryInto<DivisionMutationsProliferation>>::Error>

Performs the conversion.

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/proliferation/struct.Proliferation.html b/docs/hsc/proliferation/struct.Proliferation.html new file mode 100644 index 000000000..216dd42bb --- /dev/null +++ b/docs/hsc/proliferation/struct.Proliferation.html @@ -0,0 +1,49 @@ +Proliferation in hsc::proliferation - Rust
pub struct Proliferation {
+    pub neutral_mutation: NeutralMutations,
+    pub division: Division,
+}
Expand description

All the updates and changes in the system upon proliferation.

+

The proliferation step is implemented as following:

+
    +
  1. +

    select the cell c that will proliferate next from the clone +with id reaction determined by the Gillespie algorithm

    +
  2. +
  3. +

    draw and assign mb neutral background mutations to c from +Poisson(DeltaT * mub), where mub is the backgound mutation rate

    +
  4. +
  5. +

    draw and assign md neutral division mutations to c from +Poisson(mud), where mud is the division mutation rate

    +
  6. +
  7. +

    draw from a Bernoulli trial a fit mutation and in case assign +c to a new clone. This clone must be empty and different from the +old clone which c belonged to.

    +
  8. +
  9. +

    clone the proliferating cell c into c1 and repeat step 3, 4 +with c1 only if we simulated a symmetric division, see Division.

    +
  10. +
+

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, + proliferating_subclone: CloneId, + distributions: &Distributions, + rng: &mut impl Rng, + verbosity: u8 +)

Trait Implementations§

source§

impl Clone for Proliferation

source§

fn clone(&self) -> Proliferation

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 Proliferation

source§

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

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

impl Default for Proliferation

source§

fn default() -> Proliferation

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.

+
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/proliferation/trait.Proliferation.html b/docs/hsc/proliferation/trait.Proliferation.html deleted file mode 100644 index 071931555..000000000 --- a/docs/hsc/proliferation/trait.Proliferation.html +++ /dev/null @@ -1,45 +0,0 @@ -Proliferation in hsc::proliferation - Rust
pub trait Proliferation {
-    // Required method
-    fn duplicate_cell_assign_mutations(
-        &self,
-        subclones: &mut SubClones,
-        time: f32,
-        proliferating_subclone: CloneId,
-        distributions: &Distributions,
-        rng: &mut impl Rng,
-        verbosity: u8
-    );
-}
Expand description

All the updates and changes in the system upon proliferation.

-

The proliferation step is implemented as following:

-
    -
  1. -

    select the cell c that will proliferate next from the clone -with id reaction determined by the Gillespie algorithm

    -
  2. -
  3. -

    draw and assign mb neutral background mutations to c from -Poisson(DeltaT * mub), where mub is the backgound mutation rate

    -
  4. -
  5. -

    draw and assign md neutral division mutations to c from -Poisson(mud), where mud is the division mutation rate

    -
  6. -
  7. -

    draw from a Bernoulli trial a fit mutation and in case assign -c to a new clone. This clone must be empty and different from the -old clone which c belonged to.

    -
  8. -
  9. -

    clone the proliferating cell c into c1 and repeat step 3, 4 -with c1.

    -
  10. -
-

Required Methods§

source

fn duplicate_cell_assign_mutations( - &self, - subclones: &mut SubClones, - time: f32, - proliferating_subclone: CloneId, - distributions: &Distributions, - rng: &mut impl Rng, - verbosity: u8 -)

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/docs/hsc/sidebar-items.js b/docs/hsc/sidebar-items.js index 37fe21b17..d354a8f18 100644 --- a/docs/hsc/sidebar-items.js +++ b/docs/hsc/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["MAX_SUBCLONES"],"fn":["write2file"],"mod":["genotype","process","proliferation","stemcell","subclone"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["MAX_SUBCLONES","TIME_AT_BIRTH"],"fn":["write2file"],"mod":["genotype","process","proliferation","stemcell","subclone"]}; \ 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 0a75212e5..9d8bf0901 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
new file mode 100644
index 000000000..049bcf967
--- /dev/null
+++ b/docs/hsc/stemcell/fn.assign_divisional_mutations.html
@@ -0,0 +1,6 @@
+assign_divisional_mutations in hsc::stemcell - Rust
pub fn assign_divisional_mutations(
+    stem_cell: &mut StemCell,
+    neutral_poisson: &NeutralMutationPoisson,
+    rng: &mut impl Rng,
+    verbosity: u8
+)
\ No newline at end of file diff --git a/docs/hsc/stemcell/fn.mutate.html b/docs/hsc/stemcell/fn.mutate.html deleted file mode 100644 index 8b8a76e1a..000000000 --- a/docs/hsc/stemcell/fn.mutate.html +++ /dev/null @@ -1 +0,0 @@ -mutate in hsc::stemcell - Rust

Function hsc::stemcell::mutate

source ·
pub fn mutate(cell: &mut StemCell, mutations: Vec<Variant>)
\ No newline at end of file diff --git a/docs/hsc/stemcell/index.html b/docs/hsc/stemcell/index.html index 12c7c9b2d..bb2bf6419 100644 --- a/docs/hsc/stemcell/index.html +++ b/docs/hsc/stemcell/index.html @@ -1,5 +1,5 @@ -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

\ No newline at end of file +current simulation time.
  • \ No newline at end of file diff --git a/docs/hsc/stemcell/sidebar-items.js b/docs/hsc/stemcell/sidebar-items.js index ec58eb6e8..6b3e876b5 100644 --- a/docs/hsc/stemcell/sidebar-items.js +++ b/docs/hsc/stemcell/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"fn":["assign_background_mutations","mutate"],"struct":["StemCell"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"fn":["assign_background_mutations","assign_divisional_mutations"],"struct":["StemCell"]}; \ No newline at end of file diff --git a/docs/hsc/stemcell/struct.StemCell.html b/docs/hsc/stemcell/struct.StemCell.html index 248aae1e9..33a921069 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>,
         pub last_division_t: f32,
     }
    Expand description

    Hematopoietic stem and progenitor cells (HSPCs) are a rare population of diff --git a/docs/hsc/subclone/enum.Fitness.html b/docs/hsc/subclone/enum.Fitness.html index 2cd2d6e1c..2cb0d885e 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,
    diff --git a/docs/hsc/subclone/fn.assign.html b/docs/hsc/subclone/fn.assign.html
    deleted file mode 100644
    index 746a85125..000000000
    --- a/docs/hsc/subclone/fn.assign.html
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -assign in hsc::subclone - Rust

    Function hsc::subclone::assign

    source ·
    pub fn assign(
    -    subclones: &mut SubClones,
    -    old_subclone_id: CloneId,
    -    cell: StemCell,
    -    distr: &Distributions,
    -    rng: &mut impl Rng,
    -    verbosity: u8
    -)
    Expand description

    Assign cell to a subclone.

    -

    There are two scenarios based on whether the proliferation has -generated a new fit variant:

    -
      -
    1. if it’s the case, then cell will be assigned to a new empty -random clone with an id different from old_subclone_id (panics if -there aren’t any empty subclones left).
    2. -
    3. else, reassign cell to the old subclone with id old_subclone_id
    4. -
    -
    \ No newline at end of file diff --git a/docs/hsc/subclone/fn.assign_fit_mutations.html b/docs/hsc/subclone/fn.assign_fit_mutations.html new file mode 100644 index 000000000..fca9130fd --- /dev/null +++ b/docs/hsc/subclone/fn.assign_fit_mutations.html @@ -0,0 +1,17 @@ +assign_fit_mutations in hsc::subclone - Rust
    pub fn assign_fit_mutations(
    +    subclones: &mut SubClones,
    +    old_subclone_id: CloneId,
    +    cell: StemCell,
    +    distr: &Distributions,
    +    rng: &mut impl Rng,
    +    verbosity: u8
    +)
    Expand description

    Assign cell to a subclone.

    +

    There are two scenarios based on whether the proliferation has +generated a new fit variant:

    +
      +
    1. if it’s the case, then cell will be assigned to a new empty +random clone with an id different from old_subclone_id (panics if +there aren’t any empty subclones left).
    2. +
    3. else, reassign cell to the old subclone with id old_subclone_id
    4. +
    +
    \ No newline at end of file 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 5f2ff83d3..ec5b89769 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.proliferating_cell.html b/docs/hsc/subclone/fn.proliferating_cell.html index 8051324b2..f1013c248 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 89e267e0c..3e6941aeb 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 d6fdfd520..573540a9d 100644
    --- a/docs/hsc/subclone/index.html
    +++ b/docs/hsc/subclone/index.html
    @@ -1,7 +1,7 @@
    -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

    Enums

    • Fitness models implemented so far.

    Functions

    Type Aliases

    \ No newline at end of file diff --git a/docs/hsc/subclone/sidebar-items.js b/docs/hsc/subclone/sidebar-items.js index 31530f9a6..3c6c48fe9 100644 --- a/docs/hsc/subclone/sidebar-items.js +++ b/docs/hsc/subclone/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["Fitness"],"fn":["assign","from_mean_std_to_shape_scale","proliferating_cell","save_variant_fraction"],"struct":["Distributions","SubClone","SubClones","Variants"],"type":["CloneId"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["Fitness"],"fn":["assign_fit_mutations","from_mean_std_to_shape_scale","proliferating_cell","save_variant_fraction"],"struct":["Distributions","SubClone","SubClones","Variants"],"type":["CloneId"]}; \ No newline at end of file diff --git a/docs/hsc/subclone/struct.Distributions.html b/docs/hsc/subclone/struct.Distributions.html index 06c5adfc6..0dd504913 100644 --- a/docs/hsc/subclone/struct.Distributions.html +++ b/docs/hsc/subclone/struct.Distributions.html @@ -1,4 +1,4 @@ -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 bern: Bernoulli,
         pub u: f64,
         pub neutral_poisson: NeutralMutationPoisson,
    diff --git a/docs/hsc/subclone/struct.SubClone.html b/docs/hsc/subclone/struct.SubClone.html
    index a4bafff0e..4c7247758 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 diff --git a/docs/hsc/subclone/struct.SubClones.html b/docs/hsc/subclone/struct.SubClones.html index 99ec5d5ff..f61504c07 100644 --- a/docs/hsc/subclone/struct.SubClones.html +++ b/docs/hsc/subclone/struct.SubClones.html @@ -1,4 +1,4 @@ -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) -> Self

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

    diff --git a/docs/hsc/subclone/struct.Variants.html b/docs/hsc/subclone/struct.Variants.html index bf0ad7b5b..f7c74987d 100644 --- a/docs/hsc/subclone/struct.Variants.html +++ b/docs/hsc/subclone/struct.Variants.html @@ -1,4 +1,4 @@ -Variants in hsc::subclone - Rust

    Struct hsc::subclone::Variants

    source ·
    pub struct Variants {}
    Expand description

    Number of cells in 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;
    diff --git a/docs/hsc/subclone/type.CloneId.html b/docs/hsc/subclone/type.CloneId.html
    index a98e90fb5..601a62d67 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 4aacd44e2..61056a905 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":"RAAAAAFDDDGLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLNDDDDEDNDENNNLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLMMLMMLMMLLLLLLLLLLLLLLLLLLLLLLLLMLLLMMMMMLMMMMMMMMLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLMMNDNDEILLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDFLLLLLLLLLLMFLLLLLMLLGDENNNDDDLFLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLMLLLLLLLMLLLLLFLFLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLMMM","n":["MAX_SUBCLONES","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","DivisionAndBackgroundMutations","DivisionAndBackgroundMutationsProliferation","DivisionMutations","DivisionMutationsProliferation","MutateUponDivision","Proliferation","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","default","duplicate_cell_assign_mutations","duplicate_cell_assign_mutations","duplicate_cell_assign_mutations","duplicate_cell_assign_mutations","fmt","fmt","fmt","from","from","from","from","from","into","into","into","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","StemCell","assign_background_mutations","borrow","borrow_mut","burden","clone","clone_into","default","fmt","from","has_mutations","into","last_division_t","mutate","new","to_owned","try_from","try_into","type_id","variants","vzip","with_mutations","CloneId","Distributions","Fitness","Fixed","GammaSampled","Neutral","SubClone","SubClones","Variants","acquire_p_mutation","assign","assign_cell","bern","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","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"],[7,"hsc::genotype"],[52,"hsc::process"],[195,"hsc::process::SavingCells"],[197,"hsc::proliferation"],[248,"hsc::stemcell"],[270,"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 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.","","The time at which we subsample","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Simulate fit mutations, neutral background mutations and …","","Do not simulate neutral background mutations but only …","Duplicate cells and deal with subclones. Also specifies …","All the updates and changes in the system upon …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","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).","the last time at which the cell has divided","","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.","","Assign cell to a subclone.","","probability of fit mutations upon cell proliferation","","","","","","","","","","","","","","","","","","","","","","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).","","","","","","Returns all the newly initiated subclones by assigning all …","","","Determine which cells will proliferate by randomly …","","","returns None if more than one subclone is present else the …","","","","","","","","","","","","","","","","","","","","","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,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,47,47,36,0,36,0,0,0,38,39,36,38,39,36,38,39,36,38,39,36,36,48,38,39,36,38,39,36,38,39,36,36,36,38,39,36,38,39,36,38,39,36,38,39,36,36,36,38,39,36,38,39,36,0,0,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,12,12,12,0,0,0,43,43,43,0,0,0,35,0,41,35,49,35,43,41,34,49,35,43,41,34,41,35,43,41,34,35,43,41,34,34,35,34,41,35,43,41,34,49,35,43,41,34,34,0,41,34,41,34,34,34,34,34,43,41,34,34,34,34,34,41,49,35,43,41,34,41,41,35,35,41,34,34,41,0,41,0,34,35,43,41,34,49,35,43,41,34,49,35,43,41,34,49,35,43,41,34,35,49,49,49,35,43,41,34,41,34,50,51,51],"f":[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,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,38],[39,39],[36,36],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[],36],[[-1,34,18,40,35,-2,13],6,[],21],[[38,34,18,40,35,-1,13],6,21],[[39,34,18,40,35,-1,13],6,21],[[36,34,18,40,35,-1,13],6,21],[[38,10],11],[[39,10],11],[[36,10],11],[-1,-1,[]],[-1,-1,[]],[38,36],[39,36],[-1,-1,[]],[-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]]],[],[]],[36,[[22,[38]]]],[36,[[22,[39]]]],[-1,[[22,[-2]]],[],[]],[-1,23,[]],[-1,23,[]],[-1,23,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[12,18,9,-1,13],6,21],[-1,-2,[],[]],[-1,-2,[],[]],[12,32],[12,12],[[-1,-2],6,[],[]],[[],12],[[12,10],11],[-1,-1,[]],[12,5],[-1,-2,[],[]],0,[[12,[20,[19]]],6],[[],12],[-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,[[35,-1],5,21],[[34,40,12,35,-1,13],6,21],[[41,12],6],0,[-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,[[46,18,18,13],35],[[40,32],41],[[[20,[12]],32],34],[[],34],[41,4],[[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",7],[3,"Formatter",385],[6,"Result",385],[3,"StemCell",248],[15,"u8"],[3,"Sfs",7],[3,"MutationalBurden",7],[3,"Exponential",52],[3,"Moran",52],[15,"f32"],[6,"Variant",7],[3,"Vec",386],[8,"Rng",387],[4,"Result",388],[3,"TypeId",389],[3,"NextReaction",390],[4,"SavingCells",52],[3,"Snapshot",52],[3,"SavingOptions",52],[3,"ProcessOptions",52],[3,"CellDivisionProbabilities",52],[4,"Stats2Save",52],[8,"Hasher",391],[15,"usize"],[3,"PathBuf",382],[3,"SubClones",270],[3,"Distributions",270],[4,"MutateUponDivision",197],[3,"CurrentState",390],[3,"DivisionAndBackgroundMutationsProliferation",197],[3,"DivisionMutationsProliferation",197],[6,"CloneId",270],[3,"SubClone",270],[15,"u64"],[4,"Fitness",270],[3,"ReactionRates",390],[15,"array"],[15,"f64"],[13,"Subsampling",195],[8,"Proliferation",197],[3,"Variants",270],[13,"Fixed",379],[13,"GammaSampled",379]],"b":[[225,"impl-From%3CDivisionAndBackgroundMutationsProliferation%3E-for-MutateUponDivision"],[226,"impl-From%3CDivisionMutationsProliferation%3E-for-MutateUponDivision"],[239,"impl-TryInto%3CDivisionAndBackgroundMutationsProliferation%3E-for-MutateUponDivision"],[240,"impl-TryInto%3CDivisionMutationsProliferation%3E-for-MutateUponDivision"]]},\ +"hsc":{"doc":"Simulate the dynamics of a stem cell population undergoing …","t":"RRAAAAAFDDDGLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLNDDDDEDNDENNNLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLMMLMMLMMLLLLLLLLLLLLLLLLLLLLLLLLMLLLMMMMMLMMMMMMMMLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLMMNEEDNNNLLLLLLLLLLLLLLLMLLLLLLLLLMLLLLLLLLLLLLLLLLLDFFLLLLLLLLLLMLLLLLMLLGDENNNDDDLLFMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLMLLLLLLLMLLLLLFLFLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLMMM","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","has_mutations","into","last_division_t","new","to_owned","try_from","try_into","type_id","variants","vzip","with_mutations","CloneId","Distributions","Fitness","Fixed","GammaSampled","Neutral","SubClone","SubClones","Variants","acquire_p_mutation","assign_cell","assign_fit_mutations","bern","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","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"],[270,"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).","","","","","","","","","","","","","","","","","","","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).","the last time at which the cell has divided","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.","","","Assign cell to a subclone.","probability of fit mutations upon cell proliferation","","","","","","","","","","","","","","","","","","","","","","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).","","","","","","Returns all the newly initiated subclones by assigning all …","","","Determine which cells will proliferate by randomly …","","","returns None if more than one subclone is present else the …","","","","","","","","","","","","","","","","","","","","","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,47,47,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,0,0,0,43,43,43,0,0,0,35,41,0,35,48,35,43,41,34,48,35,43,41,34,41,35,43,41,34,35,43,41,34,34,35,34,41,35,43,41,34,48,35,43,41,34,34,0,41,34,41,34,34,34,34,34,43,41,34,34,34,34,34,41,48,35,43,41,34,41,41,35,35,41,34,34,41,0,41,0,34,35,43,41,34,48,35,43,41,34,48,35,43,41,34,48,35,43,41,34,35,48,48,48,35,43,41,34,41,34,49,50,50],"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,5],[-1,-2,[],[]],0,[[],12],[-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,[[35,-1],5,21],[[41,12],6],[[34,40,12,35,-1,13],6,21],0,[-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,[]],[[[20,[[6,[12,32]]]]],34],[-1,-1,[]],[[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,[[46,18,18,13],35],[[40,32],41],[[[20,[12]],32],34],[[],34],[41,4],[[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",270],[3,"Distributions",270],[3,"Proliferation",198],[3,"CurrentState",390],[4,"Division",198],[4,"NeutralMutations",198],[6,"CloneId",270],[3,"SubClone",270],[15,"u64"],[4,"Fitness",270],[3,"ReactionRates",390],[15,"array"],[15,"f64"],[13,"Subsampling",196],[3,"Variants",270],[13,"Fixed",379],[13,"GammaSampled",379]],"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,14],[[[11,[-1]]],12,39],[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-Debug-for-FormattedDuration"],[141,"impl-Display-for-FormattedDuration"],[142,"impl-Debug-for-HumanDuration"],[143,"impl-Display-for-HumanDuration"],[144,"impl-Display-for-HumanBytes"],[145,"impl-Debug-for-HumanBytes"],[146,"impl-Debug-for-DecimalBytes"],[147,"impl-Display-for-DecimalBytes"],[148,"impl-Display-for-BinaryBytes"],[149,"impl-Debug-for-BinaryBytes"],[150,"impl-Debug-for-HumanCount"],[151,"impl-Display-for-HumanCount"],[152,"impl-Display-for-HumanFloatCount"],[153,"impl-Debug-for-HumanFloatCount"],[223,"impl-IndexedParallelIterator-for-ProgressBarIter%3CT%3E"],[224,"impl-ExactSizeIterator-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/genotype.rs.html b/docs/src/hsc/genotype.rs.html index 594b7a062..d4cfb3b03 100644 --- a/docs/src/hsc/genotype.rs.html +++ b/docs/src/hsc/genotype.rs.html @@ -452,7 +452,7 @@ //! Compute the SFS from the stem cell population. if verbosity > 0 { println!("computing the SFS from {} cells", cells.len()); - if verbosity > 1 { + if verbosity > 2 { println!("computing the SFS from {:#?}", &cells); } } diff --git a/docs/src/hsc/lib.rs.html b/docs/src/hsc/lib.rs.html index 1de2f5b49..64a4b4001 100644 --- a/docs/src/hsc/lib.rs.html +++ b/docs/src/hsc/lib.rs.html @@ -87,6 +87,10 @@ 87 88 89 +90 +91 +92 +93
    //! Simulate the dynamics of a stem cell population undergoing proliferation
     //! and differentiation according to a Moran process (fixed population size).
     //!
    @@ -125,6 +129,10 @@
     /// increase here the number of clones.
     pub const MAX_SUBCLONES: usize = 1200;
     
    +/// The time at birth measured in years used for background mutations in the
    +/// exponential growing phase.
    +pub const TIME_AT_BIRTH: f32 = 9. / 12.;
    +
     pub fn write2file<T: std::fmt::Display>(
         data: &[T],
         path: &Path,
    diff --git a/docs/src/hsc/process.rs.html b/docs/src/hsc/process.rs.html
    index 59c198eae..575edc63a 100644
    --- a/docs/src/hsc/process.rs.html
    +++ b/docs/src/hsc/process.rs.html
    @@ -704,12 +704,11 @@
     704
     705
     706
    -707
     
    use crate::genotype::{MutationalBurden, Sfs};
    -use crate::proliferation::{MutateUponDivision, Proliferation};
    +use crate::proliferation::{NeutralMutations, Proliferation};
     use crate::stemcell::{assign_background_mutations, StemCell};
     use crate::subclone::{save_variant_fraction, CloneId, Distributions, SubClones, Variants};
    -use crate::MAX_SUBCLONES;
    +use crate::{MAX_SUBCLONES, TIME_AT_BIRTH};
     use anyhow::Context;
     use rand::Rng;
     use rand_distr::{Distribution, WeightedIndex};
    @@ -772,7 +771,7 @@
         pub counter_divisions: usize,
         pub verbosity: u8,
         pub distributions: Distributions,
    -    pub proliferation: MutateUponDivision,
    +    pub proliferation: Proliferation,
         pub time: f32,
     }
     
    @@ -780,7 +779,7 @@
         pub fn new(
             initial_subclones: SubClones,
             distributions: Distributions,
    -        proliferation: MutateUponDivision,
    +        proliferation: Proliferation,
             verbosity: u8,
         ) -> Exponential {
             let hsc = Exponential {
    @@ -798,7 +797,7 @@
         }
     
         pub fn switch_to_moran(
    -        self,
    +        mut self,
             process_options: ProcessOptions,
             distributions: Distributions,
             filename: PathBuf,
    @@ -806,13 +805,46 @@
             save_population: bool,
             rng: &mut impl Rng,
         ) -> Moran {
    -        if self.verbosity > 0 {
    +        //! End the exponential growing phase and switch to a fixed-size
    +        //! population phase.
    +        //!
    +        //! There is a delay between birth and the end of the exponential phase,
    +        //! since stem cells stop dividing exponentially before birth.
    +        //! We add background mutations in this interval of time between the
    +        //! end of the exponentially growing phase and the Moran process.
    +        if self.verbosity > 0 {
                 println!("switching to Moran at time {}", self.time);
             }
    +        if let NeutralMutations::UponDivisionAndBackground = self.proliferation.neutral_mutation {
    +            // this is important: we update all background mutations at this
    +            // time such that all cells are all on the same page.
    +            // Since background mutations are implemented at each division, and
    +            // cells do not proliferate at the same rate, we need to correct and
    +            // update the background mutations at the timepoint corresponding
    +            // to sampling step, i.e. before saving.
    +            //
    +            // Moreover there is delay between the end of the exp. growing phase
    +            // and birth, hence `time_at_birth - self.time`.
    +            if self.verbosity > 0 {
    +                println!("updating the neutral background mutations for all cells");
    +            }
    +            for stem_cell in self.subclones.get_mut_cells() {
    +                assign_background_mutations(
    +                    stem_cell,
    +                    TIME_AT_BIRTH - self.time,
    +                    &self.distributions.neutral_poisson,
    +                    rng,
    +                    self.verbosity,
    +                );
    +                // this is required as we are restarting the time
    +                stem_cell.last_division_t = 0f32;
    +            }
    +        }
             let mut moran = Moran {
                 subclones: self.subclones,
                 counter_divisions: self.counter_divisions,
    -            time: self.time,
    +            // restart the time
    +            time: 0.,
                 snapshots: process_options.snapshots,
                 path2dir: process_options.path,
                 verbosity: self.verbosity,
    @@ -822,33 +854,6 @@
                 save_population,
                 proliferation: self.proliferation,
             };
    -        match moran.proliferation {
    -            MutateUponDivision::DivisionAndBackgroundMutations(_) => {
    -                // this is important: we update all background mutations at this
    -                // time such that all cells are all on the same page.
    -                // Since background mutations are implemented at each division, and
    -                // cells do not proliferate at the same rate, we need to correct and
    -                // update the background mutations at the timepoint corresponding
    -                // to sampling step, i.e. before saving.
    -                if self.verbosity > 0 {
    -                    println!("updating the neutral background mutations for all cells");
    -                }
    -                for stem_cell in moran.subclones.get_mut_cells() {
    -                    assign_background_mutations(
    -                        stem_cell,
    -                        self.time,
    -                        &self.distributions.neutral_poisson,
    -                        rng,
    -                        self.verbosity,
    -                    );
    -                    // this is required as we are restarting the time
    -                    stem_cell.last_division_t = 0f32;
    -                }
    -            }
    -            MutateUponDivision::DivisionMutations(_) => {}
    -        }
    -        // restart the time
    -        moran.time = 0.;
             moran
                 .save(
                     moran.time,
    @@ -886,7 +891,7 @@
             // removes the cells from the clone with id `reaction.event`.**
             self.counter_divisions += 1;
             self.time += reaction.time;
    -        self.proliferation.duplicate_cell_assign_mutations(
    +        self.proliferation.proliferate(
                 &mut self.subclones,
                 self.time,
                 reaction.event,
    @@ -918,7 +923,7 @@
         pub filename: PathBuf,
         pub save_sfs_only: bool,
         pub save_population: bool,
    -    pub proliferation: MutateUponDivision,
    +    pub proliferation: Proliferation,
     }
     
     impl Default for Moran {
    @@ -938,7 +943,7 @@
                     save_population: true,
                 },
                 Distributions::default(),
    -            MutateUponDivision::default(),
    +            Proliferation::default(),
                 1,
             )
         }
    @@ -953,7 +958,7 @@
             time: f32,
             saving_options: SavingOptions,
             distributions: Distributions,
    -        proliferation: MutateUponDivision,
    +        proliferation: Proliferation,
             verbosity: u8,
         ) -> Moran {
             let hsc = Moran {
    @@ -1095,28 +1100,25 @@
             if self.verbosity > 0 {
                 println!("saving process at time {}", time);
             }
    -        match self.proliferation {
    -            MutateUponDivision::DivisionAndBackgroundMutations(_) => {
    -                // this is important: we update all background mutations at this
    -                // time such that all cells are all on the same page.
    -                // Since background mutations are implemented at each division, and
    -                // cells do not proliferate at the same rate, we need to correct and
    -                // update the background mutations at the timepoint corresponding
    -                // to sampling step, i.e. before saving.
    -                if self.verbosity > 0 {
    -                    println!("updating the neutral background mutations for all cells");
    -                }
    -                for stem_cell in self.subclones.get_mut_cells() {
    -                    assign_background_mutations(
    -                        stem_cell,
    -                        self.time,
    -                        &self.distributions.neutral_poisson,
    -                        rng,
    -                        self.verbosity,
    -                    );
    -                }
    +        if let NeutralMutations::UponDivisionAndBackground = self.proliferation.neutral_mutation {
    +            // this is important: we update all background mutations at this
    +            // time such that all cells are all on the same page.
    +            // Since background mutations are implemented at each division, and
    +            // cells do not proliferate at the same rate, we need to correct and
    +            // update the background mutations at the timepoint corresponding
    +            // to sampling step, i.e. before saving.
    +            if self.verbosity > 0 {
    +                println!("updating the neutral background mutations for all cells");
    +            }
    +            for stem_cell in self.subclones.get_mut_cells() {
    +                assign_background_mutations(
    +                    stem_cell,
    +                    self.time,
    +                    &self.distributions.neutral_poisson,
    +                    rng,
    +                    self.verbosity,
    +                );
                 }
    -            MutateUponDivision::DivisionMutations(_) => {}
             }
             let population = self.subclones.get_cells_with_clones_idx();
             if self.verbosity > 0 {
    @@ -1193,7 +1195,7 @@
             // id `reaction.event`.**
             self.time += reaction.time;
             self.counter_divisions += 1;
    -        self.proliferation.duplicate_cell_assign_mutations(
    +        self.proliferation.proliferate(
                 &mut self.subclones,
                 self.time,
                 reaction.event,
    @@ -1223,7 +1225,7 @@
         use rand::SeedableRng;
         use rand_chacha::ChaCha8Rng;
     
    -    use crate::{genotype, proliferation::DivisionAndBackgroundMutationsProliferation};
    +    use crate::genotype;
     
         use super::*;
     
    @@ -1269,9 +1271,7 @@
                     save_population: true,
                 },
                 Distributions::new(u, 10f32, 1f32, 0),
    -            MutateUponDivision::DivisionAndBackgroundMutations(
    -                DivisionAndBackgroundMutationsProliferation,
    -            ),
    +            Proliferation::default(),
                 0,
             )
         }
    @@ -1357,9 +1357,7 @@
             Exponential::new(
                 SubClones::new(vec![StemCell::new(); cells.get() as usize], 3),
                 Distributions::new(u, 10f32, 1f32, 0),
    -            MutateUponDivision::DivisionAndBackgroundMutations(
    -                DivisionAndBackgroundMutationsProliferation,
    -            ),
    +            Proliferation::default(),
                 0,
             )
         }
    diff --git a/docs/src/hsc/proliferation.rs.html b/docs/src/hsc/proliferation.rs.html
    index 2458bedf4..f1be9517f 100644
    --- a/docs/src/hsc/proliferation.rs.html
    +++ b/docs/src/hsc/proliferation.rs.html
    @@ -125,114 +125,29 @@
     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
    -
    use enum_dispatch::enum_dispatch;
    -use rand::Rng;
    +
    use rand::Rng;
    +use rand_distr::{Bernoulli, Distribution};
     
     use crate::{
    -    genotype::Variant,
    -    stemcell::{assign_background_mutations, mutate, StemCell},
    -    subclone::{assign, proliferating_cell, CloneId, Distributions, SubClones},
    +    stemcell::{assign_background_mutations, assign_divisional_mutations},
    +    subclone::{assign_fit_mutations, proliferating_cell, CloneId, Distributions, SubClones},
     };
     
    -fn assign_mutations(stem_cell: &mut StemCell, mutations: Option<Vec<Variant>>, verbosity: u8) {
    -    if let Some(mutations) = mutations {
    -        if verbosity > 2 {
    -            println!("assigning {:#?} to cell {:#?}", mutations, stem_cell);
    -        }
    -        mutate(stem_cell, mutations);
    -    } else if verbosity > 2 {
    -        println!("no mutations to assign to cell {:#?}", stem_cell);
    -    }
    +#[derive(Debug, Clone, Default)]
    +/// Stem cells can either self-renew by symmetric division or differentiate by
    +/// asymmetric division.
    +pub enum Division {
    +    /// A stem cell proliferates and gives rise to a differentiate cell (which
    +    /// we discard in our simulations)
    +    Asymmetric(Bernoulli),
    +    /// A stem cell proliferates and gives to a new stem cell with the same
    +    /// genetic material as the mother cell plus some additional mutations
    +    /// acquired upon division (fit divisions and neutral ones)
    +    #[default]
    +    Symmetric,
     }
     
    -fn proliferation(
    -    stem_cell: StemCell,
    -    subclones: &mut SubClones,
    -    proliferating_subclone: CloneId,
    -    distributions: &Distributions,
    -    rng: &mut impl Rng,
    -    verbosity: u8,
    -) {
    -    if verbosity > 1 {
    -        println!("cell {:#?} is dividing", stem_cell);
    -    }
    -
    -    let new_cell = stem_cell.clone();
    -    for mut cell in [new_cell, stem_cell] {
    -        let division = distributions.neutral_poisson.new_muts_upon_division(rng);
    -        if verbosity > 2 {
    -            println!(
    -                "assigning {} mutations upon cell division to cell {:#?}",
    -                division.as_ref().unwrap_or(&vec![]).len(),
    -                cell
    -            );
    -        }
    -        assign_mutations(&mut cell, division, verbosity);
    -        assign(
    -            subclones,
    -            proliferating_subclone,
    -            cell,
    -            distributions,
    -            rng,
    -            verbosity,
    -        );
    -    }
    -}
    -
    -#[derive(Clone, Debug)]
    -/// Simulate fit mutations, neutral background mutations and neutral mutations
    -/// upon division.
    -pub struct DivisionAndBackgroundMutationsProliferation;
    -
    -#[derive(Clone, Debug)]
    -/// Do not simulate neutral background mutations but only neutral mutations
    -/// and fit mutations upon division
    -pub struct DivisionMutationsProliferation;
    -
    -#[enum_dispatch]
    +#[derive(Clone, Debug, Default)]
     /// All the updates and changes in the system upon proliferation.
     ///
     /// The proliferation step is implemented as following:
    @@ -251,64 +166,21 @@
     /// old clone which `c` belonged to.
     ///
     /// 5. clone the proliferating cell `c` into `c1` and repeat step 3, 4
    -/// with `c1`.
    -pub trait Proliferation {
    -    fn duplicate_cell_assign_mutations(
    -        &self,
    -        subclones: &mut SubClones,
    -        time: f32,
    -        proliferating_subclone: CloneId,
    -        distributions: &Distributions,
    -        rng: &mut impl Rng,
    -        verbosity: u8,
    -    );
    -}
    -
    -#[derive(Clone, Debug)]
    -#[enum_dispatch(Proliferation)]
    -/// Duplicate cells and deal with subclones.
    -/// Also specifies whether to simulate background neutral mutations or only
    -/// mutations upon divisions, see [`Proliferation`].
    -pub enum MutateUponDivision {
    -    DivisionAndBackgroundMutations(DivisionAndBackgroundMutationsProliferation),
    -    DivisionMutations(DivisionMutationsProliferation),
    -}
    -
    -impl Default for MutateUponDivision {
    -    fn default() -> Self {
    -        MutateUponDivision::DivisionAndBackgroundMutations(
    -            DivisionAndBackgroundMutationsProliferation,
    -        )
    -    }
    +/// with `c1` only if we simulated a symmetric division, see [`Division`].
    +pub struct Proliferation {
    +    pub neutral_mutation: NeutralMutations,
    +    pub division: Division,
     }
     
    -impl Proliferation for DivisionMutationsProliferation {
    -    fn duplicate_cell_assign_mutations(
    -        &self,
    -        subclones: &mut SubClones,
    -        time: f32,
    -        proliferating_subclone: CloneId,
    -        distributions: &Distributions,
    -        rng: &mut impl Rng,
    -        verbosity: u8,
    -    ) {
    -        let stem_cell = proliferating_cell(subclones, proliferating_subclone, verbosity, rng);
    -        if verbosity > 1 {
    -            println!("proliferation at time {}", time);
    +impl Proliferation {
    +    pub fn new(neutral_mutation: NeutralMutations, division: Division) -> Self {
    +        Proliferation {
    +            neutral_mutation,
    +            division,
             }
    -        proliferation(
    -            stem_cell,
    -            subclones,
    -            proliferating_subclone,
    -            distributions,
    -            rng,
    -            verbosity,
    -        )
         }
    -}
     
    -impl Proliferation for DivisionAndBackgroundMutationsProliferation {
    -    fn duplicate_cell_assign_mutations(
    +    pub fn proliferate(
             &self,
             subclones: &mut SubClones,
             time: f32,
    @@ -320,22 +192,64 @@
             let mut stem_cell = proliferating_cell(subclones, proliferating_subclone, verbosity, rng);
             if verbosity > 1 {
                 println!("proliferation at time {}", time);
    +            println!(
    +                "cell with last division time {} is dividing",
    +                stem_cell.last_division_t
    +            );
    +            if verbosity > 2 {
    +                println!("cell {:#?} is dividing", stem_cell);
    +            }
    +        }
    +        if let NeutralMutations::UponDivisionAndBackground = self.neutral_mutation {
    +            assign_background_mutations(
    +                &mut stem_cell,
    +                time,
    +                &distributions.neutral_poisson,
    +                rng,
    +                verbosity,
    +            );
    +        }
    +        let cells = match self.division {
    +            Division::Asymmetric(p) => {
    +                // true means asymmetric
    +                if p.sample(rng) {
    +                    if verbosity > 1 {
    +                        println!("asymmetric division");
    +                    }
    +                    vec![stem_cell]
    +                } else {
    +                    vec![stem_cell.clone(), stem_cell]
    +                }
    +            }
    +            Division::Symmetric => vec![stem_cell.clone(), stem_cell],
    +        };
    +        for mut stem_cell in cells {
    +            assign_divisional_mutations(
    +                &mut stem_cell,
    +                &distributions.neutral_poisson,
    +                rng,
    +                verbosity,
    +            );
    +            assign_fit_mutations(
    +                subclones,
    +                proliferating_subclone,
    +                stem_cell,
    +                distributions,
    +                rng,
    +                verbosity,
    +            );
             }
    -        assign_background_mutations(
    -            &mut stem_cell,
    -            time,
    -            &distributions.neutral_poisson,
    -            rng,
    -            verbosity,
    -        );
    -        proliferation(
    -            stem_cell,
    -            subclones,
    -            proliferating_subclone,
    -            distributions,
    -            rng,
    -            verbosity,
    -        )
         }
     }
    +
    +#[derive(Clone, Debug, Default)]
    +/// Specifies the kind of neutral mutations to simulate.
    +pub enum NeutralMutations {
    +    /// Neutral mutations upon division due to errors in the DNA duplication
    +    UponDivision,
    +    /// Neutral mutations upon division and background mutations (mutations
    +    /// appearing during the lifetime of the cell)
    +    #[default]
    +    UponDivisionAndBackground,
    +}
     
    \ No newline at end of file diff --git a/docs/src/hsc/stemcell.rs.html b/docs/src/hsc/stemcell.rs.html index ddde488f8..3304cc267 100644 --- a/docs/src/hsc/stemcell.rs.html +++ b/docs/src/hsc/stemcell.rs.html @@ -121,6 +121,26 @@ 121 122 123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143
    use rand::Rng;
     
     use crate::genotype::{NeutralMutationPoisson, Variant};
    @@ -169,10 +189,27 @@
         }
     }
     
    -pub fn mutate(cell: &mut StemCell, mut mutations: Vec<Variant>) {
    +fn mutate(cell: &mut StemCell, mut mutations: Vec<Variant>) {
         cell.variants.append(&mut mutations);
     }
     
    +pub fn assign_divisional_mutations(
    +    stem_cell: &mut StemCell,
    +    neutral_poisson: &NeutralMutationPoisson,
    +    rng: &mut impl Rng,
    +    verbosity: u8,
    +) {
    +    let mutations = neutral_poisson.new_muts_upon_division(rng);
    +    if let Some(mutations) = mutations {
    +        if verbosity > 2 {
    +            println!("assigning {:#?} to cell {:#?}", mutations, stem_cell);
    +        }
    +        mutate(stem_cell, mutations);
    +    } else if verbosity > 2 {
    +        println!("no mutations to assign to cell {:#?}", stem_cell);
    +    }
    +}
    +
     pub fn assign_background_mutations(
         stem_cell: &mut StemCell,
         time: f32,
    @@ -184,7 +221,10 @@
         //! current simulation time.
         //!
         //! This updates also the time of the last division for the cell.
    -    let interdivison_time = time - stem_cell.last_division_t;
    +    if verbosity > 1 {
    +        println!("assigning background mutations");
    +    }
    +    let interdivison_time = time - stem_cell.last_division_t;
         // 2. draw background mutations and assign them to `c`
         if let Some(background) = neutral_poisson.new_muts_background(interdivison_time, rng, verbosity)
         {
    diff --git a/docs/src/hsc/subclone.rs.html b/docs/src/hsc/subclone.rs.html
    index 75f9a4fa9..75f395f1a 100644
    --- a/docs/src/hsc/subclone.rs.html
    +++ b/docs/src/hsc/subclone.rs.html
    @@ -719,7 +719,7 @@
         }
     }
     
    -pub fn assign(
    +pub fn assign_fit_mutations(
         subclones: &mut SubClones,
         old_subclone_id: CloneId,
         cell: StemCell,
    @@ -1065,7 +1065,7 @@
             let cell2assign = StemCell::new();
             let mut subclones = SubClones::new(cells, cells_present as usize + 1);
     
    -        assign(&mut subclones, 0, cell2assign, &distr, &mut rng, 0);
    +        assign_fit_mutations(&mut subclones, 0, cell2assign, &distr, &mut rng, 0);
             subclones.0[0].cell_count() as usize == before_assignment + 1
         }
     
    @@ -1079,7 +1079,7 @@
             let cell2assign = StemCell::new();
             let mut subclones = SubClones::new(cells, cells_present as usize + 1);
     
    -        assign(&mut subclones, 0, cell2assign, &distr, &mut rng, 0);
    +        assign_fit_mutations(&mut subclones, 0, cell2assign, &distr, &mut rng, 0);
             subclones.0[0].cell_count() as usize == before_assignment
         }
     
    @@ -1092,7 +1092,7 @@
             let mut subclones = SubClones::default();
             let cell = StemCell::new();
     
    -        assign(&mut subclones, 0, cell, &distr, &mut rng, 0);
    +        assign_fit_mutations(&mut subclones, 0, cell, &distr, &mut rng, 0);
         }
     
         #[should_panic]
    diff --git a/docs/trait.impl/core/clone/trait.Clone.js b/docs/trait.impl/core/clone/trait.Clone.js
    index fd9a8eea7..56e74181b 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 Distributions"],["impl Clone for CellDivisionProbabilities"],["impl Clone for Fitness"],["impl Clone for Moran"],["impl Clone for Snapshot"],["impl Clone for SubClone"],["impl Clone for MutateUponDivision"],["impl Clone for DivisionAndBackgroundMutationsProliferation"],["impl Clone for DivisionMutationsProliferation"],["impl Clone for StemCell"],["impl Clone for NeutralMutationPoisson"],["impl Clone for SubClones"],["impl Clone for SavingOptions"],["impl Clone for SavingCells"],["impl Clone for ProcessOptions"],["impl Clone for Exponential"]],
    +"hsc":[["impl Clone for NeutralMutationPoisson"],["impl Clone for Moran"],["impl Clone for CellDivisionProbabilities"],["impl Clone for NeutralMutations"],["impl Clone for Snapshot"],["impl Clone for Distributions"],["impl Clone for Proliferation"],["impl Clone for SubClone"],["impl Clone for SubClones"],["impl Clone for Fitness"],["impl Clone for Exponential"],["impl Clone for SavingCells"],["impl Clone for ProcessOptions"],["impl Clone for StemCell"],["impl Clone for SavingOptions"],["impl Clone for Division"]],
     "indicatif":[["impl Clone for Box<dyn ProgressTracker>"],["impl Clone for MultiProgressAlignment"],["impl Clone for MultiProgress"],["impl Clone for ProgressFinish"],["impl Clone for ProgressStyle"],["impl Clone for WeakProgressBar"],["impl Clone for ProgressBar"]],
     "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/convert/trait.From.js b/docs/trait.impl/core/convert/trait.From.js
    index 1b8ea301d..a021618eb 100644
    --- a/docs/trait.impl/core/convert/trait.From.js
    +++ b/docs/trait.impl/core/convert/trait.From.js
    @@ -8,7 +8,7 @@
     "crossbeam_utils":[["impl<T> From<T> for CachePadded<T>"],["impl<T> From<T> for AtomicCell<T>"],["impl<T> From<T> for ShardedLock<T>"]],
     "either":[["impl<L, R> From<Result<R, L>> for Either<L, R>"]],
     "getrandom":[["impl From<NonZeroU32> for Error"],["impl From<Error> for Error"]],
    -"hsc":[["impl From<Vec<(StemCell, usize)>> for SubClones"],["impl From<DivisionAndBackgroundMutationsProliferation> for MutateUponDivision"],["impl From<DivisionMutationsProliferation> for MutateUponDivision"]],
    +"hsc":[["impl From<Vec<(StemCell, usize)>> for SubClones"]],
     "iana_time_zone":[["impl From<Error> for GetTimezoneError"]],
     "once_cell":[["impl<T> From<T> for OnceCell<T>"],["impl<T> From<T> for OnceCell<T>"]],
     "portable_atomic":[["impl From<u64> for AtomicU64"],["impl From<u32> for AtomicU32"],["impl From<bool> for AtomicBool"],["impl<T> From<*mut T> for AtomicPtr<T>"],["impl From<i16> for AtomicI16"],["impl From<i32> for AtomicI32"],["impl From<i8> for AtomicI8"],["impl From<u8> for AtomicU8"],["impl From<i64> for AtomicI64"],["impl From<usize> for AtomicUsize"],["impl From<u16> for AtomicU16"],["impl From<i128> for AtomicI128"],["impl From<isize> for AtomicIsize"],["impl From<u128> for AtomicU128"]],
    diff --git a/docs/trait.impl/core/convert/trait.TryInto.js b/docs/trait.impl/core/convert/trait.TryInto.js
    index 1b21e3175..bdd3c541f 100644
    --- a/docs/trait.impl/core/convert/trait.TryInto.js
    +++ b/docs/trait.impl/core/convert/trait.TryInto.js
    @@ -1,3 +1,3 @@
     (function() {var implementors = {
    -"hsc":[["impl TryInto<DivisionAndBackgroundMutationsProliferation> for MutateUponDivision"],["impl TryInto<DivisionMutationsProliferation> for MutateUponDivision"]]
    +"hsc":[["impl TryInto<UponDivision> for NeutralMutations"],["impl TryInto<UponDivisionAndBackground> for NeutralMutations"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/docs/trait.impl/core/default/trait.Default.js b/docs/trait.impl/core/default/trait.Default.js
    index becbefba4..af3b71856 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 NeutralMutationPoisson"],["impl Default for StemCell"],["impl Default for MutateUponDivision"],["impl Default for Moran"],["impl Default for Distributions"],["impl Default for SubClones"]],
    +"hsc":[["impl Default for NeutralMutationPoisson"],["impl Default for Proliferation"],["impl Default for Distributions"],["impl Default for Division"],["impl Default for Moran"],["impl Default for SubClones"],["impl Default for NeutralMutations"],["impl Default for StemCell"]],
     "indicatif":[["impl Default for WeakProgressBar"],["impl Default for MultiProgressAlignment"],["impl Default for ProgressFinish"],["impl Default for MultiProgress"]],
     "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 16929aab6..588b1c843 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 Moran"],["impl Debug for Exponential"],["impl Debug for Snapshot"],["impl Debug for Fitness"],["impl Debug for MutateUponDivision"],["impl Debug for Distributions"],["impl Debug for ProcessOptions"],["impl Debug for CellDivisionProbabilities"],["impl Debug for DivisionMutationsProliferation"],["impl Debug for SavingCells"],["impl Debug for SavingOptions"],["impl Debug for NeutralMutationPoisson"],["impl Debug for DivisionAndBackgroundMutationsProliferation"],["impl Debug for SubClones"],["impl Debug for SubClone"],["impl Debug for StemCell"]],
    +"hsc":[["impl Debug for Moran"],["impl Debug for NeutralMutations"],["impl Debug for SavingCells"],["impl Debug for SavingOptions"],["impl Debug for Proliferation"],["impl Debug for SubClones"],["impl Debug for Exponential"],["impl Debug for SubClone"],["impl Debug for CellDivisionProbabilities"],["impl Debug for NeutralMutationPoisson"],["impl Debug for Division"],["impl Debug for Snapshot"],["impl Debug for ProcessOptions"],["impl Debug for StemCell"],["impl Debug for Fitness"],["impl Debug for Distributions"]],
     "iana_time_zone":[["impl Debug for GetTimezoneError"]],
     "indicatif":[["impl Debug for HumanBytes"],["impl Debug for FormattedDuration"],["impl Debug for ProgressDrawTarget"],["impl Debug for DecimalBytes"],["impl Debug for HumanFloatCount"],["impl Debug for MultiProgressAlignment"],["impl<T: Debug> Debug for ProgressBarIter<T>"],["impl Debug for MultiProgress"],["impl Debug for ProgressBar"],["impl Debug for ProgressFinish"],["impl Debug for HumanDuration"],["impl Debug for HumanCount"],["impl Debug for TemplateError"],["impl Debug for BinaryBytes"]],
     "num_traits":[["impl Debug for FloatErrorKind"],["impl Debug for ParseFloatError"]],
    diff --git a/docs/trait.impl/core/marker/trait.Freeze.js b/docs/trait.impl/core/marker/trait.Freeze.js
    index de777831f..ccf0c83f0 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 DivisionAndBackgroundMutationsProliferation",1,["hsc::proliferation::DivisionAndBackgroundMutationsProliferation"]],["impl Freeze for DivisionMutationsProliferation",1,["hsc::proliferation::DivisionMutationsProliferation"]],["impl Freeze for MutateUponDivision",1,["hsc::proliferation::MutateUponDivision"]],["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"]]],
     "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 e2edb14b2..a2512f007 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 DivisionAndBackgroundMutationsProliferation",1,["hsc::proliferation::DivisionAndBackgroundMutationsProliferation"]],["impl Send for DivisionMutationsProliferation",1,["hsc::proliferation::DivisionMutationsProliferation"]],["impl Send for MutateUponDivision",1,["hsc::proliferation::MutateUponDivision"]],["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"]]],
     "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 036a75987..7045d5151 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 DivisionAndBackgroundMutationsProliferation",1,["hsc::proliferation::DivisionAndBackgroundMutationsProliferation"]],["impl Sync for DivisionMutationsProliferation",1,["hsc::proliferation::DivisionMutationsProliferation"]],["impl Sync for MutateUponDivision",1,["hsc::proliferation::MutateUponDivision"]],["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"]]],
     "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 a3533ca52..5567607ce 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 DivisionAndBackgroundMutationsProliferation",1,["hsc::proliferation::DivisionAndBackgroundMutationsProliferation"]],["impl Unpin for DivisionMutationsProliferation",1,["hsc::proliferation::DivisionMutationsProliferation"]],["impl Unpin for MutateUponDivision",1,["hsc::proliferation::MutateUponDivision"]],["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"]]],
     "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 cc6501107..1f99d5716 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 DivisionAndBackgroundMutationsProliferation",1,["hsc::proliferation::DivisionAndBackgroundMutationsProliferation"]],["impl RefUnwindSafe for DivisionMutationsProliferation",1,["hsc::proliferation::DivisionMutationsProliferation"]],["impl RefUnwindSafe for MutateUponDivision",1,["hsc::proliferation::MutateUponDivision"]],["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"]]],
     "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 89ecde3fb..eee7a9a76 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 DivisionAndBackgroundMutationsProliferation",1,["hsc::proliferation::DivisionAndBackgroundMutationsProliferation"]],["impl UnwindSafe for DivisionMutationsProliferation",1,["hsc::proliferation::DivisionMutationsProliferation"]],["impl UnwindSafe for MutateUponDivision",1,["hsc::proliferation::MutateUponDivision"]],["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"]]],
     "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/type.impl/uuid/struct.Uuid.js b/docs/type.impl/uuid/struct.Uuid.js
    index ccb10fb7d..2271d47b7 100644
    --- a/docs/type.impl/uuid/struct.Uuid.js
    +++ b/docs/type.impl/uuid/struct.Uuid.js
    @@ -1,3 +1,3 @@
     (function() {var type_impls = {
    -"hsc":[["
    source§

    impl Uuid

    source

    pub const fn nil() -> Uuid

    The ‘nil UUID’ (all zeros).

    \n

    The nil UUID is a special form of UUID that is specified to have all\n128 bits set to zero.

    \n
    References
    \n\n
    Examples
    \n

    Basic usage:

    \n\n
    let uuid = Uuid::nil();\n\nassert_eq!(\n    "00000000-0000-0000-0000-000000000000",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn max() -> Uuid

    The ‘max UUID’ (all ones).

    \n

    The max UUID is a special form of UUID that is specified to have all\n128 bits set to one.

    \n
    References
    \n\n
    Examples
    \n

    Basic usage:

    \n\n
    let uuid = Uuid::max();\n\nassert_eq!(\n    "ffffffff-ffff-ffff-ffff-ffffffffffff",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_fields(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Uuid

    Creates a UUID from four field values.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let d1 = 0xa1a2a3a4;\nlet d2 = 0xb1b2;\nlet d3 = 0xc1c2;\nlet d4 = [0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8];\n\nlet uuid = Uuid::from_fields(d1, d2, d3, &d4);\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_fields_le(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Uuid

    Creates a UUID from four field values in little-endian order.

    \n

    The bytes in the d1, d2 and d3 fields will be flipped to convert\ninto big-endian order. This is based on the endianness of the UUID,\nrather than the target environment so bytes will be flipped on both\nbig and little endian machines.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let d1 = 0xa1a2a3a4;\nlet d2 = 0xb1b2;\nlet d3 = 0xc1c2;\nlet d4 = [0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8];\n\nlet uuid = Uuid::from_fields_le(d1, d2, d3, &d4);\n\nassert_eq!(\n    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_u128(v: u128) -> Uuid

    Creates a UUID from a 128bit value.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let v = 0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8u128;\n\nlet uuid = Uuid::from_u128(v);\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_u128_le(v: u128) -> Uuid

    Creates a UUID from a 128bit value in little-endian order.

    \n

    The entire value will be flipped to convert into big-endian order.\nThis is based on the endianness of the UUID, rather than the target\nenvironment so bytes will be flipped on both big and little endian\nmachines.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let v = 0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8u128;\n\nlet uuid = Uuid::from_u128_le(v);\n\nassert_eq!(\n    "d8d7d6d5-d4d3-d2d1-c2c1-b2b1a4a3a2a1",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_u64_pair(high_bits: u64, low_bits: u64) -> Uuid

    Creates a UUID from two 64bit values.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let hi = 0xa1a2a3a4b1b2c1c2u64;\nlet lo = 0xd1d2d3d4d5d6d7d8u64;\n\nlet uuid = Uuid::from_u64_pair(hi, lo);\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub fn from_slice(b: &[u8]) -> Result<Uuid, Error>

    Creates a UUID using the supplied bytes.

    \n
    Errors
    \n

    This function will return an error if b has any length other than 16.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_slice(&bytes)?;\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub fn from_slice_le(b: &[u8]) -> Result<Uuid, Error>

    Creates a UUID using the supplied bytes in little endian order.

    \n

    The individual fields encoded in the buffer will be flipped.

    \n
    Errors
    \n

    This function will return an error if b has any length other than 16.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_slice_le(&bytes)?;\n\nassert_eq!(\n    uuid.hyphenated().to_string(),\n    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8"\n);
    \n
    source

    pub const fn from_bytes(bytes: [u8; 16]) -> Uuid

    Creates a UUID using the supplied bytes.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_bytes(bytes);\n\nassert_eq!(\n    uuid.hyphenated().to_string(),\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"\n);
    \n
    source

    pub const fn from_bytes_le(b: [u8; 16]) -> Uuid

    Creates a UUID using the supplied bytes in little endian order.

    \n

    The individual fields encoded in the buffer will be flipped.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_bytes_le(bytes);\n\nassert_eq!(\n    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub fn from_bytes_ref(bytes: &[u8; 16]) -> &Uuid

    Creates a reference to a UUID from a reference to the supplied bytes.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_bytes_ref(&bytes);\n\nassert_eq!(\n    uuid.hyphenated().to_string(),\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"\n);\n\nassert!(std::ptr::eq(\n    uuid as *const Uuid as *const u8,\n    &bytes as *const [u8; 16] as *const u8,\n));
    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub fn parse_str(input: &str) -> Result<Uuid, Error>

    Parses a Uuid from a string of hexadecimal digits with optional\nhyphens.

    \n

    Any of the formats generated by this module (simple, hyphenated, urn,\nMicrosoft GUID) are supported by this parsing function.

    \n

    Prefer try_parse unless you need detailed user-facing diagnostics.\nThis method will be eventually deprecated in favor of try_parse.

    \n
    Examples
    \n

    Parse a hyphenated UUID:

    \n\n
    let uuid = Uuid::parse_str("550e8400-e29b-41d4-a716-446655440000")?;\n\nassert_eq!(Some(Version::Random), uuid.get_version());\nassert_eq!(Variant::RFC4122, uuid.get_variant());
    \n
    source

    pub const fn try_parse(input: &str) -> Result<Uuid, Error>

    Parses a Uuid from a string of hexadecimal digits with optional\nhyphens.

    \n

    This function is similar to parse_str, in fact parse_str shares\nthe same underlying parser. The difference is that if try_parse\nfails, it won’t generate very useful error messages. The parse_str\nfunction will eventually be deprecated in favor or try_parse.

    \n

    To parse a UUID from a byte stream instead of a UTF8 string, see\ntry_parse_ascii.

    \n
    Examples
    \n

    Parse a hyphenated UUID:

    \n\n
    let uuid = Uuid::try_parse("550e8400-e29b-41d4-a716-446655440000")?;\n\nassert_eq!(Some(Version::Random), uuid.get_version());\nassert_eq!(Variant::RFC4122, uuid.get_variant());
    \n
    source

    pub const fn try_parse_ascii(input: &[u8]) -> Result<Uuid, Error>

    Parses a Uuid from a string of hexadecimal digits with optional\nhyphens.

    \n

    The input is expected to be a string of ASCII characters. This method\ncan be more convenient than try_parse if the UUID is being\nparsed from a byte stream instead of from a UTF8 string.

    \n
    Examples
    \n

    Parse a hyphenated UUID:

    \n\n
    let uuid = Uuid::try_parse_ascii(b"550e8400-e29b-41d4-a716-446655440000")?;\n\nassert_eq!(Some(Version::Random), uuid.get_version());\nassert_eq!(Variant::RFC4122, uuid.get_variant());
    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub const fn hyphenated(self) -> Hyphenated

    Get a Hyphenated formatter.

    \n
    source

    pub fn as_hyphenated(&self) -> &Hyphenated

    Get a borrowed Hyphenated formatter.

    \n
    source

    pub const fn simple(self) -> Simple

    Get a Simple formatter.

    \n
    source

    pub fn as_simple(&self) -> &Simple

    Get a borrowed Simple formatter.

    \n
    source

    pub const fn urn(self) -> Urn

    Get a Urn formatter.

    \n
    source

    pub fn as_urn(&self) -> &Urn

    Get a borrowed Urn formatter.

    \n
    source

    pub const fn braced(self) -> Braced

    Get a Braced formatter.

    \n
    source

    pub fn as_braced(&self) -> &Braced

    Get a borrowed Braced formatter.

    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub fn new_v4() -> Uuid

    Creates a random UUID.

    \n

    This uses the getrandom crate to utilise the operating system’s RNG\nas the source of random numbers. If you’d like to use a custom\ngenerator, don’t use this method: generate random bytes using your\ncustom generator and pass them to the\nuuid::Builder::from_random_bytes function\ninstead.

    \n

    Note that usage of this method requires the v4 feature of this crate\nto be enabled.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let uuid = Uuid::new_v4();\n\nassert_eq!(Some(Version::Random), uuid.get_version());
    \n
    References
    \n\n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub const NAMESPACE_DNS: Uuid = _

    UUID namespace for Domain Name System (DNS).

    \n
    source

    pub const NAMESPACE_OID: Uuid = _

    UUID namespace for ISO Object Identifiers (OIDs).

    \n
    source

    pub const NAMESPACE_URL: Uuid = _

    UUID namespace for Uniform Resource Locators (URLs).

    \n
    source

    pub const NAMESPACE_X500: Uuid = _

    UUID namespace for X.500 Distinguished Names (DNs).

    \n
    source

    pub const fn get_variant(&self) -> Variant

    Returns the variant of the UUID structure.

    \n

    This determines the interpretation of the structure of the UUID.\nThis method simply reads the value of the variant byte. It doesn’t\nvalidate the rest of the UUID as conforming to that variant.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let my_uuid = Uuid::parse_str("02f09a3f-1624-3b1d-8409-44eff7708208")?;\n\nassert_eq!(Variant::RFC4122, my_uuid.get_variant());
    \n
    References
    \n\n
    source

    pub const fn get_version_num(&self) -> usize

    Returns the version number of the UUID.

    \n

    This represents the algorithm used to generate the value.\nThis method is the future-proof alternative to Uuid::get_version.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let my_uuid = Uuid::parse_str("02f09a3f-1624-3b1d-8409-44eff7708208")?;\n\nassert_eq!(3, my_uuid.get_version_num());
    \n
    References
    \n\n
    source

    pub const fn get_version(&self) -> Option<Version>

    Returns the version of the UUID.

    \n

    This represents the algorithm used to generate the value.\nIf the version field doesn’t contain a recognized version then None\nis returned. If you’re trying to read the version for a future extension\nyou can also use Uuid::get_version_num to unconditionally return a\nnumber. Future extensions may start to return Some once they’re\nstandardized and supported.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let my_uuid = Uuid::parse_str("02f09a3f-1624-3b1d-8409-44eff7708208")?;\n\nassert_eq!(Some(Version::Md5), my_uuid.get_version());
    \n
    References
    \n\n
    source

    pub fn as_fields(&self) -> (u32, u16, u16, &[u8; 8])

    Returns the four field values of the UUID.

    \n

    These values can be passed to the Uuid::from_fields method to get\nthe original Uuid back.

    \n
      \n
    • The first field value represents the first group of (eight) hex\ndigits, taken as a big-endian u32 value. For V1 UUIDs, this field\nrepresents the low 32 bits of the timestamp.
    • \n
    • The second field value represents the second group of (four) hex\ndigits, taken as a big-endian u16 value. For V1 UUIDs, this field\nrepresents the middle 16 bits of the timestamp.
    • \n
    • The third field value represents the third group of (four) hex digits,\ntaken as a big-endian u16 value. The 4 most significant bits give\nthe UUID version, and for V1 UUIDs, the last 12 bits represent the\nhigh 12 bits of the timestamp.
    • \n
    • The last field value represents the last two groups of four and twelve\nhex digits, taken in order. The first 1-3 bits of this indicate the\nUUID variant, and for V1 UUIDs, the next 13-15 bits indicate the clock\nsequence and the last 48 bits indicate the node ID.
    • \n
    \n
    Examples
    \n
    let uuid = Uuid::nil();\n\nassert_eq!(uuid.as_fields(), (0, 0, 0, &[0u8; 8]));\n\nlet uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.as_fields(),\n    (\n        0xa1a2a3a4,\n        0xb1b2,\n        0xc1c2,\n        &[0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8],\n    )\n);
    \n
    source

    pub fn to_fields_le(&self) -> (u32, u16, u16, &[u8; 8])

    Returns the four field values of the UUID in little-endian order.

    \n

    The bytes in the returned integer fields will be converted from\nbig-endian order. This is based on the endianness of the UUID,\nrather than the target environment so bytes will be flipped on both\nbig and little endian machines.

    \n
    Examples
    \n
    use uuid::Uuid;\n\nlet uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.to_fields_le(),\n    (\n        0xa4a3a2a1,\n        0xb2b1,\n        0xc2c1,\n        &[0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8],\n    )\n);
    \n
    source

    pub const fn as_u128(&self) -> u128

    Returns a 128bit value containing the value.

    \n

    The bytes in the UUID will be packed directly into a u128.

    \n
    Examples
    \n
    let uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.as_u128(),\n    0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8,\n);
    \n
    source

    pub const fn to_u128_le(&self) -> u128

    Returns a 128bit little-endian value containing the value.

    \n

    The bytes in the u128 will be flipped to convert into big-endian\norder. This is based on the endianness of the UUID, rather than the\ntarget environment so bytes will be flipped on both big and little\nendian machines.

    \n

    Note that this will produce a different result than\nUuid::to_fields_le, because the entire UUID is reversed, rather\nthan reversing the individual fields in-place.

    \n
    Examples
    \n
    let uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.to_u128_le(),\n    0xd8d7d6d5d4d3d2d1c2c1b2b1a4a3a2a1,\n);
    \n
    source

    pub const fn as_u64_pair(&self) -> (u64, u64)

    Returns two 64bit values containing the value.

    \n

    The bytes in the UUID will be split into two u64.\nThe first u64 represents the 64 most significant bits,\nthe second one represents the 64 least significant.

    \n
    Examples
    \n
    let uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\nassert_eq!(\n    uuid.as_u64_pair(),\n    (0xa1a2a3a4b1b2c1c2, 0xd1d2d3d4d5d6d7d8),\n);
    \n
    source

    pub const fn as_bytes(&self) -> &[u8; 16]

    Returns a slice of 16 octets containing the value.

    \n

    This method borrows the underlying byte value of the UUID.

    \n
    Examples
    \n
    let bytes1 = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\nlet uuid1 = Uuid::from_bytes_ref(&bytes1);\n\nlet bytes2 = uuid1.as_bytes();\nlet uuid2 = Uuid::from_bytes_ref(bytes2);\n\nassert_eq!(uuid1, uuid2);\n\nassert!(std::ptr::eq(\n    uuid2 as *const Uuid as *const u8,\n    &bytes1 as *const [u8; 16] as *const u8,\n));
    \n
    source

    pub const fn into_bytes(self) -> [u8; 16]

    Consumes self and returns the underlying byte value of the UUID.

    \n
    Examples
    \n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\nlet uuid = Uuid::from_bytes(bytes);\nassert_eq!(bytes, uuid.into_bytes());
    \n
    source

    pub const fn to_bytes_le(&self) -> [u8; 16]

    Returns the bytes of the UUID in little-endian order.

    \n

    The bytes will be flipped to convert into little-endian order. This is\nbased on the endianness of the UUID, rather than the target environment\nso bytes will be flipped on both big and little endian machines.

    \n
    Examples
    \n
    use uuid::Uuid;\n\nlet uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.to_bytes_le(),\n    ([\n        0xa4, 0xa3, 0xa2, 0xa1, 0xb2, 0xb1, 0xc2, 0xc1, 0xd1, 0xd2,\n        0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8\n    ])\n);
    \n
    source

    pub const fn is_nil(&self) -> bool

    Tests if the UUID is nil (all zeros).

    \n
    source

    pub const fn is_max(&self) -> bool

    Tests if the UUID is max (all ones).

    \n
    source

    pub const fn encode_buffer() -> [u8; 45]

    A buffer that can be used for encode_... calls, that is\nguaranteed to be long enough for any of the format adapters.

    \n
    Examples
    \n
    let uuid = Uuid::nil();\n\nassert_eq!(\n    uuid.simple().encode_lower(&mut Uuid::encode_buffer()),\n    "00000000000000000000000000000000"\n);\n\nassert_eq!(\n    uuid.hyphenated()\n        .encode_lower(&mut Uuid::encode_buffer()),\n    "00000000-0000-0000-0000-000000000000"\n);\n\nassert_eq!(\n    uuid.urn().encode_lower(&mut Uuid::encode_buffer()),\n    "urn:uuid:00000000-0000-0000-0000-000000000000"\n);
    \n
    source

    pub const fn get_timestamp(&self) -> Option<Timestamp>

    If the UUID is the correct version (v1, v6, or v7) this will return\nthe timestamp and counter portion parsed from a V1 UUID.

    \n

    Returns None if the supplied UUID is not V1.

    \n

    The V1 timestamp format defined in RFC4122 specifies a 60-bit\ninteger representing the number of 100-nanosecond intervals\nsince 00:00:00.00, 15 Oct 1582.

    \n

    Timestamp offers several options for converting the raw RFC4122\nvalue into more commonly-used formats, such as a unix timestamp.

    \n
    Roundtripping
    \n

    This method is unlikely to roundtrip a timestamp in a UUID due to the way\nUUIDs encode timestamps. The timestamp returned from this method will be truncated to\n100ns precision for version 1 and 6 UUIDs, and to millisecond precision for version 7 UUIDs.

    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl TryFrom<Vec<u8>> for Uuid

    §

    type Error = Error

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

    fn try_from(value: Vec<u8>) -> Result<Uuid, <Uuid as TryFrom<Vec<u8>>>::Error>

    Performs the conversion.
    ","TryFrom>","hsc::genotype::Variant"],["
    source§

    impl TryFrom<&str> for Uuid

    §

    type Error = Error

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

    fn try_from(uuid_str: &str) -> Result<Uuid, <Uuid as TryFrom<&str>>::Error>

    Performs the conversion.
    ","TryFrom<&str>","hsc::genotype::Variant"],["
    source§

    impl From<Simple> for Uuid

    source§

    fn from(f: Simple) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl From<Braced> for Uuid

    source§

    fn from(f: Braced) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl From<Urn> for Uuid

    source§

    fn from(f: Urn) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl From<Hyphenated> for Uuid

    source§

    fn from(f: Hyphenated) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl UpperHex for Uuid

    source§

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

    Formats the value using the given formatter.
    ","UpperHex","hsc::genotype::Variant"],["
    source§

    impl Copy for Uuid

    ","Copy","hsc::genotype::Variant"],["
    source§

    impl StructuralPartialEq for Uuid

    ","StructuralPartialEq","hsc::genotype::Variant"],["
    source§

    impl FromStr for Uuid

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(uuid_str: &str) -> Result<Uuid, <Uuid as FromStr>::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","hsc::genotype::Variant"],["
    source§

    impl PartialEq for Uuid

    source§

    fn eq(&self, other: &Uuid) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","hsc::genotype::Variant"],["
    source§

    impl Display for Uuid

    source§

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

    Formats the value using the given formatter. Read more
    ","Display","hsc::genotype::Variant"],["
    source§

    impl Ord for Uuid

    source§

    fn cmp(&self, other: &Uuid) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","hsc::genotype::Variant"],["
    source§

    impl Default for Uuid

    source§

    fn default() -> Uuid

    Returns the “default value” for a type. Read more
    ","Default","hsc::genotype::Variant"],["
    source§

    impl AsRef<[u8]> for Uuid

    source§

    fn as_ref(&self) -> &[u8]

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef<[u8]>","hsc::genotype::Variant"],["
    source§

    impl Eq for Uuid

    ","Eq","hsc::genotype::Variant"],["
    source§

    impl LowerHex for Uuid

    source§

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

    Formats the value using the given formatter.
    ","LowerHex","hsc::genotype::Variant"],["
    source§

    impl Debug for Uuid

    source§

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

    Formats the value using the given formatter. Read more
    ","Debug","hsc::genotype::Variant"],["
    source§

    impl PartialOrd for Uuid

    source§

    fn partial_cmp(&self, other: &Uuid) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","hsc::genotype::Variant"],["
    source§

    impl Clone for Uuid

    source§

    fn clone(&self) -> Uuid

    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
    ","Clone","hsc::genotype::Variant"],["
    source§

    impl StructuralEq for Uuid

    ","StructuralEq","hsc::genotype::Variant"],["
    source§

    impl Hash for Uuid

    source§

    fn hash<__H>(&self, state: &mut __H)where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","hsc::genotype::Variant"]] +"hsc":[["
    source§

    impl Uuid

    source

    pub const fn nil() -> Uuid

    The ‘nil UUID’ (all zeros).

    \n

    The nil UUID is a special form of UUID that is specified to have all\n128 bits set to zero.

    \n
    References
    \n\n
    Examples
    \n

    Basic usage:

    \n\n
    let uuid = Uuid::nil();\n\nassert_eq!(\n    "00000000-0000-0000-0000-000000000000",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn max() -> Uuid

    The ‘max UUID’ (all ones).

    \n

    The max UUID is a special form of UUID that is specified to have all\n128 bits set to one.

    \n
    References
    \n\n
    Examples
    \n

    Basic usage:

    \n\n
    let uuid = Uuid::max();\n\nassert_eq!(\n    "ffffffff-ffff-ffff-ffff-ffffffffffff",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_fields(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Uuid

    Creates a UUID from four field values.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let d1 = 0xa1a2a3a4;\nlet d2 = 0xb1b2;\nlet d3 = 0xc1c2;\nlet d4 = [0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8];\n\nlet uuid = Uuid::from_fields(d1, d2, d3, &d4);\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_fields_le(d1: u32, d2: u16, d3: u16, d4: &[u8; 8]) -> Uuid

    Creates a UUID from four field values in little-endian order.

    \n

    The bytes in the d1, d2 and d3 fields will be flipped to convert\ninto big-endian order. This is based on the endianness of the UUID,\nrather than the target environment so bytes will be flipped on both\nbig and little endian machines.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let d1 = 0xa1a2a3a4;\nlet d2 = 0xb1b2;\nlet d3 = 0xc1c2;\nlet d4 = [0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8];\n\nlet uuid = Uuid::from_fields_le(d1, d2, d3, &d4);\n\nassert_eq!(\n    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_u128(v: u128) -> Uuid

    Creates a UUID from a 128bit value.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let v = 0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8u128;\n\nlet uuid = Uuid::from_u128(v);\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_u128_le(v: u128) -> Uuid

    Creates a UUID from a 128bit value in little-endian order.

    \n

    The entire value will be flipped to convert into big-endian order.\nThis is based on the endianness of the UUID, rather than the target\nenvironment so bytes will be flipped on both big and little endian\nmachines.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let v = 0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8u128;\n\nlet uuid = Uuid::from_u128_le(v);\n\nassert_eq!(\n    "d8d7d6d5-d4d3-d2d1-c2c1-b2b1a4a3a2a1",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub const fn from_u64_pair(high_bits: u64, low_bits: u64) -> Uuid

    Creates a UUID from two 64bit values.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let hi = 0xa1a2a3a4b1b2c1c2u64;\nlet lo = 0xd1d2d3d4d5d6d7d8u64;\n\nlet uuid = Uuid::from_u64_pair(hi, lo);\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub fn from_slice(b: &[u8]) -> Result<Uuid, Error>

    Creates a UUID using the supplied bytes.

    \n
    Errors
    \n

    This function will return an error if b has any length other than 16.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_slice(&bytes)?;\n\nassert_eq!(\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub fn from_slice_le(b: &[u8]) -> Result<Uuid, Error>

    Creates a UUID using the supplied bytes in little endian order.

    \n

    The individual fields encoded in the buffer will be flipped.

    \n
    Errors
    \n

    This function will return an error if b has any length other than 16.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_slice_le(&bytes)?;\n\nassert_eq!(\n    uuid.hyphenated().to_string(),\n    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8"\n);
    \n
    source

    pub const fn from_bytes(bytes: [u8; 16]) -> Uuid

    Creates a UUID using the supplied bytes.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_bytes(bytes);\n\nassert_eq!(\n    uuid.hyphenated().to_string(),\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"\n);
    \n
    source

    pub const fn from_bytes_le(b: [u8; 16]) -> Uuid

    Creates a UUID using the supplied bytes in little endian order.

    \n

    The individual fields encoded in the buffer will be flipped.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_bytes_le(bytes);\n\nassert_eq!(\n    "a4a3a2a1-b2b1-c2c1-d1d2-d3d4d5d6d7d8",\n    uuid.hyphenated().to_string(),\n);
    \n
    source

    pub fn from_bytes_ref(bytes: &[u8; 16]) -> &Uuid

    Creates a reference to a UUID from a reference to the supplied bytes.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\n\nlet uuid = Uuid::from_bytes_ref(&bytes);\n\nassert_eq!(\n    uuid.hyphenated().to_string(),\n    "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"\n);\n\nassert!(std::ptr::eq(\n    uuid as *const Uuid as *const u8,\n    &bytes as *const [u8; 16] as *const u8,\n));
    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub fn parse_str(input: &str) -> Result<Uuid, Error>

    Parses a Uuid from a string of hexadecimal digits with optional\nhyphens.

    \n

    Any of the formats generated by this module (simple, hyphenated, urn,\nMicrosoft GUID) are supported by this parsing function.

    \n

    Prefer try_parse unless you need detailed user-facing diagnostics.\nThis method will be eventually deprecated in favor of try_parse.

    \n
    Examples
    \n

    Parse a hyphenated UUID:

    \n\n
    let uuid = Uuid::parse_str("550e8400-e29b-41d4-a716-446655440000")?;\n\nassert_eq!(Some(Version::Random), uuid.get_version());\nassert_eq!(Variant::RFC4122, uuid.get_variant());
    \n
    source

    pub const fn try_parse(input: &str) -> Result<Uuid, Error>

    Parses a Uuid from a string of hexadecimal digits with optional\nhyphens.

    \n

    This function is similar to parse_str, in fact parse_str shares\nthe same underlying parser. The difference is that if try_parse\nfails, it won’t generate very useful error messages. The parse_str\nfunction will eventually be deprecated in favor or try_parse.

    \n

    To parse a UUID from a byte stream instead of a UTF8 string, see\ntry_parse_ascii.

    \n
    Examples
    \n

    Parse a hyphenated UUID:

    \n\n
    let uuid = Uuid::try_parse("550e8400-e29b-41d4-a716-446655440000")?;\n\nassert_eq!(Some(Version::Random), uuid.get_version());\nassert_eq!(Variant::RFC4122, uuid.get_variant());
    \n
    source

    pub const fn try_parse_ascii(input: &[u8]) -> Result<Uuid, Error>

    Parses a Uuid from a string of hexadecimal digits with optional\nhyphens.

    \n

    The input is expected to be a string of ASCII characters. This method\ncan be more convenient than try_parse if the UUID is being\nparsed from a byte stream instead of from a UTF8 string.

    \n
    Examples
    \n

    Parse a hyphenated UUID:

    \n\n
    let uuid = Uuid::try_parse_ascii(b"550e8400-e29b-41d4-a716-446655440000")?;\n\nassert_eq!(Some(Version::Random), uuid.get_version());\nassert_eq!(Variant::RFC4122, uuid.get_variant());
    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub const fn hyphenated(self) -> Hyphenated

    Get a Hyphenated formatter.

    \n
    source

    pub fn as_hyphenated(&self) -> &Hyphenated

    Get a borrowed Hyphenated formatter.

    \n
    source

    pub const fn simple(self) -> Simple

    Get a Simple formatter.

    \n
    source

    pub fn as_simple(&self) -> &Simple

    Get a borrowed Simple formatter.

    \n
    source

    pub const fn urn(self) -> Urn

    Get a Urn formatter.

    \n
    source

    pub fn as_urn(&self) -> &Urn

    Get a borrowed Urn formatter.

    \n
    source

    pub const fn braced(self) -> Braced

    Get a Braced formatter.

    \n
    source

    pub fn as_braced(&self) -> &Braced

    Get a borrowed Braced formatter.

    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub fn new_v4() -> Uuid

    Creates a random UUID.

    \n

    This uses the getrandom crate to utilise the operating system’s RNG\nas the source of random numbers. If you’d like to use a custom\ngenerator, don’t use this method: generate random bytes using your\ncustom generator and pass them to the\nuuid::Builder::from_random_bytes function\ninstead.

    \n

    Note that usage of this method requires the v4 feature of this crate\nto be enabled.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let uuid = Uuid::new_v4();\n\nassert_eq!(Some(Version::Random), uuid.get_version());
    \n
    References
    \n\n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl Uuid

    source

    pub const NAMESPACE_DNS: Uuid = _

    UUID namespace for Domain Name System (DNS).

    \n
    source

    pub const NAMESPACE_OID: Uuid = _

    UUID namespace for ISO Object Identifiers (OIDs).

    \n
    source

    pub const NAMESPACE_URL: Uuid = _

    UUID namespace for Uniform Resource Locators (URLs).

    \n
    source

    pub const NAMESPACE_X500: Uuid = _

    UUID namespace for X.500 Distinguished Names (DNs).

    \n
    source

    pub const fn get_variant(&self) -> Variant

    Returns the variant of the UUID structure.

    \n

    This determines the interpretation of the structure of the UUID.\nThis method simply reads the value of the variant byte. It doesn’t\nvalidate the rest of the UUID as conforming to that variant.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let my_uuid = Uuid::parse_str("02f09a3f-1624-3b1d-8409-44eff7708208")?;\n\nassert_eq!(Variant::RFC4122, my_uuid.get_variant());
    \n
    References
    \n\n
    source

    pub const fn get_version_num(&self) -> usize

    Returns the version number of the UUID.

    \n

    This represents the algorithm used to generate the value.\nThis method is the future-proof alternative to Uuid::get_version.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let my_uuid = Uuid::parse_str("02f09a3f-1624-3b1d-8409-44eff7708208")?;\n\nassert_eq!(3, my_uuid.get_version_num());
    \n
    References
    \n\n
    source

    pub const fn get_version(&self) -> Option<Version>

    Returns the version of the UUID.

    \n

    This represents the algorithm used to generate the value.\nIf the version field doesn’t contain a recognized version then None\nis returned. If you’re trying to read the version for a future extension\nyou can also use Uuid::get_version_num to unconditionally return a\nnumber. Future extensions may start to return Some once they’re\nstandardized and supported.

    \n
    Examples
    \n

    Basic usage:

    \n\n
    let my_uuid = Uuid::parse_str("02f09a3f-1624-3b1d-8409-44eff7708208")?;\n\nassert_eq!(Some(Version::Md5), my_uuid.get_version());
    \n
    References
    \n\n
    source

    pub fn as_fields(&self) -> (u32, u16, u16, &[u8; 8])

    Returns the four field values of the UUID.

    \n

    These values can be passed to the Uuid::from_fields method to get\nthe original Uuid back.

    \n
      \n
    • The first field value represents the first group of (eight) hex\ndigits, taken as a big-endian u32 value. For V1 UUIDs, this field\nrepresents the low 32 bits of the timestamp.
    • \n
    • The second field value represents the second group of (four) hex\ndigits, taken as a big-endian u16 value. For V1 UUIDs, this field\nrepresents the middle 16 bits of the timestamp.
    • \n
    • The third field value represents the third group of (four) hex digits,\ntaken as a big-endian u16 value. The 4 most significant bits give\nthe UUID version, and for V1 UUIDs, the last 12 bits represent the\nhigh 12 bits of the timestamp.
    • \n
    • The last field value represents the last two groups of four and twelve\nhex digits, taken in order. The first 1-3 bits of this indicate the\nUUID variant, and for V1 UUIDs, the next 13-15 bits indicate the clock\nsequence and the last 48 bits indicate the node ID.
    • \n
    \n
    Examples
    \n
    let uuid = Uuid::nil();\n\nassert_eq!(uuid.as_fields(), (0, 0, 0, &[0u8; 8]));\n\nlet uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.as_fields(),\n    (\n        0xa1a2a3a4,\n        0xb1b2,\n        0xc1c2,\n        &[0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8],\n    )\n);
    \n
    source

    pub fn to_fields_le(&self) -> (u32, u16, u16, &[u8; 8])

    Returns the four field values of the UUID in little-endian order.

    \n

    The bytes in the returned integer fields will be converted from\nbig-endian order. This is based on the endianness of the UUID,\nrather than the target environment so bytes will be flipped on both\nbig and little endian machines.

    \n
    Examples
    \n
    use uuid::Uuid;\n\nlet uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.to_fields_le(),\n    (\n        0xa4a3a2a1,\n        0xb2b1,\n        0xc2c1,\n        &[0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8],\n    )\n);
    \n
    source

    pub const fn as_u128(&self) -> u128

    Returns a 128bit value containing the value.

    \n

    The bytes in the UUID will be packed directly into a u128.

    \n
    Examples
    \n
    let uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.as_u128(),\n    0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8,\n);
    \n
    source

    pub const fn to_u128_le(&self) -> u128

    Returns a 128bit little-endian value containing the value.

    \n

    The bytes in the u128 will be flipped to convert into big-endian\norder. This is based on the endianness of the UUID, rather than the\ntarget environment so bytes will be flipped on both big and little\nendian machines.

    \n

    Note that this will produce a different result than\nUuid::to_fields_le, because the entire UUID is reversed, rather\nthan reversing the individual fields in-place.

    \n
    Examples
    \n
    let uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.to_u128_le(),\n    0xd8d7d6d5d4d3d2d1c2c1b2b1a4a3a2a1,\n);
    \n
    source

    pub const fn as_u64_pair(&self) -> (u64, u64)

    Returns two 64bit values containing the value.

    \n

    The bytes in the UUID will be split into two u64.\nThe first u64 represents the 64 most significant bits,\nthe second one represents the 64 least significant.

    \n
    Examples
    \n
    let uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\nassert_eq!(\n    uuid.as_u64_pair(),\n    (0xa1a2a3a4b1b2c1c2, 0xd1d2d3d4d5d6d7d8),\n);
    \n
    source

    pub const fn as_bytes(&self) -> &[u8; 16]

    Returns a slice of 16 octets containing the value.

    \n

    This method borrows the underlying byte value of the UUID.

    \n
    Examples
    \n
    let bytes1 = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\nlet uuid1 = Uuid::from_bytes_ref(&bytes1);\n\nlet bytes2 = uuid1.as_bytes();\nlet uuid2 = Uuid::from_bytes_ref(bytes2);\n\nassert_eq!(uuid1, uuid2);\n\nassert!(std::ptr::eq(\n    uuid2 as *const Uuid as *const u8,\n    &bytes1 as *const [u8; 16] as *const u8,\n));
    \n
    source

    pub const fn into_bytes(self) -> [u8; 16]

    Consumes self and returns the underlying byte value of the UUID.

    \n
    Examples
    \n
    let bytes = [\n    0xa1, 0xa2, 0xa3, 0xa4,\n    0xb1, 0xb2,\n    0xc1, 0xc2,\n    0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,\n];\nlet uuid = Uuid::from_bytes(bytes);\nassert_eq!(bytes, uuid.into_bytes());
    \n
    source

    pub const fn to_bytes_le(&self) -> [u8; 16]

    Returns the bytes of the UUID in little-endian order.

    \n

    The bytes will be flipped to convert into little-endian order. This is\nbased on the endianness of the UUID, rather than the target environment\nso bytes will be flipped on both big and little endian machines.

    \n
    Examples
    \n
    use uuid::Uuid;\n\nlet uuid = Uuid::parse_str("a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8")?;\n\nassert_eq!(\n    uuid.to_bytes_le(),\n    ([\n        0xa4, 0xa3, 0xa2, 0xa1, 0xb2, 0xb1, 0xc2, 0xc1, 0xd1, 0xd2,\n        0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8\n    ])\n);
    \n
    source

    pub const fn is_nil(&self) -> bool

    Tests if the UUID is nil (all zeros).

    \n
    source

    pub const fn is_max(&self) -> bool

    Tests if the UUID is max (all ones).

    \n
    source

    pub const fn encode_buffer() -> [u8; 45]

    A buffer that can be used for encode_... calls, that is\nguaranteed to be long enough for any of the format adapters.

    \n
    Examples
    \n
    let uuid = Uuid::nil();\n\nassert_eq!(\n    uuid.simple().encode_lower(&mut Uuid::encode_buffer()),\n    "00000000000000000000000000000000"\n);\n\nassert_eq!(\n    uuid.hyphenated()\n        .encode_lower(&mut Uuid::encode_buffer()),\n    "00000000-0000-0000-0000-000000000000"\n);\n\nassert_eq!(\n    uuid.urn().encode_lower(&mut Uuid::encode_buffer()),\n    "urn:uuid:00000000-0000-0000-0000-000000000000"\n);
    \n
    source

    pub const fn get_timestamp(&self) -> Option<Timestamp>

    If the UUID is the correct version (v1, v6, or v7) this will return\nthe timestamp and counter portion parsed from a V1 UUID.

    \n

    Returns None if the supplied UUID is not V1.

    \n

    The V1 timestamp format defined in RFC4122 specifies a 60-bit\ninteger representing the number of 100-nanosecond intervals\nsince 00:00:00.00, 15 Oct 1582.

    \n

    Timestamp offers several options for converting the raw RFC4122\nvalue into more commonly-used formats, such as a unix timestamp.

    \n
    Roundtripping
    \n

    This method is unlikely to roundtrip a timestamp in a UUID due to the way\nUUIDs encode timestamps. The timestamp returned from this method will be truncated to\n100ns precision for version 1 and 6 UUIDs, and to millisecond precision for version 7 UUIDs.

    \n
    ",0,"hsc::genotype::Variant"],["
    source§

    impl TryFrom<Vec<u8>> for Uuid

    §

    type Error = Error

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

    fn try_from(value: Vec<u8>) -> Result<Uuid, <Uuid as TryFrom<Vec<u8>>>::Error>

    Performs the conversion.
    ","TryFrom>","hsc::genotype::Variant"],["
    source§

    impl TryFrom<&str> for Uuid

    §

    type Error = Error

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

    fn try_from(uuid_str: &str) -> Result<Uuid, <Uuid as TryFrom<&str>>::Error>

    Performs the conversion.
    ","TryFrom<&str>","hsc::genotype::Variant"],["
    source§

    impl From<Simple> for Uuid

    source§

    fn from(f: Simple) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl From<Urn> for Uuid

    source§

    fn from(f: Urn) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl From<Braced> for Uuid

    source§

    fn from(f: Braced) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl From<Hyphenated> for Uuid

    source§

    fn from(f: Hyphenated) -> Uuid

    Converts to this type from the input type.
    ","From","hsc::genotype::Variant"],["
    source§

    impl UpperHex for Uuid

    source§

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

    Formats the value using the given formatter.
    ","UpperHex","hsc::genotype::Variant"],["
    source§

    impl Copy for Uuid

    ","Copy","hsc::genotype::Variant"],["
    source§

    impl StructuralPartialEq for Uuid

    ","StructuralPartialEq","hsc::genotype::Variant"],["
    source§

    impl FromStr for Uuid

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(uuid_str: &str) -> Result<Uuid, <Uuid as FromStr>::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","hsc::genotype::Variant"],["
    source§

    impl PartialEq for Uuid

    source§

    fn eq(&self, other: &Uuid) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","hsc::genotype::Variant"],["
    source§

    impl Display for Uuid

    source§

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

    Formats the value using the given formatter. Read more
    ","Display","hsc::genotype::Variant"],["
    source§

    impl Ord for Uuid

    source§

    fn cmp(&self, other: &Uuid) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","hsc::genotype::Variant"],["
    source§

    impl Default for Uuid

    source§

    fn default() -> Uuid

    Returns the “default value” for a type. Read more
    ","Default","hsc::genotype::Variant"],["
    source§

    impl AsRef<[u8]> for Uuid

    source§

    fn as_ref(&self) -> &[u8]

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef<[u8]>","hsc::genotype::Variant"],["
    source§

    impl Eq for Uuid

    ","Eq","hsc::genotype::Variant"],["
    source§

    impl LowerHex for Uuid

    source§

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

    Formats the value using the given formatter.
    ","LowerHex","hsc::genotype::Variant"],["
    source§

    impl Debug for Uuid

    source§

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

    Formats the value using the given formatter. Read more
    ","Debug","hsc::genotype::Variant"],["
    source§

    impl PartialOrd for Uuid

    source§

    fn partial_cmp(&self, other: &Uuid) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","hsc::genotype::Variant"],["
    source§

    impl Clone for Uuid

    source§

    fn clone(&self) -> Uuid

    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
    ","Clone","hsc::genotype::Variant"],["
    source§

    impl StructuralEq for Uuid

    ","StructuralEq","hsc::genotype::Variant"],["
    source§

    impl Hash for Uuid

    source§

    fn hash<__H>(&self, state: &mut __H)where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","hsc::genotype::Variant"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 914be0878..30aff8336 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,6 +36,10 @@ pub mod subclone; /// increase here the number of clones. pub const MAX_SUBCLONES: usize = 1200; +/// The time at birth measured in years used for background mutations in the +/// exponential growing phase. +pub const TIME_AT_BIRTH: f32 = 9. / 12.; + pub fn write2file( data: &[T], path: &Path, diff --git a/src/process.rs b/src/process.rs index 8f778168f..a46f240fe 100644 --- a/src/process.rs +++ b/src/process.rs @@ -2,7 +2,7 @@ use crate::genotype::{MutationalBurden, Sfs}; use crate::proliferation::{NeutralMutations, Proliferation}; use crate::stemcell::{assign_background_mutations, StemCell}; use crate::subclone::{save_variant_fraction, CloneId, Distributions, SubClones, Variants}; -use crate::MAX_SUBCLONES; +use crate::{MAX_SUBCLONES, TIME_AT_BIRTH}; use anyhow::Context; use rand::Rng; use rand_distr::{Distribution, WeightedIndex}; @@ -91,7 +91,7 @@ impl Exponential { } pub fn switch_to_moran( - self, + mut self, process_options: ProcessOptions, distributions: Distributions, filename: PathBuf, @@ -99,36 +99,33 @@ impl Exponential { save_population: bool, rng: &mut impl Rng, ) -> Moran { + //! End the exponential growing phase and switch to a fixed-size + //! population phase. + //! + //! There is a delay between birth and the end of the exponential phase, + //! since stem cells stop dividing exponentially before birth. + //! We add background mutations in this interval of time between the + //! end of the exponentially growing phase and the Moran process. if self.verbosity > 0 { println!("switching to Moran at time {}", self.time); } - let mut moran = Moran { - subclones: self.subclones, - counter_divisions: self.counter_divisions, - time: self.time, - snapshots: process_options.snapshots, - path2dir: process_options.path, - verbosity: self.verbosity, - filename, - distributions, - save_sfs_only, - save_population, - proliferation: self.proliferation, - }; - if let NeutralMutations::UponDivisionAndBackground = moran.proliferation.neutral_mutation { + if let NeutralMutations::UponDivisionAndBackground = self.proliferation.neutral_mutation { // this is important: we update all background mutations at this // time such that all cells are all on the same page. // Since background mutations are implemented at each division, and // cells do not proliferate at the same rate, we need to correct and // update the background mutations at the timepoint corresponding // to sampling step, i.e. before saving. + // + // Moreover there is delay between the end of the exp. growing phase + // and birth, hence `time_at_birth - self.time`. if self.verbosity > 0 { println!("updating the neutral background mutations for all cells"); } - for stem_cell in moran.subclones.get_mut_cells() { + for stem_cell in self.subclones.get_mut_cells() { assign_background_mutations( stem_cell, - self.time, + TIME_AT_BIRTH - self.time, &self.distributions.neutral_poisson, rng, self.verbosity, @@ -137,8 +134,20 @@ impl Exponential { stem_cell.last_division_t = 0f32; } } - // restart the time - moran.time = 0.; + let mut moran = Moran { + subclones: self.subclones, + counter_divisions: self.counter_divisions, + // restart the time + time: 0., + snapshots: process_options.snapshots, + path2dir: process_options.path, + verbosity: self.verbosity, + filename, + distributions, + save_sfs_only, + save_population, + proliferation: self.proliferation, + }; moran .save( moran.time,