1 /* @include ensontology ******************************************************* 2 ** 3 ** Ensembl Ontology functions 4 ** 5 ** @author Copyright (C) 1999 Ensembl Developers 6 ** @author Copyright (C) 2006 Michael K. Schuster 7 ** @version $Revision: 1.6 $ 8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core 9 ** @modified $Date: 2012/08/05 11:16:39 $ by $Author: mks $ 10 ** @@ 11 ** 12 ** This library is free software; you can redistribute it and/or 13 ** modify it under the terms of the GNU Lesser General Public 14 ** License as published by the Free Software Foundation; either 15 ** version 2.1 of the License, or (at your option) any later version. 16 ** 17 ** This library is distributed in the hope that it will be useful, 18 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 19 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 ** Lesser General Public License for more details. 21 ** 22 ** You should have received a copy of the GNU Lesser General Public 23 ** License along with this library; if not, write to the Free Software 24 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 25 ** MA 02110-1301, USA. 26 ** 27 ******************************************************************************/ 28 29 #ifndef ENSONTOLOGY_H 30 #define ENSONTOLOGY_H 31 32 /* ========================================================================= */ 33 /* ============================= include files ============================= */ 34 /* ========================================================================= */ 35 36 #include "ensbaseadaptor.h" 37 38 AJ_BEGIN_DECLS 39 40 41 42 43 /* ========================================================================= */ 44 /* =============================== constants =============================== */ 45 /* ========================================================================= */ 46 47 /* @const EnsPOntologytermadaptor ********************************************* 48 ** 49 ** Ensembl Ontology Term Adaptor. 50 ** Defined as an alias in EnsPBaseadaptor 51 ** 52 ** #alias EnsPBaseadaptor 53 ** ## 54 ******************************************************************************/ 55 56 #define EnsPOntologytermadaptor EnsPBaseadaptor 57 58 59 60 61 /* ========================================================================= */ 62 /* ============================== public data ============================== */ 63 /* ========================================================================= */ 64 65 /* @data EnsPOntologyadaptor ************************************************** 66 ** 67 ** Ensembl Ontology Adaptor 68 ** 69 ** @alias EnsSOntologyadaptor 70 ** @alias EnsOOntologyadaptor 71 ** 72 ** @attr Adaptor [EnsPBaseadaptor] Ensembl Base Adaptor 73 ** @attr CacheByIdentifier [AjPTable] Identifier cache 74 ** @attr CacheByNamespace [AjPTable] Name space cache 75 ** @@ 76 ******************************************************************************/ 77 78 typedef struct EnsSOntologyadaptor 79 { 80 EnsPBaseadaptor Adaptor; 81 AjPTable CacheByIdentifier; 82 AjPTable CacheByNamespace; 83 } EnsOOntologyadaptor; 84 85 #define EnsPOntologyadaptor EnsOOntologyadaptor* 86 87 88 89 90 /* @data EnsPOntology ********************************************************* 91 ** 92 ** Ensembl Ontology 93 ** 94 ** @alias EnsSOntology 95 ** @alias EnsOOntology 96 ** 97 ** @attr Use [ajuint] Use counter 98 ** @cc Bio::EnsEMBL::Storable 99 ** @attr Identifier [ajuint] SQL database-internal identifier 100 ** @attr Adaptor [EnsPOntologyadaptor] Ensembl Ontology Adaptor 101 ** @cc Bio::EnsEMBL::OntologyTerm 102 ** @attr Name [AjPStr] Name 103 ** @attr Space [AjPStr] Name space 104 ** @@ 105 ******************************************************************************/ 106 107 typedef struct EnsSOntology 108 { 109 ajuint Use; 110 ajuint Identifier; 111 EnsPOntologyadaptor Adaptor; 112 AjPStr Name; 113 AjPStr Space; 114 } EnsOOntology; 115 116 #define EnsPOntology EnsOOntology* 117 118 119 120 121 /* @data EnsPOntologysynonym ************************************************** 122 ** 123 ** Ensembl Ontology Synonym 124 ** 125 ** @alias EnsSOntologysynonym 126 ** @alias EnsOOntologysynonym 127 ** 128 ** @attr Use [ajuint] Use counter 129 ** @cc Bio::EnsEMBL::Storable 130 ** @attr Identifier [ajuint] SQL database-internal identifier 131 ** @attr Adaptor [EnsPOntologytermadaptor] Ensembl Ontology Term Adaptor 132 ** @cc Bio::EnsEMBL::OntologyTerm 133 ** @attr Name [AjPStr] Name 134 ** @@ 135 ******************************************************************************/ 136 137 typedef struct EnsSOntologysynonym 138 { 139 ajuint Use; 140 ajuint Identifier; 141 EnsPOntologytermadaptor Adaptor; 142 AjPStr Name; 143 } EnsOOntologysynonym; 144 145 #define EnsPOntologysynonym EnsOOntologysynonym* 146 147 148 149 150 /* @data EnsPOntologyterm ***************************************************** 151 ** 152 ** Ensembl Ontology Term 153 ** 154 ** @alias EnsSOntologyterm 155 ** @alias EnsOOntologyterm 156 ** 157 ** @attr Use [ajuint] Use counter 158 ** @cc Bio::EnsEMBL::Storable 159 ** @attr Identifier [ajuint] SQL database-internal identifier 160 ** @attr Adaptor [EnsPOntologytermadaptor] Ensembl Ontology Term Adaptor 161 ** @cc Bio::EnsEMBL::OntologyTerm 162 ** @attr Ontology [EnsPOntology] Ensembl Ontology 163 ** @attr Accession [AjPStr] Accession 164 ** @attr Definition [AjPStr] Definition 165 ** @attr Name [AjPStr] Name 166 ** @attr Subsets [AjPStr] Subsets 167 ** @attr Children [AjPTable] AJAX Table of child Ensembl Ontology Term objects 168 ** @attr Parents [AjPTable] AJAX Table of parent Ensembl Ontology Term objects 169 ** @attr Ontologysynonyms [AjPList] 170 ** AJAX List of Ensembl Ontology Synonym objects 171 ** @@ 172 ******************************************************************************/ 173 174 typedef struct EnsSOntologyterm 175 { 176 ajuint Use; 177 ajuint Identifier; 178 EnsPOntologytermadaptor Adaptor; 179 EnsPOntology Ontology; 180 AjPStr Accession; 181 AjPStr Definition; 182 AjPStr Name; 183 AjPStr Subsets; 184 AjPTable Children; 185 AjPTable Parents; 186 AjPList Ontologysynonyms; 187 } EnsOOntologyterm; 188 189 #define EnsPOntologyterm EnsOOntologyterm* 190 191 192 193 194 /* ========================================================================= */ 195 /* =========================== public functions ============================ */ 196 /* ========================================================================= */ 197 198 /* 199 ** Prototype definitions 200 */ 201 202 /* Ensembl Ontology */ 203 204 EnsPOntology ensOntologyNewCpy(const EnsPOntology ontology); 205 206 EnsPOntology ensOntologyNewIni(EnsPOntologyadaptor oa, 207 ajuint identifier, 208 AjPStr name, 209 AjPStr space); 210 211 EnsPOntology ensOntologyNewRef(EnsPOntology ontology); 212 213 void ensOntologyDel(EnsPOntology *Pontology); 214 215 EnsPOntologyadaptor ensOntologyGetAdaptor(const EnsPOntology ontology); 216 217 ajuint ensOntologyGetIdentifier(const EnsPOntology ontology); 218 219 AjPStr ensOntologyGetName(const EnsPOntology ontology); 220 221 AjPStr ensOntologyGetSpace(const EnsPOntology ontology); 222 223 AjBool ensOntologySetAdaptor(EnsPOntology ontology, 224 EnsPOntologyadaptor oa); 225 226 AjBool ensOntologySetIdentifier(EnsPOntology ontology, 227 ajuint identifier); 228 229 AjBool ensOntologySetName(EnsPOntology ontology, 230 AjPStr name); 231 232 AjBool ensOntologySetSpace(EnsPOntology ontology, 233 AjPStr space); 234 235 AjBool ensOntologyTrace(const EnsPOntology ontology, ajuint level); 236 237 size_t ensOntologyCalculateMemsize(const EnsPOntology ontology); 238 239 /* Ensembl Ontology Adaptor */ 240 241 EnsPOntologyadaptor ensRegistryGetOntologyadaptor( 242 EnsPDatabaseadaptor dba); 243 244 EnsPOntologyadaptor ensOntologyadaptorNew( 245 EnsPDatabaseadaptor dba); 246 247 void ensOntologyadaptorDel(EnsPOntologyadaptor *Poa); 248 249 EnsPBaseadaptor ensOntologyadaptorGetBaseadaptor( 250 EnsPOntologyadaptor oa); 251 252 EnsPDatabaseadaptor ensOntologyadaptorGetDatabaseadaptor( 253 EnsPOntologyadaptor oa); 254 255 AjBool ensOntologyadaptorFetchAll(EnsPOntologyadaptor oa, 256 AjPList ontologies); 257 258 AjBool ensOntologyadaptorFetchAllbyName(EnsPOntologyadaptor oa, 259 const AjPStr name, 260 AjPList ontologies); 261 262 AjBool ensOntologyadaptorFetchByIdentifier(EnsPOntologyadaptor oa, 263 ajuint identifier, 264 EnsPOntology *Pontology); 265 266 AjBool ensOntologyadaptorFetchByName(EnsPOntologyadaptor oa, 267 const AjPStr name, 268 const AjPStr space, 269 EnsPOntology *Pontology); 270 271 /* Ensembl Ontology Synonym */ 272 273 EnsPOntologysynonym ensOntologysynonymNewCpy(const EnsPOntologysynonym os); 274 275 EnsPOntologysynonym ensOntologysynonymNewIni(EnsPOntologytermadaptor ota, 276 ajuint identifier, 277 AjPStr name); 278 279 EnsPOntologysynonym ensOntologysynonymNewRef(EnsPOntologysynonym os); 280 281 void ensOntologysynonymDel(EnsPOntologysynonym *Pos); 282 283 EnsPOntologytermadaptor ensOntologysynonymGetAdaptor( 284 const EnsPOntologysynonym os); 285 286 ajuint ensOntologysynonymGetIdentifier( 287 const EnsPOntologysynonym os); 288 289 AjPStr ensOntologysynonymGetName( 290 const EnsPOntologysynonym os); 291 292 AjBool ensOntologysynonymSetAdaptor(EnsPOntologysynonym os, 293 EnsPOntologytermadaptor ota); 294 295 AjBool ensOntologysynonymSetIdentifier(EnsPOntologysynonym os, 296 ajuint identifier); 297 298 AjBool ensOntologysynonymSetName(EnsPOntologysynonym os, 299 AjPStr name); 300 301 AjBool ensOntologysynonymTrace(const EnsPOntologysynonym os, ajuint level); 302 303 size_t ensOntologysynonymCalculateMemsize(const EnsPOntologysynonym os); 304 305 /* Ensembl Ontology Term */ 306 307 EnsPOntologyterm ensOntologytermNewCpy(const EnsPOntologyterm ot); 308 309 EnsPOntologyterm ensOntologytermNewIni(EnsPOntologytermadaptor ota, 310 ajuint identifier, 311 EnsPOntology ontology, 312 AjPStr accession, 313 AjPStr description, 314 AjPStr name, 315 AjPStr subsets); 316 317 EnsPOntologyterm ensOntologytermNewRef(EnsPOntologyterm ot); 318 319 void ensOntologytermDel(EnsPOntologyterm *Pot); 320 321 AjPStr ensOntologytermGetAccession(const EnsPOntologyterm ot); 322 323 EnsPOntologytermadaptor ensOntologytermGetAdaptor(const EnsPOntologyterm ot); 324 325 AjPStr ensOntologytermGetDefinition(const EnsPOntologyterm ot); 326 327 ajuint ensOntologytermGetIdentifier(const EnsPOntologyterm ot); 328 329 AjPStr ensOntologytermGetName(const EnsPOntologyterm ot); 330 331 EnsPOntology ensOntologytermGetOntology(const EnsPOntologyterm ot); 332 333 AjPStr ensOntologytermGetSubsets(const EnsPOntologyterm ot); 334 335 const AjPList ensOntologytermLoadOntologysynonyms(EnsPOntologyterm ot); 336 337 AjBool ensOntologytermSetAccession(EnsPOntologyterm ot, 338 AjPStr accession); 339 340 AjBool ensOntologytermSetAdaptor(EnsPOntologyterm ot, 341 EnsPOntologytermadaptor ota); 342 343 AjBool ensOntologytermSetDefinition(EnsPOntologyterm ot, 344 AjPStr description); 345 346 AjBool ensOntologytermSetIdentifier(EnsPOntologyterm ot, 347 ajuint identifier); 348 349 AjBool ensOntologytermSetName(EnsPOntologyterm ot, 350 AjPStr name); 351 352 AjBool ensOntologytermSetOntology(EnsPOntologyterm ot, 353 EnsPOntology ontology); 354 355 AjBool ensOntologytermSetSubsets(EnsPOntologyterm ot, 356 AjPStr subsets); 357 358 AjBool ensOntologytermTrace(const EnsPOntologyterm ot, ajuint level); 359 360 size_t ensOntologytermCalculateMemsize(const EnsPOntologyterm ot); 361 362 /* Ensembl Ontology Term Adaptor */ 363 364 EnsPOntologytermadaptor ensRegistryGetOntologytermadaptor( 365 EnsPDatabaseadaptor dba); 366 367 EnsPOntologytermadaptor ensOntologytermadaptorNew( 368 EnsPDatabaseadaptor dba); 369 370 void ensOntologytermadaptorDel(EnsPOntologytermadaptor *Pota); 371 372 EnsPBaseadaptor ensOntologytermadaptorGetBaseadaptor( 373 EnsPOntologytermadaptor ota); 374 375 EnsPDatabaseadaptor ensOntologytermadaptorGetDatabaseadaptor( 376 EnsPOntologytermadaptor ota); 377 378 AjBool ensOntologytermadaptorFetchAll( 379 EnsPOntologytermadaptor ota, 380 AjPList ots); 381 382 AjBool ensOntologytermadaptorFetchAllbyAncestor( 383 EnsPOntologytermadaptor ota, 384 EnsPOntologyterm ot, 385 AjPList ots); 386 387 AjBool ensOntologytermadaptorFetchAllbyChild( 388 EnsPOntologytermadaptor ota, 389 EnsPOntologyterm ot, 390 AjPList ots); 391 392 AjBool ensOntologytermadaptorFetchAllbyDescendant( 393 EnsPOntologytermadaptor ota, 394 EnsPOntologyterm ot, 395 const AjPStr subset, 396 AjBool closest, 397 AjBool zerodistance, 398 AjPList ots); 399 400 AjBool ensOntologytermadaptorFetchAllbyName( 401 EnsPOntologytermadaptor ota, 402 const AjPStr termname, 403 const AjPStr ontologyname, 404 AjPList ots); 405 406 AjBool ensOntologytermadaptorFetchAllbyParent( 407 EnsPOntologytermadaptor ota, 408 EnsPOntologyterm ot, 409 AjPList ots); 410 411 AjBool ensOntologytermadaptorFetchByAccession( 412 EnsPOntologytermadaptor ota, 413 const AjPStr accession, 414 EnsPOntologyterm *Pot); 415 416 AjBool ensOntologytermadaptorFetchByIdentifier( 417 EnsPOntologytermadaptor ota, 418 ajuint identifier, 419 EnsPOntologyterm *Pot); 420 421 AjBool ensOntologytermadaptorRetrieveAllOntologysynonyms( 422 EnsPOntologytermadaptor ota, 423 const EnsPOntologyterm ot, 424 AjPList oss); 425 426 /* 427 ** End of prototype definitions 428 */ 429 430 431 432 433 AJ_END_DECLS 434 435 #endif /* !ENSONTOLOGY_H */ 436