PyMOL Quickie - Making Mutations
ฝัง
- เผยแพร่เมื่อ 11 ก.ย. 2024
- MAKING MUTATIONS - github.com/PyM...
00:00:24 Introduction - mutations and amino acids
00:04:11 Introduction - rotamers and states
00:06:26 GUI - making mutations
00:12:41 GUI - remove clashes with sculpting
00:15:17 Command line - making mutations
00:17:55 Command line - remove clashes with sculpting
00:22:03 BASH scripting
to run the bash commands, replace '(out into)' below, with the right-hand facing arrow key (which are not allowed in the comments!)
MUTATIONS USING THE GUI
00:06:26
rein
load molecule
Crystal Structure of heterodimeric L. donovani topoisomerase I
fetch 2B9S
clean and present
remove ! polymer
util.cbc
show sticks, sc. + n. CA + r. PRO & n. N
as sticks, polymer.nucleic
bg_color white
util.cnc
orient
#### Make mutation
Wizard :: Mutagenesis :: Protein
Find and pick your residue
can also use sequence view
states unmutated
use state controls to cycle through rotamers
pick new residue
[No Mutation] button has choices
states mutated
use state controls to cycle through rotamers
00:12:41 # then
Build :: Sculpting :: Sculpting
Build :: Sculpting :: Activate
allow to relax
Build :: Sculpting :: Deactivate
Build :: Sculpting :: Sculpting
also
Wizard :: Mutagenesis :: nucleic acids
00:15:17
MUTATIONS USING THE COMMAND LINE
rein
load molecule
Crystal Structure of heterodimeric L. donovani topoisomerase I
fetch 2B9S
clean and present
remove ! polymer
util.cbc
show sticks, sc. + n. CA + r. PRO & n. N
as sticks, polymer.nucleic
bg_color white
util.cnc
orient
Turn on the wizard
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
mutate chain A residue 352 to PHE
cmd.get_wizard().set_mode("HIS")
cmd.get_wizard().do_select("A/150/")
Apply mutation
cmd.get_wizard().apply()
00:17:55
relax structure
select mutant, A/150/
select new, br. mutant gap 10
flag fix, br. mutant gap 10
sculpt_activate 2B9S
sculpt_iterate all, cycles=2000
sculpt_deactivate 2B9S
00:22:03
MUTATIONS USING A BASH SCRIPT
prepare you input file in pymol
select br. polymer.protein within 5 of polymer.nucleic
save interact.pdb, sele
prepare you input file in bash
grep ' CA ' interact.pdb | cut -c 22-27 | sed 's/ /\//g;s/\/\//\//g' (out into) res.list
This is the BASH script
for YYY in $(cat res.list | head -5) ; do
for XXX in ALA LYS ; do
chain=$(echo $YYY | cut -c 1)
num=$(echo $YYY | cut c 3 | rev | cut c 2 | rev)
echo -en "
mutating chain $chain res $num to $XXX"
echo "
rein
fetch 2B9S, async=0
remove ! polymer
cmd.wizard(\"mutagenesis\")
cmd.do(\"refresh_wizard\")
lets mutate residue 104 to GLN
cmd.get_wizard().set_mode(\"$XXX\")
cmd.get_wizard().do_select(\"$YYY\")
Apply the mutation
cmd.get_wizard().apply()
cmd.get_wizard().done()
select mutant, $YYY
flag fix, br. mutant gap 10
sculpt_activate 2B9S
sculpt_iterate all, cycles=1000
sculpt_deactivate 2B9S
save $XXX-$chain-$num.pdb, all
" (out into) mutate.pml
pymol -qc mutate.pml 1 (out into) /dev/null
while [ ! -f $XXX-$chain-$num.pdb ] ; do
sleep 1
done
done
done
Dear Dr. Ross, thank you so much for the videos! I really am a big fan of your channel! Plus, would you mind teaching finding and installing plugins of PyMOL? e.g. the "undo" plugin, I could not find it on GitHub anymore...Many thanks!
Thanks for your comment! I'll have a look into that. I know that the undo feature (ctrl-z) is a little better in version 2.4 than the previous 1.x versions, still not great though.
Hi Dr.Ross this is really a video with good information. i need to know can we replace any amino acid in pymol with any other modified group? like some of the amino acids can undergo modification posttranscriptionally?
Hi Prachi, You can use the 'builder' button in the top right section of the GUI.
Make sure you are on the 'chemical' tab of the builder window,
Make sure you in editing mode at the bottom right of the GUI
Click on the atom you wish to replace, and then click the atom type you want on the builder menu.
If you wish to 'add' rather then 'replace' then you should first replace the first atom with itself, this will add hydrogens, you can then replace the hydrogens.
To make phosphoserine . . .
click on the side chain oxygen and select 'O' from the builder menu, this will add hydrogens
click on the hydrogen, click on the 'P=O3' button on the GUI.
remember you can rotate bonds by clicking on them if hold CTRL and right click, while in editing mode.
For more complicated modifications, it might be worth finding a pdb with the correct structure and substituting it in.
Hi Dr Ross, thank you for sharing such great and useful videos!
I would like to ask you a question about the pymol, I coloured the protein with different colours by B-factor, while how can I create a colour bar for the meaning of different colours? Thank you in advance!
Hi Wenchao, thanks for the comment.
You can use the following commands,
spectrum b, blue_white_red, minimum=20, maximum=50
as cartoon
cartoon putty
ramp_new colorbar, none, [50, 35, 20], [red, white, blue]
I found them here
pymolwiki.org/index.php/Advanced_Coloring
Hello Dr. Ross,
Thank you for sharing. All of your video is helping me, however, I wonder about the structure I have. I tried to follow your instruction, however, the order is changed. Could you please help me how to protect the nucliec acid that I want to add? and do you think we can insert some nucleotide in between origin design?
Thank you
Regards
Fika
Hi Fika,
Maybe I can help, you will have to describe the problem a little more. Is the file from the pdb? could you share the pdb code?
What is it you are attempting to do? insert/substitute a nucleotide?
'the order is changed' - the order of what is changed?
'help me to protect the nucleic acid' - what do you mean by 'protect'
Yes inserting/substituting a nucleotide should be simple enough. Although the model will need refinement in more advanced software afterwards to make it more realistic.
Thanks
James
@@pymolross Hello Dr. Ross,
Thank you for your answer. Yes, I have the pdb file. The code is 5cmx. In this model, there are thrombin and the RE31. From this model, I only need RE31, consisting of 31 nucleotides that form a secondary structure called G-quadruplex. I have done designing with the addition of some new nucleotides, the length before additional nucleotides was 31 and after additional is 45. The characteristic result from some analysis showed that my new RE31 still keeps the secondary structure.
My purpose for my final experiment is to docking to Immune cell receptors using my new RE31. Because my lack knowledge how to create the G-quadruplex smiles format, I think it will be easy for me to add some nucleotides within the bases using other software. So, I started to try another method and I found your channel. I think I can add some nucleotides within the sequences using builder and sculpt in pymol. However, after 3 bases, the position was not correct and also it showed the error ExecutiveRMSPairs-Error: Atom counts between selection sets don't match (5 != 10).
Do you mind if I send you an email so I can send you a video of what I mean?
Thank you
Best regards
Fika
My suspicion is that pymol will not be able to help with this problem. Pymol is good for visualising proteins and building toy models, however, if you are looking for atomically accurate models for docking you would be better off using more sophisticated software.
A good program to convert between molecular file formats is open babel (pdb to smiles)
openbabel.org/wiki/Main_Page
here is a link to their smiles page
openbabel.org/docs/current/FileFormats/SMILES_format.html
However with smiles, you will lose the 3D structure of your quadruplex which will be important, and most docking programs will struggle generating the 3D structures from smiles only. I would suggest looking for software which can build a quadruplex from scratch (or homology) with your intended sequence.
you can try
alcazar.science.uu.nl/dna/dna.php
en.wikipedia.org/wiki/List_of_RNA_structure_prediction_software
openwetware.org/wiki/Wikiomics:RNA_secondary_structure_prediction
HADDOCK apparently has a DNA modelling function, but i have not used it.
wenmr.science.uu.nl/
Thanks
James
@@pymolross Hello again Dr. Ross.
Thank you very much. I will learn all of the link you shared. Thank you
Regards
Fika
Hi Dr.Ross, many thanks for such useful video, I have a question, I would like to map the variants to the 3d structure, imean here you did map only 2 amino acids, could you please guide me how can I do mapping for the all sequences?
Hi @maryamsediqi3726
Yes you can do that in PyMOL, but it would be best to use a piece of software such as Rosetta which will minimise the sidechains after mutation (as you are making so many). Or indeed to use software which generates a homology model. However, to do this in pymol you can use the following commands
load file.pdb
wizard mutagenesis
cmd.get_wizard().do_select('i. 1')
cmd.get_wizard().set_mode('ALA')
cmd.get_wizard().apply()
refresh_wizard
cmd.get_wizard().do_select('i. 2')
cmd.get_wizard().set_mode('CYS')
cmd.get_wizard().apply()
refresh_wizard
. . . .
save mutant.pdb
quit
Where the 1 and the 2 are the residue numbers (if multi-chained, then you need to specify the chain too) and ALA and CYS are the chosen residues for those positions. You can use a little simple scripting to generate a file with the specified mutations you desire.
I hope that helps!
@@pymolross Many thanks for your help. I tried and it works, but I want to mutate all the structures to the variants, for example, for chain A I want to apply all variants of about 700 residues, in this case, if I do one by one it takes so much time, could you please guide me is there any way to apply all at once? I do really appreciate your help and guide.
Hi @maryamsediqi3726
So you have 700 different sequences with homology to the template? You can do this in pymol with the mutagenesis commands I've given you above, but it would require you to write a program in python or bash etc to iterate the mutation command as desired. However, pymol is not good at making insertions and deletions, so the variant sequences would need have the exact same number of residues, which is unlikely.
In this case, I would advise some homology modelling, you might find this webpage helpful www.pdg.cnb.uam.es/cursos/bcn05/Structures/3D_Practicals/P_homology/index.html
Swiss-model and the Robetta server are well regarded.
You could try the very modern AlphaFold2 colab.research.google.com/github/sokrypton/ColabFold/blob/main/beta/AlphaFold2_advanced.ipynb
If I have misinterpreted the problem, please correct me.
@@pymolross many thanks for your reply. I am sorry for my poor description as I am new in working with pymol. Mainly, I would like to map the variants to its 3D structure. For example, I recognised the variants (only single nucleotide variants) in BRCA1 by using clinvar, and now I want to map these all amino acid sequences (the mutated) to its 3D structure in pymol. Thus, doing these all one by one of course takes time, and you are right I must write a program in python or bash. I tried to use the commands which you gave me as bellow:
import cmd
import sys
pdb, selection, mutant = sys.argv[chainA.pdb]
cmd.wizard("mutagenesis")
cmd.fetch(pdb)
cmd.refresh_wizard()
cmd.get_wizard().do_select('i. 1')
cmd.get_wizard().set_mode('ALA')
cmd.get_wizard().apply()
refresh_wizard
cmd.get_wizard().do_select('i. 2')
cmd.get_wizard().set_mode('CYS')
cmd.get_wizard().apply()
refresh_wizard
cmd.save("%s_m.pdb" % pdb, pdb)
but the problem is how can I add all the variants amino acids at once and then visualise by using pymol. Is there any code? please let me know if I described not clearly. Thanks in advance
When you say 'add all the variants amino acids at once' I don't understand what you mean. If there is one position with multiple different mutations, do you intent to superimpose multiple amino acids in the same place, in a single model? or generate multiple models, one model per variant? The first option would be difficult to rationalise and the second option would give you many models to look through.
What format is the sequence data, and how many sequences do you have? Or is the data simply mutations at position (for example A34S) presumably you are working with a fasta file. In either case you need to make loop in which iterates over the position number and the mutant amino acid, and writes the commands with the new variables.
In bash, i would do something such as (providing only one mutation per position, and all mutations applied to one model)
***example input file
A34S
D36T
. . .
***script example
echo "load file.pdb
wizard mutagenesis" > mutate.pml
for mut in $(cat input.file) ; do
# get position
position=$(echo $mut | cut -c 2- | rev | cut -c 2- | rev)
# get amino acid
amino=$(echo $mut | rev | cut -c 1 | rev)
# convert to 3 letter
if [ $amino = A ] ; then
amino=ALA
elif [ $amino = C ] ; then
amino=CYS
*** you can finish this off ***
fi
#print out mutation commands
echo "cmd.get_wizard().do_select('i. $position')
cmd.get_wizard().set_mode('$amino')
cmd.get_wizard().apply()
refresh_wizard" >> mutate.pml
done
echo "save mutant.pdb" >> mutate.pml
pymol -qc mutate.pml
hi Dr Ross, if I want to do frameshift mutation how can I do it in pymol
Hi @sumayaibrahime3666
A frameshift inserts or deletes a nucleotide, this causes the codon reading frame to be shifted +1 or -1 respectively. Thus from the point of the frame shift, the sequence of amino acids changes until the end of the open reading frame or until a rescue frame shift mutation restores the original codon sequencing.
In Pymol, there is no function to apply a frameshift, as the nucleotide sequence is absent from pymol, which only has the amino acid sequence. So first, you will need to use another piece of software to find out how the frameshift changes the amino acid sequence. You can use programs such as 'bioedit', 'jalview' or 'benchling' (plenty of others too!) to paste and edit the nucleotide sequence, and then view the amino acid sequence once you have applied the frame shift.
Once you have the new amino acid sequence you can apply those mutations as seen in the video. If you have many mutations to make you might want to consider coding a solution in python or another programming language.
Just remember to look out for '*' in the amino acid sequence which refers to a stop codon, resulting in a truncated protein.
Hope that helps.
@@pymolross this was very helpful, thank you