Browse Source

[ENH] Add learnware usable tag in databse

tags/v0.3.2
bxdd 2 years ago
parent
commit
081ca76b47
2 changed files with 14 additions and 13 deletions
  1. +7
    -6
      learnware/market/database_ops.py
  2. +7
    -7
      learnware/market/easy.py

+ 7
- 6
learnware/market/database_ops.py View File

@@ -18,13 +18,14 @@ def init_empty_db(func):
"""SELECT name FROM sqlite_master WHERE type='table' AND name='LEARNWARE'; """
).fetchall()
if len(listOfTables) == 0:
logger.info("Initializing Database in %s..." % (os.path.join(C.database_path, "market.db")))
logger.info("Initializing Database in %s..." % (os.path.join(C.database_path, f"market_{market_id}.db")))
cur.execute(
"""CREATE TABLE LEARNWARE
(ID CHAR(10) PRIMARY KEY NOT NULL,
SEMANTIC_SPEC TEXT NOT NULL,
ZIP_PATH TEXT NOT NULL,
FOLDER_PATH TEXT NOT NULL);"""
FOLDER_PATH TEXT NOT NULL,
USE_FLAG TEXT NOT NULL);"""
)
logger.info("Database Built!")
kwargs["cur"] = cur
@@ -49,12 +50,12 @@ def clear_learnware_table(cur):


@init_empty_db
def add_learnware_to_db(id: str, semantic_spec: dict, zip_path: str, folder_path: str, cur):
def add_learnware_to_db(id: str, semantic_spec: dict, zip_path: str, folder_path: str, use_flag: str, cur):
semantic_spec_str = json.dumps(semantic_spec)
cur.execute(
"INSERT INTO LEARNWARE (ID,SEMANTIC_SPEC,ZIP_PATH,FOLDER_PATH) \
VALUES ('%s', '%s', '%s', '%s' )"
% (id, semantic_spec_str, zip_path, folder_path)
"INSERT INTO LEARNWARE (ID,SEMANTIC_SPEC,ZIP_PATH,FOLDER_PATH,USE_FLAG) \
VALUES ('%s', '%s', '%s', '%s', '%s')"
% (id, semantic_spec_str, zip_path, folder_path, use_flag)
)




+ 7
- 7
learnware/market/easy.py View File

@@ -19,9 +19,9 @@ logger = get_module_logger("market", "INFO")


class EasyMarket(BaseMarket):
INVALID_LEARNWARE = -1
NOPREDICTION_LEARNWARE = 0
PREDICTION_LEARWARE = 1
INVALID_LEARNWARE = "INVALID"
NONUSABLE_LEARNWARE = "NONUSABLE"
USABLE_LEARWARE = "USABLE"

def __init__(self, market_id: str = "default", rebuild: bool = False):
"""Initialize Learnware Market.
@@ -79,8 +79,7 @@ class EasyMarket(BaseMarket):
learnware.instantiate_model()
except Exception as e:
logger.warning(f"The learnware [{learnware.id}] is instantiated failed! Due to {repr(e)}")
raise
return cls.INVALID_LEARNWARE
return cls.NONUSABLE_LEARNWARE

try:
spec_data = learnware.specification.stat_spec["RKMEStatSpecification"].get_z()
@@ -92,9 +91,9 @@ class EasyMarket(BaseMarket):
pred_spec = learnware.predict(spec_data)
except Exception:
logger.warning(f"The learnware [{learnware.id}] prediction is not avaliable")
return cls.NOPREDICTION_LEARNWARE
return cls.NONUSABLE_LEARNWARE

return cls.PREDICTION_LEARWARE
return cls.USABLE_LEARWARE

def add_learnware(self, zip_path: str, semantic_spec: dict) -> Tuple[str, bool]:
"""Add a learnware into the market.
@@ -188,6 +187,7 @@ class EasyMarket(BaseMarket):
semantic_spec=semantic_spec,
zip_path=target_zip_dir,
folder_path=target_folder_dir,
use_flag=check_flag,
)
return id, True
else:


Loading…
Cancel
Save