-
Notifications
You must be signed in to change notification settings - Fork 136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consistent worse contact accuracy resulted from hhblits3 #205
Comments
By the way, in the hhsuite3 paper, the accuracy of MSA by hhblits2 versus that of hhblits3 was mainly benchmark in terms of identifying SCOP templates with the same fold (https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-3019-7/figures/7). Unfortunately, such benchmark only calibrates alignment statistics (e-value, posterior probability etc), but did not directly check the correctness of alignment (i.e. residue-residue correspondence) for a given query-template pair. A more sensitive and realistic benchmark to show the performance discrepancy should be a contact prediction task as shown here, or a threading task to evaluate first template TM-score. This is because in most structural bioinformatics tasks, such as contact prediction and threading, we do not only care about finding the correct hit, but also care about correctly aligning the given template sequence hit to the query sequence. In fact, a sequence searching program that can always find good template but fail to correctly align the query to the template is arguably less useful than another program that may miss some good hit but manage to make the best alignment for each query-template pair. |
Could you upload the |
I did not keep the hhr file. You can download the a3m files at |
I have also finished benchmarking the results on the remaining 403 "easy" targets from the DeepMSA benchmark set. The result is consistent with that on hard targets, and shows that hhblits2 results in better CCMpred contact accuracy than hhblits3.
Due to file size, I am only able to upload the list and native structures at The full assessment results are attached below as tab-delimited text files. |
Thank you for benchmarking and writing a summary. This really helps us to understand whats going on.
👉 Update: We isolated the issue, the
|
@kad-ecoli I have added the premerge back to to hh-suite3. Using this premerge with |
What parameter should I use? Should I just use the same parameter as before or do I need to specifically call the -premerge flag? |
It's enabled by default now, you don't need to specify any additional parameters. |
I have rebuilt hhblits3 from the following commit
Unfortunately the issue was not solved for d1mabg_, whose msa still contains 1455 sequences only. My command is
The a3m and hhr files are attached below. |
@kad-ecoli thank you for checking. Is it overall performance still worse? A single query can still perform worse. |
The overall performance of hhblits3 with and without the patch is essentially identical on all 211 hard target proteins. Maybe there are some changes you did not commit. |
I just tried it out, you are right bec434e broke premerge again. We'll fix it, sorry for the confusion. |
Yes, this indeed address the issue for d1mabg_. I am now performing the large scale benchmark to see the overall performance. |
After commit 47a835a, the ccmpred contact prediction accuracy with hhblits msa (hhblits3 with premerge in the above table) is indeed better than before (hhblits3 no premerge), and is similar to that of hhblits2. |
Expected Behavior
hhblits3 (commit d755970) should give better MSA than hhblits2 (2.0.15, patched with https://gist.github.com/milot-mirdita/fd4b193a2423cc8e71868a3a68ef940f to address cs219 overflow issue)
Current Behavior
hhblits2 MSA consistently leads to higher residue-residue contact prediction precision on average than hhblits3 MSA. The same observation can be made using almost any uniclust30 version supporting both hhblits2 and hhblits3 (i.e. up to version uniclust30_2018_08) and most contact predictors based on coevolution or uses coevolution as the main input feature for deep learning. For simplicity, in the following example, we will use uniclust30_2018_08 and CCMpred. The benchmark dataset is the 211 "hard" protein domain structures from the DeepMSA benchmark dataset. Native structure attached.
hard.zip
Steps to Reproduce (for bugs)
CCMpred predictions are generated by
To assess contact prediction precision, you can use contact_pdb.py
HH-suite Output (for bugs)
The top short, medium, long, all (=short+medm+long) range contact precision, averaged over all 211 target proteins are:
Here, L is the length of protein sequence; long L/5 means that we rank all predicted contacts in descending probability for residues pairs with | i - j | >=24, and choose the top L/5 residue pairs to calculate precision. In all the categories, hhblits2, on average, consistently outperforms hhblits3. The full results are attached below as tab-delimited text files.
hhblits3.ccmpred.txt
hhblits2.ccmpred.txt
Context
This issue is related to
soedinglab/uniclust-pipeline#3
and
#188
where we report an extreme case of hhblits3's poor performance (pdb 3e7u, where hhblits3 + ccmpred is worse than hhblits2 + ccmpred by 50% for long range contact prediction). Accordingly to our benchmark study, this is not an isolated case, but is actually a common issue in hhblits3. Unfortunately, uniclust30 decides to drop support for hhblits2, which forces us to implement dirty workarounds to convert recent uniclut30 to be usable by legacy hhblits2.
Your Environment
Include as many relevant details about the environment you experienced the issue in.
The text was updated successfully, but these errors were encountered: