Summary
Follow-up to the feature extraction PR (Person 2 / Phase 2). Complete remaining core feature-engineering work: domain delta features relative to reference structures, expanded tests, a feature-column manifest in docs, and minor code cleanup.
Does not depend on Person 1's curated annotations or OPM data.
Background
The workplan (Person 2, task 2) asks for domain distances/angles and changes relative to reference structures. Current confostate/features/domains.py computes absolute inter-helix distances and angles only — delta features are not yet implemented.
Reference PDBs are already defined in confostate/features/rmsd.py:
| State |
Reference PDB |
OF_open |
3F3E |
IF_open |
3F3A |
Occluded |
3F4J |
Intermediate |
3USI |
Tasks
1. Domain delta features
2. Tests
3. Feature column manifest
4. Code cleanup
Acceptance criteria
Out of scope
- Hollow cavity detection (Tier 4 stretch)
- RCSB metadata fetch / OPM integration (Person 1)
- Renaming annotation status columns (PR approved as-is)
Files likely touched
confostate/features/domains.py
confostate/features/pipeline.py
tests/test_features.py
docs/features.md
Test plan
pip install -e ".[dev]"
python scripts/download_structures.py --codes 3F3E 3F3A 3F4J 3USI --output-dir input
pytest tests/test_features.py -v
python -c "from confostate.features import extract_features; print([k for k in extract_features('input/3F3A.pdb', reference_dir='input') if 'delta' in k])"
Summary
Follow-up to the feature extraction PR (Person 2 / Phase 2). Complete remaining core feature-engineering work: domain delta features relative to reference structures, expanded tests, a feature-column manifest in docs, and minor code cleanup.
Does not depend on Person 1's curated annotations or OPM data.
Background
The workplan (Person 2, task 2) asks for domain distances/angles and changes relative to reference structures. Current
confostate/features/domains.pycomputes absolute inter-helix distances and angles only — delta features are not yet implemented.Reference PDBs are already defined in
confostate/features/rmsd.py:OF_openIF_openOccludedIntermediateTasks
1. Domain delta features
confostate/features/domains.py(or a small helper) for eachLEUT_DOMAIN_PAIRSpair, e.g.:domain_TM1_TM7_distance_delta_vs_3F3Edomain_TM1_TM7_angle_delta_vs_3F3Ermsd.py(at minimum vs primary OF reference3F3E; optionally vs all four state references)extract_features()viapipeline.pyif not automaticNaN, consistent with RMSD module)2. Tests
tests/test_features.pyfor delta features3. Feature column manifest
docs/features.mdlisting every output column fromextract_features()4. Code cleanup
sort_by_residin_structure.pyif still unused)familyparam inpipeline.pyif keeping it for future multi-family supportAcceptance criteria
pytest tests/test_features.py -vpassesextract_features("input/3F3E.pdb")includes delta feature keysdocs/features.mddocuments all output columnsOut of scope
Files likely touched
confostate/features/domains.pyconfostate/features/pipeline.pytests/test_features.pydocs/features.mdTest plan