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; }