Exemple #1
0
void difference_clip(GapIO *io, int num_contigs, contig_list_t *cl,
		     int add_tags)
{
    int i, nbases;
    int *old_start, *old_end;
    int all;

    if (NULL == (old_start = (int *)xcalloc(NumReadings(io)+1, sizeof(int))))
	return;
    if (NULL == (old_end = (int *)xcalloc(NumReadings(io)+1, sizeof(int))))
	return;

    for (i = 0; i < num_contigs; i++) {
	vmessage("--Contig %s--\n", io_rname(io, io_clnbr(io, cl[i].contig)));
	all = (cl[i].start == 1 && cl[i].end == io_clength(io, cl[i].contig))
	    ? 1 : 0;
	nbases = difference_clip_contig(io, cl[i].contig, cl[i].start,
					cl[i].end, old_start, old_end,
					add_tags);
	/*
	 * if (all)
	 *   nbases += quality_clip_ends(io, cl[i].contig, add_tags);
	 */
	vmessage("  Clipped %d bases\n", nbases);
	reorder_readings(io, cl[i].contig);
	fix_holes(io, cl[i].contig, old_start, old_end);
	reorder_readings(io, cl[i].contig);
	flush2t(io);
	vmessage("\n");
    }

    xfree(old_start);
    xfree(old_end);
}
void ed_nip_renz_info(int seq_num,
		      ed_renz_res *data,
		      int start,
		      int print_opt)
{
    int seq_len;
    char *seq;
    int sequence_type;
    
    seq = GetEdenSeq(seq_num);
    seq_len = GetEdenLength(seq_num);
    /*sequence_type = GetSequenceStructure(seq_num);*/
    sequence_type = GetEdenType(seq_num);

    vfuncheader("Restriction enzymes result list");
    
    vmessage("Sequence %s\n", GetEdenName(seq_num));

    vmessage("Number of enzymes = %d\n", data->num_enzymes);
    vmessage("Number of matches = %d\n", data->num_match);

    if (print_opt == 0) {
	start_message();
	EdPrintEnzymeByEnzyme(data->r_enzyme, data->match, data->num_match, 
			      data->num_enzymes, seq, seq_len, 
			      sequence_type, start);
	end_message(data->re_win);
    } else {
	start_message();
	EdOrderOnPosition(data->r_enzyme, data->match, data->num_match,
			seq, seq_len, sequence_type, start);
	end_message(data->re_win);
    }
}
Exemple #3
0
/*
 * Removes some or all tags from some or all contigs.
 * If the contig list or tag list is blank it implies all contigs or all tags.
 *
 * Returns 0 on success
 *        -1 on failure
 */
int delete_tags(GapIO *io, int ncontigs, contig_list_t *contigs,
		char *tag_list, int verbose) {
    HashTable *h = NULL;
    int ret = 0;

    /* Hash tag types */
    if (tag_list && *tag_list) {
	int i;
	if (SetActiveTags(tag_list) == -1) {
	    return -1;
	}
	h = HashTableCreate(32, 0);
	for (i = 0; i < number_of_active_tags; i++) {
	    HashData hd;
	    hd.i = 0;
	    HashTableAdd(h, active_tag_types[i], 4, hd, NULL);
	}
    }

    /* Iterate over contig list or all contigs */
    if (verbose)
	vfuncheader("Delete Tags");

    if (ncontigs) {
	int i;

	for (i = 0; i < ncontigs; i++) {
	    contig_t *c = cache_search(io, GT_Contig, contigs[i].contig);
	    vmessage("Scanning contig %d of %d (%s)\n",
		     i+1, ncontigs, c->name);
	    ret |= delete_tag_single_contig(io, contigs[i].contig, h, verbose);
	    UpdateTextOutput();
	    cache_flush(io);
	}

    } else {
	int i;
	tg_rec *order = ArrayBase(tg_rec, io->contig_order);

	for (i = 0; i < NumContigs(io); i++) {
	    contig_t *c = cache_search(io, GT_Contig, order[i]);
	    vmessage("Scanning contig %d of %d (%s)\n",
		     i+1, NumContigs(io), c->name);
	    ret |= delete_tag_single_contig(io, order[i], h, verbose);
	    UpdateTextOutput();
	    cache_flush(io);
	}
    }

    SetActiveTags("");
    if (h)
	HashTableDestroy(h, 0);

    return ret;
}
int shuffle_contigs_io(GapIO *io, int ncontigs, contig_list_t *contigs,
		       int band) {
    int i;
    
    set_malign_lookup(5);
    /* set_alignment_matrix("/tmp/nuc_matrix", "ACGTURYMWSKDHVB-*"); */

    for (i = 0; i < ncontigs; i++) {
	int cnum = contigs[i].contig;
	int old_score, new_score, tot_score, orig_score;
	MALIGN *malign = build_malign(io, cnum);

	vmessage("Shuffling pads for contig %s\n", get_contig_name(io, cnum));
	/* print_malign(malign); */
	orig_score = new_score = malign_diffs(malign, &tot_score);
	vmessage("Initial score %.2f%% mismatches (%d mismatches)\n",
		 (100.0 * orig_score)/tot_score, orig_score);
	UpdateTextOutput();
	do {
	    old_score = new_score;
	    malign = realign_seqs(cnum, malign, band);
	    /* print_malign(malign); */
	    new_score = malign_diffs(malign, &tot_score);
	    vmessage("  Number of differences to consensus: %d\n", new_score);
	    UpdateTextOutput();
	} while (new_score < old_score);

	if (new_score < orig_score) {
	    update_io(io, cnum, malign);
	} else {
	    vmessage("Could not reduce number of consensus differences.\n");
	}
	destroy_malign(malign, 1);

	vmessage("Final score %.2f%% mismatches\n",
		 (100.0 * new_score)/tot_score);

	/*
	 * Sequences like
	 *   AGCT**GATGC
	 *             TGGATCGA
	 * can end up causing holes. We break the contig in this case to
	 * avoid minor database inconsistencies.
	 */
	remove_contig_holes(io, cnum);

	/* reassign_confidence_values(io, cnum); */
    }

    flush2t(io);

    return 0;
}
Exemple #5
0
/*
 * Wrapper around find_oligos() to look for all oligos listed in a FASTA file.
 */
int
find_oligo_file(GapIO *io,
		int num_contigs,
		contig_list_t *contig_array,
		float mis_match,
		char *file,
		int consensus_only,
		int in_cutoff)
{
    char **ids;
    int nids;
    int i;
    int r = 0; /* ret. code */

    /* Use seq_utils to parse the input file */
    if (0 != get_identifiers(file, &ids, &nids))
	return -1;

    for (i = 0; i < nids; i++) {
	char *seq;
	int seq_len;

	seq = NULL;
	seq_len = 0;

	if (0 != get_seq(&seq, maxseq, &seq_len, file, ids[i]))
	    continue;

	if (seq_len == 0 || !seq || *seq == 0) {
	    if (seq)
		xfree(seq);
	    continue;
	}

	vmessage("Sequence search for ID '%s'\n", ids[i]);
	r |= find_oligos(io, num_contigs, contig_array, mis_match,
			 seq, consensus_only, in_cutoff);
	vmessage("\n");

	if (seq)
	    xfree(seq);
    }

    /* Tidy up memory */
    for (i = 0; i < nids; i++) {
	xfree(ids[i]);
    }
    xfree(ids);

    return r;
}
Exemple #6
0
/*
 * Provide information about a set of matches - the meta object.
 */
void csmatch_info(mobj_repeat *r, char *name) {
    int i;

    vfuncheader("%s result list", name);

    vmessage("Number of matches = %d\n", r->num_match);
    vmessage("Display colour = %s\n", r->colour);

    for (i = 0; i < r->num_match; i++) {
        obj_match *obj = &r->match[i];
        int op = -1; /* For match operations, -1 is always "Information" */

        vmessage("\nMatch %d:\n", i);
        obj->func(OBJ_INVOKE_OPERATION, &op, obj, obj->data);
    }
}
Exemple #7
0
	void info(const char* fmt, ...){
		va_list ap;
		va_start(ap, fmt);
		vmessage(Log_Info, fmt, ap);
		va_end(ap);

	}
Exemple #8
0
	void warning(const char* fmt, ...){
		va_list ap;
		va_start(ap, fmt);
		vmessage(Log_Warning, fmt, ap);
		va_end(ap);

	}
Exemple #9
0
	void fatal(const char* fmt, ...){
		va_list ap;
		va_start(ap, fmt);
		vmessage(Log_Fatal, fmt, ap);
		va_end(ap);

	}
Exemple #10
0
	void verbose(const char* fmt, ...){
		va_list ap;
		va_start(ap, fmt);
		vmessage(Log_Verbose, fmt, ap);
		va_end(ap);

	}
Exemple #11
0
 OfxStatus setPersistentMessage(const char* type,
                                const char* id,
                                const char* format,
                                va_list args)
 {
   return vmessage(type, id, format, args);
 }
Exemple #12
0
void closeUndo(EdStruct *xx, DBInfo *db)
/*
 * Start recording undo for next command
 */
{
    if (--_DBI_open_undo_count(db) != 0)
	return;

    if (!_DBI_store_undo(db))
	return;

    if (_DBI_num_undo(db) > 0 &&
	_DBI_undo_lists(db)[_DBI_last_undo(db)] == NULL){
	_DBI_last_undo(db) = (_DBI_last_undo(db) + MAX_SAVE_EDITS - 1) %
	    MAX_SAVE_EDITS;
	_DBI_num_undo(db)--;
	if (--_DBI_edits_made(db) < 0) {
	    _DBI_edits_made(db) = 0;
	}
    }
    
    if (xx->auto_save && _DBI_edits_made(db) >= AUTO_SAVE_EDITS) {
	vmessage("Contig Editor: auto saving\n");
	UpdateTextOutput();
	saveDB(xx, _DBI_io(db), 1 /* an autosave */, 1 /* notify others */);
    }
}
Exemple #13
0
void notice(const char *format, ...)
{
    va_list ap;

    va_start(ap, format);
    vmessage(LOG_NOTICE, format, ap);
    va_end(ap);
}
Exemple #14
0
void error(const char *format, ...)
{
    va_list ap;

    va_start(ap, format);
    vmessage(LOG_ERR, format, ap);
    va_end(ap);
}
Exemple #15
0
void message(int loglevel, const char *format, ...)
{
    va_list ap;

    va_start(ap, format);
    vmessage(loglevel, format, ap);
    va_end(ap);
}
/* PRINTFLIKE1 */
void
warn(const char *fmt, ...)
{
	va_list va;

	va_start(va, fmt);
	vmessage(fmt, va);
	va_end(va);
}
Exemple #17
0
void error(const char *msg, ...)
{
	int rank;
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	va_list ap;
	va_start(ap, msg);
	vmessage(stderr, msg, "error:", RED, ap);
	va_end(ap);
}
Exemple #18
0
void warning(const char *msg, ...)
{
	int rank;
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	va_list ap;
	va_start(ap, msg);
	vmessage(stderr, msg, "warning:", YELLOW, ap);
	va_end(ap);
}
Exemple #19
0
void debug(const char *format, ...)
{
    va_list ap;

    if (!verbose_mode)
	return;
    va_start(ap, format);
    vmessage(LOG_DEBUG, format, ap);
    va_end(ap);
}
int write_screen_genetic_code (char code_table[5][5][5] ) {

/*	write out a genetic code table */

    int i,k;
    char bases[] = {"tcag-"};
    
    for(i = 0; i < 4; i++) {
	vmessage("      ===============================================\n");
	for(k = 0; k < 4; k++) {
	    vmessage("      %c %c%c%-7c %c %c%c%-7c %c %c%c%-7c %c %c%c%-7c\n",
		     genetic_code[i][0][k],bases[i],bases[0],bases[k],
		     genetic_code[i][1][k],bases[i],bases[1],bases[k],
		     genetic_code[i][2][k],bases[i],bases[2],bases[k],
		     genetic_code[i][3][k],bases[i],bases[3],bases[k]);
	}
    }
    vmessage("      ===============================================\n");
    return 1;
}
Exemple #21
0
void info(const char *msg, ...)
{
	if (LOG_LEVEL < 1)
		return;
	int rank;
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	va_list ap;
	va_start(ap, msg);
	vmessage(stdout, msg, "info:", BLUE, ap);
	va_end(ap);
}
Exemple #22
0
void debug(const char *msg, ...)
{
	if (LOG_LEVEL < 2)
		return;
	int rank;
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	va_list ap;
	va_start(ap, msg);
	vmessage(stdout, msg, "debug:", GREEN, ap);
	va_end(ap);
}
/* PRINTFLIKE1 */
void
semerr(const char *fmt, ...)
{
	va_list va;

	va_start(va, fmt);
	vmessage(fmt, va);
	va_end(va);

	if ((est->sc_cmd_flags & (SC_CMD_IACTIVE | SC_CMD_DONT_EXIT)) == 0)
		exit(1);
}
Exemple #24
0
int dofiles ( int a, char *v[] )
	/* sets global PROGNAME, FILEIN, FILEOUT - must be called first */
{
FILEIN = NULL;
FILEOUT = NULL;
vmessage();
if (a > 3) a = 3;
switch (a) { 
	case 3: FILEOUT = v[2]; 
	case 2: FILEIN = v[1];
	case 1: PROGNAME = v[0]; }
return(0);
}
Exemple #25
0
/* creates an empty header */
PICTURE *newpic(void)
{
PICTURE *pic;
vmessage();
pic = (PICTURE *)malloc(sizeof(PICTURE));
if (pic == NULL)
	{
		(void)fprintf(stderr,"newpic: failed to allocate memory\n");
		return(NULL);
	}
pic->data = pic->udata = pic->adata = NULL;
pic->magic = 0;
return(pic);
}
void nip_stop_codons_text_func(void *obj)
{
    seq_result *s_result = (seq_result *) obj;
    Tcl_Obj *graph_obj = s_result->data;
    int i;
    Graph *graph;

    graph = Tcl_GetGraphFromObj(graph_obj);

    for (i = 0; i < graph->d_arrays[0].n_dlines; i++) {
	UpdateTextOutput();
	vmessage("Position %10f\n", graph->d_arrays[0].d_array[i].x0);
    }
}
void
splice_search_text_func(void *obj)
{
    seq_result *result = (seq_result *) obj;
    stick *data = result->data;
    text_wtmatrix **text_data = result->text_data;
    int i;
    char *sequence;
    int seq_num;

    seq_num = GetSeqNum(result->seq_id[0]);
    sequence = GetSeqSequence(seq_num);

    vmessage("Donor\n");
    for (i = 0; i < data->ap_array[0].n_pts; i++) {
	UpdateTextOutput();
	vmessage("Position %8d %8d score %f %.*s\n", 
		 data->ap_array[0].p_array[i].pos - text_data[0]->mark_pos, 
		 data->ap_array[0].p_array[i].pos + 1, 
		 data->ap_array[0].p_array[i].score, 
		 text_data[0]->length, 
		 &sequence[data->ap_array[0].p_array[i].pos - 1 - 
			  text_data[0]->mark_pos]);
    }

    vmessage("Acceptor\n");
    for (i = 0; i < data->ap_array[1].n_pts; i++) {
	UpdateTextOutput();
	vmessage("Position %8d %8d score %f %.*s\n", 
		 data->ap_array[1].p_array[i].pos - text_data[1]->mark_pos, 
		 data->ap_array[1].p_array[i].pos + 1, 
		 data->ap_array[1].p_array[i].score, 
		 text_data[1]->length, 
		 &sequence[data->ap_array[1].p_array[i].pos - 1 - 
			  text_data[1]->mark_pos]);
    }
}
int write_screen_cod_table (double codon_table[4][4][4] ) {

/*	write out a codon table */

    int i,k;
    char bases[] = {"tcag"};
    
    for(i = 0; i < 4; i++) {
	vmessage("      ===============================================\n");
	for(k=0;k<4;k++) {
	    vmessage("      %c %c%c%c%6.0f %c %c%c%c%6.0f %c %c%c%c%6.0f %c %c%c%c%6.0f\n",
		    genetic_code[i][0][k],bases[i],bases[0],bases[k],
		    codon_table[i][0][k],
		    genetic_code[i][1][k],bases[i],bases[1],bases[k],
		    codon_table[i][1][k],
		    genetic_code[i][2][k],bases[i],bases[2],bases[k],
		    codon_table[i][2][k],
		    genetic_code[i][3][k],bases[i],bases[3],bases[k],
		    codon_table[i][3][k]);
	}
    }
	vmessage("      ===============================================\n");
    return 1;
}
Exemple #29
0
	void fatal(const char* fmt, ...){

		/*
		 * Make sure to get some output:
		 */
		if(output.empty()) {
			add_destination(FATAL, stderr, false);
		}

		va_list ap;
		va_start(ap, fmt);
		vmessage(FATAL, fmt, ap);
		va_end(ap);

		fatal_func();
	}
/*
 * add a new sequence to sequence list
 * add a new sequence to registration scheme
 * update the sequence list box
 * return the sequence number just created
 */
int AddSequence(Tcl_Interp *interp,
		int direction,
		int library,
		char *entry,
		char *sequence, 
		int seq_structure,
		int seq_type,
		Featcds **key_index,
                char *identifier)
{
    int seq_num;

#ifdef FIXME
    /* 
     * don't do this yet - this ends up removing plots when I do translations
     * twice. All needs careful thinking about!
     */
    /* check if adding same sequence name, if are, remove previous seq */
    RemoveDuplicateSeq(interp, entry);
#endif

    seq_num = CheckSeqExists(entry, sequence);
    if (seq_num > -1) {
	xfree(sequence);
	return seq_num;
    }

    /* add seq_num to seqs array */
    seq_num = SeqCreate();
    if (-1 == Set_Seqs(seq_num, direction, library, entry, sequence, 
		       seq_structure, seq_type, key_index, identifier)) {
	Delete_Seq(seq_num);
	return -1;
    }
    /* add cur_seq_num to registration scheme */
    if (-1 == add_reg_seq(seq_num)) {
	Delete_Seq(seq_num);
	return -1;
    }

    vmessage("Added sequence %s\n", entry);
    return seq_num;
}