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

📄 splign.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: splign.hpp,v $ * PRODUCTION Revision 1000.0  2004/06/01 18:11:18  gouriano * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.10 * PRODUCTION * =========================================================================== */#ifndef ALGO_ALIGN_SPLIGN__HPP#define ALGO_ALIGN_SPLIGN__HPP/* $Id: splign.hpp,v 1000.0 2004/06/01 18:11:18 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:  Yuri Kapustin** File Description:*   CSplign class definition**/#include <corelib/ncbistd.hpp>#include <algo/align/nw_spliced_aligner.hpp>#include <algo/align/splign/splign_hit.hpp>BEGIN_NCBI_SCOPE// Abstract base for splign sequence accessorsclass NCBI_XALGOALIGN_EXPORT CSplignSeqAccessor: public CObject{public:    // start and finish are zero-based;    // must return full sequence when start == 0 and finish == kMax_UInt;    // sequence characters are expected to be in upper case.    virtual void Load(const string& id, vector<char> *seq,                      size_t start, size_t finish) = 0;};class NCBI_XALGOALIGN_EXPORT CSplign: public CObject{public:    // a segment can represent an exon or an unaligning piece of mRna (a gap)    struct SSegment {        bool   m_exon; // false if gap        double m_idty;        size_t m_len;        size_t m_box [4];        string m_annot;   // short description like AG<exon>GT        string m_details; // transcript for exons, '-' for gaps        void ImproveFromLeft( const char* seq1, const char* seq2 );        void ImproveFromRight( const char* seq1, const char* seq2 );        void RestoreIdentity(void);        const char* GetDonor(void) const;    // raw pointers to parts of annot        const char* GetAcceptor(void) const; // or zero if less than 2 chars    };    typedef vector<SSegment> TSegments;    // aligned compartment representation     struct SAlignedCompartment {        SAlignedCompartment(void): m_id(0), m_error(true) {}        SAlignedCompartment(size_t id, bool err, const char* msg):            m_id(id), m_error(err), m_msg(msg) {}            size_t           m_id;        TSegments        m_segments;        size_t           m_mrnasize;        bool             m_QueryStrand, m_SubjStrand;        size_t           m_qmin, m_smin, m_smax;        bool             m_error;        string           m_msg;    };    typedef vector<CHit> THits;    typedef vector<SAlignedCompartment> TResults;public:    CSplign(void);    // setters and getters    void   SetAligner( CRef<CSplicedAligner>& aligner);    const  CRef<CSplicedAligner>& GetAligner(void) const;    void   SetSeqAccessor(CRef<CSplignSeqAccessor>& sa);    const  CRef<CSplignSeqAccessor>& GetSeqAccessor(void) const;    void   SetEndGapDetection(bool on);    bool   GetEndGapDetection(void) const;    void   SetPolyaDetection(bool on);    bool   GetPolyaDetection(void) const;    void   SetStrand(bool strand);    bool   GetStrand(void) const;    void   SetMaxGenomicExtension(size_t ext);    size_t GetMaxGenomicExtension(void) const;    void   SetMinQueryCoverage(double cov);    double GetMinQueryCoverage(void) const;    void   SetCompartmentPenalty(double penalty);    double GetCompartmentPenalty(void) const;     void   SetMinExonIdentity(double idty);    double GetMinExonIdentity(void) const;    void   SetStartModelId(size_t model_id) {        m_model_id = model_id - 1;    }    void Run(THits* hits);      const TResults& GetResult(void) const {        return m_result;    }protected:    // active ingridient :-)    CRef<CSplicedAligner> m_aligner;    // access to sequence data    CRef<CSplignSeqAccessor> m_sa;    // alignment pattern    vector<size_t> m_pattern;    // min exon idty - others will be marked as gaps    double m_minidty;    // compartment penalty as a per cent of the query (mRna) length    double m_compartment_penalty;    // mandatory end gap detection flag    bool m_endgaps;    // min query hit coverage    double m_min_query_coverage;    // alignment map    struct SAlnMapElem {        size_t m_box [4];        int    m_pattern_start, m_pattern_end;    };    vector<SAlnMapElem> m_alnmap;    // query sequence    vector<char> m_mrna;    bool         m_strand;    size_t       m_polya_start;    bool         m_nopolya;    // genomic sequence    vector<char> m_genomic;    // max space to look beyond end hits    size_t       m_max_genomic_ext;    // output per compartment    TSegments    m_segments;      // all compartments    size_t       m_model_id;    TResults     m_result;    SAlignedCompartment x_RunOnCompartment( THits* hits,                                            size_t range_left,                                            size_t range_right );    void   x_Run(const char* seq1, const char* seq2);    size_t x_TestPolyA(void);    void   x_SetPattern(THits* hits);};END_NCBI_SCOPE/* * =========================================================================== * * $Log: splign.hpp,v $ * Revision 1000.0  2004/06/01 18:11:18  gouriano * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.10 * * Revision 1.10  2004/05/04 15:23:44  ucko * Split splign code out of xalgoalign into new xalgosplign. * * Revision 1.9  2004/05/03 15:22:18  johnson * added typedefs for public stl types * * Revision 1.8  2004/04/30 15:00:32  kapustin * Support ASN formatting * * Revision 1.7  2004/04/27 17:19:43  kapustin * Valuble comments added * * Revision 1.6  2004/04/26 15:38:25  kapustin * Add model_id as a class member * * Revision 1.5  2004/04/23 14:36:24  kapustin * Initial revision * * * =========================================================================== */#endif

⌨️ 快捷键说明

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