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

📄 dna2.cc

📁 unix或linux下的DNA分析软件源码 其功能如下 1. Edit up to 256 peptide or DNA sequences simultaneously. 2. Transla
💻 CC
📖 第 1 页 / 共 4 页
字号:
  }  return mw + 18.0;}//--------------------------------------------------------------------------//// peptide_frequency                                                        ////--------------------------------------------------------------------------//double peptide_frequency(int cs){  double p = 1.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': p *=0.25; break;      case 'G': p *=0.25; break;      case 'C': p *=0.25; break;      case 'T': p *=0.25; break;      case 'U': p *=0.25; break;       }else  switch(g.doc[cs].text[k])    {   case 'A': p *=0.083; break;      case 'C': p *=0.017; break;      case 'D': p *=0.053; break;      case 'E': p *=0.062; break;      case 'F': p *=0.039; break;      case 'G': p *=0.072; break;      case 'H': p *=0.022; break;      case 'I': p *=0.052; break;      case 'K': p *=0.057; break;      case 'L': p *=0.090; break;      case 'M': p *=0.024; break;      case 'N': p *=0.044; break;      case 'P': p *=0.051; break;      case 'Q': p *=0.040; break;      case 'R': p *=0.057; break;      case 'S': p *=0.069; break;      case 'T': p *=0.058; break;      case 'V': p *=0.066; break;      case 'W': p *=0.013; break;      case 'Y': p *=0.032; break;  }  return p;}//--------------------------------------------------------------------------//// count_bases                                                              ////--------------------------------------------------------------------------//void count_bases(int cs, int *count, int &n){  int ii, k, len=g.doc[cs].n;  for(k=0; k<=26; k++) count[k]=0;  for(k=0; k<len; k++)   {   ii = g.doc[cs].text[k]-'A';      if(between(ii,0,26)) count[ii]++;  }  n = 0;  for(k=0; k<=26; k++) n += count[k];}//--------------------------------------------------------------------------//// close                                                                    ////--------------------------------------------------------------------------//void close(void){  g.noofsequences--;  init_editor(g.cs);  XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//--------------------------------------------------------------------------//// set_offset                                                               ////--------------------------------------------------------------------------//void set_offset(int cs){  char tempstring[128];  sprintf(tempstring, "Offset for sequence #%d", cs+1);  g.doc[cs].offset = clickbox(tempstring, g.doc[cs].offset, 0, g.doc[cs].n, null, 0);  XClearWindow(g.display, g.draw_window);  redrawscreen(0, 0, g.xsize, g.ysize);}//--------------------------------------------------------------------------////  configure                                                               ////--------------------------------------------------------------------------//void configure(void){   int j,k;   Dialog dialog;   dialog.needrepeat=0;   strcpy(dialog.title,"Configuration");   strcpy(dialog.radio[0][0],"Save file format");                strcpy(dialog.radio[0][1],"Screen");   strcpy(dialog.radio[0][2],"Highlight format");   dialog.radioset[0] = g.save_format;   strcpy(dialog.boxes[0],"Matrix Data");   strcpy(dialog.boxes[1],"1st sequence");   strcpy(dialog.boxes[2],"2nd sequence");   sprintf(dialog.answer[1], "%d ", g.matrix_set1+1);   sprintf(dialog.answer[2], "%d ", g.matrix_set2+1);   dialog.boxtype[0]=LABEL;   dialog.boxtype[1]=INTCLICKBOX; dialog.boxmin[1]=1; dialog.boxmax[1]=MAXSEQUENCES;   dialog.boxtype[2]=INTCLICKBOX; dialog.boxmin[2]=1; dialog.boxmax[2]=MAXSEQUENCES;   dialog.noofboxes=3;   dialog.noofradios=1;   dialog.radiono[0]=3;   dialog.helptopic=0;   for(j=0;j<10;j++) for(k=0;k<20;k++) dialog.radiotype[j][k]=RADIO;   dialog.keep=0;   dialog.want_changecicb = 0;   dialog.f1 = null;   dialog.transient = 1;   strcpy(dialog.path,".");   ///////////////////   dialogbox(dialog);    ///////////////////   g.save_format = dialog.radioset[0];   g.matrix_set1 = atoi(dialog.answer[1])-1;   g.matrix_set2 = atoi(dialog.answer[2])-1;   return;}//--------------------------------------------------------------------------//// save                                                                     ////--------------------------------------------------------------------------//void save(int needfilename){  int j,k;  char title[128];  FILE *fp;  static char filename[FILENAMELENGTH] = "Untitled";  if(needfilename)  {    strcpy(filename, getfilename(filename));       if(cant_overwrite_file(filename)) return;  }else  // for printing       strcpy(filename, "/tmp/dna.print");  if((fp=fopen(filename,"w"))==NULL)   {   message("Can't open file");      return;  }    if(g.editing)  {  if(g.save_format==SCREEN)     {   save_screen_text(fp);      }else if(g.save_format==HIGHLIGHT)     {   fprintf(fp, "TITLE Alignment\n");         fprintf(fp, "#These are comments \n");         fprintf(fp, "#Boxes are specified by x1 x2 y1 y2, for example:\n");         fprintf(fp, "#BOX 40 54 1 2\n");         fprintf(fp, "#LABEL 41 0 Labels can be placed using x y coordinates\n");         fprintf(fp, "#TEXT 0 This text would be placed at row 0\n");         fprintf(fp, "SEQUENCES\n");         for(k=0; k<g.noofsequences; k++)         {   strncpy(title, basefilename(g.doc[k].filename), 20);             for(j=strlen(title); j<20; j++) title[j] = ' ';             title[20] = 0;             fprintf(fp, "%s | %s\n", title, g.doc[k].text);         }         fprintf(fp, "END\n");     }  }else  {  save_screen_image(fp);  }  fclose(fp);     g.touched = 0;}//--------------------------------------------------------------------------//// save_screen_text                                                         ////--------------------------------------------------------------------------//void save_screen_text(FILE *fp){  int seq,k,longest=0,pos=0,width;  int charsperline = g.xsize / g.doc[0].charwidth;   int negoff[g.noofsequences];  char *s1;  char *s2;          for(k=0; k<g.noofsequences; k++)   {   if(g.doc[k].n > longest) longest = g.doc[k].n;      if(g.doc[k].offset < 0) negoff[k] = -g.doc[k].offset;      else negoff[k] = 0;  }  while(pos < longest)  {   for(seq=0; seq<g.noofsequences; seq++)      {   s1 = pos + g.doc[seq].text + g.doc[seq].offset;          width = charsperline;          for(k=0; k<width; k++)          {   if(s1+k < g.doc[seq].text) fputc(' ', fp);              else if(s1[k]) fputc(s1[k], fp);          }          fputc('\n', fp);          if(seq+1<g.noofsequences && g.doc[seq+1].n)          {   s2 = pos + g.doc[seq+1].text + g.doc[seq+1].offset;                        for(k=0; k<width; k++)               {   if(matchable_base(s1[k], g.doc[seq].type) &&                      matchable_base(s2[k], g.doc[seq+1].type))                  {  if(toupper(s1[k]) == toupper(s2[k]))                        fputc('|', fp);                     else  fputc(' ', fp);                  }              }              fputc('\n', fp);          }      }      fputs("\n\n", fp);      pos += charsperline;  }}//--------------------------------------------------------------------------//// save_screen_image                                                        ////--------------------------------------------------------------------------//void save_screen_image(FILE *fp){  int k,x,v,y;  int set1 = g.matrix_set1;  int set2 = g.matrix_set2;  char *s1 = g.doc[set1].text;  char *s2 = g.doc[set2].text;  int n1 = 8 * ((g.doc[set1].n + 7) / 8);  int n2 = g.doc[set2].n;          fprintf(fp, "P4 %d %d\n", n1, n2);  for(y=0;y<n2;y++)    for(x=0;x<n1;x+=8)    {   v = 0;      for(k=0;k<8;k++)      if(x+k < g.doc[set1].n) v |= ((s1[x+k]==s2[y])<<(7-k));      fwrite(&v,1,1,fp);  }}//--------------------------------------------------------------------------//// printsequence                                                            ////--------------------------------------------------------------------------//void printsequence(void){  char tempstring[FILENAMELENGTH];  int j, k;  Dialog dialog;  dialog.needrepeat=0;  strcpy(dialog.title,"Print");  strcpy(dialog.boxes[0],"Print Parameters");  strcpy(dialog.boxes[1],"Printer command");  strcpy(dialog.boxes[2],"Printer device");  strcpy(dialog.boxes[3],"Print to file");  for(k=1;k<=3;k++) if(g.printer_device==k) dialog.boxset[k]=1; else dialog.boxset[k]=0;  strcpy(dialog.answer[1], g.printer_command);  strcpy(dialog.answer[2], g.printer_name);  strcpy(dialog.answer[3], g.printer_file);  dialog.boxtype[0]=LABEL;   dialog.boxtype[1]=TOGGLESTRING;   dialog.boxtype[2]=TOGGLESTRING;  dialog.boxtype[3]=TOGGLESTRING;  dialog.noofboxes=4;  dialog.noofradios=0;  dialog.radiono[0]=0;  dialog.helptopic=0;  for(j=0;j<10;j++) for(k=0;k<20;k++) dialog.radiotype[j][k]=RADIO;  dialog.keep=0;  dialog.want_changecicb = 0;  dialog.f1 = printcheck;  dialog.transient = 1;  strcpy(dialog.path,".");  ///////////////////  dialogbox(dialog);   ///////////////////  if(g.getout) return;  for(k=1;k<=3;k++) if(dialog.boxset[k]) g.printer_device = k;  strcpy(g.printer_command, dialog.answer[1]);  strcpy(g.printer_name, dialog.answer[2]);  strcpy(g.printer_file, dialog.answer[3]);  save(0); // save in /tmp/dna.print  if(!g.editing)  {   sprintf(tempstring, "pnmtops /tmp/dna.print > /tmp/dna.ps");      printf("%s\n", tempstring);      system(tempstring);  }  switch(g.printer_device)  {     case 1:      // printer command         if(g.editing) sprintf(tempstring, "%s /tmp/dna.print", g.printer_command);         else sprintf(tempstring, "%s /tmp/dna.ps", g.printer_command);         printf("%s\n", tempstring);         system(tempstring);         break;     case 2:      // printer name         if(g.editing) sprintf(tempstring, "cat /tmp/dna.print > %s", g.printer_name);         else sprintf(tempstring, "cat /tmp/dna.ps > %s", g.printer_name);         printf("%s\n", tempstring);         system(tempstring);         break;     case 3:      // file name         if(g.editing) sprintf(tempstring, "cp /tmp/dna.print %s", g.printer_file);         else sprintf(tempstring, "cp /tmp/dna.ps %s", g.printer_file);         printf("%s\n", tempstring);         system(tempstring);         break;  }  unlink("/tmp/dna.print");  if(!g.editing) unlink("/tmp/dna.ps");  }//--------------------------------------------------------------------------////  printcheck                                                              ////--------------------------------------------------------------------------//void printcheck(dialoginfo *a, int radio, int box, int boxbutton){  int k;  if(boxbutton==0 && between(box,1,3))                  // Printer device  {  for(k=1;k<=3;k++) a->boxset[k]=False;     for(k=1;k<=3;k++) if(k==box) a->boxset[k]=True;       for(k=1;k<=3;k++) if(k!=box)         XmToggleButtonSetState(a->boxwidget[k][0],a->boxset[k],False);  }}

⌨️ 快捷键说明

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