Skip to content

Commit d03ce34

Browse files
authored
Merge pull request #160 from rhpvorderman/issue159
Fix issue with FASTQ files without adapters causing crashes for the insert size metrics module.
2 parents 7e4aa5b + ca7c562 commit d03ce34

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ Changelog
77
.. This document is user facing. Please word the changes in such a way
88
.. that users understand how the changes affect the new version.
99
10+
version 0.9.1
11+
-----------------
12+
+ Fix an issue where the insert size metrics module would crash when no
13+
adapters where present.
14+
1015
version 0.9.0
1116
-----------------
1217
+ MultiQC support since MultiQC version 1.22

src/sequali/report_modules.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1843,8 +1843,8 @@ def from_insert_size_metrics(cls, metrics: InsertSizeMetrics):
18431843
metrics.adapters_read1())
18441844
adapters_read2 = AdapterFromOverlapReport.select_relevant_adapters(
18451845
metrics.adapters_read2())
1846-
longest_adapter_read1 = adapters_read1[-1][0]
1847-
longest_adapter_read2 = adapters_read2[-1][0]
1846+
longest_adapter_read1 = adapters_read1[-1][0] if adapters_read1 else ""
1847+
longest_adapter_read2 = adapters_read2[-1][0] if adapters_read2 else ""
18481848
longest_adapter_read1_match = identify_sequence_builtin(
18491849
longest_adapter_read1)[2]
18501850
longest_adapter_read2_match = identify_sequence_builtin(

tests/test_integration.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,19 @@ def test_empty_file(tmp_path):
5151
assert result["summary"]["total_bases"] == 0
5252

5353

54+
def test_empty_file_paired(tmp_path):
55+
empty_fastq = TEST_DATA / "empty.fastq"
56+
sys.argv = ["", "--dir", str(tmp_path), str(empty_fastq), str(empty_fastq)]
57+
main()
58+
simple_fastq_json = tmp_path / "empty.fastq.json"
59+
assert simple_fastq_json.exists()
60+
result = json.loads(simple_fastq_json.read_text())
61+
assert result["summary_read2"]["maximum_length"] == 0
62+
assert result["summary_read2"]["minimum_length"] == 0
63+
assert result["summary_read2"]["total_gc_bases"] == 0
64+
assert result["summary_read2"]["total_bases"] == 0
65+
66+
5467
def test_empty_read(tmp_path):
5568
empty_read_fastq = TEST_DATA / "empty_read.fastq"
5669
sys.argv = ["", "--dir", str(tmp_path), str(empty_read_fastq)]
@@ -64,6 +77,20 @@ def test_empty_read(tmp_path):
6477
assert result["summary"]["total_bases"] == 0
6578

6679

80+
def test_empty_read_paired(tmp_path):
81+
empty_read_fastq = TEST_DATA / "empty_read.fastq"
82+
sys.argv = ["", "--dir", str(tmp_path), str(empty_read_fastq),
83+
str(empty_read_fastq)]
84+
main()
85+
simple_fastq_json = tmp_path / "empty_read.fastq.json"
86+
assert simple_fastq_json.exists()
87+
result = json.loads(simple_fastq_json.read_text())
88+
assert result["summary_read2"]["maximum_length"] == 0
89+
assert result["summary_read2"]["minimum_length"] == 0
90+
assert result["summary_read2"]["total_gc_bases"] == 0
91+
assert result["summary_read2"]["total_bases"] == 0
92+
93+
6794
def test_adapters_only(tmp_path):
6895
adapters_fastq = TEST_DATA / "100_illumina_adapters.fastq"
6996
sys.argv = ["", "--dir", str(tmp_path),

0 commit comments

Comments
 (0)