bjornwallner / dockq Goto Github PK
View Code? Open in Web Editor NEWDockQ is a single continuous quality measure for Protein, Nucleic Acids and Small Molecule Docking Models
License: MIT License
DockQ is a single continuous quality measure for Protein, Nucleic Acids and Small Molecule Docking Models
License: MIT License
Hello! I've noticed that CIF files don't seem to work properly with DockQ. I've been using DockQ as a Python module and when I give a structure from a PDB file to run_on_all_native_interfaces
as both the model and native, it works as expected (a perfect score). But when I try this same test with the same structure but in a CIF format, the scores are drastically different.
When I am trying to run the Make command i am getting this:
cc -O3 -funroll-loops -Isrc/ -c src/molecule.c -lm
process_begin: CreateProcess(NULL, cc -O3 -funroll-loops -Isrc/ -c src/molecule.c -lm, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [Makefile:14: molecule.o] Error 2
Hi,
Thank you for developing this useful software. When I attempt to run the script to align the protein lengths of the separate chains of the predicted model, I am met with the error that needle is not installed. However, when I run the script without any input, it says needle is in fact installed. How do I circumvent this?
Thanks in advance.
Thanks for updating DockQ, and make it more user friendly.
But I got different results by computing the DockQ of the example structure.
By doing this in the python script:
from DockQ.DockQ import load_PDB, run_on_all_native_interfaces model = load_PDB("examples/1A2K_r_l_b.model.pdb") native = load_PDB("examples/1A2K_r_l_b.pdb") chain_map = {"A":"A", "B":"B"} run_on_all_native_interfaces(model, native, chain_map=chain_map)[0]
, I got
{('A', 'B'): {'DockQ_F1': 0.4408235819178569, 'DockQ': 0.4350515761458511, 'F1': 0.38095238095238093, 'irms': 1.3939127448327777, 'Lrms': 10.304622346268628, 'fnat': 0.36363636363636365, 'nat_correct': 4, 'nat_total': 11, 'fnonnat': 0.6, 'nonnat_count': 6, 'model_total': 10, 'clashes': 1, 'len1': 198, 'len2': 106, 'class1': 'receptor', 'class2': 'ligand', 'chain1': 'A', 'chain2': 'B', 'chain_map': {'A': 'A', 'B': 'B'}}}
But if I run
DockQ 1A2K_r_l_b.model.pdb 1A2K_r_l_b.pdb
in terminal,
I got:
Model : 1A2K_r_l_b.model.pdb Native : 1A2K_r_l_b.pdb Total DockQ over 3 native interfaces: 0.653 with BAC:ABC model:native mapping Native chains: A, B Model chains: B, A DockQ: 0.994 irms: 0.000 Lrms: 0.000 fnat: 0.983 fnonnat: 0.008 clashes: 0.000 F1: 0.987 DockQ_F1: 0.996
DockQ scores are quite different. Do you know why?
Thanks.
When using the cython branch, after running
DockQ.py <model> <native> -native_chain1 A B -perm1 -perm2
I get an error (see below). Note that it works fine running
DockQ.py <model> <native>
or
DockQ.py <model> <native> -native_chain1 A -model_chain1 A
Best
Samuel
The error:
Traceback (most recent call last):
File "/proj/berzelius-2021-29/users/x_safro/programs/iTM-align/DockQ.py", line 965, in <module>
main()
File "/proj/berzelius-2021-29/users/x_safro/programs/iTM-align/DockQ.py", line 851, in main
test_info = run_on_groups(
^^^^^^^^^^^^^^
File "/proj/berzelius-2021-29/users/x_safro/programs/iTM-align/DockQ.py", line 635, in run_on_groups
info = calc_DockQ(
^^^^^^^^^^^
File "/proj/berzelius-2021-29/users/x_safro/programs/iTM-align/DockQ.py", line 139, in calc_DockQ
ref_res_distances = get_residue_distances(
^^^^^^^^^^^^^^^^^^^^^^
File "/proj/berzelius-2021-29/users/x_safro/programs/iTM-align/DockQ.py", line 533, in get_residue_distances
model_res_distances = residue_distances(
^^^^^^^^^^^^^^^^^^
File "/proj/berzelius-2021-29/users/x_safro/programs/iTM-align/operations_nocy.py", line 29, in residue_distances
atom_distances = get_distances_across_chains(atom_coordinates1, atom_coordinates2)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/proj/berzelius-2021-29/users/x_safro/programs/iTM-align/operations_nocy.py", line 6, in get_distances_across_chains
distances = ((model_A_atoms[:, None] - model_B_atoms[None, :]) ** 2).sum(-1)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
ValueError: operands could not be broadcast together with shapes (4712,1,3) (1,0)
I've noticed that receptor molecule is selected according to the one with larger number of residues. Is there a way to bypass this behavior?
Thanks in advance for your help, congratulations on this useful software!
I am writing a python script to rename chain ID in model file and confronted with a lot of problems.
I was wondering how do people align chain IDs before running DockQ? Is there any tool?
Hi, I'm using DockQ on several protein-peptide complexes obtained from a redocking procedure. On some complexes it works fine, while on others it gives me the following error:
UserWarning: WARNING: It looks like cython is not working,
falling back on native python. This will make DockQ slower
warnings.warn(
Traceback (most recent call last):
File "C:\mypath\Python\Python312\Lib\site-packages\Bio\File.py", line 72, in as_handle
with open(handleish, mode, **kwargs) as fp:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected str, bytes or os.PathLike object, not TextIOWrapper
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\mypath\DockQ\DockQ.py", line 585, in load_PDB
structure = pdb_parser.get_structure(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\mypath\DockQ\parsers.py", line 251, in get_structure
self._parse(lines, chains)
File "C:\mypath\DockQ\parsers.py", line 264, in _parse
self.trailer = self._parse_coordinates(coords_trailer, chains)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\mypath\DockQ\parsers.py", line 401, in _parse_coordinates
except PDBConstructionException as message:
^^^^^^^^^^^^^^^^^^^^^^^^
NameError: name 'PDBConstructionException' is not defined. Did you mean: 'PDBConstructionWarning'?
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\mypath\DockQ\DockQ.py", line 936, in <module>
main()
File "C:\mypath\DockQ\DockQ.py", line 762, in main
model_structure = load_PDB(args.model, chains=model_chains)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\mypath\DockQ\DockQ.py", line 593, in load_PDB
structure = pdb_parser.get_structure(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\mypath\DockQ\parsers.py", line 25, in get_structure
self._build_structure(structure_id, chains)
File "C:\mypath\DockQ\parsers.py", line 38, in _build_structure
atom_serial_list = mmcif_dict["_atom_site.id"]
~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: '_atom_site.id'
I think it is a problem in the pdb file, but i don't find it, since it is generated in the same way as other files that do not raise this error. Do you have any idea or suggestions?
The command that I gave in windows prompt is: python DockQ.py --capri_peptide model.pdb reference.pdb
Many thanks.
Andrea
I'm following the instructions on the readme file, I clones the repo, moved to its directory, run the make command then I'm trying to run the example provided as well. but when I do an error comes up.
the example command:
bash ./DockQ.py examples/model.pdb examples/native.pdb
The error that shows up
import-im6.q16: attempt to perform an operation not allowed by the security policy 'PS' @ error/constitute.c/IsCoderAuthorized/408. from: can't read /var/mail/Bio ./DockQ.py: line 6: syntax error near unexpected token 'ignore',' ./DockQ.py: line 6: 'warnings.simplefilter('ignore', BiopythonWarning)'
When I try to run my native and model pdb files in my terminal, I am getting an error relating to the absence of an object called fnat in the larger DockQ directory. How do I go about correcting this? I tried moving the contents of the src folder out into the primary DockQ directory and attempted to compile fnat.c, but this failed.
when I run the DockQ, it showed the error "AssertionError: Zero number of equivalent atoms in native and model ligand (chain B) 0 0. Check that the residue numbers in model and native is consistent." And I used the fix_numbering.pl tool to produce the model.pdb.fixed file. However, How did I use the file to fix the error?
Thanks for making DockQ public!
I am working on single-chain structures and failed on docking attempt due to "Need at least two chains in the two inputs"
Is there a way to perform single chain docking among two structures?
In the previous version of DockQ, there were input arguments, -native_chain{1,2} and -model_chain{1,2}, that allow grouping chains for receptor and ligand. For example, if there are one chains (e.g., A) for receptor and two other chains (e.g., H and L) for ligand and I only interested in the interface between (A) and (H+L), how can I do this with DockQ v2? With the previous version, it can be done like the following:
DockQ.py [model] [native] -native_chain1 A -native_chain2 H L -model_chain1 A -model_chain2 H L
I noticed that DockQ v2 evaluates for every interface between chains and gives some averaged values as the metrics for the whole complex. However, I could not find optional arguments for grouping chains. I do not think averaging metrics for interested chain pairs would work neither because numerators and denominators for RMSDs and fnat are different for evaluating (A and (H+L)) compared to averaging (A and H) and (A and L).
I’m attempting to get the DOCKQ score of a model of CAPRI target #50, from the score_set dataset. The model is named Target50_0000.pdb and the correct crystal structure is named Target50_3r2x.pdb. Both are attached (but with the extention txt added, as pdb files aren't allowed to be uploaded by github) here:
Target50_0000.pdb.txt
Target50_3r2x.pdb.txt
Running
scripts/fix_numbering.pl /path/to/Target50_0000.pdb /path/to/Target50_3r2x.pdb
works fine, but running
python3 DockQ.py /path/to/Target50_0000.pdb.fixed /path/to/Target50_3r2x.pdb -native_chain1 A B -native_chain2 C -model_chain1 A B -model_chain2 C
results in the following error:
Traceback (most recent call last):
File "/dartfs/rc/lab/G/Grigoryanlab/home/coy/DockQ/DockQ.py", line 732, in <module>
main()
File "/dartfs/rc/lab/G/Grigoryanlab/home/coy/DockQ/DockQ.py", line 510, in main
model_chains=get_pdb_chains(model)
File "/dartfs/rc/lab/G/Grigoryanlab/home/coy/DockQ/DockQ.py", line 387, in get_pdb_chains
pdb_struct = pdb_parser.get_structure("reference", pdb)[0]
File "/dartfs-hpc/rc/home/4/f002v94/.conda/envs/myenv/lib/python3.9/site-packages/Bio/PDB/PDBParser.py", line 100, in get_structure
self._parse(lines)
File "/dartfs-hpc/rc/home/4/f002v94/.conda/envs/myenv/lib/python3.9/site-packages/Bio/PDB/PDBParser.py", line 123, in _parse
self.trailer = self._parse_coordinates(coords_trailer)
File "/dartfs-hpc/rc/home/4/f002v94/.conda/envs/myenv/lib/python3.9/site-packages/Bio/PDB/PDBParser.py", line 198, in _parse_coordinates
resseq = int(line[22:26].split()[0]) # sequence identifier
IndexError: list index out of range
I try to run the readme example for multichain functionality and I get this.
Traceback (most recent call last):
File "./DockQ.py", line 731, in
main()
File "./DockQ.py", line 568, in main
native=make_two_chain_pdb_perm(native,nat_group1,nat_group2)
File "./DockQ.py", line 452, in make_two_chain_pdb_perm
exec_path=os.path.dirname(Path.abspath(sys.argv[0]))
AttributeError: type object 'Path' has no attribute 'abspath'
Hello,
Most of my cases run smoothly, but I tried 'DockQ B.cif A.pdb', this give me error,
rotated_sample_atoms = np.dot(ligand_atoms_sample, rot) + tran
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: shapes (0,) and (3,3) not aligned: 0 (dim 0) != 3 (dim 0)
Do you know why? Thanks.
Hi, I found "chain mismatch" problem in almost all complexes I tested.
I've been stuck for days. I would very much appreciate it if anyone help me out.
After I ran ./DockQ.py model/7P79.pdb native/7P79.pdb, it showed:
7P79.pdb
chain mismatch A B H Cchain mismatch A B H CTraceback (most recent call last):
File "./DockQ.py", line 732, in
main()
File "./DockQ.py", line 660, in main
info=calc_DockQ(model,native,use_CA_only=use_CA_only,capri_peptide=capri_peptide) #False):
File "./DockQ.py", line 234, in calc_DockQ
if key in chain_res[chain]: # if key is present in sample
KeyError: 'A'
Any tips for fixing this?
Thank you so much.
./DockQ.py examples/1a14_pred.pdb examples/1a14.pdb
Multi-chain model need sets of chains to group
use -native_chain1 and/or -model_chain1 if you want a different mapping than 1-1
Model chains : ['A', 'H']
Native chains : ['N', 'H', 'L', 'A']
than I tried this.
./DockQ.py examples/1a14_pred.pdb examples/1a14.pdb -native_chain1 A H -model_chain1 A H
Traceback (most recent call last):
File "/home/fkt/Downloads/abdockgen/DockQ/./DockQ.py", line 732, in <module>
main()
^^^^^^
File "/home/fkt/Downloads/abdockgen/DockQ/./DockQ.py", line 569, in main
native=make_two_chain_pdb_perm(native,nat_group1,nat_group2)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/fkt/Downloads/abdockgen/DockQ/./DockQ.py", line 447, in make_two_chain_pdb_perm
f.write(change_chain(pdb_chains[c],"A"))
~~~~~~~~~~^^^
KeyError: 'A'
Please help.
Why the code will report error like:
Traceback (most recent call last):
File "a.py", line 1, in <module>
from DockQ.DockQ import load_PDB, run_on_all_native_interfaces
ModuleNotFoundError: No module named 'DockQ'
After I use the pip install .
How can I fix it?
Thank for your response
Hey developers of DockQ, when I attempt to install the software I get the error:
pip install .
Processing /home/sibbe/Downloads/DockQ
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing wheel metadata ... done
ERROR: Package 'dockq-2.1' requires a different Python: 3.8.10 not in '>=3.9'
I am using pip 24.0 and python 3.8.10.
From just checking the documentation, it is not clear which version of python you used to build the project. Could you help me?
Kind regards
I’m attempting to get the DOCKQ score of a model of CAPRI target #47, from the score_set dataset. The model is named Target47_0064.pdb and the correct crystal structure is named Target47_3u4e.pdb. However, the DOCKQ script seems to be getting the interface RMSD wrong. Both are attached (but with the extention txt added, as pdb files aren't allowed to be uploaded by github) here:
Target47_0064.pdb.txt
Target47_3u4e.pdb.txt
In the DockQ folder, I’ve run
scripts/fix_numbering.pl /path/to/Target47_0064.pdb /path/to/Target47_3u4e.pdb
then
python3 DockQ.py /path/to/Target47_0064.pdb.fixed /path/to/Target47_3u4e.pdb
which produces the following output (truncated to just show Fnat through DockQ):
Fnat 0.833 45 correct of 54 native contacts
Fnonnat 0.297 19 non-native of 64 model contacts
iRMS 4.576
LRMS 1.827
DockQ 0.629
However when I calculate the three components of DockQ myself (using protein structure tools from the C++ library Mosaist), I find:
Fnat: 0.846
iRMS: 1.019
lRMS: 1.819
DockQ: 0.829
The slight differences in Fnat and lRMS aren’t very concerning to me (I assume they come down to some slight difference in atom-matching between the structures), but the iRMS is significantly off. Examining the structure visually, it seems like the iRMS should be around 1 Å, so I think this probably comes down to a bug in the DOCKQ script where it sometimes gets iRMS wrong. This happens reproducibly with a number of other models for Target 47 as well, all having larger iRMS values than they should, lowering their DockQ scores considerably (usually a difference of ~0.2). Here's a visual of the model and crystal structure aligned in pymol, with the crystal in yellows, model in greens, and different binding partners in either lighter or darker shades. My apologies if I'm wrong, but it appears the iRMS should be much lower than 4.5 Å, and an iRMS of around 1.0 Å would be reasonable. I figured I should bring the discrepancy here, in case it represents some buggy edge case.
Dear @bjornwallner
My system is ubuntu 20.04
From https://emboss.sourceforge.net/download/, I install stable version EMBOSS-6.5.7.tar.gz
which was released in 2012/2013 according to the change log
https://emboss.sourceforge.net/developers/changelog.html.
After installation of emboss(I guess it failed), I cannot find "needle" by "which needle"?
thanks very much.
When I read the following PDB file, the following exception is raised:
sample.pdb.zip
Traceback (most recent call last):
File "/Users/kunzmann/Documents/coding/DockQ/src/DockQ/DockQ.py", line 684, in load_PDB
model = pdb_parser.get_structure(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/kunzmann/Documents/coding/DockQ/src/DockQ/parsers.py", line 297, in get_structure
chain.sequence = sequences[chain.id]
~~~~~~~~~^^^^^^^^^^
KeyError: 'L'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/kunzmann/conda/envs/dockq/lib/python3.12/site-packages/Bio/File.py", line 72, in as_handle
with open(handleish, mode, **kwargs) as fp:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected str, bytes or os.PathLike object, not TextIOWrapper
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/kunzmann/Documents/coding/geotite/../playground/dockq_bug.py", line 3, in <module>
load_PDB("sample.pdb", small_molecule=True)
File "/Users/kunzmann/Documents/coding/DockQ/src/DockQ/DockQ.py", line 693, in load_PDB
model = pdb_parser.get_structure(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/kunzmann/Documents/coding/DockQ/src/DockQ/parsers.py", line 35, in get_structure
self._mmcif_dict = MMCIF2Dict(filename)
^^^^^^^^^^^^^^^^^^^^
File "/Users/kunzmann/conda/envs/dockq/lib/python3.12/site-packages/Bio/PDB/MMCIF2Dict.py", line 35, in __init__
raise ValueError(
ValueError: The input mmCIF file must begin with a 'data_' directive.
This Problem only occurs, when the small molecule chain only contains the single small molecule.
I want to predict the docking scores of the result of Alphafold-Multimer by DockQ. However, I have no idea which file is "model" and which one is "native".
When i try to follow the example steps to check the installation is ok, the text file 'renumber_pdb' is just popping up on my screen.
I'm not sure why this popping up, and the program isn't running. Any help would be appreciated.
(I'm trying to run the software on windows, in the Anaconda terminal)
Like this:
ATOM 1 CA ASP B -2.323 5.946 26.507 1.00 0.00 C 0
ATOM 2 CA PHE B -2.412 6.084 22.717 1.00 0.00 C 0
ATOM 3 CA VAL B -5.512 7.481 21.043 1.00 0.00 C 0
ATOM 4 CA LEU B -6.993 4.827 18.709 1.00 0.00 C 0
ATOM 5 CA ASP B -8.963 5.019 15.470 1.00 0.00 C 0
ATOM 6 CA ASN B -12.027 2.837 14.957 1.00 0.00 C 0
ATOM 7 CA GLU B -9.790 0.105 13.512 1.00 0.00 C 0
ATOM 8 CA GLY B -7.860 -0.188 16.759 1.00 0.00 C 0
ATOM 9 CA ASN B -4.681 1.504 15.540 1.00 0.00 C 0
ATOM 10 CA PRO B -2.867 4.414 17.269 1.00 0.00 C 0
ATOM 11 CA LEU B -3.469 7.805 15.713 1.00 0.00 C 0
ATOM 12 CA GLU B -0.425 8.858 13.693 1.00 0.00 C 0
ATOM 13 CA ASN B 1.127 12.247 14.290 1.00 0.00 C 0
ATOM 14 CA GLY B 0.288 14.145 11.095 1.00 0.00 C 0
ATOM 15 CA GLY B -2.233 11.670 9.700 1.00 0.00 C 0
ATOM 16 CA THR B -5.665 12.544 8.295 1.00 0.00 C 0
ATOM 17 CA TYR B -8.811 11.290 9.998 1.00 0.00 C 0
This would output an error:
DockQ /home/u12151002/workspace/DiffDo
ck-PP-main/visualization/DB5_unbound/1AVX/1AVX_r_l_b.model.pdb /home/u12151002/workspace/DiffDock-PP-main/visualization/DB5_u
nbound/1AVX/1AVX_r_l_b.pdb
Traceback (most recent call last):
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/Bio/File.py", line 72, in as_handle
with open(handleish, mode, **kwargs) as fp:
TypeError: expected str, bytes or os.PathLike object, not TextIOWrapper
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/DockQ/DockQ.py", line 684, in load_PDB
model = pdb_parser.get_structure(
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/DockQ/parsers.py", line 287, in get_structure
sequences, is_het = self._parse(
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/DockQ/parsers.py", line 306, in _parse
self.trailer, sequences, is_het = self._parse_coordinates(
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/DockQ/parsers.py", line 374, in _parse_coordinates
resseq = int(line[22:26].split()[0]) # sequence identifier
IndexError: list index out of range
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/Bio/File.py", line 72, in as_handle
with open(handleish, mode, **kwargs) as fp:
TypeError: expected str, bytes or os.PathLike object, not TextIOWrapper
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/u12151002/miniconda3/envs/diffdock_pp/bin/DockQ", line 8, in
sys.exit(main())
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/DockQ/DockQ.py", line 869, in main
model_structure = load_PDB(
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/DockQ/DockQ.py", line 693, in load_PDB
model = pdb_parser.get_structure(
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/DockQ/parsers.py", line 35, in get_structure
self.mmcif_dict = MMCIF2Dict(filename)
File "/home/u12151002/miniconda3/envs/diffdock_pp/lib/python3.10/site-packages/Bio/PDB/MMCIF2Dict.py", line 35, in init
raise ValueError(
ValueError: The input mmCIF file must begin with a 'data' directive.
So, when I want to calculate the DockQ of Backbone(alpha-carbon), how can i use this script?
I have already installed 1.79 of biopython by pip.
But when I launch the DockQ.py it says
Biopython version (1.59) is too old need at least >=1.61
I am having trouble running DockQ with moderately large homo-dimers. Is this a known issue for the tools here to fail when there are many residues in a chain?
I ran DockQ successfully for most of the models and references in a given benchmark set but the largest files failed.
The smallest file where I could observe a failure was when comparing the attached (4u59_2_files.zip) 4u59_2_model.pdb with 4u59_2.pdb (i.e. simple call ./DockQ.py 4u59_2_model.pdb 4u59_2.pdb
).
Here the model covers more than the reference and so ./DockQ.py 4u59_2.pdb 4u59_2.pdb
works (3076 residues in 4u59_2) while ./DockQ.py 4u59_2_model.pdb 4u59_2_model.pdb
fails (3294 residues in 4u59_2_model).
The traceback of the error looks as follows when run with Python 3:
Traceback (most recent call last):
File ".../DockQ.py", line 730, in <module>
main()
File ".../DockQ.py", line 658, in main
info=calc_DockQ(model,native,use_CA_only=use_CA_only,capri_peptide=capri_peptide) #False):
File ".../DockQ.py", line 112, in calc_DockQ
fnat_out = os.popen(cmd_fnat).read()
File ".../python3.9/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xef in position 852: invalid continuation byte
and as follows with Python 2:
Traceback (most recent call last):
File "../DockQ.py", line 730, in <module>
main()
File "../DockQ.py", line 658, in main
info=calc_DockQ(model,native,use_CA_only=use_CA_only,capri_peptide=capri_peptide) #False):
File "../DockQ.py", line 118, in calc_DockQ
assert fnat!=-1, "Error running cmd: %s\n" % (cmd_fnat)
AssertionError: Error running cmd: .../fnat 4u59_2_model.pdb 4u59_2_model.pdb 5 -all
The latter error indicates an issue in the fnat
binary which indeed produces wrong looking characters before segfaulting. Here the last few lines of the output of fnat 4u59_2_model.pdb 4u59_2_model.pdb 5
:
NATIVE: 25259?b 1629C 0.107644
Fnat 85805 13756 6.237642
Fnonnat -72049 13756 -5.237642
Segmentation fault
As an additional note I observed plenty of compile-time warnings when compiling using GCC 10.3.0 and it may be worth checking them as they could be indicative of some overflows or so...
The specific files do not matter and I could reproduce the same failures when downloading moderately large homo-dimers from the PDB (e.g. https://files.rcsb.org/download/6EQO.pdb).
Given that large complexed and multi-domain proteins are interesting and challenging prediction problems it would be good to fix the issue described here to be able to apply DockQ on benchmarks for such problems.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.