From 1fdd6db0920cb1589fddd4f099d6b87e704ddb38 Mon Sep 17 00:00:00 2001 From: yuxiang Date: Wed, 2 Aug 2023 09:03:04 +0200 Subject: [PATCH] Refactoring Baseworkflow. Creating a gui interface --- amworkflow/src/core/_workflow.py | 131 ++++++++++++++++++ amworkflow/src/core/workflow.py | 32 ++--- .../src/infrastructure/database/cruds/crud.py | 62 ++++++--- .../infrastructure/database/engine/engine.py | 2 +- .../infrastructure/database/files/.gitkeep | 0 .../infrastructure/database/files/db/.gitkeep | 0 .../database/files/output_files/.gitkeep | 0 .../infrastructure/database/models/model.py | 26 +++- .../src/infrastructure/fastapi/.gitkeep | 0 amworkflow/src/interface/api.py | 62 +++++++-- amworkflow/src/interface/cli/cli_workflow.py | 3 +- amworkflow/src/interface/cli/display.py | 7 + .../src/interface/gui/{ => Qt}/main_window.py | 0 .../src/interface/gui/{ => Qt}/sub_window.py | 0 .../src/interface/gui/web/stl_viewer.py | 48 +++++++ amworkflow/src/interface/gui/web/styles.css | 23 +++ .../src/interface/gui/web/try_streamlit.py | 10 ++ amworkflow/src/utils/parser.py | 24 +--- amworkflow/src/utils/permutator.py | 12 +- amworkflow/src/utils/reader.py | 22 ++- amworkflow/src/utils/sanity_check.py | 21 ++- amworkflow/src/utils/writer.py | 11 +- environment.yaml => environment.yml | 35 ++++- usecases/param_wall/dodo.py | 4 +- usecases/test_am4/am4.py | 8 ++ usecases/test_am4/db/amworkflow.db | Bin 0 -> 102400 bytes usecases/test_am4/db/imports/terrain.stl | Bin 0 -> 240184 bytes 27 files changed, 444 insertions(+), 99 deletions(-) create mode 100644 amworkflow/src/core/_workflow.py delete mode 100644 amworkflow/src/infrastructure/database/files/.gitkeep delete mode 100644 amworkflow/src/infrastructure/database/files/db/.gitkeep delete mode 100644 amworkflow/src/infrastructure/database/files/output_files/.gitkeep delete mode 100644 amworkflow/src/infrastructure/fastapi/.gitkeep create mode 100644 amworkflow/src/interface/cli/display.py rename amworkflow/src/interface/gui/{ => Qt}/main_window.py (100%) rename amworkflow/src/interface/gui/{ => Qt}/sub_window.py (100%) create mode 100644 amworkflow/src/interface/gui/web/stl_viewer.py create mode 100644 amworkflow/src/interface/gui/web/styles.css create mode 100644 amworkflow/src/interface/gui/web/try_streamlit.py rename environment.yaml => environment.yml (94%) create mode 100644 usecases/test_am4/am4.py create mode 100644 usecases/test_am4/db/amworkflow.db create mode 100644 usecases/test_am4/db/imports/terrain.stl diff --git a/amworkflow/src/core/_workflow.py b/amworkflow/src/core/_workflow.py new file mode 100644 index 0000000..e434d3a --- /dev/null +++ b/amworkflow/src/core/_workflow.py @@ -0,0 +1,131 @@ +#self dependencies +from amworkflow.src.interface.cli.cli_workflow import cli +from amworkflow.src.constants.data_model import DeepMapParamModel +from amworkflow.src.constants.enums import Label as L +from amworkflow.src.utils.parser import geom_param_parser +from amworkflow.src.utils.sanity_check import path_valid_check, dimension_check +from amworkflow.src.constants.exceptions import NoDataInDatabaseException, InsufficientDataException +from amworkflow.src.interface.api import amWorkflow as aw +#pip lib dependencies +import numpy as np +#built-in dependencies +import copy + +class BaseWorkflow(object): + def __init__(self, args): + self.args = args + self.geometry_spawn: callable + self.geom_param_handler() + self.indicator = task_handler(self.args) + print(self.indicator) + self.data_init() + def sequence(self): + pass + + def create(self): + pass + + def process_geometry(self): + pass + + def data_init(self): + match self.indicator[0]: + case 1: #read the imported file stored in the database and convert it to an OCC representation. + md5 = aw.tool.get_md5(self.args.import_dir) + impt_filename = aw.db.query_data("ImportedFile", by_name=md5, column_name="md5_id", only_for_column="filename") + mdl_name = aw.db.query_data("ModelProfile", by_name=md5, column_name="imported_file_id", only_for_column="model_name") + print(mdl_name) + print(impt_filename) + impt_format = path_valid_check(self.args.import_dir, format=["stp", "step","stl","STL"]) + if impt_format in ["stl","STL"]: + self.import_fl = aw.tool.read_stl(self.args.import_file_dir + "/" + impt_filename) + else: + self.import_fl = aw.tool.read_step(self.args.import_file_dir + "/" + impt_filename) + match self.indicator[1]: + case 1: # Import file, convert the file to an OCC representation and create a new profile for imported file. + if impt_format in ["stl","STL"]: + self.import_fl = aw.tool.read_stl(self.args.import_dir) + else: + self.import_fl = aw.tool.read_step(self.args.import_dir) + + case 2: # remove selected profile and stp file, then quit + #TODO remove the step file and and info in db. + aw.db.delete_data("ImportedFile", md5) + case 2: # yaml file provided + pass + + case 0: # model_name provided + match self.indicator[1]: + case 2: + #remove certain model profile from database + query_mdl_pfl = aw.db.query_data("ModelProfile", by_name=self.args.name, column_name="model_name") + q_md5 = query_mdl_pfl.imported_file_id[0] + if q_md5 != None: + aw.db.delete_data("ImportedFile", prim_ky=q_md5) + else: + aw.db.delete_data("ModelProfile", prim_ky=self.args.name) + case 0: # do nothing, fill data into the loaded model. + pass + case 3: # Create a new model profile with given parameters. + aw.db.insert_data("ModelProfile", {"model_name": self.args.name}) + if self.args.geom_param != None: + input = {"model_name": self.args.name} + collect = [] + for param in self.args.geom_param: + print(param) + input.update({"param_name": param}) + collect.append(copy.copy(input)) + aw.db.insert_data("ModelParameter", collect, True) + case 3: # Draft mode. + pass + + def geom_param_handler(self): + if self.args.geom_param != None: + data = geom_param_parser(self.args) + data.update({L.MESH_PARAM.value: { + L.MESH_SIZE_FACTOR:self.args.mesh_size_factor, + L.LYR_NUM.value: self.args.mesh_by_layer, + L.LYR_TKN.value: self.args.mesh_by_layer}}) + data.update({L.STL_PARAM.value:{ + L.LNR_DFT.value: self.args.stl_linear_deflect, + L.ANG_DFT.value: self.args.stl_angular_deflect + }}) + + + +def task_handler(args): + indicator = (0,0) + match args.mode: + case "draft": + indicator = (3,0) + case "production": + if args.name != None: + result = aw.db.query_data("ModelProfile", by_name=args.name, column_name=L.MDL_NAME.value, only_for_column=L.MDL_NAME.value) + if args.name in result: + indicator = (0,0) + if args.edit: + indicator = (0,1) + elif args.remove: + indicator = (0,2) + elif args.import_dir != None: + impt_format = path_valid_check(args.import_dir, format=["stp", "step","stl","STL"]) + impt_filename = aw.tool.get_filename(args.import_dir) + md5 = aw.tool.get_md5(args.import_dir) + result = aw.db.query_data("ImportedFile", by_name=md5, column_name="md5_id") + if not result.empty: + indicator = (1,0) + if args.remove: + indicator = (1,2) + else: + aw.db.insert_data("ImportedFile",{"filename": impt_filename, "md5_id": md5}) + aw.db.insert_data("ModelProfile", {"model_name": args.name,"imported_file_id": md5}) + aw.tool.upload(args.import_dir, args.import_file_dir) + indicator = (1,1) + elif args.yaml_dir != None: + path_valid_check(args.yaml_dir, format=["yml", "yaml"]) + indicator = (2,0) + else: + indicator = (0,3) + else: + raise InsufficientDataException() + return indicator diff --git a/amworkflow/src/core/workflow.py b/amworkflow/src/core/workflow.py index 825db4e..f5ae636 100644 --- a/amworkflow/src/core/workflow.py +++ b/amworkflow/src/core/workflow.py @@ -66,30 +66,24 @@ def __init__(self, args): def data_init(self): match self.indicator[0]: case 1: #read the step file stored in the database and convert it to an OCC representation. - self.linear_deflect = self.raw_args.stl_linear_deflect self.angular_deflect= self.raw_args.stl_angular_deflect self.mesh_t = self.raw_args.mesh_by_thickness self.mesh_n = self.raw_args.mesh_by_layer self.mesh_s = self.raw_args.mesh_size_factor self.isbatch = self.parsed_args[L.BATCH_PARAM.value][L.IS_BATCH.value] - match self.impt_format.lower(): + impt_format = path_valid_check(self.raw_args.import_dir, format=["stp", "step","stl","STL"]) + impt_filename = get_filename(self.raw_args.import_dir) + match impt_format.lower(): case "stl": self.import_model = stl_reader(path=self.import_dir) case "stp": self.import_model = step_reader(path=self.import_dir) case "step": - self.import_model = step_reader(path=D.DATABASE_OUTPUT_FILE_PATH.value+self.impt_filename) + self.import_model = step_reader(path=D.DATABASE_OUTPUT_FILE_PATH.value+impt_filename) match self.indicator[1]: - case 1: # Import stp file, convert the file to an OCC representation and create a new profile for imported stp file. - match self.impt_format.lower(): - case "stl": - self.import_model = stl_reader(path=D.DATABASE_OUTPUT_FILE_PATH.value+self.impt_filename) - case "stp": - self.import_model = step_reader(path=D.DATABASE_OUTPUT_FILE_PATH.value+self.impt_filename) - case "tep": - self.import_model = step_reader(path=D.DATABASE_OUTPUT_FILE_PATH.value+self.impt_filename) - self.db_data_collection[L.MDL_PROF.value] = {L.MDL_NAME.value: self.impt_filename} + case 1: # Import file, convert the file to an OCC representation and create a new profile for imported file. + self.db_data_collection[L.MDL_PROF.value] = {L.MDL_NAME.value: impt_filename} # self.batch_data_convert(self.parsed_args[L.GEOM_PARAM.value]) case 2: # remove selected profile and stp file, then quit #TODO remove the step file and and info in db. @@ -326,9 +320,9 @@ def create_database_engine(self): pass def task_handler(args): - if args.model_name != None: - result = query_multi_data(ModelProfile, by_name=args.model_name, column_name=L.MDL_NAME.value, target_column_name=L.MDL_NAME.value) - if args.model_name in result: + if args.name != None: + result = query_multi_data(ModelProfile, by_name=args.name, column_name=L.MDL_NAME.value, target_column_name=L.MDL_NAME.value) + if args.name in result: indicator = (0,0) if args.edit: indicator = (0,1) @@ -341,10 +335,10 @@ def task_handler(args): indicator = (0,4) else: if args.import_dir != None: - args.impt_format = path_valid_check(args.import_dir, format=["stp", "step","stl","STL"]) - args.impt_filename = get_filename(args.import_dir) - result = query_multi_data(ModelProfile, by_name=args.impt_filename, column_name=L.MDL_NAME.value, target_column_name=L.MDL_NAME.value) - if args.impt_filename in result: + impt_format = path_valid_check(args.import_dir, format=["stp", "step","stl","STL"]) + impt_filename = get_filename(args.import_dir) + result = query_multi_data(ModelProfile, by_name=impt_filename, column_name=L.MDL_NAME.value, target_column_name=L.MDL_NAME.value) + if impt_filename in result: indicator = (1,0) if args.remove: indicator = (1,2) diff --git a/amworkflow/src/infrastructure/database/cruds/crud.py b/amworkflow/src/infrastructure/database/cruds/crud.py index 3c70558..82b932d 100644 --- a/amworkflow/src/infrastructure/database/cruds/crud.py +++ b/amworkflow/src/infrastructure/database/cruds/crud.py @@ -1,14 +1,14 @@ -from uuid import uuid4 -from amworkflow.src.infrastructure.database.models.model import Base -from amworkflow.src.infrastructure.database.engine.engine import session +from amworkflow.src.infrastructure.database.models.model import db_list from sqlalchemy import insert from sqlalchemy.sql.expression import select +import pandas as pd - -def insert_data(table: callable, +def insert_data(table: str, data: dict, isbatch: bool) -> None: + from amworkflow.src.infrastructure.database.engine.engine import session session.new + table = db_list[table] try: if not isbatch: transaction = table(**data) @@ -21,47 +21,68 @@ def insert_data(table: callable, transcation_rollback() session.commit() -def _query_data(table: callable, - by_hash: str): +def query_data_object(table: str, + by_name: str, + column_name: str): + from amworkflow.src.infrastructure.database.engine.engine import session session.new - exec_result = session.execute(select(table).filter_by(stl_hashname = by_hash)).scalar_one() + if type(table) is str: + table = db_list[table] + column = getattr(table, column_name) + exec_result = session.execute(select(table).filter(column == by_name)).scalar_one() return exec_result -def query_multi_data(table: callable, +def query_multi_data(table: str, by_name: str = None, column_name: str = None, - target_column_name: str = None): + target_column_name: str = None,): + from amworkflow.src.infrastructure.database.engine.engine import session session.new + table = db_list[table] if by_name != None: column = getattr(table, column_name) - result = [i.__dict__ for i in session.query(table).filter(column == by_name).all()] if target_column_name != None: result = [i.__dict__[target_column_name] for i in session.query(table).filter(column == by_name).all()] - return result + else: + result = [i.__dict__ for i in session.query(table).filter(column == by_name).all()] + for dd in result: + dd.pop("_sa_instance_state", None) + else: - exec_result = session.execute(select(table)) - return exec_result.all() + exec_result = session.execute(select(table)).all() + result = [i[0].__dict__ for i in exec_result] + for dd in result: + dd.pop("_sa_instance_state", None) + if target_column_name == None: + result = pd.DataFrame(result) + elif len(result) != 0: + result = result[0] + return result -def update_data(table: callable, - by_hash: str | list, +def update_data(table: str, + by_name: str | list, target_column: str, new_value: int | str | float | bool, isbatch: bool) -> None: + from amworkflow.src.infrastructure.database.engine.engine import session session.new + table = db_list[table] if not isbatch: - transaction = _query_data(table, by_hash) + transaction = query_data_object(table, by_name, column_name= target_column ) setattr(transaction, target_column, new_value) else: - for hash in by_hash: - transaction = _query_data(table, hash) + for name in by_name: + transaction = query_data_object(table, name, target_column) setattr(transaction, target_column, new_value) session.commit() -def delete_data(table: callable, +def delete_data(table: str, by_primary_key: str | list, isbatch: bool, ) -> None: + from amworkflow.src.infrastructure.database.engine.engine import session session.new + table = db_list[table] if not isbatch: transaction = session.get(table, by_primary_key) session.delete(transaction) @@ -72,4 +93,5 @@ def delete_data(table: callable, session.commit() def transcation_rollback(): + from amworkflow.src.infrastructure.database.engine.engine import session session.rollback() \ No newline at end of file diff --git a/amworkflow/src/infrastructure/database/engine/engine.py b/amworkflow/src/infrastructure/database/engine/engine.py index 8628784..c28d620 100644 --- a/amworkflow/src/infrastructure/database/engine/engine.py +++ b/amworkflow/src/infrastructure/database/engine/engine.py @@ -2,6 +2,6 @@ from sqlalchemy import create_engine from sqlalchemy.orm import Session from amworkflow.src.infrastructure.database.engine.config import DB_DIR -engine = create_engine("sqlite+pysqlite:////" + DB_DIR + r'/amworkflow.db', echo=True) +engine = create_engine("sqlite+pysqlite:////" + DB_DIR + r'/amworkflow.db') #echo = True for getting logging Base.metadata.create_all(engine) session = Session(engine) diff --git a/amworkflow/src/infrastructure/database/files/.gitkeep b/amworkflow/src/infrastructure/database/files/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/amworkflow/src/infrastructure/database/files/db/.gitkeep b/amworkflow/src/infrastructure/database/files/db/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/amworkflow/src/infrastructure/database/files/output_files/.gitkeep b/amworkflow/src/infrastructure/database/files/output_files/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/amworkflow/src/infrastructure/database/models/model.py b/amworkflow/src/infrastructure/database/models/model.py index 9437007..4ca78d1 100644 --- a/amworkflow/src/infrastructure/database/models/model.py +++ b/amworkflow/src/infrastructure/database/models/model.py @@ -1,3 +1,5 @@ +import sys +import inspect from typing import List from typing import Optional from sqlalchemy import ForeignKey @@ -5,6 +7,10 @@ from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship from amworkflow.src.constants.enums import Timestamp as T from datetime import datetime + +current_module = sys.modules[__name__] +db_list = {} + class Base(DeclarativeBase): pass @@ -88,13 +94,14 @@ class ModelProfile(Base): created_date: Mapped[datetime] = mapped_column(nullable=False, default=datetime.now) ModelParameter = relationship("ModelParameter", cascade="all, delete", back_populates="ModelProfile") GeometryFile = relationship("GeometryFile", cascade="all, delete", back_populates="ModelProfile") + imported_file_id: Mapped[str] = mapped_column(ForeignKey('ImportedFile.md5_id', ondelete="CASCADE"), nullable=True) + ImportedFile = relationship("ImportedFile", back_populates="ModelProfile") class ModelParameter(Base): __tablename__ = "ModelParameter" param_name: Mapped[str] = mapped_column(nullable=False, primary_key=True) model_name: Mapped[str] = mapped_column(ForeignKey('ModelProfile.model_name', ondelete="CASCADE")) ModelProfile = relationship("ModelProfile", back_populates="ModelParameter") - param_type: Mapped[str] = mapped_column(ForeignKey('ParameterType.type_name', ondelete="CASCADE")) class ParameterValue(Base): __tablename__ = "ParameterValue" @@ -103,9 +110,9 @@ class ParameterValue(Base): geom_hashname: Mapped[str] = mapped_column(ForeignKey('GeometryFile.geom_hashname', ondelete="CASCADE")) param_value: Mapped[float] = mapped_column(nullable=True) -class ParameterType(Base): - __tablename__ = "ParameterType" - type_name: Mapped[str] = mapped_column(nullable=False, primary_key=True) +# class ParameterType(Base): +# __tablename__ = "ParameterType" +# type_name: Mapped[str] = mapped_column(nullable=False, primary_key=True) class IterationParameter(Base): __tablename__ = "IterationParameter" @@ -115,6 +122,13 @@ class IterationParameter(Base): parameter_name: Mapped[str] = mapped_column(ForeignKey('ModelParameter.param_name', ondelete="CASCADE")) iter_hashname: Mapped[str] = mapped_column(String(32), nullable=False, primary_key=True) - - +class ImportedFile(Base): + __tablename__ = "ImportedFile" + filename: Mapped[str] = mapped_column(nullable=False) + md5_id: Mapped[str] = mapped_column(nullable=False, primary_key=True) + ModelProfile = relationship("ModelProfile", cascade="all, delete", back_populates="ImportedFile") + +for name, obj in inspect.getmembers(current_module): + if inspect.isclass(obj): + db_list.update({name: obj}) diff --git a/amworkflow/src/infrastructure/fastapi/.gitkeep b/amworkflow/src/infrastructure/fastapi/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/amworkflow/src/interface/api.py b/amworkflow/src/interface/api.py index c824cb7..b51f0b5 100644 --- a/amworkflow/src/interface/api.py +++ b/amworkflow/src/interface/api.py @@ -5,32 +5,58 @@ import amworkflow.src.geometries.mesher as m import amworkflow.src.utils.writer as utw import amworkflow.src.utils.reader as utr +import amworkflow.src.infrastructure.database.cruds.crud as cr from OCC.Core.TopoDS import TopoDS_Shape, TopoDS_Wire, TopoDS_Shell, TopoDS_Solid, TopoDS_Face, TopoDS_Edge, topods_Compound from OCC.Core.gp import gp_Pnt, gp_Vec from OCC.Core.Geom import Geom_TrimmedCurve import numpy as np import gmsh from amworkflow.src.interface.cli.cli_workflow import cli -import amworkflow.src.infrastructure.database.engine.config as CG +from amworkflow.src.constants.data_model import DeepMapParamModel +import amworkflow.src.infrastructure.database.engine.config as cfg import os import sys +import inspect +import pandas as pd + class amWorkflow(object): class engine(object): @staticmethod - def amworkflow(arg): - args = cli() - newdir = utw.mk_dir(os.path.dirname(os.path.realpath(__file__)), "test_nd") - CG.DB_DIR = newdir - from amworkflow.src.core.workflow import BaseWorkflow + def amworkflow(mode: str = "production"): + args = DeepMapParamModel(cli().__dict__) + args.mode = mode + caller_frame = inspect.stack()[1] + caller_fullpath = caller_frame.filename + dbdir = utw.mk_dir(os.path.dirname(caller_fullpath), "db") + args.import_file_dir = utw.mk_dir(dbdir, "imports") + args.db_opt_dir = utw.mk_dir(os.path.dirname(caller_fullpath), "output") + args.db_file_dir = utw.mk_dir(dbdir, "files") + cfg.DB_DIR = dbdir + from amworkflow.src.core._workflow import BaseWorkflow flow = BaseWorkflow(args = args) def inner_decorator(func): def wrapped(*args, **kwargs): - print('before function') flow.geometry_spawn = func - print('after function') wrapped() return wrapped return inner_decorator + class db(object): + @staticmethod + def query_data(table: str, by_name: str = None, column_name: str = None, only_for_column: str = None) -> pd.DataFrame: + return cr.query_multi_data(table=table, by_name=by_name, column_name=column_name, target_column_name=only_for_column) + + @staticmethod + def delete_data(table: str, prim_ky: str | list, isbatch: bool = False) -> None: + return cr.delete_data(table=table, by_primary_key=prim_ky, isbatch=isbatch) + + @staticmethod + def update_data(table: str, by_name: str | list, on_column: str, db_value: int | str | float | bool, isbatch: bool = False): + return cr.update_data(table=table, by_name=by_name, target_column=on_column, db_value=db_value, isbatch=isbatch) + + @staticmethod + def insert_data(table: str, data: dict, isbatch: bool = False) -> None: + return cr.insert_data(table=table, data=data, isbatch=isbatch) + class geom(object): @staticmethod def create_box(length: float, @@ -338,9 +364,9 @@ def reverse(item:TopoDS_Shape) -> None: @staticmethod def geom_copy(item: TopoDS_Shape): """ - @brief Copy a geometry to a new shape. This is a wrapper around BRepBuilderAPI_Copy and can be used to create a copy of a geometry without having to re - create the geometry in the same way. + @brief Copy a geometry to a db shape. This is a wrapper around BRepBuilderAPI_Copy and can be used to create a copy of a geometry without having to re - create the geometry in the same way. @param item Geometry to be copied. - @return New geometry that is a copy of the input geometry. + @return db geometry that is a copy of the input geometry. """ return o.geom_copy(item) @@ -422,7 +448,7 @@ def mesher(item: TopoDS_Shape, class tool(object): @staticmethod - def stl_writer(item: any, item_name: str, linear_deflection: float = 0.001, angular_deflection: float = 0.1, output_mode = 1, store_dir: str = None) -> None: + def write_stl(item: any, item_name: str, linear_deflection: float = 0.001, angular_deflection: float = 0.1, output_mode = 1, store_dir: str = None) -> None: """ @brief Write OCC to STL file. This function is used to write a file to the database. The file is written to a file named item_name. @param item the item to be written to the file. @@ -436,7 +462,7 @@ def stl_writer(item: any, item_name: str, linear_deflection: float = 0.001, angu utw.stl_writer(item, item_name, linear_deflection, angular_deflection, output_mode, store_dir) @staticmethod - def step_writer(item: any, filename: str): + def write_step(item: any, filename: str): """ @brief Writes a step file. This is a wrapper around write_step_file to allow a user to specify the shape of the step and a filename @param item the item to write to the file @@ -471,13 +497,21 @@ def get_filename(path: str) -> str: return utr.get_filename(path) @staticmethod - def step_reader(path: str) -> TopoDS_Shape(): + def read_step(path: str) -> TopoDS_Shape(): return utr.step_reader(path) @staticmethod - def stl_reader(path: str) -> TopoDS_Shape: + def read_stl(path: str) -> TopoDS_Shape: return utr.stl_reader(path) + @staticmethod + def upload(source: str, destination: str) -> bool: + return utw.file_copy(path1=source, path2=destination) + + @staticmethod + def get_md5(source: str) -> str: + return utr.get_file_md5(path=source) + \ No newline at end of file diff --git a/amworkflow/src/interface/cli/cli_workflow.py b/amworkflow/src/interface/cli/cli_workflow.py index 79f4427..b123c32 100644 --- a/amworkflow/src/interface/cli/cli_workflow.py +++ b/amworkflow/src/interface/cli/cli_workflow.py @@ -1,6 +1,4 @@ import argparse -from amworkflow.src.utils.parser import cmd_parser -# from amworkflow.src.core.workflow import BaseWorkflow def cli(): parser = argparse.ArgumentParser() parser.add_argument("-gp", "--geom_param", nargs="+") @@ -16,6 +14,7 @@ def cli(): parser.add_argument("-impt", "--import_dir", nargs="?", type=str) parser.add_argument("-e", "--edit", action="store_true") parser.add_argument("-rm", "--remove", action="store_true") + parser.add_argument("-f", "--file", nargs="?", type=str) args = parser.parse_args() return args diff --git a/amworkflow/src/interface/cli/display.py b/amworkflow/src/interface/cli/display.py new file mode 100644 index 0000000..5b685e9 --- /dev/null +++ b/amworkflow/src/interface/cli/display.py @@ -0,0 +1,7 @@ +from amworkflow.src.infrastructure.database.cruds.crud import query_multi_data, update_data, query_data_object, delete_data +import amworkflow.src.infrastructure.database.engine.config as cfg + +cfg.DB_DIR = "/home/yhe/Documents/amworkflow/usecases/param_wall/db" +dt = query_multi_data("ModelProfile") + + diff --git a/amworkflow/src/interface/gui/main_window.py b/amworkflow/src/interface/gui/Qt/main_window.py similarity index 100% rename from amworkflow/src/interface/gui/main_window.py rename to amworkflow/src/interface/gui/Qt/main_window.py diff --git a/amworkflow/src/interface/gui/sub_window.py b/amworkflow/src/interface/gui/Qt/sub_window.py similarity index 100% rename from amworkflow/src/interface/gui/sub_window.py rename to amworkflow/src/interface/gui/Qt/sub_window.py diff --git a/amworkflow/src/interface/gui/web/stl_viewer.py b/amworkflow/src/interface/gui/web/stl_viewer.py new file mode 100644 index 0000000..813defe --- /dev/null +++ b/amworkflow/src/interface/gui/web/stl_viewer.py @@ -0,0 +1,48 @@ +import pyvista as pv + +# pv.start_xvfb() + +import streamlit as st +import tempfile +from stpyvista import stpyvista + +st.set_page_config(page_icon="🧊", layout="wide") + +# Add some styling with CSS selectors +with open("/home/yhe/Documents/amworkflow/amworkflow/src/interface/gui/web/styles.css") as f: + st.markdown(f"""""", unsafe_allow_html=True) + + +def delmodel(): + del st.session_state.fileuploader + + +## Streamlit layout +"## 📤   Upload a STL file" +placeholder = st.empty() + +with placeholder: + uploadedFile = st.file_uploader( + "Upload a STL file:", ["stl"], accept_multiple_files=False, key="fileuploader" + ) + +if uploadedFile: + ## Initialize pyvista reader and plotter + plotter = pv.Plotter(border=False, window_size=[500, 400]) + plotter.background_color = "#f0f8ff" + + ## Create a tempfile to keep the uploaded file as pyvista's API + ## only supports file paths but not buffers + with tempfile.NamedTemporaryFile(suffix="_streamlit") as f: + f.write(uploadedFile.getbuffer()) + reader = pv.STLReader(f.name) + + ## Read data and send to plotter + mesh = reader.read() + plotter.add_mesh(mesh, color="white") + plotter.view_isometric() + + ## Show in webpage + with placeholder.container(): + st.button("Restart", "btn_rerender", on_click=delmodel) + stpyvista(plotter, key="my_stl") \ No newline at end of file diff --git a/amworkflow/src/interface/gui/web/styles.css b/amworkflow/src/interface/gui/web/styles.css new file mode 100644 index 0000000..7988647 --- /dev/null +++ b/amworkflow/src/interface/gui/web/styles.css @@ -0,0 +1,23 @@ +h1 { + font-size: 5rem; + text-align: center; + top: 0; +} + +h2 { + font-size: 2.5rem; + text-align: center; + top: 0; +} + +h3 { + font-size: 1.2rem; + text-align: center; + top: 0; + margin-left: 20%; + margin-right: 20%; +} + +[data-testid='stSidebarNav'] > ul { + min-height: 60vh; +} \ No newline at end of file diff --git a/amworkflow/src/interface/gui/web/try_streamlit.py b/amworkflow/src/interface/gui/web/try_streamlit.py new file mode 100644 index 0000000..2f9df52 --- /dev/null +++ b/amworkflow/src/interface/gui/web/try_streamlit.py @@ -0,0 +1,10 @@ +import streamlit as st +import amworkflow.src.infrastructure.database.engine.config as cfg +from amworkflow.src.infrastructure.database.cruds.crud import query_multi_data +cfg.DB_DIR = "/home/yhe/Documents/amworkflow/usecases/param_wall/db" +dt = query_multi_data("ModelProfile") +st.write(""" +# My first app +Hello *world!* +""") +st.write(dt) diff --git a/amworkflow/src/utils/parser.py b/amworkflow/src/utils/parser.py index 0e21b03..4a78bfc 100644 --- a/amworkflow/src/utils/parser.py +++ b/amworkflow/src/utils/parser.py @@ -24,26 +24,11 @@ def yaml_parser(dir: str) -> dict: def dict_flat(input_dict: dict) -> dict: return flatdict.FlatDict(input_dict) -# parser = argparse.ArgumentParser(description='amworkflow.') -# parser.add_argument("batch", -# metavar='b', -# type = bool, -# help='Batch mode. True for creating multiple geometries', -# default= True) -# parser.add_argument("usecase", -# ) -# args = parser.parse_args() -# data_mapper(yaml_parser(D.USECASE_PATH_PARAMWALL_PATH.value, "test1.yaml")) -# print(args.batch) -# print(yaml_parser(D.USECASE_PATH_PARAMWALL_PATH.value, "test1.yaml")[L.BATCH_PARAM.value][L.IS_BATCH.value]) -def cmd_parser(args) -> dict: - opt = {} +def geom_param_parser(args) -> dict: + opt = {L.BATCH_PARAM.value: {L.IS_BATCH.value: True}} if args.iter_param != None: - it_param = np.array([args.iter_param[i:i+3] for i in range(0,len(args.iter_param),3)]).T - print(args.geom_param) opt[L.BATCH_PARAM.value] = {L.IS_BATCH.value: True} - else: - opt[L.BATCH_PARAM.value] = {L.IS_BATCH.value: False} + it_param = np.array([args.iter_param[i:i+3] for i in range(0,len(args.iter_param),3)]).T if args.geom_param != None: opt[L.GEOM_PARAM.value] = {} for ind, item in enumerate(args.geom_param): @@ -52,6 +37,7 @@ def cmd_parser(args) -> dict: L.NUM.value: None} if args.iter_param != None: if ind + 1 in it_param[0]: + ind = np.where(it_param[0] == ind + 1)[0][0] opt[L.GEOM_PARAM.value][item].update({L.ENDPOINT.value:it_param[1][ind],L.NUM.value:it_param[2][ind]}) - return opt + return opt diff --git a/amworkflow/src/utils/permutator.py b/amworkflow/src/utils/permutator.py index 88fa56c..1f413f5 100644 --- a/amworkflow/src/utils/permutator.py +++ b/amworkflow/src/utils/permutator.py @@ -1,8 +1,8 @@ import numpy as np from amworkflow.src.constants.exceptions import DimensionInconsistencyException -# st_pt = np.array([10, 8, 6, 4]) -# nd_pt = np.array([None, None, 10, None]) -# num = np.array([None, None, 5, None]) +st_pt = np.array([10, 8, 6, 4]) +nd_pt = np.array([None, None, 10, None]) +num = np.array([None, None, 5, None]) def simple_permutator(start_point: np.ndarray, end_point: np.ndarray, num: np.ndarray, @@ -32,6 +32,6 @@ def simple_permutator(start_point: np.ndarray, p_with_label = {"label": label, "permutation": re_by_label} return p_with_label, result -# print(simple_permutator(start_point=st_pt, -# end_point=nd_pt, -# num= num, label=["length","width", "height", "curve"])[0]) \ No newline at end of file +print(simple_permutator(start_point=st_pt, +end_point=nd_pt, +num= num, label=["length","width", "height", "curve"])[0]) \ No newline at end of file diff --git a/amworkflow/src/utils/reader.py b/amworkflow/src/utils/reader.py index 64dbba1..9444edd 100644 --- a/amworkflow/src/utils/reader.py +++ b/amworkflow/src/utils/reader.py @@ -1,6 +1,8 @@ import os from OCC.Extend.DataExchange import read_step_file, read_stl_file from OCC.Core.TopoDS import TopoDS_Shape +import hashlib +import logging def get_filename(path: str) -> str: return os.path.basename(path) @@ -9,4 +11,22 @@ def step_reader(path: str) -> TopoDS_Shape(): return read_step_file(filename=path) def stl_reader(path: str) -> TopoDS_Shape: - return read_stl_file(filename=path) \ No newline at end of file + return read_stl_file(filename=path) + +def get_file_md5(path: str) -> str: + with open(path, "rb") as file: + data = file.read() + md5 = hashlib.md5(data).hexdigest() + return md5 + +def verification(path1: str, path2: str) -> bool: + filename1 = get_filename(path1) + filename2 = get_filename(path2) + md51 = get_file_md5(path1) + md52 = get_file_md5(path2) + if md51 == md52: + logging.info(f"{filename1} and {filename2} are identical.") + return True + else: + return False + \ No newline at end of file diff --git a/amworkflow/src/utils/sanity_check.py b/amworkflow/src/utils/sanity_check.py index e532724..e945a03 100644 --- a/amworkflow/src/utils/sanity_check.py +++ b/amworkflow/src/utils/sanity_check.py @@ -48,7 +48,7 @@ def path_append_check(): sys.path.append(op.dirname(op.dirname(op.dirname(op.dirname(__file__))))) sys.path.append(op.dirname(op.dirname(__file__))) -def path_valid_check(path: str, format: list) -> bool: +def path_valid_check(path: str, format: list = None) -> bool: """ @brief Check if path is valid and return file name if not raise InvalidFileFormatException. This is used to check if file can be read from file system @param path path to file or directory @@ -56,14 +56,21 @@ def path_valid_check(path: str, format: list) -> bool: @return filename's extension or False if file is not in format ( no extension ) or file is not in """ split_result = path.rsplit("/", 1) - # Split the result of a split command. + # split_formt = split_result[] + # Split the result of a split command. if len(split_result) > 1: dir_path, filename = split_result - # if dir_path is not a directory if os.path.isdir(dir_path) == False: raise AssertionError("wrong path provided") - # If filename is not in format raise InvalidFileFormatException item filename - if (filename[-3:] not in format) and (filename[-4:] not in format): - raise InvalidFileFormatException(item=filename[-4:]) + if format != None: + + fmt = filename.rsplit(".",1)[1] + # if dir_path is not a directory + + # If filename is not in format raise InvalidFileFormatException item filename + if fmt not in format: + raise InvalidFileFormatException(item=fmt) + else: + return fmt else: - return filename[-3:] + return True \ No newline at end of file diff --git a/amworkflow/src/utils/writer.py b/amworkflow/src/utils/writer.py index d6c0a9c..5c1cf37 100644 --- a/amworkflow/src/utils/writer.py +++ b/amworkflow/src/utils/writer.py @@ -3,6 +3,7 @@ import os import sys import copy +import shutil from OCC.Core.StlAPI import StlAPI_Writer from OCC.Extend.DataExchange import write_stl_file, write_step_file, read_stl_file from amworkflow.src.utils.sanity_check import path_valid_check @@ -156,10 +157,18 @@ def mesh_writer(item: gmsh.model, directory: str, filename: str, output_filename file.write_meshtags(facet_markers) def mk_dir(dirname:str, folder_name: str): - print(dirname) if os.path.isdir(dirname) == False: raise AssertionError("wrong path provided") newdir = dirname + "/" + folder_name if not os.path.exists(newdir): os.mkdir(newdir) return newdir + +def file_copy(path1: str, path2: str) -> bool: + path_valid_check(path1) + path_valid_check(path2) + try: + shutil.copy(path1, path2) + return True + except: + return False diff --git a/environment.yaml b/environment.yml similarity index 94% rename from environment.yaml rename to environment.yml index a1f1540..739c80b 100644 --- a/environment.yaml +++ b/environment.yml @@ -341,6 +341,7 @@ dependencies: - zlib=1.2.13=h166bdaf_4 - zstd=1.5.5=hc292b87_0 - pip: + - altair==5.0.1 - amworkflow==0.3 - anyio==3.7.0 - argon2-cffi==21.3.0 @@ -348,6 +349,10 @@ dependencies: - arrow==1.2.3 - beautifulsoup4==4.12.2 - bleach==6.0.0 + - blinker==1.6.2 + - bokeh==3.2.1 + - cachetools==5.3.1 + - click==8.1.6 - comm==0.1.3 - debugpy==1.6.7 - defusedxml==0.7.1 @@ -357,8 +362,12 @@ dependencies: - fenicsx-plotly==0.2.0 - flatdict==4.0.1 - fqdn==1.5.1 + - gitdb==4.0.10 + - gitpython==3.1.32 - gmsh==4.11.1 - greenlet==2.0.2 + - h11==0.14.0 + - httptools==0.6.0 - ipykernel==6.23.3 - ipython-genutils==0.2.0 - ipywidgets==7.7.2 @@ -375,7 +384,10 @@ dependencies: - jupyter-server-terminals==0.4.4 - jupyterlab-pygments==0.2.2 - jupyterlab-widgets==1.1.4 + - linkify-it-py==2.0.2 + - markdown==3.4.4 - markupsafe==2.1.3 + - mdit-py-plugins==0.4.0 - mistune==3.0.1 - nbclassic==1.0.0 - nbclient==0.8.0 @@ -388,15 +400,24 @@ dependencies: - occutils==0.1.dev0 - overrides==7.3.1 - pandocfilters==1.5.0 + - panel==1.2.1 + - param==1.13.0 - plotly==5.15.0 - polyfactory==2.4.0 - prometheus-client==0.17.0 + - protobuf==4.23.4 - psutil==5.9.5 + - pyarrow==12.0.1 - pydantic==1.10.9 + - pydeck==0.8.0 + - pympler==1.0.1 - pyrsistent==0.19.3 - pytest==7.4.0 + - python-dotenv==1.0.0 - python-json-logger==2.0.7 - python-utils==3.7.0 + - pytz-deprecation-shim==0.1.0.post0 + - pyviz-comms==2.3.2 - pyyaml==6.0 - pyzmq==25.1.0 - qtconsole==5.4.3 @@ -407,12 +428,17 @@ dependencies: - ruamel-yaml-clib==0.2.7 - send2trash==1.8.2 - setuptools==68.0.0 + - smmap==5.0.0 - sniffio==1.3.0 - soupsieve==2.4.1 - sqlalchemy==2.0.15 + - starlette==0.27.0 + - stpyvista==0.0.8 + - streamlit==1.25.0 - tbb==2020.3.254 - terminado==0.17.1 - tinycss2==1.2.1 + - toolz==0.12.0 - trame==2.5.0 - trame-client==2.9.4 - trame-components==2.1.1 @@ -427,9 +453,16 @@ dependencies: - trame-vega==2.0.3 - trame-vtk==2.5.3 - trame-vuetify==2.2.4 + - tzlocal==4.3.1 + - uc-micro-py==1.0.2 - uri-template==1.3.0 + - uvloop==0.17.0 + - validators==0.20.0 + - watchdog==3.0.0 + - watchfiles==0.19.0 - webcolors==1.13 - webencodings==0.5.1 - websocket-client==1.6.1 + - websockets==11.0.3 - widgetsnbextension==3.6.4 - + - xyzservices==2023.7.0 diff --git a/usecases/param_wall/dodo.py b/usecases/param_wall/dodo.py index 3fb3ff0..d193671 100644 --- a/usecases/param_wall/dodo.py +++ b/usecases/param_wall/dodo.py @@ -1,6 +1,6 @@ from param_wall import ParamWallWorkflow -from amworkflow.amworkflow.src.constants.data_model import WallGeometryParameter, DB_WallGeometryFile -from amworkflow.amworkflow.src.infrastructure.database.models.model import GeometryFile +from amworkflow.src.constants.data_model import WallGeometryParameter, DB_WallGeometryFile +from amworkflow.src.infrastructure.database.models.model import GeometryFile def create_param_wall(yaml_dir: str, filename: str, diff --git a/usecases/test_am4/am4.py b/usecases/test_am4/am4.py new file mode 100644 index 0000000..ff62376 --- /dev/null +++ b/usecases/test_am4/am4.py @@ -0,0 +1,8 @@ +from amworkflow.src.interface.api import amWorkflow as aw +@aw.engine.amworkflow() +def geometry_spawn(pm): + box = aw.geom.create_box(length=pm.length, + width= pm.width, + height=pm.height, + radius=pm.radius) + return box \ No newline at end of file diff --git a/usecases/test_am4/db/amworkflow.db b/usecases/test_am4/db/amworkflow.db new file mode 100644 index 0000000000000000000000000000000000000000..fb782abf37aafccb01b740a7116dbcfdadc256b9 GIT binary patch literal 102400 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 XRQb5;0p*S3=2%M|ceCt}XqotbO!2Z4 literal 0 HcmV?d00001