Skip to main content

NLL

Struct NLL 

Source
pub struct NLL {
    pub data_evaluator: Evaluator,
    pub accmc_evaluator: Evaluator,
    /* private fields */
}
Expand description

An extended, unbinned negative log-likelihood evaluator.

Fields§

§data_evaluator: Evaluator

The internal Evaluator for data

§accmc_evaluator: Evaluator

The internal Evaluator for accepted Monte Carlo

Implementations§

Source§

impl NLL

Source

pub fn new( expression: &Expression, ds_data: &Arc<Dataset>, ds_accmc: &Arc<Dataset>, n_mc: Option<f64>, ) -> LadduResult<Box<Self>>

Construct an NLL from an Expression and two Datasets (data and Monte Carlo). This mirrors loading a model but starts from the expression directly. The number of Monte Carlo events used in the denominator of the normalization integral may also be specified (uses the weighted number of accepted Monte Carlo events if None is given).

Source

pub fn parameters(&self) -> ParameterMap

The parameters for this NLL.

Source

pub fn n_free(&self) -> usize

Number of free parameters.

Source

pub fn n_fixed(&self) -> usize

Number of fixed parameters.

Source

pub fn n_parameters(&self) -> usize

Total number of parameters.

Source

pub fn expression(&self) -> Expression

Returns the expression represented by this NLL.

Source

pub fn compiled_expression(&self) -> CompiledExpression

Returns a tree-like diagnostic snapshot of the compiled expression for this NLL’s current active-amplitude mask.

Source

pub fn to_stochastic( &self, batch_size: usize, seed: Option<usize>, ) -> LadduResult<StochasticNLL>

Create a new StochasticNLL from this NLL.

Source

pub fn activate<T: AsRef<str>>(&self, name: T)

Activate an Amplitude by tag, skipping missing entries.

Source

pub fn activate_strict<T: AsRef<str>>(&self, name: T) -> LadduResult<()>

Activate an Amplitude by tag and return an error if it is missing.

Source

pub fn activate_many<T: AsRef<str>>(&self, names: &[T])

Activate several Amplitudes by tag, skipping missing entries.

Source

pub fn activate_many_strict<T: AsRef<str>>( &self, names: &[T], ) -> LadduResult<()>

Activate several Amplitudes by tag and return an error if any are missing.

Source

pub fn activate_all(&self)

Activate all registered Amplitudes.

Source

pub fn deactivate<T: AsRef<str>>(&self, name: T)

Deactivate an Amplitude by tag, skipping missing entries.

Source

pub fn deactivate_strict<T: AsRef<str>>(&self, name: T) -> LadduResult<()>

Deactivate an Amplitude by tag and return an error if it is missing.

Source

pub fn deactivate_many<T: AsRef<str>>(&self, names: &[T])

Deactivate several Amplitudes by tag, skipping missing entries.

Source

pub fn deactivate_many_strict<T: AsRef<str>>( &self, names: &[T], ) -> LadduResult<()>

Deactivate several Amplitudes by tag and return an error if any are missing.

Source

pub fn deactivate_all(&self)

Deactivate all registered Amplitudes.

Source

pub fn isolate<T: AsRef<str>>(&self, name: T)

Isolate an Amplitude by tag (deactivate the rest), skipping missing entries.

Source

pub fn isolate_strict<T: AsRef<str>>(&self, name: T) -> LadduResult<()>

Isolate an Amplitude by tag (deactivate the rest) and return an error if it is missing.

Source

pub fn isolate_many<T: AsRef<str>>(&self, names: &[T])

Isolate several Amplitudes by tag (deactivate the rest), skipping missing entries.

Source

pub fn isolate_many_strict<T: AsRef<str>>(&self, names: &[T]) -> LadduResult<()>

Isolate several Amplitudes by tag (deactivate the rest) and return an error if any are missing.

Source

pub fn project_weights_local( &self, parameters: &[f64], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<f64>>

Project the stored Expression over the events in the Dataset stored by the Evaluator with the given values for free parameters to obtain weights for each Monte-Carlo event (non-MPI version).

§Notes

This method is not intended to be called in analyses but rather in writing methods that have mpi-feature-gated versions. Most users will want to call NLL::project_weights instead.

Source

pub fn project_weights( &self, parameters: &[f64], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<f64>>

Project the stored Expression over the events in the Dataset stored by the Evaluator with the given values for free parameters to obtain weights for each Monte-Carlo event. This method takes the real part of the given expression (discarding the imaginary part entirely, which does not matter if expressions are coherent sums wrapped in Expression::norm_sqr. Event weights are determined by the following formula:

\text{weight}(\vec{p}; e) = \text{weight}(e) \mathcal{L}(e) / N_{\text{MC}}

Note that $N_{\text{MC}}$ will always be the number of accepted Monte Carlo events, regardless of the mc_evaluator.

Source

pub fn project_weights_and_gradients_local( &self, parameters: &[f64], mc_evaluator: Option<Evaluator>, ) -> LadduResult<(Vec<f64>, Vec<DVector<f64>>)>

Project the stored Expression over the events in the Dataset stored by the Evaluator with the given values for free parameters to obtain weights and gradients of those weights for each Monte-Carlo event (non-MPI version).

§Notes

This method is not intended to be called in analyses but rather in writing methods that have mpi-feature-gated versions. Most users will want to call NLL::project_weights_and_gradients instead.

Source

pub fn project_weights_and_gradients( &self, parameters: &[f64], mc_evaluator: Option<Evaluator>, ) -> LadduResult<(Vec<f64>, Vec<DVector<f64>>)>

Project the stored Expression over the events in the Dataset stored by the Evaluator with the given values for free parameters to obtain weights and gradients of those weights for each Monte-Carlo event. This method takes the real part of the given expression (discarding the imaginary part entirely, which does not matter if expressions are coherent sums wrapped in Expression::norm_sqr. Event weights are determined by the following formula:

\text{weight}(\vec{p}; e) = \text{weight}(e) \mathcal{L}(e) / N_{\text{MC}}

Note that $N_{\text{MC}}$ will always be the number of accepted Monte Carlo events, regardless of the mc_evaluator.

Source

pub fn project_weights_subset_local<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<f64>>

Project the model over one isolated amplitude subset in local execution, skipping missing amplitude tags.

Source

pub fn project_weights_subset_local_strict<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<f64>>

Project the model over one isolated amplitude subset in local execution and return an error if any requested amplitude tag is missing.

Source

pub fn project_weights_subset<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<f64>>

Project the model over one isolated amplitude subset, skipping missing amplitude names.

Source

pub fn project_weights_subset_strict<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<f64>>

Project the model over one isolated amplitude subset and return an error if any requested amplitude tag is missing.

Source

pub fn project_weights_subsets_local<T: AsRef<str>>( &self, parameters: &[f64], subsets: &[Vec<T>], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<Vec<f64>>>

Project the model over multiple isolated amplitude subsets in local execution, skipping missing amplitude tags within each subset.

Source

pub fn project_weights_subsets_local_strict<T: AsRef<str>>( &self, parameters: &[f64], subsets: &[Vec<T>], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<Vec<f64>>>

Project the model over multiple isolated amplitude subsets in local execution and return an error if any requested amplitude tag is missing.

Source

pub fn project_weights_subsets<T: AsRef<str>>( &self, parameters: &[f64], subsets: &[Vec<T>], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<Vec<f64>>>

Project the model over multiple isolated amplitude subsets, skipping missing amplitude tags within each subset.

Source

pub fn project_weights_subsets_strict<T: AsRef<str>>( &self, parameters: &[f64], subsets: &[Vec<T>], mc_evaluator: Option<Evaluator>, ) -> LadduResult<Vec<Vec<f64>>>

Project the model over multiple isolated amplitude subsets and return an error if any requested amplitude tag is missing.

Source

pub fn project_weights_and_gradients_subset_local<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<(Vec<f64>, Vec<DVector<f64>>)>

Project the model and parameter gradients over one isolated amplitude subset in local execution, skipping missing amplitude tags.

Source

pub fn project_weights_and_gradients_subset_local_strict<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<(Vec<f64>, Vec<DVector<f64>>)>

Project the model and parameter gradients over one isolated amplitude subset in local execution and return an error if any requested amplitude tag is missing.

Source

pub fn project_weights_and_gradients_subset<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<(Vec<f64>, Vec<DVector<f64>>)>

Project the model and parameter gradients over one isolated amplitude subset, skipping missing amplitude tags.

Source

pub fn project_weights_and_gradients_subset_strict<T: AsRef<str>>( &self, parameters: &[f64], names: &[T], mc_evaluator: Option<Evaluator>, ) -> LadduResult<(Vec<f64>, Vec<DVector<f64>>)>

Project the model and parameter gradients over one isolated amplitude subset and return an error if any requested amplitude tag is missing.

Trait Implementations§

Source§

impl Clone for NLL

Source§

fn clone(&self) -> NLL

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CostFunction<MaybeThreadPool, LadduError> for NLL

Source§

fn evaluate( &self, parameters: &DVector<f64>, args: &MaybeThreadPool, ) -> LadduResult<f64>

The evaluation of the function at a point x with the given arguments/user data. Read more
Source§

impl Gradient<MaybeThreadPool, LadduError> for NLL

Source§

fn gradient( &self, parameters: &DVector<f64>, args: &MaybeThreadPool, ) -> LadduResult<DVector<f64>>

The evaluation of the gradient at a point x with the given arguments/user data. Read more
Source§

fn evaluate_with_gradient( &self, x: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, args: &U, ) -> Result<(f64, Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>), E>

The evaluation of both the function and its gradient at a point x with the given arguments/user data. Read more
Source§

fn hessian( &self, x: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, args: &U, ) -> Result<Matrix<f64, Dyn, Dyn, VecStorage<f64, Dyn, Dyn>>, E>

The evaluation of the hessian at a point x with the given arguments/user data. Read more
Source§

fn gradient_with_hessian( &self, x: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, args: &U, ) -> Result<(Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, Matrix<f64, Dyn, Dyn, VecStorage<f64, Dyn, Dyn>>), E>

The evaluation of both the gradient and hessian at a point x with the given arguments/user data. Read more
Source§

fn evaluate_with_gradient_and_hessian( &self, x: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, args: &U, ) -> Result<(f64, Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, Matrix<f64, Dyn, Dyn, VecStorage<f64, Dyn, Dyn>>), E>

The evaluation of the function, gradient, and hessian at a point x with the given arguments/user data. Read more
Source§

impl LikelihoodTerm for NLL

Source§

fn evaluate(&self, parameters: &[f64]) -> LadduResult<f64>

Evaluate the term given some input parameters.
Source§

fn evaluate_gradient(&self, parameters: &[f64]) -> LadduResult<DVector<f64>>

Evaluate the gradient of the term given some input parameters.
Source§

fn fix_parameter(&self, name: &str, value: f64) -> LadduResult<()>

Fix a named parameter local to this term.
Source§

fn free_parameter(&self, name: &str) -> LadduResult<()>

Mark a named parameter local to this term as free.
Source§

fn rename_parameter(&self, old: &str, new: &str) -> LadduResult<()>

Rename a single parameter local to this term.
Source§

fn rename_parameters( &self, mapping: &HashMap<String, String>, ) -> LadduResult<()>

Rename multiple parameters local to this term.
Source§

fn parameter_map(&self) -> ParameterMap

Return the parameters owned by this term in local order.
Source§

fn update(&self)

A method called every step of any minimization/MCMC algorithm.
Source§

fn into_expression(self) -> LadduResult<LikelihoodExpression>
where Self: Sized + 'static,

Convenience helper to wrap a likelihood term into a LikelihoodExpression. Read more
Source§

impl LogDensity<MaybeThreadPool, LadduError> for NLL

Source§

fn log_density( &self, parameters: &DVector<f64>, args: &MaybeThreadPool, ) -> LadduResult<f64>

The log of the evaluation of the density function at a point x with the given arguments/user data. Read more

Auto Trait Implementations§

§

impl Freeze for NLL

§

impl !RefUnwindSafe for NLL

§

impl Send for NLL

§

impl Sync for NLL

§

impl Unpin for NLL

§

impl UnsafeUnpin for NLL

§

impl !UnwindSafe for NLL

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TransformExt for T

Source§

fn compose<T2>(self, t2: T2) -> Compose<Self, T2>

Compose a transform with another. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.