autofragment.MolecularPartitioner
- class autofragment.MolecularPartitioner(n_fragments=4, method='kmeans', random_state=42, strict_balanced=None, topology_refine=False, topology_mode='graph', topology_hops=1, topology_layers=1, topology_k_per_layer=1, topology_bond_policy='infer', tiers=None, n_primary=None, n_secondary=None, n_tertiary=None, init_strategy=None, init_strategy_primary=None, init_strategy_secondary=None, init_strategy_tertiary=None)[source]
Partitioner for water clusters and similar molecular systems.
Supports both flat partitioning (default) and tiered hierarchical partitioning (2-tier and 3-tier).
- Parameters:
n_fragments (int) – Number of fragments (flat mode). Default is 4.
method (str, optional) – Clustering method. Default is “kmeans”.
random_state (int, optional) – Random seed for clustering. Default is 42.
strict_balanced (bool, optional) – If True, validate equal cluster sizes. Default is True for kmeans_constrained, False otherwise.
tiers (int, optional) – Number of hierarchy tiers (2 or 3). None = flat mode (default).
n_primary (int, optional) – Number of primary fragments (tiered mode).
n_secondary (int, optional) – Number of secondary fragments per primary (tiered mode).
n_tertiary (int, optional) – Number of tertiary fragments per secondary (3-tier mode).
init_strategy (str | ndarray | dict | None, optional) – Default seeding strategy for all tiers / flat mode.
init_strategy_primary (str | ndarray | dict | None, optional) – Override seeding strategy for primary (tier-1) clustering.
init_strategy_secondary (str | ndarray | dict | None, optional) – Override seeding strategy for secondary (tier-2) clustering.
init_strategy_tertiary (str | ndarray | dict | None, optional) – Override seeding strategy for tertiary (tier-3) clustering.
topology_refine (bool)
topology_mode (SelectionMode)
topology_hops (int)
topology_layers (int)
topology_k_per_layer (int)
topology_bond_policy (BondPolicy)
Examples
Flat mode:
>>> partitioner = MolecularPartitioner(n_fragments=2, method="kmeans") >>> tree = partitioner.partition(system) >>> len(tree.fragments) 2
Tiered mode:
>>> partitioner = MolecularPartitioner( ... tiers=2, n_primary=4, n_secondary=4 ... ) >>> tree = partitioner.partition(system) >>> tree.n_primary 4
See also
autofragment.partitioners.batch.BatchPartitionerFor processing multiple files.
autofragment.core.types.FragmentTreeThe result object containing fragments.
- __init__(n_fragments=4, method='kmeans', random_state=42, strict_balanced=None, topology_refine=False, topology_mode='graph', topology_hops=1, topology_layers=1, topology_k_per_layer=1, topology_bond_policy='infer', tiers=None, n_primary=None, n_secondary=None, n_tertiary=None, init_strategy=None, init_strategy_primary=None, init_strategy_secondary=None, init_strategy_tertiary=None)[source]
Initialize a new MolecularPartitioner instance.
- Parameters:
n_fragments (int)
method (str)
random_state (int)
strict_balanced (bool | None)
topology_refine (bool)
topology_mode (Literal['graph', 'euclidean'])
topology_hops (int)
topology_layers (int)
topology_k_per_layer (int)
topology_bond_policy (Literal['infer', 'strict'])
tiers (int | None)
n_primary (int | None)
n_secondary (int | None)
n_tertiary (int | None)
init_strategy_primary (None | str | ndarray | Dict[str, Any])
init_strategy_secondary (None | str | ndarray | Dict[str, Any])
init_strategy_tertiary (None | str | ndarray | Dict[str, Any])
Methods
__init__([n_fragments, method, ...])Initialize a new MolecularPartitioner instance.
partition(system[, source_file])Partition a chemical system into fragments.