Skip to content

Commit

Permalink
Merge pull request #81 from epifluidlab/coverage-fix
Browse files Browse the repository at this point in the history
Update utils.py
  • Loading branch information
jamesli124 authored May 30, 2024
2 parents 36ebb62 + 7c49b56 commit 3637078
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 18 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.6.2] - 2024-05-30

### Fixed
- adjusted handling of contig, start, stop for `frag_generator` so that
`coverage` does not throw exceptions for genomewide intervals.

### Added
- test for `single_coverage`

## [0.6.1] - 2024-05-26

### Changed
- add `__version` attribute
- `finaletoolkit --version` displays package version
Expand Down
2 changes: 1 addition & 1 deletion src/finaletoolkit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
cell-free DNA from paired-end sequencing data.
"""

__version__ = "0.6.1"
__version__ = "0.6.2"
6 changes: 4 additions & 2 deletions src/finaletoolkit/utils/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,8 +291,10 @@ def frag_generator(

# Raise exception if start and stop specified but not contig
if contig is None and not (start is None and stop is None):
raise ValueError("contig should be specified if start or "
"stop given.")
if contig is None and start==0 and stop is None:
pass
else:
raise ValueError("contig should be specified if start or stop given.")

if is_sam:
for read in sam_file.fetch(contig, start, stop):
Expand Down
30 changes: 15 additions & 15 deletions tests/test_cli_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,63 +10,63 @@ class TestCLIEntryPoint:
Test all CLI subcommands related to end_motifs and MDS, genomewide
and intervals.
"""
def test_coverage(self, request):
def test_coverage(self):
exit_status = os.system('finaletoolkit coverage --help')
assert exit_status == 0

def test_frag_length_bins(self, request):
def test_frag_length_bins(self):
exit_status = os.system('finaletoolkit frag-length-bins --help')
assert exit_status == 0

def test_frag_length_intervals(self, request):
def test_frag_length_intervals(self):
exit_status = os.system('finaletoolkit frag-length-intervals --help')
assert exit_status == 0

def test_cleavage_profile(self, request):
def test_cleavage_profile(self):
exit_status = os.system('finaletoolkit cleavage-profile --help')
assert exit_status == 0

def test_wps(self, request):
def test_wps(self):
exit_status = os.system('finaletoolkit wps --help')
assert exit_status == 0

def test_agg_wps(self, request):
def test_agg_wps(self):
exit_status = os.system('finaletoolkit adjust-wps --help')
assert exit_status == 0

def test_delfi(self, request):
def test_delfi(self):
exit_status = os.system('finaletoolkit delfi --help')
assert exit_status == 0

def test_delfi_gc_correct(self, request):
def test_delfi_gc_correct(self):
exit_status = os.system('finaletoolkit delfi-gc-correct --help')
assert exit_status == 0

def test_end_motif(self, request):
def test_end_motif(self):
exit_status = os.system('finaletoolkit end-motifs --help')
assert exit_status == 0

def test_mds(self, request):
def test_mds(self):
exit_status = os.system('finaletoolkit mds --help')
assert exit_status == 0

def test_interval_end_motif(self, request):
def test_interval_end_motif(self):
exit_status = os.system('finaletoolkit interval-end-motifs --help')
assert exit_status == 0

def test_interval_mds(self, request):
def test_interval_mds(self):
exit_status = os.system('finaletoolkit interval-mds --help')
assert exit_status == 0

def test_filter_bam(self, request):
def test_filter_bam(self):
exit_status = os.system('finaletoolkit filter-bam --help')
assert exit_status == 0

def test_agg_bw(self, request):
def test_agg_bw(self):
exit_status = os.system('finaletoolkit agg-bw --help')
assert exit_status == 0

def test_gap_bed(self, request):
def test_gap_bed(self):
exit_status = os.system('finaletoolkit gap-bed --help')
assert exit_status == 0

45 changes: 45 additions & 0 deletions tests/test_coverage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
"""
Tests for finaletoolkit.frag.coverage module and associated
subcommands, which calculate fragment coverage.
"""

import os
import filecmp
import difflib

import pytest

from finaletoolkit.frag.coverage import *

class TestSingleCoverage:
def test_coverage(self, request):
bam = request.path.parent / 'data' / '12.3444.b37.bam'
chrom, start, stop, name, cov = single_coverage(bam, '12', 0, None, quality_threshold=0)

assert chrom == '12'
assert start == 0
assert cov == pytest.approx(17)

def test_coverage_interval(self, request):
bam = request.path.parent / 'data' / '12.3444.b37.bam'
chrom, start, stop, name, cov = single_coverage(
bam, '12', 34443000, 34447000, quality_threshold=0)

assert chrom == '12'
assert start == 34443000
assert stop == 34447000
assert cov == pytest.approx(17)

def test_coverage_interval_midpoints(self, request):
bam = request.path.parent / 'data' / '12.3444.b37.bam'
chrom, start, stop, name, cov = single_coverage(
bam, '12', 34443400, 34443600, quality_threshold=0)

assert chrom == '12'
assert start == 34443400
assert stop == 34443600
assert cov == pytest.approx(2)

class TestCoverage:
def coverage(self, request):
pass

0 comments on commit 3637078

Please sign in to comment.