| 1008 opA, reg, op𝒟, τ, &config.insertion, iterator, plotter, initial_residual, |
1008 opA, reg, op𝒟, τ, &config.insertion, iterator, plotter, initial_residual, |
| 1009 FISTA{ b, opA, λ : 1.0, μ_prev : DiscreteMeasure::new() }, |
1009 FISTA{ b, opA, λ : 1.0, μ_prev : DiscreteMeasure::new() }, |
| 1010 ), |
1010 ), |
| 1011 } |
1011 } |
| 1012 } |
1012 } |
| 1013 |
|
| 1014 // |
|
| 1015 // Deprecated interfaces |
|
| 1016 // |
|
| 1017 |
|
| 1018 #[deprecated(note = "Use `pointsource_fb_reg`")] |
|
| 1019 pub fn pointsource_fb<'a, F, I, A, GA, 𝒟, BTA, G𝒟, S, K, const N : usize>( |
|
| 1020 opA : &'a A, |
|
| 1021 b : &A::Observable, |
|
| 1022 α : F, |
|
| 1023 op𝒟 : &'a 𝒟, |
|
| 1024 config : &FBConfig<F>, |
|
| 1025 iterator : I, |
|
| 1026 plotter : SeqPlotter<F, N> |
|
| 1027 ) -> DiscreteMeasure<Loc<F, N>, F> |
|
| 1028 where F : Float + ToNalgebraRealField, |
|
| 1029 I : AlgIteratorFactory<IterInfo<F, N>>, |
|
| 1030 for<'b> &'b A::Observable : std::ops::Neg<Output=A::Observable>, |
|
| 1031 A::Observable : std::ops::MulAssign<F>, |
|
| 1032 GA : SupportGenerator<F, N, SupportType = S, Id = usize> + Clone, |
|
| 1033 A : ForwardModel<Loc<F, N>, F, PreadjointCodomain = BTFN<F, GA, BTA, N>> |
|
| 1034 + Lipschitz<𝒟, FloatType=F>, |
|
| 1035 BTA : BTSearch<F, N, Data=usize, Agg=Bounds<F>>, |
|
| 1036 G𝒟 : SupportGenerator<F, N, SupportType = K, Id = usize> + Clone, |
|
| 1037 𝒟 : DiscreteMeasureOp<Loc<F, N>, F, PreCodomain = PreBTFN<F, G𝒟, N>>, |
|
| 1038 𝒟::Codomain : RealMapping<F, N>, |
|
| 1039 S: RealMapping<F, N> + LocalAnalysis<F, Bounds<F>, N>, |
|
| 1040 K: RealMapping<F, N> + LocalAnalysis<F, Bounds<F>, N>, |
|
| 1041 BTNodeLookup: BTNode<F, usize, Bounds<F>, N>, |
|
| 1042 Cube<F, N>: P2Minimise<Loc<F, N>, F>, |
|
| 1043 PlotLookup : Plotting<N>, |
|
| 1044 DiscreteMeasure<Loc<F, N>, F> : SpikeMerging<F> { |
|
| 1045 |
|
| 1046 pointsource_fb_reg(opA, b, NonnegRadonRegTerm(α), op𝒟, config, iterator, plotter) |
|
| 1047 } |
|
| 1048 |
|
| 1049 |
|
| 1050 #[deprecated(note = "Use `generic_pointsource_fb_reg`")] |
|
| 1051 pub fn generic_pointsource_fb<'a, F, I, A, GA, 𝒟, BTA, G𝒟, S, K, Spec, const N : usize>( |
|
| 1052 opA : &'a A, |
|
| 1053 α : F, |
|
| 1054 op𝒟 : &'a 𝒟, |
|
| 1055 τ : F, |
|
| 1056 config : &FBGenericConfig<F>, |
|
| 1057 iterator : I, |
|
| 1058 plotter : SeqPlotter<F, N>, |
|
| 1059 residual : A::Observable, |
|
| 1060 specialisation : Spec, |
|
| 1061 ) -> DiscreteMeasure<Loc<F, N>, F> |
|
| 1062 where F : Float + ToNalgebraRealField, |
|
| 1063 I : AlgIteratorFactory<IterInfo<F, N>>, |
|
| 1064 Spec : FBSpecialisation<F, A::Observable, N>, |
|
| 1065 A::Observable : std::ops::MulAssign<F>, |
|
| 1066 GA : SupportGenerator<F, N, SupportType = S, Id = usize> + Clone, |
|
| 1067 A : ForwardModel<Loc<F, N>, F, PreadjointCodomain = BTFN<F, GA, BTA, N>> |
|
| 1068 + Lipschitz<𝒟, FloatType=F>, |
|
| 1069 BTA : BTSearch<F, N, Data=usize, Agg=Bounds<F>>, |
|
| 1070 G𝒟 : SupportGenerator<F, N, SupportType = K, Id = usize> + Clone, |
|
| 1071 𝒟 : DiscreteMeasureOp<Loc<F, N>, F, PreCodomain = PreBTFN<F, G𝒟, N>>, |
|
| 1072 𝒟::Codomain : RealMapping<F, N>, |
|
| 1073 S: RealMapping<F, N> + LocalAnalysis<F, Bounds<F>, N>, |
|
| 1074 K: RealMapping<F, N> + LocalAnalysis<F, Bounds<F>, N>, |
|
| 1075 BTNodeLookup: BTNode<F, usize, Bounds<F>, N>, |
|
| 1076 Cube<F, N>: P2Minimise<Loc<F, N>, F>, |
|
| 1077 PlotLookup : Plotting<N>, |
|
| 1078 DiscreteMeasure<Loc<F, N>, F> : SpikeMerging<F> { |
|
| 1079 |
|
| 1080 generic_pointsource_fb_reg(opA, NonnegRadonRegTerm(α), op𝒟, τ, config, iterator, plotter, |
|
| 1081 residual, specialisation) |
|
| 1082 } |
|