diff --git a/README.md b/README.md index faf74ef..75ffa44 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Outrigger is a program which uses junction reads from RNA seq data, and a graph database to create a *de novo* alternative splicing annotation with a graph database, and quantify percent spliced-in (Psi) of the events. -* Free software: BSD license +* Free and open source software: BSD license ## Features @@ -25,7 +25,6 @@ You'll want to add the [`bioconda`](https://bioconda.github.io/) channel to make ``` conda config --add channels r conda config --add channels bioconda - ``` Create an environment called `outrigger-env`. Python 2.7, Python 3.4, and Python 3.5 are supported. diff --git a/docs/releases/v0.2.9.rst b/docs/releases/v0.2.9.rst new file mode 100644 index 0000000..38cd99f --- /dev/null +++ b/docs/releases/v0.2.9.rst @@ -0,0 +1,25 @@ +v0.2.9 (...) +------------ + + + +New features +~~~~~~~~~~~~ + +Plotting functions +~~~~~~~~~~~~~~~~~~ + +API changes +~~~~~~~~~~~ + + +Bug fixes +~~~~~~~~~ + +- Fixed an issue in ``outrigger validate`` when fasta file and genome + annotation didn't have overlapping chromosomes and ``outrigger validate`` + would simply fail rather than gracefully skipping those events. + +Miscellaneous +~~~~~~~~~~~~~ + diff --git a/outrigger/__init__.py b/outrigger/__init__.py index 0d6a52a..9fd93f8 100755 --- a/outrigger/__init__.py +++ b/outrigger/__init__.py @@ -2,7 +2,7 @@ __author__ = 'Olga Botvinnik' __email__ = 'olga.botvinnik@gmail.com' -__version__ = '0.2.8dev' +__version__ = '0.2.9dev' __all__ = ['psi', 'region', 'util', 'io', 'validate', 'index', 'common'] diff --git a/outrigger/tests/data/simulated/validate_negative_control/chromsizes b/outrigger/tests/data/simulated/validate_negative_control/chromsizes index 67d16b0..ecbcbaa 100644 --- a/outrigger/tests/data/simulated/validate_negative_control/chromsizes +++ b/outrigger/tests/data/simulated/validate_negative_control/chromsizes @@ -1 +1,2 @@ simulated 1000 +in_chromsizes 100 diff --git a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/events.csv b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/events.csv index f1f721b..f7f0ae4 100644 --- a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/events.csv +++ b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/events.csv @@ -1,2 +1,4 @@ isoform1=junction:simulated:150-500:+|isoform2=junction:simulated:150-300:+@exon:simulated:300-400:+@junction:simulated:400-500:+ -isoform1=junction:simulated:100-600:-|isoform2=junction:simulated:300-600:-@exon:simulated:300-400:-@junction:simulated:100-400:- \ No newline at end of file +isoform1=junction:simulated:100-600:-|isoform2=junction:simulated:300-600:-@exon:simulated:300-400:-@junction:simulated:100-400:- +isoform1=junction:nonexistent:100-600:-|isoform2=junction:nonexistent:300-600:-@exon:nonexistent:300-400:-@junction:nonexistent:100-400:- +isoform1=junction:in_chromsizes:100-600:-|isoform2=junction:in_chromsizes:300-600:-@exon:in_chromsizes:300-400:-@junction:in_chromsizes:100-400:- diff --git a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon1.bed b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon1.bed index 6786da9..b7806a6 100644 --- a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon1.bed +++ b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon1.bed @@ -1,2 +1,4 @@ simulated 100 150 isoform1=junction:simulated:150-500:+|isoform2=junction:simulated:150-300:+@exon:simulated:300-400:+@junction:simulated:400-500:+ . + simulated 500 600 isoform1=junction:simulated:100-600:-|isoform2=junction:simulated:300-600:-@exon:simulated:300-400:-@junction:simulated:100-400:- . - +nonexistent 500 600 isoform1=junction:nonexistent:100-600:-|isoform2=junction:nonexistent:300-600:-@exon:nonexistent:300-400:-@junction:nonexistent:100-400:- . - +in_chromsizes 500 600 isoform1=junction:in_chromsizes:100-600:-|isoform2=junction:in_chromsizes:300-600:-@exon:in_chromsizes:300-400:-@junction:in_chromsizes:100-400:- . - diff --git a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon2.bed b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon2.bed index 6d15854..862a665 100644 --- a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon2.bed +++ b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon2.bed @@ -1,2 +1,4 @@ simulated 300 400 isoform1=junction:simulated:150-500:+|isoform2=junction:simulated:150-300:+@exon:simulated:300-400:+@junction:simulated:400-500:+ . + simulated 300 400 isoform1=junction:simulated:100-600:-|isoform2=junction:simulated:300-600:-@exon:simulated:300-400:-@junction:simulated:100-400:- . - +nonexistent 300 400 isoform1=junction:nonexistent:100-600:-|isoform2=junction:nonexistent:300-600:-@exon:nonexistent:300-400:-@junction:nonexistent:100-400:- . - +in_chromsizes 300 400 isoform1=junction:in_chromsizes:100-600:-|isoform2=junction:in_chromsizes:300-600:-@exon:in_chromsizes:300-400:-@junction:in_chromsizes:100-400:- . - diff --git a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon3.bed b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon3.bed index 8fe9f89..eab2751 100644 --- a/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon3.bed +++ b/outrigger/tests/data/simulated/validate_negative_control/outrigger_output/index/se/exon3.bed @@ -1,2 +1,4 @@ simulated 500 600 isoform1=junction:simulated:150-500:+|isoform2=junction:simulated:150-300:+@exon:simulated:300-400:+@junction:simulated:400-500:+ . + simulated 100 150 isoform1=junction:simulated:100-600:-|isoform2=junction:simulated:300-600:-@exon:simulated:300-400:-@junction:simulated:100-400:- . - +nonexistent 100 150 isoform1=junction:nonexistent:100-600:-|isoform2=junction:nonexistent:300-600:-@exon:nonexistent:300-400:-@junction:nonexistent:100-400:- . - +in_chromsizes 100 150 isoform1=junction:in_chromsizes:100-600:-|isoform2=junction:in_chromsizes:300-600:-@exon:in_chromsizes:300-400:-@junction:in_chromsizes:100-400:- . - diff --git a/outrigger/validate/check_splice_sites.py b/outrigger/validate/check_splice_sites.py index f9686f6..c950c0d 100644 --- a/outrigger/validate/check_splice_sites.py +++ b/outrigger/validate/check_splice_sites.py @@ -1,10 +1,10 @@ from collections import OrderedDict -from Bio import SeqIO import pandas as pd import pybedtools + NT = 2 MAMMALIAN_SPLICE_SITES = 'GT/AG,AT/AC' @@ -55,11 +55,10 @@ def read_splice_sites(bed, genome, fasta, direction='upstream'): right = NT flanked = bed.flank(l=left, r=right, s=True, genome=genome) - seqs = flanked.sequence(fi=fasta, s=True) - - with open(seqs.seqfn) as f: - records = SeqIO.parse(f, 'fasta') - records = pd.Series([str(r.seq) for r in records], - index=[b.name for b in bed]) - # import pdb; pdb.set_trace() - return records + seqs = flanked.sequence(fi=fasta, s=True, name=True, tab=True) + + splice_sites = pd.read_table(seqs.seqfn, index_col=0, header=None, + squeeze=True) + splice_sites.index = [x.split('::')[0] for x in splice_sites.index] + splice_sites.name = None + return splice_sites diff --git a/setup.py b/setup.py index 1e6ebf0..1c4dfce 100755 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ setup( name='outrigger', - version='0.2.8dev', + version='0.2.9dev', description="Outrigger is a tool to de novo annotate splice sites " "and exons", long_description=readme + '\n\n' + history,