class UpsertIngester(Utils): def __init__(self, db_connection): self.db = Database(helpers_connection=db_connection) def add_target(self, target_data, table_name, output_schema, primary_keys, date_format): self.target_data = target_data self.table_name = table_name self.schema = output_schema self.primary_keys = primary_keys date_cols = [ x['column_name'] for x in self.db.execute_query( f""" SELECT column_name FROM information_schema.columns WHERE table_schema = '{output_schema}' AND table_name = '{table_name}' AND ( data_type ILIKE '%timestamp%' OR data_type ILIKE '%date%' ); """, return_object=True) ] if not self.target_data: raise IndexError('Target data for table ' + self.table_name + ' is empty.') else: self.target_data, self.target_columns = Utils.add_missing_keys( Utils.keys_to_snakecase(self, self.target_data)) self.column_names = ', '.join([x for x in self.target_columns]) self.columns_insert = ', '.join([ '%(' + x + ')s' if x not in [k for k in date_cols] else f"TO_TIMESTAMP(%(" + x + ")s, '" + date_format + "')" for x in self.target_columns ]) self._ingest_target() def _ingest_target(self): self.db.execute_query( f""" INSERT INTO {self.schema}.{self.table_name} ({self.column_names}) VALUES ({self.columns_insert}) ON CONFLICT (""" + ', '.join([x for x in self.primary_keys]) + """) DO NOTHING ; """, multiple=True, args=self.target_data) def close(self): self.db.close()
def main(): # clean output folder if CLEAN: clean_folder(cfg.PATH_2D) clean_folder(cfg.PATH_3D) database = Database(name=cfg.DATABASE) # LEA if LEA_IN: winjulea_in(os.path.join(cfg.PATH_LEA, 'winjulea.lea')) if LEA_OUT: evals, depths = winjulea_out(os.path.join(cfg.PATH_LEA, 'winjulea.rpt')) np.save(os.path.join(cfg.PATH_LEA, 'evals'+cfg.FILE_SUFFIX_LEA+'.npy'), evals) np.save(os.path.join(cfg.PATH_LEA, 'depths'+cfg.FILE_SUFFIX_LEA+'.npy'), depths) # 2D if D2: d2 = Superposition(database) d2.run(cfg.VEHICLE, cfg.NUM_TIRES) # 3D if D3: d3 = FEM3D(database) d3.run(cfg.VEHICLE, cfg.NUM_TIRES) # plot if PLOT: """ # LEA vs superposition 2D evals_lea = np.load(os.path.join(cfg.PATH_LEA, 'evals'+cfg.FILE_SUFFIX_LEA+'.npy')) depths_lea = np.load(os.path.join(cfg.PATH_LEA, 'depths'+cfg.FILE_SUFFIX_LEA+'.npy')) evals_2d = np.load(os.path.join(cfg.PATH_2D, 'evals'+cfg.FILE_SUFFIX_2D+'.npy')) depths_2d = np.load(os.path.join(cfg.PATH_2D, 'depths'+cfg.FILE_SUFFIX_2D+'.npy')) plot_eval_depth_lea_2d(evals_lea, depths_lea, evals_2d, depths_2d, cfg.PATH_LEA) """ # LEA vs superposition 2D vs 3D evals_lea = np.load(os.path.join(cfg.PATH_LEA, 'evals'+cfg.FILE_SUFFIX_LEA+'.npy')) depths_lea = np.load(os.path.join(cfg.PATH_LEA, 'depths'+cfg.FILE_SUFFIX_LEA+'.npy')) evals_2d = np.load(os.path.join(cfg.PATH_2D, 'evals'+cfg.FILE_SUFFIX_2D+'.npy')) depths_2d = np.load(os.path.join(cfg.PATH_2D, 'depths'+cfg.FILE_SUFFIX_2D+'.npy')) evals_3d = np.load(os.path.join(cfg.PATH_3D, 'evals'+cfg.FILE_SUFFIX_3D+'.npy')) depths_3d = np.load(os.path.join(cfg.PATH_3D, 'depths'+cfg.FILE_SUFFIX_3D+'.npy')) plot_eval_depth_all(evals_lea, depths_lea, evals_2d, depths_2d, evals_3d, depths_3d, cfg.PATH_3D) database.close()
"""Old version dataArray = [] for i in fields: array = vtk.vtkDoubleArray() array.SetName(i) array.SetNumberOfTuples(grid.GetNumberOfPoints()) # axis 0 array.SetNumberOfComponents(1) # axis 1 dataArray.append(array) grid.GetPointData().AddArray(array) for i in range(results.shape[0]): # points for j in range(results.shape[1]): # fields dataArray[j].SetValue(i, results[i,j]) """ if __name__ == "__main__": database = Database(name=cfg.DATABASE) task = Superposition(database) mode = 'single' if mode == 'single': # run one vehicle (single mode) task.run(cfg.VEHICLE, cfg.NUM_TIRES) elif mode == 'batch': # run all vehicles (batch mode) for vehicle in database.vehicle_all(): task.run(vehicle, cfg.NUM_TIRES) database.close()
from models.intent.intent_model import IntentModel intent = IntentModel(model_name='../models/intent/intent_model.h5', proprocess=p) predict = intent.predict_class(query) intent_name = intent.labels[predict] from models.ner.nermodel import NerModel ner = NerModel(model_name='../models/ner/ner_model.h5', proprocess=p) predicts = ner.predict(query) ner_tags = ner.predict_tags(query) print('질문 : ', query) print('=' * 40) print('의도 파악 : ', intent_name) print('개체명 인식 : ', predicts) print('답변 검색에 필요한 NER 태그 : ', ner_tags) print('=' * 40) from utils.findanswer import FindAnswer try: f = FindAnswer(db) answer_text, answer_image = f.search(intent_name, ner_tags) answer = f.tag_to_word(predicts, answer_text) except: answer = '죄송해요, 무슨 말인지 모르겠어요.' print('답변 : ', answer) db.close()