Skip to content

Commit 2c80a44

Browse files
Merge pull request #106 from ncsa/develop
Develop
2 parents d17945e + c91d19f commit 2c80a44

File tree

9 files changed

+14522
-2029
lines changed

9 files changed

+14522
-2029
lines changed

dev-environment.yml

-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ dependencies:
182182
- platformdirs==2.5.2
183183
- prompt-toolkit==3.0.29
184184
- pure-eval==0.2.2
185-
- pybedtools==0.9.0
186185
- pygments==2.12.0
187186
- pyqt5-sip==12.9.0
188187
- pysam==0.19.1

environment.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ dependencies:
99
- pkginfo
1010
- matplotlib
1111
- numpy
12-
- seaborn
1312
- pyyaml
1413
- pip
1514
- scipy
1615
- pytest
17-
- bedtools
16+
- libgcc=5.2.0
1817
- htslib
1918
- pip:
2019
- pysam

neat/gen_mut_model/utils.py

-8
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,9 @@
33
"""
44

55
import json
6-
import os.path
7-
import pathlib
8-
import pickle
9-
import math
106
import sys
117

128
import numpy as np
13-
from numpy import genfromtxt
14-
import pybedtools
15-
from Bio import SeqIO
16-
179

1810
from pathlib import Path
1911
import logging

neat/model_sequencing_error/utils.py

-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
import logging
66
import numpy as np
77
# TODO implement plotting
8-
# import seaborn as sns
98
import matplotlib.pyplot as plt
109

11-
import pandas as pd
1210
from scipy.stats import mode
1311
from ..common import open_input
1412
from ..models import take_closest

neat/models/original_error_model.py

+12,500
Large diffs are not rendered by default.

neat/utilities/compute_gc.py

-2
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@
1616
import gzip
1717
import pickle
1818
import time
19-
import pdb
2019

2120
import numpy as np
2221
from Bio import SeqIO
23-
import pybedtools
2422

2523

2624
def process_fasta(file: str) -> dict:

poetry.lock

+1,967-2,013
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ pkginfo = "^1.8.3"
1414
numpy = "^1.23"
1515
PyYAML = "^6.0"
1616
pysam = "^0.19.1"
17-
pybedtools = "^0.9.0"
1817

1918
[tool.poetry.dev-dependencies]
2019
poetry = "^1.1.13"

tests/test_read_simulator/test_cover_dataset.py

+54
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,57 @@ def test_fragment_mean_st_dev_combinations():
9999
read1, _ = cover_dataset(read_pool, span_length, target_vector, options, fragment_model)
100100
except Exception as e:
101101
pytest.fail(f"Test failed for mean={mean}, st_dev={st_dev} with exception: {e}")
102+
103+
def test_coverage_ploidy_combinations():
104+
"""Test cover_dataset with various combinations of coverage and ploidy values to ensure no errors"""
105+
read_pool = [10] * 2000
106+
span_length = 100
107+
target_vector = np.full(100, fill_value=10, dtype=int)
108+
options = Options(rng_seed=0)
109+
options.paired_ended = True
110+
options.read_len = 101
111+
options.fragment_mean = 250
112+
options.fragment_st_dev = 100
113+
options.output.overwrite_output = True
114+
fragment_model = FragmentLengthModel(rng=options.rng)
115+
116+
coverage_values = [1, 2, 5, 10, 25, 50, 100]
117+
ploidy_values = [1, 1.5, 2]
118+
119+
for coverage in coverage_values:
120+
for ploidy in ploidy_values:
121+
options.coverage = coverage
122+
options.ploidy = ploidy # Assuming your model or function supports a 'ploidy' option
123+
read1, read2 = cover_dataset(read_pool, span_length, target_vector, options, fragment_model)
124+
coverage_check = []
125+
for i in range(span_length):
126+
# paired ended test, need both read1 and read2
127+
cover = [x for x in read1 + read2 if i in range(x[0], x[1])]
128+
coverage_check.append(len(cover))
129+
assert sum(coverage_check) / len(
130+
coverage_check) > coverage, f"Coverage check failed for coverage {coverage} and ploidy {ploidy}"
131+
132+
def test_single_ended_mode():
133+
"""Test cover_dataset in single-ended mode for various configurations"""
134+
read_pool = [10] * 2000
135+
span_length = 100
136+
target_vector = np.full(100, fill_value=10, dtype=int)
137+
options = Options(rng_seed=0)
138+
options.read_len = 101
139+
options.paired_ended = False
140+
options.fragment_mean = 250
141+
options.fragment_st_dev = 100
142+
options.coverage = 10
143+
options.output.overwrite_output = True
144+
fragment_model = FragmentLengthModel(rng=options.rng)
145+
146+
try:
147+
read1, _ = cover_dataset(read_pool, span_length, target_vector, options, fragment_model)
148+
coverage_check = []
149+
for i in range(span_length):
150+
# Single-ended test, only need read1
151+
cover = [x for x in read1 if i in range(x[0], x[1])]
152+
coverage_check.append(len(cover))
153+
assert sum(coverage_check) / len(coverage_check) > options.coverage, "Coverage check failed in single-ended mode"
154+
except Exception as e:
155+
pytest.fail(f"Test failed in single-ended mode with exception: {e}")

0 commit comments

Comments
 (0)