Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_linked_adapter_front_required_optional(r1, r2, exp1, exp2):
# -g X...Y
a = AdapterParser()._parse("ACG" + r1 + "...TGT" + r2, "front")
assert isinstance(a, LinkedAdapter)
assert a.front_required is exp1
assert a.back_required is exp2
def test_parse_with_parameters():
parser = AdapterParser(
max_error_rate=0.2, min_overlap=4, read_wildcards=False,
adapter_wildcards=False, indels=False)
a = parser._parse('ACGTACGT; e=0.15', 'front')
assert a.max_error_rate == 0.15
assert a.min_overlap == 4
a = parser._parse('ACGTAAAA; o=5; e=0.11', 'back')
assert a.max_error_rate == 0.11
assert a.min_overlap == 5
for spec in ('thename=ACG;e=0.15 ... TGT;e=0.17', 'thename=ACG;e=0.15...TGT;e=0.17'):
a = parser._parse(spec, 'back')
assert isinstance(a, LinkedAdapter)
assert a.front_adapter.max_error_rate == 0.15
assert a.back_adapter.max_error_rate == 0.17
def test_anywhere_parameter_back():
parser = AdapterParser(max_error_rate=0.2, min_overlap=4, read_wildcards=False,
adapter_wildcards=False, indels=True)
adapter = list(parser.parse('CTGAAGTGAAGTACACGGTT;anywhere', 'back'))[0]
assert isinstance(adapter, BackAdapter)
assert adapter._force_anywhere
# TODO move the rest to a separate test
read = Sequence('foo1', 'TGAAGTACACGGTTAAAAAAAAAA')
from cutadapt.modifiers import AdapterCutter
cutter = AdapterCutter([adapter])
trimmed_read = cutter(read, ModificationInfo(read))
assert trimmed_read.sequence == ''
def test_anchoring_makes_front_linked_adapter_required(seq, req1, req2):
# -a X...Y
a = AdapterParser()._parse(seq, "back")
assert isinstance(a, LinkedAdapter)
assert a.front_required is req1
assert a.back_required is req2
def test_linked_adapter_back_required_optional(r1, r2, req1, req2):
# -a X...Y
a = AdapterParser()._parse("ACG" + r1 + "...TGT" + r2, "back")
assert isinstance(a, LinkedAdapter)
assert a.front_required is req1
assert a.back_required is req2
def test_parse_file_notation(tmpdir):
tmp_path = str(tmpdir.join('adapters.fasta'))
with open(tmp_path, 'w') as f:
f.write(dedent(""">first_name
ADAPTER1
>second_name
ADAPTER2
"""))
parser = AdapterParser(
max_error_rate=0.2, min_overlap=4, read_wildcards=False,
adapter_wildcards=False, indels=False)
adapters = list(parser.parse('file:' + tmp_path, cmdline_type='back'))
assert len(adapters) == 2
assert adapters[0].name == 'first_name'
assert adapters[0].sequence == 'ADAPTER1'
assert adapters[1].name == 'second_name'
assert adapters[1].sequence == 'ADAPTER2'
for a in adapters:
assert a.max_error_rate == 0.2
assert a.min_overlap == 4
assert not a.read_wildcards
assert not a.adapter_wildcards
assert not a.indels
def test_anywhere_parameter_front():
parser = AdapterParser(max_error_rate=0.2, min_overlap=4, read_wildcards=False,
adapter_wildcards=False, indels=True)
adapter = list(parser.parse('CTGAAGTGAAGTACACGGTT;anywhere', 'front'))[0]
assert isinstance(adapter, FrontAdapter)
assert adapter._force_anywhere
# TODO move the rest to a separate test
read = Sequence('foo1', 'AAAAAAAAAACTGAAGTGAA')
from cutadapt.modifiers import AdapterCutter
cutter = AdapterCutter([adapter])
trimmed_read = cutter(read, ModificationInfo(read))
assert trimmed_read.sequence == ''
def adapters_from_args(args) -> Tuple[List[Adapter], List[Adapter]]:
adapter_parser = AdapterParser(
max_error_rate=args.error_rate,
min_overlap=args.overlap,
read_wildcards=args.match_read_wildcards,
adapter_wildcards=args.match_adapter_wildcards,
indels=args.indels,
)
try:
adapters = adapter_parser.parse_multi(args.adapters)
adapters2 = adapter_parser.parse_multi(args.adapters2)
except (FileNotFoundError, ValueError) as e:
raise CommandLineError(e)
warn_duplicate_adapters(adapters)
warn_duplicate_adapters(adapters2)
if args.debug == "trace":
for adapter in adapters + adapters2:
adapter.enable_debug()