Strange Matter Engine is an experimental molecular machine-learning project for the OpenADMET CYP inhibition challenge. It will explore whether a compact, learned graph cellular automaton (GCA) can transform molecular structure into interpretable emergent dynamics that predict direct CYP inhibition (pIC50) and time-dependent inhibition (is_TDI).
Each molecule will be represented as a graph: atoms are cells, chemical bonds define their neighbourhoods, and a small shared local rule evolves every atom's state through time. The model will preserve and analyse the complete trajectory of this evolution—from the chemically initialised state through every subsequent generation—rather than reducing the molecule to its final state.
The project is both a predictive experiment and a study of molecular dynamical behaviour. It investigates convergence, oscillations, attractor families, perturbation sensitivity, complex transients, and possible relationships between dynamical regimes and activity cliffs. Any claim of chaotic behaviour requires mathematical evidence.
The work is designed for a personal workstation, with an emphasis on compact models, scientific interpretability, honest benchmarking, and visualisations grounded in quantities genuinely produced or analysed by the model.
Four bond-free molecular graph-CA trajectories cascading through 1,000 generations. Each colour records an evolving atomic state. Select the animation to open the full-resolution video.
Yes, this is actually a molecule. More precisely, the animation below shows information passing among its atoms and evolving over thousands of generations.
Each atom acts as a cell containing dynamic chemical information. The transition rule determines how each atom responds to its neighbours, while the bonds govern how information is exchanged. Single, double, aromatic, and other bond types influence the propagation and processing of that information throughout the molecular graph.
The three visual axes show a reduced representation of the complete atom-by-channel state. The trajectory remains bounded while microscopic perturbations are repeatedly amplified. Float64 Lyapunov-spectrum analysis identified eight expanding directions, and 64 displaced starting states moved towards the same invariant distribution.
This provides strong computational evidence of a high-dimensional, hyperchaotic strange attractor emerging from molecular information flow inside the model. That is awesome.
Trajectory 7 rendered as a rotating three-dimensional phase-space orbit over generations 1,000–5,000. The full atom-by-channel state was circularly embedded and reduced to three PCA coordinates. Select the animated preview to play the full 45-second video.
A subsequent structure–dynamics campaign measured repeated renormalised Lyapunov divergence for 258 held-out molecule–CYP cases and applied 187 frozen-model interventions to trajectories 7 and 8. Lower algebraic connectivity was associated with stronger divergence, with Spearman rho -0.235 and a scaffold-bootstrap 95% interval from -0.352 to -0.118. Molecular weight, graph diameter, and mean shortest path were positively associated with divergence. Targeted bond changes and ring openings produced large local changes in the Lyapunov exponent, providing computational evidence that graph connectivity and bond identity help govern the emergent regime.
The evolving Teaching curriculum records the scientific and mathematical background behind every component so that implementation and understanding advance together.
The Visual Laboratory provides interactive, code-hidden Jupyter experiences with clean RDKit molecular depictions, a restrained cyberpunk visual system, graph views, atom and bond inspectors, encoding heatmaps, and a transparent first graph cellular automaton. The permanent challenge method report always describes the model currently submitted to the leaderboard and retains the same URL when the leading model changes.
The canonical production and submission model is EA-CV-CYP-GCA v1, the Endpoint-Aligned Cross-Validated CYP-Specialist Graph Cellular Automata system. It achieved sealed point MA-ST-RAE 0.754503, bootstrap mean 0.755073 with a 95% interval of 0.717656 to 0.797014, and RMSE 0.852280 pIC50 on the fixed sealed scaffold holdout.
Its official blind evaluation returned MA-ST-RAE 1.0071, macro MAE 1.0778, macro R-squared -0.0715, macro Spearman rho 0.5345, and macro Kendall tau 0.3750. This is the strongest official primary result recorded for the project and is the basis for fixing EA-CV-CYP-GCA as the production method.
EA-CV-CYP-GCA uses chemically encoded atoms as cells, typed bonded interactions, explicit recurrent generations, retained trajectory features, backpropagation, and a genuine differentiable ridge readout. The permanent method report provides the complete configuration, validation protocol, official result, and submission schema.
Ten frozen validation trajectories, two from each DS-GCAE transition-rule family, have also been extended through 1,000 generations and packaged as automatically playing 3D PyMOL colour movies. Instructions and the loader are in results/ds_gcae_1000_generation_pymol. These extensions are visual analysis only and perform no training or model selection.
All future notebooks, plots, reports, molecular diagrams, trajectory visualisations, and presentation graphics must reproduce the established clean cyberpunk visual language. This is a persistent project requirement, not a one-off styling suggestion.
| Role | Colour | Hexadecimal value |
|---|---|---|
| Deep-ink background | Near-black | #070914 |
| Raised panels and code backgrounds | Midnight blue | #11152A |
| Primary signal, graph connectivity, and starts | Electric cyan | #27E1FF |
| Secondary signal, selections, and endpoints | Hot magenta | #FF3CAC |
| Strong changes and checkpoints | Acid yellow–lime | #F9F871 |
| Categorical accent | Cyber orange | #FF9F43 |
| Intermediate states and aromatic edges | Muted violet | #7A5CFA |
| Main text and carbon skeletons | Cool off-white | #DCE6F2 |
| Secondary lines and subdued annotations | Steel grey | #65758B |
| Fluorine and chlorine | Cyber green | #43F6A7 |
Scientific plots may use the closely matched high-contrast plotting variants cyan #00E5FF, magenta #FF1493, lime #A6FF00, violet #6C4CFF, and orange #FF9F1C when stronger separation is required against the deep-ink background.
- Use deep ink for figure and axes backgrounds, with cool off-white labels and restrained grid lines.
- Use cyan for primary information, graph connectivity, reference trajectories, and starting states.
- Use magenta for selected or contrasting information, predictions, and terminal states.
- Use lime or acid yellow for the strongest activity, important thresholds, and exceptional changes.
- Use violet and orange for additional categories rather than changing the principal cyan–magenta hierarchy.
- Preserve clean RDKit chemical rendering: carbon and ordinary bonds are off-white, nitrogen is cyan, oxygen is hot magenta, sulfur and phosphorus are acid yellow, fluorine and chlorine are green, and bromine is orange.
- Colours must encode a stated scientific quantity or category and must be accompanied by labels, legends, or colour bars. They must not imply molecular motion or chemical meaning that the model did not calculate.
- When an existing project graphic is extended or regenerated, retain this palette and semantic mapping unless a scientifically necessary visual encoding is documented explicitly.
Strange Matter Engine uses one scientific codebase on both computers. The molecular preparation, grouped data split, atom and bond features, Graph-CA equations, trajectory fingerprints, ridge readout, losses, metrics, and saved parameters must remain identical across platforms. Only the device performing the tensor arithmetic changes.
This contract is a persistent project requirement:
| Computer | Required device | Principal work |
|---|---|---|
| Windows PC with NVIDIA GPU | CUDA | Production training, hyperparameter searches, multi-seed confirmation, and large batched experiments |
| MacBook without a supported GPU | CPU | Inspecting saved results, generating reports and plots, testing code, and extended forward-only analysis of selected trajectories |
Do not create separate Windows and Mac model implementations. Changes to the scientific model must be made once in the shared repository and exercised through the common runner.
The shared runtime accepts three explicit device values:
auto: select CUDA when PyTorch can access it; otherwise select CPU;cuda: require an available CUDA device and stop with a clear error if none is available; andcpu: require CPU execution even when CUDA exists.
The production controller defaults to auto. It uses the active Python interpreter, unless --python or the SME_PYTHON environment variable explicitly names another interpreter. No user-specific Windows or macOS path is stored in the controller.
Every completed training run records the operating system, machine architecture, Python version, Python executable, PyTorch version, CUDA runtime, resolved device, and GPU name in metrics.json. PyTorch checkpoints must always be loaded with an explicit map_location, allowing CUDA-trained parameters to be inspected on a CPU-only Mac.
From Anaconda Prompt or PowerShell in the repository root:
conda env create -f environment-gpu.yml
conda activate strange-matter-gpu
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"The first printed value must be True before beginning production training.
Run one complete production transition-rule study with:
python scripts/run_production_transition_study.py --rule coupled_map --device autoUse --device cuda when a run must fail rather than silently fall back to the CPU. The runner batches molecular graphs on the selected device; batch size remains a hyperparameter and may be reduced if GPU memory is insufficient.
From Terminal in the repository root:
conda env create -f environment-cpu.yml
conda activate strange-matter-cpu
python -c "import torch; print(torch.cuda.is_available())"The expected value on this CPU-only Mac is False.
Use CPU explicitly for a production-controller invocation:
python scripts/run_production_transition_study.py --rule coupled_map --device cpuA complete production search is computationally expensive on the Mac and is normally assigned to the Windows GPU. CPU execution is intended for verification and analysis, and for extended forward-only trajectories after a trained model and a small candidate set have been frozen.
- Commit and push code, environments, configuration, metrics, selected checkpoints, prediction tables, and reports to
mainfrom the machine that produced them. - Pull
mainon the other computer before inspecting or extending the work. - Preserve seeds, grouped splits, hyperparameters, numerical precision, and model version when comparing CPU and CUDA results.
- Expect small floating-point differences between CPU and CUDA. Compare them using declared numerical tolerances rather than requiring bit-for-bit equality.
- Never use blinded challenge labels for training, hyperparameter selection, early stopping, or dynamical-candidate selection.
Long-horizon dynamical investigation is performed only after production training and model selection. It loads a frozen checkpoint, selects validation molecule–CYP cases using several complementary short-trajectory criteria, and propagates those cases without backpropagation or parameter updates.
The coupled-map study defaults to 100 candidates, balanced as 25 cases per CYP target, 5,000 generations, and a 1,000-generation discarded transient:
conda activate strange-matter-cpu
sh scripts/run_extended_coupled_map_dynamics.shThe analysis measures the complete atom-by-channel state rather than only the molecule-level mean. It writes recurrence, late-motion, frequency, autocorrelation, and finite-time perturbation summaries to results/coupled_map_5000_generation_dynamics. It stores molecule-level mean trajectories for plotting but deliberately creates no PyMOL or atom-coordinate files. PyMOL generation begins only after scientifically interesting structures have been reviewed and selected.
The primary goal is to build, understand, validate, and submit a complete end-to-end model that maps:
SMILES + CYP identity → predicted direct-inhibition pIC50 + TDI probability
The direct-inhibition and time-dependent-inhibition (TDI) challenge tracks are independent. A shared GCA trajectory encoder will support two task-specific readouts:
- a regression readout predicting
pIC50for CYP1A2, CYP2C9, CYP2D6, and CYP3A4; and - a binary-classification readout predicting
is_TDIfor CYP2D6 and CYP3A4.
The TDI readout will produce a probability during training and validation. A decision threshold selected using training data only will convert that probability into the Boolean value required by the challenge submission schema.
Success means:
- producing a valid competition submission;
- understanding and being able to explain every equation, operation, and trainable component;
- retaining a genuine graph-cellular-automata architecture built around a repeated local rule;
- using the full temporal trajectory as part of the molecular representation;
- comparing predictive performance fairly with conventional baselines;
- analysing emergent dynamics without overclaiming; and
- creating memorable scientific visualisations and a clear public account of the project.
Leaderboard victory is welcome, but learning, scientific defensibility, completion, and insight are the principal measures of success.
The authoritative rules, submission form, and live leaderboard are hosted in the OpenADMET CYP Inhibition Blind Challenge Space. The two tracks are independent: a team may enter either or both, each through a separate file and leaderboard.
| Track | Targets | Primary metric | Secondary metrics |
|---|---|---|---|
| Direct inhibition (regression) | pIC50 for CYP1A2, CYP2C9, CYP2D6, and CYP3A4 |
Macro-Averaged Soft-Threshold Relative Absolute Error (MA-ST-RAE) across the four isoforms | MAE, R², Spearman ρ, and Kendall's τ |
| Time-dependent inhibition (classification) | Boolean is_TDI for CYP2D6 and CYP3A4 |
Matthews Correlation Coefficient (MCC) | Accuracy, precision, recall, and F1 |
All reported metrics use 1,000 bootstrap resamples. For direct inhibition, values below pIC50 = 4 lie outside the assay's reliable dynamic range. ST-RAE measures error from the nearest bound of the fitted dose-response credible interval, with zero error for predictions inside that interval.
Production hyperparameter promotion, early stopping, seed confirmation, and final model selection use grouped-validation MA-ST-RAE, with the four CYP isoforms weighted equally. The differentiable training objective remains mean squared error because the interval-based challenge metric contains flat and non-smooth regions; RMSE remains a secondary diagnostic and no longer determines which configuration advances. Credible-interval columns are stored in the prepared graph cache and written beside every labelled prediction for auditability.
Challenge-aligned v5 studies keep the original scaffold holdout sealed during hyperparameter search. Broad and surrogate-guided trials use scaffold folds drawn only from the fitting pool, successive halving promotes stable configurations, and leading configurations are confirmed across five folds and three seeds. Point MA-ST-RAE provides efficient epoch-level screening; finalists receive the official 1,000-resample bootstrap together with MAE, R2, Spearman rho, Kendall tau, and 95% intervals. All ten rules search the same chemistry profiles, including periodic, valence, electronic, ring, local-neighbour, and comprehensive atom descriptors.
The TDI label represents an IC50 shift after preincubation. For compounds with direct-inhibition pIC50 > 4, a shift greater than two-fold (log10(2) = 0.301) is positive and a smaller shift is negative. When direct-inhibition pIC50 < 4, a TDI-arm pIC50 > 4.301 is an inferred positive, while a TDI-arm pIC50 < 4 is assigned negative. Predictions are required for every test compound, although only confidently assigned labels contribute to the classification score.
Each submission must be a .parquet file (preferred by the organisers) or .csv file with exactly 750 rows, one for each blinded test compound. Column names are case-sensitive. Every prediction cell must be populated; regression values must be finite floats with no NaN, inf, or -inf, and classification values must be Boolean (True/False or 1/0). Run the official tutorial repository's validation script before uploading.
The regression file must contain exactly these six columns:
SMILES
Molecule_Name
CYP1A2_pIC50_direct_inhibition
CYP2C9_pIC50_direct_inhibition
CYP2D6_pIC50_direct_inhibition
CYP3A4_pIC50_direct_inhibition
The classification file must contain exactly these four columns:
SMILES
Molecule_Name
CYP2D6_is_TDI
CYP3A4_is_TDI
- Submit under one Hugging Face account for the collaborating team or laboratory. Cooperating members may not enter separately.
- Submissions are limited to one every 12 hours. Only the latest valid submission determines the live leaderboard standing.
- External data and pretrained models are permitted. Use of proprietary training data must be disclosed during submission.
- Public source code is encouraged and is required for consideration for the Innovation in ML Award. Select the open-source disclosure and supply a publicly accessible repository link when submitting.
- The intermediate-submission deadline is September 24, 2026 at 23:59 UTC. The intermediate leaderboard is released September 25 using the full test set, without revealing ground-truth labels.
- Final submissions close November 3, 2026 at 23:59 UTC. Final results and challenge wrap-up begin November 4.
The blinded test labels must remain excluded from training, hyperparameter optimisation, early stopping, threshold selection, and model selection. The intermediate leaderboard is for reporting progress and must not become a tuning target.
TRAINING DATA: SMILES + CYP identity + experimental pIC50
│
▼
Molecular graph → initial atom states X⁽⁰⁾
│
▼
Shared local CA rule, repeated for T generations
│
▼
Complete trajectory X⁽⁰⁾, X⁽¹⁾, …, X⁽ᵀ⁾
│
▼
Interpretable dynamical fingerprint z
┌─────────────┴─────────────┐
▼ ▼
Regression readout Binary-classification readout
→ predicted pIC50 → predicted TDI probability
│ │
▼ ▼
Regression loss against Classification loss against
experimental pIC50 experimental is_TDI label
└─────────────┬─────────────┘
▼
LEARNING 1: shared CA rule LEARNING 2: task-specific readouts
Backpropagation through Differentiable ridge solves pIC50
all T CA generations learns coefficients βreg; a regularised
the shared transition logistic readout learns TDI
parameters θ coefficients βTDI
│
▼
Validate → select TDI threshold → freeze parameters
│
▼
Unseen SMILES + CYP → same frozen pipeline
┌─────────────┴─────────────┐
▼ ▼
submitted finite pIC50 submitted Boolean is_TDI
The direct-inhibition model backpropagates query error through a genuine ridge solve and through repeated CA evolution to optimise the shared transition parameters (θ). Ridge coefficients (βreg) are solved with torch.linalg.solve from support fingerprints and labels; Adam updates only θ. At validation and blind-prediction boundaries, scaling and ridge state are fitted using permitted fitting observations, then frozen. The later TDI programme will use its own regularised logistic readout and training protocol. Once training and validation are complete, all parameters and transformations will be frozen before generating blind-set predictions.
The production encoder supports ten differentiable local transition laws: gated residual, inertial reaction-diffusion, activator-inhibitor, coupled map, damped symplectic, FitzHugh-Nagumo, Gray-Scott, Kuramoto-Sakaguchi, conservative graph flux, and delayed memory. Every rule updates atoms synchronously, shares its parameters across atoms and generations, and communicates only along declared chemical bonds. Bond descriptors gate neighbour messages, so bond type, aromaticity, conjugation, ring membership, and stereochemistry can modulate information transfer without introducing a global molecular shortcut.
The five new candidates use the same grouped-validation production controller:
python scripts/run_production_transition_study.py --rule fitzhugh_nagumo --device auto
python scripts/run_production_transition_study.py --rule gray_scott --device auto
python scripts/run_production_transition_study.py --rule kuramoto_sakaguchi --device auto
python scripts/run_production_transition_study.py --rule conservative_graph_flux --device auto
python scripts/run_production_transition_study.py --rule delayed_memory --device autoAll rules share tunable update scale, initial-state scale and training noise, support/query fraction, bond-gate temperature, channel count, generation count, optimisation controls, and a cosine learning-rate schedule. Rule-specific dynamical controls retain their scientific interpretation. The molecular fingerprint concatenates final-state means and variances with temporal means, temporal variances, and accumulated motion, allowing transient and terminal CA behaviour to enter the genuine closed-form ridge readout.
Production selection uses grouped validation only. Stable finalists are repeated across three seeds and ranked by mean RMSE plus one quarter of the seed standard deviation. Dynamical measurements remain descriptive secondary outputs and never influence predictive promotion. The blinded challenge set remains outside tuning, selection, and report generation.
For the chemistry-augmented Gray-Scott and coupled-map studies, atom feature profiles are also tuned. Every profile retains the original 25 atom channels and may add periodic properties, valence descriptors, electronic descriptors, ring geometry, or controlled combinations of those groups. Run the resumable CUDA/CPU searches with python scripts/run_gray_scott_feature_search.py --device auto or python scripts/run_coupled_map_feature_search.py --device auto; each dedicated graph cache is prepared with the blinded set excluded.