Particles
- class ssapy.particles.Particles(particles, rvprobability, lnpriors=None, ln_weights=None)[source][source]
Bases:
objectA 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
- 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
- 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
- lnlike(epoch_particles)[source][source]
Evaluate the log-likelihood of the input particles given internally stored measurements
- 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
Attributes Summary
Get the epoch time at which the particles (i.e., position and velocity) are defined
Get an array of log prior probabilities for each particle
Get a list of orbits corresponding to each stored particle
Methods Summary
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
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
- 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
- Returns:
Side effect is to update the internal particles state.
- Return type:
None
- 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
jis the current epoch,thetaare the particle parameters, andd_iis the data from epochi.