Loading nested/cli/nester.py +9 −5 Original line number Original line Diff line number Diff line Loading @@ -27,8 +27,9 @@ from nested.utils.dependency_resolver import DependencyResolver @click.option('--discovery_tool', '-dt', default=DiscoveryTool.LTR_finder.name, @click.option('--discovery_tool', '-dt', default=DiscoveryTool.LTR_finder.name, type=click.Choice(list(map(lambda val: val, DiscoveryTool.__members__))), type=click.Choice(list(map(lambda val: val, DiscoveryTool.__members__))), help='Determines which tool is used for retrotransoson discovery. Default: LTR_finder') 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, 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_ram(input_fasta, threads) check_permissions(output_folder, os.W_OK | os.X_OK) check_permissions(output_folder, os.W_OK | os.X_OK) number_of_errors = [0] number_of_errors = [0] Loading @@ -41,21 +42,24 @@ def main(input_fasta, sketch, format, output_fasta_offset, output_folder, initia futuress.append(executor.submit(process_sequence, sequence, sketcher, futuress.append(executor.submit(process_sequence, sequence, sketcher, sketch, format, output_fasta_offset, output_folder, sketch, format, output_fasta_offset, output_folder, initial_threshold, threshold_multiplier, number_of_errors, initial_threshold, threshold_multiplier, number_of_errors, dependencyResolver)) dependencyResolver, solo_ltrs)) futures.wait(futuress) futures.wait(futuress) end_time = datetime.now() end_time = datetime.now() print('Total time: {}'.format(end_time - start_time)) print('Total time: {}'.format(end_time - start_time)) print('Number of errors: {}'.format(number_of_errors[0])) 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('/', '--') sequence.id = sequence.id.replace('/', '--') seq_start_time = datetime.now() seq_start_time = datetime.now() strlen = 15 strlen = 15 print("Processing {}".format(sequence.id)) print("Processing {}".format(sequence.id)) try: 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_gff(nester.nested_element, dirpath=output_folder, output_fasta_offset=output_fasta_offset, format=format) if solo_ltrs: sketcher.create_solo_ltr_gff(nester.solo_ltrs, dirpath=output_folder) sketcher.create_solo_ltr_gff(nester.solo_ltrs, dirpath=output_folder) sketcher.create_trf_gff(nester.trf, nester.seqid, dirpath=output_folder) sketcher.create_trf_gff(nester.trf, nester.seqid, dirpath=output_folder) if sketch: if sketch: if format != 'default': if format != 'default': Loading nested/core/nester.py +7 −4 Original line number Original line Diff line number Diff line Loading @@ -21,7 +21,7 @@ class Nester(ToolInterface): nested_element (NestedElement): nested element 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.seqid = sequence.id self.sequence = sequence.seq self.sequence = sequence.seq self.nested_element = None self.nested_element = None Loading @@ -32,6 +32,7 @@ class Nester(ToolInterface): self.multiplier = multiplier self.multiplier = multiplier self.dependency_resolver = dependency_resolver self.dependency_resolver = dependency_resolver self.trf = [] self.trf = [] self.solo = solo self._find_nesting() self._find_nesting() def _find_nesting(self): def _find_nesting(self): Loading @@ -56,9 +57,11 @@ class Nester(ToolInterface): if not candidates: if not candidates: best_candidate = gene.get_best_candidate() best_candidate = gene.get_best_candidate() if not best_candidate: if not best_candidate: if solo: self.solo_ltrs.find_solo_ltrs(sequence) self.solo_ltrs.find_solo_ltrs(sequence) self.solo_ltrs.solo_ltrs.sort(key=lambda x: x.location[0], reverse=True) self.solo_ltrs.solo_ltrs.sort(key=lambda x: x.location[0], reverse=True) return self.solo_ltrs.solo_ltrs return self.solo_ltrs.solo_ltrs return [] candidates = [best_candidate] candidates = [best_candidate] # sort by score (from highest) # sort by score (from highest) Loading Loading
nested/cli/nester.py +9 −5 Original line number Original line Diff line number Diff line Loading @@ -27,8 +27,9 @@ from nested.utils.dependency_resolver import DependencyResolver @click.option('--discovery_tool', '-dt', default=DiscoveryTool.LTR_finder.name, @click.option('--discovery_tool', '-dt', default=DiscoveryTool.LTR_finder.name, type=click.Choice(list(map(lambda val: val, DiscoveryTool.__members__))), type=click.Choice(list(map(lambda val: val, DiscoveryTool.__members__))), help='Determines which tool is used for retrotransoson discovery. Default: LTR_finder') 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, 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_ram(input_fasta, threads) check_permissions(output_folder, os.W_OK | os.X_OK) check_permissions(output_folder, os.W_OK | os.X_OK) number_of_errors = [0] number_of_errors = [0] Loading @@ -41,21 +42,24 @@ def main(input_fasta, sketch, format, output_fasta_offset, output_folder, initia futuress.append(executor.submit(process_sequence, sequence, sketcher, futuress.append(executor.submit(process_sequence, sequence, sketcher, sketch, format, output_fasta_offset, output_folder, sketch, format, output_fasta_offset, output_folder, initial_threshold, threshold_multiplier, number_of_errors, initial_threshold, threshold_multiplier, number_of_errors, dependencyResolver)) dependencyResolver, solo_ltrs)) futures.wait(futuress) futures.wait(futuress) end_time = datetime.now() end_time = datetime.now() print('Total time: {}'.format(end_time - start_time)) print('Total time: {}'.format(end_time - start_time)) print('Number of errors: {}'.format(number_of_errors[0])) 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('/', '--') sequence.id = sequence.id.replace('/', '--') seq_start_time = datetime.now() seq_start_time = datetime.now() strlen = 15 strlen = 15 print("Processing {}".format(sequence.id)) print("Processing {}".format(sequence.id)) try: 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_gff(nester.nested_element, dirpath=output_folder, output_fasta_offset=output_fasta_offset, format=format) if solo_ltrs: sketcher.create_solo_ltr_gff(nester.solo_ltrs, dirpath=output_folder) sketcher.create_solo_ltr_gff(nester.solo_ltrs, dirpath=output_folder) sketcher.create_trf_gff(nester.trf, nester.seqid, dirpath=output_folder) sketcher.create_trf_gff(nester.trf, nester.seqid, dirpath=output_folder) if sketch: if sketch: if format != 'default': if format != 'default': Loading
nested/core/nester.py +7 −4 Original line number Original line Diff line number Diff line Loading @@ -21,7 +21,7 @@ class Nester(ToolInterface): nested_element (NestedElement): nested element 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.seqid = sequence.id self.sequence = sequence.seq self.sequence = sequence.seq self.nested_element = None self.nested_element = None Loading @@ -32,6 +32,7 @@ class Nester(ToolInterface): self.multiplier = multiplier self.multiplier = multiplier self.dependency_resolver = dependency_resolver self.dependency_resolver = dependency_resolver self.trf = [] self.trf = [] self.solo = solo self._find_nesting() self._find_nesting() def _find_nesting(self): def _find_nesting(self): Loading @@ -56,9 +57,11 @@ class Nester(ToolInterface): if not candidates: if not candidates: best_candidate = gene.get_best_candidate() best_candidate = gene.get_best_candidate() if not best_candidate: if not best_candidate: if solo: self.solo_ltrs.find_solo_ltrs(sequence) self.solo_ltrs.find_solo_ltrs(sequence) self.solo_ltrs.solo_ltrs.sort(key=lambda x: x.location[0], reverse=True) self.solo_ltrs.solo_ltrs.sort(key=lambda x: x.location[0], reverse=True) return self.solo_ltrs.solo_ltrs return self.solo_ltrs.solo_ltrs return [] candidates = [best_candidate] candidates = [best_candidate] # sort by score (from highest) # sort by score (from highest) Loading