← Về thư mục
📄 / / profiles / r-and-d / raw_evidence / OpenAI4S / skills / admet_genetic / references / data_contracts.md

Data Contracts and Lineage

Molecule identity

Every logged molecule must satisfy this invariant:

molecule_id <-> canonical smiles

Operationally, this means:

Do not reuse the same canonical SMILES across generations under different IDs. If a molecule reappears, record the operation as a duplicate failure rather than adding another candidate record.

Required columns for outputs

For any output file, minimum required fields:

molecule_id
generation
smiles
parent
parents
parent_smiles
operation
operation_detail
status
qed
sa_score
admet_score
admet_risk_flags
admet_failed
total_score
passes_filters
MW
LogP
TPSA
HBD
HBA
RotatableBonds
RingCount

Additional raw columns are allowed. Store raw ADMET predictions in admet_predictions_json when preserving endpoint-level outputs.

Parent fields

Use these rules exactly:

parent_smiles is informational. Use IDs, not SMILES, for all programmatic lineage traversal.

operation_detail JSON

operation_detail should be valid JSON. Recommended shape:

{
  "operation": "mutation",
  "operator_detail": "add_methyl_to_idx_1",
  "parent_ids": ["seed_001"],
  "parent_smiles": ["CCOC(=O)c1ccccc1"],
  "child_canonical_smiles": "CC(C)OC(=O)c1ccccc1"
}

For crossover, operator_detail may contain:

{
  "operator": "brics_crossover",
  "parent_fragment_counts": [4, 6],
  "selected_fragments": ["[16*]c1ccccc1", "[3*]O[3*]"]
}

Visualization expectations

The optimization-history visualization: