Skip to content

Commit

Permalink
Merge pull request #50 from standage/refactor/import
Browse files Browse the repository at this point in the history
Cleaner imports
  • Loading branch information
standage committed Jan 5, 2017
2 parents 837f6f6 + a39fe69 commit 16135be
Show file tree
Hide file tree
Showing 14 changed files with 57 additions and 59 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]
## Changed
- Modules focused on classes / data structure now support more concise imports
(for example, `from tag import Feature` and `tag.Feature` now supported and
preferred over `from tag.feature import feature` and `tag.feature.Feature`).

## [0.1.1] - 2016-12-19
### Changed
- CLI implemented using `entry_points` instead of a dedicated script.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
```python
# Compute number of exons per gene
import tag
reader = tag.reader.GFF3Reader(infilename='/data/genomes/mybug.gff3.gz')
reader = tag.GFF3Reader(infilename='/data/genomes/mybug.gff3.gz')
for gene in tag.select.features(reader, type='gene'):
exons = [feat for feat in gene if feat.type == exon]
print('num exons:', len(exons))
Expand Down
2 changes: 1 addition & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Most GFF parsers will load data into memory for you--the trivial bit--but will n
# Compute number of exons per gene
import tag
reader = tag.reader.GFF3Reader(infilename='/data/genomes/mybug.gff3.gz')
reader = tag.GFF3Reader(infilename='/data/genomes/mybug.gff3.gz')
for gene in tag.select.features(reader, type='gene'):
exons = [feat for feat in gene if feat.type == exon]
print('num exons:', len(exons))
Expand Down
18 changes: 9 additions & 9 deletions tag/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
import __builtin__ as builtins
except: # pragma: no cover
import builtins
from . import comment
from . import directive
from . import feature
from . import sequence
from . import range
from . import reader
from . import writer
from . import cli
from . import select
from tag.comment import Comment
from tag.directive import Directive
from tag.feature import Feature
from tag.sequence import Sequence
from tag.range import Range
from tag.reader import GFF3Reader
from tag.writer import GFF3Writer
from tag import cli
from tag import select
from gzip import open as gzopen

from ._version import get_versions
Expand Down
10 changes: 5 additions & 5 deletions tag/reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@

import sys
import tag
from tag.range import Range
from tag.comment import Comment
from tag.directive import Directive
from tag.feature import Feature
from tag.sequence import Sequence
from tag import Range
from tag import Comment
from tag import Directive
from tag import Feature
from tag import Sequence


def parse_fasta(data): # pragma: no cover
Expand Down
8 changes: 4 additions & 4 deletions tag/select.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def features(entrystream, type=None, traverse=False):
to :code:`True` to search each feature graph for the
specified feature type
"""
for feature in entry_type_filter(entrystream, tag.feature.Feature):
for feature in entry_type_filter(entrystream, tag.Feature):
if traverse:
if type is None:
message = 'cannot traverse without a specific feature type'
Expand Down Expand Up @@ -54,7 +54,7 @@ def window(featurestream, seqid, start=None, end=None, strict=True):
"""
region = None
if start and end:
region = tag.range.Range(start, end)
region = tag.Range(start, end)

for feature in featurestream:
if feature.seqid != seqid:
Expand All @@ -78,14 +78,14 @@ def directives(entrystream, type=None):
:param type: retrieve only directives of the specified type; set to
:code:`None` to retrieve all directives
"""
for directive in entry_type_filter(entrystream, tag.directive.Directive):
for directive in entry_type_filter(entrystream, tag.Directive):
if not type or type == directive.type:
yield directive


def sequences(entrystream):
"""Pull sequences out of the specified entry stream."""
for sequence in entry_type_filter(entrystream, tag.sequence.Sequence):
for sequence in entry_type_filter(entrystream, tag.Sequence):
yield sequence


Expand Down
4 changes: 2 additions & 2 deletions tag/writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
from io import StringIO
import sys
import tag
from tag.feature import Feature
from tag.reader import GFF3Reader
from tag import Feature
from tag import GFF3Reader


class GFF3Writer():
Expand Down
6 changes: 3 additions & 3 deletions tests/test_comment.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
# -----------------------------------------------------------------------------

import pytest
from tag.comment import Comment
from tag.directive import Directive
from tag.feature import Feature
from tag import Comment
from tag import Directive
from tag import Feature


def test_init():
Expand Down
10 changes: 5 additions & 5 deletions tests/test_feature.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
# -----------------------------------------------------------------------------

import pytest
from tag.comment import Comment
from tag.directive import Directive
from tag.feature import Feature
from tag.range import Range
from tag.sequence import Sequence
from tag import Comment
from tag import Directive
from tag import Feature
from tag import Range
from tag import Sequence


def eden():
Expand Down
2 changes: 1 addition & 1 deletion tests/test_range.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
# -----------------------------------------------------------------------------

import pytest
from tag.range import Range
from tag import Range
from tag.reader import GFF3Reader


Expand Down
12 changes: 6 additions & 6 deletions tests/test_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@

import pytest
import tag
from tag.range import Range
from tag.comment import Comment
from tag.directive import Directive
from tag.feature import Feature
from tag.reader import GFF3Reader
from tag.sequence import Sequence
from tag import Range
from tag import Comment
from tag import Directive
from tag import Feature
from tag import GFF3Reader
from tag import Sequence


def test_grape():
Expand Down
28 changes: 10 additions & 18 deletions tests/test_select.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,26 @@

import pytest
import tag
from tag import GFF3Reader


def test_features():
ifn = 'tests/testdata/pbar-withseq.gff3'

reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/pbar-withseq.gff3')
features = [f for f in tag.select.features(reader)]
assert len(features) == 3

reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/pbar-withseq.gff3')
features = [f for f in tag.select.features(reader, type='pseudogene')]
assert len(features) == 1

reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/pbar-withseq.gff3')
with pytest.raises(ValueError) as ve:
features = [f for f in tag.select.features(reader, traverse=True)]
assert 'cannot traverse without a specific feature type' in str(ve)


def test_window_contain():
ifn = 'tests/testdata/pdom-withseq.gff3'
reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/pdom-withseq.gff3')
features = tag.select.features(reader)
window = tag.select.window(features, 'PdomSCFr1.2-0483', 3000, 7000)
selected = [f for f in window]
Expand All @@ -39,8 +37,7 @@ def test_window_contain():


def test_window_overlap():
ifn = 'tests/testdata/osat-twoscaf.gff3.gz'
reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/osat-twoscaf.gff3.gz')
features = tag.select.features(reader)
window = tag.select.window(features, 'NW_015379189.1', 15000, 20000,
strict=False)
Expand All @@ -50,8 +47,7 @@ def test_window_overlap():


def test_window_seqid():
ifn = 'tests/testdata/osat-twoscaf.gff3.gz'
reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/osat-twoscaf.gff3.gz')
features = tag.select.features(reader)
window = tag.select.window(features, 'NW_015379208.1')
selected = [f for f in window]
Expand All @@ -60,22 +56,18 @@ def test_window_seqid():


def test_directives():
ifn = 'tests/testdata/pbar-withseq.gff3'

reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/pbar-withseq.gff3')
directives = [d for d in tag.select.directives(reader)]
assert len(directives) == 3

reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/pbar-withseq.gff3')
dirs = [d for d in tag.select.directives(reader, type='sequence-region')]
assert len(dirs) == 2
assert [d.seqid for d in dirs] == ['NW_011929623.1', 'NW_011929624.1']


def test_sequences():
ifn = 'tests/testdata/pbar-withseq.gff3'

reader = tag.reader.GFF3Reader(infilename=ifn)
reader = GFF3Reader(infilename='tests/testdata/pbar-withseq.gff3')
seqs = [s for s in tag.select.sequences(reader)]
assert len(seqs) == 2
assert sorted([s.seq[0:5] for s in seqs]) == ['GCTAA', 'TAGAC']
4 changes: 2 additions & 2 deletions tests/test_sequence.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
# -----------------------------------------------------------------------------

import pytest
from tag.feature import Feature
from tag.sequence import Sequence
from tag import Feature
from tag import Sequence


def test_repr():
Expand Down
4 changes: 2 additions & 2 deletions tests/test_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
from io import StringIO
import pytest
import tag
from tag.reader import GFF3Reader
from tag.writer import GFF3Writer
from tag import GFF3Reader
from tag import GFF3Writer


def test_write_grape():
Expand Down

0 comments on commit 16135be

Please sign in to comment.