-
Notifications
You must be signed in to change notification settings - Fork 83
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
Poor Snap Performance #386
Comments
Hmm. I have occasionally seen snap act strange like this but I don’t know the cause. Does it do the same thing on another set of contigs? Anything unique or different about your contig names? Would be helpful to figure out why training is failing. What happens when you run it on the test data, ie funannotate test -t busco? You could manually edit the parameter Json file to point to a different preexisting training data and then pass the json file to predict. I wasn’t aware there are commonly used pre-existing snap parameter files. |
I don't know if they are commonly used, but the snap repo includes numerous models. You can look at them here. Pretty much everyone should have access to these already downloaded on their system... https://github.com/KorfLab/SNAP/tree/master/HMM I don't think I've ever gotten good performance out of snap with any of my assemblies. Glimmer models tend to look weird as well. Glimmerhmm also makes available a handful of trained models. I've attached the stdout from funannotate test -t busco How would I edit the parameter json file? where is it? What should I change it to read? |
You should be getting something that looks like the following (you'll need to redirect stderr and stdout to save in a file). But if you aren't getting these results, then something is amiss with your install I guess. Below is done with the most recent conda recipe,
As you can see, predict generates a json parameters file after each run containing the training data, it looks like this:
So you could theoretically point the snapp HMM file to a pre-trained version and then use this parameter file in predict. |
Well, I'm getting output that looks similar to that. The biggest difference is that my snap produces 0 predictions which results in funannotate leaving it off this list entirely. All of the counts are slightly off though... Augustus 1 1086 ...If I leave one of the tool entries containing only an empty dict, will that communicate to funannotate that it should follow default behavior with regard to that predictor? for example, If I were to use your paramter file on my system, where genemark IS installed, would funannotate run genemark? If not, how do I get it to do so while pointing snap to pre-trained model? |
The parameter JSON file is simply a way of pointing to the data in a programatic way -- its how you add species parameters files to the database so they can be reused. So you'd run through predict one time to generate a paremters JSON file, then change the SNAP HMM path to point to the HMM that you think will work better, and then run predict again using that updated JSON file. This is not really what I would recommend doing though, seems like a better solution to figure out what is wrong with SNAP -- or don't use it at all, which you can control with If you'd like to try to trouble shoot why snap is failing, here is what should be happening (this is from logfile):
You can run these commands manually to see if there are some errors not found in the logfile, etc. I've also attached the hmm model output from this busco training set, should allow you to see if the problem is in the |
As best I can tell, some of those commands are supposed to be run from the snaptrain folder and the final two commands are meant to be run from inside "test-busco_56173". None of the commands produce any errors. The model file produced by my command is different from yours though. Specifcally, my parameters in section Einit 2 look like garbage. Some kind of silent error seems to be happening. Any ideas where to look next? EDIT: Further digging, my bad parameters seem to be coming from the file: predict_misc/snaptrain/Einit-explicit.duration So, the question becomes, how is this file being generated |
Can try training on our platform if you can send the training input export.ann and export.dna to mAke sure forge is working.
Jason Stajich, PhD
jasonstajich.phd@gmail.com
…On Feb 26, 2020, 2:08 PM -0800, nhartwic ***@***.***>, wrote:
As best I can tell, some of those commands are supposed to be run from the snaptrain folder and the final two commands are meant to be run from inside "test-busco_56173".
None of the commands produce any errors. The model file produced by my command is different from yours though. Specifcally, my parameters in section Einit 2 look like garbage. Some kind of silent error seems to be happening.
snap-trained.hmm.gz
Any ideas where to look next?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
I'm 90% sure the issue was forge. I went ahead and cloned snap and compiled locally. I then modified the dummy forge executable in my conda environment to point to the new copy of forge. I'm now getting performance similar to what was expected. My models file is still different though. Current gene counts.. Source Weight Count .. New model file ... export files if you want to run them. ...This leaves open the question of why the copy of forge installed by conda didn't work properly on my system. But I'd say the issue is essentially resolved. |
Nice -- glad you got it sorted. If we knew why the conda built The bioconda |
hi Joh,
Hi, could u share the command? How to set the snap path? Thanks. |
If you are on Debian based Linux just install snap with apt-get and uninstall from conda. Or you can compile snap from source. It's just that the bioconda version seems to be broken on Debian based systems. |
Alternatively, if you need example commands, this appears to be working in my containers...
Note that "/opt/conda/envs/myenv/bin/" should be replaced with the path to the bin inside the conda environment you are using for funannotate. |
I have encountered the problem with SNAP prediction. After replace the forge, the number increase from 2 to 1,504 in my case. Thanks a lot for this open question. |
Output from a recent test run (funannotate version 1.7.4) below...
...Funannotate lists the snap version as 2006-07-28. Conda lists my snap package as being...
snap 2013_11_29 h516909a_2 bioconda
... Any idea why snap would be producing garbage? Is there some other version of it that I need? Is there any way to disable snap training and just use a pre-existing model from a closely related species?
So far, my best sollution here is to run snap before running funannotate using a pre-existing model, convert that output to gff3 (hopefully with whatever script funannotate uses), pass that gff3 as an 'other_gff' to funannotate predict using weight 1, and set the built in snaps weight to be equal to 0. I'm completely open to other sollutions if there is one.
The text was updated successfully, but these errors were encountered: