five_column_reader.cpp
来自「ncbi源码」· C++ 代码 · 共 203 行
CPP
203 行
/* * =========================================================================== * PRODUCTION $Log: five_column_reader.cpp,v $ * PRODUCTION Revision 1000.5 2004/06/01 20:58:38 gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9 * PRODUCTION * =========================================================================== *//* $Id: five_column_reader.cpp,v 1000.5 2004/06/01 20:58:38 gouriano Exp $ * =========================================================================== * * PUBLIC DOMAIN NOTICE * National Center for Biotechnology Information * * This software/database is a "United States Government Work" under the * terms of the United States Copyright Act. It was written as part of * the author's official duties as a United States Government employee and * thus cannot be copyrighted. This software/database is freely available * to the public for use. The National Library of Medicine and the U.S. * Government have not placed any restriction on its use or reproduction. * * Although all reasonable efforts have been taken to ensure the accuracy * and reliability of the software and data, the NLM and the U.S. * Government do not and cannot warrant the performance or results that * may be obtained by using this software or data. The NLM and the U.S. * Government disclaim all warranties, express or implied, including * warranties of performance, merchantability or fitness for any particular * purpose. * * Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors: Josh Cherry * * File Description: Plugin to load five-column feature table */#include <ncbi_pch.hpp>#include "five_column_reader.hpp"#include <objtools/readers/readfeat.hpp>#include <gui/core/idocument.hpp>#include <gui/core/version.hpp>#include <gui/plugin/PluginCommandSet.hpp>#include <gui/plugin/PluginInfo.hpp>#include <gui/plugin/PluginValue.hpp>#include <gui/plugin/PluginValueConstraint.hpp>#include <objects/general/Int_fuzz.hpp>#include <objects/general/Object_id.hpp>#include <objects/seqfeat/Cdregion.hpp>#include <objects/seqfeat/Feat_id.hpp>#include <objects/seqfeat/Genetic_code.hpp>#include <objects/seqfeat/SeqFeatData.hpp>#include <objects/seqfeat/Seq_feat.hpp>#include <objects/seqloc/Seq_interval.hpp>#include <objects/seqloc/Seq_loc.hpp>#include <corelib/ncbistd.hpp>#include <objmgr/util/feature.hpp>#include <serial/objostr.hpp>BEGIN_NCBI_SCOPEUSING_SCOPE(objects);void CFiveColumnReader::GetInfo(CPluginInfo& info){ info.Reset(); // version info macro info.SetInfo(CPluginVersion::eMajor, CPluginVersion::eMinor, 0, string(__DATE__) + " " + string(__TIME__), "CFiveColumnReader", "Five-column feature table", "Load the contents of a five-column feature table", ""); // command info CPluginCommandSet& cmds = info.SetCommands(); CPluginCommand& import_args = cmds.AddDataCommand(eDataCommand_import); import_args.AddArgument("id", "ID", CSeq_id::GetTypeInfo(), CPluginArg::TData::e_Single); import_args.AddArgument("fname", "File to load", CPluginArg::eFile); import_args.AddDefaultArgument("mode", "Accession to use", CPluginArg::eString, "Use this ID"); import_args.SetConstraint("mode", (*CPluginValueConstraint::CreateSet(), "Use this ID", "Get accession from file"));}void CFiveColumnReader::Import(CPluginMessage& msg){ const CPluginCommand& args = msg.GetRequest().GetCommand(); CPluginReply& reply = msg.SetReply(); reply.SetStatus(eMessageStatus_failed); LOG_POST(Info << "CFiveColumnReader::Load: start point."); const CPluginArg& arg = args["id"]; IDocument* doc = const_cast<IDocument*>(arg.GetDocument()); const CSeq_id* id = dynamic_cast<const CSeq_id*>(arg.GetObject()); const string& fname = args["fname"].AsString(); try { _TRACE("CFiveColumnReader::Load: reading file..."); CNcbiIfstream is(fname.c_str()); CRef<CSeq_annot> annot; if (args["mode"].AsString() == "Get accession from file") { annot = CFeature_table_reader::ReadSequinFeatureTable(is); } else { // use the id we're handed // may need to throw away the first line of file // (this allows use of a file that does have a // ">Features" line) string first; getline(is, first); if (!(first[0] == '>')) { // it's not a ">" line, so rewind the file is.seekg(0); } string id_string = id->GetSeqIdString(); annot = CFeature_table_reader ::ReadSequinFeatureTable(is, id_string, fname); } // this is not the same 'name' that's filled in by // ReadSequinFeatureTable, which is within a desc annot->SetName(fname); string comment = string("Annotations loaded from file ") + fname; annot->AddComment(comment); // save the object in the reply for framework processing reply.AddObject(*doc, *annot); reply.AddAction(CPluginReplyAction::e_Add_to_document); reply.SetStatus(eMessageStatus_success); } catch (CException& e) { LOG_POST(Info << "failed to read five-column file: " << e.what()); _TRACE("failed to read five-column file: " << e.what() ); }#ifndef _DEBUG catch (...) { _TRACE("failed to read five-column file: unknown error"); }#endif}END_NCBI_SCOPE/* * ===================================================================== * $Log: five_column_reader.cpp,v $ * Revision 1000.5 2004/06/01 20:58:38 gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9 * * Revision 1.9 2004/05/21 22:27:48 gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.8 2004/02/13 15:11:28 mjohnson * Removed hardcoded plugin help URL * * Revision 1.7 2004/02/11 21:01:52 jcherry * Use file argument rather than manually launching file chooser * * Revision 1.6 2003/11/24 15:45:39 dicuccio * Renamed CVersion to CPluginVersion * * Revision 1.5 2003/11/18 17:49:26 dicuccio * Added standard processing of return values * * Revision 1.4 2003/11/14 00:20:30 jcherry * Added url for help * * Revision 1.3 2003/11/06 20:12:15 dicuccio * Cleaned up handling of USING_SCOPE - removed from all headers * * Revision 1.2 2003/11/04 17:49:25 dicuccio * Changed calling parameters for plugins - pass CPluginMessage instead of paired * CPluginCommand/CPluginReply * * Revision 1.1 2003/11/03 14:58:36 jcherry * Initial version * * ===================================================================== */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?