Assembly Index Skill: Molecular Complexity Validation

SkillDev tools

Lee Cronin's Assembly Theory for molecular complexity measurement and

Available today. Use it from your connected AI after setup.

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.

  1. Assembly pathway: Shortest construction sequence
  2. Copy number threshold: Abundance × complexity = life signal
  3. Molecular DAG: Directed acyclic graph of substructures
  4. 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