annotate resfinder/cge/output/trash/test.py @ 0:a16d245332d6 draft default tip

Uploaded
author dcouvin
date Wed, 08 Dec 2021 01:46:07 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
1 #!/usr/bin/env python3
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
2 import unittest
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
3 from subprocess import PIPE, run
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
4 import os
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
5 import shutil
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
6 import sys
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
7 from collections import namedtuple
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
8
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
9 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
10
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
11 from cgecore.cgefinder import CGEFinder
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
12 from cge.resfinder import ResFinder
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
13 from cge.pointfinder import PointFinder
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
14
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
15 run_test_dir = "running_test"
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
16 working_dir = os.path.dirname(os.path.realpath(__file__))
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
17
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
18 test_names = ["test1", "test2", "test3", "test4"]
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
19
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
20
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
21 class TestFinder(CGEFinder):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
22
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
23 def __init__(results):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
24 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
25 Marias minimalistic Finder class
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
26 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
27 self.results = results
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
28
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
29 def resistance_analysis_genes(self):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
30 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
31 Running some analysis that yield results appropriate for resistance
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
32 type results
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
33 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
34 Gene = namedtuple("Gene",
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
35 ["name", "length", "aln_ln", "aln_id", "aln_gaps",
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
36 "name_variant", "acc", "query", "q_start", "q_end",
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
37 "q_depth", "t_start", "t_end"])
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
38
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
39 analysis_results = {
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
40 "group1": {
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
41 "gene1": None, "gene2": None},
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
42 "group2": {
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
43 "gene3": None},
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
44 "group3": {},
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
45 "group4": {
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
46 "gene1": None}
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
47 }
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
48
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
49 analysis_results["group1"]["gene1"] = Gene(
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
50 "gene1", 1000, 890, 0.97, 2, "gene1b", "NC_SOMEGENE", "contig12",
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
51 24, 1024, 50, 1, 1000)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
52 analysis_results["group1"]["gene2"] = Gene(
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
53 "gene2", 500, 500, 1, 0, None, "NC_SOMEGENE2", "contig3",
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
54 24, 1024, None, 1, 500)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
55 analysis_results["group2"]["gene3"] = Gene(
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
56 "gene3", 5000, 4500, 0.85, 10, None, "NC_SOMEGENE3", None,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
57 None, None, 50, 1, 5000)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
58 analysis_results["group4"]["gene1"] = Gene(
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
59 "gene1", 1000, 890, 0.97, 2, "gene1b", "NC_SOMEGENE", "contig12",
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
60 24, 1024, 49.74, 1, 1000)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
61
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
62 for group in analysis_results:
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
63 for name, gene in group.items():
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
64 self.results.add_gene(
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
65 template_name=gene.name,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
66 template_length=gene.length,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
67 template_start_pos=gene.t_start,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
68 templare_end_pos=gene.t_end,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
69 aln_length=gene.aln_ln,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
70 aln_identity=gene.aln_id,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
71 aln_gaps=gene.aln_gaps,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
72 query_id=gene.query,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
73 query_start_pos=gene.q_start,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
74 query_end_pos=gene.q_end,
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
75 query_depth=gene.q_depth
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
76 )
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
77
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
78 def resistance_analysis_mutations(self):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
79 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
80 Running some analysis that yield results appropriate for resistance
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
81 type results
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
82 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
83 pass
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
84
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
85 def resistance_analysis_phenotypes(self):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
86 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
87 Running some analysis that yield results appropriate for resistance
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
88 type results
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
89 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
90 pass
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
91
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
92
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
93 class ResFinderRunTest(unittest.TestCase):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
94
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
95 def setUp(self):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
96 # Change working dir to test dir
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
97 os.chdir(working_dir)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
98 # Does not allow running two tests in parallel
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
99 os.makedirs(run_test_dir, exist_ok=False)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
100
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
101 def tearDown(self):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
102 shutil.rmtree(run_test_dir)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
103
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
104 def test_create_and_store_results_in_resistance_type(self):
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
105 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
106 Maria has created a CGE service. The service use the cge_core_module
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
107 to create a CGEFinder object, then runs some analysis which stores its
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
108 results using the output module.
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
109 """
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
110 # Maria records when the script is being run
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
111 run_start = time.gmtime(time.time())
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
112 run_start_cge = ",".join(run_start[0], run_start[1], run_start[2],
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
113 run_start[3], run_start[4], run_start[5])
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
114
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
115 # First she creates a few directories to store her output.
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
116 test1_dir = run_test_dir + "/" + test_names[0]
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
117 os.makedirs(test1_dir)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
118
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
119 # Create
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
120 results = Resistance(date=run_start_cge, name="TestFinder", "0.01", "Fake_ID", dbs)
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
121 finder = TestFinder()
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
122 finder.resistance_analysis_genes()
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
123 finder.resistance_analysis_mutations()
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
124 finder.resistance_analysis_phenotypes()
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
125 out_str = results.dump_json()
a16d245332d6 Uploaded
dcouvin
parents:
diff changeset
126 results.dump_json("{}/data.json".format(test1_dir))