示例#1
0
List *xdap_late_read_contig_data(void)
{
    List *contig_details;

    if (cur_contig_index > io.num_contigs)
        contig_details = nil;
    else {
        bap_rl_file_rec rl_line;
        int length;
        int index;
        int left_end;
        int right_end;

        index = io.max_gels-cur_contig_index;
        bap_read_rl(&io,index,&rl_line);
        length = rl_line.clines.length;
        left_end = rl_line.clines.left_end;
        right_end = rl_line.clines.right_end;

        contig_details =
            build_list(
                atom_str(contig_rec),
                build_list(
                    atom_str(contig_index),
                    atom_int(index),
                    nil),
                build_list(
                    atom_str(contig_length),
                    atom_int(length),
                    nil),
                build_list(
                    atom_str(contig_left_end),
                    atom_int(left_end),
                    nil),
                build_list(
                    atom_str(contig_right_end),
                    atom_int(right_end),
                    nil),
                nil);

        cur_contig_index++;
    }

    return contig_details;

}
示例#2
0
文件: rel_exp.c 项目: lajus/monetinr
sql_exp *
exp_atom_wrd(sql_allocator *sa, wrd w) 
{
	sql_subtype it; 

	sql_find_subtype(&it, "wrd", 19, 0);
	return exp_atom(sa, atom_int(sa, &it, (lng)w ));
}
示例#3
0
文件: rel_exp.c 项目: lajus/monetinr
sql_exp *
exp_atom_lng(sql_allocator *sa, lng i) 
{
	sql_subtype it; 

	sql_find_subtype(&it, "bigint", 19, 0);
	return exp_atom(sa, atom_int(sa, &it, (lng)i ));
}
示例#4
0
文件: rel_exp.c 项目: lajus/monetinr
sql_exp *
exp_atom_int(sql_allocator *sa, int i) 
{
	sql_subtype it; 

	sql_find_subtype(&it, "int", 9, 0);
	return exp_atom(sa, atom_int(sa, &it, i ));
}
示例#5
0
static List *db_details(void)
{

    return
        build_list(
            build_list(
                atom_str(db_max_db_size),
                atom_int(io.max_db_size),
                nil),
            build_list(
                atom_str(db_max_gels),
                atom_int(io.max_gels),
                nil),
            build_list(
                atom_str(db_max_gel_length),
                atom_int(io.max_gel_length),
                nil),
            build_list(
                atom_str(db_data_class),
                atom_int(io.data_class),
                nil),
            build_list(
                atom_str(db_num_gels),
                atom_int(io.num_gels),
                nil),
            build_list(
                atom_str(db_num_contigs),
                atom_int(io.num_contigs),
                nil),
            nil);

}
示例#6
0
atom *
atom_dec(sql_allocator *sa, sql_subtype *tpe,
#ifdef HAVE_HGE
	hge val,
#else
	lng val,
#endif
	double dval)
{
	atom *a = atom_int(sa, tpe, val);
	if (a) 
		a -> d = dval;
	return a;
}
示例#7
0
List *xdap_late_read_gel_data(void)
{
    List *gel_details;

    if (cur_gel_index > io.num_gels)
        gel_details = nil;
    else {
        bap_ar_file_rec ar_line;
        bap_rl_file_rec rl_line;
        bap_sq_file_rec sq_line;
        bap_tg_file_rec tg_line;

        int index;
        char name[17];
        char *seq;
        int length;
        int comp;
        int pos;
        int l_nbr;
        int r_nbr;

        sq_line = (char *) malloc(io.max_gel_length+1);

        bap_read_ar(&io,cur_gel_index,&ar_line);
        bap_read_rl(&io,cur_gel_index,&rl_line);
        bap_read_tg(&io,cur_gel_index,&tg_line);
        bap_read_sq(&io,cur_gel_index,sq_line);


        index = cur_gel_index;
        f2cstr(ar_line.lines.name,BAP_FILE_NAME_LENGTH,name,
               (size_t)BAP_FILE_NAME_LENGTH);
        length = abs(rl_line.lines.length);
        comp = (rl_line.lines.length < 0);
        seq = sq_line;
        seq[length] = '\0';
        pos = rl_line.lines.rel_pos;
        l_nbr = rl_line.lines.left_nbr;
        r_nbr = rl_line.lines.right_nbr;

        gel_details =
            build_list(
                atom_str(gel_rec),
                build_list(
                    atom_str(gel_index),
                    atom_int(index),
                    nil),
                build_list(
                    atom_str(gel_name),
                    atom_str(name),
                    nil),
                build_list(
                    atom_str(gel_length),
                    atom_int(length),
                    nil),
                build_list(
                    atom_str(gel_comp),
                    atom_int(comp),
                    nil),
                build_list(
                    atom_str(gel_seq),
                    atom_str(seq),
                    nil),
                build_list(
                    atom_str(gel_pos),
                    atom_int(pos),
                    nil),
                build_list(
                    atom_str(gel_l_nbr),
                    atom_int(l_nbr),
                    nil),
                build_list(
                    atom_str(gel_r_nbr),
                    atom_int(r_nbr),
                    nil),
                nil);



        /* Get raw data details */
        if (tg_line.lines.comment) {
            List *raw_data_details;

            char *rd;
            int rd_length;
            int rd_cut;
            int rd_ulen;
            char rd_type[5];
            char rd_file[19];

            rd = bap_read_comment(&io, tg_line.lines.comment);
            sscanf(rd,"%6d%6d%6d%*s",&rd_length, &rd_cut, &rd_ulen);
            f2cstr(&rd[18],4,rd_type,(size_t)4);
            f2cstr(&rd[22],18,rd_file,(size_t)18);


            raw_data_details =
                build_list(
                    build_list(
                        atom_str(gel_rd_length),
                        atom_int(rd_length),
                        nil),
                    build_list(
                        atom_str(gel_rd_cut),
                        atom_int(rd_cut),
                        nil),
                    build_list(
                        atom_str(gel_rd_ulen),
                        atom_int(rd_ulen),
                        nil),
                    build_list(
                        atom_str(gel_rd_type),
                        atom_str(rd_type),
                        nil),
                    build_list(
                        atom_str(gel_rd_file),
                        atom_str(rd_file),
                        nil),
                    nil);

            join_list (gel_details, raw_data_details, nil);

        }



        /*
        ** Process tags, maintaining separate lists for
        ** (a) special tags
        ** (b) annotation
        ** (c) edits
        */
        {
            List *specials;
            List *notes;
            List *edits;

            int_4 next;
            specials = nil;
            notes =
                build_list(
                    atom_str(gel_annotation),
                    nil);
            edits =
                build_list(
                    atom_str(gel_edits),
                    nil);

            while (tg_line.lines.next) {
                next = tg_line.lines.next;
                bap_read_tg(&io,next,&tg_line);

                if (strncmp(tg_line.lines.type.c,"*LC*",4)==0) {
                    if (tg_line.lines.comment) {
                        List *lc;
                        lc = build_list(
                                 atom_str(gel_l_cut_seq),
                                 atom_str(bap_read_comment(&io,tg_line.lines.comment)),
                                 nil);
                        if (isNil(specials))
                            specials = build_list(lc,nil);
                        else
                            specials = join_list(specials,build_list(lc,nil),nil);
                    }
                } else if (strncmp(tg_line.lines.type.c,"*RC*",4)==0) {
                    if (tg_line.lines.comment) {
                        List *rc;
                        rc = build_list(
                                 atom_str(gel_r_cut_seq),
                                 atom_str(bap_read_comment(&io,tg_line.lines.comment)),
                                 nil);
                        if (isNil(specials))
                            specials = build_list(rc,nil);
                        else
                            specials = join_list(specials,build_list(rc,nil),nil);
                    }
                } else if (strncmp(tg_line.lines.type.c,"*",1)==0) {
                    List *ed;
                    char base[2];
                    base[0] = tg_line.lines.type.c[3];
                    base[1] = '\0';
                    ed = build_list(
                             build_list(
                                 atom_str(gel_ed_op),
                                 atom_str( (strncmp(tg_line.lines.type.c,"*IN",3))==0
                                           ? gel_ed_insert : gel_ed_delete),
                                 nil),
                             build_list(
                                 atom_str(gel_ed_base),
                                 atom_str(base),
                                 nil),
                             build_list(
                                 atom_str(gel_ed_base_pos),
                                 atom_int( tg_line.lines.position ),
                                 nil),
                             nil);
                    edits = join_list(edits, build_list(ed,nil),nil);
                } else {
                    List *an;
                    char type[5];
                    char *com;
                    strncpy(type,tg_line.lines.type.c,4);
                    type[4]='\0';
                    com = bap_read_comment(&io,tg_line.lines.comment);
                    an = build_list(
                             build_list(
                                 atom_str(gel_an_pos),
                                 atom_int(tg_line.lines.position),
                                 nil),
                             build_list(
                                 atom_str(gel_an_len),
                                 atom_int(tg_line.lines.length),
                                 nil),
                             build_list(
                                 atom_str(gel_an_type),
                                 atom_str(type),
                                 nil),
                             (com == NULL) ? nil :
                             build_list(
                                 atom_str(gel_an_comment),
                                 atom_str(com),
                                 nil),
                             nil);
                    notes = join_list(notes,build_list(an,nil),nil);

                }
            }
            if (isNil(specials))
                gel_details = join_list(gel_details,build_list(edits,nil),build_list(notes,nil),nil);
            else
                gel_details = join_list(gel_details,specials,build_list(edits,nil),build_list(notes,nil),nil);

        }



        cur_gel_index++;
        free(sq_line);

    }

    return gel_details;

}