GeneModelParam * new_GeneModelParam_from_argv(int * argc,char ** argv) { GeneModelParam * out; char * temp; out = std_GeneModelParam(); if( (temp=strip_out_assigned_argument(argc,argv,"splice_min_collar")) != NULL ) { if( is_double_string(temp,&out->min_collar) == FALSE ) { warn("%s is not a floating point number. Can't be a splice_min_collar",temp); free_GeneModelParam(out); return NULL; } } strip_out_boolean_def_argument(argc,argv,"splice_gtag",&out->use_gtag_splice); if( (temp=strip_out_assigned_argument(argc,argv,"splice_max_collar")) != NULL ) { if( is_double_string(temp,&out->max_collar) == FALSE ) { warn("%s is not a floating point number. Can't be a splice_max_collar",temp); free_GeneModelParam(out); return NULL; } } if( (temp=strip_out_assigned_argument(argc,argv,"splice_score_offset")) != NULL ) { if( is_double_string(temp,&out->score_offset) == FALSE ) { warn("%s is not a floating point number. Can't be a splice_score_offset",temp); free_GeneModelParam(out); return NULL; } } if( (temp=strip_out_assigned_argument(argc,argv,"genestats")) != NULL ) { if( out->gene_stats_file != NULL ) { ckfree(out->gene_stats_file); } out->gene_stats_file = stringalloc(temp); } if( (temp=strip_out_assigned_argument(argc,argv,"splice_gtag_prob")) != NULL ) { if( is_double_string(temp,&out->prob_for_gtag) == FALSE ) { warn("%s is not a floating pointer number. Can't be a probability for gtag",temp); free_GeneModelParam(out); return NULL; } } return out; }
DPImplementation * new_DPImplementation_from_argstr(int * argc,char ** argv) { DPImplementation * out; char * temp; out = DPImplementation_alloc(); if( (strip_out_boolean_argument(argc,argv,"pthreads")) == TRUE ) { out->do_threads = TRUE; } if( (temp=strip_out_assigned_argument(argc,argv,"dbtrace")) != NULL ) { if( is_integer_string(temp,&out->db_trace_level) == FALSE ) { warn("%s is not an integer argument for dbtrace",temp); } } if( strip_out_boolean_argument(argc,argv,"O") == TRUE ) { out->largemem= TRUE; /* other optimisations */ } strip_out_boolean_def_argument(argc,argv,"largemem",&out->largemem); strip_out_boolean_def_argument(argc,argv,"onemodel",&out->doone); if( strip_out_boolean_argument(argc,argv,"prob") == TRUE ) { out->doprob = TRUE; } if( strip_out_boolean_argument(argc,argv,"g") == TRUE ) { out->dydebug = TRUE; } if( (temp=strip_out_assigned_argument(argc,argv,"logsum")) != NULL ) { out->calcfunc = stringalloc(temp); } else { out->calcfunc = stringalloc("Probability_logsum"); } out->dycw = new_DycWarning_from_argstr(argc,argv); /* fprintf(stderr,"And %d is extern warning",out->dycw->warn_extern);*/ return out; }
PhasedProteinPara * new_PhasedProteinPara_from_argv(int * argc,char ** argv) { PhasedProteinPara * out; char * temp; out = PhasedProteinPara_alloc(); out->marked_intron = 0.95; out->unmarked_intron = 0.00001; out->use_phase = 0; strip_out_float_argument(argc,argv,"phase_marked",&out->marked_intron); strip_out_float_argument(argc,argv,"phase_unmarked",&out->unmarked_intron); /* strip_out_boolean_def_argument(argc,argv,"phase_model",&out->use_phase); */ if( (temp = strip_out_assigned_argument(argc,argv,"phase_file")) != NULL ) { out->intron_file = stringalloc(temp); } if( strip_out_boolean_argument(argc,argv,"phase_help") == TRUE ) { fprintf(stdout,"Phased marks provide the ability to restrict the position of introns\n"); fprintf(stdout,"relative to the protein sequence; ie, assuming conserved introns. This\n"); fprintf(stdout,"is most useful for fast evolving genes inside of relatively consistent\n"); fprintf(stdout,"clades, eg for fast evolving genes, such as cytokines, in vertebrates\n"); fprintf(stdout,"As moving between clades - say between Human and Drosophila - the intron\n"); fprintf(stdout,"positions change, using these options would actively hinder good gene prediction\n"); fprintf(stdout,"\n"); fprintf(stdout,"This option can be used for either HMMs or proteins, although it is harder\n"); fprintf(stdout,"to coordinate the HMM intron position than the protein positions.\n"); fprintf(stdout,"Two things need to occur to use the phase information\n"); fprintf(stdout," provide a phase mark file as -phase_file <xxxxxx>\n"); fprintf(stdout," use the algorithm type 623P (6 states, 23 transitions, phased introns)\n"); fprintf(stdout,"\n"); fprintf(stdout,"The phase model attempts to make a ATG to STOP gene, even if the protein match\n"); fprintf(stdout,"is not present across the entire gene. One major headache in this are introns in first\n"); fprintf(stdout,"ATG, which is not handled at the moment\n\n"); fprintf(stdout,"Genewise uses the protein position, in 1 coordinates, (first amino acid is 1)\n"); fprintf(stdout,"for the definition of the intron. For phase 0 introns, it should be labeled as\n"); fprintf(stdout,"the amino acid before the intron. For phase 1 and 2 introns, this is on the intron\n\n"); fprintf(stdout,"We suggest using a small spread of positions to cope with intron positioning errors\n"); fprintf(stdout," eg, defining an intron at position 4, phase 0, make postions 3,4 and 5 with position 0\n\n"); fprintf(stdout,"The phase file format is\n"); fprintf(stdout,"# lines starting with hash are comments\n"); fprintf(stdout,"# three tab delimited columns\n"); fprintf(stdout,"# <protein-position> <phase>\n"); fprintf(stdout,"# eg\n"); fprintf(stdout,"4 0\n"); exit(0); } return out; }
boolean strip_out_float_argument(int * argc,char ** argv,char * tag,double * value) { char * arg; if( (arg = strip_out_assigned_argument(argc,argv,tag)) == NULL ) return FALSE; if( is_double_string(arg,value) == FALSE ) { warn("Argument [%s] to [%s] is not a double. Not changing the value [%f]",arg,tag,value); return FALSE; } return TRUE; }
boolean strip_out_integer_argument(int * argc,char ** argv,char * tag,int * value) { char * arg; if( (arg = strip_out_assigned_argument(argc,argv,tag)) == NULL ) return FALSE; if( is_integer_string(arg,value) == FALSE ) { warn("Argument [%s] to [%s] is not an integer. Not changing the value [%d]",arg,tag,value); return FALSE; } return TRUE; }
DPRunImpl * new_DPRunImpl_from_argv(int * argc,char ** argv) { DPRunImpl * out; char * temp; out = DPRunImpl_alloc(); if( (temp = strip_out_assigned_argument(argc,argv,"dymem")) != NULL ) { if( strcmp(temp,"explicit") == 0) { out->memory = DPIM_Explicit; } else if( strcmp(temp,"linear") == 0 ) { out->memory = DPIM_Linear; } else if( strcmp(temp,"default") == 0 ) { out->memory = DPIM_Default; } else { warn("String [%s] for dynamic memory layout is not recognised",temp); free_DPRunImpl(out); return NULL; } } if( (temp = strip_out_assigned_argument(argc,argv,"kbyte")) != NULL ) { if( is_integer_string(temp,&out->kbyte_size) == FALSE ) { warn("String [%s] for dynamic memory size is not recognised",temp); free_DPRunImpl(out); return NULL; } } if(strip_out_boolean_argument(argc,argv,"dydebug") == TRUE ) { out->debug = 1; out->memory = DPIM_Explicit; } return out; }
HSP2HitListImpl * new_HSP2HitListImpl_from_argv(int * argc,char ** argv) { HSP2HitListImpl * out; char * temp; out = malloc(sizeof(HSP2HitListImpl)); out->type = HSP2HitList_Heuristic; if( (temp = strip_out_assigned_argument(argc,argv,"hspconvert")) != NULL ) { out->type = HSP2HitListType_string_convert(temp); } strip_out_boolean_def_argument(argc,argv,"hspthread",&out->threaded); out->no_threads = 4; strip_out_integer_argument(argc,argv,"hspthreadno",&out->no_threads); return out; }
void strip_out_standard_options(int * argc,char ** argv,void (*show_help)(FILE * ofp),void (*show_version)(FILE * ofp)) { char * errlog; if( (strip_out_boolean_argument(argc,argv,"help")) == TRUE ) { (*show_help)(stdout); exit(1); } if( (strip_out_boolean_argument(argc,argv,"version")) == TRUE ) { (*show_version)(stdout); exit(1); } if( (strip_out_boolean_argument(argc,argv,"silent")) == TRUE ) { erroroff(REPORT); erroroff(INFO); erroroff(WARNING); } if( (strip_out_boolean_argument(argc,argv,"quiet")) == TRUE ) { erroroff(REPORT); erroroff(INFO); } if( (strip_out_boolean_argument(argc,argv,"erroroffstd")) == TRUE ) { errorstderroff(WARNING); } if( (errlog=strip_out_assigned_argument(argc,argv,"errlog")) != NULL ) { if( add_log_filename(errlog) == FALSE ) { fatal("Could not use %s as a error log file\n",errlog); } else { warn("Logging errors to %s as well as stderr",errlog); errorlogon(WARNING); } } }
int main(int argc,char ** argv) { int i; char * temp; build_defaults(); bootstrap_HMMer2(); strip_out_standard_options(&argc,argv,show_help,show_version); if( (temp = strip_out_assigned_argument(&argc,argv,"gap")) != NULL ) gap_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"g")) != NULL ) gap_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"ext")) != NULL ) ext_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"e")) != NULL ) ext_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"matrix")) != NULL ) matrix_file = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"m")) != NULL ) matrix_file = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"s")) != NULL ) qstart_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"t")) != NULL ) qend_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"aln")) != NULL ) aln_number_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"codon")) != NULL ) codon_file = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"alg")) != NULL ) alg_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"aalg")) != NULL ) aln_alg_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"cut")) != NULL ) search_cutoff_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"ecut")) != NULL ) evalue_search_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"subs")) != NULL ) subs_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"indel")) != NULL ) indel_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"init")) != NULL ) startend_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"alln")) != NULL ) allN_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"null")) != NULL ) null_string = temp; if( (strip_out_boolean_argument(&argc,argv,"dnas")) == TRUE ) use_single_dna = TRUE; if( (strip_out_boolean_argument(&argc,argv,"dnadb")) == TRUE ) use_single_dna = FALSE; if( (strip_out_boolean_argument(&argc,argv,"tfor")) == TRUE ) do_forward_only = TRUE; if( (strip_out_boolean_argument(&argc,argv,"flati")) == TRUE ) flat_insert = TRUE; if( (strip_out_boolean_argument(&argc,argv,"hmmer")) == TRUE ) use_tsm = TRUE; if( (strip_out_boolean_argument(&argc,argv,"pfam2")) == TRUE ) use_pfam1 = TRUE; if( (strip_out_boolean_argument(&argc,argv,"pfam")) == TRUE ) use_pfam2 = TRUE; if( (strip_out_boolean_argument(&argc,argv,"protein")) == TRUE ) use_single_pro = TRUE; if( (strip_out_boolean_argument(&argc,argv,"prodb")) == TRUE ) use_db_pro = TRUE; if( (temp = strip_out_assigned_argument(&argc,argv,"hname")) != NULL ) hmm_name = temp; if( (strip_out_boolean_argument(&argc,argv,"nohis")) != FALSE ) show_histogram = FALSE; if( (strip_out_boolean_argument(&argc,argv,"pretty")) != FALSE ) show_pretty = TRUE; if( (strip_out_boolean_argument(&argc,argv,"pep")) != FALSE ) show_pep = TRUE; if( (strip_out_boolean_argument(&argc,argv,"mul")) != FALSE ) make_anchored_aln = TRUE; if( (strip_out_boolean_argument(&argc,argv,"para")) != FALSE ) show_para = TRUE; if( (strip_out_boolean_argument(&argc,argv,"sum")) != FALSE ) show_match_sum = TRUE; if( (strip_out_boolean_argument(&argc,argv,"alb")) != FALSE ) show_AlnBlock = TRUE; if( (strip_out_boolean_argument(&argc,argv,"pal")) != FALSE ) show_PackAln = TRUE; if( (temp = strip_out_assigned_argument(&argc,argv,"divide")) != NULL ) divide_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"block")) != NULL ) main_block_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"report")) != NULL ) report_str = temp; dbsi = new_DBSearchImpl_from_argv(&argc,argv); dpri = new_DPRunImpl_from_argv(&argc,argv); strip_out_remaining_options_with_warning(&argc,argv); if( argc != 3 ) { warn("Wrong number of arguments (expect 2)!\n"); if( argc > 1 ){ warn("Arg line looked like (after option processing)"); for(i=1;i<argc;i++) { fprintf(stderr," %s\n",argv[i]); } } show_short_help(); } if( show_pretty == FALSE && show_AlnBlock == FALSE && show_PackAln == FALSE && show_pep == FALSE ) { show_pretty = TRUE; show_para = TRUE; } if( use_db_pro == FALSE && use_single_pro == FALSE && use_tsm == FALSE && use_pfam1 == FALSE && use_pfam2 == FALSE ) { use_single_pro = TRUE; } if( use_single_pro == TRUE || use_tsm == TRUE ) { if( use_single_dna == TRUE ) fatal("one on one search. Shouldn't you use pcwise?"); search_mode = PC_SEARCH_S2DB; } else { if( use_single_dna == TRUE ) search_mode = PC_SEARCH_DB2S; else search_mode = PC_SEARCH_DB2DB; } if( evalue_search_str != NULL && search_mode != PC_SEARCH_S2DB ) { fatal("Trying to set a evalue cutoff on a non evalue based search. you can only use evalues in a protein HMM vs DNA database search (sorry!)"); } if( make_anchored_aln == TRUE && search_mode != PC_SEARCH_S2DB ) { fatal("Trying to make an anchored alignment and not in single search mode"); } if( make_anchored_aln == TRUE) { do_complete_analysis = TRUE; } /* pick up remaining args and do it */ dna_seq_file = argv[2]; protein_file = argv[1]; if( build_objects() == FALSE) fatal("Could not build objects!"); if( build_db_objects() == FALSE) fatal("Could not build database-ready objects!"); show_header(stdout); if( search_db() == FALSE) warn("Could not search database"); show_output(); free_objects(); return 0; }
int main (int argc,char ** argv) { MappedCloneSet * trusted; MappedCloneSet * weak; MappedCloneMatch * match; FILE * in; int kbyte = 10000; PackAln * pal; AlnBlock * alb; int spread = 30; boolean show_alb = 0; boolean show_pal = 0; boolean show_zip = 1; boolean show_path = 0; char * alg_string = "local"; char * temp; char * divide_string = "//"; strip_out_boolean_def_argument(&argc,argv,"alb",&show_alb); strip_out_boolean_def_argument(&argc,argv,"pal",&show_pal); strip_out_boolean_def_argument(&argc,argv,"zip",&show_zip); strip_out_boolean_def_argument(&argc,argv,"path",&show_path); strip_out_integer_argument(&argc,argv,"wgap",&query_gap_start); strip_out_integer_argument(&argc,argv,"wext",&query_gap_extend); strip_out_integer_argument(&argc,argv,"wswitch",&query_switch_cost); strip_out_integer_argument(&argc,argv,"tgap",&target_gap_start); strip_out_integer_argument(&argc,argv,"text",&target_gap_extend); strip_out_integer_argument(&argc,argv,"match",&match_score); strip_out_integer_argument(&argc,argv,"mismatch",&mismatch_score); temp =strip_out_assigned_argument(&argc,argv,"alg"); if( temp != NULL ) { alg_string = temp; } strip_out_integer_argument(&argc,argv,"spread",&spread); strip_out_integer_argument(&argc,argv,"kbyte",&kbyte); strip_out_standard_options(&argc,argv,show_help,show_version); if( argc != 3 ) { show_help(stdout); exit(12); } in = fopen(argv[1],"r"); if( in == NULL ) { fatal("Unable to open %s",argv[1]); } trusted = read_MappedCloneSet(in); /* fprintf(stderr,"first start %d\n",trusted->clone[0]->start);*/ in = fopen(argv[2],"r"); if( in == NULL ) { fatal("Unable to open %s",argv[2]); } change_max_BaseMatrix_kbytes(kbyte); weak = read_MappedCloneSet(in); synchronise_MappedCloneSets(trusted,weak); /* fprintf(stderr,"score for 2,2 is %d\n",MappedCloneSet_match(weak,trusted,2,2,0,10,-5)); */ match = new_MappedCloneMatch(weak,trusted,match_score,mismatch_score); fprintf(stderr,"Match matrix calculated\n"); if( strcmp(alg_string,"global") == 0 ) { pal = PackAln_bestmemory_CloneWise(weak,trusted,match,-query_gap_start,-query_gap_extend,-target_gap_start,-target_gap_extend,spread,-query_switch_cost,NULL); alb = convert_PackAln_to_AlnBlock_CloneWise(pal); } else if ( strcmp(alg_string,"local") == 0 ) { pal = PackAln_bestmemory_LocalCloneWise(weak,trusted,match,-query_gap_start,-query_gap_extend,-target_gap_start,-target_gap_extend,spread,-query_switch_cost,NULL); alb = convert_PackAln_to_AlnBlock_LocalCloneWise(pal); } else { /* keep gcc happy */ pal = NULL; alb = NULL; fatal("Not a proper algorithm string %s",alg_string); } if( show_path ) { extended_path(alb,weak,trusted,stdout); fprintf(stdout,"%s\n",divide_string); } if( show_zip ) { debug_zip(alb,weak,trusted,stdout); fprintf(stdout,"%s\n",divide_string); } if( show_alb ) { mapped_ascii_AlnBlock(alb,id,1,stdout); fprintf(stdout,"%s\n",divide_string); } if( show_pal ) { show_simple_PackAln(pal,stdout); fprintf(stdout,"%s\n",divide_string); } return 0; }
int main(int argc,char ** argv) { int i; DPRunImpl * dpri = NULL; GeneModelParam * gmp = NULL; GeneModel * gm = NULL; FILE * ifp; SeqAlign * al; PairBaseSeq * pbs; ComplexSequenceEval * splice5; ComplexSequenceEval * splice3; ComplexSequence * cseq; CompMat * score_mat; CompProb * comp_prob; RandomModel * rm; PairBaseCodonModelScore * codon_score; PairBaseModelScore* nonc_score; PairBaseCodonModelScore * start; PairBaseCodonModelScore * stop; SyExonScore * exonscore; PackAln * pal; AlnBlock * alb; Genomic * genomic; GenomicRegion * gr; GenomicRegion * gr2; Protein * trans; StandardOutputOptions * std_opt; ShowGenomicRegionOptions * sgro; char * dump_packaln = NULL; char * read_packaln = NULL; FILE * packifp = NULL; boolean show_trans = 1; boolean show_gene_raw = 0; ct = read_CodonTable_file(codon_table); /* score_mat = read_Blast_file_CompMat("blosum62.bla"); comp_prob = CompProb_from_halfbit(score_mat); */ rm = default_RandomModel(); comp_prob = read_Blast_file_CompProb("wag85"); fold_column_RandomModel_CompProb(comp_prob,rm); dpri = new_DPRunImpl_from_argv(&argc,argv); if( dpri == NULL ) { fatal("Unable to build DPRun implementation. Bad arguments"); } gmp = new_GeneModelParam_from_argv(&argc,argv); std_opt = new_StandardOutputOptions_from_argv(&argc,argv); sgro = new_ShowGenomicRegionOptions_from_argv(&argc,argv); dump_packaln = strip_out_assigned_argument(&argc,argv,"dump"); read_packaln = strip_out_assigned_argument(&argc,argv,"recover"); strip_out_standard_options(&argc,argv,show_help,show_version); if( argc != 2 ) { show_help(stdout); exit(12); } if((gm=GeneModel_from_GeneModelParam(gmp)) == NULL ) { fatal("Could not build gene model"); } codon_score = make_PairBaseCodonModelScore(comp_prob); nonc_score = make_PairBaseModelScore(); splice5 = ComplexSequenceEval_from_pwmDNAScore_splice(gm->splice5score); splice3 = ComplexSequenceEval_from_pwmDNAScore_splice(gm->splice3score); if((ifp = openfile(argv[1],"r")) == NULL ) { fatal("Could not open file %s",argv[1]); } al = read_fasta_SeqAlign(ifp); assert(al); assert(al->len == 2); assert(al->seq[0]->len > 0); assert(al->seq[1]->len > 0); /* write_fasta_SeqAlign(al,stdout);*/ pbs = new_PairBaseSeq_SeqAlign(al); if( read_packaln == NULL ) { cseq = ComplexSequence_from_PairBaseSeq(pbs,splice5,splice3); } start = make_start_PairBaseCodonModelScore(ct); stop = make_stop_PairBaseCodonModelScore(ct); /* show_PairBaseCodonModelScore(stop,ct,stdout); */ /* for(i=0;i<pbs->anchor->len;i++) { printf("%3d %c For %-6d %-6d %c Rev %-6d %-6d\n",i,pbs->anchor->seq[i], CSEQ_PAIR_5SS(cseq,i),CSEQ_PAIR_3SS(cseq,i), char_complement_base(pbs->anchor->seq[i]), CSEQ_REV_PAIR_5SS(cseq,i),CSEQ_REV_PAIR_3SS(cseq,i)); } */ /* show_ComplexSequence(cseq,stdout); */ exonscore = SyExonScore_flat_model(100,150,0.1,1.0); /* for(i=0;i<cseq->length;i++) { fprintf(stdout,"%d PairSeq is %d score %d\n",i,CSEQ_PAIR_PAIRBASE(cseq,i),nonc_score->base[CSEQ_PAIR_PAIRBASE(cseq,i)]); } exit(0); */ if( read_packaln != NULL ) { packifp = openfile(read_packaln,"r"); if( packifp == NULL ) { fatal("File %s is unopenable - ignoring dump command",dump_packaln); } else { pal = read_simple_PackAln(packifp); } } else { pal = PackAln_bestmemory_SyWise20(exonscore,cseq,codon_score,nonc_score,start,stop,Probability2Score(1.0/100.0),Probability2Score(1.0/10000.0),Probability2Score(1.0/10.0),NULL,dpri); } alb = convert_PackAln_to_AlnBlock_SyWise20(pal); if( dump_packaln != NULL ) { packifp = openfile(dump_packaln,"w"); if( packifp == NULL ) { warn("File %s is unopenable - ignoring dump command",dump_packaln); } else { show_simple_PackAln(pal,packifp); } } show_score_sequence(alb,pbs,nonc_score,stdout); /* show_StandardOutputOptions(std_opt,alb,pal,"//",stdout); */ genomic = Genomic_from_Sequence(al->seq[0]); gr = new_GenomicRegion(genomic); gr2 = new_GenomicRegion(genomic); add_Genes_to_GenomicRegion_new(gr,alb); show_GenomicRegionOptions(sgro,gr,ct,"//",stdout); return 0; }
int main(int argc,char ** argv) { int type = ALIGN_NORMAL; DPRunImpl * dpri = NULL; HitList * hl; HitListOutputImpl * hloi; Sequence * query; Sequence * target; Sequence * target_rev; PairwiseShortDna * two; LocalCisHitSet * set; LocalCisHitSet * greedy_set; LocalCisHitScore * lchs; LocalCisHitSetPara * setpara; MotifMatrixPara * mmp; MotifMatrixScore * mms; TransFactorMatchSet * tfms_query = NULL; TransFactorMatchSet * tfms_target = NULL; TransFactorMatchSet * tfms_target_rev = NULL; int qstart = -1; int qend = -1; int tstart = -1; int tend = -1; int i; char * temp; DnaMatrix * dm; DnaProbMatrix * dmp; TransFactorBuildPara * tfbp; TransFactorMatchPara * tfmp; TransFactorSet * tfs; char * motif_library = NULL; int use_laurence = FALSE; int use_ben = FALSE; dmp = DnaProbMatrix_from_match(0.75,NMaskType_BANNED); assert(dmp); flat_null_DnaProbMatrix(dmp); dm = DnaMatrix_from_DnaProbMatrix(dmp); dpri = new_DPRunImpl_from_argv(&argc,argv); hloi = new_HitListOutputImpl_from_argv(&argc,argv); setpara = new_LocalCisHitSetPara_from_argv(&argc,argv); mmp = new_MotifMatrixPara_from_argv(&argc,argv); tfbp = new_TransFactorBuildPara_from_argv(&argc,argv); tfmp = new_TransFactorMatchPara_from_argv(&argc,argv); strip_out_integer_argument(&argc,argv,"s",&qstart); strip_out_integer_argument(&argc,argv,"t",&qend); strip_out_integer_argument(&argc,argv,"u",&tstart); strip_out_integer_argument(&argc,argv,"v",&tend); temp = strip_out_assigned_argument(&argc,argv,"motiflib"); if( temp != NULL ) { motif_library = stringalloc(temp); } use_laurence = strip_out_boolean_argument(&argc,argv,"lr"); use_ben = strip_out_boolean_argument(&argc,argv,"ben"); temp = strip_out_assigned_argument(&argc,argv,"align"); if( temp != NULL ) { if( strcmp(temp,"motif") == 0 ) { type = ALIGN_MOTIF; } else if ( strcmp(temp,"normal") == 0 ) { type = ALIGN_NORMAL; } else { fatal("cannot recognise string %s as align type",temp); } } strip_out_standard_options(&argc,argv,show_help,show_version); if( argc != 3 ) { show_help(stdout); exit(12); } lchs = standard_LocalCisHitScore(NMaskType_VARIABLE); query = read_fasta_file_Sequence(argv[1]); target = read_fasta_file_Sequence(argv[2]); for(i=0;i<query->len;i++) { query->seq[i] = toupper(query->seq[i]); } assert(query != NULL); assert(target != NULL); target_rev = reverse_complement_Sequence(target); mms = MotifMatrixScore_from_MotifMatrixPara(mmp); if( type == ALIGN_MOTIF ) { if( motif_library == NULL ) { fatal("Wanted to align with motif but not motif library. Must use -motiflib"); } if( use_laurence == TRUE ) { tfs = read_laurence_TransFactorSet_file(motif_library); } else if( use_ben == TRUE ) { tfs = read_ben_IUPAC_TransFactorSet_file(motif_library); } else { tfs = read_TransFactorSet_file(motif_library); } build_TransFactorSet(tfs,tfbp); tfms_query = calculate_TransFactorMatchSet(query,tfs,tfmp); sort_by_start_TransFactorMatchSet(tfms_query); tfms_target = calculate_TransFactorMatchSet(target,tfs,tfmp); sort_by_start_TransFactorMatchSet(tfms_target); tfms_target_rev = calculate_TransFactorMatchSet(target_rev,tfs,tfmp); sort_by_start_TransFactorMatchSet(tfms_target); fprintf(stdout,"Motif Set: %d in query and %d in target\n",tfms_query->len,tfms_target->len); } if( qstart == -1 ) { qstart = 0; } if( qend == -1 ) { qend = query->len; } if( tstart == -1 ) { tstart = 0; } if( tend == -1 ) { tend = target->len; } two = query_to_reverse_target(query,target,dm,qstart,qend,tstart,tend); set = make_LocalCisHitSet(query,target,target_rev,two->forward,two->reverse,setpara,lchs,tfms_query,tfms_target,tfms_target_rev,mms,type == ALIGN_MOTIF ? 1 : 0,dpri); greedy_set = greedy_weed_LocalCisHitSet(set,setpara); hl = HitList_from_LocalCisHitSet(greedy_set); show_HitList_HitListOutputImpl(hloi,hl,stdout); return 0; }
ScanWiseHSPImpl * new_ScanWiseHSPImpl_from_argv(int * argc,char ** argv) { ScanWiseHSPImpl * out; char * temp; out = malloc(sizeof(ScanWiseHSPImpl)); out->use_corba = FALSE; out->use_mysql = FALSE; out->use_compress = FALSE; out->use_multiscan = FALSE; out->ior_file = NULL; out->direct_sequence = NULL; out->matrix_file = "BLOSUM62.bla"; out->step = 32; out->host = "localhost"; out->port = 4050; strip_out_boolean_def_argument(argc,argv,"corba",&out->use_corba); strip_out_boolean_def_argument(argc,argv,"mysql",&out->use_mysql); strip_out_boolean_def_argument(argc,argv,"wiseserver",&out->use_wiseserver); strip_out_boolean_def_argument(argc,argv,"compress",&out->use_compress); strip_out_boolean_def_argument(argc,argv,"multi",&out->use_multiscan); if( (temp = strip_out_assigned_argument(argc,argv,"iorfile")) != NULL ) { out->ior_file = temp; } if( (temp = strip_out_assigned_argument(argc,argv,"multiserver")) != NULL ) { out->multiscan_file = temp; } if( (temp = strip_out_assigned_argument(argc,argv,"scan_host")) != NULL ) { out->host = temp; } strip_out_integer_argument(argc,argv,"scan_port",&out->port); if( (temp = strip_out_assigned_argument(argc,argv,"scan_dbname")) != NULL ) { out->dbname = temp; } if( (temp = strip_out_assigned_argument(argc,argv,"scan_username")) != NULL ) { out->username = temp; } if( (temp = strip_out_assigned_argument(argc,argv,"scan_password")) != NULL ) { out->password = temp; } strip_out_integer_argument(argc,argv,"scan_step",&out->step); if( (temp = strip_out_assigned_argument(argc,argv,"seqdb")) != NULL ) { out->direct_sequence = temp; } if( (temp = strip_out_assigned_argument(argc,argv,"seqdbmat")) != NULL ) { out->matrix_file = temp; } return out; }
int main(int argc,char ** argv) { Sequence * query; Sequence * target; CompMat * comp; char * comp_file; int gap = (12); int ext = (2); int a = 120; int b = 10; int c = 3; ComplexSequence * query_cs; ComplexSequence * target_cs; ComplexSequenceEvalSet * evalfunc; boolean show_label_output = FALSE; boolean show_fancy_output = FALSE; boolean use_abc = FALSE; PackAln * pal; AlnBlock * alb; DPRunImpl * dpri = NULL; /* * Process command line options * -h or -help gives us help * -g for gap value (an int) - rely on commandline error processing * -e for ext value (an int) - rely on commandline error processing * -m for matrix (a char) * -l - label output * -f - fancy output * * * Use calls to commandline.h functions * */ if( strip_out_boolean_argument(&argc,argv,"h") == TRUE || strip_out_boolean_argument(&argc,argv,"-help") == TRUE) { show_help(stdout); exit(1); } dpri = new_DPRunImpl_from_argv(&argc,argv); if( dpri == NULL ) { fatal("Unable to build DPRun implementation. Bad arguments"); } show_label_output = strip_out_boolean_argument(&argc,argv,"l"); show_fancy_output = strip_out_boolean_argument(&argc,argv,"f"); /** if all FALSE, set fancy to TRUE **/ if( show_label_output == FALSE ) show_fancy_output = TRUE; (void) strip_out_integer_argument(&argc,argv,"g",&gap); (void) strip_out_integer_argument(&argc,argv,"e",&ext); (void) strip_out_integer_argument(&argc,argv,"a",&a); (void) strip_out_integer_argument(&argc,argv,"b",&b); (void) strip_out_integer_argument(&argc,argv,"c",&c); use_abc = strip_out_boolean_argument(&argc,argv,"abc"); comp_file = strip_out_assigned_argument(&argc,argv,"m"); if( comp_file == NULL) comp_file = "blosum62.bla"; if( argc != 3 ) { warn("Must have two arguments for sequence 1 and sequence 2 %d",argc); show_help(stdout); exit(1); } /* * Read in two sequences */ if( (query=read_fasta_file_Sequence(argv[1])) == NULL ) { fatal("Unable to read the sequence in file %s",argv[1]); } if( (target=read_fasta_file_Sequence(argv[2])) == NULL ) { fatal("Unable to read the sequence in file %s",argv[2]); } /* * Open a blosum matrix. This will be opened from WISECONFIGDIR * or WISEPERSONALDIR if it is not present in the current directory. */ comp = read_Blast_file_CompMat(comp_file); if( comp == NULL ) { fatal("unable to read file %s",comp_file); } /* if abc - factor up matrix! */ if( use_abc == TRUE ) { factor_CompMat(comp,10); } /* * Make an alignment. I don't care about the implementation: * hand it over to sw_wrap function to do it * */ if( use_abc ) { evalfunc = default_aminoacid_ComplexSequenceEvalSet(); query_cs = new_ComplexSequence(query,evalfunc); if( query_cs == NULL ) fatal("Cannot build cs objects!"); target_cs = new_ComplexSequence(target,evalfunc); if( target_cs == NULL ) fatal("Cannot build cs objects!"); pal = PackAln_bestmemory_abc(query_cs,target_cs,comp,-a,-b,-c,NULL,dpri); alb = convert_PackAln_to_AlnBlock_abc(pal); free_ComplexSequence(query_cs); free_ComplexSequence(target_cs); } else { alb = Align_Sequences_ProteinSmithWaterman(query,target,comp,-gap,-ext,dpri); } /* * show output. If multiple outputs, divide using // */ if( show_label_output == TRUE ) { show_flat_AlnBlock(alb,stdout); puts("//\n"); } if( show_fancy_output == TRUE ) { write_pretty_seq_align(alb,query,target,15,50,stdout); puts("//\n"); } /* * Destroy the memory. */ free_Sequence(query); free_Sequence(target); free_CompMat(comp); free_AlnBlock(alb); return 0; }
int main(int argc,char ** argv) { int i; char * temp; build_defaults(); strip_out_standard_options(&argc,argv,show_help,show_version); potential_file = strip_out_assigned_argument(&argc,argv,"pg"); pal_file = strip_out_assigned_argument(&argc,argv,"pal_file"); if( (temp = strip_out_assigned_argument(&argc,argv,"gap")) != NULL ) gap_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"g")) != NULL ) gap_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"ext")) != NULL ) ext_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"e")) != NULL ) ext_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"matrix")) != NULL ) matrix_file = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"m")) != NULL ) matrix_file = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"s")) != NULL ) qstart_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"t")) != NULL ) qend_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"u")) != NULL ) tstart_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"v")) != NULL ) tend_str = temp; if( (strip_out_boolean_argument(&argc,argv,"trev")) == TRUE ) reverse = TRUE; if( (strip_out_boolean_argument(&argc,argv,"[no]newgene")) == TRUE ) use_new_stats = TRUE; if( (strip_out_boolean_argument(&argc,argv,"tfor")) == TRUE ){ if( reverse == TRUE ) { warn("You have specified both trev and tfor. Treating as both"); do_both = TRUE; reverse = FALSE; } else { reverse = FALSE; } } if( (temp = strip_out_assigned_argument(&argc,argv,"insert")) != NULL ) { if( strcmp(temp,"flat") == 0 ) { flat_insert = TRUE; } else { flat_insert = FALSE; } } if( (strip_out_boolean_argument(&argc,argv,"both")) == TRUE ) do_both = TRUE; if( (strip_out_boolean_argument(&argc,argv,"fembl")) == TRUE ) is_embl = TRUE; if( (strip_out_boolean_argument(&argc,argv,"tabs")) == TRUE ) target_abs = TRUE; pseudo = strip_out_boolean_argument(&argc,argv,"pseudo"); if( (temp = strip_out_assigned_argument(&argc,argv,"codon")) != NULL ) codon_file = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"gene")) != NULL ) gene_file = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"alg")) != NULL ) alg_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"kbyte")) != NULL ) kbyte_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"subs")) != NULL ) subs_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"indel")) != NULL ) indel_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"cfreq")) != NULL ) cfreq_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"splice")) != NULL ) { warn("deprecated command line option -splice. use -splice_gtag now"); splice_string = temp; } if( (temp = strip_out_assigned_argument(&argc,argv,"init")) != NULL ) startend_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"null")) != NULL ) null_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"intron")) != NULL ) intron_string = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"alln")) != NULL ) allN_string = temp; if( (strip_out_boolean_argument(&argc,argv,"hmmer")) == TRUE ) use_tsm = TRUE; if( (strip_out_boolean_argument(&argc,argv,"intie")) == TRUE ) use_tied_model = TRUE; if( (temp = strip_out_assigned_argument(&argc,argv,"hname")) != NULL ) hmm_name = temp; if( (strip_out_boolean_argument(&argc,argv,"pretty")) != FALSE ) show_pretty = TRUE; if( (strip_out_boolean_argument(&argc,argv,"gff")) != FALSE ) show_gff = TRUE; if( (strip_out_boolean_argument(&argc,argv,"diana")) != FALSE ) show_diana = TRUE; if( (strip_out_boolean_argument(&argc,argv,"embl")) != FALSE ) show_embl = TRUE; if( (strip_out_boolean_argument(&argc,argv,"genes")) != FALSE ) show_pretty_gene = TRUE; if( (strip_out_boolean_argument(&argc,argv,"genesf")) != FALSE ) show_supp_gene = TRUE; if( (strip_out_boolean_argument(&argc,argv,"para")) != FALSE ) show_para = TRUE; if( (strip_out_boolean_argument(&argc,argv,"trans")) != FALSE ) show_trans = TRUE; if( (strip_out_boolean_argument(&argc,argv,"pep")) != FALSE ) show_pep = TRUE; if( (strip_out_boolean_argument(&argc,argv,"cdna")) != FALSE ) show_cdna = TRUE; if( (strip_out_boolean_argument(&argc,argv,"sum")) != FALSE ) show_match_sum = TRUE; if( (strip_out_boolean_argument(&argc,argv,"alb")) != FALSE ) show_AlnBlock = TRUE; if( (strip_out_boolean_argument(&argc,argv,"ace")) != FALSE ) show_ace = TRUE; if( (strip_out_boolean_argument(&argc,argv,"pal")) != FALSE ) show_PackAln = TRUE; if( (strip_out_boolean_argument(&argc,argv,"gener")) != FALSE ) show_gene_plain = TRUE; if( (strip_out_boolean_argument(&argc,argv,"over")) != FALSE ) show_overlap = TRUE; if( (temp = strip_out_assigned_argument(&argc,argv,"divide")) != NULL ) divide_str = temp; if( (temp = strip_out_assigned_argument(&argc,argv,"block")) != NULL ) main_block_str = temp; dpri = new_DPRunImpl_from_argv(&argc,argv); gmp = new_GeneModelParam_from_argv(&argc,argv); ppp = new_PhasedProteinPara_from_argv(&argc,argv); gwrp = new_GeneWiseRunPara_from_argv(&argc,argv); strip_out_remaining_options_with_warning(&argc,argv); if( argc != 3 ) { warn("Wrong number of arguments (expect 2)!\n"); if( argc > 1 ){ warn("Arg line looked like (after option processing)"); for(i=1;i<argc;i++) { fprintf(stderr," %s\n",argv[i]); } } show_short_help(); } if( show_embl == FALSE && show_diana == FALSE && show_gff == FALSE && show_overlap == FALSE && show_pretty_gene == FALSE && show_match_sum == FALSE && show_ace == FALSE && show_gene_plain == FALSE && show_pretty == FALSE && show_AlnBlock == FALSE && show_PackAln == FALSE && show_pep == FALSE ) { show_pretty = TRUE; show_para = TRUE; } dna_seq_file = argv[2]; if( use_tsm == FALSE) protein_file = argv[1]; else hmm_file = argv[1]; if( build_objects() == FALSE) fatal("Could not build objects!"); if( show_para == TRUE) { show_parameters(); } if( build_alignment() == FALSE) fatal("Could not build alignment!"); if( show_output() == FALSE) fatal("Could not show alignment. Sorry!"); if( do_both == TRUE) { reverse_target(); if( build_alignment() == FALSE) fatal("Could not build alignment!"); if( show_output() == FALSE) fatal("Could not show alignment. Sorry!"); } free_temporary_objects(); free_io_objects(); return 0; }
int main(int argc,char * argv[]) { FailureType fail = 0 ; FailureType should_fail_on = 0; int i; boolean doinfo = FALSE; boolean noaddnumbers = FALSE; MethodTypeSet * mts; MethodTypeSet * cp; boolean no_config_mts = FALSE; int prot_level = 0; int should_hard_link = 0; boolean should_warn_undoc = FALSE; char * prot_str; char * runner; char *config_dir=NULL; char buffer[64]; /** really for removing files **/ char * telegraph; APIpara api; char * pack; /** we no longer read in configs **/ mts = standard_dynamite_MethodTypeSet(); if( strip_out_boolean_argument(&argc,argv,"h") == TRUE || strip_out_boolean_argument(&argc,argv,"u") == TRUE /* arve */ || argc == 1 ) { show_usage(stdout); exit(1); } noaddnumbers = strip_out_boolean_argument(&argc,argv,"m"); doinfo = strip_out_boolean_argument(&argc,argv,"i"); no_config_mts = strip_out_boolean_argument(&argc,argv,"U"); should_hard_link = strip_out_boolean_argument(&argc,argv,"l"); prot_str = strip_out_assigned_argument(&argc,argv,"P"); should_warn_undoc = strip_out_boolean_argument(&argc,argv,"D"); telegraph = strip_out_assigned_argument(&argc,argv,"tele"); pack = strip_out_assigned_argument(&argc,argv,"n"); api.xs_ext = NULL; api.typemap_ext = NULL; api.pod_ext = NULL; api.c_extension_name = strip_out_assigned_argument(&argc,argv,"a"); api.t_extension_name = strip_out_assigned_argument(&argc,argv,"b"); api.pfdoc_ext = strip_out_assigned_argument(&argc,argv,"p"); api.xs_ext = strip_out_assigned_argument(&argc,argv,"x"); api.typemap_ext = strip_out_assigned_argument(&argc,argv,"tym"); api.all_callable = strip_out_boolean_argument(&argc,argv,"c"); api.make_perl = strip_out_boolean_argument(&argc,argv,"perl"); api.latex_ext = strip_out_assigned_argument(&argc,argv,"exttex"); api.make_latex = strip_out_boolean_argument(&argc,argv,"latex"); if( api.make_perl == TRUE) { if( api.xs_ext == NULL ) { api.xs_ext = ".xs"; } if( api.typemap_ext == NULL ) { api.typemap_ext = ".typemap"; } if( api.pod_ext == NULL ) { api.pod_ext = ".pod"; } } if( strip_out_boolean_argument(&argc,argv,"F") == TRUE) { should_fail_on = FailureType_dyc_All; } /* do DPImplementation */ dpi = new_DPImplementation_from_argstr(&argc,argv); if( prot_str != NULL ) { if( is_integer_string(prot_str,&prot_level) == FALSE ) { warn("Protection level %s is no integer!"); prot_level = 0; } } /* Override/set WISECONFIGDIR on the cmdline. (arve) */ config_dir = strip_out_assigned_argument(&argc, argv, "I"); if (config_dir != NULL) { set_config_dir(config_dir); } if( read_into_MethodTypeSet_filename(mts,"methods") == FALSE){ warn("You have no config file called 'methods'. This is bad news for dynamite matrices. I will attempt to compile, but you cannot use logical types. 'methods' should be either in the current directory, the $WISECONFIGDIR or your $WISEPERSONALDIR"); } /*** ok,loop over and do it ***/ if( argc < 1 ) { warn("You must have at least one dynamite source file to compile!"); show_usage(stdout); exit(1); } if( telegraph != NULL ) { tele_file= fopen(telegraph,"w"); } for(i=1;i<argc;i++) { if( mts != NULL) cp = copy_MethodTypeSet(mts); /* actually very cheap */ if( do_a_file(argv[i],mts,FALSE,prot_level,should_hard_link,should_warn_undoc,noaddnumbers == TRUE ? FALSE : TRUE,pack,&api,&fail) == FALSE ) { fatal("Terminated dyc one %d argument %s",i,argv[i]); } if( (should_fail_on == 01 && fail != 0) || (fail & should_fail_on) ) { /*** remove files which fail ****/ /*** ugh this should be done better ***/ for(runner=argv[i]+strlen(argv[i]) - 1;runner > argv[i] && *runner != '.';runner--) ; if( runner != argv[i] ) { *runner = '\0'; sprintf(buffer,"%s.c",argv[i]); if( remove_file(buffer) == FALSE ) { warn("Could not remove file %s from filesystem",buffer); } sprintf(buffer,"%s.h",argv[i]); if( remove_file(buffer) == FALSE ) { warn("Could not remove file %s from filesystem",buffer); } } /* else - well - something bad has happened */ fatal("Failed on file %s due to user defined fails",argv[i]); } if( mts != NULL ) { free_MethodTypeSet(mts); mts = cp; } } free_MethodTypeSet(mts); return 0; }
int main(int argc,char ** argv) { Sequence * query; Sequence * target; ComplexSequence * query_cs; ComplexSequence * target_cs; ComplexSequenceEvalSet * evalfunc; CompMat * comp; char * comp_file; int gap = (12); int ext = (2); boolean show_raw_output = FALSE; boolean show_label_output = FALSE; boolean show_fancy_output = FALSE; boolean has_outputted = FALSE; PackAln * pal; AlnBlock * alb; /* * Process command line options * -h or -help gives us help * -g for gap value (an int) - rely on commandline error processing * -e for ext value (an int) - rely on commandline error processing * -m for matrix (a char) * -r - raw matrix output * -l - label output * -f - fancy output * * * Use calls to commandline.h functions * */ if( strip_out_boolean_argument(&argc,argv,"h") == TRUE || strip_out_boolean_argument(&argc,argv,"-help") == TRUE) { show_help(stdout); exit(1); } show_raw_output = strip_out_boolean_argument(&argc,argv,"r"); show_label_output = strip_out_boolean_argument(&argc,argv,"l"); show_fancy_output = strip_out_boolean_argument(&argc,argv,"f"); /** if all FALSE, set fancy to TRUE **/ if( show_raw_output == FALSE && show_label_output == FALSE ) show_fancy_output = TRUE; (void) strip_out_integer_argument(&argc,argv,"g",&gap); (void) strip_out_integer_argument(&argc,argv,"e",&ext); comp_file = strip_out_assigned_argument(&argc,argv,"m"); if( comp_file == NULL) comp_file = "blosum62.bla"; if( argc != 3 ) { warn("Must have two arguments for sequence 1 and sequence 2 %d",argc); show_help(stdout); exit(1); } /* * Read in two sequences */ if( (query=read_fasta_file_Sequence(argv[1])) == NULL ) { fatal("Unable to read the sequence in file %s",argv[1]); } if( (target=read_fasta_file_Sequence(argv[2])) == NULL ) { fatal("Unable to read the sequence in file %s",argv[2]); } /* * Open a blosum matrix. This will be opened from WISECONFIGDIR * or WISEPERSONALDIR if it is not present in the current directory. */ comp = read_Blast_file_CompMat(comp_file); if( comp == NULL ) { fatal("unable to read file %s",comp_file); } /* * Convert sequences to ComplexSequences: * To do this we need an protein ComplexSequenceEvalSet * */ evalfunc = default_aminoacid_ComplexSequenceEvalSet(); query_cs = new_ComplexSequence(query,evalfunc); if( query_cs == NULL ) { fatal("Unable to make a protein complex sequence from %s",query->name); } target_cs = new_ComplexSequence(target,evalfunc); if( target_cs == NULL ) { fatal("Unable to make a protein complex sequence from %s",target->name); } /* * Make an alignment. I don't care about the implementation: * If the sequences are small enough then it should use explicit memory. * Long sequences should use divide and conquor methods. * * Calling PackAln_bestmemory_ProteinSW is the answer * This function decides on the best method considering the * memory and changes accordingly. It frees the matrix memory * at the end as well. * */ pal = PackAln_bestmemory_ProteinSW(query_cs,target_cs,comp,-gap,-ext,NULL); if( pal == NULL ) { fatal("Unable to make an alignment from %s and %s",query->name,target->name); } /* * ok, make other alignment forms, and be ready to show */ alb = convert_PackAln_to_AlnBlock_ProteinSW(pal); /* * show output. If multiple outputs, divide using // */ if( show_raw_output == TRUE ) { show_simple_PackAln(pal,stdout); puts("//\n"); } if( show_label_output == TRUE ) { show_flat_AlnBlock(alb,stdout); } if( show_fancy_output == TRUE ) { write_pretty_seq_align(alb,query,target,15,50,stdout); puts("//\n"); } /* * Destroy the memory. */ free_Sequence(query); free_Sequence(target); free_CompMat(comp); free_ComplexSequence(query_cs); free_ComplexSequence(target_cs); free_PackAln(pal); free_AlnBlock(alb); return 0; }