It is possible to get gzipped fastq.gz files as output in SABRE?
1
0
Entering edit mode
3.9 years ago
User000 ▴ 690

Hello,

A quick question. I am using SABRE to demultiplex my single end GBS fastq.gz files. As input I am using directly my gzipped fastq.gz files, but I am not getting the output as a gzipped fastq.gz. Sabre is instead outputting a normal ASCII text, so fastq file. Is there any way to solve this? Below is my command line:

sabre se -f myfile.fastq.gz -b barcodes.txt -u unknown_barcode.fastq.gz
sabre demultiplex • 1.4k views
ADD COMMENT
1
Entering edit mode

Does not look like it supports compressed files. You will need to gzip the files afterwards.

ADD REPLY
2
Entering edit mode
3.9 years ago

Looking at the code, the answer is NO. The output files are opened using a 'simple' fopen(filename,"w")` https://github.com/najoshi/sabre/blob/039a55e500ba07b7e6432ea6ec2ddcfb3471d949/src/demulti_single.c#L148

Is there any way to solve this?

yes. update the code to using the gz library instead of the standard IO C library.

ADD COMMENT
0
Entering edit mode

I see, so I will have to gzip them post-demultiplexing. But it actually supports the gzip input, right? As stated also in the documentation "Sabre also supports gzipped file inputs" . Thank you a lot

ADD REPLY
0
Entering edit mode

OMG, update will be hard for me, I can try, but I am not a brilliant programmer :) thank you

ADD REPLY
1
Entering edit mode

that's quite easy. replace fopen with gzopen, fprintf with gzprintf , etc...

ADD REPLY
0
Entering edit mode

Thanks so much! For now it is not working: should I change only il file demulti_single.c? also, infn will become ingzn?

ADD REPLY
0
Entering edit mode

Since nothing was happening I re-build by typing make and it gave the following error (I put only a piece because it is too long for a comment):

gcc -Wall -pedantic -DVERSION=1.00 -O3 -c src/demulti_single.c
src/demulti_single.c: In function ‘single_usage’:
src/demulti_single.c:28:13: warning: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
   gzprintf (stderr, "\nUsage: %s se -f <fastq sequence file> -b <barcode file> -u <unknown barcode output file>\n\
             ^
In file included from src/demulti_single.c:4:0:
/usr/include/zlib.h:1349:23: note: expected ‘gzFile {aka struct gzFile_s *}’ but argument is of type ‘struct _IO_FILE *’
 ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
                       ^
src/demulti_single.c:33:13: warning: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
   gzprintf (stderr, "-b, --barcode-file, File with barcode and output file name per line (required)\n\
             ^
In file included from src/demulti_single.c:4:0:
/usr/include/zlib.h:1349:23: note: expected ‘gzFile {aka struct gzFile_s *}’ but argument is of type ‘struct _IO_FILE *’
 ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
                       ^
src/demulti_single.c: In function ‘single_main’:
src/demulti_single.c:118:13: warning: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
   gzprintf (stderr, "Error: Input file is same as barcode file.\n");
             ^
In file included from src/demulti_single.c:4:0:
/usr/include/zlib.h:1349:23: note: expected ‘gzFile {aka struct gzFile_s *}’ but argument is of type ‘struct _IO_FILE *’
 ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
                       ^
src/demulti_single.c:124:13: warning: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
   gzprintf (stderr, "Could not open input file '%s'.\n", ingzn);
             ^
In file included from src/demulti_single.c:4:0:
/usr/include/zlib.h:1349:23: note: expected ‘gzFile {aka struct gzFile_s *}’ but argument is of type ‘struct _IO_FILE *’
 ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
                       ^
src/demulti_single.c:128:10: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
  barfile = gzopen (bargzn, "r");
          ^
src/demulti_single.c:130:13: warning: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
   gzprintf (stderr, "Could not open barcode file '%s'.\n", bargzn);
             ^
In file included from src/demulti_single.c:4:0:
/usr/include/zlib.h:1349:23: note: expected ‘gzFile {aka struct gzFile_s *}’ but argument is of type ‘struct _IO_FILE *’
 ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
                       ^
src/demulti_single.c:134:14: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
  unknownfile = gzopen (unknowngzn, "w");
              ^
src/demulti_single.c:136:13: warning: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
   gzprintf (stderr, "Could not open unknown output file '%s'.\n", unknowngzn);
             ^
In file included from src/demulti_single.c:4:0:
/usr/include/zlib.h:1349:23: note: expected ‘gzFile {aka struct gzFile_s *}’ but argument is of type ‘struct _IO_FILE *’
 ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
                       ^
src/demulti_single.c:143:9: warning: implicit declaration of function ‘gzscanf’ [-Wimplicit-function-declaration]
  while (gzscanf (barfile, "%s%s", barcode, baroutfn) != EOF) {
         ^
src/demulti_single.c:148:16: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
   curr->bcfile = gzopen (baroutfn, "w");
                ^
src/demulti_single.c:174:14: warning: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
    gzprintf (curr->bcfile, "@%s", gzqrec->name.s);
              ^
In file included from src/demulti_single.c:4:0:
/usr/include/zlib.h:1349:23: note: expected ‘gzFile {aka struct gzFile_s *}’ but argument is of type ‘FILE * {aka struct _IO_FILE *}’
 ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
                       ^
ADD REPLY
0
Entering edit mode

I did something and nevertheless the errors the program build sabre executable, and the files it creates are gzip compressed data, from Unix.But I am not sure the changes I made to the script are OK. Could you, please, check? Should I create a new question? Thank you

ADD REPLY

Login before adding your answer.

Traffic: 1281 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6