foldx Buildmodel mutation interfact - convenience interface#374
foldx Buildmodel mutation interfact - convenience interface#374Mojusko wants to merge 6 commits intobiotite-dev:mainfrom
Conversation
|
Hi, thank you for adding the interface. Initially, I have two requests: 1. Could you give a short description in the PR, what the interfaced software does? 2. Via a quick search I found out that this is a proprietary program. This is not a problem in general, but renders automatic testing in the CI pipeline difficult. Is there an open source version of the software? |
|
|
Basically every interface for publicly available and well documented software that works on sequence or structure data is interesting for Regarding your questions on open-source versions of AutoDock Vina and PyMOL: |
padix-key
left a comment
There was a problem hiding this comment.
Hi, I reviewed your FoldX interface and I think it is written well in general. However, I have two more major requests:
-
I think the docstrings are a bit sparse, especially regarding the purpose of the application and the description of the parameters. Since in my opinion the functionalities of the software are rather complex, I think a few more words would be helpful.
-
The
rotabase.txtis packed into Biotite. While this is convenient to the user, I assume this is not allowed by the commercial FoldX license. If I am correct, this unfortunately means that the rotabase needs to be provided as additional input by the user.
I need to emphasize, that I am new to the FoldX software. Hence some of my comments may be incorrect.
| A subpackage for static ligand docking with *FoldX*. | ||
| """ | ||
|
|
||
| __name__ = "biotite.application.foldX" |
There was a problem hiding this comment.
| __name__ = "biotite.application.foldX" | |
| __name__ = "biotite.application.foldx" |
| # under the 3-Clause BSD License. Please see 'LICENSE.rst' for further | ||
| # information. | ||
|
|
||
| __name__ = "biotite.application.foldX" |
There was a problem hiding this comment.
| __name__ = "biotite.application.foldX" | |
| __name__ = "biotite.application.foldx" |
| import copy | ||
| from tempfile import NamedTemporaryFile | ||
| import numpy as np | ||
| import os | ||
| from os import chdir, getcwd, remove | ||
| from ..localapp import LocalApp, cleanup_tempfile | ||
| from ..application import AppState, requires_state | ||
| from ...structure.io.pdbqt import PDBQTFile | ||
| from ...structure.io.pdb import PDBFile | ||
| from ...structure.io.pdbx import PDBxFile | ||
| from ...structure.residues import get_residue_starts_for, get_residue_masks | ||
| from ...structure.bonds import find_connected | ||
| from ...structure.error import BadStructureError |
There was a problem hiding this comment.
A lot of these imports are actually unused. Please remove the unused imports, when you finished your work on the PR.
| from ...structure.error import BadStructureError | ||
|
|
||
|
|
||
| class FoldXApp(LocalApp): |
There was a problem hiding this comment.
As I read so far, FoldX has multiple subcommands, and the one used here is called BuildModel. Hence, i propose the following:
| class FoldXApp(LocalApp): | |
| class BuildModelApp(LocalApp): |
This is consistent with e.g. the viennarna subpackage, where the classes are called RNAfoldApp and RNAplotApp.
| Parameters | ||
| ---------- | ||
| receptor : AtomArray, shape=(n,) | ||
| The structure of the proiten molecule. |
There was a problem hiding this comment.
| The structure of the proiten molecule. | |
| The structure of the protein molecule. |
| The mutated protein | ||
|
|
||
| """ | ||
| return self.new_mutant |
There was a problem hiding this comment.
| return self.new_mutant | |
| return self._new_mutant |
| file = PDBFile() | ||
| assert (file is not None) No newline at end of file |
There was a problem hiding this comment.
I think this line is an error: A newly created PDBFile is never None.
| app = FoldXApp(receptor, mutation, subunit = 'B') | ||
| app.start() | ||
| app.join() | ||
| arr = app.get_mutant() |
There was a problem hiding this comment.
An actual check of the mutated output structure would be good here. Even if the actually output atom positions cannot be easily tested, I think it would be sufficient to check if the original atoms are still there, except the mutation position
| import numpy as np | ||
| import pytest | ||
| import biotite.structure as struc | ||
| import biotite.structure.info as info |
There was a problem hiding this comment.
| import biotite.structure.info as info |
| # information. | ||
|
|
||
| from os.path import join | ||
| import numpy as np |
There was a problem hiding this comment.
| import numpy as np |
Not sure this is interesting to you.