ParticleListο
- class plasmapy.particles.particle_collections.ParticleList(particles: Iterable | None = None)[source]ο
Bases:
UserList
A
list
like collection ofParticle
andCustomParticle
objects.- Parameters:
particles (iterable of particle-like, optional) β An iterable that provides a sequence of particle-like objects. Objects that are not a
Particle
orCustomParticle
will be cast into aParticle
orCustomParticle
. If not provided, an emptyParticleList
will be created.- Raises:
InvalidParticleError β If an object supplied to
ParticleList
is not particle-like.TypeError β If a
DimensionlessParticle
is provided.
See also
Examples
A
ParticleList
can be created by calling it with an iterable like alist
ortuple
that provides particle-like objects.>>> from plasmapy.particles import ParticleList >>> particle_list = ParticleList(["e-", "e+"]) >>> particle_list[0] Particle("e-")
Attributes such as
mass
andcharge
will return aQuantity
array containing the values of the corresponding attribute for each particle in theParticleList
.>>> particle_list.mass <Quantity [9.1093...e-31, 9.1093...e-31] kg> >>> particle_list.charge <Quantity [-1.60217663e-19, 1.60217663e-19] C> >>> particle_list.symbols ['e-', 'e+']
ParticleList
instances can also be created through addition and multiplication withParticle
,CustomParticle
, andParticleList
instances.>>> from plasmapy.particles import Particle, CustomParticle >>> import astropy.units as u >>> proton = Particle("p+") >>> custom_particle = CustomParticle(mass=1e-26 * u.kg, charge=6e-19 * u.C) >>> 2 * proton + custom_particle ParticleList(['p+', 'p+', 'CustomParticle(mass=1e-26 kg, charge=6e-19 C)'])
These operations may also be performed using particle-like objects.
>>> particle_list + "deuteron" ParticleList(['e-', 'e+', 'D 1+'])
A
ParticleList
can also be created usingQuantity
objects.>>> import astropy.units as u >>> quantities = [2.3e-26 * u.kg, 4.8e-19 * u.C] >>> particle_list = ParticleList(quantities) >>> particle_list.mass <Quantity [2.3e-26, nan] kg> >>> particle_list.charge <Quantity [ nan, 4.8e-19] C>
Normal
list
methods may also be used onParticleList
objects. When a particle-like object is appended to aParticleList
, that object will be cast into aParticle
orCustomParticle
.>>> noble_gases = ParticleList(["He", "Ar", "Kr", "Xe", "Rn"]) >>> noble_gases.append("Og") >>> noble_gases[-1] Particle("Og")
The
>
operator may be used withParticle
andParticleList
instances to access the nuclear reaction energy.>>> reactants = ParticleList(["deuterium", "tritium"]) >>> products = ParticleList(["alpha", "neutron"]) >>> energy = reactants > products >>> energy.to("MeV") <Quantity 17.58925... MeV>
Attributes Summary
The electric charges of the particles.
The charges of the particles in units of the elementary charge.
A
list
containing the particles contained in theParticleList
instance.The half-lives of the particles.
The masses of the particles.
The mass energies of the particles.
A
list
of the symbols of the particles.Methods Summary
append
(particle)Append a particle to the end of the
ParticleList
.average_particle
([abundances,Β ...])Return a particle with the average mass and charge.
clear
()Remove all items from the
ParticleList
.copy
()Return a shallow copy of the
ParticleList
.count
(item)Return the number of occurrences of
item
.extend
(iterable)Extend
ParticleList
by casting particle-like items fromiterable
into particle objects.index
(item,Β *args)Return first index of a particle-like value.
insert
(index,Β particle)Insert a particle before an index.
Determine if the particles in the
ParticleList
meet categorization criteria.pop
([i])Remove and return item at index (default last).
remove
(item)Remove the first occurrence of a particle-like item.
reverse
()Reverse the
ParticleList
in place.sort
([key,Β reverse])Sort the
ParticleList
in-place.Attributes Documentation
- charge_numberο
The charges of the particles in units of the elementary charge.
- Return type:
- dataο
A
list
containing the particles contained in theParticleList
instance.Important
This attribute should not be modified directly.
- Return type:
list
ofParticle
orCustomParticle
- mass_energyο
The mass energies of the particles.
If the particle is an isotope or nuclide, return the mass energy of the nucleus only.
- Return type:
Methods Documentation
- append( ) None [source]ο
Append a particle to the end of the
ParticleList
.
- average_particle( ) CustomParticle | Particle [source]ο
Return a particle with the average mass and charge.
By default, the mean will be used as the average. If the
abundances
are provided, then this method will return the weighted mean. Ifuse_rms_charge
oruse_rms_mass
isTrue
, then this method will return the root-mean-square of the charge or mass, respectively. If all items in theParticleList
are equal to each other, then this method will return the first item in theParticleList
.- Parameters:
abundances (array_like, optional) β Real numbers representing relative abundances of the particles in the
ParticleList
. Must have the same number of elements as theParticleList
. This parameter gets passed tonumpy.average
via that functionβsweights
parameter. If not provided, the particles contained in theParticleList
are assumed to be equally abundant.use_rms_charge (
bool
, keyword-only, default:False
) β IfTrue
, use the root-mean-square charge instead of the mean charge.use_rms_mass (
bool
, keyword-only, default:False
) β IfTrue
, use the root-mean-square mass instead of the mean mass.
- Return type:
Examples
>>> reactants = ParticleList(["electron", "positron"]) >>> reactants.average_particle() CustomParticle(mass=9.109383...e-31 kg, charge=0.0 C) >>> reactants.average_particle(abundances=[1, 0.5]) CustomParticle(mass=9.109383...e-31 kg, charge=-5.34058...e-20 C) >>> reactants.average_particle(use_rms_charge=True) CustomParticle(mass=9.109383...e-31 kg, charge=1.6021766...-19 C) >>> protons = ParticleList(["p+", "p+", "p+"]) >>> protons.average_particle() Particle("p+")
- clear()ο
Remove all items from the
ParticleList
.
- copy()ο
Return a shallow copy of the
ParticleList
.
- count(item)ο
Return the number of occurrences of
item
. Here,item
must be particle-like.
- extend( ) None [source]ο
Extend
ParticleList
by casting particle-like items fromiterable
into particle objects.
- index(item, *args)ο
Return first index of a particle-like value.
- Raises:
ValueError β If the value is not present.
- is_category(
- *category_tuple,
- require: str | Iterable[str] | None = None,
- any_of: str | Iterable[str] | None = None,
- exclude: str | Iterable[str] | None = None,
- particlewise: Literal[True] = False,
- is_category(
- *category_tuple,
- require: str | Iterable[str] | None = None,
- any_of: str | Iterable[str] | None = None,
- exclude: str | Iterable[str] | None = None,
- particlewise: Literal[False],
Determine if the particles in the
ParticleList
meet categorization criteria.Please refer to the documentation of
is_category
for information on the parameters and categories, as well as more extensive examples.- Parameters:
particlewise (
bool
, default:False
) β IfTrue
, return alist
ofbool
in which an element will beTrue
if the corresponding particle is consistent with the categorization criteria, andFalse
otherwise. IfFalse
, return abool
which will beTrue
if all particles are consistent with the categorization criteria andFalse
otherwise.- Return type:
See also
Examples
>>> particles = ParticleList(["proton", "electron", "tau neutrino"]) >>> particles.is_category("lepton") False >>> particles.is_category("lepton", particlewise=True) [False, True, True] >>> particles.is_category(require="lepton", exclude="neutrino") False >>> particles.is_category( ... require="lepton", exclude="neutrino", particlewise=True ... ) [False, True, False] >>> particles.is_category(any_of=["lepton", "charged"]) True >>> particles.is_category(any_of=["lepton", "charged"], particlewise=True) [True, True, True]
- pop(i=-1)ο
Remove and return item at index (default last).
- Raises:
IndexError β If the
ParticleList
is empty or the index is out of range.
- remove(item)ο
Remove the first occurrence of a particle-like item.
- Raises:
ValueError β If the value is not present.
- reverse()ο
Reverse the
ParticleList
in place.
- sort(key: Callable | None = None, reverse: bool = False)[source]ο
Sort the
ParticleList
in-place.- Parameters:
key (callable) β A function that accepts one argument that is used to extract a comparison key for each item in the
ParticleList
.reverse (
bool
, default:False
) β IfTrue
, the items in theParticleList
are sorted as if each comparison were reversed.
- Raises:
TypeError β If
key
is not provided.
Examples
To sort a
ParticleList
by atomic number, setkey
toatomic_number()
.>>> from plasmapy.particles import ParticleList, atomic_number >>> elements = ParticleList(["Li", "H", "He"]) >>> elements.sort(key=atomic_number) >>> print(elements) ParticleList(['H', 'He', 'Li'])
We can also create a function to pass to
key
. In this example, we sort first by atomic number and second by mass number using different attributes ofParticle
.>>> def sort_key(isotope): ... return isotope.atomic_number, isotope.mass_number >>> isotopes = ParticleList(["He-3", "T", "H-1", "He-4", "D"]) >>> isotopes.sort(key=sort_key) >>> print(isotopes) ParticleList(['H-1', 'D', 'T', 'He-3', 'He-4'])