src/pdps.rs

branch
dev
changeset 29
87649ccfa6a8
parent 24
d29d1fcf5423
child 32
56c8adc32b09
equal deleted inserted replaced
28:eb98b05b9c60 29:87649ccfa6a8
47 use serde::{Serialize, Deserialize}; 47 use serde::{Serialize, Deserialize};
48 use nalgebra::DVector; 48 use nalgebra::DVector;
49 use clap::ValueEnum; 49 use clap::ValueEnum;
50 50
51 use alg_tools::iterate:: AlgIteratorFactory; 51 use alg_tools::iterate:: AlgIteratorFactory;
52 use alg_tools::sets::Cube;
53 use alg_tools::loc::Loc; 52 use alg_tools::loc::Loc;
54 use alg_tools::euclidean::Euclidean; 53 use alg_tools::euclidean::Euclidean;
55 use alg_tools::norms::{ 54 use alg_tools::norms::{
56 L1, Linfinity, 55 L1, Linfinity,
57 Projection, Norm, 56 Projection, Norm,
61 PreBTFN, 60 PreBTFN,
62 Bounds, 61 Bounds,
63 BTNodeLookup, 62 BTNodeLookup,
64 BTNode, 63 BTNode,
65 BTSearch, 64 BTSearch,
66 P2Minimise,
67 SupportGenerator, 65 SupportGenerator,
68 LocalAnalysis, 66 LocalAnalysis,
69 }; 67 };
70 use alg_tools::mapping::RealMapping; 68 use alg_tools::mapping::RealMapping;
71 use alg_tools::nalgebra_support::ToNalgebraRealField; 69 use alg_tools::nalgebra_support::ToNalgebraRealField;
89 FBGenericConfig, 87 FBGenericConfig,
90 FBSpecialisation, 88 FBSpecialisation,
91 generic_pointsource_fb_reg, 89 generic_pointsource_fb_reg,
92 RegTerm, 90 RegTerm,
93 }; 91 };
94 use crate::regularisation::NonnegRadonRegTerm;
95 92
96 /// Acceleration 93 /// Acceleration
97 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, ValueEnum, Debug)] 94 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, ValueEnum, Debug)]
98 pub enum Acceleration { 95 pub enum Acceleration {
99 /// No acceleration 96 /// No acceleration
354 generic_pointsource_fb_reg( 351 generic_pointsource_fb_reg(
355 opA, reg, op𝒟, τ, &config.insertion, iterator, plotter, y, pdps 352 opA, reg, op𝒟, τ, &config.insertion, iterator, plotter, y, pdps
356 ) 353 )
357 } 354 }
358 355
359 //
360 // Deprecated interfaces
361 //
362
363 #[deprecated(note = "Use `pointsource_pdps_reg`")]
364 pub fn pointsource_pdps<'a, F, I, A, GA, 𝒟, BTA, G𝒟, S, K, D, const N : usize>(
365 opA : &'a A,
366 b : &'a A::Observable,
367 α : F,
368 op𝒟 : &'a 𝒟,
369 config : &PDPSConfig<F>,
370 iterator : I,
371 plotter : SeqPlotter<F, N>,
372 dataterm : D,
373 ) -> DiscreteMeasure<Loc<F, N>, F>
374 where F : Float + ToNalgebraRealField,
375 I : AlgIteratorFactory<IterInfo<F, N>>,
376 for<'b> &'b A::Observable : std::ops::Neg<Output=A::Observable>
377 + std::ops::Add<A::Observable, Output=A::Observable>,
378 A::Observable : std::ops::MulAssign<F>,
379 GA : SupportGenerator<F, N, SupportType = S, Id = usize> + Clone,
380 A : ForwardModel<Loc<F, N>, F, PreadjointCodomain = BTFN<F, GA, BTA, N>>
381 + Lipschitz<𝒟, FloatType=F>,
382 BTA : BTSearch<F, N, Data=usize, Agg=Bounds<F>>,
383 G𝒟 : SupportGenerator<F, N, SupportType = K, Id = usize> + Clone,
384 𝒟 : DiscreteMeasureOp<Loc<F, N>, F, PreCodomain = PreBTFN<F, G𝒟, N>>,
385 𝒟::Codomain : RealMapping<F, N>,
386 S: RealMapping<F, N> + LocalAnalysis<F, Bounds<F>, N>,
387 K: RealMapping<F, N> + LocalAnalysis<F, Bounds<F>, N>,
388 BTNodeLookup: BTNode<F, usize, Bounds<F>, N>,
389 Cube<F, N>: P2Minimise<Loc<F, N>, F>,
390 PlotLookup : Plotting<N>,
391 DiscreteMeasure<Loc<F, N>, F> : SpikeMerging<F>,
392 PDPS<'a, F, A, D, N> : FBSpecialisation<F, A::Observable, N>,
393 D : Subdifferentiable<F, A::Observable> {
394
395 pointsource_pdps_reg(opA, b, NonnegRadonRegTerm(α), op𝒟, config, iterator, plotter, dataterm)
396 }

mercurial