File size: 1,509 Bytes
7155827
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""Keep the corrected UTR SFT mapping separate from scalar regression inputs."""
import hashlib
import importlib.util
from pathlib import Path
import unittest

ROOT = Path(__file__).resolve().parents[1]
spec = importlib.util.spec_from_file_location('sft_mapping', ROOT / 'train_sft.py')
sft = importlib.util.module_from_spec(spec)
spec.loader.exec_module(sft)


class SFTDataMappingTests(unittest.TestCase):
    def test_utr_wet_uses_fixed_utr_generation_data(self):
        preset = sft.PROJECTS['utr-wet']
        self.assertEqual(preset['directory'], 'utrgen')
        self.assertEqual(preset['length'], 512)
        self.assertEqual(preset['batch'], 2)
        self.assertEqual(preset['steps'], -1)
        expected = {
            'train.txt': '48f7e5986a4d5816bdc5f5dc8cab2f2acdc8ba6872879c9d3fff0799a49def4a',
            'valid.txt': '139b7462887a63eabacb7273948bf896699eb5a1668b9a9381d595646efe0bb1',
        }
        for name, digest in expected.items():
            path = sft.local_path(preset['directory'] + '/' + name)
            self.assertEqual(hashlib.sha256(path.read_bytes()).hexdigest(), digest)
            with path.open() as stream:
                self.assertTrue(all(line.startswith('~$predict_utr') for line in stream if line.strip()))
            self.assertEqual(path.read_bytes(), (ROOT / 'utrgen' / name).read_bytes())

    def test_ribozyme_wet_mapping_is_unchanged(self):
        self.assertEqual(sft.PROJECTS['ribozyme-wet']['directory'], 'ribozymegen-figure7/filteredwet')