Skip to content
Snippets Groups Projects
Commit 564cd5b1 authored by Pavel Jedlicka's avatar Pavel Jedlicka
Browse files

added flag for solo ltrs

parent fa95fb13
No related branches found
No related tags found
No related merge requests found
......@@ -27,8 +27,9 @@ from nested.utils.dependency_resolver import DependencyResolver
@click.option('--discovery_tool', '-dt', default=DiscoveryTool.LTR_finder.name,
type=click.Choice(list(map(lambda val: val, DiscoveryTool.__members__))),
help='Determines which tool is used for retrotransoson discovery. Default: LTR_finder')
@click.option('--solo_ltrs', '-solo', is_flag=True, default=False, help='Run solo LTR module')
def main(input_fasta, sketch, format, output_fasta_offset, output_folder, initial_threshold,
threshold_multiplier, threads, discovery_tool):
threshold_multiplier, threads, discovery_tool, solo_ltrs):
check_ram(input_fasta, threads)
check_permissions(output_folder, os.W_OK | os.X_OK)
number_of_errors = [0]
......@@ -41,21 +42,24 @@ def main(input_fasta, sketch, format, output_fasta_offset, output_folder, initia
futuress.append(executor.submit(process_sequence, sequence, sketcher,
sketch, format, output_fasta_offset, output_folder,
initial_threshold, threshold_multiplier, number_of_errors,
dependencyResolver))
dependencyResolver, solo_ltrs))
futures.wait(futuress)
end_time = datetime.now()
print('Total time: {}'.format(end_time - start_time))
print('Number of errors: {}'.format(number_of_errors[0]))
def process_sequence(sequence, sketcher, sketch, format, output_fasta_offset, output_folder, initial_threshold, threshold_multiplier, errors, dependency_resolver):
def process_sequence(sequence, sketcher, sketch, format, output_fasta_offset, output_folder, initial_threshold, threshold_multiplier, errors, dependency_resolver, solo_ltrs):
sequence.id = sequence.id.replace('/', '--')
seq_start_time = datetime.now()
strlen = 15
print("Processing {}".format(sequence.id))
try:
nester = Nester(sequence, initial_threshold, threshold_multiplier, dependency_resolver)
nester = Nester(sequence, initial_threshold, threshold_multiplier, dependency_resolver, solo_ltrs)
sketcher.create_gff(nester.nested_element, dirpath=output_folder, output_fasta_offset=output_fasta_offset, format=format)
sketcher.create_solo_ltr_gff(nester.solo_ltrs, dirpath=output_folder)
if solo_ltrs:
sketcher.create_solo_ltr_gff(nester.solo_ltrs, dirpath=output_folder)
sketcher.create_trf_gff(nester.trf, nester.seqid, dirpath=output_folder)
if sketch:
if format != 'default':
......
......@@ -21,7 +21,7 @@ class Nester(ToolInterface):
nested_element (NestedElement): nested element
"""
def __init__(self, sequence, threshold, multiplier, dependency_resolver):
def __init__(self, sequence, threshold, multiplier, dependency_resolver, solo):
self.seqid = sequence.id
self.sequence = sequence.seq
self.nested_element = None
......@@ -32,6 +32,7 @@ class Nester(ToolInterface):
self.multiplier = multiplier
self.dependency_resolver = dependency_resolver
self.trf = []
self.solo = solo
self._find_nesting()
def _find_nesting(self):
......@@ -56,9 +57,11 @@ class Nester(ToolInterface):
if not candidates:
best_candidate = gene.get_best_candidate()
if not best_candidate:
self.solo_ltrs.find_solo_ltrs(sequence)
self.solo_ltrs.solo_ltrs.sort(key=lambda x: x.location[0], reverse=True)
return self.solo_ltrs.solo_ltrs
if solo:
self.solo_ltrs.find_solo_ltrs(sequence)
self.solo_ltrs.solo_ltrs.sort(key=lambda x: x.location[0], reverse=True)
return self.solo_ltrs.solo_ltrs
return []
candidates = [best_candidate]
# sort by score (from highest)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment