Esempio n. 1
0
/* 
    dpAlign_Local_DNA_PhilGreen compares a DNA sequence profile
    with a DNA sequence and return the optimal local alignment score.
 */
int
dpAlign_Local_DNA_PhilGreen(dpAlign_SequenceProfile * sp, char * seq2)
{
    int i;
    int N;
    struct swstr * ss;
    int score;
    unsigned char * s2;

    if (seq2 == NULL)
	dpAlign_fatal("Sequence 2 is a NULL pointer!\n");

    N = strlen(seq2);

    s2 = (unsigned char *) malloc(N*sizeof(unsigned char));
    if (s2 == NULL)
        dpAlign_fatal("Cannot allocate memory for encoded sequence 2!\n");

    for (i = 0; i < N; ++i) {
	if (seq2[i] >= 'a' && seq2[i] <= 'z') seq2[i] -= 0x20;
        s2[i] = dna_encode(seq2[i]);
    }

    ss = (struct swstr *) malloc(sizeof(struct swstr)*(sp->len+1));
    if (ss == NULL)
	dpAlign_fatal("Cannot allocate memory for ss array!\n");
    score = pgreen(sp->waa, sp->len, s2, N, sp->gap, sp->ext, ss);
    free(ss);
    free(s2);
    return score;
}
Esempio n. 2
0
 void ScanWiew::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
 {

     QColor cred(255,0,0);
     QColor cgreen(0,100,0);
      QColor cgreen2(0,150,0);
     QColor cblue(0,0,255);

     QPen pred(cred);
     QPen pgreen(cgreen);
     QPen pgreen2(cgreen2);
     QPen pblue(cblue);

     painter->setPen(pgreen);

     //QFont fcnew("Coruier new", 10, QFont::Normal);
     QFontMetrics fm(painter->font());

     int pixelsHeight = fm.height();
     int lineCnt = laserRangeInMeter/arcDistanceInMeter;

     for(int i = 1; i <= lineCnt; i++)
     {

         QRectF rectangle(-(i*arcDistanceInPixels), -(i*arcDistanceInPixels), i*2*arcDistanceInPixels,i*2*arcDistanceInPixels);
         int spanAngle = endAngle - startAngle+5;

         painter->drawArc(rectangle, ((int)startAngle+90-5)*16, (spanAngle+5)*16);

         int x = -::sin((startAngle-5)*TwoPi/360)*(i*arcDistanceInPixels);
         int y = -::cos((startAngle-5)*TwoPi/360)*(i*arcDistanceInPixels);


         char str[100];
         sprintf(str,"%d",i*(int)arcDistanceInMeter);
         int pixelsWide = fm.width(str);
         QPoint ptl(x-pixelsWide,y);
         QPoint pbr(x,y+pixelsHeight);
         QRect rt(ptl,pbr);

         painter->drawText(rt, Qt::AlignCenter, (QString)(str));

         x = -::sin((endAngle+5)*TwoPi/360)*(i*arcDistanceInPixels);
         y = -::cos((endAngle+5)*TwoPi/360)*(i*arcDistanceInPixels);


         QPoint ptl1(x,y);
         QPoint pbr1(x+pixelsWide,y+pixelsHeight);
         QRect rt1(ptl1,pbr1);
         painter->drawText(rt1, Qt::AlignCenter, (QString)(str));

     }


     lineCnt = (endAngle - startAngle)/angleDelta;
     double ang = startAngle;

     int distance = (laserRangeInMeter/arcDistanceInMeter)*arcDistanceInPixels;

     for(int i = 0; i <= lineCnt ; i++)
     {
         painter->setPen(pgreen);
         int x = -::sin(ang*TwoPi/360)*(distance+5);
         int y = -::cos(ang*TwoPi/360)*(distance+5);
         painter->drawLine(0,0,x,y);

         char str[100];
         sprintf(str,"%d",(int)ang);
         int pixelsWide = fm.width(str);


         x = -::sin(ang*TwoPi/360)*(distance+20);
         y = -::cos(ang*TwoPi/360)*(distance+20);

         QPoint ptl(x-pixelsWide/2,y - pixelsHeight/2);
         QPoint pbr(x+pixelsWide/2,y+pixelsHeight/2);
         QRect rt(ptl,pbr);
         painter->drawText(rt, Qt::AlignCenter, (QString)(str));

         ang += angleDelta;
     }

     double olcek =  arcDistanceInPixels/arcDistanceInMeter;
     //printf("olcek: %f\n",olcek);
     pgreen.setWidth(pgreen.width()+2);
     painter->setPen(pgreen2);
     for(int i = 0; i < pointCnt; i++)
     {
         painter->drawLine(0,0,-plist[i].y*olcek,-plist[i].x*olcek);
     }

      painter->setPen(pred);
     plinel_t *root = g_line_map.first;

     while(root != NULL)
     {
        if(root->line.length > 0.05 && root->point_cnt > 3 )//MIN_LENGTH_LINE_TO_SEND)
        {
           painter->drawLine(-root->line.sp.y*olcek,-root->line.sp.x*olcek,-root->line.ep.y*olcek,-root->line.ep.x*olcek);
        }
        root = root->next;
     }
 }