CodonTransformer / scripts /tests /test_CodonUtils.py
anzhi2710gmailcom's picture
Upload folder using huggingface_hub
53e66de verified
Raw
History Blame Contribute Delete
4.81 kB
import os
import pickle
import tempfile
import unittest
from CodonTransformer.CodonUtils import (
ProteinConfig,
find_pattern_in_fasta,
get_organism2id_dict,
get_taxonomy_id,
load_pkl_from_url,
load_python_object_from_disk,
save_python_object_to_disk,
sort_amino2codon_skeleton,
)
class TestCodonUtils(unittest.TestCase):
def test_config_manager(self):
with ProteinConfig() as config:
config.set("ambiguous_aminoacid_behavior", "standardize_deterministic")
self.assertEqual(
config.get("ambiguous_aminoacid_behavior"), "standardize_deterministic"
)
config.set("ambiguous_aminoacid_map_override", {"X": ["A", "G"]})
self.assertEqual(
config.get("ambiguous_aminoacid_map_override"), {"X": ["A", "G"]}
)
config.update(
{
"ambiguous_aminoacid_behavior": "raise_error",
"ambiguous_aminoacid_map_override": {"X": ["A", "G"]},
}
)
self.assertEqual(config.get("ambiguous_aminoacid_behavior"), "raise_error")
self.assertEqual(
config.get("ambiguous_aminoacid_map_override"), {"X": ["A", "G"]}
)
try:
config.set("invalid_key", "invalid_value")
self.fail("Expected ValueError")
except ValueError:
pass
with ProteinConfig() as config:
self.assertEqual(
config.get("ambiguous_aminoacid_behavior"), "standardize_random"
)
self.assertEqual(config.get("ambiguous_aminoacid_map_override"), {})
def test_load_python_object_from_disk(self):
test_obj = {"key1": "value1", "key2": 2}
with tempfile.NamedTemporaryFile(suffix=".pkl", delete=False) as temp_file:
temp_file_name = temp_file.name
save_python_object_to_disk(test_obj, temp_file_name)
loaded_obj = load_python_object_from_disk(temp_file_name)
self.assertEqual(test_obj, loaded_obj)
os.remove(temp_file_name)
def test_save_python_object_to_disk(self):
test_obj = [1, 2, 3, 4, 5]
with tempfile.NamedTemporaryFile(suffix=".pkl", delete=False) as temp_file:
temp_file_name = temp_file.name
save_python_object_to_disk(test_obj, temp_file_name)
self.assertTrue(os.path.exists(temp_file_name))
os.remove(temp_file_name)
def test_find_pattern_in_fasta(self):
text = (
">seq1 [keyword=value1]\nATGCGTACGTAGCTAG\n"
">seq2 [keyword=value2]\nGGTACGATCGATCGAT"
)
self.assertEqual(find_pattern_in_fasta("keyword", text), "value1")
self.assertEqual(find_pattern_in_fasta("nonexistent", text), "")
def test_get_organism2id_dict(self):
with tempfile.NamedTemporaryFile(
mode="w", delete=True, suffix=".csv"
) as temp_file:
temp_file.write("0,Escherichia coli\n1,Homo sapiens\n2,Mus musculus")
temp_file.flush()
organism2id = get_organism2id_dict(temp_file.name)
self.assertEqual(
organism2id,
{"Escherichia coli": 0, "Homo sapiens": 1, "Mus musculus": 2},
)
def test_get_taxonomy_id(self):
taxonomy_dict = {
"Escherichia coli": 562,
"Homo sapiens": 9606,
"Mus musculus": 10090,
}
with tempfile.NamedTemporaryFile(suffix=".pkl", delete=True) as temp_file:
temp_file_name = temp_file.name
save_python_object_to_disk(taxonomy_dict, temp_file_name)
self.assertEqual(get_taxonomy_id(temp_file_name, "Escherichia coli"), 562)
self.assertEqual(
get_taxonomy_id(temp_file_name, return_dict=True), taxonomy_dict
)
def test_sort_amino2codon_skeleton(self):
amino2codon = {
"A": (["GCT", "GCC", "GCA", "GCG"], [0.0, 0.0, 0.0, 0.0]),
"C": (["TGT", "TGC"], [0.0, 0.0]),
}
sorted_amino2codon = sort_amino2codon_skeleton(amino2codon)
self.assertEqual(
sorted_amino2codon,
{
"A": (["GCA", "GCC", "GCG", "GCT"], [0.0, 0.0, 0.0, 0.0]),
"C": (["TGC", "TGT"], [0.0, 0.0]),
},
)
def test_load_pkl_from_url(self):
url = "https://example.com/test.pkl"
expected_obj = {"key": "value"}
with unittest.mock.patch("requests.get") as mock_get:
mock_get.return_value.content = pickle.dumps(expected_obj)
loaded_obj = load_pkl_from_url(url)
self.assertEqual(loaded_obj, expected_obj)
if __name__ == "__main__":
unittest.main()