lca_algebraic.io API documentation

# Module `lca_algebraic.io`

Expand source code

    from os.path import basename, dirname

    import bw2data
    from bw2data.parameters import DatabaseParameter, ProjectParameter
    from bw2io import BW2Package
    import brightway2 as bw

    from lca_algebraic import loadParams, error
    from lca_algebraic.params import _listParams

    __all__ = ['export_db', 'import_db']

    def param_data(param) :
        """Return param data except id"""
        res =  {key:val for key, val in param.__data__.items() if key != "id"}
        data = res.pop("data")
        res.update(data)

        return res

    def export_db(db_name, filename) :
        """Export Db and linked parameters"""
        db = bw.Database(db_name)
        db_params = DatabaseParameter.select().where(DatabaseParameter.database == db_name)

        # Export Db params
        db.metadata["database_parameters"] = [param_data(param) for param in db_params]

        # List of all project params used in this dataset
        used_project_params = list(param.name for param in _listParams(db_name) if param.dbname is None)

        if len(used_project_params) > 0 :
            error('Warning : this DB uses project parameters that are exported as well and might override project params at import time : ', used_project_params)

            proj_params = list(ProjectParameter.get(ProjectParameter.name==name) for name in used_project_params)

            db.metadata["project_parameters"] = [param_data(param) for param in proj_params]

        BW2Package._write_file(filename, [BW2Package._prepare_obj(db, False)])

    def import_db(filename) :
        """Export Db and linked parameters"""

        db = BW2Package.import_file(filename)[0]
        if "database_parameters" in db.metadata :
            params = db.metadata["database_parameters"]
            bw.parameters.new_database_parameters(params, db.name)

        if "project_parameters" in db.metadata:
            params = db.metadata["project_parameters"]
            bw.parameters.new_project_parameters(params)

        # Reload the parameters
        loadParams()

        return db

## Functions

`def export_db(db_name, filename)`

  Export Db and linked parameters

  Expand source code

      def export_db(db_name, filename) :
          """Export Db and linked parameters"""
          db = bw.Database(db_name)
          db_params = DatabaseParameter.select().where(DatabaseParameter.database == db_name)

          # Export Db params
          db.metadata["database_parameters"] = [param_data(param) for param in db_params]

          # List of all project params used in this dataset
          used_project_params = list(param.name for param in _listParams(db_name) if param.dbname is None)

          if len(used_project_params) > 0 :
              error('Warning : this DB uses project parameters that are exported as well and might override project params at import time : ', used_project_params)

              proj_params = list(ProjectParameter.get(ProjectParameter.name==name) for name in used_project_params)

              db.metadata["project_parameters"] = [param_data(param) for param in proj_params]

          BW2Package._write_file(filename, [BW2Package._prepare_obj(db, False)])

`def import_db(filename)`

  Export Db and linked parameters

  Expand source code

      def import_db(filename) :
          """Export Db and linked parameters"""

          db = BW2Package.import_file(filename)[0]
          if "database_parameters" in db.metadata :
              params = db.metadata["database_parameters"]
              bw.parameters.new_database_parameters(params, db.name)

          if "project_parameters" in db.metadata:
              params = db.metadata["project_parameters"]
              bw.parameters.new_project_parameters(params)

          # Reload the parameters
          loadParams()

          return db