Added a unit test for multithreaded alignments
This commit is contained in:
parent
85946eb110
commit
fe999f1cab
@ -7,7 +7,6 @@ from queue import Queue
|
|||||||
|
|
||||||
from autobigs.engine.structures.alignment import AlignmentStats, PairwiseAlignment
|
from autobigs.engine.structures.alignment import AlignmentStats, PairwiseAlignment
|
||||||
|
|
||||||
|
|
||||||
class AsyncBiopythonPairwiseAlignmentEngine(AbstractContextManager):
|
class AsyncBiopythonPairwiseAlignmentEngine(AbstractContextManager):
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
self._thread_pool = ThreadPoolExecutor(self._max_threads, thread_name_prefix="async-pairwise-alignment")
|
self._thread_pool = ThreadPoolExecutor(self._max_threads, thread_name_prefix="async-pairwise-alignment")
|
||||||
@ -52,8 +51,8 @@ class AsyncBiopythonPairwiseAlignmentEngine(AbstractContextManager):
|
|||||||
async def next_completed(self) -> Union[tuple[PairwiseAlignment, dict[str, Any]], None]:
|
async def next_completed(self) -> Union[tuple[PairwiseAlignment, dict[str, Any]], None]:
|
||||||
if self._work_complete.empty() and len(self._work_left):
|
if self._work_complete.empty() and len(self._work_left):
|
||||||
return None
|
return None
|
||||||
future_now = await asyncio.wrap_future(self._work_complete.get())
|
completed_alignment = await asyncio.wrap_future(self._work_complete.get())
|
||||||
return future_now
|
return completed_alignment
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_value, traceback):
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
self.shutdown()
|
self.shutdown()
|
||||||
|
@ -13,6 +13,15 @@ def tohamaI_bpertussis_adk():
|
|||||||
def tohamaI_bpertussis_genome():
|
def tohamaI_bpertussis_genome():
|
||||||
return str(SeqIO.read("tests/resources/tohama_I_bpertussis.fasta", format="fasta").seq)
|
return str(SeqIO.read("tests/resources/tohama_I_bpertussis.fasta", format="fasta").seq)
|
||||||
|
|
||||||
|
@fixture
|
||||||
|
def fdaargos_1560_hinfluenza_adk():
|
||||||
|
return str(SeqIO.read("tests/resources/fdaargos_1560_hinfluenza_adk.fasta", format="fasta").seq)
|
||||||
|
|
||||||
|
@fixture
|
||||||
|
def fdaargos_1560_hinfluenza_genome():
|
||||||
|
return str(SeqIO.read("tests/resources/fdaargos_1560_hinfluenza.fasta", format="fasta").seq)
|
||||||
|
|
||||||
|
|
||||||
@fixture(params=[1, 2])
|
@fixture(params=[1, 2])
|
||||||
def dummy_engine(request):
|
def dummy_engine(request):
|
||||||
aligner = PairwiseAligner("blastn")
|
aligner = PairwiseAligner("blastn")
|
||||||
@ -21,7 +30,13 @@ def dummy_engine(request):
|
|||||||
yield engine
|
yield engine
|
||||||
|
|
||||||
class TestAsyncPairwiseAlignmentEngine:
|
class TestAsyncPairwiseAlignmentEngine:
|
||||||
async def test_single_alignment_no_errors(self, tohamaI_bpertussis_genome, tohamaI_bpertussis_adk: str, dummy_engine: AsyncBiopythonPairwiseAlignmentEngine):
|
async def test_single_alignment_no_errors_single_alignment(self, tohamaI_bpertussis_genome, tohamaI_bpertussis_adk: str, dummy_engine: AsyncBiopythonPairwiseAlignmentEngine):
|
||||||
dummy_engine.align(tohamaI_bpertussis_genome, tohamaI_bpertussis_adk)
|
dummy_engine.align(tohamaI_bpertussis_genome, tohamaI_bpertussis_adk)
|
||||||
|
async for alignment, additional_information in dummy_engine:
|
||||||
|
assert isinstance(alignment, PairwiseAlignment)
|
||||||
|
|
||||||
|
async def test_single_alignment_no_errors_multiple(self, tohamaI_bpertussis_genome, tohamaI_bpertussis_adk, fdaargos_1560_hinfluenza_genome, fdaargos_1560_hinfluenza_adk, dummy_engine: AsyncBiopythonPairwiseAlignmentEngine):
|
||||||
|
dummy_engine.align(tohamaI_bpertussis_genome, tohamaI_bpertussis_adk)
|
||||||
|
dummy_engine.align(fdaargos_1560_hinfluenza_genome, fdaargos_1560_hinfluenza_adk)
|
||||||
async for alignment, additional_information in dummy_engine:
|
async for alignment, additional_information in dummy_engine:
|
||||||
assert isinstance(alignment, PairwiseAlignment)
|
assert isinstance(alignment, PairwiseAlignment)
|
11
tests/resources/fdaargos_1560_hinfluenza_adk.fasta
Normal file
11
tests/resources/fdaargos_1560_hinfluenza_adk.fasta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
>lcl|CP085952.1_gene_371 [gene=adk] [locus_tag=LK401_01855] [location=complement(365128..365772)] [gbkey=Gene]
|
||||||
|
ATGAAAATTATTCTTTTAGGTGCACCGGGTGCAGGTAAAGGCACTCAAGCACAATTTATTATGAACAAAT
|
||||||
|
TTGGTATCCCGCAAATTTCAACTGGTGATATGTTCCGTGCTGCAATCAAAGCGGGGACTGAACTTGGCAA
|
||||||
|
ACAAGCTAAAGCATTAATGGATGAAGGTAAATTAGTGCCAGATGAATTAACCGTTGCCCTTGTAAAAGAT
|
||||||
|
CGTATTGCTCAAGCTGACTGCACAAATGGTTTCTTGTTAGATGGTTTCCCTCGTACTATTCCACAAGCGG
|
||||||
|
ATGCACTGAAAGATTCAGGTGTTAAAATTGACTTTGTTTTAGAATTTGATGTGCCAGACGAAGTGATTGT
|
||||||
|
TGAACGTATGAGTGGCCGTCGCGTACACCAAGCGTCTGGCCGTTCTTACCACATCGTTTATAATCCACCA
|
||||||
|
AAAGTGGAAGGTAAAGATGATGTAACAGGCGAAGATTTAATTATTCGTGCAGACGATAAACCAGAAACTG
|
||||||
|
TATTAGATCGTTTAGCCGTATATCATAAACAAACTAGCCCATTAATTGATTATTACCAAGCAGAAGCGAA
|
||||||
|
AGCGGGGAATACTCAATATTTCCGTTTAGACGGTACACAAAAAGTAGAAGAAGTTAGCCAAGAGTTAGAT
|
||||||
|
AAAATCTTAGGCTAA
|
Loading…
x
Reference in New Issue
Block a user