boolean write_pretty_Protein_align(AlnBlock * alb,Protein * q,Protein * t,int name,int main,FILE * ofp) { if( alb == NULL || q == NULL || t == NULL ) { warn("NULL objects being passed into write_pretty_Protein_align"); return FALSE; } return write_pretty_seq_align(alb,q->baseseq,t->baseseq,name,main,ofp); }
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; SequenceSet * in; Sequence * trans; ThreeStateDB * tsd; DPRunImpl * dpri; CodonTable * ct; int return_status; ThreeStateModel * tsm; ThreeStateScore * tss; Protein * hmmp; ComplexSequence * cs; ComplexSequenceEvalSet * cses; PackAln * pal; AlnBlock * alb; int show_align = 0; int show_alb = 0; int show_verbose = 1; int show_trans = 0; ct = read_CodonTable_file("codon.table"); cses = default_aminoacid_ComplexSequenceEvalSet(); dpri = new_DPRunImpl_from_argv(&argc,argv); strip_out_boolean_def_argument(&argc,argv,"pretty",&show_align); strip_out_boolean_def_argument(&argc,argv,"alb",&show_alb); strip_out_boolean_def_argument(&argc,argv,"trans",&show_trans); if( argc != 3 ) { show_help(stdout); exit(63); } in = read_fasta_SequenceSet_file(argv[1]); tsd = HMMer2_ThreeStateDB(argv[2]); assert(in); assert(tsd); assert(in->len == 2); trans = translate_Sequence(in->set[0],ct); if( show_trans ) { write_fasta_Sequence(trans,stdout); } cs = new_ComplexSequence(trans,cses); open_ThreeStateDB(tsd); while( (tsm = read_TSM_ThreeStateDB(tsd,&return_status)) != NULL ) { fold_RandomModel_into_ThreeStateModel(tsm,tsm->rm); set_startend_policy_ThreeStateModel(tsm,TSM_local,10,1.0); tss = ThreeStateScore_from_ThreeStateModel(tsm); hmmp = pseudo_Protein_from_ThreeStateModel(tsm); pal = PackAln_bestmemory_ThreeStateLoop(tss,cs,NULL,dpri); alb = convert_PackAln_to_AlnBlock_ThreeStateLoop(pal); if( show_alb ) { show_flat_AlnBlock(alb,stdout); } if( show_align ) { write_pretty_seq_align(alb,hmmp->baseseq,trans,15,50,stdout); } if( show_verbose ) { show_verbose_evo(alb,tsm,in->set[0],in->set[1],ct,stdout); } } }
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; }