From 7744b536dc6edc6f38b91a169a847d94a57b776d Mon Sep 17 00:00:00 2001 From: Rafal Kucharski Date: Mon, 28 Mar 2022 11:08:40 +0200 Subject: [PATCH] added a pandas reader use as 'read_pandas(PATH)' --- openmatrix/__init__.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/openmatrix/__init__.py b/openmatrix/__init__.py index cb894c0..9e42ad6 100644 --- a/openmatrix/__init__.py +++ b/openmatrix/__init__.py @@ -73,6 +73,43 @@ def open_file(filename, mode='r', title='', root_uep='/', return f + def read_pandas(filename, mapping=None, matrix_name=None): + """ + Reads the .omx file, gets the mapping and matrix values + and return the pandas DataFrame + Parameters + ---------- + filename - path to the .omx file + mapping - str of mapping in the omx file (if None takes the first mapping) + matrix_name - str of the matrix name (if None takes the first matrix name) + + Returns + ------- + pandas DataFrame. index = mapping, columns = mapping, values = matrix values + + author: Rafal Kucharski rafal.kucharski@uj.edu.pl + """ + import pandas as pd + try: + omx_file = open_file(filename) + except: + raise Exception('Error whle reading a file: ', filename) + if mapping is None: + mapping = omx_file.list_mappings()[0] + if matrix_name is None: + matrix_name = omx_file.list_matrices()[0] + + try: + values = np.array(omx_file[matrix_name]) + except: + raise Exception('Wrong matrix name in the omx file') + try: + mapping = omx_file.mapping(mapping) + except: + raise Exception('Wrong mapping name name in the omx file') + + return pd.DataFrame(index=mapping, columns=mapping, data=values) + if __name__ == "__main__": print('OMX!')