⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dna2.cc

📁 unix或linux下的DNA分析软件源码 其功能如下 1. Edit up to 256 peptide or DNA sequences simultaneously. 2. Transla
💻 CC
📖 第 1 页 / 共 4 页
字号:
  if(!g.editing) analyze();}//--------------------------------------------------------------------------//// nextframe                                                                ////--------------------------------------------------------------------------//void nextframe(void){  g.doc[g.cs].frame++;  if(g.doc[g.cs].frame>2) g.doc[g.cs].frame=0;  translate(0); // don't check if it's a protein  if(!g.editing) analyze();}//--------------------------------------------------------------------------//// up                                                                       ////--------------------------------------------------------------------------//void up(void){  int cs;  if(g.editing) cs = g.cs; else cs = g.matrix_set2;  g.doc[cs].offset += 100;  XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//--------------------------------------------------------------------------//// down                                                                     ////--------------------------------------------------------------------------//void down(void){  int cs;  if(g.editing) cs = g.cs; else cs = g.matrix_set2;  g.doc[cs].offset -= 100;  if(!g.editing) g.doc[cs].offset = max(0,g.doc[cs].offset);  XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//--------------------------------------------------------------------------//// left                                                                     ////--------------------------------------------------------------------------//void left(void){  int cs;  if(g.editing) cs = g.cs; else cs = g.matrix_set1;  g.doc[cs].offset += 100;  XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//--------------------------------------------------------------------------//// right                                                                    ////--------------------------------------------------------------------------//void right(void){  int cs;  if(g.editing) cs = g.cs; else cs = g.matrix_set1;  g.doc[cs].offset -= 100;  if(!g.editing) g.doc[cs].offset = max(0,g.doc[cs].offset);  XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//--------------------------------------------------------------------------//// toggle_sequence_mode                                                     ////--------------------------------------------------------------------------//void toggle_sequence_mode(void){  int mode = 1 - g.sequence_mode;  set_sequence_mode(mode);}//--------------------------------------------------------------------------//// set_sequence_mode                                                        ////--------------------------------------------------------------------------//void set_sequence_mode(int mode){  char tempstring[32];    int but=-1,k;  for(k=0;k<g.nbuttons;k++)      if(!strcmp(g.button[k]->activate_cmd, "dna")){ but=k; break; }  if(but<0) return;  if(mode==PROTEIN) strcpy(tempstring, "Protein");   else strcpy(tempstring, "DNA");   XmString xms;  if(but>0 && XtIsManaged(g.button[but]->widget))   {   XtVaSetValues(g.button[but]->widget, XmNlabelString,           xms=XmStringCreateSimple(tempstring), NULL);      XmStringFree(xms);    }  g.sequence_mode = mode;}//--------------------------------------------------------------------------//// edit                                                                     ////--------------------------------------------------------------------------//void edit(void){  g.editing = 1-g.editing;  char tempstring[32];    int but=-1,k;  for(k=0;k<g.nbuttons;k++)      if(!strcmp(g.button[k]->activate_cmd, "edit")){ but=k; break; }  if(g.editing) strcpy(tempstring, "Edit");   else strcpy(tempstring, "Matrix plot");   XmString xms;  XtVaSetValues(g.button[but]->widget, XmNlabelString,       xms=XmStringCreateSimple(tempstring), NULL);  XmStringFree(xms);    XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//--------------------------------------------------------------------------//// undo                                                                     ////--------------------------------------------------------------------------//void undo(void){  g.doc[g.cs].n = g.doc[g.cs].on;  memcpy(g.doc[g.cs].text, g.doc[g.cs].otext, g.doc[g.cs].n);  memcpy(g.doc[g.cs].dtext, g.doc[g.cs].otext, g.doc[g.cs].n);  g.doc[g.cs].type = g.doc[g.cs].otype;  g.doc[g.cs].frame = 0;  g.doc[g.cs].offset = 0;  g.doc[g.cs].touched = 0;    XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//---------------------------------------------------------------//// dna2protein                                                   ////---------------------------------------------------------------//int dna2protein(char *code){    int k;   char c[8];   for(k=0; k<3; k++){ if(code[k]=='T') c[k]='U'; else c[k]=code[k]; }   c[3] = 0;   if(!(strcmp(c,"UUU"))) return 'F';   if(!(strcmp(c,"UUC"))) return 'F';   if(!(strcmp(c,"UUA"))) return 'L';   if(!(strcmp(c,"UUG"))) return 'L';   if(!(strcmp(c,"UCU"))) return 'S';   if(!(strcmp(c,"UCC"))) return 'S';   if(!(strcmp(c,"UCA"))) return 'S';   if(!(strcmp(c,"UCG"))) return 'S';   if(!(strcmp(c,"UCN"))) return 'S';   if(!(strcmp(c,"UAU"))) return 'Y';   if(!(strcmp(c,"UAC"))) return 'Y';   if(!(strcmp(c,"UAA"))) return 'x';   if(!(strcmp(c,"UAG"))) return 'x';   if(!(strcmp(c,"UAN"))) return 'Y';   if(!(strcmp(c,"UGU"))) return 'C';   if(!(strcmp(c,"UGC"))) return 'C';   if(!(strcmp(c,"UGA"))) return 'x';   if(!(strcmp(c,"UGG"))) return 'W';   if(!(strcmp(c,"CUU"))) return 'L';   if(!(strcmp(c,"CUC"))) return 'L';   if(!(strcmp(c,"CUA"))) return 'L';   if(!(strcmp(c,"CUG"))) return 'L';   if(!(strcmp(c,"CUN"))) return 'L';   if(!(strcmp(c,"CCU"))) return 'P';   if(!(strcmp(c,"CCC"))) return 'P';   if(!(strcmp(c,"CCA"))) return 'P';   if(!(strcmp(c,"CCG"))) return 'P';   if(!(strcmp(c,"CCN"))) return 'P';   if(!(strcmp(c,"CAU"))) return 'H';   if(!(strcmp(c,"CAC"))) return 'H';   if(!(strcmp(c,"CAA"))) return 'Q';   if(!(strcmp(c,"CAG"))) return 'Q';   if(!(strcmp(c,"CGU"))) return 'R';   if(!(strcmp(c,"CGC"))) return 'R';   if(!(strcmp(c,"CGA"))) return 'R';   if(!(strcmp(c,"CGG"))) return 'R';   if(!(strcmp(c,"CGN"))) return 'R';   if(!(strcmp(c,"AUU"))) return 'I';   if(!(strcmp(c,"AUC"))) return 'I';   if(!(strcmp(c,"AUA"))) return 'I';   if(!(strcmp(c,"AUG"))) return 'M';   if(!(strcmp(c,"ACU"))) return 'T';   if(!(strcmp(c,"ACC"))) return 'T';   if(!(strcmp(c,"ACA"))) return 'T';   if(!(strcmp(c,"ACG"))) return 'T';   if(!(strcmp(c,"ACN"))) return 'T';   if(!(strcmp(c,"AAU"))) return 'N';   if(!(strcmp(c,"AAC"))) return 'N';   if(!(strcmp(c,"AAA"))) return 'K';   if(!(strcmp(c,"AAG"))) return 'K';   if(!(strcmp(c,"AGU"))) return 'S';   if(!(strcmp(c,"AGC"))) return 'S';   if(!(strcmp(c,"AGA"))) return 'R';   if(!(strcmp(c,"AGG"))) return 'R';   if(!(strcmp(c,"GUU"))) return 'V';   if(!(strcmp(c,"GUC"))) return 'V';   if(!(strcmp(c,"GUA"))) return 'V';   if(!(strcmp(c,"GUG"))) return 'V';   if(!(strcmp(c,"GUN"))) return 'V';   if(!(strcmp(c,"GCU"))) return 'A';   if(!(strcmp(c,"GCC"))) return 'A';   if(!(strcmp(c,"GCA"))) return 'A';   if(!(strcmp(c,"GCG"))) return 'A';   if(!(strcmp(c,"GCN"))) return 'A';   if(!(strcmp(c,"GAU"))) return 'D';   if(!(strcmp(c,"GAC"))) return 'D';   if(!(strcmp(c,"GAA"))) return 'E';   if(!(strcmp(c,"GAG"))) return 'E';   if(!(strcmp(c,"GGU"))) return 'G';   if(!(strcmp(c,"GGC"))) return 'G';   if(!(strcmp(c,"GGA"))) return 'G';   if(!(strcmp(c,"GGG"))) return 'G';   if(!(strcmp(c,"GGN"))) return 'G';   return 'x';}//--------------------------------------------------------------------------//// compare                                                                  ////--------------------------------------------------------------------------//void compare(void){ message("Compare not implemented");}//--------------------------------------------------------------------------//// statistics                                                               ////--------------------------------------------------------------------------//void statistics(void){   int k,n,cs=g.cs;   int listcount = -1, selection;   char listtitle[100] = "Sequence statistics";                     char **info;                                       int *count = new int[32];   info = new char*[MAXCOMMENTS];   if(!g.doc[cs].n) return;   count_bases(cs, count, n);   info[++listcount] = new char[128];    sprintf(info[listcount], "Length %d", n);   info[++listcount] = new char[128];    sprintf(info[listcount], "Mol. wt %g", molecular_weight(cs));   info[++listcount] = new char[128];    sprintf(info[listcount], "Expected frequency %g", peptide_frequency(cs));   info[++listcount] = new char[128];    sprintf(info[listcount],     "AA     Total    Pct.");   for(k=0; k<=26; k++)   if(count[k])   {  info[++listcount] = new char[128];       sprintf(info[listcount], " %c     %3d       %2.3g",          k+'A', count[k], 100.0*(double)count[k]/(double)n);      }   selection = 0;   listinfo l;   l.title = listtitle;   l.info  = info;   l.size  = listcount+1;   l.itemstoshow = listcount-1;   l.firstitem   = 1;   l.wantsort    = 0;   l.wantsave    = 0;   l.helptopic   = 0;   l.allowedit   = 0;   l.selection   = &selection;   l.width       = 0;   l.transient   = 0;   l.wantfunction = 0;   l.autoupdate   = 0;   l.clearbutton  = 0;   l.highest_erased = 0;   list(&l);   for(k=0;k<=listcount;k++) delete[] info[k];                 delete[] info;   delete[] count;   g.getout=0;}//--------------------------------------------------------------------------//// molecular weight                                                         ////--------------------------------------------------------------------------//double molecular_weight(int cs){  double mw = 0;  int k;  for(k=0;k<g.doc[cs].n;k++)  if(g.doc[cs].type==DNA)  switch(g.doc[cs].text[k])    {   case 'A': mw +=313.23; break;      case 'G': mw +=329.23; break;      case 'C': mw +=289.20; break;      case 'T': mw +=304.21; break;      case 'U': mw +=290.19; break;       }else  switch(g.doc[cs].text[k])    {   case 'A': mw += 71.09; break;      case 'C': mw +=103.15; break;      case 'D': mw +=115.09; break;      case 'E': mw +=129.12; break;      case 'F': mw +=147.18; break;      case 'G': mw += 57.05; break;      case 'H': mw +=137.14; break;      case 'I': mw +=113.16; break;      case 'K': mw +=128.17; break;      case 'L': mw +=113.16; break;      case 'M': mw +=131.19; break;      case 'N': mw +=114.11; break;      case 'P': mw += 97.12; break;      case 'Q': mw +=128.14; break;      case 'R': mw +=156.19; break;      case 'S': mw += 87.08; break;      case 'T': mw +=101.11; break;      case 'V': mw += 99.14; break;      case 'W': mw +=186.21; break;      case 'Y': mw +=163.18; break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -