Changeset: 43f9498dd212 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=43f9498dd212
Modified Files:
        sql/backends/monet5/bam/85_bam.sql
        sql/backends/monet5/bam/Tests/benchmark.sql
        sql/backends/monet5/bam/bam.mal
        sql/backends/monet5/bam/bam_lib.c
        sql/backends/monet5/bam/bam_lib.h
Branch: DVframework_bam
Log Message:

Fixed the first query. Turned out that reverse_qual did nothing else then an 
ordinary string reversal. So, removed reverse_qual from the UDFs.
Furthermore, it turned out that the reverse_seq UDF had to also reverse the 
sequence. This has been updated.


diffs (118 lines):

diff --git a/sql/backends/monet5/bam/85_bam.sql 
b/sql/backends/monet5/bam/85_bam.sql
--- a/sql/backends/monet5/bam/85_bam.sql
+++ b/sql/backends/monet5/bam/85_bam.sql
@@ -8,8 +8,5 @@ RETURNS BOOLEAN EXTERNAL NAME bam.bam_fl
 CREATE FUNCTION reverse_seq(seq STRING)
 RETURNS STRING EXTERNAL NAME bam.reverse_seq;
 
-CREATE FUNCTION reverse_qual(qual STRING)
-RETURNS STRING EXTERNAL NAME bam.reverse_qual;
-
 CREATE FUNCTION seq_length(cigar STRING)
 RETURNS INT EXTERNAL NAME bam.seq_length;
\ No newline at end of file
diff --git a/sql/backends/monet5/bam/Tests/benchmark.sql 
b/sql/backends/monet5/bam/Tests/benchmark.sql
--- a/sql/backends/monet5/bam/Tests/benchmark.sql
+++ b/sql/backends/monet5/bam/Tests/benchmark.sql
@@ -2,23 +2,23 @@
 ------------------------------------------------------------- Query 1 
----------------------------------------------------------------
 
--------------------------------------------------------------------------------------------------------------------------------------
 
-SELECT qname, 
-    CASE WHEN bam_flag("flag", 'segm_reve') THEN reverse_seq("seq")   ELSE 
"seq"  END,
-    CASE WHEN bam_flag("flag", 'segm_reve') THEN reverse_qual("qual") ELSE 
"qual" END
+SELECT qname,
+    CASE WHEN bam_flag(flag, 'segm_reve') THEN reverse_seq(seq)   ELSE seq  
END,
+    CASE WHEN bam_flag(flag, 'segm_reve') THEN reverse(qual)      ELSE qual END
 FROM bam.alignments
-WHERE   file_id = 2
-    AND bam_flag("flag", 'seco_alig') = FALSE
-    AND bam_flag("flag", 'segm_unma') = TRUE
+WHERE   file_id = 1
+    AND bam_flag(flag, 'seco_alig') = FALSE
+    AND bam_flag(flag, 'segm_unma') = TRUE
     AND qname IN (
         SELECT qname
         FROM bam.alignments
-        WHERE bam_flag("flag", 'seco_alig') = FALSE
+        WHERE bam_flag(flag, 'seco_alig') = FALSE
         GROUP BY qname
         HAVING COUNT(*) = 2
-           AND SUM(bam_flag("flag", 'firs_segm')) = 1
-           AND SUM(bam_flag("flag", 'last_segm')) = 1
+           AND SUM(bam_flag(flag, 'firs_segm')) = 1
+           AND SUM(bam_flag(flag, 'last_segm')) = 1
     )
-ORDER BY qname, bam_flag("flag", 'last_segm');
+ORDER BY qname, bam_flag(flag, 'last_segm');
 
 -- Description:
 -- This query selects fields required by the FASTQ file format (qname, 
seq/seq-reverse, qual/qual-reverse).
@@ -38,7 +38,7 @@ ORDER BY qname, bam_flag("flag", 'last_s
 
 
 
-
+/*
 
 
 
--------------------------------------------------------------------------------------------------------------------------------------
diff --git a/sql/backends/monet5/bam/bam.mal b/sql/backends/monet5/bam/bam.mal
--- a/sql/backends/monet5/bam/bam.mal
+++ b/sql/backends/monet5/bam/bam.mal
@@ -17,10 +17,6 @@ command bam.reverse_seq(seq:str):str
 address reverse_seq
 comment "Reverse DNA sequence."
 
-command bam.reverse_qual(qual:str):str
-address reverse_qual
-comment "Reverse DNA quality string."
-
 command bam.seq_length(cigar:str):int
 address seq_length
 comment "Calculate the real length of a DNA sequence, given its CIGAR string."
\ No newline at end of file
diff --git a/sql/backends/monet5/bam/bam_lib.c 
b/sql/backends/monet5/bam/bam_lib.c
--- a/sql/backends/monet5/bam/bam_lib.c
+++ b/sql/backends/monet5/bam/bam_lib.c
@@ -34,10 +34,10 @@ reverse_seq(str *ret, str *seq)
     {
         switch((*seq)[i])
         {
-            case 'A': (*ret)[i] = 'T'; break;
-            case 'T': (*ret)[i] = 'A'; break;
-            case 'C': (*ret)[i] = 'G'; break;
-            case 'G': (*ret)[i] = 'C'; break;
+            case 'A': (*ret)[len-i-1] = 'T'; break;
+            case 'T': (*ret)[len-i-1] = 'A'; break;
+            case 'C': (*ret)[len-i-1] = 'G'; break;
+            case 'G': (*ret)[len-i-1] = 'C'; break;
             default : throw(MAL, "reverse_seq", "Invalid character found in 
sequence: '%c'\n", (*seq)[i]);
         }
     }
@@ -46,14 +46,6 @@ reverse_seq(str *ret, str *seq)
 }
 
 str 
-reverse_qual(str *ret, str *qual)
-{
-    /*TODO: Implement */
-    *ret = *qual;
-    return MAL_SUCCEED;
-}
-
-str 
 seq_length(int *ret, str *cigar)
 {
     str cigar_consumable = *cigar;
diff --git a/sql/backends/monet5/bam/bam_lib.h 
b/sql/backends/monet5/bam/bam_lib.h
--- a/sql/backends/monet5/bam/bam_lib.h
+++ b/sql/backends/monet5/bam/bam_lib.h
@@ -15,7 +15,6 @@
 
 bam_export str bam_flag(bit *ret, sht *flag, str *name);
 bam_export str reverse_seq(str *ret, str *seq);
-bam_export str reverse_qual(str *ret, str *seq);
 bam_export str seq_length(int *ret, str *cigar);
 
 #endif
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to