MantisBT - Rosetta
View Issue Details
0000034Rosetta[All Projects] Incorrect Resultspublic2012-07-02 15:192013-05-13 11:31
normalmajorunable to reproduce
all that use resfiles (fixbb promeniently)
fixbb -resfile resfile_that_mutates -s pdb_with_pre-existing_postransmod.pdb
0000034: Packer won't mutate a post-trans-mod residue
This is ported from an email report from Jordan Willis:


I was wondering if anyone is aware that the resfile command:

NUM CHAIN PIKAA <canonical AA>

will not replace the AA if the AA you are going to replace, has a post translational modification. I have only discovered this on a PDB that originally contained sulfated tyrosines when I tried to mutate those tyrosines to a canonical AA.

Is this a known issue? Or is it an issue?

(as yet unconfirmed)
design, PackerTask, packing, resfile
Issue History
2012-07-02 15:19smlewisNew Issue
2012-07-02 15:19smlewisStatusnew => assigned
2012-07-02 15:19smlewisAssigned To => smlewis
2012-07-31 16:07smlewisAssigned Tosmlewis =>
2012-08-22 16:24smlewisNote Added: 0000082
2012-08-22 16:24smlewisAssigned To => smlewis
2012-08-22 16:24smlewisStatusassigned => new
2012-08-29 08:34smlewisAssigned Tosmlewis =>
2012-09-04 19:32LabonteTag Attached: design
2012-09-04 19:32LabonteTag Attached: PackerTask
2012-09-04 19:32LabonteTag Attached: packing
2012-09-04 19:32LabonteTag Attached: resfile
2013-05-13 11:28smlewisAssigned To => jwillis0720
2013-05-13 11:28smlewisStatusnew => assigned
2013-05-13 11:31smlewisNote Added: 0000294

2012-08-22 16:24   
not assigned: returning to red angry
2013-05-13 11:31   
Some notes from the email thread about this:

the problem here is in variant matching.

In this function:
void ResidueLevelTask_::allow_noncanonical_aa(
      if ( original_residue_type_->variants_match( **aas_iter ) &&

There is a variant matching check. If you start sulfated, ONLY
sulfated variants match and will be allowed. EMPTY does not affect
original_residue_type_ and will have no effect here.

This is perfectly strict variant matching. You require weaker
matching, which ignores mismatches due to *some* variants (sulfated,
etc) and prevents mismatches due to *other* variants (chainbreak,
terminus, etc).

You can try tweaking this check to not care about your subset of
variants: perhaps a flag "allow_design_tofrom_PTMs", and then modify
this check to ignore variant mismatches caused by some curated set of
variants (sulfated, phosphorylated, etc).

You can try removing this check. It will have nasty side effects like
Rosetta will try packing the chainbreak variants or terminus variants
into the middle of the chain. Hopefully the scorefunction will reject

Moving TYR plus S to its own params file as TYS may work. Doug corrects me on the Dunbrack lookup (good). After further
thought, I also realize that Rosetta ignores the PDB standard, in that
it names sulfated tyrosine TYR and adds a sulfate if those atoms are
present, but the PDB uses TYS. So, creating a S-TYR residue type
file, with the name and name3 TYS, would fix your variant matching
problem AND improve the PDB reader to be more standard-compliant.

This may cause the reverse problem, however, where TYR becomes able to
mutate to TYS in all cases. The ResidueLevelTask constructor uses
variant matching just like the troublesome allow_noncanonical_aa
function, and it will let all aa_tyr pass equally (this is how HIS and
HIS_D both work.).

Currently the code distinguishes via "is_protein" and the aa type
being aa_unk - perhaps there is need for a third level of distinction
for chemically modified but not aa_unk residues - they should be
treated with the aa_unk logic.