Working with Physical Units¶
Added in version 1.1.0.
mendeleev integrates with pint to provide unit-aware
access to physical properties. Append _u to any property name to get a
pint.Quantity with proper units attached.
Quick Example¶
>>> from mendeleev import Fe, Al
>>> Fe.atomic_weight_u
55.845 dalton
>>> Al.density_u
2.7 gram / centimeter ** 3
That’s it — just add _u.
How It Works¶
When you access element.property_u, mendeleev:
Strips the
_usuffix to get the base property name.Looks up the unit in the
PropertyMetadatadatabase table.Multiplies the raw value by that unit using
pint.Returns a
pint.Quantityobject.
If the property doesn’t exist, you’ll get an AttributeError. If it has no
unit defined, you’ll also get an AttributeError. If the value is None
(missing data), the _u version returns None too.
Basic Usage¶
Accessing properties with units¶
>>> from mendeleev import H, C, Fe
>>> H.atomic_weight
1.008
>>> H.atomic_weight_u
1.008 dalton
>>> C.density
2.267
>>> C.density_u
2.267 gram / centimeter ** 3
Without the _u suffix, you get raw numbers (just like before). With it,
you get pint Quantity objects that know their units.
Unit Conversions¶
The returned Quantity objects support easy unit conversions:
>>> from mendeleev import Al, Fe
>>> Al.melting_point_u
933.47 kelvin
>>> Al.melting_point_u.to('celsius')
660.3199999999997 degree_Celsius
>>> Al.melting_point_u.to('fahrenheit')
1220.576 degree_Fahrenheit
>>> Fe.atomic_radius_u
126 picometer
>>> Fe.atomic_radius_u.to('angstrom')
1.26 angstrom
Calculations with Units¶
pint Quantities support arithmetic while preserving dimensional correctness:
>>> from mendeleev import Al
>>> from mendeleev.models import ureg
>>> # Mass = density × volume
>>> density = Al.density_u
>>> volume = 100 * ureg.milliliter
>>> mass = density * volume
>>> mass.to('gram')
270.0 gram
>>> from mendeleev import Fe
>>> # Convert electron affinity to joules
>>> Fe.electron_affinity_u.to('joule')
3.9342e-19 joule
The ureg (pint UnitRegistry) is available from mendeleev.models if you
need to create new quantities for calculations.
Error Handling¶
Properties without units raise AttributeError:
>>> from mendeleev import H
>>> H.symbol_u
Traceback (most recent call last):
...
AttributeError: ...
Properties with None values return None:
>>> H.melting_point
None
>>> H.melting_point_u
None
Supported Classes¶
The _u suffix works on these model classes:
Element— the main element class
Properties with Units¶
Element properties with units¶
- Atomic properties:
atomic_radius_u(pm) — Atomic radiusatomic_radius_rahm_u(pm) — Atomic radius by Rahm et al.atomic_volume_u(cm³/mol) — Atomic volumeatomic_weight_u(Da) — Relative atomic weightatomic_weight_uncertainty_u(Da) — Uncertainty in atomic weight
- Abundance:
abundance_crust_u(mg/kg) — Abundance in Earth’s crustabundance_sea_u(mg/L) — Abundance in seawater
- Covalent radii:
covalent_radius_bragg_u(pm) — Bragg covalent radiuscovalent_radius_cordero_u(pm) — Cordero covalent radiuscovalent_radius_pyykko_u(pm) — Pyykkö single bond covalent radiuscovalent_radius_pyykko_double_u(pm) — Pyykkö double bond covalent radiuscovalent_radius_pyykko_triple_u(pm) — Pyykkö triple bond covalent radius
- Van der Waals radii:
vdw_radius_u(pm) — Van der Waals radiusvdw_radius_alvarez_u(pm) — Alvarez VdW radiusvdw_radius_batsanov_u(pm) — Batsanov VdW radiusvdw_radius_bondi_u(pm) — Bondi VdW radiusvdw_radius_dreiding_u(pm) — Dreiding VdW radiusvdw_radius_mm3_u(pm) — MM3 VdW radiusvdw_radius_rt_u(pm) — RT VdW radiusvdw_radius_truhlar_u(pm) — Truhlar VdW radiusvdw_radius_uff_u(pm) — UFF VdW radius
- Thermal properties:
boiling_point_u(K) — Boiling pointmelting_point_u(K) — Melting pointcritical_temperature_u(K) — Critical temperaturecritical_pressure_u(MPa) — Critical pressuretriple_point_temperature_u(K) — Triple point temperaturetriple_point_pressure_u(kPa) — Triple point pressureevaporation_heat_u(kJ/mol) — Heat of vaporizationfusion_heat_u(kJ/mol) — Heat of fusionheat_of_formation_u(kJ/mol) — Heat of formationmolar_heat_capacity_u(J/mol/K) — Molar heat capacityspecific_heat_capacity_u(J/g/K) — Specific heat capacitythermal_conductivity_u(W/m/K) — Thermal conductivity
- Physical properties:
density_u(g/cm³) — Densitylattice_constant_u(Å) — Lattice constantmetallic_radius_u(pm) — Metallic radiusmetallic_radius_c12_u(pm) — Metallic radius (coordination 12)
- Electronic properties:
dipole_polarizability_u(bohr³) — Dipole polarizabilitydipole_polarizability_unc_u(bohr³) — Uncertainty in dipole polarizabilityelectron_affinity_u(eV) — Electron affinityc6_u(hartree/bohr⁶) — C₆ dispersion coefficientc6_gb_u(hartree/bohr⁶) — C₆ dispersion coefficient (Gould-Bučko)hardness_u(eV) — Chemical hardnesssoftness_u(1/eV) — Chemical softness
- Electronegativity scales:
electronegativity_allen_u(eV) — Allen electronegativityelectronegativity_allred_rochow_u(e²/pm²) — Allred-Rochow electronegativityelectronegativity_cottrell_sutton_u(e⁰·⁵/pm⁰·⁵) — Cottrell-Sutton electronegativityelectronegativity_ghosh_u(1/pm) — Ghosh electronegativityelectronegativity_gordy_u(e/pm) — Gordy electronegativityelectronegativity_li_xue_u(1/pm) — Li-Xue electronegativityelectronegativity_martynov_batsanov_u(eV⁰·⁵) — Martynov-Batsanov electronegativityelectronegativity_mulliken_u(eV) — Mulliken electronegativityelectronegativity_nagle_u(1/bohr) — Nagle electronegativityen_gunnarsson_lundqvist_u(eV) — Gunnarsson-Lundqvist electronegativityen_miedema_u(V) — Miedema electronegativityen_robles_bartolotti_u(eV) — Robles-Bartolotti electronegativity
- Chemical properties:
gas_basicity_u(kJ/mol) — Gas basicityproton_affinity_u(kJ/mol) — Proton affinity
- Economic properties:
price_per_kg_u(USD/kg) — Price per kilogramproduction_concentration_u(%) — Production concentrationrecycling_rate_u(%) — Recycling ratereserve_distribution_u(%) — Reserve distribution
- Miedema parameters:
miedema_molar_volume_u(cm³) — Miedema molar volume
Other classes with units¶
- IonicRadius:
charge_u(e) — Ionic chargecrystal_radius_u(pm) — Crystal radiusionic_radius_u(pm) — Ionic radius
- IonizationEnergy:
ion_charge_u(e) — Ion chargeionization_energy_u(eV) — Ionization energyuncertainty_u(eV) — Uncertainty in ionization energy
- Isotope:
mass_u(Da) — Isotopic massmass_uncertainty_u(Da) — Uncertainty in isotopic massquadrupole_moment_u(100 fm²) — Nuclear quadrupole momentquadrupole_moment_uncertainty_u(100 fm²) — Uncertainty in quadrupole moment
- PhaseTransition:
boiling_point_u(K) — Boiling pointcritical_pressure_u(MPa) — Critical pressurecritical_temperature_u(K) — Critical temperaturemelting_point_u(K) — Melting pointtriple_point_pressure_u(kPa) — Triple point pressuretriple_point_temperature_u(K) — Triple point temperature
- ScatteringFactor:
energy_u(eV) — Energy
See Also¶
Tutorials — notebook tutorial on working with units
Data reference — complete list of available properties
Data access — how to fetch and query data
pint documentation — full pint library docs