1 /* @source ensvariation *******************************************************
2 **
3 ** Ensembl Genetic Variation functions
4 **
5 ** @author Copyright (C) 1999 Ensembl Developers
6 ** @author Copyright (C) 2006 Michael K. Schuster
7 ** @version $Revision: 1.57 $
8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core
9 ** @modified $Date: 2013/02/17 13:02:11 $ 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 /* ========================================================================= */
30 /* ============================= include files ============================= */
31 /* ========================================================================= */
32 
33 #include "ensgvbaseadaptor.h"
34 #include "ensgvdatabaseadaptor.h"
35 #include "ensgvvariation.h"
36 #include "ensvariation.h"
37 #include "enstranscript.h"
38 
39 
40 
41 
42 /* ========================================================================= */
43 /* =============================== constants =============================== */
44 /* ========================================================================= */
45 
46 
47 
48 
49 /* ========================================================================= */
50 /* =========================== global variables ============================ */
51 /* ========================================================================= */
52 
53 
54 
55 
56 /* ========================================================================= */
57 /* ============================= private data ============================== */
58 /* ========================================================================= */
59 
60 
61 
62 
63 /* ========================================================================= */
64 /* =========================== private constants =========================== */
65 /* ========================================================================= */
66 
67 /* @conststatic gvconsequenceKType ********************************************
68 **
69 ** Array of Ensembl Genetic Variation consequence codes
70 **
71 ** The special consequence type, SARA, that only applies to the effect of the
72 ** Allele objects, not Variation objects and is equivalent to Same As Reference
73 ** Allele, meaning that the Allele is the same as in reference sequence, so has
74 ** no effect but it is not stored anywhere in the database and need no
75 ** conversion at all when creating the Ensembl Variation Feature object,
76 ** thus the absence in the array.
77 **
78 ******************************************************************************/
79 
80 const char *const gvconsequenceKType[] =
81 {
82     "ESSENTIAL_SPLICE_SITE",  /* 1 <<  0 =       1 */
83     "STOP_GAINED",            /* 1 <<  1 =       2 */
84     "STOP_LOST",              /* 1 <<  2 =       4 */
85     "COMPLEX_INDEL",          /* 1 <<  3 =       8 */
86     "FRAMESHIFT_CODING",      /* 1 <<  4 =      16 */
87     "NON_SYNONYMOUS_CODING",  /* 1 <<  5 =      32 */
88     "SPLICE_SITE",            /* 1 <<  6 =      64 */
89     "PARTIAL_CODON",          /* 1 <<  7 =     128 */
90     "SYNONYMOUS_CODING",      /* 1 <<  8 =     256 */
91     "REGULATORY_REGION",      /* 1 <<  9 =     512 */
92     "WITHIN_MATURE_miRNA",    /* 1 << 10 =    1024 */
93     "5PRIME_UTR",             /* 1 << 11 =    2048 */
94     "3PRIME_UTR",             /* 1 << 12 =    2094 */
95     "UTR",                    /* 1 << 13 =    4096 */
96     "INTRONIC",               /* 1 << 14 =    8192 */
97     "NMD_TRANSCRIPT",         /* 1 << 15 =   16384 */
98     "WITHIN_NON_CODING_GENE", /* 1 << 16 =   32768 */
99     "UPSTREAM",               /* 1 << 17 =   65536 */
100     "DOWNSTREAM",             /* 1 << 18 =  131072 */
101     "HGMD_MUTATION",          /* 1 << 19 =  262144 */
102     "NO_CONSEQUENCE",         /* 1 << 20 =  524288 */
103     "INTERGENIC",             /* 1 << 21 = 1048576 */
104     "_",                      /* 1 << 22 = 2097152 */
105     (const char *) NULL
106 };
107 
108 
109 
110 
111 /* @conststatic gvconsequenceKDescription *************************************
112 **
113 ** Array of Ensembl Genetic Variation consequence descriptions
114 **
115 ******************************************************************************/
116 
117 const char *const gvconsequenceKDescription[] =
118 {
119     "In the first 2 or the last 2 basepairs of an intron",
120     "In coding sequence, resulting in the gain of a stop codon",
121     "In coding sequence, resulting in the loss of a stop codon",
122     "Insertion or deletion that spans an exon/intron or coding "
123     "sequence/UTR border",
124     "In coding sequence, resulting in a frameshift",
125     "In coding sequence and results in an amino acid change in the encoded "
126     "peptide sequence",
127     "1-3 bps into an exon or 3-8 bps into an intron",
128     "Located within the final, incomplete codon of a transcript whose "
129     "end coordinate is unknown",
130     "In coding sequence, not resulting in an amino acid change "
131     "(silent mutation)",
132     "In regulatory region annotated by Ensembl",
133     "Located within a microRNA",
134     "In 5 prime untranslated region",
135     "In 3 prime untranslated region",
136     "In intron",
137     "Located within a transcript predicted to undergo nonsense-mediated decay",
138     "Located within a gene that does not code for a protein",
139     "Within 5 kb upstream of the 5 prime end of a transcript",
140     "Within 5 kb downstream of the 3 prime end of a transcript",
141     "Mutation from the HGMD database - consequence unknown",
142     "More than 5 kb either upstream or downstream of a transcript",
143     (const char *) NULL
144 };
145 
146 
147 
148 
149 /* @conststatic gvconsequenceKTranslation *************************************
150 **
151 ** Array of consequence types that have an influence on the Translation of a
152 ** Transcript.
153 **
154 ******************************************************************************/
155 
156 const char *const gvconsequenceKTranslation[] =
157 {
158     "STOP_GAINED",
159     "STOP_LOST",
160     "COMPLEX_INDEL",
161     "FRAMESHIFT_CODING",
162     "NON_SYNONYMOUS_CODING",
163     "PARTIAL_CODON",
164     NULL
165 };
166 
167 
168 
169 
170 /* @conststatic gvtranscriptvariationadaptorKTablenames ***********************
171 **
172 ** Array of Ensembl Genetic Variation Transcript Variation Adaptor
173 ** SQL table names
174 **
175 ******************************************************************************/
176 
177 static const char *const gvtranscriptvariationadaptorKTablenames[] =
178 {
179     "transcript_variation",
180     "variation_feature",
181     "failed_variation",
182     "source",
183     (const char *) NULL
184 };
185 
186 
187 
188 
189 /* @conststatic gvtranscriptvariationadaptorKColumnnames **********************
190 **
191 ** Array of Ensembl Genetic Variation Transcript Variation Adaptor
192 ** SQL column names
193 **
194 ******************************************************************************/
195 
196 static const char *const gvtranscriptvariationadaptorKColumnnames[] =
197 {
198     "transcript_variation.transcript_variation_id",
199     "transcript_variation.transcript_stable_id",
200     "transcript_variation.variation_feature_id",
201     "transcript_variation.cdna_start",
202     "transcript_variation.cdna_end",
203     "transcript_variation.cds_start",
204     "transcript_variation.cds_end",
205     "transcript_variation.translation_start",
206     "transcript_variation.translation_end",
207     "transcript_variation.peptide_allele_string",
208     "transcript_variation.consequence_type",
209     (const char *) NULL
210 };
211 
212 
213 
214 
215 /* @conststatic gvtranscriptvariationadaptorKLeftjoins ************************
216 **
217 ** Array of Ensembl Genetic Variation Transcript Variation Adaptor
218 ** SQL LEFT JOIN conditions
219 **
220 ******************************************************************************/
221 
222 static const EnsOBaseadaptorLeftjoin gvtranscriptvariationadaptorKLeftjoins[] =
223 {
224     {
225         "failed_variation",
226         "variation_feature.variation_id = failed_variation.variation_id"
227     },
228     {(const char *) NULL, (const char *) NULL}
229 };
230 
231 
232 
233 
234 /* @conststatic gvtranscriptvariationadaptorKDefaultcondition *****************
235 **
236 ** Ensembl Genetic Variation Transcript Variation Adaptor
237 ** SQL SELECT default condition
238 **
239 ******************************************************************************/
240 
241 static const char *gvtranscriptvariationadaptorKDefaultcondition =
242     "transcript_variation.variation_feature_id = "
243     "variation_feature.variation_feature_id "
244     "AND "
245     "variation_feature.source_id = "
246     "source.source_id";
247 
248 
249 
250 
251 /* ========================================================================= */
252 /* =========================== private variables =========================== */
253 /* ========================================================================= */
254 
255 
256 
257 
258 /* ========================================================================= */
259 /* =========================== private functions =========================== */
260 /* ========================================================================= */
261 
262 static AjBool gvtranscriptvariationadaptorFetchAllbyStatement(
263     EnsPBaseadaptor ba,
264     const AjPStr statement,
265     EnsPAssemblymapper am,
266     EnsPSlice slice,
267     AjPList gvtvs);
268 
269 
270 
271 
272 /* ========================================================================= */
273 /* ======================= All functions by section ======================== */
274 /* ========================================================================= */
275 
276 
277 
278 
279 /* @filesection ensvariation **************************************************
280 **
281 ** @nam1rule ens Function belongs to the Ensembl library
282 **
283 ******************************************************************************/
284 
285 
286 
287 
288 /* @datasection [EnsPGvconsequence] Ensembl Genetic Variation Consequence *****
289 **
290 ** @nam2rule Gvconsequence Functions for manipulating
291 ** Ensembl Genetic Variation Consequence objects
292 **
293 ** @cc Bio::EnsEMBL::Variation::ConsequenceType
294 ** @cc CVS Revision: 1.29
295 ** @cc CVS Tag: branch-ensembl-68
296 **
297 ******************************************************************************/
298 
299 
300 
301 
302 /* @section constructors ******************************************************
303 **
304 ** All constructors return a new Ensembl Genetic Variation Consequence by
305 ** pointer. It is the responsibility of the user to first destroy any previous
306 ** Genetic Variation Consequence. The target pointer does not need to be
307 ** initialised to NULL, but it is good programming practice to do so anyway.
308 **
309 ** @fdata [EnsPGvconsequence]
310 **
311 ** @nam3rule New Constructor
312 ** @nam4rule Cpy Constructor with existing object
313 ** @nam4rule Ini Constructor with initial values
314 ** @nam4rule Ref Constructor by incrementing the reference counter
315 **
316 ** @argrule Cpy gvc [const EnsPGvconsequence]
317 ** Ensembl Genetic Variation Consequence
318 ** @argrule Ini transcriptid [ajuint] Ensembl Transcript identifier
319 ** @argrule Ini gvvfid [ajuint] Ensembl Genetic Variation Variation Feature
320 ** @argrule Ini start [ajint] Start
321 ** @argrule Ini end [ajint] End
322 ** @argrule Ini strand [ajint] Strand
323 ** @argrule Ref gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
324 **
325 ** @valrule * [EnsPGvconsequence] Ensembl Genetic Variation Consequence or NULL
326 **
327 ** @fcategory new
328 ******************************************************************************/
329 
330 
331 
332 
333 /* @func ensGvconsequenceNewCpy ***********************************************
334 **
335 ** Object-based constructor function, which returns an independent object.
336 **
337 ** @param [r] gvc [const EnsPGvconsequence]
338 ** Ensembl Genetic Variation Consequence
339 **
340 ** @return [EnsPGvconsequence] Ensembl Genetic Variation Consequence or NULL
341 **
342 ** @release 6.4.0
343 ** @@
344 ******************************************************************************/
345 
ensGvconsequenceNewCpy(const EnsPGvconsequence gvc)346 EnsPGvconsequence ensGvconsequenceNewCpy(const EnsPGvconsequence gvc)
347 {
348     EnsPGvconsequence pthis = NULL;
349 
350     if (!gvc)
351         return NULL;
352 
353     AJNEW0(pthis);
354 
355     pthis->Use = 1U;
356 
357     pthis->Transcriptidentifier = gvc->Transcriptidentifier;
358 
359     pthis->Gvvariationfeatureidentifier = gvc->Gvvariationfeatureidentifier;
360 
361     pthis->Start = gvc->Start;
362 
363     pthis->End = gvc->End;
364 
365     pthis->Strand = gvc->Strand;
366 
367     pthis->Alleles = ajListstrNew();
368 
369     pthis->Types = ajListstrNew();
370 
371     return pthis;
372 }
373 
374 
375 
376 
377 /* @func ensGvconsequenceNewIni ***********************************************
378 **
379 ** Constructor for an Ensembl Genetic Variation Consequence with initial
380 ** values.
381 **
382 ** @cc Bio::EnsEMBL::Variation::ConsequenceType::new
383 ** @param [r] transcriptid [ajuint] Ensembl Transcript identifier
384 ** @param [r] gvvfid [ajuint]
385 ** Ensembl Genetic Variation Variation Feature identifier
386 ** @param [r] start [ajint] Start
387 ** @param [r] end [ajint] End
388 ** @param [r] strand [ajint] Strand
389 **
390 ** @return [EnsPGvconsequence] Ensembl Genetic Variation Consequence or NULL
391 **
392 ** @release 6.4.0
393 ** @@
394 ******************************************************************************/
395 
ensGvconsequenceNewIni(ajuint transcriptid,ajuint gvvfid,ajint start,ajint end,ajint strand)396 EnsPGvconsequence ensGvconsequenceNewIni(ajuint transcriptid,
397                                          ajuint gvvfid,
398                                          ajint start,
399                                          ajint end,
400                                          ajint strand)
401 {
402     EnsPGvconsequence gvc = NULL;
403 
404     if (!transcriptid)
405         return NULL;
406 
407     if (!gvvfid)
408         return NULL;
409 
410     AJNEW0(gvc);
411 
412     gvc->Use = 1U;
413 
414     gvc->Transcriptidentifier = transcriptid;
415 
416     gvc->Gvvariationfeatureidentifier = gvvfid;
417 
418     gvc->Start = start;
419 
420     gvc->End = end;
421 
422     gvc->Strand = strand;
423 
424     return gvc;
425 }
426 
427 
428 
429 
430 /* @func ensGvconsequenceNewRef ***********************************************
431 **
432 ** Ensembl Object referencing function, which returns a pointer to the
433 ** Ensembl Object passed in and increases its reference count.
434 **
435 ** @param [u] gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
436 **
437 ** @return [EnsPGvconsequence] Ensembl Genetic Variation Consequence or NULL
438 **
439 ** @release 6.4.0
440 ** @@
441 ******************************************************************************/
442 
ensGvconsequenceNewRef(EnsPGvconsequence gvc)443 EnsPGvconsequence ensGvconsequenceNewRef(EnsPGvconsequence gvc)
444 {
445     if (!gvc)
446         return NULL;
447 
448     gvc->Use++;
449 
450     return gvc;
451 }
452 
453 
454 
455 
456 /* @section destructors *******************************************************
457 **
458 ** Destruction destroys all internal data structures and frees the memory
459 ** allocated for an Ensembl Genetic Variation Consequence object.
460 **
461 ** @fdata [EnsPGvconsequence]
462 **
463 ** @nam3rule Del Destroy (free) an Ensembl Genetic Variation Consequence
464 **
465 ** @argrule * Pgvc [EnsPGvconsequence*]
466 ** Ensembl Genetic Variation Consequence address
467 **
468 ** @valrule * [void]
469 **
470 ** @fcategory delete
471 ******************************************************************************/
472 
473 
474 
475 
476 /* @func ensGvconsequenceDel **************************************************
477 **
478 ** Default destructor for an Ensembl Genetic Variation Consequence.
479 **
480 ** @param [d] Pgvc [EnsPGvconsequence*]
481 ** Ensembl Genetic Variation Consequence address
482 **
483 ** @return [void]
484 **
485 ** @release 6.4.0
486 ** @@
487 ******************************************************************************/
488 
ensGvconsequenceDel(EnsPGvconsequence * Pgvc)489 void ensGvconsequenceDel(EnsPGvconsequence *Pgvc)
490 {
491     EnsPGvconsequence pthis = NULL;
492 
493     if (!Pgvc)
494         return;
495 
496 #if defined(AJ_DEBUG) && AJ_DEBUG >= 1
497     if (ajDebugTest("ensGvconsequenceDel"))
498     {
499         ajDebug("ensGvconsequenceDel\n"
500                 "  *Pgvvc %p\n",
501                 *Pgvc);
502 
503         ensGvconsequenceTrace(*Pgvc, 1);
504     }
505 #endif /* defined(AJ_DEBUG) && AJ_DEBUG >= 1 */
506 
507     if (!(pthis = *Pgvc) || --pthis->Use)
508     {
509         *Pgvc = NULL;
510 
511         return;
512     }
513 
514     ajListstrFreeData(&pthis->Alleles);
515     ajListstrFreeData(&pthis->Types);
516 
517     ajMemFree((void **) Pgvc);
518 
519     return;
520 }
521 
522 
523 
524 
525 /* @section member retrieval **************************************************
526 **
527 ** Functions for returning members of an
528 ** Ensembl Genetic Variation Consequence object.
529 **
530 ** @fdata [EnsPGvconsequence]
531 **
532 ** @nam3rule Get Return Genetic Variation Consequence attribute(s)
533 ** @nam4rule Alleles Return the AJAX List of AJAX String (allele) objects
534 ** @nam4rule End Return the end
535 ** @nam4rule Gvvariationfeatureidentifier
536 ** Return the Ensembl Genetic Variation Variation Feature identifier
537 ** @nam4rule Start Return the start
538 ** @nam4rule Strand Return the strand
539 ** @nam4rule Transcriptidentifier Return the Ensembl Transcript identifier
540 ** @nam4rule Types Return the AJAX List of AJAX String types
541 **
542 ** @argrule * gvc [const EnsPGvconsequence]
543 ** Ensembl Genetic Variation Consequence
544 **
545 ** @valrule Alleles [AjPList]
546 ** AJAX List of AJAX String (allele) objects or NULL
547 ** @valrule End [ajint] End or 0
548 ** @valrule Gvvariationfeatureidentifier [ajuint]
549 ** Ensembl Genetic Variation Variation Feature identifier or 0U
550 ** @valrule Strand [ajint] Strand or 0
551 ** @valrule Start [ajint] Start or 0
552 ** @valrule Transcriptidentifier [ajuint] Ensembl Transcript identifier or 0U
553 ** @valrule Types [AjPList] AJAX List of AJAX String types or NULL
554 **
555 ** @fcategory use
556 ******************************************************************************/
557 
558 
559 
560 
561 /* @func ensGvconsequenceGetEnd ***********************************************
562 **
563 ** Get the end member of an Ensembl Genetic Variation Consequence.
564 **
565 ** @cc Bio::EnsEMBL::Variation::ConsequenceType::end
566 ** @param [r] gvc [const EnsPGvconsequence]
567 ** Ensembl Genetic Variation Consequence
568 **
569 ** @return [ajint] End or 0
570 **
571 ** @release 6.4.0
572 ** @@
573 ******************************************************************************/
574 
ensGvconsequenceGetEnd(const EnsPGvconsequence gvc)575 ajint ensGvconsequenceGetEnd(
576     const EnsPGvconsequence gvc)
577 {
578     return (gvc) ? gvc->End : 0;
579 }
580 
581 
582 
583 
584 /* @func ensGvconsequenceGetGvvariationfeatureidentifier **********************
585 **
586 ** Get the Ensembl Genetic Variation Variation Feature identifier member of an
587 ** Ensembl Genetic Variation Consequence.
588 **
589 ** @cc Bio::EnsEMBL::Variation::ConsequenceType::variation_feature_id
590 ** @param [r] gvc [const EnsPGvconsequence]
591 ** Ensembl Genetic Variation Consequence
592 **
593 ** @return [ajuint]
594 ** Ensembl Genetic Variation Variation Feature identifier or 0U
595 **
596 ** @release 6.4.0
597 ** @@
598 ******************************************************************************/
599 
ensGvconsequenceGetGvvariationfeatureidentifier(const EnsPGvconsequence gvc)600 ajuint ensGvconsequenceGetGvvariationfeatureidentifier(
601     const EnsPGvconsequence gvc)
602 {
603     return (gvc) ? gvc->Gvvariationfeatureidentifier : 0U;
604 }
605 
606 
607 
608 
609 /* @func ensGvconsequenceGetStart *********************************************
610 **
611 ** Get the start member of an Ensembl Genetic Variation Consequence.
612 **
613 ** @cc Bio::EnsEMBL::Variation::ConsequenceType::start
614 ** @param [r] gvc [const EnsPGvconsequence]
615 ** Ensembl Genetic Variation Consequence
616 **
617 ** @return [ajint] Start or 0
618 **
619 ** @release 6.4.0
620 ** @@
621 ******************************************************************************/
622 
ensGvconsequenceGetStart(const EnsPGvconsequence gvc)623 ajint ensGvconsequenceGetStart(
624     const EnsPGvconsequence gvc)
625 {
626     return (gvc) ? gvc->Start : 0;
627 }
628 
629 
630 
631 
632 /* @func ensGvconsequenceGetStrand ********************************************
633 **
634 ** Get the strand member of an Ensembl Genetic Variation Consequence.
635 **
636 ** @cc Bio::EnsEMBL::Variation::ConsequenceType::strand
637 ** @param [r] gvc [const EnsPGvconsequence]
638 ** Ensembl Genetic Variation Consequence
639 **
640 ** @return [ajint] Strand or 0
641 **
642 ** @release 6.4.0
643 ** @@
644 ******************************************************************************/
645 
ensGvconsequenceGetStrand(const EnsPGvconsequence gvc)646 ajint ensGvconsequenceGetStrand(
647     const EnsPGvconsequence gvc)
648 {
649     return (gvc) ? gvc->Strand : 0;
650 }
651 
652 
653 
654 
655 /* @func ensGvconsequenceGetTranscriptidentifier ******************************
656 **
657 ** Get the Ensembl Transcript identifier member of an
658 ** Ensembl Genetic Variation Consequence.
659 **
660 ** @cc Bio::EnsEMBL::Variation::ConsequenceType::transcript_id
661 ** @param [r] gvc [const EnsPGvconsequence]
662 ** Ensembl Genetic Variation Consequence
663 **
664 ** @return [ajuint] Ensembl Transcript identifier or 0U
665 **
666 ** @release 6.4.0
667 ** @@
668 ******************************************************************************/
669 
ensGvconsequenceGetTranscriptidentifier(const EnsPGvconsequence gvc)670 ajuint ensGvconsequenceGetTranscriptidentifier(
671     const EnsPGvconsequence gvc)
672 {
673     return (gvc) ? gvc->Transcriptidentifier : 0U;
674 }
675 
676 
677 
678 
679 /* @section member assignment *************************************************
680 **
681 ** Functions for assigning members of an
682 ** Ensembl Genetic Variation Consequence object.
683 **
684 ** @fdata [EnsPGvconsequence]
685 **
686 ** @nam3rule Set Set one member of a Genetic Variation Consequence
687 ** @nam4rule End Set the end
688 ** @nam4rule Gvvariationfeatureidentifier
689 ** Set the Ensembl Genetic Variation Variation Feature identifier
690 ** @nam4rule Start Set the start
691 ** @nam4rule Strand Set the strand
692 ** @nam4rule Transcriptidentifier Set the Ensembl Transcript identifier
693 **
694 ** @argrule * gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
695 ** @argrule End end [ajint] End
696 ** @argrule Gvvariationfeatureidentifier gvvfid [ajuint]
697 ** Ensembl Genetic Variation Variation Feature
698 ** @argrule Start start [ajint] Start
699 ** @argrule Strand strand [ajint] Strand
700 ** @argrule Transcriptidentifier transcriptid [ajuint]
701 ** Ensembl Transcript identifier
702 **
703 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
704 **
705 ** @fcategory modify
706 ******************************************************************************/
707 
708 
709 
710 
711 /* @func ensGvconsequenceSetEnd ***********************************************
712 **
713 ** Set the end member of an
714 ** Ensembl Genetic Variation Consequence.
715 **
716 ** @param [u] gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
717 ** @param [r] end [ajint] End
718 **
719 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
720 **
721 ** @release 6.4.0
722 ** @@
723 ******************************************************************************/
724 
ensGvconsequenceSetEnd(EnsPGvconsequence gvc,ajint end)725 AjBool ensGvconsequenceSetEnd(EnsPGvconsequence gvc,
726                               ajint end)
727 {
728     if (!gvc)
729         return ajFalse;
730 
731     gvc->End = end;
732 
733     return ajTrue;
734 }
735 
736 
737 
738 
739 /* @func ensGvconsequenceSetGvvariationfeatureidentifier **********************
740 **
741 ** Set the Ensembl Genetic Variation Variation Feature identifier member of an
742 ** Ensembl Genetic Variation Consequence.
743 **
744 ** @param [u] gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
745 ** @param [r] gvvfid [ajuint]
746 ** Ensembl Genetic Variation Variation Feature identifier
747 **
748 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
749 **
750 ** @release 6.4.0
751 ** @@
752 ******************************************************************************/
753 
ensGvconsequenceSetGvvariationfeatureidentifier(EnsPGvconsequence gvc,ajuint gvvfid)754 AjBool ensGvconsequenceSetGvvariationfeatureidentifier(EnsPGvconsequence gvc,
755                                                        ajuint gvvfid)
756 {
757     if (!gvc)
758         return ajFalse;
759 
760     gvc->Gvvariationfeatureidentifier = gvvfid;
761 
762     return ajTrue;
763 }
764 
765 
766 
767 
768 /* @func ensGvconsequenceSetStart *********************************************
769 **
770 ** Set the start member of an
771 ** Ensembl Genetic Variation Consequence.
772 **
773 ** @param [u] gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
774 ** @param [r] start [ajint] Start
775 **
776 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
777 **
778 ** @release 6.4.0
779 ** @@
780 ******************************************************************************/
781 
ensGvconsequenceSetStart(EnsPGvconsequence gvc,ajint start)782 AjBool ensGvconsequenceSetStart(EnsPGvconsequence gvc,
783                                 ajint start)
784 {
785     if (!gvc)
786         return ajFalse;
787 
788     gvc->Start = start;
789 
790     return ajTrue;
791 }
792 
793 
794 
795 
796 /* @func ensGvconsequenceSetStrand ********************************************
797 **
798 ** Set the strand member of an
799 ** Ensembl Genetic Variation Consequence.
800 **
801 ** @param [u] gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
802 ** @param [r] strand [ajint] Strand
803 **
804 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
805 **
806 ** @release 6.4.0
807 ** @@
808 ******************************************************************************/
809 
ensGvconsequenceSetStrand(EnsPGvconsequence gvc,ajint strand)810 AjBool ensGvconsequenceSetStrand(EnsPGvconsequence gvc,
811                                  ajint strand)
812 {
813     if (!gvc)
814         return ajFalse;
815 
816     gvc->Strand = strand;
817 
818     return ajTrue;
819 }
820 
821 
822 
823 
824 /* @func ensGvconsequenceSetTranscriptidentifier ******************************
825 **
826 ** Set the Ensembl Transcript identifier member of an
827 ** Ensembl Genetic Variation Consequence.
828 **
829 ** @param [u] gvc [EnsPGvconsequence] Ensembl Genetic Variation Consequence
830 ** @param [r] transcriptid [ajuint] Ensembl Transcript identifier
831 **
832 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
833 **
834 ** @release 6.4.0
835 ** @@
836 ******************************************************************************/
837 
ensGvconsequenceSetTranscriptidentifier(EnsPGvconsequence gvc,ajuint transcriptid)838 AjBool ensGvconsequenceSetTranscriptidentifier(EnsPGvconsequence gvc,
839                                                ajuint transcriptid)
840 {
841     if (!gvc)
842         return ajFalse;
843 
844     gvc->Transcriptidentifier = transcriptid;
845 
846     return ajTrue;
847 }
848 
849 
850 
851 
852 /* @section debugging *********************************************************
853 **
854 ** Functions for reporting of an
855 ** Ensembl Genetic Variation Consequence object.
856 **
857 ** @fdata [EnsPGvconsequence]
858 **
859 ** @nam3rule Trace Report Ensembl Genetic Variation Consequence members
860 **                 to debug file
861 **
862 ** @argrule Trace gvc [const EnsPGvconsequence]
863 ** Ensembl Genetic Variation Consequence
864 ** @argrule Trace level [ajuint] Indentation level
865 **
866 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
867 **
868 ** @fcategory misc
869 ******************************************************************************/
870 
871 
872 
873 
874 /* @func ensGvconsequenceTrace ************************************************
875 **
876 ** Trace an Ensembl Genetic Variation Consequence.
877 **
878 ** @param [r] gvc [const EnsPGvconsequence]
879 ** Ensembl Genetic Variation Consequence
880 ** @param [r] level [ajuint] Indentation level
881 **
882 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
883 **
884 ** @release 6.4.0
885 ** @@
886 ******************************************************************************/
887 
ensGvconsequenceTrace(const EnsPGvconsequence gvc,ajuint level)888 AjBool ensGvconsequenceTrace(const EnsPGvconsequence gvc,
889                              ajuint level)
890 {
891     AjPStr indent = NULL;
892 
893     if (!gvc)
894         return ajFalse;
895 
896     indent = ajStrNew();
897 
898     ajStrAppendCountK(&indent, ' ', level * 2);
899 
900     ajDebug("%SensGvconsequenceTrace %p\n"
901             "%S  Transcriptidentifier %u\n"
902             "%S  Gvvariationfeatureidentifier %u\n"
903             "%S  Start %d\n"
904             "%S  End %d\n"
905             "%S  Strand %d\n",
906             indent, gvc,
907             indent, gvc->Transcriptidentifier,
908             indent, gvc->Gvvariationfeatureidentifier,
909             indent, gvc->Start,
910             indent, gvc->End,
911             indent, gvc->Strand);
912 
913     ajStrDel(&indent);
914 
915     return ajTrue;
916 }
917 
918 
919 
920 
921 /* @section calculate *********************************************************
922 **
923 ** Functions for calculating information from an
924 ** Ensembl Genetic Variation Consequence object.
925 **
926 ** @fdata [EnsPGvconsequence]
927 **
928 ** @nam3rule Calculate
929 ** Calculate Ensembl Genetic Variation Consequence information
930 ** @nam4rule Memsize Calculate the memory size in bytes
931 **
932 ** @argrule * gvc [const EnsPGvconsequence]
933 ** Ensembl Genetic Variation Consequence
934 **
935 ** @valrule Memsize [size_t] Memory size in bytes or 0
936 **
937 ** @fcategory misc
938 ******************************************************************************/
939 
940 
941 
942 
943 /* @func ensGvconsequenceCalculateMemsize *************************************
944 **
945 ** Calculate the memory size in bytes of an
946 ** Ensembl Genetic Variation Consequence.
947 **
948 ** @param [r] gvc [const EnsPGvconsequence]
949 ** Ensembl Genetic Variation Consequence
950 **
951 ** @return [size_t] Memory size in bytes or 0
952 **
953 ** @release 6.4.0
954 ** @@
955 ******************************************************************************/
956 
ensGvconsequenceCalculateMemsize(const EnsPGvconsequence gvc)957 size_t ensGvconsequenceCalculateMemsize(const EnsPGvconsequence gvc)
958 {
959     size_t size = 0;
960 
961     if (!gvc)
962         return 0;
963 
964     size += sizeof (EnsOGvconsequence);
965 
966     return size;
967 }
968 
969 
970 
971 
972 /* @datasection [EnsEGvconsequenceType] Ensembl Genetic Variation Consequence
973 ** Type enumeration
974 **
975 ** @nam2rule Gvconsequence Functions for manipulating
976 ** Ensembl Genetic Variation Consequence objects
977 ** @nam3rule GvconsequenceType Functions for manipulating
978 ** Ensembl Genetic Variation Consequence Type enumerations
979 **
980 ******************************************************************************/
981 
982 
983 
984 
985 /* @section Misc **************************************************************
986 **
987 ** Functions for returning an Ensembl Genetic Variation Consequence Type
988 ** enumeration.
989 **
990 ** @fdata [EnsEGvconsequenceType]
991 **
992 ** @nam4rule From Ensembl Genetic Variation Consequence Type query
993 ** @nam5rule Str  AJAX String object query
994 **
995 ** @argrule  Str  consequencetype [const AjPStr] Consequence type string
996 **
997 ** @valrule * [EnsEGvconsequenceType]
998 ** Ensembl Genetic Variation Consequence Type enumeration or
999 ** ensEGvconsequenceTypeNULL
1000 **
1001 ** @fcategory misc
1002 ******************************************************************************/
1003 
1004 
1005 
1006 
1007 /* @func ensGvconsequenceTypeFromStr ******************************************
1008 **
1009 ** Convert an AJAX String into an Ensembl Genetic Variation Consequence
1010 ** Type enumeration.
1011 **
1012 ** @param [r] consequencetype [const AjPStr] Consequence type string
1013 **
1014 ** @return [EnsEGvconsequenceType]
1015 ** Ensembl Genetic Variation Consequence Type enumeration or
1016 ** ensEGvconsequenceTypeNULL
1017 **
1018 ** @release 6.4.0
1019 ** @@
1020 ******************************************************************************/
1021 
ensGvconsequenceTypeFromStr(const AjPStr consequencetype)1022 EnsEGvconsequenceType ensGvconsequenceTypeFromStr(
1023     const AjPStr consequencetype)
1024 {
1025     register EnsEGvconsequenceType i =
1026         ensEGvconsequenceTypeNULL;
1027 
1028     EnsEGvconsequenceType gvct =
1029         ensEGvconsequenceTypeNULL;
1030 
1031     for (i = ensEGvconsequenceTypeNULL;
1032          gvconsequenceKType[i];
1033          i++)
1034         if (ajStrMatchC(consequencetype, gvconsequenceKType[i]))
1035             gvct = i;
1036 
1037     if (!gvct)
1038         ajDebug("ensGvconsequenceTypeFromStr encountered "
1039                 "unexpected string '%S'.\n", consequencetype);
1040 
1041     return gvct;
1042 }
1043 
1044 
1045 
1046 
1047 /* @section Cast **************************************************************
1048 **
1049 ** Functions for returning attributes of an
1050 ** Ensembl Genetic Variation Consequence Type enumeration.
1051 **
1052 ** @fdata [EnsEGvconsequenceType]
1053 **
1054 ** @nam4rule To   Return Ensembl Genetic Variation Consequence Type
1055 **                       enumeration
1056 ** @nam5rule Char Return C character string value
1057 **
1058 ** @argrule To gvct [EnsEGvconsequenceType]
1059 ** Ensembl Genetic Variation Consequence Type enumeration
1060 **
1061 ** @valrule Char [const char*]
1062 ** Ensembl Genetic Variation Consequence Type C-type (char *) string
1063 **
1064 ** @fcategory cast
1065 ******************************************************************************/
1066 
1067 
1068 
1069 
1070 /* @func ensGvconsequenceTypeToChar *******************************************
1071 **
1072 ** Convert an Ensembl Genetic Variation Consequence Type enumeration
1073 ** into a C-type (char *) string.
1074 **
1075 ** @param [u] gvct [EnsEGvconsequenceType]
1076 ** Ensembl Genetic Variation Consequence Type enumeration
1077 **
1078 ** @return [const char*]
1079 ** Ensembl Genetic Variation Consequence Type C-type (char *) string
1080 **
1081 ** @release 6.4.0
1082 ** @@
1083 ******************************************************************************/
1084 
ensGvconsequenceTypeToChar(EnsEGvconsequenceType gvct)1085 const char* ensGvconsequenceTypeToChar(
1086     EnsEGvconsequenceType gvct)
1087 {
1088     register EnsEGvconsequenceType i =
1089         ensEGvconsequenceTypeNULL;
1090 
1091     for (i = ensEGvconsequenceTypeNULL;
1092          gvconsequenceKType[i] && (i < gvct);
1093          i++);
1094 
1095     if (!gvconsequenceKType[i])
1096         ajDebug("ensGvconsequenceTypeToChar "
1097                 "encountered an out of boundary error on "
1098                 "Ensembl Genetic Variation Consequence Type "
1099                 "enumeration %d.\n",
1100                 gvct);
1101 
1102     return gvconsequenceKType[i];
1103 }
1104 
1105 
1106 
1107 
1108 /* @datasection [none] C-types ************************************************
1109 **
1110 ** @nam2rule Gvconsequence Functions for manipulating
1111 ** Ensembl Genetic Variation Consequence objects
1112 ** @nam3rule GvconsequenceTypes Functions for manipulating
1113 ** Ensembl Genetic Variation Consequence Type (AJAX unsigned integer)
1114 ** bit fields
1115 **
1116 ******************************************************************************/
1117 
1118 
1119 
1120 
1121 /* @section Misc **************************************************************
1122 **
1123 ** Functions for returning an Ensembl Genetic Variation Consequence Type
1124 ** bit field.
1125 **
1126 ** @fdata [none]
1127 **
1128 ** @nam4rule From Ensembl Genetic Variation Consequence Type
1129 ** bit field query
1130 ** @nam5rule Set SQL set string query
1131 **
1132 ** @argrule  Set gvctset [const AjPStr] Comma-separated SQL set string
1133 **
1134 ** @valrule * [ajuint]
1135 ** Ensembl Genetic Variation Consequence Type bit field or 0U
1136 **
1137 ** @fcategory misc
1138 ******************************************************************************/
1139 
1140 
1141 
1142 
1143 /* @func ensGvconsequenceTypesFromSet *****************************************
1144 **
1145 ** Convert an AJAX String representing a comma-separared SQL set of
1146 ** consequence types into an Ensembl Genetic Variation Consequence Type
1147 ** (AJAX unsigned integer) bit field.
1148 **
1149 ** @param [r] gvctset [const AjPStr] SQL set
1150 **
1151 ** @return [ajuint] Ensembl Genetic Variation Consequence Type bit field or 0U
1152 ** or 0
1153 **
1154 ** @release 6.4.0
1155 ** @@
1156 ******************************************************************************/
1157 
ensGvconsequenceTypesFromSet(const AjPStr gvctset)1158 ajuint ensGvconsequenceTypesFromSet(const AjPStr gvctset)
1159 {
1160     ajuint gvctbf = 0U;
1161 
1162     AjPStr gvctstring = NULL;
1163 
1164     AjPStrTok token = NULL;
1165 
1166     if (!gvctset)
1167         return 0U;
1168 
1169     /* Split the comma-separated list of consequence types. */
1170 
1171     token = ajStrTokenNewC(gvctset, ",");
1172 
1173     gvctstring = ajStrNew();
1174 
1175     while (ajStrTokenNextParse(token, &gvctstring))
1176         gvctbf |= (1U << ensGvconsequenceTypeFromStr(gvctstring));
1177 
1178     ajStrDel(&gvctstring);
1179 
1180     ajStrTokenDel(&token);
1181 
1182     return gvctbf;
1183 }
1184 
1185 
1186 
1187 
1188 /* @section Cast **************************************************************
1189 **
1190 ** Functions for returning attributes of an
1191 ** Ensembl Genetic Variation Consequence Type bit field.
1192 **
1193 ** @fdata [none]
1194 **
1195 ** @nam4rule To Cast an Ensembl Genetic Variation Consequence Type
1196 ** bit field
1197 ** @nam5rule Set Cast into an SQl set (comma-separated strings)
1198 **
1199 ** @argrule To gvctbf [ajuint]
1200 ** Ensembl Genetic Variation Consequence Type bit field
1201 ** @argrule Set Pgvctset [AjPStr*] SQL set
1202 **
1203 ** @valrule * [AjBool] True on success, false on failure
1204 **
1205 ** @fcategory cast
1206 ******************************************************************************/
1207 
1208 
1209 
1210 
1211 /* @func ensGvconsequenceTypesToSet *******************************************
1212 **
1213 ** Cast an Ensembl Genetic Variation Consequence Type bit field
1214 ** (AJAX unsigned integer) into an SQL set (comma-separated) strings.
1215 **
1216 ** The caller is responsible for deleting the AJAX String.
1217 **
1218 ** @param [r] gvctbf [ajuint]
1219 ** Ensembl Genetic Variation Consequence Type bit field
1220 ** @param [w] Pgvctset [AjPStr*] SQL set
1221 **
1222 ** @return [AjBool] True on success, false on failure
1223 **
1224 ** @release 6.4.0
1225 ** @@
1226 ******************************************************************************/
1227 
ensGvconsequenceTypesToSet(ajuint gvctbf,AjPStr * Pgvctset)1228 AjBool ensGvconsequenceTypesToSet(ajuint gvctbf, AjPStr *Pgvctset)
1229 {
1230     register ajuint i = 0U;
1231 
1232     if (*Pgvctset)
1233         ajStrAssignClear(Pgvctset);
1234     else
1235         *Pgvctset = ajStrNew();
1236 
1237     for (i = 1U; gvconsequenceKType[i]; i++)
1238         if (gvctbf & (1U << i))
1239         {
1240             ajStrAppendC(Pgvctset, gvconsequenceKType[i]);
1241             ajStrAppendC(Pgvctset, ",");
1242         }
1243 
1244     /* Remove the last comma if one exists. */
1245 
1246     if (ajStrGetLen(*Pgvctset) > 0U)
1247         ajStrCutEnd(Pgvctset, 1);
1248 
1249     return ajTrue;
1250 }
1251 
1252 
1253 
1254 
1255 /* @datasection [EnsPGvtranscriptvariation] Ensembl Genetic Variation
1256 ** Transcript Variation
1257 **
1258 ** @nam2rule Gvtranscriptvariation Functions for manipulating
1259 ** Ensembl Genetic Variation Transcript Variation objects
1260 **
1261 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation
1262 ** @cc CVS Revision: 1.28
1263 ** @cc CVS Tag: branch-ensembl-61
1264 **
1265 ******************************************************************************/
1266 
1267 
1268 
1269 
1270 /* @section constructors ******************************************************
1271 **
1272 ** All constructors return a new Ensembl Genetic Variation Transcript Variation
1273 ** by pointer. It is the responsibility of the user to first destroy any
1274 ** previous Genetic Variation Transcript Variation. The target pointer does not
1275 ** need to be initialised to NULL, but it is good programming practice to do
1276 **  so anyway.
1277 **
1278 ** @fdata [EnsPGvtranscriptvariation]
1279 **
1280 ** @nam3rule New Constructor
1281 ** @nam4rule Cpy Constructor with existing object
1282 ** @nam4rule Ini Constructor with initial values
1283 ** @nam4rule Ref Constructor by incrementing the reference counter
1284 **
1285 ** @argrule Cpy gvtv [const EnsPGvtranscriptvariation]
1286 ** Ensembl Genetic Variation Transcript Variation
1287 ** @argrule Ini gvtva [EnsPGvtranscriptvariationadaptor]
1288 ** Ensembl Genetic Variation Transcript Variation Adaptor
1289 ** @argrule Ini identifier [ajuint] SQL database-internal identifier
1290 ** @argrule Ini transcript [EnsPTranscript] Ensembl Transcript
1291 ** @argrule Ini gvvf [EnsPGvvariationfeature]
1292 ** Ensembl Genetic Variation Variation Feature
1293 ** @argrule Ini translationallele [AjPStr] Ensembl Translation allele
1294 ** @argrule Ini gvctset [AjPStr]
1295 ** Ensembl Genetic Variation Consequence Type SQL set
1296 ** @argrule Ini codingstart [ajuint] Coding start
1297 ** @argrule Ini codingend [ajuint] Coding end
1298 ** @argrule Ini transcriptstart [ajuint] Ensembl Transcript start
1299 ** @argrule Ini transcriptend [ajuint] Ensembl Transcript end
1300 ** @argrule Ini translationstart [ajuint] Ensembl Translation start
1301 ** @argrule Ini translationend [ajuint] Ensembl Translation end
1302 ** @argrule Ref gvtv [EnsPGvtranscriptvariation]
1303 ** Ensembl Genetic Variation Transcript Variation
1304 **
1305 ** @valrule * [EnsPGvtranscriptvariation]
1306 ** Ensembl Genetic Variation Transcript Variation or NULL
1307 **
1308 ** @fcategory new
1309 ******************************************************************************/
1310 
1311 
1312 
1313 
1314 /* @func ensGvtranscriptvariationNewCpy ***************************************
1315 **
1316 ** Object-based constructor function, which returns an independent object.
1317 **
1318 ** @param [r] gvtv [const EnsPGvtranscriptvariation]
1319 ** Ensembl Genetic Variation Transcript Variation
1320 **
1321 ** @return [EnsPGvtranscriptvariation]
1322 ** Ensembl Genetic Variation Transcript Variation or NULL
1323 **
1324 ** @release 6.4.0
1325 ** @@
1326 ******************************************************************************/
1327 
ensGvtranscriptvariationNewCpy(const EnsPGvtranscriptvariation gvtv)1328 EnsPGvtranscriptvariation ensGvtranscriptvariationNewCpy(
1329     const EnsPGvtranscriptvariation gvtv)
1330 {
1331     EnsPGvtranscriptvariation pthis = NULL;
1332 
1333     if (!gvtv)
1334         return NULL;
1335 
1336     AJNEW0(pthis);
1337 
1338     pthis->Use                = 1U;
1339     pthis->Identifier         = gvtv->Identifier;
1340     pthis->Adaptor            = gvtv->Adaptor;
1341     pthis->TranscriptObject   = ensTranscriptNewRef(gvtv->TranscriptObject);
1342     pthis->Gvvariationfeature = ensGvvariationfeatureNewRef(
1343         gvtv->Gvvariationfeature);
1344 
1345     if (gvtv->TranslationAllele)
1346         pthis->TranslationAllele  = ajStrNewRef(gvtv->TranslationAllele);
1347 
1348     pthis->CodingStart        = gvtv->CodingStart;
1349     pthis->CodingEnd          = gvtv->CodingEnd;
1350     pthis->TranscriptStart    = gvtv->TranscriptStart;
1351     pthis->TranscriptEnd      = gvtv->TranscriptEnd;
1352     pthis->TranslationStart   = gvtv->TranslationStart;
1353     pthis->TranslationEnd     = gvtv->TranslationEnd;
1354     pthis->GvconsequenceTypes = gvtv->GvconsequenceTypes;
1355 
1356     return pthis;
1357 }
1358 
1359 
1360 
1361 
1362 /* @func ensGvtranscriptvariationNewIni ***************************************
1363 **
1364 ** Constructor for an Ensembl Genetic Variation Transcript Variation with
1365 ** initial values.
1366 **
1367 ** @cc Bio::EnsEMBL::Storable::new
1368 ** @param [u] gvtva [EnsPGvtranscriptvariationadaptor]
1369 ** Ensembl Genetic Variation Transcript Variation Adaptor
1370 ** @param [r] identifier [ajuint] SQL database-internal identifier
1371 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::new
1372 ** @param [uN] transcript [EnsPTranscript] Ensembl Transcript
1373 ** @param [uN] gvvf [EnsPGvvariationfeature]
1374 ** Ensembl Genetic Variation Variation Feature
1375 ** @param [u] translationallele [AjPStr] Ensembl Translation allele
1376 ** @param [u] gvctset [AjPStr] Ensembl Genetic Variation Consequence Type
1377 ** SQL set
1378 ** @param [r] codingstart [ajuint] Coding start
1379 ** @param [r] codingend [ajuint] Coding end
1380 ** @param [r] transcriptstart [ajuint] Ensembl Transcript start
1381 ** @param [r] transcriptend [ajuint] Ensembl Transcript end
1382 ** @param [r] translationstart [ajuint] Ensembl Translation start
1383 ** @param [r] translationend [ajuint] Ensembl Translation end
1384 **
1385 ** @return [EnsPGvtranscriptvariation]
1386 ** Ensembl Genetic Variation Transcript Variation or NULL
1387 **
1388 ** @release 6.4.0
1389 ** @@
1390 ** NOTE: From branch-ensembl-61 the new method accepts a list of consequence
1391 ** type strings rather than a comma separated SQL set of quoted consequence
1392 ** type strings.
1393 ******************************************************************************/
1394 
ensGvtranscriptvariationNewIni(EnsPGvtranscriptvariationadaptor gvtva,ajuint identifier,EnsPTranscript transcript,EnsPGvvariationfeature gvvf,AjPStr translationallele,AjPStr gvctset,ajuint codingstart,ajuint codingend,ajuint transcriptstart,ajuint transcriptend,ajuint translationstart,ajuint translationend)1395 EnsPGvtranscriptvariation ensGvtranscriptvariationNewIni(
1396     EnsPGvtranscriptvariationadaptor gvtva,
1397     ajuint identifier,
1398     EnsPTranscript transcript,
1399     EnsPGvvariationfeature gvvf,
1400     AjPStr translationallele,
1401     AjPStr gvctset,
1402     ajuint codingstart,
1403     ajuint codingend,
1404     ajuint transcriptstart,
1405     ajuint transcriptend,
1406     ajuint translationstart,
1407     ajuint translationend)
1408 {
1409     register ajuint i = 0U;
1410 
1411     AjBool match = AJFALSE;
1412 
1413     AjPStr value = NULL;
1414 
1415     AjPStrTok token = NULL;
1416 
1417     EnsPGvtranscriptvariation gvtv = NULL;
1418 
1419     /* Check that all consequence types are valid. */
1420 
1421     if (gvctset && ajStrGetLen(gvctset))
1422     {
1423         token = ajStrTokenNewC(gvctset, ",");
1424         value = ajStrNew();
1425 
1426         while (ajStrTokenNextParse(token, &value))
1427         {
1428             match = ajFalse;
1429 
1430             for (i = 0U; gvconsequenceKType[i]; i++)
1431                 if (ajStrMatchCaseC(value, gvconsequenceKType[i]))
1432                     match = ajTrue;
1433 
1434             if (match == ajFalse)
1435                 ajFatal("ensGvtranscriptvariationNewIni got invalid "
1436                         "consequence type '%S'.", value);
1437         }
1438 
1439         ajStrTokenDel(&token);
1440         ajStrDel(&value);
1441     }
1442 
1443     AJNEW0(gvtv);
1444 
1445     gvtv->Use                = 1U;
1446     gvtv->Identifier         = identifier;
1447     gvtv->Adaptor            = gvtva;
1448     gvtv->TranscriptObject   = ensTranscriptNewRef(transcript);
1449     gvtv->Gvvariationfeature = ensGvvariationfeatureNewRef(gvvf);
1450     gvtv->TranslationAllele  = ajStrNewRef(translationallele);
1451     gvtv->CodingStart        = codingstart;
1452     gvtv->CodingEnd          = codingend;
1453     gvtv->TranscriptStart    = transcriptstart;
1454     gvtv->TranscriptEnd      = transcriptend;
1455     gvtv->TranslationStart   = translationstart;
1456     gvtv->TranslationEnd     = translationend;
1457     gvtv->GvconsequenceTypes = ensGvconsequenceTypesFromSet(gvctset);
1458 
1459     return gvtv;
1460 }
1461 
1462 
1463 
1464 
1465 
1466 /* @func ensGvtranscriptvariationNewRef ***************************************
1467 **
1468 ** Ensembl Object referencing function, which returns a pointer to the
1469 ** Ensembl Object passed in and increases its reference count.
1470 **
1471 ** @param [u] gvtv [EnsPGvtranscriptvariation] Ensembl Genetic Variation
1472 **                                             Transcript Variation
1473 **
1474 ** @return [EnsPGvtranscriptvariation]
1475 ** Ensembl Genetic Variation Transcript Variation or NULL
1476 **
1477 ** @release 6.4.0
1478 ** @@
1479 ******************************************************************************/
1480 
ensGvtranscriptvariationNewRef(EnsPGvtranscriptvariation gvtv)1481 EnsPGvtranscriptvariation ensGvtranscriptvariationNewRef(
1482     EnsPGvtranscriptvariation gvtv)
1483 {
1484     if (!gvtv)
1485         return NULL;
1486 
1487     gvtv->Use++;
1488 
1489     return gvtv;
1490 }
1491 
1492 
1493 
1494 
1495 /* @section destructors *******************************************************
1496 **
1497 ** Destruction destroys all internal data structures and frees the memory
1498 ** allocated for an Ensembl Genetic Variation Transcript Variation object.
1499 **
1500 ** @fdata [EnsPGvtranscriptvariation]
1501 **
1502 ** @nam3rule Del Destroy (free) an
1503 ** Ensembl Genetic Variation Transcript Variation
1504 **
1505 ** @argrule * Pgvtv [EnsPGvtranscriptvariation*]
1506 ** Ensembl Genetic Variation Transcript Variation address
1507 **
1508 ** @valrule * [void]
1509 **
1510 ** @fcategory delete
1511 ******************************************************************************/
1512 
1513 
1514 
1515 
1516 /* @func ensGvtranscriptvariationDel ******************************************
1517 **
1518 ** Default destructor for an Ensembl Genetic Variation Transcript Variation.
1519 **
1520 ** @param [d] Pgvtv [EnsPGvtranscriptvariation*]
1521 ** Ensembl Genetic Variation Transcript Variation address
1522 **
1523 ** @return [void]
1524 **
1525 ** @release 6.4.0
1526 ** @@
1527 ******************************************************************************/
1528 
ensGvtranscriptvariationDel(EnsPGvtranscriptvariation * Pgvtv)1529 void ensGvtranscriptvariationDel(EnsPGvtranscriptvariation *Pgvtv)
1530 {
1531     EnsPGvtranscriptvariation pthis = NULL;
1532 
1533     if (!Pgvtv)
1534         return;
1535 
1536 #if defined(AJ_DEBUG) && AJ_DEBUG >= 1
1537     if (ajDebugTest("ensGvtranscriptvariationDel"))
1538     {
1539         ajDebug("ensGvtranscriptvariationDel\n"
1540                 "  *Pgvtv %p\n",
1541                 *Pgvtv);
1542 
1543         ensGvtranscriptvariationTrace(*Pgvtv, 1);
1544     }
1545 #endif /* defined(AJ_DEBUG) && AJ_DEBUG >= 1 */
1546 
1547     if (!(pthis = *Pgvtv) || --pthis->Use)
1548     {
1549         *Pgvtv = NULL;
1550 
1551         return;
1552     }
1553 
1554     ensGvvariationfeatureDel(&pthis->Gvvariationfeature);
1555 
1556     ensTranscriptDel(&pthis->TranscriptObject);
1557 
1558     ajStrDel(&pthis->TranslationAllele);
1559 
1560     ajMemFree((void **) Pgvtv);
1561 
1562     return;
1563 }
1564 
1565 
1566 
1567 
1568 /* @section member retrieval **************************************************
1569 **
1570 ** Functions for returning members of an
1571 ** Ensembl Genetic Variation Transcript Variation object.
1572 **
1573 ** @fdata [EnsPGvtranscriptvariation]
1574 **
1575 ** @nam3rule Get Return Ensembl Genetic Variation Transcript Variation
1576 ** attribute(s)
1577 ** @nam4rule Adaptor Return the Ensembl Genetic Variation
1578 **                   Transcript Variation Adaptor
1579 ** @nam4rule Coding Return coding region members
1580 ** @nam4rule Gvvariationfeature Return the
1581 ** Ensembl Genetic Variation Variation Feature
1582 ** @nam4rule Identifier Return the SQL database-internal identifier
1583 ** @nam4rule Transcript Return Ensembl Transcript members
1584 ** @nam4rule Translation Return Ensembl Translation members
1585 ** @nam5rule Allele Return the allele string
1586 ** @nam5rule End Return the end coordinate
1587 ** @nam5rule Start Return the start coordinate
1588 ** @nam5rule Object Return an Ensembl Object
1589 **
1590 ** @argrule * gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1591 **                                                   Transcript Variation
1592 **
1593 ** @valrule Adaptor [EnsPGvtranscriptvariationadaptor]
1594 ** Ensembl Genetic Variation Transcript Variation Adaptor or NULL
1595 ** @valrule Gvvariationfeature [EnsPGvvariationfeature]
1596 ** Ensembl Genetic Variation Variation Feature or NULL
1597 ** @valrule Identifier [ajuint] SQL database-internal identifier or 0U
1598 ** @valrule Allele [AjPStr] Allele string or NULL
1599 ** @valrule End [ajuint] End coordinate or 0U
1600 ** @valrule Object [EnsPTranscript] Ensembl Transcript or NULL
1601 ** @valrule Start [ajuint] Start coordinate or 0U
1602 **
1603 ** @fcategory use
1604 ******************************************************************************/
1605 
1606 
1607 
1608 
1609 /* @func ensGvtranscriptvariationGetAdaptor ***********************************
1610 **
1611 ** Get the Ensembl Genetic Variation Transcript Variation Adaptor member of an
1612 ** Ensembl Genetic Variation Transcript Variation.
1613 **
1614 ** @cc Bio::EnsEMBL::Storable::adaptor
1615 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1616 **                                                   Transcript Variation
1617 **
1618 ** @return [EnsPGvtranscriptvariationadaptor] Ensembl Genetic Variation
1619 ** Transcript Variation Adaptor or NULL
1620 **
1621 ** @release 6.4.0
1622 ** @@
1623 ******************************************************************************/
1624 
ensGvtranscriptvariationGetAdaptor(const EnsPGvtranscriptvariation gvtv)1625 EnsPGvtranscriptvariationadaptor ensGvtranscriptvariationGetAdaptor(
1626     const EnsPGvtranscriptvariation gvtv)
1627 {
1628     return (gvtv) ? gvtv->Adaptor : NULL;
1629 }
1630 
1631 
1632 
1633 
1634 /* @func ensGvtranscriptvariationGetCodingEnd *********************************
1635 **
1636 ** Get the coding end member of an
1637 ** Ensembl Genetic Variation Transcript Variation.
1638 **
1639 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cds_end
1640 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1641 **                                                   Transcript Variation
1642 **
1643 ** @return [ajuint] Coding end or 0U
1644 **
1645 ** @release 6.4.0
1646 ** @@
1647 ******************************************************************************/
1648 
ensGvtranscriptvariationGetCodingEnd(const EnsPGvtranscriptvariation gvtv)1649 ajuint ensGvtranscriptvariationGetCodingEnd(
1650     const EnsPGvtranscriptvariation gvtv)
1651 {
1652     return (gvtv) ? gvtv->CodingEnd : 0U;
1653 }
1654 
1655 
1656 
1657 
1658 /* @func ensGvtranscriptvariationGetCodingStart *******************************
1659 **
1660 ** Get the coding start member of an
1661 ** Ensembl Genetic Variation Transcript Variation.
1662 **
1663 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cds_start
1664 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1665 **                                                   Transcript Variation
1666 **
1667 ** @return [ajuint] Coding start or 0U
1668 **
1669 ** @release 6.4.0
1670 ** @@
1671 ******************************************************************************/
1672 
ensGvtranscriptvariationGetCodingStart(const EnsPGvtranscriptvariation gvtv)1673 ajuint ensGvtranscriptvariationGetCodingStart(
1674     const EnsPGvtranscriptvariation gvtv)
1675 {
1676     return (gvtv) ? gvtv->CodingStart : 0U;
1677 }
1678 
1679 
1680 
1681 
1682 /* @func ensGvtranscriptvariationGetGvvariationfeature ************************
1683 **
1684 ** Get the Ensembl Genetic Variation Variation Feature member of an
1685 ** Ensembl Genetic Variation Transcript Variation.
1686 **
1687 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1688 **                                                   Transcript Variation
1689 **
1690 ** @return [EnsPGvvariationfeature] Ensembl Genetic Variation Variation Feature
1691 ** or NULL
1692 **
1693 ** @release 6.4.0
1694 ** @@
1695 ******************************************************************************/
1696 
ensGvtranscriptvariationGetGvvariationfeature(const EnsPGvtranscriptvariation gvtv)1697 EnsPGvvariationfeature ensGvtranscriptvariationGetGvvariationfeature(
1698     const EnsPGvtranscriptvariation gvtv)
1699 {
1700     return (gvtv) ? gvtv->Gvvariationfeature : NULL;
1701 }
1702 
1703 
1704 
1705 
1706 /* @func ensGvtranscriptvariationGetIdentifier ********************************
1707 **
1708 ** Get the SQL database-internal identifier member of an
1709 ** Ensembl Genetic Variation Transcript Variation.
1710 **
1711 ** @cc Bio::EnsEMBL::Storable::dbID
1712 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1713 **                                                   Transcript Variation
1714 **
1715 ** @return [ajuint] SQL database-internal identifier or 0U
1716 **
1717 ** @release 6.4.0
1718 ** @@
1719 ******************************************************************************/
1720 
ensGvtranscriptvariationGetIdentifier(const EnsPGvtranscriptvariation gvtv)1721 ajuint ensGvtranscriptvariationGetIdentifier(
1722     const EnsPGvtranscriptvariation gvtv)
1723 {
1724     return (gvtv) ? gvtv->Identifier : 0U;
1725 }
1726 
1727 
1728 
1729 
1730 /* @func ensGvtranscriptvariationGetTranscriptEnd *****************************
1731 **
1732 ** Get the Ensembl Transcript end member of an
1733 ** Ensembl Genetic Variation Transcript Variation.
1734 **
1735 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cdna_end
1736 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1737 **                                                   Transcript Variation
1738 **
1739 ** @return [ajuint] Ensembl Transcript end or 0U
1740 **
1741 ** @release 6.4.0
1742 ** @@
1743 ******************************************************************************/
1744 
ensGvtranscriptvariationGetTranscriptEnd(const EnsPGvtranscriptvariation gvtv)1745 ajuint ensGvtranscriptvariationGetTranscriptEnd(
1746     const EnsPGvtranscriptvariation gvtv)
1747 {
1748     return (gvtv) ? gvtv->TranscriptEnd : 0U;
1749 }
1750 
1751 
1752 
1753 
1754 /* @func ensGvtranscriptvariationGetTranscriptObject **************************
1755 **
1756 ** Get the Ensembl Transcript member of an
1757 ** Ensembl Genetic Variation Transcript Variation.
1758 **
1759 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::transcript
1760 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1761 **                                                   Transcript Variation
1762 **
1763 ** @return [EnsPTranscript] Ensembl Transcript or NULL
1764 **
1765 ** @release 6.4.0
1766 ** @@
1767 ******************************************************************************/
1768 
ensGvtranscriptvariationGetTranscriptObject(const EnsPGvtranscriptvariation gvtv)1769 EnsPTranscript ensGvtranscriptvariationGetTranscriptObject(
1770     const EnsPGvtranscriptvariation gvtv)
1771 {
1772     return (gvtv) ? gvtv->TranscriptObject : NULL;
1773 }
1774 
1775 
1776 
1777 
1778 /* @func ensGvtranscriptvariationGetTranscriptStart ***************************
1779 **
1780 ** Get the Ensembl Transcript start member of an
1781 ** Ensembl Genetic Variation Transcript Variation.
1782 **
1783 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cdna_start
1784 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1785 **                                                   Transcript Variation
1786 **
1787 ** @return [ajuint] Ensembl Transcript start or 0U
1788 **
1789 ** @release 6.4.0
1790 ** @@
1791 ******************************************************************************/
1792 
ensGvtranscriptvariationGetTranscriptStart(const EnsPGvtranscriptvariation gvtv)1793 ajuint ensGvtranscriptvariationGetTranscriptStart(
1794     const EnsPGvtranscriptvariation gvtv)
1795 {
1796     return (gvtv) ? gvtv->TranscriptStart : 0U;
1797 }
1798 
1799 
1800 
1801 
1802 /* @func ensGvtranscriptvariationGetTranslationAllele *************************
1803 **
1804 ** Get the Ensembl Translation allele member of an
1805 ** Ensembl Genetic Variation Transcript Variation.
1806 **
1807 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::pep_allele_string
1808 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1809 **                                                   Transcript Variation
1810 **
1811 ** @return [AjPStr] Ensembl Translation allele or NULL
1812 **
1813 ** @release 6.4.0
1814 ** @@
1815 ******************************************************************************/
1816 
ensGvtranscriptvariationGetTranslationAllele(const EnsPGvtranscriptvariation gvtv)1817 AjPStr ensGvtranscriptvariationGetTranslationAllele(
1818     const EnsPGvtranscriptvariation gvtv)
1819 {
1820     return (gvtv) ? gvtv->TranslationAllele : NULL;
1821 }
1822 
1823 
1824 
1825 
1826 /* @func ensGvtranscriptvariationGetTranslationEnd ****************************
1827 **
1828 ** Get the Ensembl Translation end member of an
1829 ** Ensembl Genetic Variation Transcript Variation.
1830 **
1831 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::translation_end
1832 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1833 **                                                   Transcript Variation
1834 **
1835 ** @return [ajuint] Ensembl Translation end or 0U
1836 **
1837 ** @release 6.4.0
1838 ** @@
1839 ******************************************************************************/
1840 
ensGvtranscriptvariationGetTranslationEnd(const EnsPGvtranscriptvariation gvtv)1841 ajuint ensGvtranscriptvariationGetTranslationEnd(
1842     const EnsPGvtranscriptvariation gvtv)
1843 {
1844     return (gvtv) ? gvtv->TranslationEnd : 0U;
1845 }
1846 
1847 
1848 
1849 
1850 /* @func ensGvtranscriptvariationGetTranslationStart **************************
1851 **
1852 ** Get the Ensembl Translation start member of an
1853 ** Ensembl Genetic Variation Transcript Variation.
1854 **
1855 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::translation_start
1856 ** @param [r] gvtv [const EnsPGvtranscriptvariation] Ensembl Genetic Variation
1857 **                                                   Transcript Variation
1858 **
1859 ** @return [ajuint] Ensembl Translation start or 0U
1860 **
1861 ** @release 6.4.0
1862 ** @@
1863 ******************************************************************************/
1864 
ensGvtranscriptvariationGetTranslationStart(const EnsPGvtranscriptvariation gvtv)1865 ajuint ensGvtranscriptvariationGetTranslationStart(
1866     const EnsPGvtranscriptvariation gvtv)
1867 {
1868     return (gvtv) ? gvtv->TranslationStart : 0U;
1869 }
1870 
1871 
1872 
1873 
1874 /* @section member assignment *************************************************
1875 **
1876 ** Functions for assigning members of an
1877 ** Ensembl Genetic Variation Transcript Variation object.
1878 **
1879 ** @fdata [EnsPGvtranscriptvariation]
1880 **
1881 ** @nam3rule Set Set one member of an
1882 ** Ensembl Genetic Variation Transcript Variation
1883 ** @nam4rule Adaptor Set the Ensembl Genetic Variation
1884 **                   Transcript Variation Adaptor
1885 ** @nam4rule Coding Set coding region members
1886 ** @nam4rule Gvvariationfeature Set the
1887 ** Ensembl Genetic Variation Variation Feature
1888 ** @nam4rule Identifier Set the SQL database-internal identifier
1889 ** @nam4rule Transcript Set Ensembl Transcript members
1890 ** @nam4rule Translation Set Ensembl Translation members
1891 ** @nam5rule Allele Set the allele
1892 ** @nam5rule End Set the end coordinate
1893 ** @nam5rule Object Set an Ensembl Object
1894 ** @nam5rule Start Set the start coordinate
1895 **
1896 ** @argrule * gvtv [EnsPGvtranscriptvariation] Ensembl Genetic Variation
1897 **                                             Transcript Variation object
1898 ** @argrule Adaptor gvtva [EnsPGvtranscriptvariationadaptor]
1899 ** Ensembl Genetic Variation Transcript Variation Adaptor
1900 ** @argrule CodingEnd codingend [ajuint] Coding region end
1901 ** @argrule CodingStart codingstart [ajuint] Coding region start
1902 ** @argrule Gvvariationfeature gvvf [EnsPGvvariationfeature]
1903 ** Ensembl Genetic Variation Variation Feature
1904 ** @argrule Identifier identifier [ajuint] SQL database-internal identifier
1905 ** @argrule TranscriptEnd transcriptend [ajuint] Ensembl Transcript end
1906 ** @argrule TranscriptObject transcript [EnsPTranscript] Ensembl Transcript
1907 ** @argrule TranscriptStart transcriptstart [ajuint] Ensembl Transcript start
1908 ** @argrule TranslationAllele translationallele [AjPStr]
1909 ** Ensembl Translation allele
1910 ** @argrule TranslationEnd translationend [ajuint] Ensembl Translation end
1911 ** @argrule TranslationStart translationstart [ajuint]
1912 ** Ensembl Translation start
1913 **
1914 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
1915 **
1916 ** @fcategory modify
1917 ******************************************************************************/
1918 
1919 
1920 
1921 
1922 /* @func ensGvtranscriptvariationSetAdaptor ***********************************
1923 **
1924 ** Set the Ensembl Genetic Variation Transcript Variation Adaptor member of an
1925 ** Ensembl Genetic Variation Transcript Variation.
1926 **
1927 ** @cc Bio::EnsEMBL::Storable::adaptor
1928 ** @param [u] gvtv [EnsPGvtranscriptvariation]
1929 ** Ensembl Genetic Variation Transcript Variation
1930 ** @param [u] gvtva [EnsPGvtranscriptvariationadaptor]
1931 ** Ensembl Genetic Variation Transcript Variation Adaptor
1932 **
1933 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1934 **
1935 ** @release 6.4.0
1936 ** @@
1937 ******************************************************************************/
1938 
ensGvtranscriptvariationSetAdaptor(EnsPGvtranscriptvariation gvtv,EnsPGvtranscriptvariationadaptor gvtva)1939 AjBool ensGvtranscriptvariationSetAdaptor(
1940     EnsPGvtranscriptvariation gvtv,
1941     EnsPGvtranscriptvariationadaptor gvtva)
1942 {
1943     if (!gvtv)
1944         return ajFalse;
1945 
1946     gvtv->Adaptor = gvtva;
1947 
1948     return ajTrue;
1949 }
1950 
1951 
1952 
1953 
1954 /* @func ensGvtranscriptvariationSetCodingEnd *********************************
1955 **
1956 ** Set the coding region end member of an
1957 ** Ensembl Genetic Variation Transcript Variation.
1958 **
1959 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cds_end
1960 ** @param [u] gvtv [EnsPGvtranscriptvariation]
1961 ** Ensembl Genetic Variation Transcript Variation
1962 ** @param [r] codingend [ajuint] Coding region end
1963 **
1964 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1965 **
1966 ** @release 6.4.0
1967 ** @@
1968 ******************************************************************************/
1969 
ensGvtranscriptvariationSetCodingEnd(EnsPGvtranscriptvariation gvtv,ajuint codingend)1970 AjBool ensGvtranscriptvariationSetCodingEnd(
1971     EnsPGvtranscriptvariation gvtv,
1972     ajuint codingend)
1973 {
1974     if (!gvtv)
1975         return ajFalse;
1976 
1977     gvtv->CodingEnd = codingend;
1978 
1979     return ajTrue;
1980 }
1981 
1982 
1983 
1984 
1985 /* @func ensGvtranscriptvariationSetCodingStart *******************************
1986 **
1987 ** Set the coding region start member of an
1988 ** Ensembl Genetic Variation Transcript Variation.
1989 **
1990 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cds_start
1991 ** @param [u] gvtv [EnsPGvtranscriptvariation]
1992 ** Ensembl Genetic Variation Transcript Variation
1993 ** @param [r] codingstart [ajuint] Coding region start
1994 **
1995 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1996 **
1997 ** @release 6.4.0
1998 ** @@
1999 ******************************************************************************/
2000 
ensGvtranscriptvariationSetCodingStart(EnsPGvtranscriptvariation gvtv,ajuint codingstart)2001 AjBool ensGvtranscriptvariationSetCodingStart(
2002     EnsPGvtranscriptvariation gvtv,
2003     ajuint codingstart)
2004 {
2005     if (!gvtv)
2006         return ajFalse;
2007 
2008     gvtv->CodingStart = codingstart;
2009 
2010     return ajTrue;
2011 }
2012 
2013 
2014 
2015 
2016 /* @func ensGvtranscriptvariationSetGvvariationfeature ************************
2017 **
2018 ** Set the Ensembl Genetic Variation Variation Feature member of an
2019 ** Ensembl Genetic Variation Transcript Variation.
2020 **
2021 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::variation_feature
2022 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2023 ** Ensembl Genetic Variation Transcript Variation
2024 ** @param [uN] gvvf [EnsPGvvariationfeature] Ensembl Genetic Variation Feature
2025 **
2026 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2027 **
2028 ** @release 6.4.0
2029 ** @@
2030 ******************************************************************************/
2031 
ensGvtranscriptvariationSetGvvariationfeature(EnsPGvtranscriptvariation gvtv,EnsPGvvariationfeature gvvf)2032 AjBool ensGvtranscriptvariationSetGvvariationfeature(
2033     EnsPGvtranscriptvariation gvtv,
2034     EnsPGvvariationfeature gvvf)
2035 {
2036     if (!gvtv)
2037         return ajFalse;
2038 
2039     ensGvvariationfeatureDel(&gvtv->Gvvariationfeature);
2040 
2041     gvtv->Gvvariationfeature = ensGvvariationfeatureNewRef(gvvf);
2042 
2043     return ajTrue;
2044 }
2045 
2046 
2047 
2048 
2049 /* @func ensGvtranscriptvariationSetIdentifier ********************************
2050 **
2051 ** Set the SQL database-internal identifier member of an
2052 ** Ensembl Genetic Variation Transcript Variation.
2053 **
2054 ** @cc Bio::EnsEMBL::Storable::dbID
2055 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2056 ** Ensembl Genetic Variation Transcript Variation
2057 ** @param [r] identifier [ajuint] SQL database-internal identifier
2058 **
2059 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2060 **
2061 ** @release 6.4.0
2062 ** @@
2063 ******************************************************************************/
2064 
ensGvtranscriptvariationSetIdentifier(EnsPGvtranscriptvariation gvtv,ajuint identifier)2065 AjBool ensGvtranscriptvariationSetIdentifier(
2066     EnsPGvtranscriptvariation gvtv,
2067     ajuint identifier)
2068 {
2069     if (!gvtv)
2070         return ajFalse;
2071 
2072     gvtv->Identifier = identifier;
2073 
2074     return ajTrue;
2075 }
2076 
2077 
2078 
2079 
2080 /* @func ensGvtranscriptvariationSetTranscriptEnd *****************************
2081 **
2082 ** Set the Ensembl Transcript end member of an
2083 ** Ensembl Genetic Variation Transcript Variation.
2084 **
2085 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cdna_end
2086 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2087 ** Ensembl Genetic Variation Transcript Variation
2088 ** @param [r] transcriptend [ajuint] Ensembl Transcript end
2089 **
2090 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2091 **
2092 ** @release 6.4.0
2093 ** @@
2094 ******************************************************************************/
2095 
ensGvtranscriptvariationSetTranscriptEnd(EnsPGvtranscriptvariation gvtv,ajuint transcriptend)2096 AjBool ensGvtranscriptvariationSetTranscriptEnd(
2097     EnsPGvtranscriptvariation gvtv,
2098     ajuint transcriptend)
2099 {
2100     if (!gvtv)
2101         return ajFalse;
2102 
2103     gvtv->TranscriptEnd = transcriptend;
2104 
2105     return ajTrue;
2106 }
2107 
2108 
2109 
2110 
2111 /* @func ensGvtranscriptvariationSetTranscriptObject **************************
2112 **
2113 ** Set the Ensembl Transcript member of an
2114 ** Ensembl Genetic Variation Transcript Variation.
2115 **
2116 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::transcript
2117 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2118 ** Ensembl Genetic Variation Transcript Variation
2119 ** @param [uN] transcript [EnsPTranscript] Ensembl Transcript
2120 **
2121 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2122 **
2123 ** @release 6.4.0
2124 ** @@
2125 ******************************************************************************/
2126 
ensGvtranscriptvariationSetTranscriptObject(EnsPGvtranscriptvariation gvtv,EnsPTranscript transcript)2127 AjBool ensGvtranscriptvariationSetTranscriptObject(
2128     EnsPGvtranscriptvariation gvtv,
2129     EnsPTranscript transcript)
2130 {
2131     if (!gvtv)
2132         return ajFalse;
2133 
2134     ensTranscriptDel(&gvtv->TranscriptObject);
2135 
2136     gvtv->TranscriptObject = ensTranscriptNewRef(transcript);
2137 
2138     return ajTrue;
2139 }
2140 
2141 
2142 
2143 
2144 /* @func ensGvtranscriptvariationSetTranscriptStart ***************************
2145 **
2146 ** Set the Ensembl Transcript start member of an
2147 ** Ensembl Genetic Variation Transcript Variation.
2148 **
2149 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::cdna_start
2150 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2151 ** Ensembl Genetic Variation Transcript Variation
2152 ** @param [r] transcriptstart [ajuint] Ensembl Transcript start
2153 **
2154 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2155 **
2156 ** @release 6.4.0
2157 ** @@
2158 ******************************************************************************/
2159 
ensGvtranscriptvariationSetTranscriptStart(EnsPGvtranscriptvariation gvtv,ajuint transcriptstart)2160 AjBool ensGvtranscriptvariationSetTranscriptStart(
2161     EnsPGvtranscriptvariation gvtv,
2162     ajuint transcriptstart)
2163 {
2164     if (!gvtv)
2165         return ajFalse;
2166 
2167     gvtv->TranscriptStart = transcriptstart;
2168 
2169     return ajTrue;
2170 }
2171 
2172 
2173 
2174 
2175 /* @func ensGvtranscriptvariationSetTranslationAllele *************************
2176 **
2177 ** Set the Ensembl Translation allele member of an
2178 ** Ensembl Genetic Variation Transcript Variation.
2179 **
2180 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::pep_allele_string
2181 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2182 ** Ensembl Genetic Variation Transcript Variation
2183 ** @param [u] translationallele [AjPStr] Ensembl Translation allele
2184 **
2185 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2186 **
2187 ** @release 6.4.0
2188 ** @@
2189 ******************************************************************************/
2190 
ensGvtranscriptvariationSetTranslationAllele(EnsPGvtranscriptvariation gvtv,AjPStr translationallele)2191 AjBool ensGvtranscriptvariationSetTranslationAllele(
2192     EnsPGvtranscriptvariation gvtv,
2193     AjPStr translationallele)
2194 {
2195     if (!gvtv)
2196         return ajFalse;
2197 
2198     ajStrDel(&gvtv->TranslationAllele);
2199 
2200     if (translationallele)
2201         gvtv->TranslationAllele = ajStrNewRef(translationallele);
2202 
2203     return ajTrue;
2204 }
2205 
2206 
2207 
2208 
2209 /* @func ensGvtranscriptvariationSetTranslationEnd ****************************
2210 **
2211 ** Set the Ensembl Translation end member of an
2212 ** Ensembl Genetic Variation Transcript Variation.
2213 **
2214 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::translation_end
2215 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2216 ** Ensembl Genetic Variation Transcript Variation
2217 ** @param [r] translationend [ajuint] Ensembl Translation end
2218 **
2219 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2220 **
2221 ** @release 6.4.0
2222 ** @@
2223 ******************************************************************************/
2224 
ensGvtranscriptvariationSetTranslationEnd(EnsPGvtranscriptvariation gvtv,ajuint translationend)2225 AjBool ensGvtranscriptvariationSetTranslationEnd(
2226     EnsPGvtranscriptvariation gvtv,
2227     ajuint translationend)
2228 {
2229     if (!gvtv)
2230         return ajFalse;
2231 
2232     gvtv->TranslationEnd = translationend;
2233 
2234     return ajTrue;
2235 }
2236 
2237 
2238 
2239 
2240 /* @func ensGvtranscriptvariationSetTranslationStart **************************
2241 **
2242 ** Set the Ensembl Translation start member of an
2243 ** Ensembl Genetic Variation Transcript Variation.
2244 **
2245 ** @cc Bio::EnsEMBL::Variation::TranscriptVariation::translation_start
2246 ** @param [u] gvtv [EnsPGvtranscriptvariation]
2247 ** Ensembl Genetic Variation Transcript Variation
2248 ** @param [r] translationstart [ajuint] Ensembl Translation start
2249 **
2250 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2251 **
2252 ** @release 6.4.0
2253 ** @@
2254 ******************************************************************************/
2255 
ensGvtranscriptvariationSetTranslationStart(EnsPGvtranscriptvariation gvtv,ajuint translationstart)2256 AjBool ensGvtranscriptvariationSetTranslationStart(
2257     EnsPGvtranscriptvariation gvtv,
2258     ajuint translationstart)
2259 {
2260     if (!gvtv)
2261         return ajFalse;
2262 
2263     gvtv->TranslationStart = translationstart;
2264 
2265     return ajTrue;
2266 }
2267 
2268 
2269 
2270 
2271 /* @section debugging *********************************************************
2272 **
2273 ** Functions for reporting of an
2274 ** Ensembl Genetic Variation Transcript Variation object.
2275 **
2276 ** @fdata [EnsPGvtranscriptvariation]
2277 **
2278 ** @nam3rule Trace Report Ensembl Genetic Variation Transcript Variation
2279 **                 members to debug file
2280 **
2281 ** @argrule Trace gvtv [const EnsPGvtranscriptvariation]
2282 ** Ensembl Genetic Variation Transcript Variation
2283 ** @argrule Trace level [ajuint] Indentation level
2284 **
2285 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
2286 **
2287 ** @fcategory misc
2288 ******************************************************************************/
2289 
2290 
2291 
2292 
2293 /* @func ensGvtranscriptvariationTrace ****************************************
2294 **
2295 ** Trace an Ensembl Genetic Variation Transcript Variation.
2296 **
2297 ** @param [r] gvtv [const EnsPGvtranscriptvariation]
2298 ** Ensembl Genetic Variation Transcript Variation
2299 ** @param [r] level [ajuint] Indentation level
2300 **
2301 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2302 **
2303 ** @release 6.4.0
2304 ** @@
2305 ******************************************************************************/
2306 
ensGvtranscriptvariationTrace(const EnsPGvtranscriptvariation gvtv,ajuint level)2307 AjBool ensGvtranscriptvariationTrace(const EnsPGvtranscriptvariation gvtv,
2308                                      ajuint level)
2309 {
2310     AjPStr indent = NULL;
2311 
2312     if (!gvtv)
2313         return ajFalse;
2314 
2315     indent = ajStrNew();
2316 
2317     ajStrAppendCountK(&indent, ' ', level * 2);
2318 
2319     ajDebug("%SensGvtranscriptvariationTrace %p\n"
2320             "%S  Use %u\n"
2321             "%S  Identifier %u\n"
2322             "%S  Adaptor %p\n"
2323             "%S  TranscriptObject %p\n"
2324             "%S  Gvvariationfeature %p\n"
2325             "%S  TranslationAllele '%S'\n"
2326             "%S  CodingStart %u\n"
2327             "%S  CodingEnd %u\n"
2328             "%S  TranscriptStart %u\n"
2329             "%S  TranscriptEnd %u\n"
2330             "%S  TranslationStart %u\n"
2331             "%S  TranslationEnd %u\n",
2332             indent, gvtv,
2333             indent, gvtv->Use,
2334             indent, gvtv->Identifier,
2335             indent, gvtv->Adaptor,
2336             indent, gvtv->TranscriptObject,
2337             indent, gvtv->Gvvariationfeature,
2338             indent, gvtv->TranslationAllele,
2339             indent, gvtv->CodingStart,
2340             indent, gvtv->CodingEnd,
2341             indent, gvtv->TranscriptStart,
2342             indent, gvtv->TranscriptEnd,
2343             indent, gvtv->TranslationStart,
2344             indent, gvtv->TranslationEnd);
2345 
2346     ensTranscriptTrace(gvtv->TranscriptObject, level + 1);
2347 
2348     ensGvvariationfeatureTrace(gvtv->Gvvariationfeature, level + 1);
2349 
2350     ajStrDel(&indent);
2351 
2352     return ajTrue;
2353 }
2354 
2355 
2356 
2357 
2358 /* @section calculate *********************************************************
2359 **
2360 ** Functions for calculating information from an
2361 ** Ensembl Genetic Variation Transcript Variation object.
2362 **
2363 ** @fdata [EnsPGvtranscriptvariation]
2364 **
2365 ** @nam3rule Calculate
2366 ** Calculate Ensembl Genetic Variation Transcript Variation information
2367 ** @nam4rule Memsize Calculate the memory size in bytes
2368 **
2369 ** @argrule * gvtv [const EnsPGvtranscriptvariation]
2370 ** Ensembl Genetic Variation Transcript Variation
2371 **
2372 ** @valrule Memsize [size_t] Memory size in bytes or 0
2373 **
2374 ** @fcategory misc
2375 ******************************************************************************/
2376 
2377 
2378 
2379 
2380 /* @func ensGvtranscriptvariationCalculateMemsize *****************************
2381 **
2382 ** Calculate the memory size in bytes of an
2383 ** Ensembl Genetic Variation Transcript Variation.
2384 **
2385 ** @param [r] gvtv [const EnsPGvtranscriptvariation]
2386 ** Ensembl Genetic Variation Transcript Variation
2387 **
2388 ** @return [size_t] Memory size in bytes or 0
2389 **
2390 ** @release 6.4.0
2391 ** @@
2392 ******************************************************************************/
2393 
ensGvtranscriptvariationCalculateMemsize(const EnsPGvtranscriptvariation gvtv)2394 size_t ensGvtranscriptvariationCalculateMemsize(
2395     const EnsPGvtranscriptvariation gvtv)
2396 {
2397     size_t size = 0;
2398 
2399     if (!gvtv)
2400         return 0;
2401 
2402     size += sizeof (EnsOGvtranscriptvariation);
2403 
2404     size += ensTranscriptCalculateMemsize(gvtv->TranscriptObject);
2405 
2406     size += ensGvvariationfeatureCalculateMemsize(gvtv->Gvvariationfeature);
2407 
2408     if (gvtv->TranslationAllele)
2409     {
2410         size += sizeof (AjOStr);
2411 
2412         size += ajStrGetRes(gvtv->TranslationAllele);
2413     }
2414 
2415     return size;
2416 }
2417 
2418 
2419 
2420 
2421 /* @datasection [EnsPGvtranscriptvariationadaptor] Ensembl Genetic Variation
2422 ** Transcript Variation Adaptor
2423 **
2424 ** @nam2rule Gvtranscriptvariationadaptor Functions for manipulating
2425 ** Ensembl Genetic Variation Transcript Variation Adaptor objects
2426 **
2427 ** @cc Bio::EnsEMBL::Variation::DBSQL::TranscriptVariationAdaptor
2428 ** @cc CVS Revision: 1.29
2429 ** @cc CVS Tag: branch-ensembl-61
2430 **
2431 ******************************************************************************/
2432 
2433 
2434 
2435 
2436 /* @funcstatic gvtranscriptvariationadaptorFetchAllbyStatement ****************
2437 **
2438 ** Fetch all Ensembl Genetic Variation Transcript Variation objects
2439 ** via an SQL statement.
2440 **
2441 ** @cc Bio::EnsEMBL::Variation::DBSQL::TranscriptVariationAdaptor::
2442 ** _objs_from_sth
2443 ** @param [u] ba [EnsPBaseadaptor] Ensembl Base Adaptor
2444 ** @param [r] statement [const AjPStr] SQL statement
2445 ** @param [uN] am [EnsPAssemblymapper] Ensembl Assembly Mapper
2446 ** @param [uN] slice [EnsPSlice] Ensembl Slice
2447 ** @param [u] gvtvs [AjPList] AJAX List of Ensembl Genetic Variation
2448 **                            Transcript Variation objects
2449 **
2450 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2451 **
2452 ** @release 6.4.0
2453 ** @@
2454 ******************************************************************************/
2455 
gvtranscriptvariationadaptorFetchAllbyStatement(EnsPBaseadaptor ba,const AjPStr statement,EnsPAssemblymapper am,EnsPSlice slice,AjPList gvtvs)2456 static AjBool gvtranscriptvariationadaptorFetchAllbyStatement(
2457     EnsPBaseadaptor ba,
2458     const AjPStr statement,
2459     EnsPAssemblymapper am,
2460     EnsPSlice slice,
2461     AjPList gvtvs)
2462 {
2463     ajuint lastgvvfid       = 0U;
2464     ajuint identifier       = 0U;
2465     ajuint gvvfid           = 0U;
2466     ajuint codingstart      = 0U;
2467     ajuint codingend        = 0U;
2468     ajuint transcriptstart  = 0U;
2469     ajuint transcriptend    = 0U;
2470     ajuint translationstart = 0U;
2471     ajuint translationend   = 0U;
2472 
2473     AjPSqlstatement sqls = NULL;
2474     AjISqlrow sqli       = NULL;
2475     AjPSqlrow sqlr       = NULL;
2476 
2477     AjPStr gvctset            = NULL;
2478     AjPStr transcriptstableid = NULL;
2479     AjPStr translationallele  = NULL;
2480 
2481     EnsPDatabaseadaptor csdba = NULL;
2482     EnsPDatabaseadaptor gvdba = NULL;
2483 
2484     EnsPTranscript transcript = NULL;
2485     EnsPTranscriptadaptor tca = NULL;
2486 
2487     EnsPGvtranscriptvariation        gvtv  = NULL;
2488     EnsPGvtranscriptvariationadaptor gvtva = NULL;
2489 
2490     EnsPGvvariationfeature        gvvf  = NULL;
2491     EnsPGvvariationfeatureadaptor gvvfa = NULL;
2492 
2493     if (ajDebugTest("gvtranscriptvariationadaptorFetchAllbyStatement"))
2494         ajDebug("gvtranscriptvariationadaptorFetchAllbyStatement\n"
2495                 "  ba %p\n"
2496                 "  statement %p\n"
2497                 "  am %p\n"
2498                 "  slice %p\n"
2499                 "  gvtvs %p\n",
2500                 ba,
2501                 statement,
2502                 am,
2503                 slice,
2504                 gvtvs);
2505 
2506     if (!ba)
2507         return ajFalse;
2508 
2509     if (!statement)
2510         return ajFalse;
2511 
2512     if (!gvtvs)
2513         return ajFalse;
2514 
2515     gvdba = ensBaseadaptorGetDatabaseadaptor(ba);
2516 
2517     gvtva = ensRegistryGetGvtranscriptvariationadaptor(gvdba);
2518     gvvfa = ensRegistryGetGvvariationfeatureadaptor(gvdba);
2519     csdba = ensRegistryGetReferenceadaptor(gvdba);
2520     tca   = ensRegistryGetTranscriptadaptor(csdba);
2521 
2522     sqls = ensDatabaseadaptorSqlstatementNew(gvdba, statement);
2523 
2524     sqli = ajSqlrowiterNew(sqls);
2525 
2526     while (!ajSqlrowiterDone(sqli))
2527     {
2528         identifier         = 0;
2529         transcriptstableid = ajStrNew();
2530         gvvfid             = 0;
2531         transcriptstart    = 0;
2532         transcriptend      = 0;
2533         codingstart        = 0;
2534         codingend          = 0;
2535         translationstart   = 0;
2536         translationend     = 0;
2537         translationallele  = ajStrNew();
2538         gvctset            = ajStrNew();
2539 
2540         sqlr = ajSqlrowiterGet(sqli);
2541 
2542         ajSqlcolumnToUint(sqlr, &identifier);
2543         ajSqlcolumnToStr(sqlr, &transcriptstableid);
2544         ajSqlcolumnToUint(sqlr, &gvvfid);
2545         ajSqlcolumnToUint(sqlr, &transcriptstart);
2546         ajSqlcolumnToUint(sqlr, &transcriptend);
2547         ajSqlcolumnToUint(sqlr, &codingstart);
2548         ajSqlcolumnToUint(sqlr, &codingend);
2549         ajSqlcolumnToUint(sqlr, &translationstart);
2550         ajSqlcolumnToUint(sqlr, &translationend);
2551         ajSqlcolumnToStr(sqlr, &translationallele);
2552         ajSqlcolumnToStr(sqlr, &gvctset);
2553 
2554         /*
2555         ** Skip multiple rows, because of the SQL LEFT JOIN condition to
2556         ** the "failed_variation" SQL table.
2557         */
2558 
2559         if (lastgvvfid == identifier)
2560         {
2561             ajStrDel(&transcriptstableid);
2562             ajStrDel(&translationallele);
2563             ajStrDel(&gvctset);
2564 
2565             continue;
2566         }
2567         else
2568             lastgvvfid = identifier;
2569 
2570         /*
2571         ** TODO: Ensembl Transcript and Ensembl Genetic Variation Variation
2572         ** Feature objects should be fetched from the database in bulk
2573         ** via AJAX Table fetch functions.
2574         ** TODO: The Perl implementation stores the Ensembl Genetic Variation
2575         ** Variation Feature identifier and loads the object from the SQL
2576         ** database on demand.
2577         */
2578 
2579         ensTranscriptadaptorFetchByStableidentifier(
2580             tca,
2581             transcriptstableid,
2582             0,
2583             &transcript);
2584 
2585         ensGvvariationfeatureadaptorFetchByIdentifier(
2586             gvvfa,
2587             identifier,
2588             &gvvf);
2589 
2590         gvtv = ensGvtranscriptvariationNewIni(
2591             gvtva,
2592             identifier,
2593             transcript,
2594             gvvf,
2595             translationallele,
2596             gvctset,
2597             codingstart,
2598             codingend,
2599             transcriptstart,
2600             transcriptend,
2601             translationstart,
2602             translationend);
2603 
2604         ajListPushAppend(gvtvs, (void *) gvtv);
2605 
2606         ensGvvariationfeatureDel(&gvvf);
2607 
2608         ensTranscriptDel(&transcript);
2609 
2610         ajStrDel(&transcriptstableid);
2611         ajStrDel(&translationallele);
2612         ajStrDel(&gvctset);
2613     }
2614 
2615     ajSqlrowiterDel(&sqli);
2616 
2617     ensDatabaseadaptorSqlstatementDel(gvdba, &sqls);
2618 
2619     return ajTrue;
2620 }
2621 
2622 
2623 
2624 
2625 /* @section constructors ******************************************************
2626 **
2627 ** All constructors return a new Ensembl Genetic Variation Transcript Variation
2628 ** Adaptor by pointer.
2629 ** It is the responsibility of the user to first destroy any previous
2630 ** Genetic Variation Transcript Variation Adaptor.
2631 ** The target pointer does not need to be initialised to NULL,
2632 ** but it is good programming practice to do so anyway.
2633 **
2634 ** @fdata [EnsPGvtranscriptvariationadaptor]
2635 **
2636 ** @nam3rule New Constructor
2637 **
2638 ** @argrule New dba [EnsPDatabaseadaptor] Ensembl Database Adaptor
2639 **
2640 ** @valrule * [EnsPGvtranscriptvariationadaptor]
2641 ** Ensembl Genetic Variation Transcript Variation Adaptor or NULL
2642 **
2643 ** @fcategory new
2644 ******************************************************************************/
2645 
2646 
2647 
2648 
2649 /* @func ensGvtranscriptvariationadaptorNew ***********************************
2650 **
2651 ** Default constructor for an
2652 ** Ensembl Genetic Variation Transcript Variation Adaptor.
2653 **
2654 ** Ensembl Object Adaptors are singleton objects in the sense that a single
2655 ** instance of an Ensembl Object Adaptor connected to a particular database is
2656 ** sufficient to instantiate any number of Ensembl Objects from the database.
2657 ** Each Ensembl Object will have a weak reference to the Object Adaptor that
2658 ** instantiated it. Therefore, Ensembl Object Adaptors should not be
2659 ** instantiated directly, but rather obtained from the Ensembl Registry,
2660 ** which will in turn call this function if neccessary.
2661 **
2662 ** @see ensRegistryGetDatabaseadaptor
2663 ** @see ensRegistryGetGvtranscriptvariationadaptor
2664 **
2665 ** @cc Bio::EnsEMBL::Variation::DBSQL::TranscriptVariationAdaptor::new
2666 ** @param [u] dba [EnsPDatabaseadaptor] Ensembl Database Adaptor
2667 **
2668 ** @return [EnsPGvtranscriptvariationadaptor]
2669 ** Ensembl Genetic Variation Transcript Variation Adaptor or NULL
2670 **
2671 ** @release 6.4.0
2672 ** @@
2673 ******************************************************************************/
2674 
ensGvtranscriptvariationadaptorNew(EnsPDatabaseadaptor dba)2675 EnsPGvtranscriptvariationadaptor ensGvtranscriptvariationadaptorNew(
2676     EnsPDatabaseadaptor dba)
2677 {
2678     EnsPBaseadaptor ba = NULL;
2679 
2680     EnsPGvtranscriptvariationadaptor gvtva = NULL;
2681 
2682     if (!dba)
2683         return NULL;
2684 
2685     if (ajDebugTest("ensGvtranscriptvariationadaptorNew"))
2686         ajDebug("ensGvtranscriptvariationadaptorNew\n"
2687                 "  dba %p\n",
2688                 dba);
2689 
2690     ba = ensBaseadaptorNew(
2691         dba,
2692         gvtranscriptvariationadaptorKTablenames,
2693         gvtranscriptvariationadaptorKColumnnames,
2694         gvtranscriptvariationadaptorKLeftjoins,
2695         gvtranscriptvariationadaptorKDefaultcondition,
2696         (const char *) NULL,
2697         &gvtranscriptvariationadaptorFetchAllbyStatement);
2698 
2699     if (!ba)
2700         return NULL;
2701 
2702     AJNEW0(gvtva);
2703 
2704     gvtva->Adaptor     = ensRegistryGetGvdatabaseadaptor(dba);
2705     gvtva->Baseadaptor = ba;
2706 
2707     return gvtva;
2708 }
2709 
2710 
2711 
2712 
2713 /* @section destructors *******************************************************
2714 **
2715 ** Destruction destroys all internal data structures and frees the memory
2716 ** allocated for an Ensembl Genetic Variation Transcript Variation Adaptor
2717 ** object.
2718 **
2719 ** @fdata [EnsPGvtranscriptvariationadaptor]
2720 **
2721 ** @nam3rule Del Destroy (free) an
2722 ** Ensembl Genetic Variation Transcript Variation Adaptor
2723 **
2724 ** @argrule * Pgvtva [EnsPGvtranscriptvariationadaptor*]
2725 ** Ensembl Genetic Variation Transcript Variation Adaptor address
2726 **
2727 ** @valrule * [void]
2728 **
2729 ** @fcategory delete
2730 ******************************************************************************/
2731 
2732 
2733 
2734 
2735 /* @func ensGvtranscriptvariationadaptorDel ***********************************
2736 **
2737 ** Default destructor for an
2738 ** Ensembl Genetic Variation Transcript Variation Adaptor.
2739 **
2740 ** Ensembl Object Adaptors are singleton objects that are registered in the
2741 ** Ensembl Registry and weakly referenced by Ensembl Objects that have been
2742 ** instantiated by it. Therefore, Ensembl Object Adaptors should never be
2743 ** destroyed directly. Upon exit, the Ensembl Registry will call this function
2744 ** if required.
2745 **
2746 ** @param [d] Pgvtva [EnsPGvtranscriptvariationadaptor*]
2747 ** Ensembl Genetic Variation Transcript Variation Adaptor address
2748 **
2749 ** @return [void]
2750 **
2751 ** @release 6.4.0
2752 ** @@
2753 ******************************************************************************/
2754 
ensGvtranscriptvariationadaptorDel(EnsPGvtranscriptvariationadaptor * Pgvtva)2755 void ensGvtranscriptvariationadaptorDel(
2756     EnsPGvtranscriptvariationadaptor *Pgvtva)
2757 {
2758     EnsPGvtranscriptvariationadaptor pthis = NULL;
2759 
2760     if (!Pgvtva)
2761         return;
2762 
2763 #if defined(AJ_DEBUG) && AJ_DEBUG >= 1
2764     if (ajDebugTest("ensGvtranscriptvariationadaptorDel"))
2765         ajDebug("ensGvtranscriptvariationadaptorDel\n"
2766                 "  *Pgvtva %p\n",
2767                 *Pgvtva);
2768 #endif /* defined(AJ_DEBUG) && AJ_DEBUG >= 1 */
2769 
2770     if (!(pthis = *Pgvtva))
2771         return;
2772 
2773     ensBaseadaptorDel(&pthis->Baseadaptor);
2774 
2775     ajMemFree((void **) Pgvtva);
2776 
2777     return;
2778 }
2779 
2780 
2781 
2782 
2783 /* @section member retrieval **************************************************
2784 **
2785 ** Functions for returning members of an
2786 ** Ensembl Genetic Variation Transcript Variation Adaptor object.
2787 **
2788 ** @fdata [EnsPGvtranscriptvariationadaptor]
2789 **
2790 ** @nam3rule Get Return Ensembl Genetic Variation Transcript Variation Adaptor
2791 ** attribute(s)
2792 ** @nam4rule Baseadaptor
2793 ** Return the Ensembl Base Adaptor
2794 ** @nam4rule Databaseadaptor
2795 ** Return the Ensembl Database Adaptor
2796 ** @nam4rule Gvbaseadaptor
2797 ** Return the Ensembl Genetic Variation Base Adaptor
2798 ** @nam4rule Gvdatabaseadaptor
2799 ** Return the Ensembl Genetic Variation Database Adaptor
2800 **
2801 ** @argrule * gvtva [EnsPGvtranscriptvariationadaptor]
2802 ** Ensembl Genetic Variation Variation Adaptor
2803 **
2804 ** @valrule Baseadaptor [EnsPBaseadaptor]
2805 ** Ensembl Base Adaptor or NULL
2806 ** @valrule Databaseadaptor [EnsPDatabaseadaptor]
2807 ** Ensembl Database Adaptor or NULL
2808 ** @valrule Gvbaseadaptor [EnsPGvbaseadaptor]
2809 ** Ensembl Genetic Variation Base Adaptor or NULL
2810 ** @valrule Gvdatabaseadaptor [EnsPGvdatabaseadaptor]
2811 ** Ensembl Genetic Variation Database Adaptor or NULL
2812 **
2813 ** @fcategory use
2814 ******************************************************************************/
2815 
2816 
2817 
2818 
2819 /* @func ensGvtranscriptvariationadaptorGetBaseadaptor ************************
2820 **
2821 ** Get the Ensembl Base Adaptor member of an
2822 ** Ensembl Genetic Variation Transcript Variation Adaptor.
2823 **
2824 ** @param [u] gvtva [EnsPGvtranscriptvariationadaptor]
2825 ** Ensembl Genetic Variation Transcript Variation Adaptor
2826 **
2827 ** @return [EnsPBaseadaptor] Ensembl Base Adaptor or NULL
2828 **
2829 ** @release 6.5.0
2830 ** @@
2831 ******************************************************************************/
2832 
ensGvtranscriptvariationadaptorGetBaseadaptor(EnsPGvtranscriptvariationadaptor gvtva)2833 EnsPBaseadaptor ensGvtranscriptvariationadaptorGetBaseadaptor(
2834     EnsPGvtranscriptvariationadaptor gvtva)
2835 {
2836     return ensGvbaseadaptorGetBaseadaptor(
2837         ensGvtranscriptvariationadaptorGetGvbaseadaptor(gvtva));
2838 }
2839 
2840 
2841 
2842 
2843 /* @func ensGvtranscriptvariationadaptorGetDatabaseadaptor ********************
2844 **
2845 ** Get the Ensembl Database Adaptor member of an
2846 ** Ensembl Genetic Variation Transcript Variation Adaptor.
2847 **
2848 ** @param [u] gvtva [EnsPGvtranscriptvariationadaptor]
2849 ** Ensembl Genetic Variation Transcript Variation Adaptor
2850 **
2851 ** @return [EnsPDatabaseadaptor] Ensembl Database Adaptor or NULL
2852 **
2853 ** @release 6.5.0
2854 ** @@
2855 ******************************************************************************/
2856 
ensGvtranscriptvariationadaptorGetDatabaseadaptor(EnsPGvtranscriptvariationadaptor gvtva)2857 EnsPDatabaseadaptor ensGvtranscriptvariationadaptorGetDatabaseadaptor(
2858     EnsPGvtranscriptvariationadaptor gvtva)
2859 {
2860     return ensGvbaseadaptorGetDatabaseadaptor(
2861         ensGvtranscriptvariationadaptorGetGvbaseadaptor(gvtva));
2862 }
2863 
2864 
2865 
2866 
2867 /* @func ensGvtranscriptvariationadaptorGetGvbaseadaptor **********************
2868 **
2869 ** Get the Ensembl Genetic Variation Base Adaptor member of an
2870 ** Ensembl Genetic Variation Transcript Variation Adaptor.
2871 **
2872 ** @param [u] gvtva [EnsPGvtranscriptvariationadaptor]
2873 ** Ensembl Genetic Variation Transcript Variation Adaptor
2874 **
2875 ** @return [EnsPGvbaseadaptor] Ensembl Genetic Variation Base Adaptor or NULL
2876 **
2877 ** @release 6.5.0
2878 ** @@
2879 ******************************************************************************/
2880 
ensGvtranscriptvariationadaptorGetGvbaseadaptor(EnsPGvtranscriptvariationadaptor gvtva)2881 EnsPGvbaseadaptor ensGvtranscriptvariationadaptorGetGvbaseadaptor(
2882     EnsPGvtranscriptvariationadaptor gvtva)
2883 {
2884     return gvtva;
2885 }
2886 
2887 
2888 
2889 
2890 /* @func ensGvtranscriptvariationadaptorGetGvdatabaseadaptor ******************
2891 **
2892 ** Get the Ensembl Genetic Variation Database Adaptor member of an
2893 ** Ensembl Genetic Variation Transcript Variation Adaptor.
2894 **
2895 ** @param [u] gvtva [EnsPGvtranscriptvariationadaptor]
2896 ** Ensembl Genetic Variation Transcript Variation Adaptor
2897 **
2898 ** @return [EnsPGvdatabaseadaptor]
2899 ** Ensembl Genetic Variation Database Adaptor or NULL
2900 **
2901 ** @release 6.5.0
2902 ** @@
2903 ******************************************************************************/
2904 
ensGvtranscriptvariationadaptorGetGvdatabaseadaptor(EnsPGvtranscriptvariationadaptor gvtva)2905 EnsPGvdatabaseadaptor ensGvtranscriptvariationadaptorGetGvdatabaseadaptor(
2906     EnsPGvtranscriptvariationadaptor gvtva)
2907 {
2908     return ensGvbaseadaptorGetGvdatabaseadaptor(
2909         ensGvtranscriptvariationadaptorGetGvbaseadaptor(gvtva));
2910 }
2911