1 /* @include ensalign ********************************************************** 2 ** 3 ** Ensembl Alignment functions 4 ** 5 ** @author Copyright (C) 1999 Ensembl Developers 6 ** @author Copyright (C) 2006 Michael K. Schuster 7 ** @version $Revision: 1.11 $ 8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core 9 ** @modified $Date: 2012/08/05 10:22:52 $ 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 ENSALIGN_H 30 #define ENSALIGN_H 31 32 /* ========================================================================= */ 33 /* ============================= include files ============================= */ 34 /* ========================================================================= */ 35 36 #include "ensfeature.h" 37 38 AJ_BEGIN_DECLS 39 40 41 42 43 /* ========================================================================= */ 44 /* =============================== constants =============================== */ 45 /* ========================================================================= */ 46 47 /* @const EnsPDnaalignfeatureadaptor ****************************************** 48 ** 49 ** Ensembl DNA Align Feature Adaptor. 50 ** Defined as an alias in EnsPFeatureadaptor. 51 ** 52 ** #alias EnsPFeatureadaptor 53 ** 54 ** #cc Bio::EnsEMBL::DBSQL::DnaAlignFeatureAdaptor 55 ** ## 56 ******************************************************************************/ 57 58 #define EnsPDnaalignfeatureadaptor EnsPFeatureadaptor 59 60 61 62 63 /* @const EnsPProteinalignfeatureadaptor ************************************** 64 ** 65 ** Ensembl Protein Align Feature Adaptor. 66 ** Defined as an alias in EnsPFeatureadaptor. 67 ** 68 ** #alias EnsPFeatureadaptor 69 ** 70 ** #cc Bio::EnsEMBL::DBSQL::ProteinAlignFeatureAdaptor 71 ** ## 72 ******************************************************************************/ 73 74 #define EnsPProteinalignfeatureadaptor EnsPFeatureadaptor 75 76 77 78 79 /* @const EnsPSupportingfeatureadaptor **************************************** 80 ** 81 ** Ensembl Supporting Feature Adaptor. 82 ** Defined as an alias in EnsPDatabaseadaptor. 83 ** 84 ** #alias EnsPDatabaseadaptor 85 ** 86 ** #cc Bio::EnsEMBL::DBSQL::SupportingFeatureAdaptor 87 ** ## 88 ******************************************************************************/ 89 90 #define EnsPSupportingfeatureadaptor EnsPDatabaseadaptor 91 92 93 94 95 /* @enum EnsEBasealignfeatureType ********************************************* 96 ** 97 ** Ensembl Base Align Feature Type enumeration 98 ** 99 ** @value ensEBasealignfeatureTypeNULL Null 100 ** @value ensEBasealignfeatureTypeDNA DNA alignment 101 ** @value ensEBasealignfeatureTypeProtein Protein alignment 102 ** @@ 103 ******************************************************************************/ 104 105 typedef enum EnsOBasealignfeatureType 106 { 107 ensEBasealignfeatureTypeNULL, 108 ensEBasealignfeatureTypeDNA, 109 ensEBasealignfeatureTypeProtein 110 } EnsEBasealignfeatureType; 111 112 113 114 115 /* ========================================================================= */ 116 /* ============================== public data ============================== */ 117 /* ========================================================================= */ 118 119 /* @data EnsPBasealignfeature ************************************************* 120 ** 121 ** Ensembl Base Align Feature. 122 ** 123 ** @alias EnsSBasealignfeature 124 ** @alias EnsOBasealignfeature 125 ** 126 ** @attr Use [ajuint] Use counter 127 ** @cc Bio::EnsEMBL::Storable 128 ** @attr Identifier [ajuint] SQL database-internal identifier 129 ** @attr Dnaalignfeatureadaptor [EnsPDnaalignfeatureadaptor] 130 ** Ensembl DNA Align Feature Adaptor 131 ** @attr Proteinalignfeatureadaptor [EnsPProteinalignfeatureadaptor] 132 ** Ensembl Protein Align Feature Adaptor 133 ** @cc Bio::EnsEMBL::Featurepair 134 ** @attr Featurepair [EnsPFeaturepair] Ensembl Feature Pair 135 ** @cc Bio::EnsEMBL::Basealignfeature 136 ** @attr FobjectGetFeaturepair [EnsPFeaturepair function] 137 ** Ensembl Object Get Ensembl Feature Pair function 138 ** @attr Cigar [AjPStr] CIGAR line 139 ** @attr Type [EnsEBasealignfeatureType] Type 140 ** @attr Alignmentlength [ajuint] Target component alignment length 141 ** @attr Pairdnaalignfeatureidentifier [ajuint] 142 ** Pair DNA Align Feature identifier 143 ** @attr Padding [ajuint] Padding to alignment boundary 144 ** @@ 145 ******************************************************************************/ 146 147 typedef struct EnsSBasealignfeature 148 { 149 ajuint Use; 150 ajuint Identifier; 151 EnsPDnaalignfeatureadaptor Dnaalignfeatureadaptor; 152 EnsPProteinalignfeatureadaptor Proteinalignfeatureadaptor; 153 EnsPFeaturepair Featurepair; 154 EnsPFeaturepair (*FobjectGetFeaturepair) (const void *object); 155 AjPStr Cigar; 156 EnsEBasealignfeatureType Type; 157 ajuint Alignmentlength; 158 ajuint Pairdnaalignfeatureidentifier; 159 ajuint Padding; 160 } EnsOBasealignfeature; 161 162 #define EnsPBasealignfeature EnsOBasealignfeature* 163 164 165 166 167 /* ========================================================================= */ 168 /* =========================== public functions ============================ */ 169 /* ========================================================================= */ 170 171 /* 172 ** Prototype definitions 173 */ 174 175 /* Ensembl Base Align Feature */ 176 177 EnsPBasealignfeature ensBasealignfeatureNewCpy( 178 const EnsPBasealignfeature baf); 179 180 EnsPBasealignfeature ensBasealignfeatureNewFps( 181 EnsPFeaturepair fp, 182 AjPStr cigar, 183 AjPList fps, 184 EnsEBasealignfeatureType type, 185 ajuint pair); 186 187 EnsPBasealignfeature ensBasealignfeatureNewIniD( 188 EnsPDnaalignfeatureadaptor dafa, 189 ajuint identifier, 190 EnsPFeaturepair fp, 191 AjPStr cigar, 192 ajuint pair); 193 194 EnsPBasealignfeature ensBasealignfeatureNewIniP( 195 EnsPProteinalignfeatureadaptor pafa, 196 ajuint identifier, 197 EnsPFeaturepair fp, 198 AjPStr cigar); 199 200 EnsPBasealignfeature ensBasealignfeatureNewRef( 201 EnsPBasealignfeature baf); 202 203 void ensBasealignfeatureDel( 204 EnsPBasealignfeature *Pbaf); 205 206 AjPStr ensBasealignfeatureGetCigar( 207 const EnsPBasealignfeature baf); 208 209 EnsPDnaalignfeatureadaptor ensBasealignfeatureGetDnaalignfeatureadaptor( 210 const EnsPBasealignfeature baf); 211 212 EnsPFeaturepair ensBasealignfeatureGetFeaturepair( 213 const EnsPBasealignfeature baf); 214 215 ajuint ensBasealignfeatureGetIdentifier( 216 const EnsPBasealignfeature baf); 217 218 ajuint ensBasealignfeatureGetPairdnaalignfeatureidentifier( 219 const EnsPBasealignfeature baf); 220 221 EnsPProteinalignfeatureadaptor ensBasealignfeatureGetProteinalignfeatureadaptor( 222 const EnsPBasealignfeature baf); 223 224 EnsEBasealignfeatureType ensBasealignfeatureGetType( 225 const EnsPBasealignfeature baf); 226 227 AjBool ensBasealignfeatureSetFeaturepair(EnsPBasealignfeature baf, 228 EnsPFeaturepair fp); 229 230 EnsPFeature ensBasealignfeatureGetFeature(const EnsPBasealignfeature baf); 231 232 void *ensBasealignfeatureCalculateAdaptor(const EnsPBasealignfeature baf); 233 234 ajuint ensBasealignfeatureCalculateAlignmentlength(EnsPBasealignfeature baf); 235 236 size_t ensBasealignfeatureCalculateMemsize(const EnsPBasealignfeature baf); 237 238 ajuint ensBasealignfeatureCalculateUnitSource(const EnsPBasealignfeature baf); 239 240 ajuint ensBasealignfeatureCalculateUnitTarget(const EnsPBasealignfeature baf); 241 242 EnsPBasealignfeature ensBasealignfeatureTransfer( 243 EnsPBasealignfeature baf, 244 EnsPSlice slice); 245 246 EnsPBasealignfeature ensBasealignfeatureTransform( 247 EnsPBasealignfeature baf, 248 const AjPStr csname, 249 const AjPStr csversion); 250 251 AjBool ensBasealignfeatureTrace(const EnsPBasealignfeature baf, ajuint level); 252 253 AjBool ensBasealignfeatureFetchAllFeaturepairs(const EnsPBasealignfeature baf, 254 AjPList fps); 255 256 /* AJAX List of Ensembl Base Align Feature objects */ 257 258 AjBool ensListBasealignfeatureSortSourceEndAscending(AjPList bafs); 259 260 AjBool ensListBasealignfeatureSortSourceEndDescending(AjPList bafs); 261 262 AjBool ensListBasealignfeatureSortSourceStartAscending(AjPList bafs); 263 264 AjBool ensListBasealignfeatureSortSourceStartDescending(AjPList bafs); 265 266 /* Ensembl DNA Align Feature Adaptor */ 267 268 EnsPDnaalignfeatureadaptor ensRegistryGetDnaalignfeatureadaptor( 269 EnsPDatabaseadaptor dba); 270 271 EnsPDnaalignfeatureadaptor ensDnaalignfeatureadaptorNew( 272 EnsPDatabaseadaptor dba); 273 274 void ensDnaalignfeatureadaptorDel( 275 EnsPDnaalignfeatureadaptor *Pdafa); 276 277 EnsPBaseadaptor ensDnaalignfeatureadaptorGetBaseadaptor( 278 EnsPDnaalignfeatureadaptor dafa); 279 280 EnsPDatabaseadaptor ensDnaalignfeatureadaptorGetDatabaseadaptor( 281 EnsPDnaalignfeatureadaptor dafa); 282 283 EnsPFeatureadaptor ensDnaalignfeatureadaptorGetFeatureadaptor( 284 EnsPDnaalignfeatureadaptor dafa); 285 286 AjBool ensDnaalignfeatureadaptorFetchAllbyHitname( 287 EnsPDnaalignfeatureadaptor dafa, 288 const AjPStr hitname, 289 const AjPStr anname, 290 AjPList bafs); 291 292 AjBool ensDnaalignfeatureadaptorFetchAllbyHitunversioned( 293 EnsPDnaalignfeatureadaptor dafa, 294 const AjPStr hitname, 295 const AjPStr anname, 296 AjPList bafs); 297 298 AjBool ensDnaalignfeatureadaptorFetchAllbySlicecoverage( 299 EnsPDnaalignfeatureadaptor dafa, 300 EnsPSlice slice, 301 float coverage, 302 const AjPStr anname, 303 AjPList bafs); 304 305 AjBool ensDnaalignfeatureadaptorFetchAllbySliceidentity( 306 EnsPDnaalignfeatureadaptor dafa, 307 EnsPSlice slice, 308 float identity, 309 const AjPStr anname, 310 AjPList bafs); 311 312 AjBool ensDnaalignfeatureadaptorFetchAllbySliceexternaldatabasename( 313 EnsPDnaalignfeatureadaptor dafa, 314 EnsPSlice slice, 315 const AjPStr edbname, 316 const AjPStr anname, 317 AjPList bafs); 318 319 AjBool ensDnaalignfeatureadaptorFetchByIdentifier( 320 EnsPDnaalignfeatureadaptor dafa, 321 ajuint identifier, 322 EnsPBasealignfeature *Pbaf); 323 324 AjBool ensDnaalignfeatureadaptorRetrieveAllIdentifiers( 325 EnsPDnaalignfeatureadaptor dafa, 326 AjPList identifiers); 327 328 /* Ensembl Protein Align Feature Adaptor */ 329 330 EnsPProteinalignfeatureadaptor ensRegistryGetProteinalignfeatureadaptor( 331 EnsPDatabaseadaptor dba); 332 333 EnsPProteinalignfeatureadaptor ensProteinalignfeatureadaptorNew( 334 EnsPDatabaseadaptor dba); 335 336 void ensProteinalignfeatureadaptorDel( 337 EnsPProteinalignfeatureadaptor *Ppafa); 338 339 EnsPBaseadaptor ensProteinalignfeatureadaptorGetBaseadaptor( 340 EnsPProteinalignfeatureadaptor pafa); 341 342 EnsPDatabaseadaptor ensProteinalignfeatureadaptorGetDatabaseadaptor( 343 EnsPProteinalignfeatureadaptor pafa); 344 345 EnsPFeatureadaptor ensProteinalignfeatureadaptorGetFeatureadaptor( 346 EnsPProteinalignfeatureadaptor pafa); 347 348 AjBool ensProteinalignfeatureadaptorFetchAllbyHitname( 349 EnsPProteinalignfeatureadaptor pafa, 350 const AjPStr hitname, 351 const AjPStr anname, 352 AjPList bafs); 353 354 AjBool ensProteinalignfeatureadaptorFetchAllbyHitunversioned( 355 EnsPProteinalignfeatureadaptor pafa, 356 const AjPStr hitname, 357 const AjPStr anname, 358 AjPList bafs); 359 360 AjBool ensProteinalignfeatureadaptorFetchAllbySlicecoverage( 361 EnsPProteinalignfeatureadaptor pafa, 362 EnsPSlice slice, 363 float coverage, 364 const AjPStr anname, 365 AjPList bafs); 366 367 AjBool ensProteinalignfeatureadaptorFetchAllbySliceexternaldatabasename( 368 EnsPProteinalignfeatureadaptor pafa, 369 EnsPSlice slice, 370 const AjPStr edbname, 371 const AjPStr anname, 372 AjPList bafs); 373 374 AjBool ensProteinalignfeatureadaptorFetchAllbySliceidentity( 375 EnsPProteinalignfeatureadaptor pafa, 376 EnsPSlice slice, 377 float identity, 378 const AjPStr anname, 379 AjPList bafs); 380 381 AjBool ensProteinalignfeatureadaptorFetchByIdentifier( 382 EnsPProteinalignfeatureadaptor pafa, 383 ajuint identifier, 384 EnsPBasealignfeature *Pbaf); 385 386 AjBool ensProteinalignfeatureadaptorRetrieveAllIdentifiers( 387 EnsPProteinalignfeatureadaptor pafa, 388 AjPList identifiers); 389 390 /* Ensembl Supporting Feature Adaptor */ 391 392 EnsPSupportingfeatureadaptor ensRegistryGetSupportingfeatureadaptor( 393 EnsPDatabaseadaptor dba); 394 395 EnsPDatabaseadaptor ensSupportingfeatureadaptorGetDatabaseadaptor( 396 EnsPSupportingfeatureadaptor sfa); 397 398 AjBool ensSupportingfeatureadaptorFetchAllbyExon( 399 EnsPSupportingfeatureadaptor sfa, 400 EnsPExon exon, 401 AjPList bafs); 402 403 AjBool ensSupportingfeatureadaptorFetchAllbyTranscript( 404 EnsPSupportingfeatureadaptor sfa, 405 EnsPTranscript transcript, 406 AjPList bafs); 407 408 /* 409 ** End of prototype definitions 410 */ 411 412 413 414 415 AJ_END_DECLS 416 417 #endif /* !ENSALIGN_H */ 418