diff --git a/docking/autodock-vina/docking.wic b/docking/autodock-vina/docking.wic new file mode 100644 index 00000000..10cf0f0c --- /dev/null +++ b/docking/autodock-vina/docking.wic @@ -0,0 +1,145 @@ +inputs: + sdf_path: + type: File + format: + - edam:format_3814 + +steps: +# Ligand +# NOTE: Searching for conformers tends to cause the ligand to curl up into a ball. +# Although this lowers its energy in isolation, the decreased surface area tends +# to weaken the binding free energy! (as reported by autodock vina) + flc.wic: + in: + sdf_path: sdf_path +# minimize_ligand_only.wic: + +# NOTE: We converted to mol2 format above because it allows explicit charges. +# Thus, if we only infer charges once and then preserve them, we don't have to +# worry about using different charges in autodock vs molecular dynamics. +# It also stores explicit bond order info, so the topology will be identical. +# (Also note that we did NOT convert to pdb and then to pdbqt, because that loses both!) + +# NOTE: Rename all residues to MOL before calling acpypye. Otherwise, acpype crashes with: +# "ERROR: more than one residue detected '{'UNL', 'MOL'}'" + python3_mol2_to_mol2: + in: + script: !ii /rename_residues_mol.py # NOTE: Initial / required + input_mol2_path: !* ligand_min.mol2 + out: + - output_mol2_path: !& conformer.mol2 + +# NOTE: minimize before calling acpype so 1. tleap complains less about close contacts: +# /usr/local/bin/teLeap: Warning! +# Close contact of 1.418311 angstroms between .R.A and .R.A +# and 2. acpype doesn't complain about 'ERROR: Atoms TOO alone (> 3.0 Ang.)' +# (acpype suggests using --force, but it's better to just minimize.) + acpype: + # NOTE: We are using our own acpypye CWL adapter (NOT the biobb version) so + # we have the choice of using charges from the mol2 file. + in: + input_path: !* conformer.mol2 # Do NOT use pose_ligand.pdb + out: + - output_itp_path: !& ligand_GMX.itp + # NOTE: Although we don't need the *.itp topology file yet, we + # need to use these coordinates with autodock because they are + # sorted to agree with the *.itp topology include file. + # Otherwise, we will get the grompp atom name warning (see below). + - output_gro_path: !& ligand_GMX.gro + - output_top_path: !& ligand_GMX.top + #charge_method: user # take charges from mol2 file +# NOTE: acpype doesn't add forcefield or water topology #include lines. + bash_top: + in: + script: !ii /gmx_add_topology_includes.sh # NOTE: Initial / required + input_top_path: !* ligand_GMX.top + out: + - output_top_path: !& ligand_GMX_includes.top + zip_top: + in: + input_top_path: !* ligand_GMX_includes.top + input_itp_path: !* ligand_GMX.itp + out: + - output_top_zip_path: !& ligand_GMX.zip + +# Docking + convert_ligand_mol2_to_pdbqt_obabel.wic: +# convert_ligand_mol2_to_pdbqt_mdanalysis.wic: # generates ligand_rigid.pdbqt only + + autodock_vina_run: + in: + input_ligand_pdbqt_path: !* ligand_flex.pdbqt + #input_ligand_pdbqt_path: !* ligand_rigid.pdbqt + input_receptor_pdbqt_path: !* pdb.pdbqt + input_box_path: !* box.pdb + out: + - output_pdbqt_path: !& poses_ligand.pdbqt + - output_log_path: !& vina.log + extract_model_pdbqt: + in: + input_pdbqt_path: !* poses_ligand.pdbqt + output_pdbqt_path: !ii pose_ligand.pdbqt + config: !ii + model: 1 # NOTE: score, rmsd l.b., rmsd u.b. stored in REMARK lines + out: + - output_pdbqt_path: !& pose_ligand.pdbqt + convert_xyz: + in: + input_path: !* pose_ligand.pdbqt + output_xyz_path: !ii pose_ligand.xyz + out: + - output_xyz_path: !& pose_ligand.xyz +# Molecular Dynamics combine receptor & ligand + append_ligand: + in: + input_itp_path: !* ligand_GMX.itp + input_top_zip_path: !* receptor.zip + out: + - output_top_zip_path: !& complex_vac.zip + combine_structure: + in: + input_structure1: !* receptor.xyz # receptor_hydrogens.pdb + input_structure2: !* pose_ligand.xyz + out: + - output_structure_path: !& complex_vac.pdb + +wic: + graphviz: + label: Cheminformatics + Docking + Initial Topology Setup + steps: + (2, python3_mol2_to_mol2): + wic: + graphviz: + label: Rename Ligand\nResidues to MOL + (3, acpype): + wic: + graphviz: + label: Generate Ligand\nParameters & Topology + (4, bash_top): + wic: + graphviz: + label: Fix Gromacs\n Topology Includes + (5, zip_top): + wic: + graphviz: + label: Zip Topology/Files + (7, autodock_vina_run): + wic: + graphviz: + label: Perform Docking + (8, extract_model_pdbqt): + wic: + graphviz: + label: Extract Best\nDocking Pose + (9, convert_xyz): + wic: + graphviz: + label: Convert Complex\npdbqt to xyz + (10, append_ligand): + wic: + graphviz: + label: Append Ligand Topology\nto Receptor Topology + (11, combine_structure): + wic: + graphviz: + label: Append Ligand Coordinates\nto Receptor Coordinates diff --git a/docking/autodock-vina/docking_stability.wic b/docking/autodock-vina/docking_stability.wic new file mode 100644 index 00000000..cdc27c3a --- /dev/null +++ b/docking/autodock-vina/docking_stability.wic @@ -0,0 +1,48 @@ +inputs: + sdf_path: + type: File + format: + - edam:format_3814 + +steps: + docking.wic: + in: + # NOTE: sdf_path is currently only necessary + # due to a limitation of the inlineing implementation. + sdf_path: sdf_path + stability.wic: + in: + # NOTE: crd_path and top_zip_path are currently only necessary + # due to a limitation of the inlineing implementation. + crd_path: !* complex_vac.pdb + top_zip_path: !* complex_vac.zip + nsteps: !ii 100000 + dt: !ii 0.002 + temperature: !ii 298.0 + pressure: !ii 1.0 +wic: + graphviz: + label: Docking + MD Stability Analysis + steps: + (1, docking.wic): + wic: + inlineable: True + (2, stability.wic): + wic: + inlineable: False + steps: + (2, basic.wic): + wic: + steps: + (3, prod.wic): + wic: + steps: + (4, cwl_subinterpreter_analysis.wic): + wic: + implementation: complex + (3, analysis.wic): + wic: + steps: + (1, analysis_realtime.wic): + wic: + implementation: complex