Index: sample_scripts/import_signal.py
===================================================================
--- sample_scripts/import_signal.py	(revision 4180d6a349eca3e1821f1bb33b5cd5eba7022c07)
+++ sample_scripts/import_signal.py	(revision 1d0974dc34fdca9eff361d6c2ab7eb967bdb544a)
@@ -82,9 +82,13 @@
 source_collection = year_collection[source]
 
+json_representation = ppdw_reader.container.to_json()
+json_representation['SIGNALNUMBER'] = signal_number
+json_representation['SOURCEFILE'] = str(ppdw_file)
+source_collection.insert_one(json_representation)
 
-for each in ppdw_reader.container.signals:
-    each_json = each.to_json()
-    each_json['SIGNALNUMBER'] = signal_number
-    each_json['JULIANDATE'] = julian_date_string
-    # each_json['SOURCEFILE'] = str(ppdw_file)
-    source_collection.insert_one(each_json)
+# for each in ppdw_reader.container.signals:
+#    each_json = each.to_json()
+#    each_json['SIGNALNUMBER'] = signal_number
+#    each_json['JULIANDATE'] = julian_date_string
+#    each_json['SOURCEFILE'] = str(ppdw_file)
+#    source_collection.insert_one(each_json)
Index: sample_scripts/import_signals.py
===================================================================
--- sample_scripts/import_signals.py	(revision 1d0974dc34fdca9eff361d6c2ab7eb967bdb544a)
+++ sample_scripts/import_signals.py	(revision 1d0974dc34fdca9eff361d6c2ab7eb967bdb544a)
@@ -0,0 +1,74 @@
+import sys
+import re
+import argparse
+import numpy as np
+from datetime import datetime
+from pathlib import Path
+from pymongo import MongoClient
+from ammosreader.PPDWReader import PPDWReader
+
+parser = argparse.ArgumentParser()
+parser.add_argument('-s', '--source', required=True, help='specify source for given signal')
+parser.add_argument('-i', '--input-dir', required=True, help='specify source directory')
+
+args = parser.parse_args()
+
+source = args.source.upper()
+# code = args.code.upper()
+# signal_number = args.signal_number
+input_dir = Path(args.input_dir)
+
+if not re.match('[A-Z0-9]{2}', source):
+    print("Source identifier", source, "invalid")
+    sys.exit()
+
+code = input_dir.name
+
+#if not re.match('[A-Z][0-9]{3}[A-Z]', code):
+#    print("ELINT-Code incorrect")
+#    sys.exit(1)
+
+#if not re.match('[0-9]{4}', signal_number):
+#    print("Signal number incorrect")
+#    sys.exit(1)
+
+if not input_dir.is_dir():
+    print("Input dir invalid")
+    sys.exit(1)
+
+subdirs = [f for f in input_dir.iterdir() if f.is_dir()]
+
+client = MongoClient('hackathon.kid.local', 27017)
+
+for each_dir in subdirs:
+
+    print("Each dir", each_dir)
+    dir_name = each_dir.name
+
+    files_inside = [each for each in (each_dir.iterdir()) if (each.suffix in ['.idx', '.iqdw', '.ppdw'] and each_dir.stem == dir_name)]
+
+    print("Files inside", files_inside)
+    if len(files_inside) != 3:
+        print(".idx, .iqdw or .ppdw file missing in", each_dir)
+        sys.exit(1)
+
+    iqdw_file = (input_dir / each_dir / each_dir.stem).with_suffix('.iqdw')
+    ppdw_file = (input_dir / each_dir / each_dir.stem).with_suffix('.ppdw')
+    print("PPDW file", ppdw_file)
+    idx_file = (input_dir / each_dir / each_dir.stem).with_suffix('.idx')
+
+    ppdw_reader = PPDWReader(ppdw_file)
+    ppdw_reader.read_all_frames_left()
+
+    database = client['ELINT']
+    ts = (ppdw_reader.container.start_time() - np.datetime64('1970-01-01T00:00:00')) / np.timedelta64(1, 's')
+    time_tuple = datetime.utcfromtimestamp(ts).timetuple()
+    julian_date_string = str(time_tuple.tm_year)[2:] + str(time_tuple.tm_yday).zfill(3)
+    code_collection = database[input_dir.name]
+    year_collection = code_collection[str(time_tuple.tm_year)]
+    source_collection = year_collection[source]
+
+    json_representation = ppdw_reader.container.to_json()
+    json_representation['SIGNALNUMBER'] = dir_name
+    json_representation['SOURCEFILE'] = str(ppdw_file)
+    source_collection.insert_one(json_representation)
Index: src/_version.py
===================================================================
--- src/_version.py	(revision 4180d6a349eca3e1821f1bb33b5cd5eba7022c07)
+++ src/_version.py	(revision 1d0974dc34fdca9eff361d6c2ab7eb967bdb544a)
@@ -2,4 +2,4 @@
 # file generated by setuptools_scm
 # don't change, don't track in version control
-version = '0.1.dev59+g94f7c24.d20220506'
-version_tuple = (0, 1, 'dev59', 'g94f7c24.d20220506')
+version = '0.1.dev60+g4180d6a.d20220509'
+version_tuple = (0, 1, 'dev60', 'g4180d6a.d20220509')
Index: src/ammosreader.egg-info/PKG-INFO
===================================================================
--- src/ammosreader.egg-info/PKG-INFO	(revision 4180d6a349eca3e1821f1bb33b5cd5eba7022c07)
+++ src/ammosreader.egg-info/PKG-INFO	(revision 1d0974dc34fdca9eff361d6c2ab7eb967bdb544a)
@@ -1,5 +1,5 @@
 Metadata-Version: 2.1
 Name: ammosreader
-Version: 0.1.dev59+g94f7c24.d20220506
+Version: 0.1.dev60+g4180d6a.d20220509
 Summary: ammosreader: tool to parse R&S Ammos files
 Home-page: http://gitlab.kid.local/kidzg/ammosreader
Index: src/ammosreader.egg-info/SOURCES.txt
===================================================================
--- src/ammosreader.egg-info/SOURCES.txt	(revision 4180d6a349eca3e1821f1bb33b5cd5eba7022c07)
+++ src/ammosreader.egg-info/SOURCES.txt	(revision 1d0974dc34fdca9eff361d6c2ab7eb967bdb544a)
@@ -5,4 +5,5 @@
 __init__.py
 pyproject.toml
+reqs.txt
 setup.cfg
 setup.py
Index: src/ammosreader/PPDWContainer.py
===================================================================
--- src/ammosreader/PPDWContainer.py	(revision 4180d6a349eca3e1821f1bb33b5cd5eba7022c07)
+++ src/ammosreader/PPDWContainer.py	(revision 1d0974dc34fdca9eff361d6c2ab7eb967bdb544a)
@@ -1,2 +1,6 @@
+import numpy as np
+from datetime import datetime
+
+
 class PPDWContainer():
     """
@@ -20,4 +24,21 @@
         self.signals.append(a_pdw)
 
+    def julian_date_string(self):
+        ts = (self.start_time() - np.datetime64('1970-01-01T00:00:00')) / np.timedelta64(1, 's')
+        time_tuple = datetime.utcfromtimestamp(ts).timetuple()
+        return str(time_tuple.tm_year)[2:] + str(time_tuple.tm_yday).zfill(3)
+
+    def center_frequencies(self):
+        return list({each.center_frequency for each in self.signals})
+
+    def channels(self):
+        return list({each.channel for each in self.signals})
+
+    def modulations(self):
+        return list({each.modulation for each in self.signals})
+
+    def bandwidths(self):
+        return list({each.frequency_shift_or_bandwidth for each in self.signals})
+
     def start_time(self):
         return min([each.time_of_arrival for each in self.signals])
@@ -26,4 +47,14 @@
         return max([each.time_of_arrival for each in self.signals])
 
+    def to_json(self):
+        return {'JULIANDATE': self.julian_date_string(),
+                'STARTTIME': str(self.start_time()),
+                'ENDTIME': str(self.end_time()),
+                # 'CENTERFREQUENCIES': self.center_frequencies(),
+                'CHANNELS': self.channels()
+                # 'MODULATIONS': self.modulations(),
+                # 'BANDWIDTHS': self.bandwidths()
+                }
+
 if __name__ == '__main__':
     pass
