//$MENU window=main;popup=Sequence;insertpopupafter=Scripts;Name=Translate selected sequences integer i,j,k,x,tl,ct,frame,nuclseqlen,ok,baseidx,vl; string seqlist,expername,translexpername,transtablelist,transtable,st,st2,st3; string key,nuclseq,aminoseq,base,transcode,kodon,amino; DIALOG dlg; FILE fp; XMLNODE xmldoc,xmlnd; SEQUENCE sq,tsq; INDEX kodonidx; for i=1 to DbGetExperCount do if DbGetExperClass(i)="SEQ" then { if find(DbGetExperName(i),"_TRANSL",1)=0 then seqlist=seqlist+DbGetExperName(i)+" "; } expername=seqlist;expername=splitstring(expername," "); DlgAddText(dlg,"Select the experiment you want to translate",15,15,230,15); DlgAddList(dlg,seqlist,expername,15,35,150,100,"LIST"); if not(FileOpenRead(fp,DbGetStartupDir+"\aminotrans.txt")) then { Message("File 'aminotrans.txt' will now be copied"); ExtractAttach("trans",DbGetStartupDir+"\aminotrans.txt"); if not(FileOpenRead(fp,DbGetStartupDir+"\aminotrans.txt")) then { message("Could not find the file 'aminotrans.txt'"); stop; } } while not(fileIsEnd(fp)) do { st=FileRead(fp,999); if length(st)>5 then transtablelist=transtablelist+splitstring(st," ")+" "; } FileClose(fp); transtable="Standard"; DlgAddText(dlg,"Select the translation table",15,150,150,15); DlgAddList(dlg,transtablelist,transtable,15,170,250,150,"LIST"); x=DlgShow(dlg,"Translate selected sequences",380,350); if x<>1 then stop; //create translated experiment if necessary translexpername=expername+"_TRANSL"; if DbGetExperNr(translexpername)=0 then { DbCreateExperType(translexpername,"SEQ"); XMLNodeCreateDoc("Settings",xmldoc,xmlnd); XMLNodeAddText(XMLNodeAddChild(xmlnd,"Nucl"),"0"); DbSetExperSettings(DbGetExperNr(translexpername),xmldoc); XMLNodeCloseDocument(xmldoc); } //create translation frame field if necessary if DbGetFieldNr("TranslationFrames")=0 then DbAddField("TranslationFrames"); //load translation info FileOpenRead(fp,DbGetStartupDir+"\aminotrans.txt"); transcode=""; while not(fileIsEnd(fp)) do { st=FileRead(fp,999); if splitstring(st," ")=transtable then transcode=st; } FileClose(fp); if transcode="" then { message("Unable to load the translation info"); stop; } //build kodon index; for i=0 to 3 do { for j=0 to 3 do { for k=0 to 3 do { kodon=""; if i=0 then kodon=kodon+"T"; if i=1 then kodon=kodon+"C"; if i=2 then kodon=kodon+"A"; if i=3 then kodon=kodon+"G"; if j=0 then kodon=kodon+"T"; if j=1 then kodon=kodon+"C"; if j=2 then kodon=kodon+"A"; if j=3 then kodon=kodon+"G"; if k=0 then kodon=kodon+"T"; if k=1 then kodon=kodon+"C"; if k=2 then kodon=kodon+"A"; if k=3 then kodon=kodon+"G"; vl=(i*4+j)*4+k+1; IdxSet(kodonidx,kodon,vl); } } } setbusy("Performing translations..."); for tl=1 to DbGetEntryCount do if DbGetSel(DbGetEntryKey(tl)) then { ct=ct+1; if ct/10=floor(ct/10) then setbusy("Performing translations... - "+str(ct,0,0)); key=DbGetEntryKey(tl); frame=1; st=DbGetField(key,"TranslationFrames"); while st<>"" do { st2=splitstring(st,":="); st3=splitstring(st,"|"); if st2=expername then frame=val(st3); } if frame<1 then frame=1; if frame>3 then frame=3; if SeqLoad(sq,key,expername) then { SeqGet(sq,nuclseq);nuclseqlen=length(nuclseq); aminoseq=""; i=frame; while i+3<=nuclseqlen do { baseidx=0; kodon=substring(nuclseq,i,i+2); baseidx=IdxGet(kodonidx,kodon); if baseidx>0 then amino=substring(transcode,baseidx,baseidx); else amino="X"; if amino="*" then amino="X"; aminoseq=aminoseq+amino; i=i+3; } if not(SeqLoad(tsq,key,translexpername)) then SeqCreate(tsq,translexpername,"",key); SeqSet(tsq,aminoseq); SeqSave(tsq); } } setbusy(""); #_#_#_#_#_#_# ATTACHMENTS #_#_#_#_#_#_#_ >>ATTACHMENT V_1.0 trans 69 FDHEGBGOGEGBHCGEAJEGEGEMEMFDFDFDFDFJFJCK CKEDEDCKFHEMEMEMEMFAFAFAFAEIEIFBFBFCFCFC FCEJEJEJENFEFEFEFEEOEOELELFDFDFCFCFGFGFG FGEBEBEBEBEEEEEFEFEHEHEHEHANAKFGGFHCHEGF GCHCGBHEGFCAENGJHEGPGDGIGPGOGEHCGJGBGMAJ EGEGEMEMFDFDFDFDFJFJCKCKEDEDFHFHEMEMEMEM FAFAFAFAEIEIFBFBFCFCFCFCEJEJENENFEFEFEFE EOEOELELFDFDCKCKFGFGFGFGEBEBEBEBEEEEEFEF EHEHEHEHANAKFJGFGBHDHECAENGJHEGPGDGIGPGO GEHCGJGBGMAJEGEGEMEMFDFDFDFDFJFJCKCKEDED FHFHFEFEFEFEFAFAFAFAEIEIFBFBFCFCFCFCEJEJ ENENFEFEFEFEEOEOELELFDFDFCFCFGFGFGFGEBEB EBEBEEEEEFEFEHEHEHEHANAKENGPGMGECAENGJHE GPGDGIGPGOGEHCGJGBGMCAGBGOGECAENHJGDGPHA GMGBHDGNGBAJEGEGEMEMFDFDFDFDFJFJCKCKEDED FHFHEMEMEMEMFAFAFAFAEIEIFBFBFCFCFCFCEJEJ EJENFEFEFEFEEOEOELELFDFDFCFCFGFGFGFGEBEB EBEBEEEEEFEFEHEHEHEHANAKEJGOHGGFHCHEGFGC HCGBHEGFCAENGJHEGPGDGIGPGOGEHCGJGBGMAJEG EGEMEMFDFDFDFDFJFJCKCKEDEDFHFHEMEMEMEMFA FAFAFAEIEIFBFBFCFCFCFCEJEJENENFEFEFEFEEO EOELELFDFDFDFDFGFGFGFGEBEBEBEBEEEEEFEFEH EHEHEHANAKEDGJGMGJGBHEGFCAENGBGDHCGPGOHF GDGMGFGBHCCAGBGOGECAEEGBHJGDGMGBGEGBGDGF GBGOAJEGEGEMEMFDFDFDFDFJFJFBFBEDEDCKFHEM EMEMEMFAFAFAFAEIEIFBFBFCFCFCFCEJEJEJENFE FEFEFEEOEOELELFDFDFCFCFGFGFGFGEBEBEBEBEE EEEFEFEHEHEHEHANAKFAHCGPHEGPHKGPGBGOCAEN GJHEGPGDGIGPGOGEHCGJGBGMCACIGBGOGECAELGJ GOGFHEGPHAGMGBHDHECJAJEGEGEMEMFDFDFDFDFJ FJCKCKEDEDFHFHEMEMEMEMFAFAFAFAEIEIFBFBFC FCFCFCEJEJEJENFEFEFEFEEOEOELELFDFDFCFCFG FGFGFGEBEBEBEBEEEEEFEFEHEHEHEHANAKFAGMGB GOHECAENGJHEGPGDGIGPGOGEHCGJGBGMCPEDGIGM GPHCGPHAGMGBHDHEAJEGEGEMEMFDFDFDFDFJFJCK CKEDEDCKFHEMEMEMEMFAFAFAFAEIEIFBFBFCFCFC FHEJEJEJENFEFEFEFEEOEOELELFDFDFCFCFGFGFG FGEBEBEBEBEEEEEFEFEHEHEHEHANAKEFGDGIGJGO GPGEGFHCGNCAENGJHEGPGDGIGPGOGEHCGJGBGMAJ EGEGEMEMFDFDFDFDFJFJCKCKEDEDFHFHEMEMEMEM FAFAFAFAEIEIFBFBFCFCFCFCEJEJEJENFEFEFEFE EOEOEOELFDFDFDFDFGFGFGFGEBEBEBEBEEEEEFEF EHEHEHEHANAKEFHFHAGMGPHEGJGECAENGBGDHCGP GOHFGDGMGFGBHCAJEGEGEMEMFDFDFDFDFJFJCKFB EDEDEDFHEMEMEMEMFAFAFAFAEIEIFBFBFCFCFCFC EJEJEJENFEFEFEFEEOEOELELFDFDFCFCFGFGFGFG EBEBEBEBEEEEEFEFEHEHEHEHANAKEFHFGCGBGDHE GFHCGJGBGMAJEGEGEMEMFDFDFDFDFJFJCKCKEDED CKFHEMEMEMEMFAFAFAFAEIEIFBFBFCFCFCFCEJEJ EJENFEFEFEFEEOEOELELFDFDFCFCFGFGFGFGEBEB EBEBEEEEEFEFEHEHEHEHANAKEHHCGPHFHACAEJEJ CAHJGFGBHDHEHDAJEGEGEMEMFDFDFDFDFJFJCKCK EDEDCKFHEMEMEMFDFAFAFAFAEIEIFBFBFCFCFCFC EJEJEJENFEFEFEFEEOEOELELFDFDFCFCFGFGFGFG EBEBEBEBEEEEEFEFEHEHEHEHANAKEBHDGDGJGEGJ GBGOCAENGJHEGPGDGIGPGOGEHCGJGBGMAJEGEGEM EMFDFDFDFDFJFJCKCKEDEDFHFHEMEMEMEMFAFAFA FAEIEIFBFBFCFCFCFCEJEJENENFEFEFEFEEOEOEL ELFDFDEHEHFGFGFGFGEBEBEBEBEEEEEFEFEHEHEH EHANAKEGGMGBHEHHGPHCGNCAENGJHEGPGDGIGPGO GEHCGJGBGMAJEGEGEMEMFDFDFDFDFJFJFJCKEDED FHFHEMEMEMEMFAFAFAFAEIEIFBFBFCFCFCFCEJEJ EJENFEFEFEFEEOEOEOELFDFDFDFDFGFGFGFGEBEB EBEBEEEEEFEFEHEHEHEHANAKECGMGFHAGIGBHCGJ HDGNGBCAENGBGDHCGPGOHFGDGMGFGBHCAJEGEGEM EMFDFDFDFDFJFJCKFBEDEDCKFHEMEMEMEMFAFAFA FAEIEIFBFBFCFCFCFCEJEJEJENFEFEFEFEEOEOEL ELFDFDFCFCFGFGFGFGEBEBEBEBEEEEEFEFEHEHEH EHANAK