Skip to content

Commit

Permalink
add region method to parse region id
Browse files Browse the repository at this point in the history
fix compat module imports
  • Loading branch information
robinandeer committed Sep 3, 2015
1 parent 912f181 commit 6da8068
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 7 deletions.
12 changes: 8 additions & 4 deletions chanjo/cli/calculate.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,17 @@ def gene(context, gene_ids):
@click.option('-p', '--per', type=click.Choice(['exon', 'sample']),
help='report stats per sample/exon')
@click.argument('chromosome', type=str)
@click.argument('start', type=int)
@click.argument('end', type=int)
@click.argument('start', type=int, required=False)
@click.argument('end', type=int, required=False)
@click.pass_context
def region(context, sample, per, chromosome, start, end):
"""Report mean statistics for a region of exons."""
results = context.parent.api.region(chromosome, start, end,
sample_id=sample, per=per)
api = context.parent.api
if start is None:
logger.debug('region id detected, parse string')
results = api.region_alt(chromosome, sample_id=sample, per=per)
else:
results = api.region(chromosome, start, end, sample_id=sample, per=per)
if per == 'exon':
dump_json(*results)
else:
Expand Down
21 changes: 19 additions & 2 deletions chanjo/store/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from sqlalchemy.sql import func

from chanjo._compat import itervalues
from chanjo.compat import itervalues
from .core import Store
from .models import Exon, ExonStatistic, Gene, Sample, Transcript
from .utils import group_by_field, predict_gender
Expand Down Expand Up @@ -107,6 +107,23 @@ def mean(self, *samples):
sample_groups = group_by_field(results, name='sample_id')
return sample_groups

def region_alt(self, region_id, sample_id=None, per=None):
"""Parse region id as input for `region` method.
Args:
region_id (str): for example 1:1242314-1243419
sample_id (Optional[str]): filter to only a single sample
per (Optional[str]): report on a per exon basis ("exon")
Returns:
dict: weighted metrics (across samples)
"""
chromosome, pos_str = region_id.split(':')
start, end = [int(pos) for pos in pos_str.split('-')]
data = self.region(chromosome, start, end, sample_id=sample_id,
per=per)
return data

def region(self, chromosome, start, end, sample_id=None, per=None):
"""Report coverage across a genomics region (of exons).
Expand Down Expand Up @@ -262,7 +279,7 @@ def incomplete_exons(self, level=10, threshold=100, group_id=None,
return query

def gene_panel(self, gene_ids, group_id=None, sample_ids=None):
"""Report metrics for a panel of genes.
"""Report mean coverage (+ completeness) for a panel of genes.
Args:
gene_ids (List[str]): gene ids for the panel
Expand Down
2 changes: 1 addition & 1 deletion chanjo/store/utils.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from chanjo._compat import itervalues
from chanjo.compat import itervalues


def group_by_field(results, name='field_id'):
Expand Down

0 comments on commit 6da8068

Please sign in to comment.