Assembly Index Skill: Molecular Complexity Validation
SkillDev toolsLee Cronin's Assembly Theory for molecular complexity measurement and
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Assembly Index Skill: Molecular Complexity Validation skill
What this skill tells your AI
The instructions your AI receives, as published by plurigrid/asi in skills/assembly-index/SKILL.md and read by ahel’s review.
Status: ✅ Production Ready Trit: -1 (MINUS - validator/constraint) Color: #2626D8 (Blue) Principle: Complexity threshold → Life signature Frame: Assembly pathways with minimal step counting
Overview
Assembly Index measures molecular complexity by counting the minimum number of joining operations needed to construct a molecule from basic building blocks. Molecules with assembly index > 15 are biosignatures—too complex for random chemistry.
- Assembly pathway: Shortest construction sequence
- Copy number threshold: Abundance × complexity = life signal
- Molecular DAG: Directed acyclic graph of substructures
- Mass spectrometry integration: MA(m/z) measurement
Core Formula
MA(molecule) = min |steps| to construct from primitives
Life threshold: MA > 15 with copy_number > 1
def assembly_index(molecule: Molecule) -> int:
"""Compute minimum assembly steps via dynamic programming."""
substructures = enumerate_substructures(molecule)
dag = build_assembly_dag(substructures)
return shortest_path_length(dag, source="primitives", target=molecule)
Key Concepts
1. Assembly Pathway Enumeration
class AssemblyPathway:
def __init__(self, molecule):
self.mol = molecule
self.fragments = self.decompose()
def decompose(self) -> list[Fragment]:
"""Find all valid bond-breaking decompositions."""
return [split for split in self.mol.bonds
if split.yields_valid_fragments()]
def minimal_pathway(self) -> list[JoinOperation]:
"""DP over fragment DAG for minimum steps."""
memo = {}
return self._dp_assemble(self.mol, memo)
2. Copy Number Amplification
def is_biosignature(molecule, sample) -> bool:
ma = assembly_index(molecule)
copies = sample.count(molecule)
# Life creates copies of complex molecules
return ma > 15 and copies > 1
3. Tandem Mass Spectrometry Integration
def ma_from_ms2(spectrum: MS2Spectrum) -> float:
"""Estimate assembly index from fragmentation pattern."""
fragments = spectrum.peaks
dag = reconstruct_assembly_dag(fragments)
return dag.longest_path()
Commands
# Compute assembly index
just assembly-index molecule.sdf
# Validate biosignature threshold
just assembly-validate sample.ms2
# Compare assembly pathways
just assembly-compare mol1.sdf mol2.sdf
Integration with GF(3) Triads
assembly-index (-1) ⊗ turing-chemputer (0) ⊗ crn-topology (+1) = 0 ✓ [Molecular Complexity]
Related Skills
- turing-chemputer (0): Execute chemical synthesis programs
- crn-topology (+1): Generate reaction network topologies
- kolmogorov-compression (-1): Algorithmic complexity baseline
Skill Name: assembly-index Type: Complexity Validator Trit: -1 (MINUS) Color: #2626D8 (Blue)
ALife atlas
Part of: alife-commons. Family: complexity-measurement. Canonical: assembly-index.
Signals
- GitHub stars
- 63
- Forks
- 12
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
assembly-index- Source
- github.com/plurigrid/asi