diff --git a/Cargo.toml b/Cargo.toml index dca652a..6fea19e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,7 @@ forrustts = {version = "0.3.0-alpha.0", git = "https://github.com/ForwardSimulat rand = "0.8.5" rand_distr = "0.4.3" clap = { version = "4.2.1", features = ["derive"] } +rclite = "0.2.2" [dev-dependencies] proptest = "1.1.0" diff --git a/src/genome_dynamic_chunks.rs b/src/genome_dynamic_chunks.rs new file mode 100644 index 0000000..718213e --- /dev/null +++ b/src/genome_dynamic_chunks.rs @@ -0,0 +1,68 @@ +use forrustts::genetics::GenerateBreakpoints; +use forrustts::genetics::GeneticMap; +use forrustts::prelude::*; + +use crate::common::DiploidGenome; +use crate::common::Mutation; + +struct Chunk { + mutations: Vec, + num_mutations: usize, + count: u32, +} + +#[derive(Default, Clone)] +struct Genome { + chunks: Vec, +} + +pub struct DiploidPopulation { + chunk_length: usize, + chunks: Vec, + mutations: Vec, + mutation_counts: Vec, + individuals: Vec, + genomes: Vec, +} + +impl DiploidPopulation { + pub fn new(size: usize, chunk_length: usize) -> Self { + let genomes = vec![Genome::default(); 2 * size]; + let individuals = vec![ + DiploidGenome { + first: 0, + second: 0 + }; + size + ]; + + Self { + chunk_length, + genomes, + individuals, + mutations: vec![], + mutation_counts: vec![], + chunks: vec![], + } + } +} + +fn crossover( + genome1: usize, + genome2: usize, + mutations: &Vec, + crossover_position: Vec, + new_mutations: Vec, + genomes: &mut Vec, + chunks: &mut Vec, +) -> Genome { + let mut current_genome = genome1; + let mut current_genome_index = 0_usize; + let mut current_genome_index_position = 0_usize; + + let mut new_chunks = Vec::::default(); + + todo!("not done"); + + Genome { chunks: new_chunks } +} diff --git a/src/lib.rs b/src/lib.rs index d1867b8..d1c1d35 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ mod common; pub mod fwdpp_copy; pub mod genome_array; +pub mod genome_dynamic_chunks; // Public "API" for examples pub use common::SimParams;