def database(): """ Convenience function to update an existing (older) version of the database to the latest version, by modifying the database columns. This is only possible if no other pyiron session is accessing the database. Therefore the script might take some time to be executed successfully. """ s = Settings() s.open_connection() db = s.database try: if "projectPath".lower() not in db.get_table_headings(db.table_name): print("add missing column: " + "projectPath") db.add_column(col_name="projectPath", col_type="varchar(255)") if "subJob".lower() not in db.get_table_headings(db.table_name): print("add missing column: " + "subJob") db.add_column(col_name="subJob", col_type="varchar(255)") else: print("change data type of subJob") db.change_column_type(col_name="subJob", col_type="varchar(255)") if "masterID".lower() not in db.get_table_headings(db.table_name): print("add missing column: " + "masterid") db.add_column(col_name="masterid", col_type="bigint") if "hamversion" in db.get_table_headings(db.table_name): print("change data type hamversion") db.change_column_type(col_name="hamversion", col_type="varchar(50)") if "job" in db.get_table_headings(db.table_name): print("change data type job") db.change_column_type(col_name="job", col_type="varchar(50)") print(db.table_name, " - database successful updated") except ValueError: print(db.table_name, " - database failed") print("database update done")
def setUpClass(cls): cls.resource_path = os.path.abspath( os.path.join(os.path.dirname(os.path.abspath(__file__)), "../static")).replace("\\", "/") cls.project_path = os.path.dirname(os.path.abspath(__file__)).replace( "\\", "/") cls.file_config = Settings()
def read_input(self, file_name, ignore_trigger=None): """ Read input file and store the data in GenericParameters - this overwrites the current parameter settings Args: file_name (str): absolute path to the input file ignore_trigger (str): trigger for lines to be ignored """ Settings().logger.debug("file: %s %s", file_name, os.path.isfile(file_name)) if not os.path.isfile(file_name): raise ValueError("file does not exist: " + file_name) with open(file_name, "r") as f: lines = f.readlines() new_lines = np.array(lines).tolist() if ignore_trigger is not None: del_ind = list() for i, line in enumerate(lines): line = line.strip() if len(line.split()) > 0: if ignore_trigger == line.strip()[0]: del_ind.append(i) elif ignore_trigger in line: lines[i] = line[:line.find("!")] lines = np.array(lines) new_lines = lines[np.setdiff1d(np.arange(len(lines)), del_ind)] new_dict = self._lines_to_dict(new_lines) self._read_only_check_dict(new_dict=new_dict) self._dataset = new_dict
def setUpClass(cls): cls.resource_path = (Path( __file__).expanduser().resolve().absolute().as_posix().replace( "\\", "/")) cls.test_config = Settings( config={ "sql_file": "sqlite.db", "project_paths": os.path.abspath( os.path.join(cls.resource_path, "../../../../..")), "resource_paths": os.path.abspath( os.path.join(cls.resource_path, "../../../static")), })
def _get_project_from_path(full_path): """ Split the absolute path in root_path and project_path using the top_path function in Settings() Args: full_path (str): absolute path Returns: str, str: root_path, project_path """ root = Settings().top_path(full_path) if root is not None: pr_path = posixpath.relpath(full_path, root) return root, pr_path else: return None, full_path
def set_logging_level(level, channel=None): """ Set level for logger Args: level (str): 'DEBUG, INFO, WARN' channel (int): 0: file_log, 1: stream, None: both """ from pyiron_base.settings.generic import Settings s = Settings() if channel: s.logger.handlers[channel].setLevel(level) else: s.logger.handlers[0].setLevel(level) s.logger.handlers[1].setLevel(level)
import os import pandas import numpy as np from shutil import rmtree from distutils.dir_util import copy_tree import tarfile from pyiron_base.generic.util import static_isinstance from pyiron_base.settings.generic import Settings s = Settings() def getdir(path): path_base_name = os.path.basename(path) if path_base_name == "": return os.path.basename(os.path.dirname(path)) else: return path_base_name def update_id_lst(record_lst, job_id_lst): masterid_lst = [] for masterid in record_lst: if masterid is None or np.isnan(masterid): masterid_lst.append(None) elif isinstance(masterid, int) or isinstance(masterid, float): masterid = int(masterid) masterid_lst.append(job_id_lst[masterid]) return masterid_lst