Hello,
Is it true that there is a maximum number of lines with constraints in the external file that Rosetta can process? This should be around 490.
I played around with constraint files (trying to reproduce my last error (http://www.rosettacommons.org/content/using-degenerate-protons-rosetta3x) and what I realized was, that Rosetta does read the following file without problems:
AtomPair H 3 H 2 BOUNDED 1.5 5.0 0.3
AtomPair H 3 CB 2 BOUNDED 1.5 7.0 0.3
.
.
[some other 484 constraints]
.
.
Dihedral N 98 CA 98 C 98 N 99 BOUNDED 1.78 2.44 0.3
Dihedral CA 98 N 99 C 99 CA 99 BOUNDED -2.41 -2.06 0.3
Dihedral N 99 CA 99 C 99 N 100 BOUNDED 2.57 2.98 0.3
TEST
Dihedral CA 99 N 100 C 100 CA 100 BOUNDED -2.27 -1.47 0.3
Dihedral N 100 CA 100 C 100 N 101 BOUNDED 2.71 3.02 0.3
.
.
The TEST is in line 491. Putting it in line 490 gives the typical Rosetta error message, saying that TEST is not a known ConstraintType. This depends only on the number of lines in the constraint file since comments are also counted.
I went through some of the obvious candidates (like Constraints.cc or ConstraintIO.cc) but wasn't able to find a restriction. Since this at least seems reproducible my guess is that only 490 constraints processed.
How do I change this?
Best regards and many, many thanks in advance
This is an intriguing find!
I can duplicate it in my copy of 3.2.1 and am testing to see if it's present in current developer trunk. I can't find any code responsible for the behavior. I'll keep you updated.
OK, I *think* the issue is that the BOUNDED func type is greedy, and is arbitrarily turning every other line into a "tag" for the previous BOUNDED func. Try formatting your lines like this instead:
Dihedral N 100 CA 100 C 100 N 101 BOUNDED 2.71 3.02 0.3 0.5 TAG
adding 0.5 and TAG to the end.
By the way, 489/490 was a red herring, it's really an evens/odds issue.
Thanks for looking into this. It finally solved also the issue I mentioned in my "degenerate protons" thread (see first post for link). Abinitio:relax seems to handle constraints slightly different since it printed an error (core.io.constraints: ERROR: reading of Dihedral failed.), but still proceeded. That got me curious.