From dc39f05a341901dc9dd1ad0a8b6dad8b48c12967 Mon Sep 17 00:00:00 2001
From: peterjc
Date: Wed, 4 Apr 2012 09:41:49 +0100
Subject: [PATCH] Load FAI in 'samtools depad' (not used yet)
---
padding.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/padding.c b/padding.c
index af3df94..9f8bca7 100644
--- a/padding.c
+++ b/padding.c
@@ -5,6 +5,7 @@
#include "sam_header.h"
#include "sam.h"
#include "bam.h"
+#include "faidx.h"
static void replace_cigar(bam1_t *b, int n, uint32_t *cigar)
{
@@ -68,7 +69,7 @@ static void unpad_seq(bam1_t *b, kstring_t *s)
assert(length == s->l);
}
-int bam_pad2unpad(samfile_t *in, samfile_t *out)
+int bam_pad2unpad(samfile_t *in, samfile_t *out, faidx_t *fai)
{
bam_header_t *h;
bam1_t *b;
@@ -185,6 +186,7 @@ static int usage(int is_long_help);
int main_pad2unpad(int argc, char *argv[])
{
samfile_t *in = 0, *out = 0;
+ faidx_t *fai;
int c, is_bamin = 1, compress_level = -1, is_bamout = 1, is_long_help = 0;
char in_mode[5], out_mode[5], *fn_out = 0, *fn_list = 0, *fn_ref = 0;
int ret=0;
@@ -215,8 +217,10 @@ int main_pad2unpad(int argc, char *argv[])
}
// Load FASTA reference (also needed for SAM -> BAM if missing header)
- if (fn_ref) fn_list = samfaipath(fn_ref);
-
+ if (fn_ref) {
+ fn_list = samfaipath(fn_ref);
+ fai = fai_load(fn_ref);
+ }
// open file handlers
if ((in = samopen(argv[optind], in_mode, fn_list)) == 0) {
fprintf(stderr, "[depad] fail to open \"%s\" for reading.\n", argv[optind]);
@@ -236,13 +240,14 @@ int main_pad2unpad(int argc, char *argv[])
}
// Do the depad
- ret = bam_pad2unpad(in, out);
+ ret = bam_pad2unpad(in, out, fai);
depad_end:
// close files, free and return
free(fn_list); free(fn_out);
samclose(in);
samclose(out);
+ fai_destroy(fai);
return ret;
}
--
2.39.2