1 /* @source ensqcsubmission ****************************************************
2 **
3 ** Ensembl Quality Check Submission functions
4 **
5 ** @author Copyright (C) 1999 Ensembl Developers
6 ** @author Copyright (C) 2006 Michael K. Schuster
7 ** @version $Revision: 1.17 $
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 "ensqcsubmission.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 qcsubmissionadaptorKTablenames ********************************
64 **
65 ** Array of Ensembl Quality Check Submission Adaptor SQL table names
66 **
67 ******************************************************************************/
68
69 static const char *qcsubmissionadaptorKTablenames[] =
70 {
71 "submission",
72 (const char *) NULL
73 };
74
75
76
77
78 /* @conststatic qcsubmissionadaptorKColumnnames *******************************
79 **
80 ** Array of Ensembl Quality Check Submission Adaptor SQL column names
81 **
82 ******************************************************************************/
83
84 static const char *qcsubmissionadaptorKColumnnames[] =
85 {
86 "submission.submission_id",
87 "submission.analysis_id",
88 "submission.query_db_id",
89 "submission.query_id"
90 "submission.target_db_id"
91 "submission.target_id",
92 "submission.target_start",
93 "submission.target_end",
94 "submission.target_strand",
95 "submission.analysis_job_id",
96 (const char *) NULL
97 };
98
99
100
101
102 /* ========================================================================= */
103 /* =========================== private variables =========================== */
104 /* ========================================================================= */
105
106
107
108
109 /* ========================================================================= */
110 /* =========================== private functions =========================== */
111 /* ========================================================================= */
112
113 static AjBool qcsubmissionadaptorFetchAllbyStatement(
114 EnsPBaseadaptor ba,
115 const AjPStr statement,
116 EnsPAssemblymapper am,
117 EnsPSlice slice,
118 AjPList qcss);
119
120
121
122
123 /* ========================================================================= */
124 /* ======================= All functions by section ======================== */
125 /* ========================================================================= */
126
127
128
129
130 /* @filesection ensqcsubmission ***********************************************
131 **
132 ** @nam1rule ens Function belongs to the Ensembl library
133 **
134 ******************************************************************************/
135
136
137
138
139 /* @datasection [EnsPQcsubmission] Ensembl Quality Check Submission ***********
140 **
141 ** @nam2rule Qcsubmission Functions for manipulating
142 ** Ensembl Quality Check Submission objects
143 **
144 ** @cc Bio::EnsEMBL::QC::Submission
145 ** @cc CVS Revision:
146 ** @cc CVS Tag:
147 **
148 ******************************************************************************/
149
150
151
152
153 /* @section constructors ******************************************************
154 **
155 ** All constructors return a new Ensembl Quality Check Submission by pointer.
156 ** It is the responsibility of the user to first destroy any previous
157 ** Quality Check Submission. The target pointer does not need to be initialised
158 ** to NULL, but it is good programming practice to do so anyway.
159 **
160 ** @fdata [EnsPQcsubmission]
161 **
162 ** @nam3rule New Constructor
163 ** @nam4rule Cpy Constructor with existing object
164 ** @nam4rule Ini Constructor with initial values
165 ** @nam4rule Ref Constructor by incrementing the reference counter
166 **
167 ** @argrule Cpy qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
168 ** @argrule Ini qcsba [EnsPQcsubmissionadaptor]
169 ** Ensembl Quality Check Submission Adaptor
170 ** @argrule Ini identifier [ajuint] SQL database-internal identifier
171 ** @argrule Ini analysis [EnsPAnalysis] Ensembl Analysis
172 ** @argrule Ini qsequence [EnsPQcsequence]
173 ** Query Ensembl Quality Check Sequence
174 ** @argrule Ini tsequence [EnsPQcsequence]
175 ** Target Ensembl Quality Check Sequence
176 ** @argrule Ini tstart [ajuint] Target start
177 ** @argrule Ini tend [ajuint] Target end
178 ** @argrule Ini tstrand [ajint] Target strand
179 ** @argrule Ini analysisjobid [ajuint] Ensembl Hive Analysis Job identifier
180 ** @argrule Ref qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
181 **
182 ** @valrule * [EnsPQcsubmission] Ensembl Quality Check Submission or NULL
183 **
184 ** @fcategory new
185 ******************************************************************************/
186
187
188
189
190 /* @func ensQcsubmissionNewCpy ************************************************
191 **
192 ** Object-based constructor function, which returns an independent object.
193 **
194 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
195 **
196 ** @return [EnsPQcsubmission] Ensembl Quality Check Submission or NULL
197 **
198 ** @release 6.4.0
199 ** @@
200 ******************************************************************************/
201
ensQcsubmissionNewCpy(const EnsPQcsubmission qcsb)202 EnsPQcsubmission ensQcsubmissionNewCpy(const EnsPQcsubmission qcsb)
203 {
204 EnsPQcsubmission pthis = NULL;
205
206 if (!qcsb)
207 return NULL;
208
209 AJNEW0(pthis);
210
211 pthis->Use = 1U;
212 pthis->Identifier = qcsb->Identifier;
213 pthis->Adaptor = qcsb->Adaptor;
214 pthis->Analysis = ensAnalysisNewRef(qcsb->Analysis);
215 pthis->QuerySequence = ensQcsequenceNewRef(qcsb->QuerySequence);
216 pthis->TargetSequence = ensQcsequenceNewRef(qcsb->TargetSequence);
217 pthis->TargetStart = qcsb->TargetStart;
218 pthis->TargetEnd = qcsb->TargetEnd;
219 pthis->TargetStrand = qcsb->TargetStrand;
220 pthis->Analysisjobidentifier = qcsb->Analysisjobidentifier;
221
222 return pthis;
223 }
224
225
226
227
228 /* @func ensQcsubmissionNewIni ************************************************
229 **
230 ** Constructor for an Ensembl Quality Check Submission with initial values.
231 **
232 ** @cc Bio::EnsEMBL::Storable::new
233 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
234 ** Ensembl Quality Check Submission Adaptor
235 ** @param [r] identifier [ajuint] SQL database-internal identifier
236 ** @cc Bio::EnsEMBL::QC::Submission::new
237 ** @param [u] analysis [EnsPAnalysis] Ensembl Analysis
238 ** @param [u] qsequence [EnsPQcsequence] Query Ensembl Quality Check Sequence
239 ** @param [u] tsequence [EnsPQcsequence] Target Ensembl Quality Check Sequence
240 ** @param [r] tstart [ajuint] Target start
241 ** @param [r] tend [ajuint] Target end
242 ** @param [r] tstrand [ajint] Target strand
243 ** @param [r] analysisjobid [ajuint] Ensembl Hive Analysis Job identifier
244 **
245 ** @return [EnsPQcsubmission] Ensembl Quality Check Submission or NULL
246 **
247 ** @release 6.4.0
248 ** @@
249 ******************************************************************************/
250
ensQcsubmissionNewIni(EnsPQcsubmissionadaptor qcsba,ajuint identifier,EnsPAnalysis analysis,EnsPQcsequence qsequence,EnsPQcsequence tsequence,ajuint tstart,ajuint tend,ajint tstrand,ajuint analysisjobid)251 EnsPQcsubmission ensQcsubmissionNewIni(EnsPQcsubmissionadaptor qcsba,
252 ajuint identifier,
253 EnsPAnalysis analysis,
254 EnsPQcsequence qsequence,
255 EnsPQcsequence tsequence,
256 ajuint tstart,
257 ajuint tend,
258 ajint tstrand,
259 ajuint analysisjobid)
260 {
261 EnsPQcsubmission qcsb = NULL;
262
263 if (!analysis)
264 return NULL;
265
266 if (!qsequence)
267 return NULL;
268
269 if (!tsequence)
270 return NULL;
271
272 AJNEW0(qcsb);
273
274 qcsb->Use = 1U;
275
276 qcsb->Identifier = identifier;
277
278 qcsb->Adaptor = qcsba;
279
280 qcsb->Analysis = ensAnalysisNewRef(analysis);
281
282 qcsb->QuerySequence = ensQcsequenceNewRef(qsequence);
283 qcsb->TargetSequence = ensQcsequenceNewRef(tsequence);
284
285 qcsb->TargetStart = tstart;
286 qcsb->TargetEnd = tend;
287 qcsb->TargetStrand = tstrand;
288
289 qcsb->Analysisjobidentifier = analysisjobid;
290
291 return qcsb;
292 }
293
294
295
296
297 /* @func ensQcsubmissionNewRef ************************************************
298 **
299 ** Ensembl Object referencing function, which returns a pointer to the
300 ** Ensembl Object passed in and increases its reference count.
301 **
302 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Submission
303 **
304 ** @return [EnsPQcsubmission] Ensembl Quality Check Submission or NULL
305 **
306 ** @release 6.2.0
307 ** @@
308 ******************************************************************************/
309
ensQcsubmissionNewRef(EnsPQcsubmission qcsb)310 EnsPQcsubmission ensQcsubmissionNewRef(EnsPQcsubmission qcsb)
311 {
312 if (!qcsb)
313 return NULL;
314
315 qcsb->Use++;
316
317 return qcsb;
318 }
319
320
321
322
323 /* @section destructors *******************************************************
324 **
325 ** Destruction destroys all internal data structures and frees the memory
326 ** allocated for an Ensembl Quality Check Submission object.
327 **
328 ** @fdata [EnsPQcsubmission]
329 **
330 ** @nam3rule Del Destroy (free) an Ensembl Quality Check Submission
331 **
332 ** @argrule * Pqcsb [EnsPQcsubmission*]
333 ** Ensembl Quality Check Submission address
334 **
335 ** @valrule * [void]
336 **
337 ** @fcategory delete
338 ******************************************************************************/
339
340
341
342
343 /* @func ensQcsubmissionDel ***************************************************
344 **
345 ** Default destructor for an Ensembl Quality Check Submission.
346 **
347 ** Ensembl Object Adaptors are singleton objects that are registered in the
348 ** Ensembl Registry and weakly referenced by Ensembl Objects that have been
349 ** instantiated by it. Therefore, Ensembl Object Adaptors should never be
350 ** destroyed directly. Upon exit, the Ensembl Registry will call this function
351 ** if required.
352 **
353 ** @param [d] Pqcsb [EnsPQcsubmission*]
354 ** Ensembl Quality Check Submission address
355 **
356 ** @return [void]
357 **
358 ** @release 6.2.0
359 ** @@
360 ******************************************************************************/
361
ensQcsubmissionDel(EnsPQcsubmission * Pqcsb)362 void ensQcsubmissionDel(EnsPQcsubmission *Pqcsb)
363 {
364 EnsPQcsubmission pthis = NULL;
365
366 if (!Pqcsb)
367 return;
368
369 #if defined(AJ_DEBUG) && AJ_DEBUG >= 1
370 if (ajDebugTest("ensQcsubmissionDel"))
371 {
372 ajDebug("ensQcsubmissionDel\n"
373 " *Pqcsb %p\n",
374 *Pqcsb);
375
376 ensQcsubmissionTrace(*Pqcsb, 1);
377 }
378 #endif /* defined(AJ_DEBUG) && AJ_DEBUG >= 1 */
379
380 if (!(pthis = *Pqcsb) || --pthis->Use)
381 {
382 *Pqcsb = NULL;
383
384 return;
385 }
386
387 ensAnalysisDel(&pthis->Analysis);
388
389 ensQcsequenceDel(&pthis->QuerySequence);
390 ensQcsequenceDel(&pthis->TargetSequence);
391
392 ajMemFree((void **) Pqcsb);
393
394 return;
395 }
396
397
398
399
400 /* @section member retrieval **************************************************
401 **
402 ** Functions for returning members of an
403 ** Ensembl Quality Check Submission object.
404 **
405 ** @fdata [EnsPQcsubmission]
406 **
407 ** @nam3rule Get Return Ensembl Quality Check Submission attribute(s)
408 ** @nam4rule Adaptor Return the Ensembl Quality Check Submission Adaptor
409 ** @nam4rule Analysis Return the Ensembl Analysis
410 ** @nam4rule Analysisjobidentifier Return the Hive Analysis Job Identifier
411 ** @nam4rule Identifier Return the SQL database-internal identifier
412 ** @nam4rule Query Return query members
413 ** @nam5rule End Return the query end
414 ** @nam5rule Sequence Return the query Ensembl Quality Check Sequence
415 ** @nam5rule Start Return the query start
416 ** @nam5rule Strand Return the query strand
417 ** @nam4rule Target Return target members
418 ** @nam5rule End Return the target end
419 ** @nam5rule Sequence Return the target Ensembl Quality Check Sequence
420 ** @nam5rule Start Return the target start
421 ** @nam5rule Strand Return the target strand
422 **
423 ** @argrule * qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
424 **
425 ** @valrule Adaptor [EnsPQcsubmissionadaptor]
426 ** Ensembl Quality Check Submission Adaptor or NULL
427 ** @valrule Analysis [EnsPAnalysis] Ensembl Analysis or NULL
428 ** @valrule Analysisjobidentifier [ajuint] Hive Analysis Job Identifier or 0U
429 ** @valrule Identifier [ajuint] SQL database-internal identifier or 0U
430 ** @valrule QueryEnd [ajuint] Query end or 0U
431 ** @valrule QuerySequence [EnsPQcsequence]
432 ** Query Ensembl Quality Check Sequence or NULL
433 ** @valrule QueryStart [ajuint] Query start or 0U
434 ** @valrule QueryStrand [ajint] Query strand or 0
435 ** @valrule TargetEnd [ajuint] Target end or 0U
436 ** @valrule TargetSequence [EnsPQcsequence]
437 ** Target Ensembl Quality Check Sequence or NULL
438 ** @valrule TargetStart [ajuint] Target start or 0U
439 ** @valrule TargetStrand [ajint] Target strand or 0
440 **
441 ** @fcategory use
442 ******************************************************************************/
443
444
445
446
447 /* @func ensQcsubmissionGetAdaptor ********************************************
448 **
449 ** Get the Ensembl Quality Check Submission Adaptor member of an
450 ** Ensembl Quality Check Submission.
451 **
452 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
453 **
454 ** @return [EnsPQcsubmissionadaptor] Ensembl Quality Check Submission Adaptor
455 ** or NULL
456 **
457 ** @release 6.2.0
458 ** @@
459 ******************************************************************************/
460
ensQcsubmissionGetAdaptor(const EnsPQcsubmission qcsb)461 EnsPQcsubmissionadaptor ensQcsubmissionGetAdaptor(const EnsPQcsubmission qcsb)
462 {
463 return (qcsb) ? qcsb->Adaptor : NULL;
464 }
465
466
467
468
469 /* @func ensQcsubmissionGetAnalysis *******************************************
470 **
471 ** Get the Ensembl Analysis member of an Ensembl Quality Check Submission.
472 **
473 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
474 **
475 ** @return [EnsPAnalysis] Ensembl Analysis or NULL
476 **
477 ** @release 6.2.0
478 ** @@
479 ******************************************************************************/
480
ensQcsubmissionGetAnalysis(const EnsPQcsubmission qcsb)481 EnsPAnalysis ensQcsubmissionGetAnalysis(const EnsPQcsubmission qcsb)
482 {
483 return (qcsb) ? qcsb->Analysis : NULL;
484 }
485
486
487
488
489 /* @func ensQcsubmissionGetAnalysisjobidentifier ******************************
490 **
491 ** Get the Hive Analysis Job identifier member of an
492 ** Ensembl Quality Check Variation.
493 **
494 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Variation
495 **
496 ** @return [ajuint] Hive Analysis Job identifier or 0U
497 **
498 ** @release 6.4.0
499 ** @@
500 ******************************************************************************/
501
ensQcsubmissionGetAnalysisjobidentifier(const EnsPQcsubmission qcsb)502 ajuint ensQcsubmissionGetAnalysisjobidentifier(const EnsPQcsubmission qcsb)
503 {
504 return (qcsb) ? qcsb->Analysisjobidentifier : 0U;
505 }
506
507
508
509
510 /* @func ensQcsubmissionGetIdentifier *****************************************
511 **
512 ** Get the SQL database-internal identifier member of an
513 ** Ensembl Quality Check Submission.
514 **
515 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
516 **
517 ** @return [ajuint] SQL database-internal identifier or 0U
518 **
519 ** @release 6.2.0
520 ** @@
521 ******************************************************************************/
522
ensQcsubmissionGetIdentifier(const EnsPQcsubmission qcsb)523 ajuint ensQcsubmissionGetIdentifier(const EnsPQcsubmission qcsb)
524 {
525 return (qcsb) ? qcsb->Identifier : 0U;
526 }
527
528
529
530
531 /* @func ensQcsubmissionGetQueryEnd *******************************************
532 **
533 ** Get the query end member of an Ensembl Quality Check Submission.
534 **
535 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
536 **
537 ** @return [ajuint] Query end or 0U
538 **
539 ** @release 6.2.0
540 ** @@
541 ******************************************************************************/
542
ensQcsubmissionGetQueryEnd(const EnsPQcsubmission qcsb)543 ajuint ensQcsubmissionGetQueryEnd(const EnsPQcsubmission qcsb)
544 {
545 return (qcsb) ? qcsb->QueryEnd : 0U;
546 }
547
548
549
550
551 /* @func ensQcsubmissionGetQuerySequence **************************************
552 **
553 ** Get the query Ensembl Quality Check Sequence member of an
554 ** Ensembl Quality Check Submission.
555 **
556 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
557 **
558 ** @return [EnsPQcsequence] Query Ensembl Quality Check Sequence or NULL
559 **
560 ** @release 6.2.0
561 ** @@
562 ******************************************************************************/
563
ensQcsubmissionGetQuerySequence(const EnsPQcsubmission qcsb)564 EnsPQcsequence ensQcsubmissionGetQuerySequence(const EnsPQcsubmission qcsb)
565 {
566 return (qcsb) ? qcsb->QuerySequence : NULL;
567 }
568
569
570
571
572 /* @func ensQcsubmissionGetQueryStart *****************************************
573 **
574 ** Get the query start member of an Ensembl Quality Check Submission.
575 **
576 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
577 **
578 ** @return [ajuint] Query start or 0U
579 **
580 ** @release 6.2.0
581 ** @@
582 ******************************************************************************/
583
ensQcsubmissionGetQueryStart(const EnsPQcsubmission qcsb)584 ajuint ensQcsubmissionGetQueryStart(const EnsPQcsubmission qcsb)
585 {
586 return (qcsb) ? qcsb->QueryStart : 0U;
587 }
588
589
590
591
592 /* @func ensQcsubmissionGetQueryStrand ****************************************
593 **
594 ** Get the query strand member of an Ensembl Quality Check Submission.
595 **
596 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
597 **
598 ** @return [ajint] Query strand or 0
599 **
600 ** @release 6.2.0
601 ** @@
602 ******************************************************************************/
603
ensQcsubmissionGetQueryStrand(const EnsPQcsubmission qcsb)604 ajint ensQcsubmissionGetQueryStrand(const EnsPQcsubmission qcsb)
605 {
606 return (qcsb) ? qcsb->QueryStrand : 0;
607 }
608
609
610
611
612 /* @func ensQcsubmissionGetTargetEnd ******************************************
613 **
614 ** Get the target end member of an Ensembl Quality Check Submission.
615 **
616 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
617 **
618 ** @return [ajuint] Target end or 0U
619 **
620 ** @release 6.2.0
621 ** @@
622 ******************************************************************************/
623
ensQcsubmissionGetTargetEnd(const EnsPQcsubmission qcsb)624 ajuint ensQcsubmissionGetTargetEnd(const EnsPQcsubmission qcsb)
625 {
626 return (qcsb) ? qcsb->TargetEnd : 0U;
627 }
628
629
630
631
632 /* @func ensQcsubmissionGetTargetSequence *************************************
633 **
634 ** Get the target Ensembl Quality Check Sequence member of an
635 ** Ensembl Quality Check Submission.
636 **
637 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
638 **
639 ** @return [EnsPQcsequence] Target Ensembl Quality Check Sequence or NULL
640 **
641 ** @release 6.2.0
642 ** @@
643 ******************************************************************************/
644
ensQcsubmissionGetTargetSequence(const EnsPQcsubmission qcsb)645 EnsPQcsequence ensQcsubmissionGetTargetSequence(const EnsPQcsubmission qcsb)
646 {
647 return (qcsb) ? qcsb->TargetSequence : NULL;
648 }
649
650
651
652
653 /* @func ensQcsubmissionGetTargetStart ****************************************
654 **
655 ** Get the target start member of an Ensembl Quality Check Submission.
656 **
657 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
658 **
659 ** @return [ajuint] Target start or 0U
660 **
661 ** @release 6.2.0
662 ** @@
663 ******************************************************************************/
664
ensQcsubmissionGetTargetStart(const EnsPQcsubmission qcsb)665 ajuint ensQcsubmissionGetTargetStart(const EnsPQcsubmission qcsb)
666 {
667 return (qcsb) ? qcsb->TargetStart : 0U;
668 }
669
670
671
672
673 /* @func ensQcsubmissionGetTargetStrand ***************************************
674 **
675 ** Get the target strand member of an Ensembl Quality Check Submission.
676 **
677 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
678 **
679 ** @return [ajint] Target strand or 0
680 **
681 ** @release 6.2.0
682 ** @@
683 ******************************************************************************/
684
ensQcsubmissionGetTargetStrand(const EnsPQcsubmission qcsb)685 ajint ensQcsubmissionGetTargetStrand(const EnsPQcsubmission qcsb)
686 {
687 return (qcsb) ? qcsb->TargetStrand : 0;
688 }
689
690
691
692
693 /* @section modifiers *********************************************************
694 **
695 ** Functions for assigning members of an
696 ** Ensembl Quality Check Submission object.
697 **
698 ** @fdata [EnsPQcsubmission]
699 **
700 ** @nam3rule Set Set one member of an Ensembl Quality Check Submission
701 ** @nam4rule Adaptor Set the Ensembl Quality Check Submission Adaptor
702 ** @nam4rule Analysis Set the Ensembl Analysis
703 ** @nam4rule Analysisjobidentifier Set the Analysis Job Identifier
704 ** @nam4rule Identifier Set the SQL database-internal identifier
705 ** @nam4rule Query Set query members
706 ** @nam5rule End Set the query end
707 ** @nam5rule Sequence Set the query Ensembl Quality Check Sequence
708 ** @nam5rule Start Set the query start
709 ** @nam5rule Strand Set the query strand
710 ** @nam4rule Target Set target members
711 ** @nam5rule End Set the target end
712 ** @nam5rule Sequence Set the target Ensembl Quality Check Sequence
713 ** @nam5rule Start Set the target start
714 ** @nam5rule Strand Set the target strand
715 **
716 ** @argrule * qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
717 ** @argrule Adaptor qcsba [EnsPQcsubmissionadaptor]
718 ** Ensembl Quality Check Submission Adaptor
719 ** @argrule Analysis analysis [EnsPAnalysis] Ensembl Analysis
720 ** @argrule Analysisjobidentifier jobid [ajuint] Hive Analysis Job identifier
721 ** @argrule Identifier identifier [ajuint] SQL database-internal identifier
722 ** @argrule QueryEnd qend [ajuint] Query end
723 ** @argrule QuerySequence qsequence [EnsPQcsequence]
724 ** Ensembl Quality Check Sequence
725 ** @argrule QueryStart qstart [ajuint] Query start
726 ** @argrule QueryStrand qstrand [ajint] Query strand
727 ** @argrule TargetEnd tend [ajuint] Target end
728 ** @argrule TargetSequence tsequence [EnsPQcsequence]
729 ** Ensembl Quality Check Sequence
730 ** @argrule TargetStart tstart [ajuint] Target start
731 ** @argrule TargetStrand tstrand [ajint] Target strand
732 **
733 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
734 **
735 ** @fcategory modify
736 ******************************************************************************/
737
738
739
740
741 /* @func ensQcsubmissionSetAdaptor ********************************************
742 **
743 ** Set the Ensembl Database Adaptor member of an Quality Check Submission.
744 **
745 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
746 ** @param [uN] qcsba [EnsPQcsubmissionadaptor]
747 ** Ensembl Quality Check Submission Adaptor
748 **
749 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
750 **
751 ** @release 6.2.0
752 ** @@
753 ******************************************************************************/
754
ensQcsubmissionSetAdaptor(EnsPQcsubmission qcsb,EnsPQcsubmissionadaptor qcsba)755 AjBool ensQcsubmissionSetAdaptor(EnsPQcsubmission qcsb,
756 EnsPQcsubmissionadaptor qcsba)
757 {
758 if (!qcsb)
759 return ajFalse;
760
761 qcsb->Adaptor = qcsba;
762
763 return ajTrue;
764 }
765
766
767
768
769 /* @func ensQcsubmissionSetAnalysis *******************************************
770 **
771 ** Set the Ensembl Analysis member of an Ensembl Quality Check Submission.
772 **
773 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
774 ** @param [uN] analysis [EnsPAnalysis] Ensembl Analysis
775 **
776 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
777 **
778 ** @release 6.2.0
779 ** @@
780 ******************************************************************************/
781
ensQcsubmissionSetAnalysis(EnsPQcsubmission qcsb,EnsPAnalysis analysis)782 AjBool ensQcsubmissionSetAnalysis(EnsPQcsubmission qcsb,
783 EnsPAnalysis analysis)
784 {
785 if (!qcsb)
786 return ajFalse;
787
788 ensAnalysisDel(&qcsb->Analysis);
789
790 qcsb->Analysis = ensAnalysisNewRef(analysis);
791
792 return ajTrue;
793 }
794
795
796
797
798 /* @func ensQcsubmissionSetAnalysisjobidentifier ******************************
799 **
800 ** Set the Hive Analysis Job identifier member of an
801 ** Ensembl Quality Check Submission.
802 **
803 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
804 ** @param [r] jobid [ajuint] Hive Analysis Job identifier
805 **
806 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
807 **
808 ** @release 6.4.0
809 ** @@
810 ******************************************************************************/
811
ensQcsubmissionSetAnalysisjobidentifier(EnsPQcsubmission qcsb,ajuint jobid)812 AjBool ensQcsubmissionSetAnalysisjobidentifier(EnsPQcsubmission qcsb,
813 ajuint jobid)
814 {
815 if (!qcsb)
816 return ajFalse;
817
818 qcsb->Analysisjobidentifier = jobid;
819
820 return ajTrue;
821 }
822
823
824
825
826 /* @func ensQcsubmissionSetIdentifier *****************************************
827 **
828 ** Set the SQL database-internal identifier member of an
829 ** Ensembl Quality Check Submission.
830 **
831 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
832 ** @param [r] identifier [ajuint] SQL database-internal identifier
833 **
834 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
835 **
836 ** @release 6.2.0
837 ** @@
838 ******************************************************************************/
839
ensQcsubmissionSetIdentifier(EnsPQcsubmission qcsb,ajuint identifier)840 AjBool ensQcsubmissionSetIdentifier(EnsPQcsubmission qcsb,
841 ajuint identifier)
842 {
843 if (!qcsb)
844 return ajFalse;
845
846 qcsb->Identifier = identifier;
847
848 return ajTrue;
849 }
850
851
852
853
854 /* @func ensQcsubmissionSetQueryEnd *******************************************
855 **
856 ** Set the query end member of an Ensembl Quality Check Submission.
857 **
858 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
859 ** @param [r] qend [ajuint] Query end
860 **
861 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
862 **
863 ** @release 6.2.0
864 ** @@
865 ******************************************************************************/
866
ensQcsubmissionSetQueryEnd(EnsPQcsubmission qcsb,ajuint qend)867 AjBool ensQcsubmissionSetQueryEnd(EnsPQcsubmission qcsb,
868 ajuint qend)
869 {
870 if (!qcsb)
871 return ajFalse;
872
873 qcsb->QueryEnd = qend;
874
875 return ajTrue;
876 }
877
878
879
880
881 /* @func ensQcsubmissionSetQuerySequence **************************************
882 **
883 ** Set the query Ensembl Quality Check Sequence member of an
884 ** Ensembl Quality Check Submission.
885 **
886 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
887 ** @param [uN] qsequence [EnsPQcsequence] Ensembl Quality Check Sequence
888 **
889 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
890 **
891 ** @release 6.2.0
892 ** @@
893 ******************************************************************************/
894
ensQcsubmissionSetQuerySequence(EnsPQcsubmission qcsb,EnsPQcsequence qsequence)895 AjBool ensQcsubmissionSetQuerySequence(EnsPQcsubmission qcsb,
896 EnsPQcsequence qsequence)
897 {
898 if (!qcsb)
899 return ajFalse;
900
901 ensQcsequenceDel(&qcsb->QuerySequence);
902
903 qcsb->QuerySequence = ensQcsequenceNewRef(qsequence);
904
905 return ajTrue;
906 }
907
908
909
910
911 /* @func ensQcsubmissionSetQueryStart *****************************************
912 **
913 ** Set the query start member of an Ensembl Quality Check Submission.
914 **
915 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
916 ** @param [r] qstart [ajuint] Query start
917 **
918 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
919 **
920 ** @release 6.2.0
921 ** @@
922 ******************************************************************************/
923
ensQcsubmissionSetQueryStart(EnsPQcsubmission qcsb,ajuint qstart)924 AjBool ensQcsubmissionSetQueryStart(EnsPQcsubmission qcsb,
925 ajuint qstart)
926 {
927 if (!qcsb)
928 return ajFalse;
929
930 qcsb->QueryStart = qstart;
931
932 return ajTrue;
933 }
934
935
936
937
938 /* @func ensQcsubmissionSetQueryStrand ****************************************
939 **
940 ** Set the query strand member of an Ensembl Quality Check Submission.
941 **
942 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
943 ** @param [r] qstrand [ajint] Query strand
944 **
945 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
946 **
947 ** @release 6.2.0
948 ** @@
949 ******************************************************************************/
950
ensQcsubmissionSetQueryStrand(EnsPQcsubmission qcsb,ajint qstrand)951 AjBool ensQcsubmissionSetQueryStrand(EnsPQcsubmission qcsb,
952 ajint qstrand)
953 {
954 if (!qcsb)
955 return ajFalse;
956
957 qcsb->QueryStrand = qstrand;
958
959 return ajTrue;
960 }
961
962
963
964
965 /* @func ensQcsubmissionSetTargetEnd ******************************************
966 **
967 ** Set the target end member of an Ensembl Quality Check Submission.
968 **
969 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
970 ** @param [r] tend [ajuint] Target end
971 **
972 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
973 **
974 ** @release 6.2.0
975 ** @@
976 ******************************************************************************/
977
ensQcsubmissionSetTargetEnd(EnsPQcsubmission qcsb,ajuint tend)978 AjBool ensQcsubmissionSetTargetEnd(EnsPQcsubmission qcsb,
979 ajuint tend)
980 {
981 if (!qcsb)
982 return ajFalse;
983
984 qcsb->TargetEnd = tend;
985
986 return ajTrue;
987 }
988
989
990
991
992 /* @func ensQcsubmissionSetTargetSequence *************************************
993 **
994 ** Set the target Ensembl Quality Check Sequence member of an
995 ** Ensembl Quality Check Submission.
996 **
997 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
998 ** @param [uN] tsequence [EnsPQcsequence] Ensembl Quality Check Sequence
999 **
1000 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1001 **
1002 ** @release 6.2.0
1003 ** @@
1004 ******************************************************************************/
1005
ensQcsubmissionSetTargetSequence(EnsPQcsubmission qcsb,EnsPQcsequence tsequence)1006 AjBool ensQcsubmissionSetTargetSequence(EnsPQcsubmission qcsb,
1007 EnsPQcsequence tsequence)
1008 {
1009 if (!qcsb)
1010 return ajFalse;
1011
1012 ensQcsequenceDel(&qcsb->TargetSequence);
1013
1014 qcsb->TargetSequence = ensQcsequenceNewRef(tsequence);
1015
1016 return ajTrue;
1017 }
1018
1019
1020
1021
1022 /* @func ensQcsubmissionSetTargetStart ****************************************
1023 **
1024 ** Set the target start member of an Ensembl Quality Check Submission.
1025 **
1026 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
1027 ** @param [r] tstart [ajuint] Target start
1028 **
1029 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1030 **
1031 ** @release 6.2.0
1032 ** @@
1033 ******************************************************************************/
1034
ensQcsubmissionSetTargetStart(EnsPQcsubmission qcsb,ajuint tstart)1035 AjBool ensQcsubmissionSetTargetStart(EnsPQcsubmission qcsb,
1036 ajuint tstart)
1037 {
1038 if (!qcsb)
1039 return ajFalse;
1040
1041 qcsb->TargetStart = tstart;
1042
1043 return ajTrue;
1044 }
1045
1046
1047
1048
1049 /* @func ensQcsubmissionSetTargetStrand ***************************************
1050 **
1051 ** Set the target strand member of an Ensembl Quality Check Submission.
1052 **
1053 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
1054 ** @param [r] tstrand [ajint] Target strand
1055 **
1056 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1057 **
1058 ** @release 6.2.0
1059 ** @@
1060 ******************************************************************************/
1061
ensQcsubmissionSetTargetStrand(EnsPQcsubmission qcsb,ajint tstrand)1062 AjBool ensQcsubmissionSetTargetStrand(EnsPQcsubmission qcsb,
1063 ajint tstrand)
1064 {
1065 if (!qcsb)
1066 return ajFalse;
1067
1068 qcsb->TargetStrand = tstrand;
1069
1070 return ajTrue;
1071 }
1072
1073
1074
1075
1076 /* @section debugging *********************************************************
1077 **
1078 ** Functions for reporting of an Ensembl Quality Check Submission object.
1079 **
1080 ** @fdata [EnsPQcsubmission]
1081 **
1082 ** @nam3rule Trace Report Ensembl Quality Check Submission members to
1083 ** debug file
1084 **
1085 ** @argrule Trace qcsb [const EnsPQcsubmission]
1086 ** Ensembl Quality Check Submission
1087 ** @argrule Trace level [ajuint] Indentation level
1088 **
1089 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
1090 **
1091 ** @fcategory misc
1092 ******************************************************************************/
1093
1094
1095
1096
1097 /* @func ensQcsubmissionTrace *************************************************
1098 **
1099 ** Trace an Ensembl Quality Check Submission.
1100 **
1101 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
1102 ** @param [r] level [ajuint] Indentation level
1103 **
1104 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1105 **
1106 ** @release 6.2.0
1107 ** @@
1108 ******************************************************************************/
1109
ensQcsubmissionTrace(const EnsPQcsubmission qcsb,ajuint level)1110 AjBool ensQcsubmissionTrace(const EnsPQcsubmission qcsb, ajuint level)
1111 {
1112 AjPStr indent = NULL;
1113
1114 if (!qcsb)
1115 return ajFalse;
1116
1117 indent = ajStrNew();
1118
1119 ajStrAppendCountK(&indent, ' ', level * 2);
1120
1121 ajDebug("%SensQcsubmissionTrace %p\n"
1122 "%S Use %u\n"
1123 "%S Identifier %u\n"
1124 "%S Adaptor %p\n"
1125 "%S Analysis %p\n"
1126 "%S QuerySequence %p\n"
1127 /*
1128 "%S QueryStart %u\n"
1129 "%S QueryEnd %u\n"
1130 "%S QueryStrand %d\n"
1131 */
1132 "%S TargetSequence %p\n"
1133 "%S TargetStart %u\n"
1134 "%S TargetEnd %u\n"
1135 "%S TargetStrand %d\n"
1136 "%S Analysisjobidentifier %u\n",
1137 indent, qcsb,
1138 indent, qcsb->Use,
1139 indent, qcsb->Identifier,
1140 indent, qcsb->Adaptor,
1141 indent, qcsb->Analysis,
1142 indent, qcsb->QuerySequence,
1143 /*
1144 indent, qcsb->QueryStart,
1145 indent, qcsb->QueryEnd,
1146 indent, qcsb->QueryStrand,
1147 */
1148 indent, qcsb->TargetSequence,
1149 indent, qcsb->TargetStart,
1150 indent, qcsb->TargetEnd,
1151 indent, qcsb->TargetStrand,
1152 indent, qcsb->Analysisjobidentifier);
1153
1154 ensAnalysisTrace(qcsb->Analysis, 1);
1155
1156 ensQcsequenceTrace(qcsb->QuerySequence, 1);
1157 ensQcsequenceTrace(qcsb->TargetSequence, 1);
1158
1159 ajStrDel(&indent);
1160
1161 return ajTrue;
1162 }
1163
1164
1165
1166
1167 /* @section calculate *********************************************************
1168 **
1169 ** Functions for calculating information from an
1170 ** Ensembl Quality Check Submission object.
1171 **
1172 ** @fdata [EnsPQcsubmission]
1173 **
1174 ** @nam3rule Calculate Calculate Ensembl Quality Check Submission information
1175 ** @nam4rule Memsize Calculate the memory size in bytes
1176 **
1177 ** @argrule * qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
1178 **
1179 ** @valrule Memsize [size_t] Memory size in bytes or 0
1180 **
1181 ** @fcategory misc
1182 ******************************************************************************/
1183
1184
1185
1186
1187 /* @func ensQcsubmissionCalculateMemsize **************************************
1188 **
1189 ** Calculate the memory size in bytes of an Ensembl Quality Check Submission.
1190 **
1191 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
1192 **
1193 ** @return [size_t] Memory size in bytes or 0
1194 **
1195 ** @release 6.4.0
1196 ** @@
1197 ******************************************************************************/
1198
ensQcsubmissionCalculateMemsize(const EnsPQcsubmission qcsb)1199 size_t ensQcsubmissionCalculateMemsize(const EnsPQcsubmission qcsb)
1200 {
1201 size_t size = 0;
1202
1203 if (!qcsb)
1204 return 0;
1205
1206 size += sizeof (EnsOQcsubmission);
1207
1208 size += ensAnalysisCalculateMemsize(qcsb->Analysis);
1209
1210 size += ensQcsequenceCalculateMemsize(qcsb->QuerySequence);
1211 size += ensQcsequenceCalculateMemsize(qcsb->TargetSequence);
1212
1213 return size;
1214 }
1215
1216
1217
1218
1219 /* @datasection [EnsPQcsubmissionadaptor] Ensembl Quality Check Submission
1220 ** Adaptor
1221 **
1222 ** @nam2rule Qcsubmissionadaptor Functions for manipulating
1223 ** Ensembl Quality Check Submission Adaptor objects
1224 **
1225 ** @cc Bio::EnsEMBL::QC::DBSQL::Submissionadaptor
1226 ** @cc CVS Revision:
1227 ** @cc CVS Tag:
1228 **
1229 ******************************************************************************/
1230
1231
1232
1233
1234 /* @funcstatic qcsubmissionadaptorFetchAllbyStatement *************************
1235 **
1236 ** Run a SQL statement against an Ensembl Database Adaptor and consolidate the
1237 ** results into an AJAX List of Ensembl Quality Check Submission objects.
1238 **
1239 ** @param [u] ba [EnsPBaseadaptor] Ensembl Base Adaptor
1240 ** @param [r] statement [const AjPStr] SQL statement
1241 ** @param [uN] am [EnsPAssemblymapper] Ensembl Assembly Mapper
1242 ** @param [uN] slice [EnsPSlice] Ensembl Slice
1243 ** @param [u] qcsbs [AjPList] AJAX List of
1244 ** Ensembl Quality Check Submission objects
1245 **
1246 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1247 **
1248 ** @release 6.4.0
1249 ** @@
1250 ******************************************************************************/
1251
qcsubmissionadaptorFetchAllbyStatement(EnsPBaseadaptor ba,const AjPStr statement,EnsPAssemblymapper am,EnsPSlice slice,AjPList qcsbs)1252 static AjBool qcsubmissionadaptorFetchAllbyStatement(
1253 EnsPBaseadaptor ba,
1254 const AjPStr statement,
1255 EnsPAssemblymapper am,
1256 EnsPSlice slice,
1257 AjPList qcsbs)
1258 {
1259 ajint tstrand = 0;
1260
1261 ajuint identifier = 0U;
1262 ajuint analysisid = 0U;
1263 ajuint qdbid = 0U;
1264 ajuint qsid = 0U;
1265 ajuint tdbid = 0U;
1266 ajuint tsid = 0U;
1267 ajuint tstart = 0U;
1268 ajuint tend = 0U;
1269
1270 ajuint analysisjobid = 0U;
1271
1272 AjPSqlstatement sqls = NULL;
1273 AjISqlrow sqli = NULL;
1274 AjPSqlrow sqlr = NULL;
1275
1276 EnsPAnalysis analysis = NULL;
1277 EnsPAnalysisadaptor aa = NULL;
1278
1279 EnsPDatabaseadaptor dba = NULL;
1280
1281 EnsPQcsequence qsequence = NULL;
1282 EnsPQcsequence tsequence = NULL;
1283 EnsPQcsequenceadaptor qcsa = NULL;
1284
1285 EnsPQcsubmission qcsb = NULL;
1286 EnsPQcsubmissionadaptor qcsba = NULL;
1287
1288 if (ajDebugTest("qcsubmissionadaptorFetchAllbyStatement"))
1289 ajDebug("qcsubmissionadaptorFetchAllbyStatement\n"
1290 " ba %p\n"
1291 " statement %p\n"
1292 " am %p\n"
1293 " slice %p\n"
1294 " qcsbs %p\n",
1295 ba,
1296 statement,
1297 am,
1298 slice,
1299 qcsbs);
1300
1301 if (!ba)
1302 return ajFalse;
1303
1304 if (!statement)
1305 return ajFalse;
1306
1307 if (!qcsbs)
1308 return ajFalse;
1309
1310 dba = ensBaseadaptorGetDatabaseadaptor(ba);
1311
1312 aa = ensRegistryGetAnalysisadaptor(dba);
1313 qcsa = ensRegistryGetQcsequenceadaptor(dba);
1314 qcsba = ensRegistryGetQcsubmissionadaptor(dba);
1315
1316 sqls = ensDatabaseadaptorSqlstatementNew(dba, statement);
1317
1318 sqli = ajSqlrowiterNew(sqls);
1319
1320 while (!ajSqlrowiterDone(sqli))
1321 {
1322 identifier = 0;
1323 analysisid = 0;
1324 qdbid = 0;
1325 qsid = 0;
1326 tdbid = 0;
1327 tsid = 0;
1328 tstart = 0;
1329 tend = 0;
1330 tstrand = 0;
1331 analysisjobid = 0;
1332
1333 sqlr = ajSqlrowiterGet(sqli);
1334
1335 ajSqlcolumnToUint(sqlr, &identifier);
1336 ajSqlcolumnToUint(sqlr, &analysisid);
1337 ajSqlcolumnToUint(sqlr, &qdbid);
1338 ajSqlcolumnToUint(sqlr, &qsid);
1339 ajSqlcolumnToUint(sqlr, &tdbid);
1340 ajSqlcolumnToUint(sqlr, &tsid);
1341 ajSqlcolumnToUint(sqlr, &tstart);
1342 ajSqlcolumnToUint(sqlr, &tend);
1343 ajSqlcolumnToInt(sqlr, &tstrand);
1344 ajSqlcolumnToUint(sqlr, &analysisjobid);
1345
1346 ensAnalysisadaptorFetchByIdentifier(aa, analysisid, &analysis);
1347
1348 ensQcsequenceadaptorFetchByIdentifier(qcsa, qsid, &qsequence);
1349
1350 ensQcsequenceadaptorFetchByIdentifier(qcsa, tsid, &tsequence);
1351
1352 qcsb = ensQcsubmissionNewIni(qcsba,
1353 identifier,
1354 analysis,
1355 qsequence,
1356 tsequence,
1357 tstart,
1358 tend,
1359 tstrand,
1360 analysisjobid);
1361
1362 ajListPushAppend(qcsbs, (void *) qcsb);
1363
1364 ensAnalysisDel(&analysis);
1365
1366 ensQcsequenceDel(&qsequence);
1367 ensQcsequenceDel(&tsequence);
1368 }
1369
1370 ajSqlrowiterDel(&sqli);
1371
1372 ensDatabaseadaptorSqlstatementDel(dba, &sqls);
1373
1374 return ajTrue;
1375 }
1376
1377
1378
1379
1380 /* @section constructors ******************************************************
1381 **
1382 ** All constructors return a new Ensembl Quality Check Submission Adaptor by
1383 ** pointer. It is the responsibility of the user to first destroy any previous
1384 ** Quality Check Submission Adaptor. The target pointer does not need to be
1385 ** initialised to NULL, but it is good programming practice to do so anyway.
1386 **
1387 ** @fdata [EnsPQcsubmissionadaptor]
1388 **
1389 ** @nam3rule New Constructor
1390 **
1391 ** @argrule New dba [EnsPDatabaseadaptor] Ensembl Database Adaptor
1392 **
1393 ** @valrule * [EnsPQcsubmissionadaptor]
1394 ** Ensembl Quality Check Submission Adaptor or NULL
1395 **
1396 ** @fcategory new
1397 ******************************************************************************/
1398
1399
1400
1401
1402 /* @func ensQcsubmissionadaptorNew ********************************************
1403 **
1404 ** Default constructor for an Ensembl Quality Check Submission Adaptor.
1405 **
1406 ** Ensembl Object Adaptors are singleton objects in the sense that a single
1407 ** instance of an Ensembl Object Adaptor connected to a particular database is
1408 ** sufficient to instantiate any number of Ensembl Objects from the database.
1409 ** Each Ensembl Object will have a weak reference to the Object Adaptor that
1410 ** instantiated it. Therefore, Ensembl Object Adaptors should not be
1411 ** instantiated directly, but rather obtained from the Ensembl Registry,
1412 ** which will in turn call this function if neccessary.
1413 **
1414 ** @see ensRegistryGetDatabaseadaptor
1415 ** @see ensRegistryGetQcsubmissionadaptor
1416 **
1417 ** @param [u] dba [EnsPDatabaseadaptor] Ensembl Database Adaptor
1418 **
1419 ** @return [EnsPQcsubmissionadaptor]
1420 ** Ensembl Quality Check Submission Adaptor or NULL
1421 **
1422 ** @release 6.2.0
1423 ** @@
1424 ******************************************************************************/
1425
ensQcsubmissionadaptorNew(EnsPDatabaseadaptor dba)1426 EnsPQcsubmissionadaptor ensQcsubmissionadaptorNew(
1427 EnsPDatabaseadaptor dba)
1428 {
1429 return ensBaseadaptorNew(
1430 dba,
1431 qcsubmissionadaptorKTablenames,
1432 qcsubmissionadaptorKColumnnames,
1433 (const EnsPBaseadaptorLeftjoin) NULL,
1434 (const char *) NULL,
1435 (const char *) NULL,
1436 &qcsubmissionadaptorFetchAllbyStatement);
1437 }
1438
1439
1440
1441
1442 /* @section destructors *******************************************************
1443 **
1444 ** Destruction destroys all internal data structures and frees the memory
1445 ** allocated for an Ensembl Quality Check Submission Adaptor object.
1446 **
1447 ** @fdata [EnsPQcsubmissionadaptor]
1448 **
1449 ** @nam3rule Del Destroy (free) an Ensembl Quality Check Submission Adaptor
1450 **
1451 ** @argrule * Pqcsba [EnsPQcsubmissionadaptor*]
1452 ** Ensembl Quality Check Submission Adaptor address
1453 **
1454 ** @valrule * [void]
1455 **
1456 ** @fcategory delete
1457 ******************************************************************************/
1458
1459
1460
1461
1462 /* @func ensQcsubmissionadaptorDel ********************************************
1463 **
1464 ** Default destructor for an Ensembl Quality Check Submission Adaptor.
1465 **
1466 ** @param [d] Pqcsba [EnsPQcsubmissionadaptor*]
1467 ** Ensembl Quality Check Submission Adaptor address
1468 **
1469 ** @return [void]
1470 **
1471 ** @release 6.2.0
1472 ** @@
1473 ******************************************************************************/
1474
ensQcsubmissionadaptorDel(EnsPQcsubmissionadaptor * Pqcsba)1475 void ensQcsubmissionadaptorDel(EnsPQcsubmissionadaptor *Pqcsba)
1476 {
1477 ensBaseadaptorDel(Pqcsba);
1478
1479 return;
1480 }
1481
1482
1483
1484
1485 /* @section member retrieval **************************************************
1486 **
1487 ** Functions for returning members of an
1488 ** Ensembl Quality Check Submission Adaptor object.
1489 **
1490 ** @fdata [EnsPQcsubmissionadaptor]
1491 **
1492 ** @nam3rule Get Return Ensembl Quality Check Submission Adaptor attribute(s)
1493 ** @nam4rule Baseadaptor Return the Ensembl Base Adaptor
1494 ** @nam4rule Databaseadaptor Return the Ensembl Database Adaptor
1495 **
1496 ** @argrule * qcsba [EnsPQcsubmissionadaptor]
1497 ** Ensembl Quality Check Submission Adaptor
1498 **
1499 ** @valrule Baseadaptor [EnsPBaseadaptor] Ensembl Base Adaptor or NULL
1500 ** @valrule Databaseadaptor [EnsPDatabaseadaptor] Ensembl Database Adaptor
1501 ** or NULL
1502 **
1503 ** @fcategory use
1504 ******************************************************************************/
1505
1506
1507
1508
1509 /* @func ensQcsubmissionadaptorGetBaseadaptor *********************************
1510 **
1511 ** Get the Ensembl Base Adaptor member of an
1512 ** Ensembl Quality Check Submission Adaptor.
1513 **
1514 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1515 ** Ensembl Quality Check Submission Adaptor
1516 **
1517 ** @return [EnsPBaseadaptor] Ensembl Base Adaptor or NULL
1518 **
1519 ** @release 6.4.0
1520 ** @@
1521 ******************************************************************************/
1522
ensQcsubmissionadaptorGetBaseadaptor(EnsPQcsubmissionadaptor qcsba)1523 EnsPBaseadaptor ensQcsubmissionadaptorGetBaseadaptor(
1524 EnsPQcsubmissionadaptor qcsba)
1525 {
1526 return qcsba;
1527 }
1528
1529
1530
1531
1532 /* @func ensQcsubmissionadaptorGetDatabaseadaptor *****************************
1533 **
1534 ** Get the Ensembl Database Adaptor member of an
1535 ** Ensembl Quality Check Submission Adaptor.
1536 **
1537 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1538 ** Ensembl Quality Check Submission Adaptor
1539 **
1540 ** @return [EnsPDatabaseadaptor] Ensembl Database Adaptor or NULL
1541 **
1542 ** @release 6.4.0
1543 ** @@
1544 ******************************************************************************/
1545
ensQcsubmissionadaptorGetDatabaseadaptor(EnsPQcsubmissionadaptor qcsba)1546 EnsPDatabaseadaptor ensQcsubmissionadaptorGetDatabaseadaptor(
1547 EnsPQcsubmissionadaptor qcsba)
1548 {
1549 return ensBaseadaptorGetDatabaseadaptor(
1550 ensQcsubmissionadaptorGetBaseadaptor(qcsba));
1551 }
1552
1553
1554
1555
1556 /* @section object retrieval **************************************************
1557 **
1558 ** Functions for fetching Ensembl Quality Check Submission objects from an
1559 ** Ensembl SQL database.
1560 **
1561 ** @fdata [EnsPQcsubmissionadaptor]
1562 **
1563 ** @nam3rule Fetch Fetch Ensembl Quality Check Submission object(s)
1564 ** @nam4rule All Fetch all Ensembl Quality Check Submission objects
1565 ** @nam4rule Allby Fetch all Ensembl Quality Check Submission objects matching
1566 ** a criterion
1567 ** @nam5rule Qcalignment Fetch all by an Ensembl Quality Check Alignment
1568 ** @nam5rule Qcdatabase Fetch all by an Ensembl Quality Check Database
1569 ** @nam6rule Pair Fetch all by an Ensembl Quality Check Database pair
1570 ** @nam6rule Query Fetch all by an Ensembl Quality Check Database
1571 ** as query
1572 ** @nam6rule Target Fetch all by an Ensembl Quality Check Database
1573 ** as target
1574 ** @nam5rule Region Fetch all by a region
1575 ** @nam4rule By Fetch one Ensembl Quality Check Submission object
1576 ** matching a criterion
1577 ** @nam5rule Identifier Fetch by an SQL database internal identifier
1578 **
1579 ** @argrule * qcsba [EnsPQcsubmissionadaptor]
1580 ** Ensembl Quality Check Submission Adaptor
1581 ** @argrule AllbyQcalignment qca [const EnsPQcalignment]
1582 ** Ensembl Quality Check Alignment
1583 ** @argrule AllbyQcalignment qcvs [AjPList] AJAX List of
1584 ** Ensembl Quality Check Variation objects
1585 ** @argrule AllbyQcdatabasePair analysis [const EnsPAnalysis] Ensembl Analysis
1586 ** @argrule AllbyQcdatabasePair qdb [const EnsPQcdatabase]
1587 ** Query Ensembl Quality Check Database
1588 ** @argrule AllbyQcdatabasePair tdb [const EnsPQcdatabase]
1589 ** Target Ensembl Quality Check Database
1590 ** @argrule AllbyQcdatabasePair qcsbs [AjPList] AJAX List of
1591 ** Ensembl Quality Check Submission objects
1592 ** @argrule AllbyQcdatabaseQuery analysis [const EnsPAnalysis] Ensembl Analysis
1593 ** @argrule AllbyQcdatabaseQuery qdb [const EnsPQcdatabase]
1594 ** Query Ensembl Quality Check Database
1595 ** @argrule AllbyQcdatabaseQuery qcsbs [AjPList] AJAX List of
1596 ** Ensembl Quality Check Submission objects
1597 ** @argrule AllbyQcdatabaseTarget analysis [const EnsPAnalysis]
1598 ** Ensembl Analysis
1599 ** @argrule AllbyQcdatabaseTarget tdb [const EnsPQcdatabase]
1600 ** Target Ensembl Quality Check Database
1601 ** @argrule AllbyQcdatabaseTarget qcsbs [AjPList] AJAX List of
1602 ** Ensembl Quality Check Submission objects
1603 ** @argrule AllbyRegion analysis [const EnsPAnalysis] Ensembl Analysis
1604 ** @argrule AllbyRegion qsequence [const EnsPQcsequence]
1605 ** Query Ensembl Quality Check Sequence
1606 ** @argrule AllbyRegion tdb [const EnsPQcdatabase]
1607 ** Target Ensembl Quality Check Database
1608 ** @argrule AllbyRegion tsequence [const EnsPQcsequence]
1609 ** Target Ensembl Quality Check Sequence
1610 ** @argrule AllbyRegion tstart [ajuint] Target start
1611 ** @argrule AllbyRegion tend [ajuint] Target end
1612 ** @argrule AllbyRegion tstrand [ajint] Target strand
1613 ** @argrule AllbyRegion qcsbs [AjPList] AJAX List of
1614 ** Ensembl Quality Check Submission objects
1615 ** @argrule ByIdentifier identifier [ajuint] SQL database-internal
1616 ** Ensembl Quality Check Submission identifier
1617 ** @argrule ByIdentifier Pqcsb [EnsPQcsubmission*]
1618 ** Ensembl Quality Check Submission address
1619 **
1620 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
1621 **
1622 ** @fcategory use
1623 ******************************************************************************/
1624
1625
1626
1627
1628 /* @func ensQcsubmissionadaptorFetchAllbyQcdatabasePair ***********************
1629 **
1630 ** Fetch all Ensembl Quality Check Submission objects by an Ensembl Analysis,
1631 ** as well as Ensembl Quality Check Database objects representing query and
1632 ** target.
1633 **
1634 ** The caller is responsible for deleting the Ensembl Quality Check Submission
1635 ** objects before deleting the AJAX List.
1636 **
1637 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1638 ** Ensembl Quality Check Submission Adaptor
1639 ** @param [r] analysis [const EnsPAnalysis] Ensembl Analysis
1640 ** @param [r] qdb [const EnsPQcdatabase] Query Ensembl Quality Check Database
1641 ** @param [r] tdb [const EnsPQcdatabase] Target Ensembl Quality Check Database
1642 ** @param [u] qcsbs [AjPList] AJAX List of Ensembl Quality Check Submissions
1643 **
1644 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1645 **
1646 ** @release 6.4.0
1647 ** @@
1648 ******************************************************************************/
1649
ensQcsubmissionadaptorFetchAllbyQcdatabasePair(EnsPQcsubmissionadaptor qcsba,const EnsPAnalysis analysis,const EnsPQcdatabase qdb,const EnsPQcdatabase tdb,AjPList qcsbs)1650 AjBool ensQcsubmissionadaptorFetchAllbyQcdatabasePair(
1651 EnsPQcsubmissionadaptor qcsba,
1652 const EnsPAnalysis analysis,
1653 const EnsPQcdatabase qdb,
1654 const EnsPQcdatabase tdb,
1655 AjPList qcsbs)
1656 {
1657 AjBool result = AJFALSE;
1658
1659 AjPStr constraint = NULL;
1660
1661 if (!qcsba)
1662 return ajFalse;
1663
1664 if (!analysis)
1665 return ajFalse;
1666
1667 if (!qdb)
1668 return ajFalse;
1669
1670 if (!tdb)
1671 return ajFalse;
1672
1673 if (!qcsbs)
1674 return ajFalse;
1675
1676 constraint = ajFmtStr("submission.analysis_id = %u "
1677 "AND "
1678 "submission.query_db_id = %u "
1679 "AND "
1680 "submission.target_db_id = %u",
1681 ensAnalysisGetIdentifier(analysis),
1682 ensQcdatabaseGetIdentifier(qdb),
1683 ensQcdatabaseGetIdentifier(tdb));
1684
1685 result = ensBaseadaptorFetchAllbyConstraint(
1686 ensQcsubmissionadaptorGetBaseadaptor(qcsba),
1687 constraint,
1688 (EnsPAssemblymapper) NULL,
1689 (EnsPSlice) NULL,
1690 qcsbs);
1691
1692 ajStrDel(&constraint);
1693
1694 return result;
1695 }
1696
1697
1698
1699
1700 /* @func ensQcsubmissionadaptorFetchAllbyQcdatabaseQuery **********************
1701 **
1702 ** Fetch all Ensembl Quality Check Submission objects by an
1703 ** Ensembl Quality Check Sequence representing the query.
1704 **
1705 ** The caller is responsible for deleting the Ensembl Quality Check Submission
1706 ** objects before deleting the AJAX List.
1707 **
1708 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1709 ** Ensembl Quality Check Submission Adaptor
1710 ** @param [rN] analysis [const EnsPAnalysis] Ensembl Analysis
1711 ** @param [r] qdb [const EnsPQcdatabase] Query Ensembl Quality Check Database
1712 ** @param [u] qcsbs [AjPList] AJAX List of
1713 ** Ensembl Quality Check Submission objects
1714 **
1715 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1716 **
1717 ** @release 6.4.0
1718 ** @@
1719 ******************************************************************************/
1720
ensQcsubmissionadaptorFetchAllbyQcdatabaseQuery(EnsPQcsubmissionadaptor qcsba,const EnsPAnalysis analysis,const EnsPQcdatabase qdb,AjPList qcsbs)1721 AjBool ensQcsubmissionadaptorFetchAllbyQcdatabaseQuery(
1722 EnsPQcsubmissionadaptor qcsba,
1723 const EnsPAnalysis analysis,
1724 const EnsPQcdatabase qdb,
1725 AjPList qcsbs)
1726 {
1727 AjBool result = AJFALSE;
1728
1729 AjPStr constraint = NULL;
1730
1731 if (!qcsba)
1732 return ajFalse;
1733
1734 if (!qdb)
1735 return ajFalse;
1736
1737 if (!qcsbs)
1738 return ajFalse;
1739
1740 constraint = ajFmtStr("submission.query_db_id = %u",
1741 ensQcdatabaseGetIdentifier(qdb));
1742
1743 if (analysis)
1744 ajFmtPrintAppS(&constraint,
1745 " AND submission.analysis_id = %u",
1746 ensAnalysisGetIdentifier(analysis));
1747
1748 result = ensBaseadaptorFetchAllbyConstraint(
1749 ensQcsubmissionadaptorGetBaseadaptor(qcsba),
1750 constraint,
1751 (EnsPAssemblymapper) NULL,
1752 (EnsPSlice) NULL,
1753 qcsbs);
1754
1755 ajStrDel(&constraint);
1756
1757 return result;
1758 }
1759
1760
1761
1762
1763 /* @func ensQcsubmissionadaptorFetchAllbyQcdatabaseTarget *********************
1764 **
1765 ** Fetch all Ensembl Quality Check Submission objects by an
1766 ** Ensembl Quality Check Database representing the target.
1767 **
1768 ** The caller is responsible for deleting the Ensembl Quality Check Submission
1769 ** objects before deleting the AJAX List.
1770 **
1771 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1772 ** Ensembl Quality Check Submission Adaptor
1773 ** @param [rN] analysis [const EnsPAnalysis] Ensembl Analysis
1774 ** @param [r] tdb [const EnsPQcdatabase] Target Ensembl Quality Check Database
1775 ** @param [u] qcsbs [AjPList] AJAX List of
1776 ** Ensembl Quality Check Submission objects
1777 **
1778 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1779 **
1780 ** @release 6.4.0
1781 ** @@
1782 ******************************************************************************/
1783
ensQcsubmissionadaptorFetchAllbyQcdatabaseTarget(EnsPQcsubmissionadaptor qcsba,const EnsPAnalysis analysis,const EnsPQcdatabase tdb,AjPList qcsbs)1784 AjBool ensQcsubmissionadaptorFetchAllbyQcdatabaseTarget(
1785 EnsPQcsubmissionadaptor qcsba,
1786 const EnsPAnalysis analysis,
1787 const EnsPQcdatabase tdb,
1788 AjPList qcsbs)
1789 {
1790 AjBool result = AJFALSE;
1791
1792 AjPStr constraint = NULL;
1793
1794 if (!qcsba)
1795 return ajFalse;
1796
1797 if (!tdb)
1798 return ajFalse;
1799
1800 if (!qcsbs)
1801 return ajFalse;
1802
1803 constraint = ajFmtStr("submission.target_db_id = %u",
1804 ensQcdatabaseGetIdentifier(tdb));
1805
1806 if (analysis)
1807 ajFmtPrintAppS(&constraint,
1808 " AND submission.analysis_id = %u",
1809 ensAnalysisGetIdentifier(analysis));
1810
1811 result = ensBaseadaptorFetchAllbyConstraint(
1812 ensQcsubmissionadaptorGetBaseadaptor(qcsba),
1813 constraint,
1814 (EnsPAssemblymapper) NULL,
1815 (EnsPSlice) NULL,
1816 qcsbs);
1817
1818 ajStrDel(&constraint);
1819
1820 return result;
1821 }
1822
1823
1824
1825
1826 /* @func ensQcsubmissionadaptorFetchAllbyRegion *******************************
1827 **
1828 ** Fetch all Ensembl Quality Check Submission objects by an Ensembl Analysis,
1829 ** as well as Ensembl Quality Check Sequence objects representing query and
1830 ** target.
1831 **
1832 ** The caller is responsible for deleting the Ensembl Quality Check Submission
1833 ** objects before deleting the AJAX List.
1834 **
1835 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1836 ** Ensembl Quality Check Submission Adaptor
1837 ** @param [r] analysis [const EnsPAnalysis] Ensembl Analysis
1838 ** @param [r] qsequence [const EnsPQcsequence]
1839 ** Query Ensembl Quality Check Sequence
1840 ** @param [r] tdb [const EnsPQcdatabase]
1841 ** Target Ensembl Quality Check Database
1842 ** @param [rN] tsequence [const EnsPQcsequence]
1843 ** Target Ensembl Quality Check Sequence
1844 ** @param [rN] tstart [ajuint] Target start
1845 ** @param [rN] tend [ajuint] Target end
1846 ** @param [rN] tstrand [ajint] Target strand
1847 ** @param [u] qcsbs [AjPList] AJAX List of
1848 ** Ensembl Quality Check Submission objects
1849 **
1850 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1851 **
1852 ** @release 6.4.0
1853 ** @@
1854 ******************************************************************************/
1855
ensQcsubmissionadaptorFetchAllbyRegion(EnsPQcsubmissionadaptor qcsba,const EnsPAnalysis analysis,const EnsPQcsequence qsequence,const EnsPQcdatabase tdb,const EnsPQcsequence tsequence,ajuint tstart,ajuint tend,ajint tstrand,AjPList qcsbs)1856 AjBool ensQcsubmissionadaptorFetchAllbyRegion(
1857 EnsPQcsubmissionadaptor qcsba,
1858 const EnsPAnalysis analysis,
1859 const EnsPQcsequence qsequence,
1860 const EnsPQcdatabase tdb,
1861 const EnsPQcsequence tsequence,
1862 ajuint tstart,
1863 ajuint tend,
1864 ajint tstrand,
1865 AjPList qcsbs)
1866 {
1867 AjBool result = AJFALSE;
1868
1869 AjPStr constraint = NULL;
1870
1871 if (!qcsba)
1872 return ajFalse;
1873
1874 if (!analysis)
1875 return ajFalse;
1876
1877 if (!qsequence)
1878 return ajFalse;
1879
1880 if (!tdb)
1881 return ajFalse;
1882
1883 if (!qcsbs)
1884 return ajFalse;
1885
1886 constraint = ajFmtStr("submission.analysis_id = %u "
1887 "AND "
1888 "submission.query_db_id = %u "
1889 "AND "
1890 "submission.target_db_id = %u "
1891 "AND "
1892 "submission.query_id = %u",
1893 ensAnalysisGetIdentifier(analysis),
1894 ensQcsequenceGetQcdatabaseIdentifier(qsequence),
1895 ensQcdatabaseGetIdentifier(tdb),
1896 ensQcsequenceGetIdentifier(qsequence));
1897
1898 if (tsequence)
1899 ajFmtPrintAppS(&constraint,
1900 " AND submission.target_id = %u",
1901 ensQcsequenceGetIdentifier(tsequence));
1902
1903 if (tstart && tend)
1904 ajFmtPrintAppS(&constraint,
1905 " AND"
1906 " submission.target_start >= %u"
1907 " AND"
1908 " submission.target_end <= %u"
1909 " AND"
1910 " submission.target_strand = %d",
1911 tstart,
1912 tend,
1913 tstrand);
1914
1915 result = ensBaseadaptorFetchAllbyConstraint(
1916 ensQcsubmissionadaptorGetBaseadaptor(qcsba),
1917 constraint,
1918 (EnsPAssemblymapper) NULL,
1919 (EnsPSlice) NULL,
1920 qcsbs);
1921
1922 ajStrDel(&constraint);
1923
1924 return result;
1925 }
1926
1927
1928
1929
1930 /* @func ensQcsubmissionadaptorFetchByIdentifier ******************************
1931 **
1932 ** Fetch an Ensembl Quality Check Submission via its
1933 ** SQL database-internal identifier.
1934 ** The caller is responsible for deleting the Ensembl Quality Check Submission.
1935 **
1936 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1937 ** Ensembl Quality Check Submission Adaptor
1938 ** @param [r] identifier [ajuint] SQL database-internal
1939 ** Ensembl Quality Check Submission identifier
1940 ** @param [wP] Pqcsb [EnsPQcsubmission*]
1941 ** Ensembl Quality Check Submission address
1942 **
1943 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
1944 **
1945 ** @release 6.2.0
1946 ** @@
1947 ******************************************************************************/
1948
ensQcsubmissionadaptorFetchByIdentifier(EnsPQcsubmissionadaptor qcsba,ajuint identifier,EnsPQcsubmission * Pqcsb)1949 AjBool ensQcsubmissionadaptorFetchByIdentifier(
1950 EnsPQcsubmissionadaptor qcsba,
1951 ajuint identifier,
1952 EnsPQcsubmission *Pqcsb)
1953 {
1954 return ensBaseadaptorFetchByIdentifier(
1955 ensQcsubmissionadaptorGetBaseadaptor(qcsba),
1956 identifier,
1957 (void **) Pqcsb);
1958 }
1959
1960
1961
1962
1963 /* @section object access *****************************************************
1964 **
1965 ** Functions for accessing Ensembl Quality Check Submission objects in an
1966 ** Ensembl SQL database.
1967 **
1968 ** @fdata [EnsPQcsubmissionadaptor]
1969 **
1970 ** @nam3rule Delete Delete Ensembl Quality Check Submission object(s)
1971 ** @nam3rule Store Store Ensembl Quality Check Submission object(s)
1972 ** @nam3rule Update Update Ensembl Quality Check Submission object(s)
1973 **
1974 ** @argrule * qcsba [EnsPQcsubmissionadaptor]
1975 ** Ensembl Quality Check Submission Adaptor
1976 ** @argrule Delete qcsb [EnsPQcsubmission]
1977 ** Ensembl Quality Check Submission
1978 ** @argrule Store qcsb [EnsPQcsubmission]
1979 ** Ensembl Quality Check Submission
1980 ** @argrule Update qcsb [const EnsPQcsubmission]
1981 ** Ensembl Quality Check Submission
1982 **
1983 ** @valrule * [AjBool] ajTrue upon success, ajFalse otherwise
1984 **
1985 ** @fcategory use
1986 ******************************************************************************/
1987
1988
1989
1990
1991 /* @func ensQcsubmissionadaptorDelete *****************************************
1992 **
1993 ** Delete an Ensembl Quality Check Submission.
1994 **
1995 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
1996 ** Ensembl Quality Check Submission Adaptor
1997 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
1998 **
1999 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2000 **
2001 ** @release 6.2.0
2002 ** @@
2003 ******************************************************************************/
2004
ensQcsubmissionadaptorDelete(EnsPQcsubmissionadaptor qcsba,EnsPQcsubmission qcsb)2005 AjBool ensQcsubmissionadaptorDelete(EnsPQcsubmissionadaptor qcsba,
2006 EnsPQcsubmission qcsb)
2007 {
2008 AjBool result = AJFALSE;
2009
2010 AjPSqlstatement sqls = NULL;
2011
2012 AjPStr statement = NULL;
2013
2014 EnsPDatabaseadaptor dba = NULL;
2015
2016 if (!qcsba)
2017 return ajFalse;
2018
2019 if (!qcsb)
2020 return ajFalse;
2021
2022 if (!ensQcsubmissionGetIdentifier(qcsb))
2023 return ajFalse;
2024
2025 dba = ensQcsubmissionadaptorGetDatabaseadaptor(qcsba);
2026
2027 statement = ajFmtStr(
2028 "DELETE FROM "
2029 "submission "
2030 "WHERE "
2031 "submission.submission_id = %u",
2032 qcsb->Identifier);
2033
2034 sqls = ensDatabaseadaptorSqlstatementNew(dba, statement);
2035
2036 if (ajSqlstatementGetAffectedrows(sqls))
2037 {
2038 qcsb->Adaptor = NULL;
2039 qcsb->Identifier = 0U;
2040
2041 result = ajTrue;
2042 }
2043
2044 ensDatabaseadaptorSqlstatementDel(dba, &sqls);
2045
2046 ajStrDel(&statement);
2047
2048 return result;
2049 }
2050
2051
2052
2053
2054 /* @func ensQcsubmissionadaptorStore ******************************************
2055 **
2056 ** Store an Ensembl Quality Check Submission.
2057 **
2058 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
2059 ** Ensembl Quality Check Submission Adaptor
2060 ** @param [u] qcsb [EnsPQcsubmission] Ensembl Quality Check Submission
2061 **
2062 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2063 **
2064 ** @release 6.2.0
2065 ** @@
2066 ******************************************************************************/
2067
ensQcsubmissionadaptorStore(EnsPQcsubmissionadaptor qcsba,EnsPQcsubmission qcsb)2068 AjBool ensQcsubmissionadaptorStore(EnsPQcsubmissionadaptor qcsba,
2069 EnsPQcsubmission qcsb)
2070 {
2071 AjBool result = AJFALSE;
2072
2073 AjPSqlstatement sqls = NULL;
2074
2075 AjPStr statement = NULL;
2076
2077 EnsPDatabaseadaptor dba = NULL;
2078
2079 if (!qcsba)
2080 return ajFalse;
2081
2082 if (!qcsb)
2083 return ajFalse;
2084
2085 if (ensQcsubmissionGetAdaptor(qcsb) && ensQcsubmissionGetIdentifier(qcsb))
2086 return ajFalse;
2087
2088 dba = ensQcsubmissionadaptorGetDatabaseadaptor(qcsba);
2089
2090 statement = ajFmtStr(
2091 "INSERT IGNORE INTO "
2092 "submission "
2093 "SET "
2094 "submission.analysis_id = %u, "
2095 "submission.query_db_id = %u, "
2096 "submission.query_id = %u, "
2097 "submission.target_db_id = %u, "
2098 "submission.target_id = %u, "
2099 "submission.target_start = %u, "
2100 "submission.target_end = %u, "
2101 "submission.target_strand = %d, "
2102 "submission.analysis_job_id = %u",
2103 ensAnalysisGetIdentifier(qcsb->Analysis),
2104 ensQcsequenceGetQcdatabaseIdentifier(qcsb->QuerySequence),
2105 ensQcsequenceGetIdentifier(qcsb->QuerySequence),
2106 ensQcsequenceGetQcdatabaseIdentifier(qcsb->TargetSequence),
2107 ensQcsequenceGetIdentifier(qcsb->TargetSequence),
2108 qcsb->TargetStart,
2109 qcsb->TargetEnd,
2110 qcsb->TargetStrand,
2111 qcsb->Analysisjobidentifier);
2112
2113 sqls = ensDatabaseadaptorSqlstatementNew(dba, statement);
2114
2115 if (ajSqlstatementGetAffectedrows(sqls))
2116 {
2117 ensQcsubmissionSetIdentifier(qcsb, ajSqlstatementGetIdentifier(sqls));
2118
2119 ensQcsubmissionSetAdaptor(qcsb, qcsba);
2120
2121 result = ajTrue;
2122 }
2123
2124 ensDatabaseadaptorSqlstatementDel(dba, &sqls);
2125
2126 ajStrDel(&statement);
2127
2128 return result;
2129 }
2130
2131
2132
2133
2134 /* @func ensQcsubmissionadaptorUpdate *****************************************
2135 **
2136 ** Update an Ensembl Quality Check Submission.
2137 **
2138 ** @param [u] qcsba [EnsPQcsubmissionadaptor]
2139 ** Ensembl Quality Check Submission Adaptor
2140 ** @param [r] qcsb [const EnsPQcsubmission] Ensembl Quality Check Submission
2141 **
2142 ** @return [AjBool] ajTrue upon success, ajFalse otherwise
2143 **
2144 ** @release 6.2.0
2145 ** @@
2146 ******************************************************************************/
2147
ensQcsubmissionadaptorUpdate(EnsPQcsubmissionadaptor qcsba,const EnsPQcsubmission qcsb)2148 AjBool ensQcsubmissionadaptorUpdate(EnsPQcsubmissionadaptor qcsba,
2149 const EnsPQcsubmission qcsb)
2150 {
2151 AjBool result = AJFALSE;
2152
2153 AjPSqlstatement sqls = NULL;
2154
2155 AjPStr statement = NULL;
2156
2157 EnsPDatabaseadaptor dba = NULL;
2158
2159 if (!qcsba)
2160 return ajFalse;
2161
2162 if (!qcsb)
2163 return ajFalse;
2164
2165 if (!ensQcsubmissionGetIdentifier(qcsb))
2166 return ajFalse;
2167
2168 dba = ensQcsubmissionadaptorGetDatabaseadaptor(qcsba);
2169
2170 statement = ajFmtStr(
2171 "UPDATE IGNORE "
2172 "submission "
2173 "SET "
2174 "submission.analysis_id = %u, "
2175 "submission.query_db_id = %u, "
2176 "submission.query_id = %u, "
2177 "submission.target_db_id = %u, "
2178 "submission.target_id = %u, "
2179 "submission.target_start = %u, "
2180 "submission.target_end = %u, "
2181 "submission.target_strand = %d, "
2182 "submission.analysis_job_id = %u "
2183 "WHERE "
2184 "submission.submission_id = %u",
2185 ensAnalysisGetIdentifier(qcsb->Analysis),
2186 ensQcsequenceGetQcdatabaseIdentifier(qcsb->QuerySequence),
2187 ensQcsequenceGetIdentifier(qcsb->QuerySequence),
2188 ensQcsequenceGetQcdatabaseIdentifier(qcsb->TargetSequence),
2189 ensQcsequenceGetIdentifier(qcsb->TargetSequence),
2190 qcsb->TargetStart,
2191 qcsb->TargetEnd,
2192 qcsb->TargetStrand,
2193 qcsb->Analysisjobidentifier);
2194
2195 sqls = ensDatabaseadaptorSqlstatementNew(dba, statement);
2196
2197 if (ajSqlstatementGetAffectedrows(sqls))
2198 result = ajTrue;
2199
2200 ensDatabaseadaptorSqlstatementDel(dba, &sqls);
2201
2202 ajStrDel(&statement);
2203
2204 return result;
2205 }
2206