Date: 2026-06-15
Status: Planning Phase
Team Size: 6 people
ConfoState development split into 6 parallel work streams, each led by one team member. Dependencies are kept minimal to enable parallel progress.
- 2026-06-15 initial draft (AI generated)
- 2026-06-29 annotated in group meeting
- 2026-07-13 Person 3 execution plan added in Plans/person3-ml-workplan-2026-07-13.md
- Talk to persons with whom you have dependencies: agree on data structures and file formats, document with dates/versions.
- Don't be afraid to make up data to keep working.
Role: Data lead
Duration: 3–4 weeks
Milestone: Phase 1 completion
Assignee: Josh
-
Verify and curate LeuT annotations
- Cross-check each of the 25 PDB entries in
data/annotations/leu_t_transporters.csv(ok) - Fetch authoritative metadata from RCSB API (resolution, experimental method, release date, DOI) (ok)
- generate code to get metadata (ok)
- should become re-usable (ok)
- Verify conformational state labels against primary literature (idk -- is hard - no metadata)
- initially manually
- look into automating!
- develop a vocabulary of state descriptors (use literature!)
- Add DOI and PubMed IDs to the reference column (ok)
- automate
- Cross-check each of the 25 PDB entries in
-
Fetch membrane orientations from OPM
-
For each structure, retrieve orientation from OPM database or submit calculation job (currently working)
- automate: function to retrieve OPM structure for
- either given PDB ID or
- structure in PDB format (may involve waiting for OPM server to process)
- retrieve embedded structure and geometric parameters
- automate: function to retrieve OPM structure for
-
Add columns to CSV:
opm_tm_count,opm_tilt_angle,opm_rotation_angle -
OPM can be installed locally (compile FORTRAN).
- license unknown
- create a private repository
- make
immersexecutable available - possibly later: Python bindings
-
-
Fetch Secondary Structure Data
- Binding Site/Ligand from pdb. ()
- Secondary Structure from pdb. Examples such as helical bundles and beta sheets.
- Different structural domains such as scaffold and transport domains. This would differ on a per family basis. READ PAPERS!!!!
Random idea use an LLM to classify state (https://docs.rc.asu.edu/ai/api/)
"No-cost LLM API access is available to all users with an ASURITE username. See how to request a Non-HPC Account."
-
Build data validation pipeline (idk -- is hard - no metadata)
- Document the file format!!!! (manually check!)
- Create
confostate/data/validators.pywith schema checks for annotations CSV- check that the CSV is complete
- has correct entries, eg proper states
- Document data quality requirements in
docs/data-curation.md
-
Expand to additional protein families (if time permits)
- Curate annotations for 1–2 additional families (e.g., ABC transporters, GPCRs)
- ✓ Verified
data/annotations/leu_t_transporters.csvwith authoritative metadata - ✓ OPM orientation data added to annotations
- definition of the CSV file with annotations
- ✓
confostate/data/validators.py - ✓ Data curation guide in
docs/
- Requires access to RCSB API and OPM database (no code dependencies on others)
2 person work package (work on separate features, agree on general API)
Role: Structural biology & feature engineering lead
Duration: 3–4 weeks
Milestone: Phase 2 completion
Assignee: Amru, Marshal
-
Define file/data formats for features
- document features (descriptions, identifiers)
- document CSV file layouts
- document API (eg pandas data frames layouts)
- curate documentation on features (stewardship)
-
Implement cavity/solvent accessibility features
- Create
confostate/features/cavity.py - Compute binding site volume and solvent-accessible surface area
- Features:
cavity_volume,cavity_accessibility_in,cavity_accessibility_out - Requires preprocessing pipeline from Person 1? Included in pdb annonations.
- Other geometry may be ok. Probably need orientation?
- Run hollow (program that fill structural holes)
- Proper initialization (shortest path of nearest neighbor graph of hollow centers)
- Skips surface gen?
- Need to know where binding site is
- Runs on python 2.7 (need a rewrite)
- Extracting Features
- How many paths?
- Caliber (Transition Path?)
Example use of hollow/networx for finding shortes path between binding site and transport site https://github.com/Becksteinlab/TBC1D5-Rab7-NHE6-proton-diffusion-model/tree/main/proton_pathway
- Create
-
Implement domain distance features
- Create
confostate/features/domains.py - Define key helices/domains for LeuT (e.g., TM1–TM7, substrate-binding residues)
- Compute pairwise distances and angles; track changes relative to reference structures
- Create
-
Implement RMSD-to-reference features
- Create
confostate/features/rmsd.py - Select 2–3 reference structures per state from curated dataset
- Compute RMSD
- Sequence Alignment
- Create
-
Implement OPM orientation features
- Create
confostate/features/orientation.py - Reusable previous OPM workflow from workpackage 1?
- Use OPM tilt, rotation, and depth data as features
- Create
-
Add symmetry features (optional)
- Create
confostate/features/symmetry.py - Compute repeat-unit symmetry score
- Lucy Forest might have a database?
- Look for inverted repeats (probably hard)
- Sequence alignment
- Superimposition
- looks hard :9
- Create
-
Implement feature vector exporter
- Create
confostate/features/__init__.pywithextract_features(pdb_path)→ feature dict - Unit tests for each module
- Feature vector
- Create
- ✓
confostate/features/with >=3 feature modules - ✓ Tested
extract_features()function - ✓ Feature documentation in
docs/features.md - ✓ Example feature vectors for all 25 LeuT structures
- Depends on: Data person (for reference structures and collaberate on OPM data)
- For ML person (feature vectors needed for training) -- create a synthetic feature vector
Role: Machine learning engineer
Duration: 3–4 weeks
Milestone: Phase 3 completion
Assignee: Chenou
Detailed execution plan: Plans/person3-ml-workplan-2026-07-13.md
-
Build dataset loader
- Create
confostate/data/datasets.py - Combine annotations CSV, PDB structures, and feature vectors
- Implement cleaning and normalization
- Implement train/test splits
- Create
-
Implement baseline models
- Create
confostate/models/baseline.py - Logistic regression, Random Forest, SVM, neural networks
- Hyperparameter tuning
- Decide which models to use?
- Create
-
Build training pipeline
- Create
confostate/models/train.py - Cross-validation, early stopping, metric logging
- Save trained models to disk
- Create
-
Implement evaluation & reporting
- Create
confostate/models/evaluate.py - Confusion matrix, precision/recall, per-state metrics
- Generate evaluation report (HTML/Markdown)
- Metrics to consider:
- Test set accuracy
- Confidence Levels in conformational (how certain)
- ROC Curve (area under the curve)
- Create
-
Build model registry
- Create
confostate/models/registry.py - Map family → trained model artifact
- Packaging different models with optimized hyperparameters
- Should hyperparameters be family agnostic or family specific?
- consensus model?
- Version tracking
- Create
- ✓
confostate/models/with training pipeline - ✓ Trained baseline models saved to
data/models/ - ✓ Evaluation report with per-family metrics
- ✓ Model registry and versioning scheme
- Depends on: Feature person (feature extraction), Data person (labels)
- Blocks: Explain person (feature importance for explanations)
Role: Interpretability lead
Duration: 2–3 weeks
Milestone: Phase 4 completion
Assignee: Leah, Apollo
-
Implement feature importance extraction
- Create
confostate/explain/importance.py - SHAP values, permutation importance, or model-specific methods
- Map features to human-readable names
- Create
-
Build explanation renderer
- Create
confostate/explain/render.py - Convert feature importance → natural language
- HOW??? [Oliver asks for a friend]
- We can use a open-weight model (run Llama, ... free tokens at ASU)
- Install here...
- Template-based explanations (e.g., "TM1–TM7 distance of X Å is consistent with {state}")
- Create
-
Add literature linking
- Create
confostate/explain/citations.py - Map features/states to curated references (DOI, PubMed ID)
- Include in explanation text
- Create
-
Implement explanation exporter
- Create
confostate/explain/__init__.pywithexplain(prediction)→ explanation text - Generate example explanations for all test set structures
- Create
-
Documentation and examples
- Write
docs/explainability.md - Example explanation outputs
- Write
- ✓
confostate/explain/with full explanation pipeline - use of low-cost/free model (installed locally or ASU)
- ✓ Human-readable explanations for test structures
- ✓ Explainability documentation with examples
- Depends on: ML person (trained models and feature importance) (make up sh**t to move forward, see General Notes)
- Blocks: CLI person (explanations integrated into output)
Not assigned, will figure it out when we have something.
Role: Software engineer / DevOps lead
Duration: 2–3 weeks
Milestone: Phase 5 completion
-
Implement Python API
- Create
confostate/classifier.pywithClassifierclass - Methods:
classify(pdb_path, family=None)→PredictionResult PredictionResultcontains: states dict, probabilities, explanation
- Create
-
Implement CLI
- Create
confostate/cli.pyusing Click or argparse - Command:
confostate classify <pdb_path_or_id> [--family] [--output-format] - Output formats: JSON, plain text, HTML
- Create
-
Add PDB ID lookup
- Download structures on the fly from RCSB if given a PDB ID
- Cache downloaded files
-
Integration tests
- Create
tests/test_api.pyandtests/test_cli.py - Test end-to-end workflows
- Create
-
Documentation & examples
- Update
docs/USAGE.mdwith API and CLI examples - Create
examples/api_example.py,examples/cli_example.sh
- Update
-
Packaging & distribution
- Ensure
pyproject.tomlis complete - Test
pip install confostate
- Ensure
- ✓
confostate/classifier.pywith public API - ✓
confostate/cli.pywithconfostate classifycommand - ✓ End-to-end integration tests
- ✓ Usage examples and documentation
- Depends on: ML person (models), Explain person (explanations)
- Blocks: None (parallel finalization)
Role: DevOps / QA engineer
Duration: 2–3 weeks
Milestone: Phase 5+ completion
Assignee: Oliver
-
Test monitor (pester everyone else to write tests!)
- branch protection (no force-push)
-
Maintain build system an dependencies
- update pyproject.toml
- build related code (eg OPM)
- should work with Python 3.12 - 3.14
- each developer should update dependencies in pyproject.toml as needed
-
Set up continuous integration (CI)
- Create
.github/workflows/test.yml - Run tests on push to main/dev
- Test Python 3.9+ versions
- Create
-
Add linting & code quality
- Configure Black, Flake8, Pylint in CI
- Create
.pre-commitconfig
-
Build comprehensive test suite
- Create
tests/directory with unit and integration tests - Aim for >80% code coverage
- Test fixtures for example structures
- Create
-
Add documentation building
- Set up Sphinx or similar for auto-generated docs
- CI builds docs on each commit
-
Package versioning & release
- Set up semantic versioning in
pyproject.toml - Create release checklist and GitHub Actions workflow
- Set up semantic versioning in
-
Data storage & reproducibility
- Document PDB structure download process
- Create
.gitignorerules for large files - Optional: set up DVC for structure file tracking
-
Contribution guidelines
- Create
CONTRIBUTING.md - Code review template, pull request checklist
- Create
- ✓
.github/workflows/with CI/CD pipelines - ✓ Comprehensive test suite with >80% coverage
- ✓ Linting and code quality checks
- ✓ Documentation build pipeline
- ✓
CONTRIBUTING.mdand release guidelines
- Depends on: All others (needs all modules to test)
- Blocks: None (runs in parallel, integrates at the end)
| Phase | Milestone | Target Date | Owner(s) |
|---|---|---|---|
| 1 | Data foundation (curated CSV, OPM) | 2026-06-29 | Person 1 |
| 2 | Feature extraction complete | 2026-07-13 | Person 2 |
| 3 | Baseline models trained & evaluated | 2026-07-27 | Person 3 |
| 4 | Explainability layer complete | 2026-08-03 | Person 4 |
| 5 | CLI & API complete | 2026-08-10 | Person 5 |
| 5+ | CI/CD & testing finalized | 2026-08-17 | Person 6 |
Use one of these methods:
If you have gh installed:
cd /nfs/homes5/Projects/SLC26/chenou/test/summer-project/ConfoState
gh issue create --title "Person 1: Data Curation & Annotation" --body "..."- Go to https://github.com/your-org/confostate/issues
- Click "New Issue"
- Copy title and description from this file
Script: scripts/create_github_issues.py (optional)
import subprocess
import json
issues = [
{
"title": "Person 1: Data Curation & Annotation",
"body": "See Plans/workplan-2026-06-15.md for full details.",
"assignee": "person1-username",
"labels": ["phase-1", "data"]
},
# ... 5 more issues
]
for issue in issues:
cmd = ["gh", "issue", "create", "--title", issue["title"], "--body", issue["body"]]
if "assignee" in issue:
cmd.extend(["--assignee", issue["assignee"]])
if "labels" in issue:
cmd.extend(["--label", ",".join(issue["labels"])])
subprocess.run(cmd)- Weekly standup: Tuesday 10:00 AM
- Slack channel: #confostate-dev
- Issues tracker: GitHub Issues (assign to self)
- Blockers: Report in standup immediately
- Async updates: Commit messages and PR descriptions
- Features are grouped to minimize cross-team dependencies
- Parallel development recommended; code integration happens at phase-end reviews
- Data curation should start immediately; it blocks others
- All deliverables should include unit tests and documentation