Hi all,
I have been trying for some time to implement non-canonical AAs into PyRosetta. I have the params file for the residue but when it is passed on via the -extra_res_fa , pyrosetta still won't recognize it. Next to pyrosetta being able to read this AA in a pdb, I also want to mutate (canonical) AA into modified AAs (say hydroxyl group into acrylate). The mutate_residue only takes one character as an argument that corresponds to the canonical AAs, whilst a three letter argument would be preferred.
I have also thought about writing a patch for side-chain modifications but it is still unclear to me how I would be able to use this patch to mutate AAs in the sequence.
Does anyone have a solid protocol for incorporating non-canonical AAs and/or mutations involving non-canonical AAs?
Any help is appreciated, thanks!
In order to add a residue its residue type (=topology as CHARMM et al. call them) needs to be known in the residue type set of the pose.
That is a params file stores a residue type information —this evident by the fact that the params files live in rosetta/main/database/chemical/residue_type_sets/fa_standard.
To add a params file to a pose you need a vector of filenames:
or
then
This pose can be mutated to that residue with the MutateResidue mover, which allows non-canonical and patches.
Mutate residue can also repack, but calling relax with a movemap is easier/better/faster.
Do note that if the residue name does not exist a segfault will happen therefore it may be nice to check all is in order first.
To be fancy, one may have a params file as string or want to modify a pre-existing pose.
You can also use non-canonical residues with pose_from_sequence etc. which require a 3 letter name using the "Z[NLE]" synthax, where Z is the single letter code (X ligand, Z non-canonical aa) and the 3-letter code as seen in the params file.
Second lastly, note that not everything in works
So do test them. I actually make my own...
Lastly, some cases such as acylations exist as patches...