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

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