Gerar dados falsos para testar
This commit is contained in:
113
generator/gen-data.py
Normal file
113
generator/gen-data.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import argparse
|
||||
import random
|
||||
import re
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
PAD = re.compile(r"^0?([1-9]\d?)$")
|
||||
NORDIC_7 = (
|
||||
" STAT SP IPHASW D HRMM SECON CODA AMPLIT PERI AZIMU VELO AIN AR TRES W DIS CAZ7"
|
||||
)
|
||||
|
||||
|
||||
def generate_event():
|
||||
ts = random.randint(946684800000, 1767225600000)
|
||||
dt = datetime.fromtimestamp(ts / 1e3)
|
||||
line_3 = " OBS: Dados falsos".ljust(79) + "3"
|
||||
stat = generate_station(dt)
|
||||
|
||||
return "\n".join(
|
||||
[
|
||||
gen_line_1(dt),
|
||||
line_3,
|
||||
generate_line6(dt),
|
||||
generate_line_i(dt),
|
||||
NORDIC_7,
|
||||
stat,
|
||||
"\n",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def generate_agency(size: int = 3) -> str:
|
||||
return "".join([chr(random.randint(65, 90)) for _ in range(size)])
|
||||
|
||||
|
||||
def remove_pad(v: str) -> str:
|
||||
aux = PAD.search(v)
|
||||
if aux:
|
||||
return aux.group(0)
|
||||
return ""
|
||||
|
||||
|
||||
def fmt_date(dt: datetime) -> str:
|
||||
return f"{dt.year} {dt.month:2d}{dt.day:2d} {dt.hour:2d}{dt.minute:2d} {dt.second:2d}.0"
|
||||
|
||||
|
||||
# 1D Lerp
|
||||
def generate_number(lb: float, ub: float, precision: int = 2) -> float:
|
||||
x = random.random()
|
||||
return round(lb * (1.0 - x) + (ub * x), precision)
|
||||
|
||||
|
||||
def gen_line_1(dt: datetime) -> str:
|
||||
lat = generate_number(-90.0, 90.0, 3)
|
||||
long = generate_number(-180.0, 180.0, 3)
|
||||
ev = random.choices(("E", "V", "Q"))[0]
|
||||
depth = generate_number(0.0, 30.0, 1)
|
||||
agency = generate_agency()
|
||||
|
||||
mag = generate_number(1.0, 6.0, 1)
|
||||
|
||||
return (
|
||||
f" {fmt_date(dt)} L{ev}{lat: >7.3f}{long: >8.3f}{depth:>5.1f} {agency} 1 {mag: >4.1f}L{agency}{mag: >4.1f}C{agency}".ljust(
|
||||
79
|
||||
)
|
||||
+ "1"
|
||||
)
|
||||
|
||||
|
||||
def generate_line6(dt: datetime) -> str:
|
||||
return f" {dt.strftime('%Y-%m-%d-%H%M-%S')}-FAKE___001".ljust(79) + "6"
|
||||
|
||||
|
||||
def generate_line_i(dt: datetime) -> str:
|
||||
return " " * 57 + f"ID:{dt.strftime('%Y%m%d%H%M%S')} I"
|
||||
|
||||
|
||||
def generate_station(dt: datetime) -> str:
|
||||
st = generate_agency(4)
|
||||
|
||||
return "\n".join(
|
||||
[
|
||||
f" {st} EZ EP {dt.hour:2d}{dt.minute:2d} {dt.second: >5.2f}".ljust(
|
||||
80
|
||||
),
|
||||
f" {st} EZ ES {dt.hour:2d}{dt.minute:2d} {dt.second: >5.2f}".ljust(
|
||||
80
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def main(argv: int):
|
||||
fp = open("falsos.txt", "w", newline="\n")
|
||||
for _ in range(argv):
|
||||
aux = generate_event()
|
||||
fp.write(aux)
|
||||
|
||||
fp.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
random.seed(time.time())
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"n", action="store", type=int, help="Generates n amount of events"
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.n:
|
||||
main(args.n)
|
||||
Reference in New Issue
Block a user