void zoom_bookmark_jump_to(const ZoomBookmark* mark, GDisplay *gdisp)
{
   zoom_bookmark_check_init();

   change_scale(gdisp, mark->zoom);
   scroll_display(gdisp, mark->image_offset_x - gdisp->offset_x, 
		         mark->image_offset_y - gdisp->offset_y);
}
/**
 * \brief The fonction called when a corrupting_bonus is updated.
 * \param value The new number of corrupting_bonus.
 */
void ptb::corrupting_bonus_component::on_corrupting_bonus_updated
(unsigned int value)
{
  if ( value < m_last_corrupting_bonus_count )
    change_scale();
  else
    create_floating_corrupting_bonus();
  
  move();
} // corrupting_bonus_component::on_corrupting_bonus_updated()
Exemple #3
0
void output_repeat_legend(FILE *fp, int *startpos, int **breaks, int *numsegment, int **colorindex, char **chrname, int num)
{
    int	i, j, k, l, m, n;
    int	base[50], point[4][2];
    char	c, name[100], temp[100];
    char	**str;
    double	label[3];

    str = (char **) ckalloc(10 * sizeof(char *));
    for(i = 0; i < 10; i ++)	{
        str[i] = (char *) ckalloc(100 * sizeof(char));
    }
    sprintf(str[0], "Repeat ID");
    sprintf(str[1], "Length");
    sprintf(str[2], "Chromosome");
    sprintf(str[3], "From-to");
    sprintf(str[4], "Subrepeats");
    sprintf(str[5], "From-to");
    base[0] = 50;
    base[1] = 800;
    outputline(fp, str, 6, base, 90, 10);
    base[1] -= 20;
    for(i = 0; i < num; i ++)	{
        for(j = 0; j < numsegment[i]; j ++)	{
            if(j == 0)	{
                sprintf(str[0], "R%d", i + 1);
                sprintf(str[1], "%d", breaks[i][numsegment[i]]);
                sprintf(str[2], "%s", chrname[i]);
                sprintf(str[3], "%d-%d", startpos[i], startpos[i] + breaks[i][numsegment[i]] - 1);
            } else	{
                str[0][0] = str[1][0] = str[2][0] = str[3][0] = '\0';
            }
            m = (colorindex[i][j] - 1) % total_color;
            sprintf(str[4], "s%d", colorindex[i][j]);
            sprintf(str[5], "%d-%d", startpos[i] + breaks[i][j], startpos[i] + breaks[i][j + 1] - 1);
            base[0] = 50;
            base[1] -= 10;
            outputline(fp, str, 6, base, 90, 8);
            if(base[1] <= 50)	{
                base[0] = 50;
                base[1] = 800;
                showpage(fp);
                fprintf(fp, "%%%%Page: P%d\n", npages);
                npages ++;
                change_scale(fp, scale);
            }
        }
    }
    for(i = 0; i < 10; i ++)	{
        free((void *) str[i]);
    }
    free((void *) str);
}
Exemple #4
0
int			key_hook(int keycode, t_all *all)
{
	if (keycode == 65453)
		change_scale(all, 1);
	if (keycode == 65451)
		change_scale(all, 2);
	if (keycode == 65364)
		change_scale(all, 3);
	if (keycode == 65362)
		change_scale(all, 4);
	if (keycode == 65363)
		change_scale(all, 5);
	if (keycode == 65361)
		change_scale(all, 6);
	if (keycode == 65307)
		exit (0);
	return (0);
}
Exemple #5
0
main(int argc, char **argv)
{
    int	i, j, k, l, m, n, len_seq[100], reallen[100];
    char	**chrname;
    int	*dir, **breaks, **colorindex, base[2];
    char	**brchrname;
    int	*multip, *multip2, *repeat_length, num_repeat, *startpos, *numsegment;
    int	num_ins, *insertpos, *insertlen;
    int	global_scale;
    SEGMENT	*segment, segment0;
    long int START_POS;
    int	num_segment;
    int	**repeats;
    int	range[2];
    int	num_chro;
    char	name[1000], temp[1000], c;
    char	pt;
    FILE	*fp, *fp1;

    if(argc < 4)	{
        printf("Usage: makefig intv_file output_file(ps format) chrolistfile\n");
        exit(-1);
    }

    chrname = alloc_name(100, 100);
    fp = ckopen(argv[3], "r");
    num_chro = readchrolist(len_seq, chrname, reallen, fp);
    fclose(fp);
    segment = (SEGMENT *) ckalloc(20000 * sizeof(SEGMENT));
    fp = ckopen(argv[1], "r");
    num_segment = input_segment(segment, chrname, num_chro, fp);
    fclose(fp);

    /*	Sort the segments	*/
    qsort((void *) segment, num_segment, sizeof(SEGMENT), (void *) segcompar);
    /*
    for(i = 0; i < num_segment; i ++)	{
    	printf("aftersort segment %d %d %d\n", segment[i].pos[0], segment[i].pos[1], segment[i].eq_pos[1]);
    }
    getchar();
    */

    /*	Compute multiplicity of each sub-repeat	*/
    repeat_length = (int *) ckalloc(20000 * sizeof(int));
    multip = (int *) ckalloc(20000 * sizeof(int));
    num_repeat = 0;
    k = 0;
    for(i = 0; i < num_segment; i ++)	{
        repeat_length[segment[i].eq_pos[0] - 1] = segment[i].length;
        multip[segment[i].eq_pos[0] - 1] ++;
        if(segment[i].eq_pos[0] > num_repeat)	{
            num_repeat = segment[i].eq_pos[0];
        }
    }
    printf("num_repeat %d\n", num_repeat);

    global_scale = 25;
    multip2 = (int *) ckalloc(num_repeat * sizeof(int));
    repeats = (int **) ckalloc(num_repeat * sizeof(int *));
    for(i = 0; i < num_repeat; i ++)	{
        repeats[i] = (int *) ckalloc((1 + multip[i]) * sizeof(int));
    }
    startpos = (int *) ckalloc(num_segment * sizeof(int));
    numsegment = (int *) ckalloc(num_segment * sizeof(int));
    breaks = (int **) ckalloc(num_segment * sizeof(int *));
    brchrname = (char **) ckalloc(num_segment * sizeof(char *));
    colorindex = (int **) ckalloc(num_segment * sizeof(int *));
    for(i = 0; i < num_segment; i ++)	{
        breaks[i] = (int *) ckalloc(num_segment * sizeof(int));
        brchrname[i] = (char *) ckalloc(100 * sizeof(char));
        colorindex[i] = (int *) ckalloc(num_segment * sizeof(int));
    }
    dir = (int *) ckalloc(num_segment * sizeof(int));
    k = m = 0;
    fp = ckopen(argv[2], "w");
    prt_Header(fp, "Tang Hai-xu", "OUTPUT", "2-21-2004", 0);
    prt_Macro(fp);
    scale[0] = 0.7;
    scale[1] = 0.8;
    change_scale(fp, scale);
    base[0] = 50;
    base[1] = 850;
    for(i = 0; i < num_segment; i ++)	{
        if(i == num_segment - 1 || segment[i + 1].pos[0] > segment[i].pos[1] + min_length ||
                segment[i + 1].chro != segment[i].chro)	{
            for(j = k; j <= i; j ++)	{
                breaks[m][j - k + 1] += segment[j].pos[1] - segment[k].pos[0] + 1;
                colorindex[m][j - k] = segment[j].eq_pos[0];
                dir[j - k] = segment[j].eq_pos[1];
                repeats[segment[j].eq_pos[0] - 1][multip2[segment[j].eq_pos[0] - 1] ++] = m;
            }
            startpos[m] = range[0] = segment[k].pos[0];
            numsegment[m] = i - k + 1;
            strcpy(brchrname[m], chrname[segment[i].chro]);
            range[1] = segment[i].pos[1];
            sprintf(name, "R%d", m + 1);
            l = output_region(fp, base, name, chrname[segment[k].chro], range,
                              global_scale, breaks[m], i - k + 2, colorindex[m], dir);
            m ++;
            base[0] = 50;
            base[1] -= 25;
            if(base[1] < 150)	{
                showpage(fp);
                fprintf(fp, "%%%%Page: P%d\n", npages);
                npages ++;
                change_scale(fp, scale);
                base[0] = 50;
                base[1] = 850;
            }
            k = i + 1;
        }
    }
    showpage(fp);
    fprintf(fp, "%%%%Page: P%d\n", npages);
    npages ++;
    change_scale(fp, scale);
    fflush(fp);
    for(i = 0; i < num_repeat; i ++)	{
        if(multip[i] != multip2[i])	{
            printf("i %d multip %d %d\n", i, multip[i], multip2[i]);
            exit(0);
        }
    }
    output_length_legend(fp);
    output_legend(fp, repeat_length, multip, num_repeat, repeats);
    showpage(fp);
    fprintf(fp, "%%%%Page: P%d\n", npages);
    npages ++;
    change_scale(fp, scale);
    output_repeat_legend(fp, startpos, breaks, numsegment, colorindex, brchrname, m);
    showpage(fp);
    page_trailer(fp);
    restore_scale(fp);
    prt_Trailer(fp, k + 1);
    fclose(fp);
    printf("%d regions output.\n", m);

    chrname = free_name(chrname, 100);
    for(i = 0; i < num_repeat; i ++)	{
        free((void *) repeats[i]);
    }
    free((void **) repeats);
    free((void *) repeat_length);
    for(i = 0; i < num_segment; i ++)	{
        free((void *) brchrname[i]);
        free((void *) breaks[i]);
        free((void *) colorindex[i]);
    }
    free((void *) multip);
    free((void *) multip2);
    free((void **) brchrname);
    free((void **) breaks);
    free((void **) colorindex);
    free((void *) startpos);
    free((void *) numsegment);
    free((void *) dir);
    free((void *) segment);
}
Exemple #6
0
void output_legend(FILE *fp, int *repeat_length, int *multip, int num_repeat, int **repeats)
{
    int	i, j, k, l, m, n;
    int	base[50], point[4][2];
    char	c, name[100], temp[100];
    char	**str;
    double	label[3];

    str = (char **) ckalloc(10 * sizeof(char *));
    for(i = 0; i < 10; i ++)	{
        str[i] = (char *) ckalloc(100 * sizeof(char));
    }
    sprintf(str[0], "Subrepeat ID");
    sprintf(str[1], "Length");
    sprintf(str[2], "Multiplicity");
    sprintf(str[3], "Repeats");
    sprintf(str[4], "Color coding");
    base[0] = 50;
    base[1] = 680;
    outputline(fp, str, 5, base, 60, 10);
    for(i = 0; i < num_repeat; i ++)	{
        if(multip[i] == 0)	continue;
        sprintf(name, "s%d", i + 1);
        strcpy(str[0], name);
        sprintf(str[1], "%d", repeat_length[i]);
        sprintf(str[2], "%d", multip[i]);
        str[3][0] = '\0';
        for(j = 0; j < min(multip[i], MIN_NUM); j ++)	{
            sprintf(temp, "R%d ", repeats[i][j] + 1);
            strcat(str[3], temp);
        }
        base[0] = 50;
        base[1] -= 10;
        outputline(fp, str, 4, base, 60, 8);
        point[0][0] = 370;
        point[0][1] = base[1];
        point[1][0] = 370 + length_intv(repeat_length[i]);
        point[1][1] = base[1];
        point[2][0] = 370 + length_intv(repeat_length[i]);
        point[2][1] = base[1] + 5;
        point[3][0] = 370;
        point[3][1] = base[1] + 5;
        m = i % total_color;
        for(j = 0; j < 3; j ++)	{
            label[j] = color_box[m][j];
        }
        prt_box(fp, point, label, 0, 0, 0);
        base[0] = 370 + length_intv(repeat_length[i]) / 2;
        base[1] += 2;
        prt_Text(fp, name, base, 8, 0);
        if(base[1] <= 50 && i < num_repeat - 1)	{
            base[0] = 50;
            base[1] = 800;
            showpage(fp);
            fprintf(fp, "%%%%Page: P%d\n", npages);
            npages ++;
            change_scale(fp, scale);
        }
    }

    for(i = 0; i < 10; i ++)	{
        free((void *) str[i]);
    }
    free((void *) str);
}