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