⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bioseq_set.cpp

📁 ncbi源码
💻 CPP
字号:
/* * =========================================================================== * PRODUCTION $Log: Bioseq_set.cpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 19:34:50  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9 * PRODUCTION * =========================================================================== *//* $Id: Bioseq_set.cpp,v 1000.1 2004/06/01 19:34:50 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. * * =========================================================================== * * Author:  ....... * * File Description: *   ....... * * Remark: *   This code was originally generated by application DATATOOL *   using specifications from the ASN data definition file *   'seqset.asn'. * */// standard includes#include <ncbi_pch.hpp>#include <serial/serial.hpp>#include <serial/iterator.hpp>#include <serial/enumvalues.hpp>// generated includes#include <objects/seqset/Bioseq_set.hpp>#include <objects/seq/Bioseq.hpp>#include <objects/seq/Seq_annot.hpp> // to make KCC happy#include <objects/seq/Seq_inst.hpp>#include <objects/seqloc/Seq_id.hpp>#include <objects/seqloc/Textseq_id.hpp>// generated classesBEGIN_NCBI_SCOPEBEGIN_objects_SCOPE // namespace ncbi::objects::// destructorCBioseq_set::~CBioseq_set(void){}static bool s_is_na(const CBioseq& seq){    switch (seq.GetInst().GetMol()) {    case CSeq_inst::eMol_dna:    case CSeq_inst::eMol_rna:    case CSeq_inst::eMol_na:        return true;    default:        return false;    }}static bool s_has_gb(const CSeq_id& id){    switch (id.Which()) {    case CSeq_id::e_Genbank:    case CSeq_id::e_Embl:    case CSeq_id::e_Ddbj:    case CSeq_id::e_Other:    case CSeq_id::e_Tpg:    case CSeq_id::e_Tpe:    case CSeq_id::e_Tpd:        return true;    default:        return false;    }}static bool s_has_accession(const CSeq_id& id){    if (!id.GetTextseq_Id()) {        return false;    } else if (id.GetTextseq_Id()->IsSetAccession()) {        return true;    } else {        return false;    }}void CBioseq_set::GetLabel(string* label, ELabelType type) const{    // If no label, just return    if (!label) {        return;    }    // Get type label    if (IsSetClass()  &&  type != eContent) {        const CEnumeratedTypeValues* tv =            CBioseq_set::GetTypeInfo_enum_EClass();        const string& cn = tv->FindName(GetClass(), true);        *label += cn;        if (type != eType) {            *label += ": ";        }    }    if (type == eType) {        return;    }    // Loop through CBioseqs looking for the best one to use for a label    bool best_is_na = false, best_has_gb = false, best_has_accession = false;    const CBioseq* best = 0;    for (CTypeConstIterator<CBioseq> si(ConstBegin(*this)); si; ++si) {        bool takeit = false, is_na, has_gb = false, has_accession = false;        is_na = s_is_na(*si);        for (CTypeConstIterator<CSeq_id> ii(ConstBegin(*si)); ii; ++ii) {            has_gb = has_gb ? true : s_has_gb(*ii);            has_accession = has_accession ? true : s_has_accession(*ii);        }        if (!best) {            takeit = true;        } else {            bool longer = false;            if (si->GetInst().GetLength() > best->GetInst().GetLength()) {                longer = true;            }            if(best_has_accession) {                if (has_accession) {                    if(longer) {                        takeit = true;                    }                }            } else if (has_accession) {                takeit = true;            } else if (best_has_gb) {                if (has_gb) {                    if (longer) {                        takeit = true;                    }                }            } else if (has_gb) {                takeit = true;            } else if (best_is_na) {                if (is_na) {                    if (longer) {                        takeit = true;                    }                }            } else if (is_na) {                takeit = true;            } else if (longer) {                takeit = true;            }        }        if (takeit) {            best = &(*si);            best_has_accession = has_accession;            best_has_gb = has_gb;            best_is_na = is_na;        }    }    // Add content to label.    if (!best) {        *label += "(No Bioseqs)";    } else {        CNcbiOstrstream os;        if (best->GetFirstId()) {            os << best->GetFirstId()->DumpAsFasta();            *label += CNcbiOstrstreamToString(os);        }    }}END_objects_SCOPE // namespace ncbi::objects::END_NCBI_SCOPE/* * =========================================================================== * $Log: Bioseq_set.cpp,v $ * Revision 1000.1  2004/06/01 19:34:50  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9 * * Revision 1.9  2004/05/19 17:26:48  gorelenk * Added include of PCH - ncbi_pch.hpp * * Revision 1.8  2002/12/30 13:21:24  clausen * Replaced os.str() with CNcbiOstrstreamToString(os) * * Revision 1.7  2002/10/07 17:10:54  ucko * Include Seq-annot.hpp to make KCC happy. * * Revision 1.6  2002/10/03 18:57:12  clausen * Removed extra whitespace * * Revision 1.5  2002/10/03 17:18:19  clausen * Added GetLabel() * * Revision 1.4  2000/11/01 20:38:33  vasilche * Removed ECanDelete enum and related constructors. * * * =========================================================================== */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -