source: ammosreader/sample_scripts/import_signals.py@ 1d0974d

AmmosSource guix
Last change on this file since 1d0974d was 1d0974d, checked in by Enrico Schwass <ennoausberlin@…>, 3 years ago

better import scripts added

  • Property mode set to 100644
File size: 2.4 KB
RevLine 
[1d0974d]1import sys
2import re
3import argparse
4import numpy as np
5from datetime import datetime
6from pathlib import Path
7from pymongo import MongoClient
8from ammosreader.PPDWReader import PPDWReader
9
10parser = argparse.ArgumentParser()
11parser.add_argument('-s', '--source', required=True, help='specify source for given signal')
12parser.add_argument('-i', '--input-dir', required=True, help='specify source directory')
13
14args = parser.parse_args()
15
16source = args.source.upper()
17# code = args.code.upper()
18# signal_number = args.signal_number
19input_dir = Path(args.input_dir)
20
21if not re.match('[A-Z0-9]{2}', source):
22 print("Source identifier", source, "invalid")
23 sys.exit()
24
25code = input_dir.name
26
27#if not re.match('[A-Z][0-9]{3}[A-Z]', code):
28# print("ELINT-Code incorrect")
29# sys.exit(1)
30
31#if not re.match('[0-9]{4}', signal_number):
32# print("Signal number incorrect")
33# sys.exit(1)
34
35if not input_dir.is_dir():
36 print("Input dir invalid")
37 sys.exit(1)
38
39subdirs = [f for f in input_dir.iterdir() if f.is_dir()]
40
41client = MongoClient('hackathon.kid.local', 27017)
42
43for each_dir in subdirs:
44
45 print("Each dir", each_dir)
46 dir_name = each_dir.name
47
48 files_inside = [each for each in (each_dir.iterdir()) if (each.suffix in ['.idx', '.iqdw', '.ppdw'] and each_dir.stem == dir_name)]
49
50 print("Files inside", files_inside)
51 if len(files_inside) != 3:
52 print(".idx, .iqdw or .ppdw file missing in", each_dir)
53 sys.exit(1)
54
55 iqdw_file = (input_dir / each_dir / each_dir.stem).with_suffix('.iqdw')
56 ppdw_file = (input_dir / each_dir / each_dir.stem).with_suffix('.ppdw')
57 print("PPDW file", ppdw_file)
58 idx_file = (input_dir / each_dir / each_dir.stem).with_suffix('.idx')
59
60 ppdw_reader = PPDWReader(ppdw_file)
61 ppdw_reader.read_all_frames_left()
62
63 database = client['ELINT']
64 ts = (ppdw_reader.container.start_time() - np.datetime64('1970-01-01T00:00:00')) / np.timedelta64(1, 's')
65 time_tuple = datetime.utcfromtimestamp(ts).timetuple()
66 julian_date_string = str(time_tuple.tm_year)[2:] + str(time_tuple.tm_yday).zfill(3)
67 code_collection = database[input_dir.name]
68 year_collection = code_collection[str(time_tuple.tm_year)]
69 source_collection = year_collection[source]
70
71 json_representation = ppdw_reader.container.to_json()
72 json_representation['SIGNALNUMBER'] = dir_name
73 json_representation['SOURCEFILE'] = str(ppdw_file)
74 source_collection.insert_one(json_representation)
Note: See TracBrowser for help on using the repository browser.