Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Validate native MolSysMT SDF/PDBQT integration and define the chemical preparation profile

Open
#33 36 comments 0 reactions 0 assignees View on GitHub

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

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

component:molsysmt enhancement

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

  1. 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.
  2. 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.
  3. Compare the public msm.topology.get_rigid_fragments explicit-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.
  4. 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 explicit string:pdbqt_text (prefix pdbqt_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 via molsysmt.form.file_pdbqt.get_torsion_tree(path). MolSys has no native torsion-tree store. Native output requires explicit typing_scheme='autodock4', supplied labels/charges and, for ligand layout, the matching tree. torsion_tree=None writes 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 explicit discard_properties=True for 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from uibcdf/dockingmt

All issues in uibcdf/dockingmt

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.