Open the original notebook on GitHub
Policies and assessment
This notebook shows how atomref resolves missing values through ordered
policy steps and how to inspect policy-level behavior.
import atomref as ar
covalent_policy = ar.RadiiPolicy(
kind='covalent',
base_set='cordero2008',
transfers=(
ar.SubstitutionTransfer(
source=ar.DatasetRef('covalent_radius', 'csd_legacy_cov')
),
),
)
lookup = ar.lookup_covalent_radius('Bk', policy=covalent_policy)
print(lookup.source)
print(f"{lookup.value:.12f}")
print(lookup.resolved_from)
Output
transfer_substitution
1.540000000000
(DatasetRef(quantity='covalent_radius', set_id='csd_legacy_cov'),)
vdw_policy = ar.RadiiPolicy(
kind='van_der_waals',
base_set='alvarez2013',
transfers=(
ar.LinearTransfer(
predictors=(ar.DatasetRef('atomic_radius', 'rahm2016'),)
),
),
)
lookup = ar.lookup_vdw_radius('Pm', policy=vdw_policy)
print(f"{lookup.value:.12f}")
print(lookup.source)
print(
f"slope={lookup.fit.coefficients[0]:.12f} intercept={lookup.fit.intercept:.12f} n={lookup.fit.n_points}"
)
Output
2.897226539515
transfer_linear
slope=1.135336645553 intercept=-0.315776167399 n=90
assessment = ar.assess_radii_policy(
['C', 'Xe', 'Pm', 'Bk'],
policy=vdw_policy,
detail=True,
)
print(assessment.n_base, assessment.n_transfer_linear, assessment.n_missing)
for row in assessment.per_element:
value = 'None' if row.lookup.value is None else f"{row.lookup.value:.12f}"
print(row.symbol, row.lookup.source, value)
Output
3 1 0
C base 1.770000000000
Xe base 2.060000000000
Pm transfer_linear 2.897226539515
Bk base 3.400000000000