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); } }
/* * 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; }
/* * 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; }
/* * 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); } }
void info(const char* fmt, ...){ va_list ap; va_start(ap, fmt); vmessage(Log_Info, fmt, ap); va_end(ap); }
void warning(const char* fmt, ...){ va_list ap; va_start(ap, fmt); vmessage(Log_Warning, fmt, ap); va_end(ap); }
void fatal(const char* fmt, ...){ va_list ap; va_start(ap, fmt); vmessage(Log_Fatal, fmt, ap); va_end(ap); }
void verbose(const char* fmt, ...){ va_list ap; va_start(ap, fmt); vmessage(Log_Verbose, fmt, ap); va_end(ap); }
OfxStatus setPersistentMessage(const char* type, const char* id, const char* format, va_list args) { return vmessage(type, id, format, args); }
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 */); } }
void notice(const char *format, ...) { va_list ap; va_start(ap, format); vmessage(LOG_NOTICE, format, ap); va_end(ap); }
void error(const char *format, ...) { va_list ap; va_start(ap, format); vmessage(LOG_ERR, format, ap); va_end(ap); }
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); }
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); }
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); }
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; }
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); }
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); }
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); }
/* 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; }
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; }