Exemple #1
0
structure()
	{
	VERT v, *head;

	if (progress)
		fprintf(stderr,"	getreach:\n");
	getreach();
	if (routerr) return;
	if (progress)
		fprintf(stderr,"	getflow:\n");
	getflow();
	if (progress)
		fprintf(stderr,"	getthen:\n");
	getthen(START);
	head = challoc(nodenum * sizeof(*head));
	for (v = 0; v < nodenum; ++v)
		head[v] = UNDEFINED;
	for (v = START; DEFINED(v); v = RSIB(v))
		fixhd(v,UNDEFINED,head);
			/* fixhd must be called before getloop so that
				it gets applied to IFVX which becomes NXT(w) for UNTVX w */
	if (progress)
		fprintf(stderr,"	getloop:\n");
	getloop();
	if (progress)
		fprintf(stderr,"	getbranch:\n");
	getbranch(head);
	chfree(head,nodenum * sizeof(*head));
	head = 0;
	}
static int set_hyp(char *line, flow_list *hy, const char *s)  // 2 hypothesis first.
{
    int pos;
    char ref[1000], targ[1000];
    unsigned char f[100];
    int fs[100];
    //printf("PPP=%s", line);
    chomp(line);
    //fprintf(outp, "%s", line);
    sscanf(line, "%*s %d %*s %s %s", &pos, ref, targ);
    cur_pos = pos;
    pos--; // to o-offset
    int i = getflow(f, fs, s, pos-1, pos+strlen(ref), ref, CONTEXT);
    hy->add_list(f, fs, i, 1.0);
    i = getflow(f, fs, s, pos-1, pos+strlen(ref), targ, CONTEXT);
    int rv = 0;
    if (strlen(ref) == strlen(targ)) {
	hy->add_list(f, fs, i, 0.005);
    } else {
	hy->set_is_indel();
	hy->add_list(f, fs, i, 0.001);
	/*
	if (strlen(ref) == 2 && strlen(targ) ==1) {  // for deletion, try alternative SNP cases.
	    int y = strlen(ref)-strlen(targ);
	    fs[CONTEXT-1]+=y;
	    hy->add_list(f, fs, i, 0.005);
	    fs[CONTEXT-1] -= y;
	    fs[i-CONTEXT] += y;
	    hy->add_list(f, fs, i, 0.005);
	}  
	*/
    }
    //int b= count_of_flow(targ);
    //rv = b-1;
    rv = i-(CONTEXT*2+1);
    return rv;
}