Skip to content

Commit 659a5df

Browse files
committed
Restore read-level CLI output
1 parent e01e047 commit 659a5df

5 files changed

Lines changed: 62 additions & 11 deletions

File tree

isovar/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# See the License for the specific language governing permissions and
1111
# limitations under the License.
1212

13-
__version__ = "1.4.17"
13+
__version__ = "1.4.18"
1414

1515

1616
from .allele_read import AlleleRead

isovar/cli/isovar_allele_reads.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from ..logging import get_logger
2020
from .rna_args import (
2121
make_rna_reads_arg_parser,
22-
read_evidence_dataframe_from_args
22+
allele_reads_dataframe_from_args,
2323
)
2424
from .output_args import add_output_args, write_dataframe
2525

@@ -35,6 +35,6 @@ def run(args=None):
3535
args = sys.argv[1:]
3636
args = parser.parse_args(args)
3737
logger.info(args)
38-
df = read_evidence_dataframe_from_args(args)
38+
df = allele_reads_dataframe_from_args(args)
3939
logger.info(df)
4040
write_dataframe(df, args)

isovar/cli/isovar_variant_reads.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
from ..logging import get_logger
2020
from .rna_args import (
21-
read_evidence_dataframe_from_args,
21+
variant_reads_dataframe_from_args,
2222
make_rna_reads_arg_parser,
2323
)
2424
from .output_args import add_output_args, write_dataframe
@@ -38,6 +38,6 @@ def run(args=None):
3838
args = sys.argv[1:]
3939
args = parser.parse_args(args)
4040
logger.info(args)
41-
df = read_evidence_dataframe_from_args(args)
41+
df = variant_reads_dataframe_from_args(args)
4242
logger.info(df)
4343
write_dataframe(df, args)

isovar/cli/rna_args.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,19 @@ def variant_reads_generator_from_args(args):
139139
yield variant, read_evidence.alt_reads
140140

141141

142+
def allele_reads_generator_from_args(args):
143+
"""
144+
Creates a generator of (Variant, list of AlleleRead) from parsed
145+
arguments, including all reads at each variant locus.
146+
"""
147+
for variant, read_evidence in read_evidence_generator_from_args(args):
148+
yield variant, (
149+
list(read_evidence.ref_reads)
150+
+ list(read_evidence.alt_reads)
151+
+ list(read_evidence.other_reads)
152+
)
153+
154+
142155
def read_evidence_dataframe_from_args(args):
143156
"""
144157
Collect ReadEvidence for each variant and turn them into a DataFrame
@@ -147,9 +160,25 @@ def read_evidence_dataframe_from_args(args):
147160
read_evidence_generator_from_args(args))
148161

149162

163+
def allele_reads_dataframe_from_args(args):
164+
"""
165+
Collect all allele reads for each variant and turn them into a DataFrame.
166+
"""
167+
return allele_reads_to_dataframe(
168+
allele_reads_generator_from_args(args))
169+
170+
171+
def variant_reads_dataframe_from_args(args):
172+
"""
173+
Collect alt-supporting reads for each variant and turn them into a
174+
DataFrame.
175+
"""
176+
return allele_reads_to_dataframe(
177+
variant_reads_generator_from_args(args))
178+
179+
150180
def variants_reads_dataframe_from_args(args):
151181
"""
152182
Collect variant reads for each variant and turn them into a DataFrame
153183
"""
154-
return allele_reads_to_dataframe(
155-
read_evidence_generator_from_args(args))
184+
return variant_reads_dataframe_from_args(args)

tests/test_cli.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import tempfile
1414
from os import remove
1515
from os.path import getsize, exists
16+
import pandas as pd
1617

1718
from .testing_helpers import data_path
1819

@@ -24,6 +25,10 @@
2425
from isovar.cli.isovar_variant_reads import run as isovar_variant_reads
2526
from isovar.cli.isovar_variant_sequences import run as isovar_variant_sequences
2627
from isovar.cli.isovar_main import run as isovar_main
28+
from isovar.cli.rna_args import (
29+
make_rna_reads_arg_parser,
30+
variants_reads_dataframe_from_args,
31+
)
2732

2833
vcf_args = [
2934
"--vcf",
@@ -36,7 +41,7 @@
3641
]
3742

3843

39-
def run_cli_fn(fn, include_bam_in_args=True):
44+
def run_cli_fn(fn, include_bam_in_args=True, return_dataframe=False):
4045
with tempfile.NamedTemporaryFile(delete=False) as f:
4146
output_path = f.name
4247
assert not exists(output_path) == 0
@@ -47,15 +52,22 @@ def run_cli_fn(fn, include_bam_in_args=True):
4752
args = vcf_args + output_args
4853
fn(args)
4954
assert getsize(output_path) > 0
55+
if return_dataframe:
56+
df = pd.read_csv(output_path)
5057
remove(output_path)
58+
if return_dataframe:
59+
return df
5160

5261

5362
def test_cli_allele_counts():
5463
run_cli_fn(isovar_allele_counts)
5564

5665

5766
def test_cli_allele_reads():
58-
run_cli_fn(isovar_allele_reads)
67+
df = run_cli_fn(isovar_allele_reads, return_dataframe=True)
68+
assert set(["prefix", "allele", "suffix", "name", "sequence", "gene"]).issubset(df.columns)
69+
assert "ref_reads" not in df.columns
70+
assert len(df) == 293
5971

6072

6173
def test_cli_reference_contexts():
@@ -71,11 +83,21 @@ def test_cli_translations():
7183

7284

7385
def test_cli_variant_reads():
74-
run_cli_fn(isovar_variant_reads)
86+
df = run_cli_fn(isovar_variant_reads, return_dataframe=True)
87+
assert set(["prefix", "allele", "suffix", "name", "sequence", "gene"]).issubset(df.columns)
88+
assert "ref_reads" not in df.columns
89+
assert len(df) == 42
7590

7691

7792
def test_cli_variant_sequences():
7893
run_cli_fn(isovar_variant_sequences)
7994

8095
def test_cli_main():
81-
run_cli_fn(isovar_main)
96+
run_cli_fn(isovar_main)
97+
98+
99+
def test_variant_reads_dataframe_helper():
100+
args = make_rna_reads_arg_parser().parse_args(args_with_bam)
101+
df = variants_reads_dataframe_from_args(args)
102+
assert set(["prefix", "allele", "suffix", "name", "sequence", "gene"]).issubset(df.columns)
103+
assert len(df) == 42

0 commit comments

Comments
 (0)