atomref.radii
This is the main user-facing module for radii workflows.
It provides radii policies, packaged radii-set discovery, lookup helpers, and policy-assessment reports.
atomref.radii
Radii-specific public API built on the generic policy core.
RadiiKind
module-attribute
RadiiKind = Literal['covalent', 'van_der_waals']
Supported radii quantity selector.
RadiiSet
module-attribute
RadiiSet = ElementScalarSet
Typing alias for an immutable element-indexed radii dataset.
DEFAULT_COVALENT_POLICY
module-attribute
DEFAULT_COVALENT_POLICY = RadiiPolicy(kind='covalent', base_set='cordero2008', transfers=(SubstitutionTransfer(source=DatasetRef('covalent_radius', 'csd_legacy_cov')),))
Default covalent-radii policy used by the convenience helpers.
DEFAULT_VDW_POLICY
module-attribute
DEFAULT_VDW_POLICY = RadiiPolicy(kind='van_der_waals', base_set='alvarez2013', transfers=(LinearTransfer(predictors=(DatasetRef('atomic_radius', 'rahm2016'),)),))
Default vdW-radii policy used by the convenience helpers.
RadiiPolicy
dataclass
RadiiPolicy(kind: RadiiKind, base_set: str | RadiiSet, transfers: tuple[TransferModel, ...] = (), overrides: Mapping[str, float] = dict(), fallback: float | None = None)
Policy wrapper specialized for radii lookup.
Attributes:
| Name | Type | Description |
|---|---|---|
kind |
RadiiKind
|
Target radii quantity, |
base_set |
str | RadiiSet
|
Packaged set ID or custom ElementScalarSet. |
transfers |
tuple[TransferModel, ...]
|
Ordered substitution or linear-transfer rules. Defaults to no transfers. |
overrides |
Mapping[str, float]
|
Explicit finite, nonnegative element values checked before the base set. Defaults to an empty mapping. |
fallback |
float | None
|
Final finite, nonnegative value, or |
Examples:
>>> import atomref as ar
>>> policy = ar.RadiiPolicy(kind="covalent", base_set="cordero2008")
>>> ar.get_covalent_radius("C", policy=policy)
0.76
Notes
Packaged radii use angstrom. Custom sets, overrides, fallbacks, and transfer sources must use compatible units because policies do not perform unit conversion.
as_value_policy
as_value_policy() -> ValuePolicy[str]
Convert this wrapper into the generic scalar policy.
Returns:
| Type | Description |
|---|---|
ValuePolicy[str]
|
An element-domain ValuePolicy preserving the configured rule order. |
Raises:
| Type | Description |
|---|---|
DatasetError
|
If a packaged set is unknown or non-scalar. |
PolicyError
|
If |
RadiiElementAssessment
dataclass
RadiiElementAssessment(symbol: str, lookup: LookupResult)
Per-element row in a radii policy assessment report.
Attributes:
| Name | Type | Description |
|---|---|---|
symbol |
str
|
Canonical element symbol. |
lookup |
LookupResult
|
Full lookup result for that element. |
RadiiPolicyAssessment
dataclass
RadiiPolicyAssessment(kind: RadiiKind, policy: RadiiPolicy, elements: tuple[str, ...], n_elements: int, n_override: int, n_base: int, n_transfer_substitution: int, n_transfer_linear: int, n_fallback: int, n_missing: int, n_placeholders: int, missing_symbols: tuple[str, ...], placeholder_symbols: tuple[str, ...], fits: tuple[LinearFit, ...] = (), warnings: tuple[str, ...] = (), per_element: tuple[RadiiElementAssessment, ...] = ())
Summary of how a radii policy behaved over a set of elements.
Attributes:
| Name | Type | Description |
|---|---|---|
kind |
RadiiKind
|
Assessed radii quantity. |
policy |
RadiiPolicy
|
Policy that was assessed. |
elements |
tuple[str, ...]
|
Canonical, deduplicated symbols in atomic-number order. |
n_elements |
int
|
Number of assessed elements. |
n_override |
int
|
Results supplied by explicit overrides. |
n_base |
int
|
Results supplied directly by the base set. |
n_transfer_substitution |
int
|
Results supplied by substitution transfers. |
n_transfer_linear |
int
|
Results supplied by linear transfers. |
n_fallback |
int
|
Results supplied by the fallback. |
n_missing |
int
|
Elements without a resolved value. |
n_placeholders |
int
|
Returned values equal to a declared placeholder. |
missing_symbols |
tuple[str, ...]
|
Symbols counted by |
placeholder_symbols |
tuple[str, ...]
|
Symbols counted by |
fits |
tuple[LinearFit, ...]
|
Successful linear-fit diagnostics for configured transfers. |
warnings |
tuple[str, ...]
|
Fit-assessment errors retained as report warnings. |
per_element |
tuple[RadiiElementAssessment, ...]
|
Detailed rows when assessment used |
list_radii_sets
list_radii_sets(kind: RadiiKind, *, usage_role: str | None = None) -> tuple[str, ...]
List packaged radii-set IDs for one radii kind.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
kind
|
RadiiKind
|
|
required |
usage_role
|
str | None
|
Optional case-insensitive metadata-role filter. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[str, ...]
|
Canonical set IDs in curated registry order. |
Raises:
| Type | Description |
|---|---|
PolicyError
|
If |
DatasetError
|
If registry metadata is malformed. |
list_radii_set_infos
list_radii_set_infos(kind: RadiiKind, *, usage_role: str | None = None) -> tuple[DatasetInfo, ...]
Return packaged metadata objects for radii sets of one kind.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
kind
|
RadiiKind
|
|
required |
usage_role
|
str | None
|
Optional case-insensitive metadata-role filter. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[DatasetInfo, ...]
|
Immutable DatasetInfo objects in curated registry order. |
Raises:
| Type | Description |
|---|---|
PolicyError
|
If |
DatasetError
|
If registry metadata is malformed. |
get_radii_set_info
get_radii_set_info(kind: RadiiKind, set_id: str) -> DatasetInfo
Return metadata for one packaged radii set.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
kind
|
RadiiKind
|
|
required |
set_id
|
str
|
Canonical packaged set ID or accepted alias. |
required |
Returns:
| Type | Description |
|---|---|
DatasetInfo
|
Curated metadata, including angstrom units and provenance. |
Raises:
| Type | Description |
|---|---|
PolicyError
|
If |
DatasetError
|
If |
get_radii_set
Load one packaged radii set as an ElementScalarSet.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
kind
|
RadiiKind
|
|
required |
set_id
|
str
|
Canonical packaged set ID or accepted alias. |
required |
Returns:
| Type | Description |
|---|---|
RadiiSet
|
A cached immutable scalar set whose values are in angstrom. |
Raises:
| Type | Description |
|---|---|
PolicyError
|
If |
DatasetError
|
If the set is unknown, malformed, or non-scalar. |
lookup_covalent_radius
lookup_covalent_radius(symbol: str | None, *, policy: RadiiPolicy | None = None) -> LookupResult
Resolve a covalent radius together with provenance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
symbol
|
str | None
|
Symbol-like element token, or |
required |
policy
|
RadiiPolicy | None
|
Covalent RadiiPolicy; |
None
|
Returns:
| Type | Description |
|---|---|
LookupResult
|
Lookup result whose value is in angstrom, or an explicit missing result. |
Raises:
| Type | Description |
|---|---|
DatasetError
|
If a referenced dataset is unknown or non-scalar. |
PolicyError
|
If the policy has the wrong kind or invalid configuration. |
Examples:
>>> lookup_covalent_radius("C").value
0.76
get_covalent_radius
get_covalent_radius(symbol: str | None, *, policy: RadiiPolicy | None = None) -> float | None
Return only the selected covalent radius.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
symbol
|
str | None
|
Symbol-like element token, or |
required |
policy
|
RadiiPolicy | None
|
Covalent RadiiPolicy; |
None
|
Returns:
| Type | Description |
|---|---|
float | None
|
Selected radius in angstrom, or |
Raises:
| Type | Description |
|---|---|
DatasetError
|
If a referenced dataset is unknown or non-scalar. |
PolicyError
|
If the policy has the wrong kind or invalid configuration. |
lookup_vdw_radius
lookup_vdw_radius(symbol: str | None, *, policy: RadiiPolicy | None = None) -> LookupResult
Resolve a van der Waals radius together with provenance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
symbol
|
str | None
|
Symbol-like element token, or |
required |
policy
|
RadiiPolicy | None
|
van der Waals RadiiPolicy; |
None
|
Returns:
| Type | Description |
|---|---|
LookupResult
|
Lookup result whose value is in angstrom, or an explicit missing result. |
Raises:
| Type | Description |
|---|---|
DatasetError
|
If a referenced dataset is unknown or non-scalar. |
PolicyError
|
If the policy has the wrong kind or invalid configuration. |
get_vdw_radius
get_vdw_radius(symbol: str | None, *, policy: RadiiPolicy | None = None) -> float | None
Return only the selected van der Waals radius.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
symbol
|
str | None
|
Symbol-like element token, or |
required |
policy
|
RadiiPolicy | None
|
van der Waals RadiiPolicy; |
None
|
Returns:
| Type | Description |
|---|---|
float | None
|
Selected radius in angstrom, or |
Raises:
| Type | Description |
|---|---|
DatasetError
|
If a referenced dataset is unknown or non-scalar. |
PolicyError
|
If the policy has the wrong kind or invalid configuration. |
assess_radii_policy
assess_radii_policy(elements: Iterable[str], *, policy: RadiiPolicy, detail: bool = False) -> RadiiPolicyAssessment
Assess how a radii policy resolves values over a set of elements.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
elements
|
Iterable[str]
|
Element tokens to normalize, deduplicate, and sort by atomic number. |
required |
policy
|
RadiiPolicy
|
Radii policy to evaluate. |
required |
detail
|
bool
|
Include a
RadiiElementAssessment for
each element when |
False
|
Returns:
| Type | Description |
|---|---|
RadiiPolicyAssessment
|
Counts, missing/placeholder symbols, fit summaries, warnings, and optional per-element detail in a RadiiPolicyAssessment. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If an element token is missing or invalid. |
DatasetError
|
If a referenced dataset is unknown or non-scalar. |
PolicyError
|
If policy or transfer configuration is invalid. |
Examples:
>>> report = assess_radii_policy(
... ["C", "O"], policy=DEFAULT_COVALENT_POLICY, detail=True
... )
>>> report.n_elements, len(report.per_element)
(2, 2)