Source code for orbitdeterminator.util.read_data

'''
Reads the positional data set from a .csv file
'''

import os
import csv
import pickle
import numpy as np
import json
import sys
import glob
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
import kep_determination.positional_observation_reporting as por


_SOURCE = "../raw data"
_DESTINATION = "../filtered data"

[docs]def load_data(filename): ''' Loads the data in numpy array for further processing in tab delimiter format Args: filename (string): name of the csv file to be parsed Returns: numpy array: array of the orbit positions, each point of the orbit is of the format (time, x, y, z) ''' return np.genfromtxt(filename, delimiter='\t')[1:]
[docs]def save_orbits(source, destination): ''' Saves objects returned from load_data Args: source: path to raw csv files. destination: path where objects need to be saved. ''' if os.path.isdir(source): pass else: os.system("mkdir {}".format(destination)) for file in os.listdir(source): if file.endswith('.csv'): orbit = load_data(source + '/' + str(file)) pickle.dump(orbit, open(destination + "/%s.p" %file[:-4], "wb"))
def detect_json(filename): # detect json try: with open(filename, 'r') as infile: data = json.load(infile) file = {"file" : "json"} except: file = {"file" : None} return file def detect_iod(filename): if por.check_iod_format(filename) == True: file = {"file" : "iod"} else: file = {"file": None} return file def detect_uk(filename): if por.check_uk_format(filename) == True: file = {"file" : "uk"} else: file = {"file": None} return file def detect_csv(filename): file = {"file": None} file1 = file try: linecheck = np.genfromtxt(filename, delimiter='\t')[1] try: if len(linecheck) > 1: file1 = {"file": "csv", "delimiter": "\t"} except: file1 = {"file": None} except: file1 = {"file": None} file2 = file try: linecheck = np.genfromtxt(filename, delimiter=';')[1] try: if len(linecheck) > 1: file2 = {"file": "csv", "delimiter": ";"} except: file2 = {"file": None} except: file2 = {"file": None} if file1["file"] is not None: file = file1 if file2["file"] is not None: file = file2 return file def detect_file_format(filename): file = {"file" : None} if os.path.exists(filename): # loading in all files and check for all 3 formats we currently support file_json = detect_json(filename) file_iod = detect_iod(filename) file_csv = detect_csv(filename) file_uk = detect_uk(filename) #file_rde = detect_rde(filename) if file_json["file"] == "json": return file_json elif file_iod["file"] == "iod": return file_iod elif file_csv["file"] == "csv": return file_csv elif file_uk["file"] == "uk": return file_uk else: return file else: # no file available return file def get_all_files(path): # list all files from a folder, or just the one file that was stated. files = [] if os.path.isdir(path): files = glob.glob((path + os.sep+'*')) if os.path.isfile(path): files = glob.glob((path)) return files if __name__ == "__main__": #save_orbits(_SOURCE, _DESTINATION) print("detecting file", detect_file_format("../example_data/orbit.csv")) print("detecting file", detect_file_format("../example_data/SATOBS-ML-19200716.txt")) print("detecting file", detect_file_format("../example_data/orbit1.csv")) print("detecting file", detect_file_format("../example_data/sampleukformatdata.txt"))