00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <ncbi_pch.hpp>
00033 #include <corelib/ncbiapp.hpp>
00034 #include <objmgr/object_manager.hpp>
00035 #include <objmgr/scope.hpp>
00036 #include <objects/seqloc/Seq_loc.hpp>
00037 #include <serial/objostrasn.hpp>
00038 #include <serial/serial.hpp>
00039 #include <objects/seqalign/Seq_align.hpp>
00040 #include <objtools/data_loaders/genbank/gbloader.hpp>
00041
00042 #include <algo/align/prosplign/prosplign.hpp>
00043
00044
00045 BEGIN_NCBI_SCOPE
00046
00047 class CProSplignApp: public CNcbiApplication
00048 {
00049 public:
00050 virtual void Init(void);
00051 virtual int Run();
00052 };
00053
00054 void CProSplignApp::Init(void)
00055 {
00056 auto_ptr<CArgDescriptions> arg_desc(new CArgDescriptions);
00057 arg_desc->AddKey("protein", "proteinSeqEntryID",
00058 "Seq-id of the protein",
00059 CArgDescriptions::eString);
00060 arg_desc->AddKey("genomic", "genomicSeqEntryID",
00061 "Seq-id of the genomic sequence",
00062 CArgDescriptions::eString);
00063 arg_desc->AddKey("start", "start",
00064 "genomic region start",
00065 CArgDescriptions::eInteger);
00066 arg_desc->AddKey("stop", "stop",
00067 "genomic region stop",
00068 CArgDescriptions::eInteger);
00069
00070 arg_desc->AddFlag("full", "do not remove bad pieces");
00071 arg_desc->AddFlag("t", "produce alignment text");
00072
00073
00074 string prog_description = "Example of the ProSplign usage\n";
00075 arg_desc->SetUsageContext(GetArguments().GetProgramBasename(),
00076 prog_description, false);
00077
00078
00079
00080
00081 SetupArgDescriptions(arg_desc.release());
00082 }
00083
00084 int CProSplignApp::Run()
00085 {
00086 USING_SCOPE(objects);
00087
00088 const CArgs& args = GetArgs();
00089
00090 CRef<CObjectManager> obj_mgr = CObjectManager::GetInstance();
00091
00092 CGBDataLoader::RegisterInObjectManager(*obj_mgr);
00093
00094 CScope scope(*obj_mgr);
00095 scope.AddDefaults();
00096
00097
00098
00099
00100
00101
00102
00103
00104 CSeq_id protein(args["protein"].AsString());
00105 CSeq_id genomic(args["genomic"].AsString());
00106 CSeq_loc seqloc(genomic, args["start"].AsInteger(), args["stop"].AsInteger(),eNa_strand_unknown);
00107
00108 CProSplign prosplign;
00109 CRef<CSeq_align> alignment = prosplign.FindAlignment(scope, protein, seqloc,
00110 CProSplignOutputOptions(args["full"]?
00111 CProSplignOutputOptions::ePassThrough:
00112 CProSplignOutputOptions::eWithHoles
00113 )
00114 );
00115
00116 if (args["t"]) {
00117 CProSplignText::Output(*alignment, scope, cout, 80);
00118 } else {
00119 cout << MSerial_AsnText << *alignment << endl;
00120 }
00121
00122 return 0;
00123 }
00124
00125 END_NCBI_SCOPE
00126 USING_NCBI_SCOPE;
00127
00128 int main(int argc, const char* argv[])
00129 {
00130 return CProSplignApp().AppMain(argc, argv);
00131 }
00132
00133