522 }); |
522 }); |
523 |
523 |
524 // Return final iterate |
524 // Return final iterate |
525 μ |
525 μ |
526 } |
526 } |
527 |
|
528 // |
|
529 // Deprecated interface |
|
530 // |
|
531 |
|
532 #[deprecated(note = "Use `pointsource_fw_reg`")] |
|
533 pub fn pointsource_fw<'a, F, I, A, GA, BTA, S, const N : usize>( |
|
534 opA : &'a A, |
|
535 b : &A::Observable, |
|
536 α : F, |
|
537 //domain : Cube<F, N>, |
|
538 config : &FWConfig<F>, |
|
539 iterator : I, |
|
540 plotter : SeqPlotter<F, N>, |
|
541 ) -> DiscreteMeasure<Loc<F, N>, F> |
|
542 where F : Float + ToNalgebraRealField, |
|
543 I : AlgIteratorFactory<IterInfo<F, N>>, |
|
544 for<'b> &'b A::Observable : std::ops::Neg<Output=A::Observable>, |
|
545 //+ std::ops::Mul<F, Output=A::Observable>, <-- FIXME: compiler overflow |
|
546 A::Observable : std::ops::MulAssign<F>, |
|
547 GA : SupportGenerator<F, N, SupportType = S, Id = usize> + Clone, |
|
548 A : ForwardModel<Loc<F, N>, F, PreadjointCodomain = BTFN<F, GA, BTA, N>>, |
|
549 BTA : BTSearch<F, N, Data=usize, Agg=Bounds<F>>, |
|
550 S: RealMapping<F, N> + LocalAnalysis<F, Bounds<F>, N>, |
|
551 BTNodeLookup: BTNode<F, usize, Bounds<F>, N>, |
|
552 Cube<F, N>: P2Minimise<Loc<F, N>, F>, |
|
553 PlotLookup : Plotting<N>, |
|
554 DiscreteMeasure<Loc<F, N>, F> : SpikeMerging<F> { |
|
555 |
|
556 pointsource_fw_reg(opA, b, NonnegRadonRegTerm(α), config, iterator, plotter) |
|
557 } |
|
558 |
|
559 #[deprecated(note = "Use `WeightOptim::optimise_weights`")] |
|
560 pub fn optimise_weights<'a, F, A, I, const N : usize>( |
|
561 μ : &mut DiscreteMeasure<Loc<F, N>, F>, |
|
562 opA : &'a A, |
|
563 b : &A::Observable, |
|
564 α : F, |
|
565 findim_data : &FindimData<F>, |
|
566 inner : &InnerSettings<F>, |
|
567 iterator : I |
|
568 ) -> usize |
|
569 where F : Float + ToNalgebraRealField, |
|
570 I : AlgIteratorFactory<F>, |
|
571 A : ForwardModel<Loc<F, N>, F> |
|
572 { |
|
573 NonnegRadonRegTerm(α).optimise_weights(μ, opA, b, findim_data, inner, iterator) |
|
574 } |
|