-
Notifications
You must be signed in to change notification settings - Fork 0
/
json_generator.py
78 lines (57 loc) · 2.06 KB
/
json_generator.py
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import json
import os
from random import choice, randint
from common import *
NUMBER_OF_ENTRIES = 1000
OUTPUT_DIR = "data/json"
def generate_bacteria(id_):
bacterium = {}
bacterium["BacteriumID"] = id_
bacterium["Morphology"] = f"{choice(MORPHOLOGIES)}"
bacterium["Year"] = choice(YEARS)
bacterium["MetabolismType"] = f"{choice(METABOLISM)}"
bacterium["MovementType"] = f"{choice(MOVEMENT)}"
bacterium["OxygenDemand"] = f"{choice(OXY_DEMAND)}"
bacterium["GramStain"] = choice([True, False])
bacterium["Taxonomy"] = generate_taxonomy()
bacterium["Diseases"] = [generate_disease() for _ in range(0, 2)]
bacterium["Genome"] = generate_genome(id_)
return bacterium
def generate_taxonomy():
taxonomy = {}
taxonomy["Phylum"] = choice(PHYLUM)
taxonomy["Class"] = choice(CLASS)
taxonomy["Order"] = choice(ORDER)
taxonomy["Family"] = choice(FAMILY)
taxonomy["Genus"] = choice(GENUS)
taxonomy["Specie"] = TAXONOM_SPECIES.pop(
randint(0, len(TAXONOM_SPECIES)))
return taxonomy
def generate_disease():
disease = {}
disease["NameDisease"] = choice(NAME_DISEASE)
disease["Symptoms"] = [choice(SYMPTOMS) for _ in range(randint(0, 8))]
disease["HasCure"] = choice([True, False])
disease["Description"] = "Some description about the disease..."
return disease
def generate_genome(id_):
genome = {}
genome["idGenome"] = id_
genome["Category"] = choice(CATEGORY)
genome["Genes"] = [generate_gene(i) for i in range(randint(1, 3))]
return genome
def generate_gene(id_):
gene = {}
gene["idGene"] = id_
gene["Sequence"] = ''.join([choice(["A", "C", "G", "T"])
for _ in range(randint(20, 100))])
return gene
def main(requested_items):
if not os.path.exists(OUTPUT_DIR):
os.makedirs(OUTPUT_DIR)
with open(f"{OUTPUT_DIR}/data.json", "w") as js:
for i in range(requested_items):
json.dump(generate_bacteria(i), js)
js.write("\n")
if __name__ == "__main__":
main(NUMBER_OF_ENTRIES)