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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list