Advertisement
asteroidsteam

Dna / Rna python processing 2.0

Jun 23rd, 2019
1,449
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.24 KB | None | 0 0
  1. ##### READ BELOW FIRST #####
  2. # Requirements:
  3. # PyMOL, Argparse
  4. # Running: pymol <thisfile> -- <DNA HERE> --visual
  5. ############################
  6. import argparse
  7. import pymol
  8. from pymol import _cmd
  9.  
  10. RNA3 = {
  11.  "AAA": "Lys",
  12.  "AAC": "Asn",
  13.  "AAG": "Lys",
  14.  "AAU": "Asn",
  15.  "ACA": "Thr",
  16.  "ACC": "Thr",
  17.  "ACG": "Thr",
  18.  "ACU": "Thr",
  19.  "AGA": "Arg",
  20.  "AGC": "Ser",
  21.  "AGG": "Arg",
  22.  "AGU": "Ser",
  23.  "AUA": "Lle",
  24.  "AUC": "Lle",
  25.  "AUG": "Mel",
  26.  "AUU": "Lle",
  27.  "CAA": "Gln",
  28.  "CAC": "His",
  29.  "CAG": "Gln",
  30.  "CAU": "His",
  31.  "CCA": "Pro",
  32.  "CCC": "Pro",
  33.  "CCG": "Pro",
  34.  "CCU": "Pro",
  35.  "CGA": "Arg",
  36.  "CGC": "Arg",
  37.  "CGG": "Arg",
  38.  "CGU": "Arg",
  39.  "CUA": "Leu",
  40.  "CUC": "Leu",
  41.  "CUG": "Leu",
  42.  "CUU": "Leu",
  43.  "GAA": "Glu",
  44.  "GAC": "Asp",
  45.  "GAG": "Glu",
  46.  "GAU": "Asp",
  47.  "GCA": "Ala",
  48.  "GCC": "Ala",
  49.  "GCG": "Ala",
  50.  "GCU": "Ala",
  51.  "GGA": "Gly",
  52.  "GGC": "Gly",
  53.  "GGG": "Gly",
  54.  "GGU": "Gly",
  55.  "GUA": "Val",
  56.  "GUC": "Val",
  57.  "GUG": "Val",
  58.  "GUU": "Val",
  59.  "UAA": "Stop",
  60.  "UAC": "Tyr",
  61.  "UAG": "Stop",
  62.  "UAU": "Tyr",
  63.  "UCA": "Ser",
  64.  "UCC": "Ser",
  65.  "UCG": "Ser",
  66.  "UCU": "Ser",
  67.  "UGA": "Stop",
  68.  "UGC": "Cys",
  69.  "UGG": "Trp",
  70.  "UGU": "Cys",
  71.  "UUA": "Leu",
  72.  "UUC": "Phe",
  73.  "UUG": "Leu",
  74.  "UUU": "Phe",
  75. }
  76. AMINOACID_CHEM = {
  77.     "Ala": "CH3-CH(NH2)-COOH",
  78.     "Arg": "HN=C(NH2)-NH-(CH2)3-CH(NH2)-COOH",
  79.     "Asn": "H2N-CO-CH2-CH(NH2)-COOH",
  80.     "Asp": "HOOC-CH2-CH(NH2)-COOH",
  81.     "Cys": "HS-CH2-CH(NH2)-COOH",
  82.     "Gln": "H2N-CO-(CH2)2-CH(NH2)-COOH",
  83.     "Glu": "HOOC-(CH2)2-CH(NH2)-COOH",
  84.     "Gly": "NH2-CH2-COOH",
  85.     "His": "NH-CH=N-CH=C-CH2-CH(NH2)-COOH",
  86.     "Lle": "CH3-CH2-CH(CH3)-CH(NH2)-COOH",
  87.     "Leu": "(CH3)2-CH-CH2-CH(NH2)-COOH",
  88.     "Lys": "H2N-(CH2)4-CH(NH2)-COOH",
  89.     "Met": "CH3-S-(CH2)2-CH(NH2)-COOH",
  90.     "Phe": "Ph-CH2-CH(NH2)-COOH",
  91.     "Pro": "NH-(CH2)3-CH-COOH",
  92.     "Ser": "HO-CH2-CH(NH2)-COOH",
  93.     "Thr": "CH3-CH(OH)-CH(NH2)-COOH",
  94.     "Trp": "Ph-NH-CH=C-CH2-CH(NH2)-COOH",
  95.     "Tyr": "HO-Ph-CH2-CH(NH2)-COOH",
  96.     "Val": "(CH3)2-CH-CH(NH2)-COOH"
  97. }
  98. AMINOACID_PEPTIDE = {
  99.     "Ala": "A",
  100.     "Arg": "R",
  101.     "Asn": "N",
  102.     "Asp": "D",
  103.     "Cys": "C",
  104.     "Gln": "Q",
  105.     "Glu": "E",
  106.     "Gly": "G",
  107.     "His": "H",
  108.     "Lle": "I",
  109.     "Leu": "L",
  110.     "Lys": "K",
  111.     "Met": "M",
  112.     "Phe": "F",
  113.     "Pro": "P",
  114.     "Ser": "S",
  115.     "Thr": "T",
  116.     "Trp": "W",
  117.     "Tyr": "Y",
  118.     "Val": "V"
  119. }
  120. RNA_CONVERSION = {
  121.     "A": "A",
  122.     "C": "C",
  123.     "G": "G",
  124.     "T": "U"
  125. }
  126.  
  127. def DNAtoRNA(DNA):
  128.     RNA = ""
  129.     for c in DNA:
  130.         RNA += RNA_CONVERSION[c]
  131.     return RNA
  132.  
  133. def RNAtoAminoAcid(RNA):
  134.     amino = ""
  135.     i = 0;
  136.     while (i <= len(RNA)-1):
  137.         next3 = RNA[i:3+i];
  138.         if (len(next3) != 3):
  139.             break;
  140.         if (RNA3[next3] == "Stop"):
  141.             break;
  142.         amino += RNA3[next3];
  143.         i+=3;
  144.     return amino;
  145.  
  146. def AminoAcidtoChem(AMINO):
  147.     chem = ""
  148.     i = 0;
  149.     while (i <= len(AMINO)-1):
  150.         next3 = AMINO[i:3+i];
  151.         if (len(next3) != 3):
  152.             break;
  153.         if (AMINOACID_CHEM[next3] == "Stop"):
  154.             break;
  155.         chem += AMINOACID_CHEM[next3] + " + ";
  156.         i+=3;
  157.     return chem[:-3];        
  158.  
  159. def AminoAcidtoPeptide(AMINO):
  160.     peptide = ""
  161.     i = 0;
  162.     while (i <= len(AMINO)-1):
  163.         next3 = AMINO[i:3+i];
  164.         if (len(next3) != 3):
  165.             break;
  166.         if (AMINOACID_PEPTIDE[next3] == "Stop"):
  167.             break;
  168.         peptide += AMINOACID_PEPTIDE[next3]
  169.         i+=3;
  170.     return peptide
  171.  
  172. def ChemtoAminoAcid(CHEM):
  173.     CHEM = CHEM.split(" + ")
  174.     AMINO = ""
  175.     for eq in CHEM:
  176.         for amino in AMINOACID_CHEM:
  177.             if (eq == AMINOACID_CHEM[amino]):
  178.                 AMINO += amino;
  179.     return AMINO;
  180.  
  181. def AminoAcidtoRNA(AMINO):
  182.     RNA = ""
  183.     i = 0;
  184.     while (i <= len(AMINO)):
  185.         for rnaset in RNA3:
  186.             if AMINO[i:i+3] == RNA3[rnaset]:
  187.                 RNA += rnaset;
  188.                 break;
  189.         i += 3;
  190.     return RNA;
  191.  
  192. def RNAtoDNA(RNA):
  193.     DNA = ""
  194.     for c in RNA:
  195.         if (c == "U"):
  196.             DNA += "T"
  197.         else:
  198.             DNA += c
  199.     return DNA
  200.    
  201.  
  202. parser = argparse.ArgumentParser(description='Process DNA/RNA Structures')
  203.  
  204. parser.add_argument('structure', help='DNA/RNA Structure (Example: TCAGTTCGAATC)')
  205. parser.add_argument('--rna', action='store_true', help='Use RNA as structure');
  206. parser.add_argument('--chem', action='store_true', help='Generate chemical structure of protein produced by RNA/DNA')
  207. parser.add_argument('--chemtoamino', action='store_true', help='Convert CHEM to Amino acid')
  208. parser.add_argument('--aminotorna', action='store_true', help='Convert Amino acids to RNA')
  209. parser.add_argument('--rnatodna', action='store_true', help='Convert RNA to DNA')
  210. parser.add_argument('--peptide', action='store_true', help='Output Peptide form')
  211. parser.add_argument('--visual', action='store_true', help='Visualize the protein')
  212.  
  213. args = parser.parse_args()
  214.  
  215. if (args.rna and not args.chemtoamino and not args.aminotorna and not args.rnatodna):
  216.     try:
  217.         if (args.chem):
  218.             print(AminoAcidtoChem(RNAtoAminoAcid(args.structure)))
  219.         elif (args.peptide):
  220.             print(AminoAcidtoPeptide(RNAtoAminoAcid(args.structure)))
  221.         elif (args.visual):
  222.             for aa in AminoAcidtoPeptide(RNAtoAminoAcid(args.structure)): cmd._alt(string.lower(aa))
  223.         else:
  224.             print(RNAtoAminoAcid(args.structure))
  225.     except Exception as e:
  226.         print("Error: Invalid RNA Structure!")
  227. elif (not args.rna and not args.chemtoamino and not args.aminotorna and not args.rnatodna):
  228.     try:
  229.         if (args.chem):
  230.             print(AminoAcidtoChem(RNAtoAminoAcid(DNAtoRNA(args.structure))))
  231.         elif (args.peptide):
  232.             print(AminoAcidtoPeptide(RNAtoAminoAcid(DNAtoRNA(args.structure))))
  233.         elif (args.visual):
  234.             for aa in AminoAcidtoPeptide(RNAtoAminoAcid(DNAtoRNA(args.structure))): cmd._alt(string.lower(aa))
  235.         else:
  236.             print(RNAtoAminoAcid(DNAtoRNA(args.structure)))
  237.     except Exception as e:
  238.         print("Error: Invalid DNA Structure!")
  239. elif (args.chemtoamino):
  240.     print(ChemtoAminoAcid(args.structure))
  241. elif (args.aminotorna):
  242.     print(AminoAcidtoRNA(args.structure))
  243. elif (args.rnatodna):
  244.     print(RNAtoDNA(args.structure))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement