Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
.claude/skills/mkurman-molfeat/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -48% | 0% |
------|------|------------|-------|----------| | ecfp | Fingerprint | 2048 | Fast | General purpose | | maccs | Fingerprint | 167 | Very fast | Scaffold similarity | | desc2D | Descriptors | 200+ | Fast | Interpretable models | | mordred | Descriptors | 1800+ | Medium | Comprehensive features | | map4 | Fingerprint | 1024 | Fast | Large-scale screening | | ChemBERTa-77M-MLM | Deep learning | 768 | Slow | Transfer learning | | `gin-supervised-masking` | GNN | Variable | Slow | Graph-based models |
First run is slow; subsequent runs benefit from caching
This skill includes comprehensive reference documentation:
Complete API documentation covering:
molfeat.calc - All calculator classes and parametersmolfeat.trans - Transformer classes and methodsmolfeat.store - ModelStore usageWhen to load: Reference when implementing specific calculators, understanding transformer parameters, or integrating with scikit-learn/PyTorch.
Comprehensive catalog of all 100+ featurizers organized by category:
When to load: Reference when selecting the optimal featurizer for a specific task, exploring available options, or understanding featurizer characteristics.
Search tip: Use grep to find specific featurizer types:
bashgrep -i "chembert" references/available_featurizers.md grep -i "pharmacophore" references/available_featurizers.md
Practical code examples for common scenarios:
When to load: Reference when implementing specific workflows, troubleshooting issues, or learning molfeat patterns.
Enable error handling to skip invalid SMILES:
pythontransformer = MoleculeTransformer( calc, ignore_errors=True, verbose=True )
Process in chunks or use streaming approaches for datasets > 100K molecules.
Some models require additional packages. Install specific extras:
bashuv pip install "molfeat[transformer]" # For ChemBERTa/ChemGPT uv pip install "molfeat[dgl]" # For GIN models
Save exact configurations and document versions:
pythontransformer.to_state_yaml_file("config.yml") import molfeat print(f"molfeat version: {molfeat.__version__}")
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-14 | fail→fail | 3,475 | 4,592 | +32% | 1 | 1 | 0% | 690 | 1,692 | +145% | 0 | 0 | — |
case-01 | fail→pass | 12,921 | 13,023 | +1% | 1 | 1 | 0% | 2,512 | 3,505 | +40% | 0 | 0 | — |
case-02 | fail→pass | 7,367 | 3,929 | -47% | 1 | 1 | 0% | 1,202 | 1,508 | +25% | 0 | 0 | — |
case-03 | pass→pass | 7,924 | 7,624 | -4% | 1 | 1 | 0% | 1,634 | 2,379 | +46% | 0 | 0 | — |
case-04 | pass→fail | 13,895 | 10,690 | -23% | 1 | 1 | 0% | 3,124 | 3,186 | +2% | 0 | 0 | — |
case-05 | pass→fail | 6,991 | 4,199 | -40% | 1 | 1 | 0% | 1,451 | 1,715 | +18% | 0 | 0 | — |
case-06 | pass→pass | 3,639 | 3,830 | +5% | 1 | 1 | 0% | 547 | 1,441 | +163% | 0 | 0 | — |
case-07 | pass→pass | 4,957 | 2,909 | -41% | 1 | 1 | 0% | 680 | 1,284 | +89% | 0 | 0 | — |
case-08 | pass→pass | 5,830 | 1,630 | -72% | 1 | 1 | 0% | 896 | 1,088 | +21% | 0 | 0 | — |
case-09 | pass→pass | 12,005 | 2,556 | -79% | 1 | 1 | 0% | 2,104 | 1,280 | -39% | 0 | 0 | — |
case-10 | pass→pass | 4,930 | 3,904 | -21% | 1 | 1 | 0% | 785 | 1,443 | +84% | 0 | 0 | — |
case-11 | pass→pass | 8,088 | 4,679 | -42% | 1 | 1 | 0% | 1,367 | 1,555 | +14% | 0 | 0 | — |
case-12 | fail→fail | 3,963 | 5,009 | +26% | 1 | 1 | 0% | 696 | 1,750 | +151% | 0 | 0 | — |
case-13 | fail→pass | 5,918 | 3,537 | -40% | 1 | 1 | 0% | 969 | 1,451 | +50% | 0 | 0 | — |
case-15 | fail→fail | 7,040 | 3,631 | -48% | 1 | 1 | 0% | 1,165 | 1,477 | +27% | 0 | 0 | — |
case-16 | pass→pass | 18,742 | 2,371 | -87% | 1 | 1 | 0% | 3,189 | 1,225 | -62% | 0 | 0 | — |
case-17 | fail→pass | 9,860 | 3,255 | -67% | 1 | 1 | 0% | 1,691 | 1,399 | -17% | 0 | 0 | — |
case-18 | fail→pass | 14,972 | 2,631 | -82% | 1 | 1 | 0% | 2,446 | 1,272 | -48% | 0 | 0 | — |
case-19 | fail→pass | 10,661 | 2,823 | -74% | 1 | 1 | 0% | 1,685 | 1,315 | -22% | 0 | 0 | — |
case-20 | pass→pass | 8,799 | 4,129 | -53% | 1 | 1 | 0% | 1,472 | 1,606 | +9% | 0 | 0 | — |
case-21 | pass→pass | 10,761 | 8,167 | -24% | 1 | 1 | 0% | 1,707 | 2,296 | +35% | 0 | 0 | — |
case-22 | pass→pass | 2,195 | 1,594 | -27% | 1 | 1 | 0% | 296 | 1,062 | +259% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +18 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.