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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: update_viewer.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/12 17:34:36  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.25
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: update_viewer.hpp,v 1000.1 2004/04/12 17:34:36 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:  Paul Thiessen
  35. *
  36. * File Description:
  37. *      implementation of non-GUI part of update viewer
  38. *
  39. * ===========================================================================
  40. */
  41. #ifndef CN3D_UPDATE_VIEWER__HPP
  42. #define CN3D_UPDATE_VIEWER__HPP
  43. #include <corelib/ncbistl.hpp>
  44. #include <objects/mmdb1/Biostruc.hpp>
  45. #include <objects/mmdb3/Biostruc_feature.hpp>
  46. #include <list>
  47. #include "viewer_base.hpp"
  48. BEGIN_SCOPE(Cn3D)
  49. class UpdateViewerWindow;
  50. class BlockMultipleAlignment;
  51. class AlignmentManager;
  52. class Sequence;
  53. class StructureSet;
  54. class UpdateViewer : public ViewerBase
  55. {
  56.     friend class UpdateViewerWindow;
  57.     friend class SequenceDisplay;
  58. public:
  59.     UpdateViewer(AlignmentManager *alnMgr);
  60.     ~UpdateViewer(void);
  61.     void CreateUpdateWindow(void);  // (re)creates the window
  62.     // add new pairwise alignments to the update window
  63.     typedef std::list < BlockMultipleAlignment * > AlignmentList;
  64.     void AddAlignments(const AlignmentList& alignmentList);
  65.     // replace contents of update window with given alignments
  66.     void ReplaceAlignments(const AlignmentList& alignmentList);
  67.     // delete a single alignment
  68.     void DeleteAlignment(BlockMultipleAlignment *toDelete);
  69.     // import
  70.     void ImportSequences(void);
  71.     void ImportStructure(void);
  72.     // turns the current alignments+display into the "initial state" (the bottom) of the undo stack
  73.     void SetInitialState(void);
  74.     // functions to save edited data
  75.     void SaveDialog(bool prompt);
  76.     void SaveAlignments(void);
  77.     // run BLAST on given pairwise alignment - if BLAST is successful, then alignment will be
  78.     // replaced with the result, otherwise the alignment is left unchanged
  79.     void BlastUpdate(BlockMultipleAlignment *alignment, bool usePSSMFromMultiple);
  80.     // find alignment of nearest BLAST-2-sequences neighbor in the multiple, and use this as
  81.     // a guide alignment to align this update with the multiple's master
  82.     void BlastNeighbor(BlockMultipleAlignment *update);
  83.     // save pending structures
  84.     void SavePendingStructures(void);
  85.     // sort updates
  86.     void SortByIdentifier(void);
  87. private:
  88.     UpdateViewerWindow *updateWindow;
  89.     const Sequence * GetMasterSequence(void) const;
  90.     typedef std::list < const Sequence * > SequenceList;
  91.     void FetchSequencesViaHTTP(SequenceList *newSequences, StructureSet *sSet) const;
  92.     void ReadSequencesFromFile(SequenceList *newSequences, StructureSet *sSet) const;
  93.     void FetchSequences(StructureSet *sSet, SequenceList *newSequences) const;
  94.     void SortUpdates(void);
  95.     void MakeEmptyAlignments(const SequenceList& newSequences,
  96.         const Sequence *master, AlignmentList *newAlignments) const;
  97.     typedef std::list < ncbi::CRef < ncbi::objects::CBiostruc > > BiostrucList;
  98.     BiostrucList pendingStructures;
  99.     typedef struct {
  100.         ncbi::CRef < ncbi::objects::CBiostruc_feature > structureAlignment;
  101.         int masterDomainID, slaveDomainID;
  102.     } StructureAlignmentInfo;
  103.     typedef std::list < StructureAlignmentInfo > PendingStructureAlignments;
  104.     PendingStructureAlignments pendingStructureAlignments;
  105.     void GetVASTAlignments(const SequenceList& newSequences,
  106.         const Sequence *master, AlignmentList *newAlignments,
  107. PendingStructureAlignments *structureAlignments,
  108.         int masterFrom = -1, int masterTo = -1) const;  // -1 means unrestricted
  109. };
  110. END_SCOPE(Cn3D)
  111. #endif // CN3D_UPDATE_VIEWER__HPP
  112. /*
  113. * ---------------------------------------------------------------------------
  114. * $Log: update_viewer.hpp,v $
  115. * Revision 1000.1  2004/04/12 17:34:36  gouriano
  116. * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.25
  117. *
  118. * Revision 1.25  2004/02/19 17:05:21  thiessen
  119. * remove cn3d/ from include paths; add pragma to disable annoying msvc warning
  120. *
  121. * Revision 1.24  2003/03/14 19:48:51  thiessen
  122. * allow multiple gi's in network sequence import dialog
  123. *
  124. * Revision 1.23  2003/02/03 19:20:08  thiessen
  125. * format changes: move CVS Log to bottom of file, remove std:: from .cpp files, and use new diagnostic macros
  126. *
  127. * Revision 1.22  2003/01/23 20:03:05  thiessen
  128. * add BLAST Neighbor algorithm
  129. *
  130. * Revision 1.21  2002/10/27 22:23:51  thiessen
  131. * save structure alignments from vastalign.cgi imports
  132. *
  133. * Revision 1.20  2002/10/25 19:00:02  thiessen
  134. * retrieve VAST alignment from vastalign.cgi on structure import
  135. *
  136. * Revision 1.19  2002/09/30 17:13:02  thiessen
  137. * change structure import to do sequences as well; change cache to hold mimes; change block aligner vocabulary; fix block aligner dialog bugs
  138. *
  139. * Revision 1.18  2002/09/16 21:24:58  thiessen
  140. * add block freezing to block aligner
  141. *
  142. * Revision 1.17  2002/09/09 13:38:23  thiessen
  143. * separate save and save-as
  144. *
  145. * Revision 1.16  2002/08/13 20:46:37  thiessen
  146. * add global block aligner
  147. *
  148. * Revision 1.15  2002/07/26 15:28:48  thiessen
  149. * add Alejandro's block alignment algorithm
  150. *
  151. * Revision 1.14  2002/06/05 14:28:41  thiessen
  152. * reorganize handling of window titles
  153. *
  154. * Revision 1.13  2002/03/28 14:06:02  thiessen
  155. * preliminary BLAST/PSSM ; new CD startup style
  156. *
  157. * Revision 1.12  2002/02/13 14:53:30  thiessen
  158. * add update sort
  159. *
  160. * Revision 1.11  2002/02/12 17:19:23  thiessen
  161. * first working structure import
  162. *
  163. * Revision 1.10  2001/10/01 16:03:58  thiessen
  164. * make CDD annotation window non-modal; add SetWindowTitle to viewers
  165. *
  166. * Revision 1.9  2001/09/27 15:36:48  thiessen
  167. * decouple sequence import and BLAST
  168. *
  169. * Revision 1.8  2001/09/18 03:09:38  thiessen
  170. * add preliminary sequence import pipeline
  171. *
  172. * Revision 1.7  2001/05/02 13:46:15  thiessen
  173. * major revision of stuff relating to saving of updates; allow stored null-alignments
  174. *
  175. * Revision 1.6  2001/04/19 12:58:25  thiessen
  176. * allow merge and delete of individual updates
  177. *
  178. * Revision 1.5  2001/04/05 22:54:51  thiessen
  179. * change bg color handling ; show geometry violations
  180. *
  181. * Revision 1.4  2001/04/04 00:27:22  thiessen
  182. * major update - add merging, threader GUI controls
  183. *
  184. * Revision 1.3  2001/03/22 00:32:36  thiessen
  185. * initial threading working (PSSM only); free color storage in undo stack
  186. *
  187. * Revision 1.2  2001/03/13 01:24:16  thiessen
  188. * working undo system for >1 alignment (e.g., update window)
  189. *
  190. * Revision 1.1  2001/03/09 15:48:44  thiessen
  191. * major changes to add initial update viewer
  192. *
  193. */