diff --git a/samplot/__init__.py b/samplot/__init__.py index b615d02..d088350 100644 --- a/samplot/__init__.py +++ b/samplot/__init__.py @@ -1,2 +1,2 @@ #!/usr/bin/env python -__version__ = "1.1.5" +__version__ = "1.1.6" diff --git a/samplot/samplot.py b/samplot/samplot.py index f0d0ae4..7b4df6a 100755 --- a/samplot/samplot.py +++ b/samplot/samplot.py @@ -182,7 +182,12 @@ def get_tabix_iter(chrm, start, end, datafile): Used to avoid chrX vs. X notation issues when extracting data from annotation files """ - tbx = pysam.TabixFile(datafile) + try: + tbx = pysam.TabixFile(datafile) + except: + tbx = pysam.TabixFile(datafile, index=datafile+".csi") + + itr = None try: itr = tbx.fetch(chrm, max(0, start - 1000), end + 1000) @@ -2212,7 +2217,9 @@ def gff_file(transcript_file): idx_file = transcript_file + ".tbi" if not os.path.isfile(idx_file): - parser.error("transcript file {} is missing .tbi index file".format(transcript_file)) + idx_file = transcript_file + ".csi" + if not os.path.isfile(idx_file): + parser.error("transcript file {} is missing .tbi/.csi index file".format(transcript_file)) return transcript_file parser.add_argument( @@ -2250,7 +2257,9 @@ def bed_file(annotation_file): idx_file = annotation_file + ".tbi" if not os.path.isfile(idx_file): - parser.error("annotation file {} is missing .tbi index file".format(annotation_file)) + idx_file = annotation_file + ".csi" + if not os.path.isfile(idx_file): + parser.error("annotation file {} is missing .tbi index file".format(annotation_file)) return annotation_file parser.add_argument( diff --git a/test/data/Alu.2_X.csionly.bed.gz b/test/data/Alu.2_X.csionly.bed.gz new file mode 100644 index 0000000..14a3166 Binary files /dev/null and b/test/data/Alu.2_X.csionly.bed.gz differ diff --git a/test/data/Alu.2_X.csionly.bed.gz.csi b/test/data/Alu.2_X.csionly.bed.gz.csi new file mode 100644 index 0000000..ab5b657 Binary files /dev/null and b/test/data/Alu.2_X.csionly.bed.gz.csi differ diff --git a/test/data/Homo_sapiens.GRCh37.csionly.2_X.gff3.gz b/test/data/Homo_sapiens.GRCh37.csionly.2_X.gff3.gz new file mode 100644 index 0000000..f0ffcdb Binary files /dev/null and b/test/data/Homo_sapiens.GRCh37.csionly.2_X.gff3.gz differ diff --git a/test/data/Homo_sapiens.GRCh37.csionly.2_X.gff3.gz.csi b/test/data/Homo_sapiens.GRCh37.csionly.2_X.gff3.gz.csi new file mode 100644 index 0000000..9f4b977 Binary files /dev/null and b/test/data/Homo_sapiens.GRCh37.csionly.2_X.gff3.gz.csi differ diff --git a/test/func/samplot_test.sh b/test/func/samplot_test.sh index 0ae714c..f2c8a1b 100755 --- a/test/func/samplot_test.sh +++ b/test/func/samplot_test.sh @@ -541,4 +541,25 @@ if [ $translocation ]; then assert_no_stderr fi + +out_file_name=$func_path"csi-annotation.png" +bam=$data_path"2_59305747-59505747_X_151018513-151218513.BND.bam" +run translocation \ + samplot plot\ + -c $sv_chrm_1 -s $sv_start_1 -e $sv_end_1 \ + -c $sv_chrm_2 -s $sv_start_2 -e $sv_end_2 \ + -b $bam \ + -o $out_file_name \ + -t $sv_type \ + -A $data_path"Alu.2_X.csionly.bed.gz" \ + -T $data_path"Homo_sapiens.GRCh37.csionly.2_X.gff3.gz" \ + --zoom 10000 +if [ $translocation ]; then + assert_exit_code 0 + assert_equal $out_file_name $( ls $out_file_name ) + assert_no_stdout + assert_no_stderr +fi + + rm -rf $func_path"img/" ssshtest