1 /* mmdbapi1.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: mmdbapi1.h 27 * 28 * Author: Christopher Hogue 29 * 30 * Version Creation Date: 03/14/95 31 * 32 * $Revision: 6.32 $ 33 * 34 * File Description: 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 * Addition of Features, Secondary Structure, Ensembles, 42 * PDB file generators, Kinemage file renderers. 43 * Model nodes and Dictionaries altered... 44 * 45 * $Log: mmdbapi1.h,v $ 46 * Revision 6.32 2000/12/05 21:03:05 hurwitz 47 * made it neat 48 * 49 * Revision 6.31 2000/07/24 22:29:45 thiessen 50 * fix header conflict 51 * 52 * Revision 6.30 2000/07/21 18:56:41 thiessen 53 * allow dynamic slave->master transformation 54 * 55 * Revision 6.29 2000/03/13 15:51:25 thiessen 56 * added storage for PARS to each residue for Cn3D; removed unused fields 57 * 58 * Revision 6.28 2000/03/09 17:52:57 thiessen 59 * changes to MSD, MGD for feature implementation in Cn3D 60 * 61 * Revision 6.27 2000/03/01 16:16:45 thiessen 62 * modified backbone definitions, added AM_PARTIALBACKBONE 63 * 64 * Revision 6.26 1999/10/05 23:18:17 lewisg 65 * add ddv and udv to cn3d with memory management 66 * 67 * Revision 6.25 1999/06/07 21:23:36 ywang 68 * add iUserDefinedFeatureOld, FeatureOnOld to MGD 69 * 70 * Revision 6.24 1999/05/07 14:11:25 zimmerma 71 * - Modified InstallAlignedSlave(), InstallStrucFeature(), BiostrucAddFeature() and 72 * Boolean InstBSAnnotSet() for additional args: Boolean Chain, and CharPtr SlaveChain; 73 * 74 * - InstBSAnnotSet now also expects argument CharPtr JobID 75 * 76 * - Added forward DCLs for LIBCALL isBiopoly() and LIBCALL isHet() 77 * 78 * Revision 6.23 1999/04/26 20:49:59 lewisg 79 * changed arguments named list to fix visual c++ bug 80 * 81 * Revision 6.22 1999/04/15 21:36:18 ywang 82 * move iMimeType to data block for MSD 83 * 84 * Revision 6.21 1999/04/13 23:07:17 ywang 85 * move position for Byte bVisible for MOD 86 * 87 * Revision 6.20 1999/03/18 21:04:30 lewisg 88 * reverse transform for saving 89 * 90 * Revision 6.19 1999/03/17 20:11:10 lewisg 91 * fix memory overwrite in pfd 92 * 93 * Revision 6.18 1999/03/01 20:22:11 ywang 94 * add bTurnedOff flag on MGD 95 * 96 * Revision 6.17 1999/02/24 22:58:10 ywang 97 * add iMimeType to MSD node and other minor name change 98 * 99 * Revision 6.16 1999/02/02 22:27:01 ywang 100 * add bJustHighlighted flag to MGD for feature edit 101 * 102 * Revision 6.15 1998/12/16 19:30:14 ywang 103 * add flag for highlight status to MGD 104 * 105 * Revision 6.14 1998/11/06 23:02:02 ywang 106 * add FeatureOn to MGD for feature on/off control 107 * 108 * Revision 6.13 1998/11/04 00:53:41 ywang 109 * add iFeature to MGD for modeling control 110 * 111 * Revision 6.12 1998/10/21 15:43:22 ywang 112 * attach the whole vast alignment data to master structure 113 * 114 * Revision 6.11 1998/10/01 21:56:37 ywang 115 * set display flag for object 116 * 117 * Revision 6.10 1998/09/22 17:52:21 ywang 118 * add flag for display control on MM and MG level 119 * 120 * Revision 6.9 1998/05/12 21:46:24 lewisg 121 * stricter conservation coloring 122 * 123 * Revision 6.8 1998/04/28 22:51:20 lewisg 124 * created separate pointer to master in MGD 125 * 126 * Revision 6.7 1998/04/21 22:58:53 lewisg 127 * eliminate dead code 128 * 129 * Revision 6.6 1998/04/10 22:41:48 lewisg 130 * eliminated dead code and added a visible bit to MSD 131 * 132 * Revision 6.5 1998/03/26 22:43:30 lewisg 133 * added seqentry and seq annot to msd 134 * 135 * Revision 6.4 1998/03/10 04:31:05 lewisg 136 * change name of MakePDBSeqId to MakePDBSeqId2 to avoid name conflict 137 * 138 * Revision 6.3 1998/03/06 23:17:12 lewisg 139 * codewarrior fixes 140 * 141 * Revision 6.2 1998/03/06 01:15:28 lewisg 142 * merge 143 * 144 * Revision 6.0 1997/08/25 18:11:00 madden 145 * Revision changed to 6.0 146 * 147 * Revision 5.5 1997/06/19 18:40:03 vakatov 148 * [WIN32,MSVC++] Adopted for the "NCBIOBJ.LIB" DLL'ization 149 * 150 * Revision 5.4 1997/04/18 19:18:56 hogue 151 * Int2 counters for atoms upgraded to Int4's, made ppAsnOrder alloc optional. 152 * 153 * Revision 5.3 1997/04/09 18:59:33 hogue 154 * removed redundant include of objall.h 155 * 156 * Revision 5.2 1997/01/08 21:07:51 vakatov 157 * Removed redundant declaration of NCBI_months[12] 158 * 159 * Revision 5.1 1996/07/31 18:38:22 hogue 160 * Structure feature handling structs added, and pointer from ald to graphic for composing groups of segments. 161 * 162 * Revision 5.0 1996/05/28 14:02:09 ostell 163 * Set to revision 5.0 164 * 165 * Revision 1.17 1996/05/01 14:41:26 hogue 166 * Added MakeChemGraphNodeList, and Domain support 167 * 168 * Revision 1.16 1996/04/18 17:38:36 hogue 169 * FETCH_ENTREZ flag use altered, added pdnmsSlaves to MSD for slave structures in multiple alignments 170 * 171 * Revision 1.15 1996/03/29 19:28:49 hogue 172 * Added pExtra pointer to MSD 173 * 174 * Revision 1.14 1996/01/31 21:35:00 hogue 175 * Changes to accomodate the free-ing of models, most dramatically is the 176 * encapuslation of interim free-ers to FreeSurfaceModelAsnList and 177 * FreeAtomicModelAsnLists. KEEP_ASN no longer supported. PDNSM and its 178 * kin renamed to PDNML. 179 * 180 * Revision 1.13 1995/11/09 22:54:56 hogue 181 * Added new pointers, variables to node data structures for Feature tables, 182 * rendering, coloring; added linking pointers between models and locations/objects 183 * 184 * Revision 1.12 1995/09/19 21:08:08 hogue 185 * Removed unnecessary typedefs. 186 * 187 * Revision 1.11 1995/09/18 21:25:11 hogue 188 * Het name field added in MGD 189 * 190 * Revision 1.10 1995/08/29 20:03:06 kans 191 * Entrez-like loading now enabled, models fixed 192 * 193 * Revision 1.8 1995/08/28 22:46:40 kans 194 * moved BiostrucAvail to mmdbapi1.[ch] 195 * 196 * Revision 1.7 1995/08/28 20:06:37 kans 197 * *** empty log message *** 198 * 199 * Revision 1.5 1995/08/28 19:31:53 kans 200 * version 4.1 201 * 202 * Revision 1.3 1995/08/11 20:23:09 epstein 203 * add support for VECMODEL 204 * 205 * Revision 1.2 1995/08/03 21:44:33 kans 206 * numerous changes 207 * 208 * Revision 1.1 1995/08/02 17:07:15 kans 209 * Initial revision 210 * 211 * 212 * ========================================================================== 213 */ 214 215 /***************************************************************************** 216 * 217 * mmdbapi1.c 218 * 219 * UNDER CONSTRUCTION NOTICE. 220 * EVERYTHING SUBJECT TO RADICAL CHANGES! 221 * 222 * programmer C.W.V. Hogue 223 * created: 14 Mar 95 224 * last mod: 28 AUGUST 95 225 *****************************************************************************/ 226 227 #ifndef _MMDBAPI1_ 228 #define _MMDBAPI1_ 229 230 /* GLOBAL VARIABLES */ 231 232 #include <asn.h> 233 #include <objall.h> 234 #include <strimprt.h> 235 #include <objmmdb1.h> 236 #include <objmmdb2.h> 237 #include <objmmdb3.h> 238 #include <dvncode.h> 239 #include <corematx.h> 240 #include <objseq.h> 241 #include <objsset.h> 242 /*#include <mmdbapi.h>*/ 243 244 #define INP_ASCII_FILE 1 245 #define INP_BINARY_FILE 0 246 #define INP_GI 2 247 #define INP_PDB_ACCESSION 3 248 249 #define DICT_DEFAULT "bstdt.val" 250 /* new version 4 ASN.1 defines */ 251 #define PDBNAME_DEFAULT "1AAA" 252 #define STRING_UNK_PDB "Unknown/Non-PDB" 253 #define STRING_UNK_RES "UNK" 254 #define STRING_UNK_MOL " " 255 #define STRING_NCBI_SS "NCBI assigned secondary structure" 256 #define STRING_PDB_SS "PDB secondary structure" 257 #define STRING_NCBI_VAST "VAST Alignment" 258 #define STRING_NCBI_DOMAIN "NCBI Domains" 259 #define STRING_PDB_SITE "PDB SITE" 260 #define STRING_PDB_FOOTNOTE "PDB FOOTNOTE" 261 #define Assembly_Type_Physiological_Form 1 262 #define Assembly_Type_Crystallographic_Cell 2 263 #define Assembly_Type_Other 255 264 265 #define Molecule_type_dna 1 266 #define Molecule_type_rna 2 267 #define Molecule_type_protein 3 268 #define Molecule_type_other_biopolymer 4 269 #define Molecule_type_solvent 5 270 #define Molecule_type_other_nonpolymer 6 271 #define Molecule_type_other 255 272 273 #define Residue_deoxyribonucleotide 1 274 #define Residue_ribonucleotide 2 275 #define Residue_amino_acid 3 276 #define Residue_other 255 277 278 #define Feature_type_helix 1 279 #define Feature_type_strand 2 280 #define Feature_type_sheet 3 281 #define Feature_type_turn 4 282 #define Feature_type_site 5 283 #define Feature_type_footnote 6 284 #define Feature_type_subgraph 100 285 #define Feature_type_region 101 286 #define Feature_type_alignment 200 287 #define Feature_type_similarity 201 288 #define Feature_type_other 255 289 290 #define Feature_type_transform 153 291 #define Feature_type_camera 154 292 #define Feature_type_script 155 293 #define Feature_type_multalign 202 294 #define Feature_type_color 150 295 #define Feature_type_render 151 296 #define Feature_type_label 152 297 #define Feature_type_indirect 203 298 #define Feature_type_cn3dstate 254 299 #define Feature_type_comment 7 300 301 #define MAX_FEATURES 10 302 #define VIEW_CODE 1 /* undef to remove display specific stuff in Modelstruc*/ 303 /* #define BIG_CODE 1 define to add "user" variables to a Modelstruc PFB nodes */ 304 305 #define INTSTRLEN 30 /* characters in MAXINT */ 306 307 #define Model_type_ncbi_vector 1 308 #define Model_type_ncbi_backbone 2 309 #define Model_type_ncbi_all_atom 3 310 #define Model_type_pdb_model 4 311 #define Model_type_other 255 312 313 #define BSEVERYTHING 5 314 315 /*bExtent settings:*/ 316 /* used by Biostruc2Modelstruc */ 317 /* determines how much is converted */ 318 #define COORDS_DATA 0x01 319 #define TEMP_DATA 0x02 /*must have coords too*/ 320 #define OCC_DATA 0x04 /* must have coords too */ 321 #define ALTCNF_DATA 0x08 /* other locations */ 322 #define FETCH_ENTREZ 0x20 /* Need to call EntrezInit/EntrezFini */ 323 #define BD_TREE 0x40 324 /* #define FEATURE_TAB 0x80 not used */ 325 #define POWER_VIEW 0xFF 326 #define CONVERT_ALL 0xFF 327 328 /* 329 * Flags for the bMe of the MBD,MAD,MGD,MMD, MSD hierarchy of structures. 330 * SHOW_ME byte is for a viewer to see if the node and its children are to be shown 331 * REG_STYLE says display using the default style palette for the node and children 332 * AM_CHANGED is a flag saying the node has been changed by last operation. 333 * AM_MDB, AM_MAD, AM_MGD, AM_MMD, AM_MSD say what kind of sub-struc this is 334 * and can be used to typecast appropriately. 335 * 336 */ 337 338 /* Flags Block bUpdate byte */ 339 /* these bits ARE stacked - i.e. 340 * don't set with: 341 * byte = AM_CHANGED, instead use 342 * byte = (byte | AM_CHANGED) 343 * 344 */ 345 #define AM_CHANGED 0x01 346 #define SHOW_ME 0x02 347 #define REG_STYLE 0x04 348 /* define AM_ION 0x80 declared below */ 349 350 351 /* Flags Block bMe byte */ 352 /* these bits are NOT EVER stacked 353 * and are set by MMDBAPI 354 * you can use a switch statement 355 * on these... 356 */ 357 #define AM_ALD 0x80 /* Atom Location Data */ 358 #define AM_MDD 0x40 /* Model Density Data */ 359 #define AM_MOD 0x20 /* Model Object Data */ 360 #define AM_MBD 0x10 /* Model Bond Data */ 361 #define AM_MAD 0x08 /* Model Atom Data */ 362 #define AM_MGD 0x04 /* Model Graph Data */ 363 #define AM_MMD 0x02 /* Model Molecule Data */ 364 #define AM_MSD 0x01 /* Model Structure Data */ 365 #define AM_UNK 0x00 366 367 /* 368 * Flags for the bWhat of MBD, MAD, MGD, MMD, MDS hierarchy. 369 * This says what is contained in this branch of hierarchy, i.e. 370 * a full MSD structure can be (no Nucleic acids) 371 * e.g. pMSD->bWhat = AM_POLY | AM_PROT | AM_HET | AM_SOL 372 * or, in a MMD molecule 373 * pMMD->bWhat = AM_POLY | AM_PROT 374 * etc... 375 * This way if the structure has NO HET groups, the don't invoke 376 * them from a menu... 377 */ 378 379 /* Flags Block bWhat byte For Struc, Molec */ 380 /* these bits ARE stacked in Struc, but NOT stacked in Molec */ 381 #define AM_ION 0x80 /* not set in PDB derived data - do lookup */ 382 #define AM_RNA 0x40 383 #define AM_WAT 0x20 384 #define AM_SOL 0x10 385 #define AM_HET 0x08 386 #define AM_DNA 0x04 387 #define AM_PROT 0x02 388 #define AM_POLY 0x01 389 390 /* Flags Block bWhat byte for Graph */ 391 /* these bits ARE stacked */ 392 #define DICT_REF 0x80 393 #define DICT_GLOBAL 0x40 394 #define DICT_LOCAL 0x20 395 #define RES_RNA 0x10 396 #define RES_DNA 0x08 397 #define RES_AA 0x04 398 399 /* Flags for bNCBISecStru or pPDBSecStru in PMGD of type RES_AA */ 400 #define SS_HELIX 0x80 401 #define SS_SHEET 0x40 402 #define SS_STRAND 0x20 403 #define SS_TURN 0x10 404 405 /* Flags Block bWhat byte for MAD atom */ 406 /* all these are set by traversers */ 407 #define AM_BACKBONE 0x01 /* PROT & NA */ 408 #define AM_CALPHA 0x02 /* PROT */ 409 #define AM_PALPHA 0x04 /* RNA & DNA */ 410 #define AM_PARTIALBACKBONE 0x08 /* PROT & NA - all atoms off linear backbone */ 411 #define AM_CBETA 0x10 /* PROT */ 412 #define AM_NBETA 0x20 /* RNA & DNA */ 413 #define AM_C1RIBOSE 0x40 /* RNA & DNA */ 414 #define AM_C4RIBOSE 0x80 /* RNA & DNA */ 415 416 /* shorter names from the ASN.1 defines */ 417 #define Bond_order_partial_double 2 418 #define Bond_order_aromatic 3 419 #define Bond_order_double 4 420 #define Bond_order_triple 5 421 #define Bond_order_other 6 422 #define Bond_order_unknown 255 423 #define Bond_order_single 1 424 425 /* Flags Block bWhat byte for MBD bond */ 426 /* these bits are stacked */ 427 #define BOND_VIRTUAL 0x80 /* set by traversers */ 428 #define BOND_PDOUBLE 0x40 429 #define BOND_VDW 0x20 /* not set for PDB */ 430 #define BOND_IONIC 0x10 /* not set for PDB */ 431 #define BOND_H 0x08 /* not set for PDB */ 432 #define BOND_TRIPLE 0x04 433 #define BOND_DOUBLE 0x02 434 #define BOND_SINGLE 0x01 435 #define BOND_NONE 0x00 436 437 /* if BOND_PDOUBLE & BOND_DOUBLE then aromatic */ 438 439 /* Flags Block bWhat byte For Object */ 440 /* these are not stacked */ 441 #define OBJ_SPHERE 0x80 442 #define OBJ_CYLINDER 0x40 443 #define OBJ_BRICK 0x20 444 #define OBJ_TMESH 0x10 445 #define OBJ_TRIANGLES 0x08 446 #define OBJ_CONE 0x04 447 448 /* Pointers to the hierarchical types for Biostruc data 449 * Note the terse struct names MMx, PMMx, MMxD are used to limit the 450 * length of long pointer casts when coding and for Hungarian Notation 451 * coding. The names are broken down 452 * here in the header file for each declaration, so you can see how they 453 * are logically constructed. 454 * a PDN is a Pointer to DValNode 455 * a PVN is a Pointer to ValNode 456 */ 457 458 typedef DValNodePtr PDNMS; /* Model Structure (MS) */ 459 /* Node contains a PMSD - Pointer to Model Structure Data */ 460 /* choice = structure no */ 461 462 typedef DValNodePtr PDNMM; /* Model Molecule (MM) */ 463 /* Node contains a PMMD - Pointer to Model Molecule Data */ 464 /* choice = molecule id */ 465 466 typedef DValNodePtr PDNMG; /* Model Residue (MG)*/ 467 /* Node contains a PMGD - Pointer to Model Residue Data */ 468 /* choice = residue id */ 469 470 typedef ValNodePtr PVNMA; /* Model Atom (MA) */ 471 /* Node contains a PMAD - Pointer to Model Atom Data */ 472 /* choice = element */ 473 474 typedef ValNodePtr PVNMB; /* Model Bond (MB)*/ 475 /* Node contains a PMBD - Pointer to Model Bond Data */ 476 /* choice = bond order */ 477 478 typedef ValNodePtr PVNAL; /* Atom Location (AL) */ 479 /* Node contains a PALD - Pointer to Atom Location Data */ 480 /* choice = model id */ 481 482 typedef ValNodePtr PVNMO; /* Model Object */ 483 /* Node contains a PMOD - Pointer to Model Object Data */ 484 /* choice = model id */ 485 486 typedef ValNodePtr PVNMD; /* Model Density */ 487 /* Node contains a PMDD - Pointer to Model Density Data */ 488 /* choice = model id */ 489 490 typedef DValNodePtr PDNML; /* Structure Model */ 491 /* Node contains a BiostrucModelPtr */ 492 /* choice = model id */ 493 494 typedef DValNodePtr PDNSF; /* Structure Feature */ 495 /* Node contains a BiostrucFeatureSetPtr */ 496 /* choice = feature number */ 497 498 /***************************/ 499 /*MMDBAPI NODE DECLARATIONS*/ 500 /***************************/ 501 502 /**************/ 503 /* Flag Block */ 504 /**************/ 505 506 /* COMMON TO MSD, MMD, MGD, MAD, MOD, MDD and MBD: */ 507 /* if you have a PMxD, can cast as a "PFB" and get the correct type */ 508 509 typedef struct nlm_flagblock { 510 struct nlm_flagblock PNTR pfbParent; 511 /* pointer to parent Data node (for MSD it is NULL) */ 512 Byte bMe; /* Me byte - identifies typecast and display triage */ 513 Byte bWhat; /* What is in me? */ 514 Byte bUpdate; /* byte to indicate status */ 515 Byte bReserved; 516 Int4Ptr pI4vFeatID; /* Feature Id */ 517 PointerPtr ppvFeatData; /* vector containing pointers */ 518 Int2 iNumFeats; /* number of Features registered in node */ 519 #ifdef BIG_CODE 520 Byte bReserved1; /* */ 521 Byte bUser1; 522 Int2 i2Reserved; 523 Int2 i2User; 524 #endif 525 }FB, *PFB, **PPFB; 526 527 528 /*************************/ 529 /* Feature Handlers */ 530 /*************************/ 531 532 typedef DValNodePtr PDNTRN; 533 534 typedef DValNodePtr PDNSFS; /* Structure Feature Set*/ 535 /* Node contains a PSFS - Pointer to Structure Feature Set */ 536 /* choice = Feature Set Id - each "session" is a new feature set */ 537 538 typedef void (LIBCALLBACK *PColor3DFunc)(ColorPropPtr pcpThis, Uint1 PNTR pIndex); 539 540 typedef void (LIBCALLBACK *PStrFeatFunc)(Pointer PNTR ppCUserData, 541 UserObjectPtr PNTR ppASNUserObj); 542 543 /* New uses nothing, returns NEW pointer value in pCUserData */ 544 /* Free frees what is passed in ppCUserData */ 545 /* ToC uses ppASNUserObj, allocates anc copies, creating NEW pointer 546 in ppCUserData - does the allocation using the New fn. if necessary */ 547 /* ToASN uses ppCUserData, returns NEW pointer 548 in pASNUserObj - does the allocation of the UserData */ 549 /* ToASN is automatically used upon writing to stream. - its object is Free-ed */ 550 /* with UserObjectFree(*ppASNUserObj) */ 551 552 /* if the feature type has registered functions, it is automatically */ 553 /* appended as a C structure on each appropriate node, and the ASN.1 */ 554 /* is deleted. When a call is made to save the Biostruc, it is */ 555 /* reconstructed, and the features are reconstructed from the feature */ 556 /* registry. Afterward, the feature ASN.1 structures are freed. */ 557 558 typedef ValNodePtr PVNSFF; /* linked list of SFF */ 559 /* choice = feature type code */ 560 561 typedef struct Nlm_sff 562 { /* structure feature functions */ 563 PStrFeatFunc pFeatNewFn; 564 PStrFeatFunc pFeatFreeFn; 565 PStrFeatFunc pFeatToASNFn; 566 PStrFeatFunc pFeatToCFn; 567 }SFF, *PSFF; 568 569 typedef struct Nlm_sfd 570 { 571 struct Nlm_sfd PNTR next; 572 PDNSFS pdnsfsSet; 573 Int4 iId; 574 Int4 iType; 575 CharPtr pcName; 576 Int2 iColor; /* table integer index */ 577 Int2 iRender; /* render code from spec */ 578 Byte bPFBtype; /* type of node feature applies to */ 579 Pointer pData; /* transform, camera, script, align in ASN.1 format */ 580 BiostrucFeaturePtr pbsfFeat; /* stub for ASN.1 used only for write */ 581 }SFD, *PSFD; 582 583 typedef struct Nlm_sfs 584 { 585 Int4 iId; 586 PDNSFS pdnsfsSet; 587 Boolean SetisOn; 588 CharPtr pcName; 589 PSFD psfdFeats; 590 ValNodePtr pvnDescr; 591 BiostrucFeatureSetPtr pbsfsFeatSet; /* ASN.1 stub only for write */ 592 }SFS, *PSFS; 593 594 595 /************************/ 596 /* Model Structure Data */ 597 /************************/ 598 typedef struct Nlm_msd 599 { 600 /* flag block */ 601 PFB pfbParent; 602 Byte bMe; 603 Byte bWhat; 604 Byte bUpdate; 605 Byte bReserved; 606 Int4Ptr pI4vFeatID; 607 PointerPtr ppvFeatData; 608 Int2 iNumFeats; 609 #ifdef BIG_CODE 610 Byte bReserved1; /* */ 611 Byte bUser1; 612 Int2 i2Reserved; 613 Int2 i2User; 614 #endif 615 /* bookkeeping block */ 616 Byte bVisible; /* can it be seen? */ 617 Byte bMaster; /* am I a master struct? */ 618 Byte bAligned; /* master: how many slaves? */ 619 BytePtr pbAligned; /* slave: pointer to master bAligned */ 620 PDNMS pdnmsLink; 621 CharPtr pcSName; /* the "retrieval" string */ 622 Int2 iType; /* encodes pcSName as net id or filename for retrieve */ 623 BiostrucPtr pbsBS; /* the ASN.1 Biostruc is kept here, usually */ 624 /* "header" with {id, desc, history} only */ 625 /* but during write operations it is to be */ 626 /* fully reconstructed. */ 627 ResidueGraphPtr pDictLocal; /* the local ASN.1 dictionary */ 628 /* make this into a linked-list of dictionaries with id's */ 629 BiomolDescrPtr pGraphDescr; /* The chemical graph ASN.1 descr (ValNode) */ 630 CharPtr pcPDBName; /* from ASN.1 Biostruc descr field */ 631 Int4 iMMDBid; /* MMDB unique number */ 632 CharPtr pcChemName; /* from ASN.1 chem graph descr field */ 633 CharPtr pcPdbClass; 634 CharPtr pcPdbSource; 635 Int2 iModels; /* Number of Models present */ 636 Int2 iActiveModel; /* Index of Active Model */ 637 Int2 iFeatures; 638 Int2 iPDBType; /* enum from ASN.1 */ 639 Int4 iMolCount; /* number of molecules */ 640 Int4 iObjCount; /* number of objects */ 641 Int4 iDensCount; /* number of densities */ 642 Int4 iIMBCount; /* number of inter-molecule bonds */ 643 Int4 iHashChange; /* iModels+iFeatures+iObjCount+iDensCount + #ALD's */ 644 /* data block */ 645 Int2 iMimeType; 646 PDNML pdnmlModels; /* contains PMLD with Models that are */ 647 /* PDNSF pdnsfFeatures; */ /* BiostrucFeatureSetPtrs */ 648 /* moved to psastrucAlignment */ 649 PDNSFS pdnsfsHead; /* the feature registry for this structure */ 650 PDNMM pdnmmHead; /* the list of molecules (children) */ 651 PVNMB pvnmbIMBHead; /* Inter-molecule bonds in structure (children) */ 652 PVNMO pvnmoHead; /* the list of model objects */ 653 PVNMD pvnmdHead; /* the list of model densities */ 654 FloatLoPtr PNTR ppflBoundBox; /* matrix 2x3 with max & min XYZs */ 655 /* When needed, Allocated with: ppflBoundBox = FLMatrix(0,2,0,3); */ 656 FloatLoPtr PNTR ppflRotate; /* matrix 3x3 with rotations for structure */ 657 FloatLoPtr pflTranslate; /* 3 - vector with translations for structure */ 658 PDNMS pdnmsSlaves; /* slave structures in multiple alignments */ 659 BiostrucAnnotSetPtr psaStrucAlignment; 660 VoidPtr pGlobalPARS; /* will hold pointer to default "global" PARS for this structure */ 661 ValNodePtr pdnSlaveToMasterTransforms; /* store transformation for slave onto master */ 662 } MSD, *PMSD; 663 664 665 /***********************/ 666 /* Model Molecule Data */ 667 /***********************/ 668 typedef struct Nlm_mmd 669 { 670 /* flag block */ 671 PFB pfbParent; 672 Byte bMe; 673 Byte bWhat; 674 Byte bUpdate; 675 Byte bReserved; 676 Int4Ptr pI4vFeatID; 677 PointerPtr ppvFeatData; 678 Int2 iNumFeats; 679 #ifdef BIG_CODE 680 Byte bReserved1; /* */ 681 Byte bUser1; 682 Int2 i2Reserved; 683 Int2 i2User; 684 #endif 685 /* bookkeeping block */ 686 Byte bVisible; /* to control show/off on MM level -- Yanli */ 687 PDNMM pdnmmLink; 688 ValNodePtr pMolDescr; /* the ASN.1 molecule descr */ 689 ValNodePtr pSeqId; 690 CharPtr pcMolName; /* from ASN.1 "chain" descr field */ 691 Int4 iChainId; 692 Int4 iGi; 693 Int4 iResCount; /* number of graphs */ 694 Int4 iIRBCount; /* number of inter-res bonds */ 695 CharPtr pcSeqId; 696 CharPtr pcSequence; 697 PDNMG pdnmgStartSelect, pdnmgEndSelect; /* used to select a range of residues in the molecule. lyg */ 698 Int4 iTargetRow; /* corresponding row in the original ASN1 alignment */ 699 /* data block */ 700 PDNMG pdnmgHead; /* the list of model graphs (children) */ 701 PVNMB pvnmbIRBHead; /* Inter-residue bonds in molecule (children) */ 702 FloatLoPtr PNTR ppflBoundBox; /* matrix 2x3 with max & min XYZs */ 703 ValNodePtr pvnContainedBy; 704 } MMD, *PMMD; 705 706 707 /********************/ 708 /* Model Graph Data */ 709 /********************/ 710 typedef struct Nlm_mgd 711 { 712 /* flag block */ 713 PFB pfbParent; 714 Byte bMe; 715 Byte bWhat; 716 Byte bUpdate; 717 Byte bReserved; 718 Int4Ptr pI4vFeatID; 719 PointerPtr ppvFeatData; 720 Int2 iNumFeats; 721 #ifdef BIG_CODE 722 Byte bReserved1; /* */ 723 Byte bUser1; 724 Int2 i2Reserved; 725 Int2 i2User; 726 #endif 727 /* bookkeeping block */ 728 Byte bVisible; /* control display at residue level */ 729 Byte bHighlighted; 730 Byte bNCBISecStru; 731 Byte bPDBSecStru; 732 PDNMG pdnmgLink; 733 Int2 iDomain; /* NCBI assigned domain number */ 734 CharPtr pcGraphName; /* PDB 3-letter code */ 735 CharPtr pcGraphNum; /* the PDB numbering string e.g . 38A */ 736 Int4 iIDict; /* index into dictionary */ 737 CharPtr pcIUPAC; /* IUPAC name X = invalid graph code */ 738 CharPtr pcNCBISS; /* pointer into the NCBI ss features string */ 739 CharPtr pcPDBSS; /* pointer into the PDB ss features string */ 740 CharPtr pcPDBComment; /* pointer into name of heterogen in dict */ 741 Int4 iAtomCount; 742 Int4 iBondCount; 743 /* data block */ 744 PVNMA pvnmaAHead; /* the atom list (children) */ 745 PVNMB pvnmbBHead; /* the bond list (children) */ 746 FloatLoPtr PNTR ppflBoundBox; /* matrix 2x3 with max & min XYZs */ 747 ValNodePtr pvnContainedBy; 748 BytePtr pbMasterReserved; 749 /* will contain list of pointers to PARS structures - "global" has choice = 0, 750 * "special style" has choice >= 1 */ 751 ValNodePtr pvnPARSList; 752 } MGD, *PMGD; 753 754 755 /*******************/ 756 /* Model Atom Data */ 757 /*******************/ 758 typedef struct Nlm_mad 759 { 760 /* flag block */ 761 PFB pfbParent; 762 Byte bMe; 763 Byte bWhat; 764 Byte bUpdate; 765 Byte bReserved; 766 Int4Ptr pI4vFeatID; 767 PointerPtr ppvFeatData; 768 Int2 iNumFeats; 769 #ifdef BIG_CODE 770 Byte bReserved1; /* */ 771 Byte bUser1; 772 Int2 i2Reserved; 773 Int2 i2User; 774 #endif 775 /* bookkeeping block */ 776 PVNMA pvnmaLink; /* element number is pvnmaLink->choice */ 777 CharPtr pcAName; /* PDB name in the DICTIONARY!! */ 778 Int2 iIndex; /* MMDB index */ 779 /* data block */ 780 ValNodePtr pvnBonds; 781 ValNodePtr pvnContainedBy; 782 PVNAL pvnalLocate; 783 }MAD, *PMAD; 784 785 786 /**********************/ 787 /* Atom Location Data */ 788 /**********************/ 789 typedef struct Nlm_ald 790 { 791 /* flag block */ 792 PFB pfbParent; 793 Byte bMe; 794 Byte bWhat; 795 Byte bUpdate; 796 Byte bReserved; 797 Int4Ptr pI4vFeatID; 798 PointerPtr ppvFeatData; 799 Int2 iNumFeats; 800 #ifdef BIG_CODE 801 Byte bReserved1; /* */ 802 Byte bUser1; 803 Int2 i2Reserved; 804 Int2 i2User; 805 #endif 806 struct Nlm_ald PNTR next; 807 PVNAL pvnalLink; /* link to get model id */ 808 Int4 iUniqueId; 809 Char cAltConf; /* if = " " */ 810 Int1 iCoordSet; /* index from ASN.1 model coord set */ 811 Int1 iFloatNo; 812 FloatLoPtr pflvData; 813 Pointer pGraphic; /* pointer to graphic segment */ 814 } ALD, *PALD; 815 816 817 /* pflvData is a vector containing... 818 its size is dependent on the amount of data 819 i.e. 3 = XYZ only 820 4 = XYZ + occupancy 821 5 = XYZ + occupancy + isotropic Temp 822 10 = XYZ + occupancy + anisotropic Temp 823 Indexed as follows... 824 [0] X; 825 [1] Y; 826 [2] Z; 827 [3] Occ; 828 [4] B11; 829 [5] B12; 830 [6] B13; 831 [7] B22; 832 [8] B23; 833 [9] B33; 834 */ 835 836 837 /*******************/ 838 /* Model Bond Data */ 839 /*******************/ 840 typedef struct Nlm_mbd 841 { 842 /* flag block */ 843 PFB pfbParent; 844 Byte bMe; 845 Byte bWhat; 846 Byte bUpdate; 847 Byte bReserved; 848 Int4Ptr pI4vFeatID; 849 PointerPtr ppvFeatData; 850 Int2 iNumFeats; 851 #ifdef BIG_CODE 852 Byte bReserved1; /* */ 853 Byte bUser1; 854 Int2 i2Reserved; 855 Int2 i2User; 856 #endif 857 /* bookkeeping block */ 858 PVNMB pvnmbLink; /* ASN.1 defined types is in pvnmbLink->choice */ 859 /* data block */ 860 PMAD pmadFrom; 861 PMAD pmadTo; 862 }MBD, *PMBD; 863 864 865 /*********************/ 866 /* Model Object Data */ 867 /*********************/ 868 typedef struct Nlm_mod 869 { 870 /* flag block */ 871 PFB pfbParent; 872 Byte bMe; 873 Byte bWhat; 874 Byte bUpdate; 875 Byte bReserved; 876 Int4Ptr pI4vFeatID; 877 PointerPtr ppvFeatData; 878 Int2 iNumFeats; 879 #ifdef BIG_CODE 880 Byte bReserved1; /* */ 881 Byte bUser1; 882 Int2 i2Reserved; 883 Int2 i2User; 884 #endif 885 /* bookkeeping block */ 886 PVNMO pvnmoLink; 887 ValNodePtr pvnContains; 888 struct Nlm_mld PNTR pmldCoordSet; 889 Byte bVisible; /* control object display to synchronize with its partner display -- Yanli */ 890 /* data block */ 891 Int4 iCoordNo; 892 FloatLoPtrPtr ppflObject; /* coordinate lists */ 893 UcharPtr pucSwap; /* same length as coord list */ 894 Int4 iTriNo; 895 Int4PtrPtr ppi4Triangles; /* triangles list */ 896 FloatLo flRadius; 897 Int2Ptr pi2vColor; /* colors for each triangle */ 898 /* cast a matrix Floating pt N x 3 for data */ 899 /* length 0 for sphere */ 900 /* 1 for cylinder */ 901 /* 7 for brick */ 902 /* n for surface */ 903 #ifdef VIEW_CODE 904 /* logic to pass surface as optimized t-mesh */ 905 /* regardless of order of points */ 906 /* can view surface as dots or as t-mesh */ 907 /* display block */ 908 #endif 909 }MOD, *PMOD; 910 911 912 /**********************/ 913 /* Model Density Data */ 914 /**********************/ 915 typedef struct Nlm_mdd 916 { 917 /* flag block */ 918 PFB pfbParent; 919 Byte bMe; 920 Byte bWhat; 921 Byte bUpdate; 922 Byte bReserved; 923 Int4Ptr pI4vFeatID; 924 PointerPtr ppvFeatData; 925 Int2 iNumFeats; 926 #ifdef BIG_CODE 927 Byte bReserved1; /* */ 928 Byte bUser1; 929 Int2 i2Reserved; 930 Int2 i2User; 931 #endif 932 /* bookkeeping block */ 933 PVNMD pvnmdLink; 934 struct Nlm_mld PNTR pmldCoordSet; 935 /* pointer to the ASN.1 data */ 936 /* data block */ 937 /* put the floating point Brick values into a matrix */ 938 /* cast the density matrix into XYZ points in a n x 3 matrix */ 939 /* make a connectivity matrix m x 2 of integer array indices */ 940 /* cast the contents into a ValNode matrix containing PFB's */ 941 ValNodePtr pvnContains; 942 #ifdef VIEW_CODE 943 /* display the Brick as lines */ 944 /* display the intensity as dots or connected lines */ 945 /* cast the intensity value into colors in an Int2 n-vector */ 946 /* cast the intensities into display layers - and Int2 n-vector */ 947 948 /* display block */ 949 #endif 950 }MDD, *PMDD; 951 952 953 /**********************/ 954 /*Model Location Data */ 955 /**********************/ 956 /* these hold each coordset's data 957 * can be either atomic, object or density data 958 * if Atomic, there needs to be a vector of 959 * pointers to each and every ALD in the model 960 * This vector allows indexing features to atom locs 961 */ 962 typedef struct Nlm_mld 963 { 964 /* tiny flag block */ 965 PMSD pmsdParent; /* Parent Structure*/ 966 struct Nlm_mld PNTR next; 967 Byte bSelected; /* for saving/conversion to other file formats */ 968 Byte bReserved; 969 Int2 iType; 970 Int2 iId; 971 CharPtr pcModelName; 972 CharPtr pcAltConf; /* A string of all AltConfs in model */ 973 Int2 iNoCoordSet; /* index from ASN.1 model coord set */ 974 PointerPtr ppAsnOrder; /* vector containing all PALD's if atomic data */ 975 PMOD pmodObject; /* if model coord set is object */ 976 PMDD pmddDensity; /* if model coord set is density */ 977 BiostrucModelPtr pbsmModel; 978 } MLD, *PMLD; 979 980 981 typedef BiostrucResidueGraphSetPtr PRGD; 982 typedef void (LIBCALLBACK * pNodeFunc) PROTO((PFB pfbThis,Int4 iModel, Int4 iIndex, Pointer ptr)); 983 984 /***********************/ 985 /* MMDBAPI */ 986 /* Function Prototypes */ 987 /***********************/ 988 989 #undef NLM_EXTERN 990 #ifdef NLM_IMPORT 991 #define NLM_EXTERN NLM_IMPORT 992 #else 993 #define NLM_EXTERN extern 994 #endif 995 996 #ifdef __cplusplus 997 extern "C" { 998 #endif 999 1000 PMBD LIBCALL NewMBD(void); 1001 PMAD LIBCALL NewMAD(void); 1002 PMLD LIBCALL NewMLD(void); 1003 PALD LIBCALL NewALD(void); 1004 PMGD LIBCALL NewMGD(void); 1005 PMMD LIBCALL NewMMD(void); 1006 PMSD LIBCALL NewMSD(void); 1007 PMOD LIBCALL NewMOD(void); 1008 PMDD LIBCALL NewMDD(void); 1009 PSFF LIBCALL NewSFF PROTO((void)); 1010 PSFD LIBCALL NewSFD PROTO((void)); 1011 PSFS LIBCALL NewSFS PROTO((void)); 1012 void LIBCALL FreeSFS PROTO((PSFS psfsThis)); 1013 void LIBCALL FreeSFF PROTO((PSFF psffThis)); 1014 void LIBCALL FreeSFD PROTO((PSFD psfdThis));void LIBCALL FreeMBD(PMBD pmbdThis); 1015 void LIBCALL FreeMAD(PMAD pmadThis); 1016 void LIBCALL FreeALD(PALD paldThis); 1017 void LIBCALL FreeMGD(PMGD pmgdThis); 1018 void LIBCALL FreeMMD(PMMD pmmdThis); 1019 void LIBCALL FreeMSD(PMSD pmsdThis); 1020 void LIBCALL FreeMOD(PMOD pmodThis); 1021 void LIBCALL FreeMDD(PMDD pmddThis); 1022 void LIBCALL FreeMLD(PMLD pmldThis); 1023 void LIBCALL FreeKeptModel(PMLD pmldThis); 1024 void LIBCALL FreeKeptFeature(BiostrucFeatureSetPtr pbsfsThis); 1025 PVNMB LIBCALL NewVNMB(PVNMB PNTR ppvnmbList, Int2 choice); 1026 PVNMO LIBCALL NewVNMO(PVNMO PNTR ppvnmoList, Int2 choice); 1027 PVNMD LIBCALL NewVNMD(PVNMD PNTR ppvnmdList, Int2 choice); 1028 PVNMA LIBCALL NewVNMA(PVNMA PNTR ppvnmaList, Int2 choice); 1029 PVNAL LIBCALL NewVNAL(PVNAL PNTR ppvnalList, Int2 choice); 1030 PDNMG LIBCALL NewDNMG(PDNMG PNTR ppdnmgList, Int2 choice); 1031 PDNMM LIBCALL NewDNMM(PDNMM PNTR ppdnmmList, Int2 choice); 1032 PDNMS LIBCALL NewDNMS(PDNMS PNTR ppdnmsList, Int2 choice); 1033 ValNodePtr LIBCALL FreeVNDataFn (ValNodePtr vnp, pFreeFunc freefn); 1034 void LIBCALL FreeListVNAL(PVNAL pvnalList); 1035 void LIBCALL FreeListDNML(PDNML pdnmlList); 1036 1037 PVNSFF LIBCALL NewVNSFF(PVNSFF PNTR ppvnsffList, Int2 choice); 1038 PDNSFS LIBCALL NewDNSFS(PDNSFS PNTR ppdnsfsList, Int2 choice); 1039 void LIBCALL FreeListDNSFS(PDNSFS pdnsfsList); 1040 void LIBCALL FreeListVNSFF(PVNSFF pvnsffList); 1041 1042 void LIBCALL FreeListDNSF(PDNSF pdnsfList); 1043 void LIBCALL FreeListVNMB(PVNMB pvnmbList); 1044 void LIBCALL FreeListVNMO(PVNMO pvnmoList); 1045 void LIBCALL FreeListVNMD(PVNMD pvnmdList); 1046 void LIBCALL FreeListVNMA(PVNMA pvnmaList); 1047 PDNMG LIBCALL FreeDNMG(PDNMG pdnmgList, PDNMG pdnmgThis); 1048 void LIBCALL FreeListDNMG(PDNMG pdnmgList); 1049 PDNMM LIBCALL FreeDNMM(PDNMM pdnmmList, PDNMM pdnmmThis); 1050 void LIBCALL FreeListDNMM(PDNMM pdnmmList); 1051 PDNMS LIBCALL FreeDNMS(PDNMS pdnmsList, PDNMS pdnmsThis); 1052 NLM_EXTERN void LIBCALL FreeListDNMS(PDNMS pdnmsList); 1053 void LIBCALL FreeAtomicModelAsnLists(AtomicCoordinatesPtr pacThis); 1054 NLM_EXTERN PRGD LIBCALL LoadDict(CharPtr pcDictName); 1055 1056 PMAD LIBCALL AtomFromMMDBIndex(PDNMS pdnmsList, Int2 iStru, Int2 iMol, Int2 iGraph, Int4 iAtom); 1057 CharPtr MyType(PFB pfbThis); 1058 PMGD LIBCALL GraphFromMMDBIndex(PDNMS pdnmsList, Int2 iStru, Int2 iMol, Int2 iGraph ); 1059 PMMD LIBCALL MolFromMMDBIndex(PDNMS pdnmsList, Int2 iStru, Int2 iMol); 1060 1061 BiostrucPtr LIBCALL FetchBS(CharPtr pcFetch, Int2 iType, Int4 mdlLvl, 1062 Int4 maxModels, Byte bExtent); 1063 Boolean LIBCALL AssignSurfaceContents(PDNMS pdnmsList, Int2 iModel, PFB pfbThis, ChemGraphPntrsPtr pcgpContents); 1064 void LIBCALL FreeSurfaceModelAsnList(SurfaceCoordinatesPtr pscThis); 1065 Boolean LIBCALL FillSurface(SurfaceCoordinatesPtr pscThis, PMOD pmodThis); 1066 Int2 LIBCALL BiostrucModel2ModelStruc( BiostrucModelPtr pbsmThis, PDNMS pdnmsThis, 1067 Int2 iChoice, Int2 iModelCount, Byte bExtent); 1068 ValNodePtr LIBCALL MakeChemGraphNodeList(PDNMS pdnmsThis, ChemGraphPntrsPtr pcgpThis); 1069 1070 ValNodePtr LIBCALL MakeRegionNodeList(PDNMS pdnmsThis, RegionPntrsPtr prgpThis); 1071 void LIBCALL ResolveAlignChain(PDNMS pdnmsThis); 1072 Boolean LIBCALL SetNodeFeatureData(PFB pfbThis, PSFD psfdThis); 1073 1074 /***************** modified 4/26/99 KA to handle VAST chains **************/ 1075 void LIBCALL InstallAlignedSlave(PDNMS pdnmsMaster, ChemGraphAlignmentPtr pcgaAlign, 1076 PSFD psfdThis, Boolean Chain, CharPtr SlaveChain); 1077 1078 PSFD LIBCALL InstallStrucFeature(PDNMS pdnmsThis, PDNSFS pdnsfsThis, BiostrucFeaturePtr pbsfThis, 1079 Boolean Chain, CharPtr SlaveChain); 1080 1081 Int2 LIBCALL BiostrucAddFeature(BiostrucFeatureSetPtr pbsfsThis, PDNMS pdnmsThis, 1082 Boolean Chain, CharPtr SlaveChain); 1083 /*************************************************************************/ 1084 1085 PDNTRN LIBCALL NewDNTRN(PDNTRN PNTR ppdntrnList, Int2 choice); 1086 void LIBCALL FreeDNTRN(PDNTRN pdntrnList); 1087 void LIBCALL TransformToDNTRN(PDNTRN PNTR pplist, TransformPtr transform); 1088 void LIBCALLBACK DoApplyTransform(PFB pfbThis, Int4 iModel, Int4 iIndex, Pointer ptr); 1089 void LIBCALLBACK DoReverseTransform(PFB pfbThis, Int4 iModel, Int4 iIndex, Pointer ptr); 1090 BiostrucAnnotSetPtr LIBCALL BiostrucAnnotSetGetByFid (BiostrucAnnotSetPtr basp, Int4 feature_id, Int4 feature_set_id); 1091 PDNMS LIBCALL FindLoadedBiostruc(CharPtr pcPDBID, Int4 iId); 1092 1093 /***************** modified 4/26/99 KA to handle VAST chains **************/ 1094 Boolean InstBSAnnotSet(BiostrucAnnotSetPtr pbsasThis, CharPtr JobID, Boolean Chain, CharPtr Path); 1095 1096 /****** DZ: moved from mkbioseqB.c 4/27/99 KA to support PruneBiostruc ******/ 1097 1098 Boolean LIBCALL isBiopoly(Int4 molecule_id, MoleculeGraphPtr currentbp); 1099 Boolean LIBCALL isHet(Int4 molecule_id, MoleculeGraphPtr currenthet); 1100 1101 /*************************************************************************/ 1102 1103 SeqAnnotPtr LIBCALL BiosToSeq (BiostrucAnnotSetPtr set, Boolean usePValue, 1104 Char* pdbname_master, Char* pdbname_slave); 1105 SeqAnnotPtr LIBCALL BiostrToSeqAnnotSet (BiostrucAnnotSetPtr set, 1106 Boolean usePValue, Char* pdbname_master); 1107 int LIBCALLBACK CompareScores(VoidPtr vp1, VoidPtr vp2); 1108 void LIBCALL VastTableSort(BiostrucFeatureSetPtr pbsfs, Int2 iSort); 1109 SeqAnnotPtr LIBCALL fnPBSFtoPSA (BiostrucFeaturePtr pbsfSelected); 1110 1111 Byte LIBCALL SetBondOrder(Byte bThis, Int2 iType); 1112 NLM_EXTERN PDNMS LIBCALL Biostruc2Modelstruc(PDNMS PNTR ppdnmsList, BiostrucPtr pbsBS, 1113 PRGD prgdDict, Byte bExtent, Int2 iChoice, 1114 CharPtr pcFetch, Int2 iType ); 1115 Int2 LIBCALL TraverseAll( DValNodePtr pdnModel, Int4 iModel, Int4 iIndex, 1116 Pointer ptr, pNodeFunc pfnCallMe); 1117 AlternateConformationIdsPtr LIBCALL AlternateConformationIdsFree (AlternateConformationIdsPtr ); 1118 1119 /* Function to retrieve Biostrucs from ASN.1 files */ 1120 NLM_EXTERN BiostrucPtr LIBCALL BiostrucAsnGet(AsnIoPtr aip, AsnTypePtr atp, Int4 mdlLvl, Int4 maxModels); 1121 1122 NLM_EXTERN Boolean LIBCALL BiostrucAvail (void); 1123 1124 #ifdef __cplusplus 1125 } 1126 #endif 1127 1128 #undef NLM_EXTERN 1129 #ifdef NLM_EXPORT 1130 #define NLM_EXTERN NLM_EXPORT 1131 #else 1132 #define NLM_EXTERN 1133 #endif 1134 1135 #endif 1136