diff -r 759634edb536 -r 8f1e57821d76 src/pdps.rs --- a/src/pdps.rs Tue Aug 04 20:11:10 2026 -0500 +++ b/src/pdps.rs Thu Aug 06 11:14:15 2026 -0500 @@ -42,7 +42,7 @@ use crate::forward_model::ForwardModel; use crate::measures::merging::SpikeMerging; use crate::measures::merging::SpikeMergingMethod; -use crate::measures::{DiscreteMeasure, RNDM}; +use crate::measures::DiscreteMeasure; use crate::plot::Plotter; pub use crate::prox_penalty::{InsertionConfig, ProxPenalty, StepLengthBoundPD}; use crate::regularisation::RegTerm; @@ -50,7 +50,7 @@ use alg_tools::convex::{Conjugable, ConvexMapping, Prox}; use alg_tools::error::DynResult; use alg_tools::iterate::AlgIteratorFactory; -use alg_tools::linops::{Mapping, AXPY}; +use alg_tools::linops::{Mapping, Space, AXPY}; use alg_tools::mapping::{DataTerm, Instance}; use alg_tools::nalgebra_support::ToNalgebraRealField; use anyhow::ensure; @@ -140,27 +140,29 @@ /// /// Returns the final iterate. #[replace_float_literals(F::cast_from(literal))] -pub fn pointsource_pdps_reg<'a, F, I, A, Phi, Reg, Plot, P, const N: usize>( - f: &'a DataTerm, A, Phi>, +pub fn pointsource_pdps_reg<'a, F, U, I, A, Phi, Reg, Plot, P>( + f: &'a DataTerm, A, Phi>, reg: &Reg, prox_penalty: &P, pdpsconfig: &PDPSConfig, iterator: I, mut plotter: Plot, - μ0: Option>, -) -> DynResult> + μ0: Option>, +) -> DynResult> where + U: Space + Clone + PartialEq, F: Float + ToNalgebraRealField, I: AlgIteratorFactory>, - A: ForwardModel, F>, + A: ForwardModel, F>, for<'b> &'b A::Observable: Instance, A::Observable: AXPY, - RNDM: SpikeMerging, - Reg: RegTerm, F>, + DiscreteMeasure: SpikeMerging, + Reg: RegTerm, Phi: Conjugable, for<'b> Phi::Conjugate<'b>: Prox, - P: ProxPenalty, A::PreadjointCodomain, Reg, F> + StepLengthBoundPD>, - Plot: Plotter>, + P: ProxPenalty + + StepLengthBoundPD>, + Plot: Plotter>, { // Check parameters ensure!( @@ -187,7 +189,7 @@ // Initialise iterates let mut μ = μ0.unwrap_or_else(|| DiscreteMeasure::new()); let mut y = f.residual(&μ); - let full_stats = |μ: &RNDM, ε, stats| IterInfo { + let full_stats = |μ: &DiscreteMeasure, ε, stats| IterInfo { value: f.apply(μ) + reg.apply(μ), n_spikes: μ.len(), ε,