Skip to content

Commit 5ec53b7

Browse files
authored
fix: Add gamma/lambda for each output equation to cycle.csv (#147)
The relevant columns are of the form "gamlam.OUTEQ", where OUTEQ is the output equation
1 parent 2d1d3bc commit 5ec53b7

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

src/routines/output.rs

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -618,8 +618,23 @@ impl CycleLog {
618618
writer.write_field("cycle")?;
619619
writer.write_field("converged")?;
620620
writer.write_field("neg2ll")?;
621-
//writer.write_field("gamlam")?;
622621
writer.write_field("nspp")?;
622+
if let Some(first_cycle) = self.cycles.first() {
623+
first_cycle.error_models.iter().try_for_each(
624+
|(outeq, errmod): (usize, &ErrorModel)| -> Result<(), csv::Error> {
625+
match errmod {
626+
ErrorModel::Additive { .. } => {
627+
writer.write_field(format!("gamlam.{}", outeq))?;
628+
}
629+
ErrorModel::Proportional { .. } => {
630+
writer.write_field(format!("gamlam.{}", outeq))?;
631+
}
632+
ErrorModel::None { .. } => {}
633+
}
634+
Ok(())
635+
},
636+
)?;
637+
}
623638

624639
let parameter_names = settings.parameters().names();
625640
for param_name in &parameter_names {
@@ -634,11 +649,26 @@ impl CycleLog {
634649
writer.write_field(format!("{}", cycle.cycle))?;
635650
writer.write_field(format!("{}", cycle.converged))?;
636651
writer.write_field(format!("{}", cycle.objf))?;
637-
// writer.write_field(format!("{}", cycle.gamlam))?;
638652
writer
639-
.write_field(format!("{}", cycle.theta.matrix().nrows()))
653+
.write_field(format!("{}", cycle.theta.nspp()))
640654
.unwrap();
641655

656+
// Write the error models
657+
cycle.error_models.iter().try_for_each(
658+
|(_, errmod): (usize, &ErrorModel)| -> Result<()> {
659+
match errmod {
660+
ErrorModel::Additive { .. } => {
661+
writer.write_field(format!("{:.5}", errmod.scalar()?))?;
662+
}
663+
ErrorModel::Proportional { .. } => {
664+
writer.write_field(format!("{:.5}", errmod.scalar()?))?;
665+
}
666+
ErrorModel::None { .. } => {}
667+
}
668+
Ok(())
669+
},
670+
)?;
671+
642672
for param in cycle.theta.matrix().col_iter() {
643673
let param_values: Vec<f64> = param.iter().cloned().collect();
644674

0 commit comments

Comments
 (0)