I'm a third year student, trying to build some skills in Rosetta. Progress feels very slow and I often get error messages in the tutorials themselves. My question is, how did you start the process of learning Rosetta, and did you have prior coding knowledge that you feel was helpful? Which types of coding are most useful to know in order to use and troubleshoot protocols in Rosetta?
Thanks to anyone who may reply,
Learning Rosetta from scratch can be a little frustrating at times. Yet, there are excellent tutorials out there. Some of them can be found under:
or as a Supplement to this paper: https://doi.org/10.1021/acs.biochem.6b00444
When going through those tutorials, there are a couple of things to pay attention to. These are debugging skills that take many Rosetta developers (and advanced users) quite some time to perfect, so you are not alone out there.
1) make sure your input files are what they are supposed to. Look at them and try to understand them.
2) typos are a frequent source of errors. Make sure your commandline is what you think it is.
3) read the error message. Don't just skim it, read it thoroughly. This is the first point in figuring out what's going wrong.
4) don't just try to build 1000 models, when debugging, just build a single model first. Debugging will take much less time doing that.
5) If things run, use the release mode (i.e. my_exe.linuxgccRELEASE or whatever build you have). When debugging, running in debug mode gives you more informative output (i.e. my_exe.linuxgccDEBUG). Release mode runs 10x faster but is worse for debugging because it doesn't give you as informative error messages
6) you can also increase the message level of the output for debugging: use the flag -out:level:1000 or another very high number
7) you should understand what's happening in every step of your protocol. Meaning, what your input files are and what they mean, what application you are running, how it works, and what the output is that it's giving you. This might mean reading the paper, finding the tutorial, figuring out as much as you can.
8) look at details. The devil is right there.
9) If you are stuck, you might want to check out integration tests. These are tests that run every time Rosetta is compiled on our test server and they are supposed to run pretty much always. They can be found in Rosetta/main/tests/integration/tests. Go find your protocol in there and build up your command line from there.
10) Easiest for debugging is starting as simple as you can with your command line and build it up from there. Meaning, start with the executable, the database, the input file, nstruct (and only absolutely necessary flags). Don't mix and match multiple flags when you are debugging, this can easily send you down a rabbit hole. Add flags in one-by-one and see what happens.
11) And of course it's always easiest to start from an existing protocol. Find the exact command line and try to run it. However, be patient if things don't work exactly the same as Rosetta has been changed unless you are using exactly the same version.
As for learning coding, a large part of our community uses python. It is easy to learn and has lots of modules readily available.