CodonTransformer / scripts /tests /test_CodonJupyter.py
anzhi2710gmailcom's picture
Upload folder using huggingface_hub
53e66de verified
Raw
History Blame Contribute Delete
4.83 kB
import unittest
import ipywidgets
from CodonTransformer.CodonJupyter import (
DNASequencePrediction,
UserContainer,
create_dropdown_options,
create_organism_dropdown,
display_organism_dropdown,
display_protein_input,
format_model_output,
)
from CodonTransformer.CodonUtils import ORGANISM2ID
class TestCodonJupyter(unittest.TestCase):
def test_UserContainer(self):
user_container = UserContainer()
self.assertEqual(user_container.organism, -1)
self.assertEqual(user_container.protein, "")
def test_create_organism_dropdown(self):
container = UserContainer()
dropdown = create_organism_dropdown(container)
self.assertIsInstance(dropdown, ipywidgets.Dropdown)
self.assertGreater(len(dropdown.options), 0)
self.assertEqual(dropdown.description, "")
self.assertEqual(dropdown.layout.width, "40%")
self.assertEqual(dropdown.layout.margin, "0 0 10px 0")
self.assertEqual(dropdown.style.description_width, "initial")
# Test the dropdown options
options = dropdown.options
self.assertIn("", options)
self.assertIn("Selected Organisms", options)
self.assertIn("All Organisms", options)
def test_create_dropdown_options(self):
options = create_dropdown_options(ORGANISM2ID)
self.assertIsInstance(options, list)
self.assertGreater(len(options), 0)
def test_display_organism_dropdown(self):
container = UserContainer()
with unittest.mock.patch(
"CodonTransformer.CodonJupyter.display"
) as mock_display:
display_organism_dropdown(container)
# Check that display was called twice (for container_widget and HTML)
self.assertEqual(mock_display.call_count, 2)
# Check that the first call to display was with a VBox widget
self.assertIsInstance(mock_display.call_args_list[0][0][0], ipywidgets.VBox)
# Check that the VBox contains a Dropdown
dropdown = mock_display.call_args_list[0][0][0].children[1]
self.assertIsInstance(dropdown, ipywidgets.Dropdown)
self.assertGreater(len(dropdown.options), 0)
def test_display_protein_input(self):
container = UserContainer()
with unittest.mock.patch(
"CodonTransformer.CodonJupyter.display"
) as mock_display:
display_protein_input(container)
# Check that display was called twice (for container_widget and HTML)
self.assertEqual(mock_display.call_count, 2)
# Check that the first call to display was with a VBox widget
self.assertIsInstance(mock_display.call_args_list[0][0][0], ipywidgets.VBox)
# Check that the VBox contains a Textarea
textarea = mock_display.call_args_list[0][0][0].children[1]
self.assertIsInstance(textarea, ipywidgets.Textarea)
# Verify the properties of the Textarea
self.assertEqual(textarea.value, "")
self.assertEqual(textarea.placeholder, "Enter here...")
self.assertEqual(textarea.description, "")
self.assertEqual(textarea.layout.width, "100%")
self.assertEqual(textarea.layout.height, "100px")
self.assertEqual(textarea.layout.margin, "0 0 10px 0")
self.assertEqual(textarea.style.description_width, "initial")
def test_format_model_output(self):
output = DNASequencePrediction(
organism="Escherichia coli",
protein="MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
processed_input="MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
predicted_dna="ATGAAAACTGTTCGTCAGGAACGTCTGAAATCTATTGTTCGTATTCTGGAACGTTCTAAAGAACCGGTTTCTGGTGCTCAACTGGCTGAAGAACTGTCTGTTTCTCGTCAGGTTATTGTTCAGGACATTGCTTACCTGCGTTCTCTGGGTTATAA",
)
formatted_output = format_model_output(output)
self.assertIsInstance(formatted_output, str)
self.assertIn("Organism", formatted_output)
self.assertIn("Escherichia coli", formatted_output)
self.assertIn("Input Protein", formatted_output)
self.assertIn(
"MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
formatted_output,
)
self.assertIn("Processed Input", formatted_output)
self.assertIn(
"MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG",
formatted_output,
)
self.assertIn("Predicted DNA", formatted_output)
self.assertIn(
"ATGAAAACTGTTCGTCAGGAACGTCTGAAATCTATTGTTCGTATTCTGGAACGTTCTAAAGAACCGGTTTCTGGTGCTCAACTGGCTGAAGAACTGTCTGTTTCTCGTCAGGTTATTGTTCAGGACATTGCTTACCTGCGTTCTCTGGGTTATAA",
formatted_output,
)
if __name__ == "__main__":
unittest.main()