Validate native MolSysMT SDF/PDBQT integration and define the chemical preparation profile
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- backend-api-design, testing-qa
Research direction
Start with the native PDBQT and SDF cookbooks, then run the prepared-ligand smoke using molsysmt.form.file_pdbqt.get_torsion_tree and msm.convert. Exercise the listed 1IEP, 1S63, and 5X72 inputs through public file, string, and native paths, including malformed controls and unit policies. Done means a recorded supported-profile decision, traceable mappings and targeted regressions, with provider gaps and removal conditions documented.
Written by the indexing model from the issue text.
Description
What
Begin DockingMT integration tests and profile review of the experimental MolSysMT native SDF/PDBQT adapters delivered on main at eb0549b50 (SDF/CIP continuation: f70bb3314). This is a consumer acceptance task, not a claim that general chemical preparation is complete.
Provider ownership: uibcdf/molsysmt#214 (PDBQT), uibcdf/molsysmt#215 (SDF). Existing DockingMT #3 remains the earlier coordination pointer; #5 owns unsafe/provisional preparation, #6 explicit torsions, and #17 torsion policy.
How: start with already prepared inputs
- Test the pinned Vina examples already curated in DockingMT: 1IEP, 1S63, and both 5X72 stereoisomers, plus the 1IEP rigid receptor. Record source commit/checksums, installed provider versions, actual exercised paths, mappings, units and tolerances. These published preparations are comparison inputs, not independent chemical ground truth.
- Exercise public file/string/native conversion, source immutability, coordinates, charges, AutoDock labels, source serial IDs versus atom indices, ligand ROOT/BRANCH/TORSDOF, and Vina receptor/ligand parser acceptance. Compare branch bonds and fragment partitions, not only counts or chosen root orientation.
- Compare the public
msm.topology.get_rigid_fragmentsexplicit-cut result with the current temporary torsion bridge. Remove duplicated provider operations only after equivalent consumer tests pass; root orientation and active-torsion selection remain docking choices. - Report unsupported valid dialects and provider defects in MolSysMT with a minimal input and explicit expected behavior. Review whether the present profile covers the actual DockingMT routes.
Implemented boundary
- Forms:
file:sdf,file:pdbqt, and explicitstring:pdbqt_text(prefixpdbqt_text:). Strip that prefix before sending text to an external engine expecting raw PDBQT. - PDBQT reads one rigid receptor or one ligand tree. Every present H is retained. Only BRANCH edges are known; native connectivity stays partial and orders/formal charges/aromaticity are not invented. Charges and labels are stored in native MolecularMechanics, distinct from chemical element
atom_type. - Ligand-to-MolSys requires explicit
discard_torsion_tree=True. First retain the detached declared tree viamolsysmt.form.file_pdbqt.get_torsion_tree(path). MolSys has no native torsion-tree store. Native output requires explicittyping_scheme='autodock4', supplied labels/charges and, for ligand layout, the matching tree.torsion_tree=Nonewrites rigid-receptor layout, not a ROOT-only ligand. Trees bind source atom IDs and indices; subsets need explicit remapping. - SDF is one-record V2000/V3000. Native default parsing is toolkit independent; supported tetrahedral/double-bond interpretation requires explicit
stereo_engine='rdkit'. SD properties need explicitdiscard_properties=Truefor native projection; strict conversion still reports/rejects that loss. Enhanced/query stereo, ensembles and unsupported chemistry fail explicitly. - Both writers validate before destination mutation and use explicit angstrom output independent of session units. Conversion reports expose known losses. H5MSM 0.5 does not persist MolecularMechanics charges/types.
Minimal prepared-ligand smoke (no chemical assignment):
import molsysmt as msm
from molsysmt.form.file_pdbqt import get_torsion_tree
tree = get_torsion_tree(prepared_ligand_path)
molsys = msm.convert(prepared_ligand_path, to_form='molsysmt.MolSys',
discard_torsion_tree=True)
text = msm.convert(molsys, to_form='string:pdbqt_text',
typing_scheme='autodock4', torsion_tree=tree)
raw_pdbqt = text[len('pdbqt_text:'):]
Chemical preparation: requirements and next integration slice
Please review the minimum receptor/ligand profile against provider tasks: readiness #217, receptor coverage #218, explicit chemical templates #298, fixed-state H addition #300, named charges #221, chemical AutoDock typing #222, lossy atom/charge projection #223, and chemical torsion eligibility #224 (all in uibcdf/molsysmt). Reuse these general tools from MolSysMT; DockingMT owns selected states, docking-specific policy and Vina execution.
Distinguish ligand and receptor charge/type coverage. Current serialization neither assigns charges/types nor merges nonpolar H or chooses active torsions. Preserve the existing safe default/provisional opt-in until a supported preparation route is independently tested. In particular, 1S63 has a reference-only H and an aryl–nitrile branch absent from RDKit Strict, while 5X72 probes stereochemistry; do not hide these differences through index guessing or equal-count checks.
Acceptance
- A recorded supported-profile decision, executed end-to-end public paths and targeted regressions for real inputs, including malformed/unsupported controls and a non-default unit policy.
- Traceable atom maps for reordered/retained/added/omitted atoms; charge aggregation checked when a merging profile is implemented.
- Explicit provider gaps and phased removal conditions for temporary parsing/writing/fragment/typing operations; no premature claim that #5 is resolved.
- Keep chemical-quality validation separate from format parity and Vina parser acceptance. Share feedback through this issue and provider-owned defects.
Documentation: native PDBQT cookbook, native SDF cookbook.
- Dominant language
- Python
- Stars
- 1
- Forks
- 0
- Avg merge
- 30m
- Merged PRs (30d)
- 1
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from uibcdf/dockingmt
-
proposal
Difficulty 4/5 3-5 days Newbie friendliness 15/100
-
component:molsysmt
Difficulty 5/5 Over a week Newbie friendliness 8/100
-
partial proposal
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
component:molsysmt component:molsysviewer enhancement partial
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
proposal
Difficulty 5/5 Over a week Newbie friendliness 35/100
All issues in uibcdf/dockingmt
Similar issues
-
area: agents area: docs good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openapi/gknowledge#23 ·
-
get() for StrEnumPossibly taken @FeJo5952 claimed this today. Opengood first issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
collective/icalendar#1921 · 1 comment ·
Maintainers usually reply within 1 day
-
Improvement Python Spans
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
getsentry/sentry-python#7994 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
alphagov/notifications-api#5004 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
equinor/radix-flux#3922 ·
Maintainers usually reply within 1 day