diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..d85f9bf Binary files /dev/null and b/.DS_Store differ diff --git a/.github/.DS_Store b/.github/.DS_Store new file mode 100644 index 0000000..a194d41 Binary files /dev/null and b/.github/.DS_Store differ diff --git a/excel2sbol/.DS_Store b/excel2sbol/.DS_Store new file mode 100644 index 0000000..a24106c Binary files /dev/null and b/excel2sbol/.DS_Store differ diff --git a/excel2sbol/excel2sbol/.DS_Store b/excel2sbol/excel2sbol/.DS_Store new file mode 100644 index 0000000..0dcb3c8 Binary files /dev/null and b/excel2sbol/excel2sbol/.DS_Store differ diff --git a/excel2sbol/excel2sbol/compiler.py b/excel2sbol/excel2sbol/compiler.py index ef6a3ac..aa278f0 100644 --- a/excel2sbol/excel2sbol/compiler.py +++ b/excel2sbol/excel2sbol/compiler.py @@ -7,10 +7,57 @@ import sbol3 import math import re +import os # the homespace only works if the change is made to pysbol2 shown in https://github.com/SynBioDex/pySBOL2/pull/411/files +def initialise_welcome(file_path_in): + init_info = pd.read_excel(file_path_in, sheet_name="Init", + skiprows=9, index_col=0, + engine='openpyxl') + init_info = init_info.applymap(lambda x: x.strip() if isinstance(x, str) else x).to_dict('index') + version_info = pd.read_excel(file_path_in, sheet_name="Init", + nrows=4, index_col=0, header=None, + engine='openpyxl') + version_info = version_info.applymap(lambda x: x.strip() if isinstance(x, str) else x).to_dict('index') + if 'Homespace' in version_info: + homespace = version_info['Homespace'][1] + else: + homespace = "" + version_info = version_info['SBOL Version'][1] + + # For key in dict read in sheet, + # if sheet convert = true, add to convert list + compiled_sheets = {} + to_convert = [] + for sheet_name, val in init_info.items(): + # print(f"reading in {sheet_name}...") + # MY CODE + if sheet_name.lower() == "welcome": + print("Processing the welcome page...") + try: + welcome_metadata = pd.read_excel(file_path_in, sheet_name=sheet_name, + index_col=0, engine='openpyxl').fillna("") + print("Welcome Page Metadata:") + + dict = {} + for _, row in welcome_metadata.iterrows(): + if len(row) >= 2: + key, value = row[0], row[1] + if isinstance(key, str) and key.strip(): + dict[key.strip()] = value.strip() if isinstance(value, str) else value + for key, value in dict.items(): + print(f"{key}: {value}") + return dict + + except Exception as e: + print(f"Error reading the welcome page: {e}") + return None + + else: + return + def initialise(file_path_in): init_info = pd.read_excel(file_path_in, sheet_name="Init", skiprows=9, index_col=0, @@ -33,6 +80,11 @@ def initialise(file_path_in): to_convert = [] for sheet_name, val in init_info.items(): # print(f"reading in {sheet_name}...") + # MY CODE + if sheet_name.lower() == "welcome": + continue + # MY CODE + convert = val['Convert'] if convert: @@ -385,9 +437,12 @@ def column_parse(to_convert, compiled_sheets, sht_convert_dict, dict_of_objs, if len(data_source_id_to_update) > 0: doc = hf.update_uri_refs(doc, data_source_id_to_update, use_derived=True, derived_ls = ['_sequence']) - if file_format is None: + + if os.getenv("COUNTER") == "Error found": + return + elif file_format is None: doc.write(file_path_out) else: doc.write(file_path_out, file_format = file_format) - return + return \ No newline at end of file diff --git a/excel2sbol/excel2sbol/converter.py b/excel2sbol/excel2sbol/converter.py index ee9ac4b..5ed7144 100644 --- a/excel2sbol/excel2sbol/converter.py +++ b/excel2sbol/excel2sbol/converter.py @@ -1,8 +1,10 @@ # from ensurepip import version import excel2sbol.compiler as e2s +import os +import json +from datetime import datetime - -def converter(file_path_in, file_path_out, sbol_version=3, homespace="http://examples.org/", file_format=None): +def converter(file_path_in, file_path_out, sbol_version=3, homespace="http://examples.org/", file_format=None, username=None, password=None, url = None): """Convert a given excel file to SBOL Args: @@ -10,7 +12,20 @@ def converter(file_path_in, file_path_out, sbol_version=3, homespace="http://exa file_path_out (string): desired path to sbol file sbol_version (int): sbol version number, defaults to 3 """ + if username is not None and password is not None and url is not None: + # print(username, password, url) + os.environ["SBOL_USERNAME"] = username + os.environ["SBOL_PASSWORD"] = password + os.environ["SBOL_URL"] = url + col_read_df, to_convert, compiled_sheets, version_info, homespace2 = e2s.initialise(file_path_in) + dict = e2s.initialise_welcome(file_path_in) + for key, value in dict.items(): + if isinstance(value, datetime): + dict[key] = value.isoformat() + if dict is not None: + os.environ["SBOL_DICTIONARY"] = json.dumps(dict) + # print(dict) if len(homespace2) > 0: homespace = homespace2 @@ -33,3 +48,5 @@ def converter(file_path_in, file_path_out, sbol_version=3, homespace="http://exa e2s.column_parse(to_convert, compiled_sheets, sht_convert_dict, dict_of_objs, col_read_df, doc, file_path_out, sbol_version=sbol_version, file_format=file_format) + + \ No newline at end of file diff --git a/excel2sbol/resources/.DS_Store b/excel2sbol/resources/.DS_Store new file mode 100644 index 0000000..8697593 Binary files /dev/null and b/excel2sbol/resources/.DS_Store differ diff --git a/excel2sbol/tests/.DS_Store b/excel2sbol/tests/.DS_Store new file mode 100644 index 0000000..4cebf2f Binary files /dev/null and b/excel2sbol/tests/.DS_Store differ