Particles

class ssapy.particles.Particles(particles, rvprobability, lnpriors=None, ln_weights=None)[source][source]

Bases: object

A class for importance (re-)sampling orbit model parameter samples

Parameters:
  • particles ((num_particles, 6) array_like) – Positions and velocities of orbiting object at epoch in meters and meters / second. The ‘chain’ part of the output from rvsampler.XXSampler.sample

  • rvprobability (class instance) – An instance of an RVProbability for this epoch. The Particles class wraps the lnlike method of the supplied RVProbability object.

  • ln_weights ((num_particles,) array_like, optional) – Weights for each particle in the input particles

particles[source]

Positions and velocities of orbiting object at epoch in meters and meters / second. The ‘chain’ part of the output from RVSampler.sample

Type:

(num_particles, ) array_like

rvprobability[source]

An instance of an RVProbability for this epoch. The Particles class wraps the lnlike method of the supplied RVProbability object.

Type:

class instance

ln_wts[source]

Log weights for each particle.

Type:

(num_particles,) array_like

num_particles[source]

Number of particles

Type:

int

initial_particles[source]

Copy of input particles to enable reset_to_pseudo_prior()

Type:

(num_particles, 6) array_like

initial_ln_wts[source]

Copy of input log weights to enable reset_to_pseudo_prior()

Type:

(num_particles,) array_like

epoch[source]

The time at which the model parameters (position and velocity) are specified. If float, then should correspond to GPS seconds; i.e., seconds since 1980-01-06 00:00:00 UTC.

Type:

float or astropy.time.Time

orbits[source]

List of Orbit class instances derived from each particle

Type:

list

lnpriors[source]

Log prior probabilities for each particle. The priors are as set in the input RVProbability object.

Type:

(num_particles,) array_like

reset_to_pseudo_prior()[source][source]

Reset the particles and weights to their values at instantiation

move(epoch)[source][source]

Move particles to the specified epoch

lnlike(epoch_particles)[source][source]

Evaluate the log-likelihood of the input particles given internally stored measurements

reweight(epoch_particles)[source][source]

Reweight particles using cross-epoch likelihoods

resample(num_particles)[source][source]

Resample particles to achieve near-uniform weighting per particle

fuse(epoch_particles, verbose)[source][source]

Fuse particles from a different epoch and fuse internal particles and weights

draw_orbit()[source][source]

Draw a single orbit model from the internal list of particles

mean()[source][source]

Evaluate the weighted mean of the particle values

Attributes Summary

epoch

Get the epoch time at which the particles (i.e., position and velocity) are defined

lnpriors

Get an array of log prior probabilities for each particle

orbits

Get a list of orbits corresponding to each stored particle

Methods Summary

draw_orbit()

Draw a single orbit model from the internal particle collection with probability proportional to the internal weights.

fuse(epoch_particles[, verbose])

Add particles from a new epoch and fuse all epoch particles and weights accordingly

lnlike(orbits)

Evaluate this epoch likelihood given one or more particles

mean()

Evaluate the weighted mean of all particles

move(epoch)

Move particles to the given epoch

resample(num_particles)

Resample particles to achieve near-uniform weighting per particle

reset_to_pseudo_prior()

reweight(epoch_particles)

Reweight particles using cross-epoch likelihoods

Attributes Documentation

epoch[source]

Get the epoch time at which the particles (i.e., position and velocity) are defined

lnpriors[source]

Get an array of log prior probabilities for each particle

orbits[source]

Get a list of orbits corresponding to each stored particle

Methods Documentation

draw_orbit()[source][source]

Draw a single orbit model from the internal particle collection with probability proportional to the internal weights.

Returns:

particle – Position and velocity for one particle

Return type:

array (1, 6)

fuse(epoch_particles, verbose=False)[source][source]

Add particles from a new epoch and fuse all epoch particles and weights accordingly

Parameters:
  • epoch_particles (Particles) – The particles object from another observation

  • verbose (bool, optional) – Enable verbose output to stdout

Return type:

None. Side effect is to fuse the internal particles state.

lnlike(orbits)[source][source]

Evaluate this epoch likelihood given one or more particles

Parameters:

orbits (List of Orbit class instances) – A list of the Orbit models for each particle, e.g., as generated by Particles.orbits

Returns:

lnlike – Array of log-likelihood values for each particle

Return type:

array (num_particles, )

mean()[source][source]

Evaluate the weighted mean of all particles

Returns:

mean – Weighted mean of the particle values (3*m, 3*m/s)

Return type:

(6,) array_like

move(epoch)[source][source]

Move particles to the given epoch

Parameters:

epoch (astropy.time.Time) –

Returns:

particles – Position and velocity for each particle at the new epoch

Return type:

array (num_particles, 6)

resample(num_particles)[source][source]

Resample particles to achieve near-uniform weighting per particle

Parameters:

num_particles (int) – The number of particles to keep

Return type:

None. Side effect is to update the internal particles state.

reset_to_pseudo_prior()[source][source]
reweight(epoch_particles)[source][source]

Reweight particles using cross-epoch likelihoods

The weights for the kth particle are,
w_k = log(Prod_i L_(d_i | theta_k) / L(d_j | theta_k))

= Sum_{i /= j} log(L(d_i | theta_k))

where j is the current epoch, theta are the particle parameters, and d_i is the data from epoch i.

Parameters:

epoch_particles (Particles) – The particles object from another observation

Returns:

status – Status (True means success). Side effect is to update the internal particles state.

Return type:

bool