prot_product.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:4k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: prot_product.cpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/06/01 21:21:06  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: prot_product.cpp,v 1000.0 2004/06/01 21:21:06 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Vlad Lebedev
  35.  *
  36.  * File Description:
  37.  *   CLayoutProtProd -- utility class to layout protein products
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <gui/objutils/prot_product.hpp>
  41. #include <objmgr/scope.hpp>
  42. #include <objects/seq/Bioseq.hpp>
  43. BEGIN_NCBI_SCOPE
  44. USING_SCOPE(objects);
  45. CLayoutProtProd::CLayoutProtProd(CScope& scope, const CMappedFeat& feat)
  46.     : CLayoutFeat(feat)
  47. {
  48.     if (feat.IsSetProduct()) {
  49.         m_Handle = scope.GetBioseqHandle(feat.GetProduct());
  50.     }
  51. }
  52. const CObject* CLayoutProtProd::GetObject(TSeqPos pos) const
  53. {
  54.     TSeqRange r = GetLocation().GetTotalRange();
  55.     if (pos >= r.GetFrom()  &&  pos <= r.GetTo()) {
  56.         if (m_Handle) {
  57.             CConstRef<CBioseq> bioseq = m_Handle.GetCompleteBioseq();
  58.          return m_Handle.GetCompleteBioseq().GetPointer();
  59.      }
  60.     throw runtime_error("invalid bioseq handle");
  61.     }
  62.     return NULL;
  63. }
  64. bool CLayoutProtProd::HasObject(const CObject* obj) const
  65. {
  66.     if (m_Handle) {
  67.         const CBioseq* bioseq = m_Handle.GetCompleteBioseq();
  68.         return bioseq == obj;
  69.     }
  70.     throw runtime_error("invalid bioseq handle");
  71. }
  72. END_NCBI_SCOPE
  73. /*
  74.  * ===========================================================================
  75.  * $Log: prot_product.cpp,v $
  76.  * Revision 1000.0  2004/06/01 21:21:06  gouriano
  77.  * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2
  78.  *
  79.  * Revision 1.2  2004/05/21 22:27:44  gorelenk
  80.  * Added PCH ncbi_pch.hpp
  81.  *
  82.  * Revision 1.1  2004/04/30 11:48:16  dicuccio
  83.  * Initial commit - split out from src/gui/utils
  84.  *
  85.  * Revision 1.7  2004/04/16 14:48:31  dicuccio
  86.  * Cleaned up handling of GetBioseqCore()
  87.  *
  88.  * Revision 1.6  2004/04/15 13:00:11  lebedev
  89.  * Changed GetObject to return NULL or const pointer based on given position
  90.  *
  91.  * Revision 1.5  2003/08/22 15:48:39  dicuccio
  92.  * Added 'USING_SCOPE(objects)'
  93.  *
  94.  * Revision 1.4  2003/08/18 14:47:20  dicuccio
  95.  * Changed nales: CFeature -> CLayoutFeat; CAlignment -> CLayoutAlign; CGraph ->
  96.  * CLayoutGraph; CProtProduct -> CLayoutProtProd.
  97.  *
  98.  * Revision 1.3  2003/07/24 13:13:25  dicuccio
  99.  * Changed CLayoutProtProd to return the protein bioseq as its object, not the CDS
  100.  * from which it came
  101.  *
  102.  * Revision 1.2  2003/07/21 19:35:21  dicuccio
  103.  * Changed storage mechanism - CLayoutObject::GetObject() is now pure virtual.
  104.  * Changed CFeature to wrap a CMappedFeat instead of a CSeq_feat / CSeq_loc pair
  105.  *
  106.  * Revision 1.1  2003/07/18 13:36:41  lebedev
  107.  * Initial revision
  108.  *
  109.  * ===========================================================================
  110.  */