1 /*   mmdbapi2.h
2 * ===========================================================================
3 *
4 *                            PUBLIC DOMAIN NOTICE
5 *            National Center for Biotechnology Information (NCBI)
6 *
7 *  This software/database is a "United States Government Work" under the
8 *  terms of the United States Copyright Act.  It was written as part of
9 *  the author's official duties as a United States Government employee and
10 *  thus cannot be copyrighted.  This software/database is freely available
11 *  to the public for use. The National Library of Medicine and the U.S.
12 *  Government do not place any restriction on its use or reproduction.
13 *  We would, however, appreciate having the NCBI and the author cited in
14 *  any work or product based on this material
15 *
16 *  Although all reasonable efforts have been taken to ensure the accuracy
17 *  and reliability of the software and data, the NLM and the U.S.
18 *  Government do not and cannot warrant the performance or results that
19 *  may be obtained by using this software or data. The NLM and the U.S.
20 *  Government disclaim all warranties, express or implied, including
21 *  warranties of performance, merchantability or fitness for any particular
22 *  purpose.
23 *
24 * ===========================================================================
25 *
26 * File Name:  mmdbapi2.h
27 *
28 * Author:  Christopher Hogue
29 *
30 * Version Creation Date:   07/24/95
31 *
32 * $Revision: 6.2 $
33 *
34 * File Description:  Traversers & Data Lookup
35 *
36 * Modifications:
37 * --------------------------------------------------------------------------
38 * Date     Name        Description of modification
39 * -------  ----------  -----------------------------------------------------
40 * 95/08/28 C. Hogue    Major change to new Biostruc ASN.1 v4.0,
41 *                      PDB file generators, Kinemage file moved to
42 *                      mmdbapi3.h
43 *		       Model nodes and Dictionaries altered...
44 *
45 *  95/08/30 C. Hogue   Moved globals into mmdbapi2.c
46 *
47 *
48 * $Log: mmdbapi2.h,v $
49 * Revision 6.2  2000/03/31 22:30:47  lewisg
50 * fix output of CONECT, create intrabond traverser, misc bugs
51 *
52 * Revision 6.1  1999/03/30 22:31:12  ywang
53 * add GetMGFromMM & GetMMFromMSDBySeqId
54 *
55 * Revision 6.0  1997/08/25 18:11:06  madden
56 * Revision changed to 6.0
57 *
58 * Revision 5.4  1997/06/19 18:40:05  vakatov
59 * [WIN32,MSVC++]  Adopted for the "NCBIOBJ.LIB" DLL'ization
60 *
61 * Revision 5.3  1997/03/19 16:48:40  hogue
62 * Added fn SeqStringFromMol.
63 *
64  * Revision 5.2  1997/01/31  21:41:12  hogue
65  * removed a static function that Denis complained about.
66  *
67  * Revision 5.1  1997/01/27  21:41:10  hogue
68  * Added function to find a chain based on PDB chain code (char)
69  *
70  * Revision 5.0  1996/05/28  14:02:09  ostell
71  * Set to revision 5.0
72  *
73  * Revision 1.7  1996/05/22  20:43:48  hogue
74  * Added new API functions GetFirstGraph, GetNextGraph, GetPrevGraph, GetMainAtom
75  *
76  * Revision 1.6  1995/10/07  15:31:31  hogue
77  * Selenium not an ion...
78  *
79  * Revision 1.5  1995/09/05  19:11:08  hogue
80  * Enlarged virtual bond size for old 1HDS sizes, unknown elements fix.
81  *
82  * Revision 1.4  1995/08/30  19:36:44  kans
83  * numerous changes
84  *
85  * Revision 1.3  1995/08/28  19:31:53  kans
86  * version 4.1
87  *
88  * Revision 1.1  1995/08/02  17:07:15  kans
89  * Initial revision
90  *
91 *
92 * ==========================================================================
93 */
94 /*****************************************************************************
95 *
96 *  mmdbapi2.h
97 *
98 *  UNDER CONSTRUCTION NOTICE.
99 *	SUBJECT TO RADICAL CHANGES...
100 *
101 *  programmer C.W.V. Hogue
102 *  created: 24 JULY 95
103 *  last mod: 28 AUGUST 95
104 *****************************************************************************/
105 
106 #ifndef _MMDBAPI2_
107 #define _MMDBAPI2_
108 
109 
110 #define TRAVERSE_ALL 0
111 #define TRAVERSE_MOLECULE 1
112 #define TRAVERSE_GRAPH 2
113 #define TRAVERSE_ATOM 3
114 #define TRAVERSE_BOND 4
115 #define TRAVERSE_SOLID  5
116 #define TRAVERSE_IBOND 6
117 /* traverse all intraresidue bonds for a structure */
118 #define TRAVERSE_INTRABOND 7
119 
120 #define VIRTUAL_BOND_CHOICE 7
121 
122 #define VIRTUAL_BOND_AA_MAX 4.5
123 #define VIRTUAL_BOND_AA_MAX_SQ 20.25
124 
125 #define VIRTUAL_BOND_NA_MAX 7.8
126 #define VIRTUAL_BOND_NA_MAX_SQ 60.84
127 
128 #define MAX_NCBIstdaa 26
129 #define MAX_NCBI4na 17
130 #define USE_UPPERCASE 1
131 #define USE_LOWERCASE 2
132 #define USE_MIXCASE   3
133 #define USE_FULLNAME  4
134 
135 #define MAX_ELEMENTS 105
136 #define MAX_NOT_ION 17
137 
138 
139 
140 /* FUNCTION PROTOTYPES */
141 
142 #undef NLM_EXTERN
143 #ifdef NLM_IMPORT
144 #define NLM_EXTERN NLM_IMPORT
145 #else
146 #define NLM_EXTERN extern
147 #endif
148 
149 #ifdef __cplusplus
150 extern "C" {
151 #endif
152 
153 Int2 LIBCALL TraverseSolids( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex,
154 			  Pointer ptr, pNodeFunc pfnCallMe);
155 Int2 LIBCALL TraverseIntraBonds( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex,
156 			  Pointer ptr, pNodeFunc pfnCallMe);
157 Int2 LIBCALL TraverseBonds( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex,
158 			  Pointer ptr, pNodeFunc pfnCallMe);
159 Int2 LIBCALL TraverseIBonds( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex,
160 			  Pointer ptr, pNodeFunc pfnCallMe);
161 Int2 LIBCALL TraverseAtoms( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex,
162 			  Pointer ptr, pNodeFunc pfnCallMe);
163 Int2 LIBCALL TraverseGraphs( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex,
164 			  Pointer ptr, pNodeFunc pfnCallMe);
165 Int2 LIBCALL TraverseMolecules( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex,
166 			  Pointer ptr, pNodeFunc pfnCallMe);
167 Int2 LIBCALL TraverseModels(DValNodePtr pdnModel, Int2 iTraverse,
168      Int4 iIndex, Pointer ptr,  pNodeFunc pfnCallMe);
169 Int2 LIBCALL TraverseOneModel(DValNodePtr pdnModel, Int2 iTraverse, Int2 iModel,
170 			Int4 iIndex, Pointer ptr, pNodeFunc pfnCallMe);
171 Int2 LIBCALL IndexFromNode(PFB pfbNode);
172 PMSD LIBCALL ToMSDParent(PFB pfbThis);
173 CharPtr LIBCALL ParentStrucName(PFB pfbThis);
174 PMGD LIBCALL GetParentGraph(PFB pfbThis);
175 CharPtr LIBCALL ParentGraphPDBNo(PFB pfbThis);
176 CharPtr LIBCALL ParentGraphPDBName(PFB pfbThis);
177 CharPtr LIBCALL ParentGraphIUPAC1(PFB pfbThis);
178 Int2 LIBCALL ParentGraphNum(PFB pfbThis);
179 PMMD LIBCALL GetParentMol(PFB pfbThis);
180 CharPtr LIBCALL ParentMolName(PFB pfbThis);
181 Int2 LIBCALL ParentMolNum(PFB pfbThis);
182 PFB LIBCALL PFBFromVN(ValNodePtr pvnModel);
183 PFB LIBCALL PFBFromDN(DValNodePtr pdnModel);
184 DValNodePtr DNFromPFB(PFB pfbThis);
185 Int2 LIBCALL SetActiveModel(PFB pfbThis, Int2 iModel);
186 Int2 LIBCALL GetActiveModel(PFB pfbThis);
187 PALD LIBCALL GetAtomLocs(PMAD pmadThis,  Int2 iModel);
188 PALD LIBCALL GetLocation(PALD paldList,  Int2 iCoord,  Char cAlt);
189 NLM_EXTERN Int4 LIBCALL AssignAtomLocId(PDNMS pdnmsThis);
190 CharPtr LIBCALL ElementName(Int1 iAtomicNo);
191 FloatLo LIBCALL ElementSize(Int1 iAtomicNo);
192 CharPtr LIBCALL AminoAcidName(Char cThis, Int2 iRetCode);
193 CharPtr LIBCALL AminoAcidNameFromIdx(Int2 iIndex, Int2 iRetCode);
194 void LIBCALLBACK SetBackBone(PFB pfbThis, Int4 iModel, Int4 iIndex, Pointer ptr);
195 NLM_EXTERN void LIBCALL AssignBackBone(PDNMS pdnmsThis);
196 FloatLo LIBCALL AtomDistanceSq(PMAD pmadFrom, PMAD pmadTo, Int2 iModel, Char cAlt);
197 void LIBCALLBACK LinkAlpha(PFB pfbThis,  Int4 iModel,  Int4 iIndex,  Pointer ptr);
198 void LIBCALLBACK SetVirtualBB(PFB pfbThis,  Int4 iModel,  Int4 iIndex,  Pointer ptr);
199 NLM_EXTERN void LIBCALL AssignVirtual(PDNMS pdnmsThis);
200 void LIBCALLBACK SetIons(PFB pfbThis,  Int4 iModel,  Int4 iIndex,  Pointer ptr);
201 NLM_EXTERN void LIBCALL AssignIons(PDNMS pdnmsThis);
202 PDNMG LIBCALL GetFirstGraph(PMMD pmmdThis);
203 PDNMG LIBCALL GetLastGraph(PMMD pmmdThis);
204 PDNMG LIBCALL GetNextGraph(PDNMG pdnmgThis);
205 PDNMG LIBCALL GetPrevGraph(PDNMG pdnmgThis);
206 PMAD LIBCALL GetMainAtom(PDNMG pdnmgThis);
207 void LIBCALLBACK FindMolByChar(PFB pfbThis, Int4 iModel, Int4 iIndex, Pointer ptr);
208 PDNMM LIBCALL MolFromPDBChain(PDNMS pdnmsThis,  char c);
209 CharPtr LIBCALL SeqStringFromMol(PDNMM pdnmmThis);
210 PMGD LIBCALL GetMGFromMM(PMMD pmmdThis, Int4 iRes);
211 PMMD LIBCALL GetMMFromMSDBySeqId(PMSD pmsdThis, SeqIdPtr sip);
212 
213 
214 #ifdef __cplusplus
215 }
216 #endif
217 
218 #undef NLM_EXTERN
219 #ifdef NLM_EXPORT
220 #define NLM_EXTERN NLM_EXPORT
221 #else
222 #define NLM_EXTERN
223 #endif
224 
225 #endif
226