Skip to content

Commit ceae66c

Browse files
committed
Write epistasis tables
1 parent 4090457 commit ceae66c

File tree

3 files changed

+57
-42
lines changed

3 files changed

+57
-42
lines changed

src/core/fitness/epistasis.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,3 +188,6 @@ impl EpistasisTable {
188188
fitness
189189
}
190190
}
191+
192+
#[cfg(test)]
193+
mod tests {}

src/core/fitness/init.rs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,3 +189,57 @@ impl EpiFileParameters {
189189
.collect()
190190
}
191191
}
192+
193+
#[cfg(test)]
194+
mod tests {
195+
use super::super::table::FitnessTable;
196+
use super::*;
197+
198+
#[test]
199+
fn create_neutral_table() {
200+
let sequence = vec![Some(0x00); 100];
201+
let fitness = FitnessTable::from_model(
202+
&sequence,
203+
4,
204+
&FitnessModel::new(FitnessDistribution::Neutral, UtilityFunction::Linear),
205+
)
206+
.unwrap();
207+
for position in 0..100 {
208+
for s in 0..4 {
209+
assert_eq!(fitness.get_value(&position, &Some(s)), 1.);
210+
assert_eq!(fitness.get_value(&position, &None), 1.);
211+
}
212+
}
213+
}
214+
215+
#[test]
216+
fn create_exponential_table() {
217+
let sequence = vec![Some(0x00); 100];
218+
let distribution = FitnessDistribution::Exponential(ExponentialParameters {
219+
weights: MutationCategoryWeights {
220+
beneficial: 0.29,
221+
deleterious: 0.51,
222+
lethal: 0.2,
223+
neutral: 0.,
224+
},
225+
lambda_beneficial: 0.03,
226+
lambda_deleterious: 0.21,
227+
});
228+
229+
let fitness = FitnessTable::from_model(
230+
&sequence,
231+
4,
232+
&FitnessModel::new(distribution, UtilityFunction::Linear),
233+
)
234+
.unwrap();
235+
for position in 0..100 {
236+
for s in 0..4 {
237+
if s == 0 {
238+
assert_eq!(fitness.get_value(&position, &Some(s)), 1.);
239+
} else {
240+
assert_ne!(fitness.get_value(&position, &Some(s)), 1.);
241+
}
242+
}
243+
}
244+
}
245+
}

src/core/fitness/table.rs

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -110,48 +110,6 @@ mod tests {
110110
use super::super::utility::UtilityFunction;
111111
use super::*;
112112

113-
#[test]
114-
fn create_neutral_table() {
115-
let sequence = vec![Some(0x00); 100];
116-
let fitness = FitnessTable::from_model(
117-
&sequence,
118-
4,
119-
&FitnessModel::new(FitnessDistribution::Neutral, UtilityFunction::Linear),
120-
)
121-
.unwrap();
122-
for val in fitness.table {
123-
assert_eq!(val, 1.);
124-
}
125-
}
126-
127-
#[test]
128-
fn create_exponential_table() {
129-
let sequence = vec![Some(0x00); 100];
130-
let distribution = FitnessDistribution::Exponential(ExponentialParameters {
131-
weights: MutationCategoryWeights {
132-
beneficial: 0.29,
133-
deleterious: 0.51,
134-
lethal: 0.2,
135-
neutral: 0.,
136-
},
137-
lambda_beneficial: 0.03,
138-
lambda_deleterious: 0.21,
139-
});
140-
141-
let fitness = FitnessTable::from_model(
142-
&sequence,
143-
4,
144-
&FitnessModel::new(distribution, UtilityFunction::Linear),
145-
)
146-
.unwrap();
147-
for (idx, val) in fitness.table.into_iter().enumerate() {
148-
if idx % 4 == 0 {
149-
assert_eq!(val, 1.);
150-
} else {
151-
assert_ne!(val, 1.);
152-
}
153-
}
154-
}
155113
#[test]
156114
fn get_value() {
157115
let sequence = vec![Some(0x00); 100];

0 commit comments

Comments
 (0)