예제 #1
0
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")
예제 #2
0
 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()
예제 #3
0
    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
예제 #4
0
 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")),
         })
예제 #5
0
    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
예제 #6
0
파일: logger.py 프로젝트: pmrv/pyiron_base
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)
예제 #7
0
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