|
1 | | -from os import remove, mkdir |
2 | | -from os.path import join, exists |
| 1 | +from os import makedirs, listdir, rmdir |
| 2 | +from os.path import exists, join |
| 3 | +from shutil import rmtree |
3 | 4 |
|
4 | 5 | from unittest import TestCase, main |
5 | 6 | import americangut.notebook_environment as agenv |
6 | | -from americangut.util import get_new_path |
| 7 | +from americangut.util import get_existing_path |
7 | 8 | from americangut.per_category import cat_taxa_summaries |
8 | 9 |
|
9 | 10 |
|
10 | 11 | class PerCategoryTests(TestCase): |
11 | 12 | def setUp(self): |
12 | | - self.taxa_base = agenv.paths['populated-templates']['result-taxa'] |
13 | | - |
14 | | - try: |
15 | | - get_new_path( |
16 | | - agenv.paths['populated-templates']['result-taxa']) |
17 | | - except IOError: |
18 | | - pass |
19 | | - |
20 | | - self.taxa_files = [ |
21 | | - 'ag-stool-average.txt', |
22 | | - 'ag-stool-sex-male.txt', |
23 | | - 'ag-stool-sex-other.txt', |
24 | | - 'ag-stool-sex-female.txt', |
25 | | - 'ag-oral-diet-Omnivore.txt', |
26 | | - 'ag-oral-diet-Vegetarian.txt', |
27 | | - 'ag-oral-diet-Vegan.txt', |
28 | | - 'ag-oral-diet-Omnivore_but_do_not_eat_red_meat.txt', |
29 | | - 'ag-oral-diet-Vegetarian_but_eat_seafood.txt', |
30 | | - 'ag-skin-sex-male.txt', |
31 | | - 'ag-skin-sex-female.txt', |
32 | | - 'ag-stool-diet-Omnivore.txt', |
33 | | - 'ag-stool-diet-Vegetarian.txt', |
34 | | - 'ag-stool-diet-Vegan.txt', |
35 | | - 'ag-stool-diet-Omnivore_but_do_not_eat_red_meat.txt', |
36 | | - 'ag-stool-diet-Vegetarian_but_eat_seafood.txt', |
37 | | - 'ag-skin-hand-I_am_left_handed.txt', |
38 | | - 'ag-skin-hand-I_am_ambidextrous.txt', |
39 | | - 'ag-skin-hand-I_am_right_handed.txt', |
40 | | - 'ag-oral-sex-male.txt', |
41 | | - 'ag-oral-sex-female.txt', |
42 | | - 'ag-stool-bmi-Overweight.txt', |
43 | | - 'ag-stool-bmi-Obese.txt', |
44 | | - 'ag-stool-bmi-Underweight.txt', |
45 | | - 'ag-stool-bmi-Normal.txt', |
46 | | - 'ag-oral-flossing-Never.txt', |
47 | | - 'ag-oral-flossing-Rarely.txt', |
48 | | - 'ag-oral-flossing-Daily.txt', |
49 | | - 'ag-oral-flossing-Occasionally.txt', |
50 | | - 'ag-oral-flossing-Regularly.txt', |
51 | | - 'ag-stool-age-teen.txt', |
52 | | - 'ag-stool-age-20s.txt', |
53 | | - 'ag-stool-age-60s.txt', |
54 | | - 'ag-stool-age-30s.txt', |
55 | | - 'ag-stool-age-child.txt', |
56 | | - 'ag-stool-age-40s.txt', |
57 | | - 'ag-stool-age-70+.txt', |
58 | | - 'ag-stool-age-baby.txt', |
59 | | - 'ag-stool-age-50s.txt', |
60 | | - 'ag-oral-average.txt', |
61 | | - 'ag-skin-cosmetics-Never.txt', |
62 | | - 'ag-skin-cosmetics-Rarely.txt', |
63 | | - 'ag-skin-cosmetics-Daily.txt', |
64 | | - 'ag-skin-cosmetics-Occasionally.txt', |
65 | | - 'ag-skin-cosmetics-Regularly.txt', |
66 | | - 'ag-skin-age-teen.txt', |
67 | | - 'ag-skin-age-20s.txt', |
68 | | - 'ag-skin-age-60s.txt', |
69 | | - 'ag-skin-age-30s.txt', |
70 | | - 'ag-skin-age-70+.txt', |
71 | | - 'ag-skin-age-40s.txt', |
72 | | - 'ag-skin-age-child.txt', |
73 | | - 'ag-skin-age-baby.txt', |
74 | | - 'ag-skin-age-50s.txt', |
75 | | - 'ag-skin-average.txt', |
76 | | - 'ag-oral-age-teen.txt', |
77 | | - 'ag-oral-age-20s.txt', |
78 | | - 'ag-oral-age-60s.txt', |
79 | | - 'ag-oral-age-30s.txt', |
80 | | - 'ag-oral-age-child.txt', |
81 | | - 'ag-oral-age-40s.txt', |
82 | | - 'ag-oral-age-70+.txt', |
83 | | - 'ag-oral-age-50s.txt'] |
| 13 | + # Make expected directory structure |
| 14 | + makedirs('../agp_processing/10-populated-templates/taxa') |
| 15 | + self.path = agenv.paths['collapsed']['notrim']['1k'] |
| 16 | + agenv.paths['collapsed']['notrim']['1k'] = \ |
| 17 | + {'ag-biom': |
| 18 | + '../tests/data/ag_testing/category_test.biom', |
| 19 | + 'ag-fecal': |
| 20 | + '../tests/data/ag_testing/ag-fecal.biom', |
| 21 | + 'ag-oral-flossing': |
| 22 | + '../tests/data/ag_testing/ag-oral-flossing.biom'} |
84 | 23 |
|
85 | 24 | def tearDown(self): |
86 | | - for f in self.taxa_files: |
87 | | - path = join(self.taxa_base, f) |
88 | | - if exists(path): |
89 | | - remove(path) |
| 25 | + rmtree('../agp_processing', ignore_errors=True) |
| 26 | + agenv.paths['collapsed']['notrim']['1k'] = self.path |
90 | 27 |
|
91 | 28 | def test_cat_taxa_summaries(self): |
92 | 29 | cat_taxa_summaries() |
93 | | - # Make sure all files created |
94 | | - for f in self.taxa_files: |
95 | | - path = join(self.taxa_base, f) |
96 | | - if not exists(path): |
97 | | - raise AssertionError('File %s not generated!' % f) |
| 30 | + path = get_existing_path( |
| 31 | + '../agp_processing/10-populated-templates/taxa') |
| 32 | + exp = ['ag-oral-flossing-Daily.txt', 'ag-oral-flossing-Never.txt', |
| 33 | + 'ag-oral-flossing-Occasionally.txt', |
| 34 | + 'ag-oral-flossing-Rarely.txt', 'ag-oral-flossing-Regularly.txt', |
| 35 | + 'ag-stool-average.txt'] |
| 36 | + files = listdir(path) |
| 37 | + self.assertEqual(files, exp) |
98 | 38 |
|
99 | | - # Test file for correct format |
100 | | - self.maxDiff = None |
101 | | - with open(join(self.taxa_base, 'ag-skin-age-teen.txt')) as f: |
| 39 | + with open(join(path, 'ag-oral-flossing-Rarely.txt')) as f: |
102 | 40 | obs = f.read() |
103 | | - |
104 | | - exp = '' |
| 41 | + exp = """k__Bacteria; p__Fusobacteria; c__Fusobacteriia; o__Fusobacteriales; f__Fusobacteriaceae; g__Fusobacterium\t0.0110430107527 |
| 42 | +k__Bacteria; p__Firmicutes; c__Bacilli; o__Bacillales; f__Planococcaceae; g__\t0.00196774193548 |
| 43 | +k__Bacteria; p__Bacteroidetes; c__Flavobacteriia; o__Flavobacteriales; f__[Weeksellaceae]; g__Chryseobacterium\t0.0125913978495 |
| 44 | +k__Bacteria; p__Bacteroidetes; c__Sphingobacteriia; o__Sphingobacteriales; f__Sphingobacteriaceae; g__Sphingobacterium\t0.00608602150538 |
| 45 | +k__Bacteria; p__Firmicutes; c__Erysipelotrichi; o__Erysipelotrichales; f__Erysipelotrichaceae; g__Bulleidia\t0.00269892473118 |
| 46 | +k__Bacteria; p__Proteobacteria; c__Betaproteobacteria; o__Neisseriales; f__Neisseriaceae; g__Neisseria\t0.074935483871 |
| 47 | +k__Bacteria; p__Firmicutes; c__Clostridia; o__Clostridiales; f__Lachnospiraceae; g__Oribacterium\t0.00749462365591 |
| 48 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Xanthomonadales; f__Xanthomonadaceae; g__\t0.017311827957 |
| 49 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Pseudomonadales; f__Moraxellaceae; g__Enhydrobacter\t0.000150537634409 |
| 50 | +k__Bacteria; p__Firmicutes; c__Clostridia; o__Clostridiales; f__Lachnospiraceae; g__\t0.00667741935484 |
| 51 | +k__Bacteria; p__Proteobacteria; c__Alphaproteobacteria; o__Caulobacterales; f__Caulobacteraceae; g__Brevundimonas\t0.00996774193548 |
| 52 | +k__Bacteria; p__Bacteroidetes; c__Flavobacteriia; o__Flavobacteriales; f__[Weeksellaceae]; g__\t0.00139784946237 |
| 53 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Enterobacteriales; f__Enterobacteriaceae; g__Klebsiella\t0.00174193548387 |
| 54 | +k__Bacteria; p__Firmicutes; c__Bacilli; o__Bacillales; f__Staphylococcaceae; g__Staphylococcus\t0.00756989247312 |
| 55 | +k__Bacteria; p__Bacteroidetes; c__Bacteroidia; o__Bacteroidales; f__Prevotellaceae; g__Prevotella\t0.0509569892473 |
| 56 | +k__Bacteria; p__Fusobacteria; c__Fusobacteriia; o__Fusobacteriales; f__Leptotrichiaceae; g__Leptotrichia\t0.0143333333333 |
| 57 | +k__Bacteria; p__Firmicutes; c__Bacilli; o__Lactobacillales; f__Streptococcaceae; g__Streptococcus\t0.138817204301 |
| 58 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Pseudomonadales; f__Pseudomonadaceae; g__\t0.0051935483871 |
| 59 | +k__Bacteria; p__Bacteroidetes; c__Bacteroidia; o__Bacteroidales; f__[Paraprevotellaceae]; g__[Prevotella]\t0.00132258064516 |
| 60 | +k__Bacteria; p__Proteobacteria; c__Epsilonproteobacteria; o__Campylobacterales; f__Campylobacteraceae; g__Campylobacter\t0.00133333333333 |
| 61 | +k__Bacteria; p__Firmicutes; c__Bacilli; o__Gemellales; f__Gemellaceae; g__\t0.0097311827957 |
| 62 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Enterobacteriales; f__Enterobacteriaceae; g__\t0.0135268817204 |
| 63 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Pasteurellales; f__Pasteurellaceae; g__Haemophilus\t0.0668279569892 |
| 64 | +k__Bacteria; p__Proteobacteria; c__Alphaproteobacteria; o__Rhizobiales; f__Brucellaceae; g__Ochrobactrum\t0.00575268817204 |
| 65 | +k__Bacteria; p__Firmicutes; c__Clostridia; o__Clostridiales; f__Veillonellaceae; g__Veillonella\t0.0709247311828 |
| 66 | +k__Bacteria; p__Bacteroidetes; c__Bacteroidia; o__Bacteroidales; f__Porphyromonadaceae; g__Porphyromonas\t0.0165698924731 |
| 67 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Pasteurellales; f__Pasteurellaceae; g__Aggregatibacter\t0.00410752688172 |
| 68 | +k__Bacteria; p__Proteobacteria; c__Betaproteobacteria; o__Neisseriales; f__Neisseriaceae; g__\t0.00394623655914 |
| 69 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Pseudomonadales; f__Moraxellaceae; g__Acinetobacter\t0.0247634408602 |
| 70 | +k__Bacteria; p__Firmicutes; c__Bacilli; o__Lactobacillales; f__Aerococcaceae; g__Alloiococcus\t0.000225806451613 |
| 71 | +k__Bacteria; p__Firmicutes; c__Clostridia; o__Clostridiales; f__Lachnospiraceae; g__Moryella\t0.000612903225806 |
| 72 | +k__Bacteria; p__Actinobacteria; c__Actinobacteria; o__Actinomycetales; f__Micrococcaceae; g__Rothia\t0.114602150538 |
| 73 | +k__Bacteria; p__Actinobacteria; c__Coriobacteriia; o__Coriobacteriales; f__Coriobacteriaceae; g__Atopobium\t0.00761290322581 |
| 74 | +k__Bacteria; p__Proteobacteria; c__Betaproteobacteria; o__Burkholderiales; f__Comamonadaceae; g__Alicycliphilus\t0.00530107526882 |
| 75 | +k__Bacteria; p__Actinobacteria; c__Actinobacteria; o__Actinomycetales; f__Actinomycetaceae; g__Actinomyces\t0.0204408602151 |
| 76 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Xanthomonadales; f__Xanthomonadaceae; g__Stenotrophomonas\t0.0443655913978 |
| 77 | +k__Bacteria; p__Actinobacteria; c__Actinobacteria; o__Actinomycetales; f__Corynebacteriaceae; g__Corynebacterium\t0.000440860215054 |
| 78 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Enterobacteriales; f__Enterobacteriaceae; g__Morganella\t0.000161290322581 |
| 79 | +k__Bacteria; p__Firmicutes; c__Bacilli; o__Lactobacillales; f__Carnobacteriaceae; g__Granulicatella\t0.025247311828 |
| 80 | +k__Bacteria; p__SR1; c__; o__; f__; g__\t0.00222580645161 |
| 81 | +k__Bacteria; p__Proteobacteria; c__Gammaproteobacteria; o__Pseudomonadales; f__Pseudomonadaceae; g__Pseudomonas\t0.0665268817204 |
| 82 | +""" |
105 | 83 | self.assertEqual(obs, exp) |
106 | 84 |
|
107 | 85 |
|
| 86 | + |
108 | 87 | if __name__ == '__main__': |
109 | 88 | main() |
0 commit comments