def get(self, project_id): user_id = get_jwt_identity() result = ProjectModel.find_one_by_id(project_id, user_id) columns_filter_id = result.columns_filter_id columns_filter = ProjectUnstructureModel.find_by_object_id( ObjectId(columns_filter_id)) return { 'message': SUCCESS_MESSAGE.format('columns_filter'), 'columns_filter': columns_filter['columns'] }
def post(self, experiment_name): user_id = get_jwt_identity() data = Prediction.parser.parse_args() raw_data = data['data'] dataset = File.read_json(raw_data) result = ExperimentModel.find_by_name(user_id, experiment_name) y_col = result.y_col datasource_id = result.datasource_id project_id = result.project_id result = DatasourceModel.find_one_by_id(user_id, datasource_id) user_schema_name = result.user_schema_name user_table_name = result.user_table_name columns = [ col['column_name'] for col in DatasourceModel.get_columns( user_schema_name, user_table_name) ] try: columns_filter_id = ProjectModel.find_one_by_id( project_id, user_id).columns_filter_id except Exception as e: return { 'message': ERROR_CANNOT_GET_COLUMNS_FILTER_ID.format(project_id) }, 500 try: columns_filter = ProjectUnstructureModel.find_by_object_id( ObjectId(columns_filter_id))['columns'] except Exception as e: return { 'message': ERROR_CANNOT_GET_COLUMNS_FILTER.format(project_id) }, 500 try: predict = Predicting(experiment_name, dataset, columns, columns_filter, y_col, user_id) predict.decorate_dataframe() predict.load_model() predict.predict() dataset = predict.merge_predict_to_dataframe() json_data = Dataset(dataset).get_json() except Exception as e: print(e) return { 'message': ERROR_CANNOT_GET_PREDICT_WITH_DATA.format(experiment_name) }, 500 # try: # DatasourceModel.append_datasource(dataset, user_schema_name, user_table_name) # except Exception as e: # return {'message': ERROR_CANNOT_INSERT_DB}, 500 return {'data': json_data}, 200
def delete(self, project_id): user_id = get_jwt_identity() try: project = ProjectModel.find_one_by_id(project_id, user_id) project.delete_from_db() return {'message': SUCCESS_MESSAGE.format(project_id)}, 200 except Exception as e: return { 'message': 'This project has many experiments, please remove experiment first.' }, 500
def get(self, project_id): user_id = get_jwt_identity() data = ProjectModel.find_one_by_id(project_id, user_id) collection = CollectionModel.find_one_by_id(data.collection_id, user_id) datasource = DatasourceModel.find_one_by_id(user_id, data.datasource_id) return { 'project_id': data.project_id, 'project_name': data.project_name, 'project_description': data.project_description, 'datasource': { 'datasource_id': datasource.datasource_id, 'datasource_name': datasource.datasource_name, 'datasource_description': datasource.datasource_description }, 'collection': { 'collection_id': collection.collection_id, 'collection_name': collection.collection_name, 'collection_description': collection.collection_description, } }
def post(self, project_id, experiment_name): user_id = get_jwt_identity() data = Experiment.parser.parse_args() experiment_description = data['experiment_description'] datasource_id = data['datasoruce_id'] model_id = data['model_id'] model_parameter = data['model_parameter'] y_col = data['y_col'] # --START--Checking retrived data experiment = ExperimentModel(experiment_name, experiment_description, datasource_id, model_id, y_col, project_id, user_id) if experiment.find_by_name(user_id, experiment_name): return { 'message': ERROR_DUPLICATE_NAME.format(experiment_name) }, 500 try: result = DatasourceModel.find_one_by_id(user_id, datasource_id) datasource_data = { 'datasource_name': result.datasource_name, 'datasource_description': result.datasource_description, 'user_schema_name': result.user_schema_name, 'user_table_name': result.user_table_name, 'user_id': str(result.created_at) } except Exception as e: return { 'message': ERROR_CANNOT_FIND_DATASOURCE_ID.format(datasource_id) }, 500 try: result = ModelModel.find_first_by_id(model_id) model_name = result.model_name except Exception as e: return { 'message': ERROR_CANNOT_FIND_MODEL_ID.format(model_id) }, 500 # --END--Checking retrived data try: dataframe = DatasourceModel(**datasource_data).get_datasource() except Exception as e: return { 'message': ERROR_CANNOT_GET_DATASET.format( datasource_data['user_table_name']) }, 500 try: columns_filter_id = ProjectModel.find_one_by_id( project_id, user_id).columns_filter_id except Exception as e: return { 'message': ERROR_CANNOT_GET_COLUMNS_FILTER_ID.format(project_id) }, 500 try: columns_filter = ProjectUnstructureModel.find_by_object_id( ObjectId(columns_filter_id))['columns'] except Exception as e: return { 'message': ERROR_CANNOT_GET_COLUMNS_FILTER.format(project_id) }, 500 try: training = Training(experiment_name, dataframe, model_name, model_parameter, columns_filter, y_col, user_id) training.train_test() training.create_and_fit_model() training.save_model() training.load_model() y_pred = training.predict() cal_score = training.cal_score() except Exception as e: print(e) return {'message': ERROR_CANNOT_TRAIN_MODEL_WITH_DATA}, 500 try: mongo = ExperimentUnstructureModel(cal_score, model_parameter) cal_score_id = str(mongo.save_cal_score_to_db()) model_parameter_id = str(mongo.save_model_parameter_to_db()) except Exception as e: return { 'message': ERROR_CANNOT_INSRET_MONGO.format(experiment_name) }, 500 try: experiment.save_to_db() except Exception as e: return {'message': ERROR_CANNOT_INSERT_DB}, 500 try: result = ExperimentModel.find_by_name(user_id, experiment_name) if result: result.save_cal_score_to_db(cal_score_id) result.save_model_parameter_to_db(model_parameter_id) except Exception as e: return {'message': ERROR_CANNOT_INSRET_SCORE.format(e)}, 500 return { 'message': '{} have already trained'.format(experiment_name) }, 200
def put(self, experiment_id): user_id = get_jwt_identity() experiment = ExperimentModel.find_by_id(experiment_id) try: result = DatasourceModel.find_one_by_id(user_id, experiment.datasource_id) datasource_data = { 'datasource_name': result.datasource_name, 'datasource_description': result.datasource_description, 'user_schema_name': result.user_schema_name, 'user_table_name': result.user_table_name, 'user_id': str(result.created_at) } except Exception as e: return { 'message': ERROR_CANNOT_FIND_DATASOURCE_ID.format( experiment.datasource_id) }, 500 try: result = ModelModel.find_first_by_id(experiment.model_id) model_name = result.model_name except Exception as e: return { 'message': ERROR_CANNOT_FIND_MODEL_ID.format(experiment.model_id) }, 500 try: dataframe = DatasourceModel(**datasource_data).get_datasource() except Exception as e: return { 'message': ERROR_CANNOT_GET_DATASET.format( datasource_data['user_table_name']) }, 500 try: columns_filter_id = ProjectModel.find_one_by_id( experiment.project_id, user_id).columns_filter_id except Exception as e: return { 'message': ERROR_CANNOT_GET_COLUMNS_FILTER_ID.format( experiment.project_id) }, 500 try: columns_filter = ProjectUnstructureModel.find_by_object_id( ObjectId(columns_filter_id))['columns'] except Exception as e: return { 'message': ERROR_CANNOT_GET_COLUMNS_FILTER.format(project_id) }, 500 try: model_parameter = ExperimentUnstructureModel.find_model_parameter_by_object_id( ObjectId(experiment.model_parameter_id))['model_parameter'] except Exception as e: return { 'message': ERROR_CANNOT_GET_MODEL_PARAMETER.format( experiment.model_parameter_id) }, 500 training = Training(experiment.experiment_name, dataframe, model_name, model_parameter, columns_filter, experiment.y_col) training.train_test() training.create_and_fit_model() training.save_model() training.load_model() y_pred = training.predict() cal_score = training.cal_score() try: mongo = ExperimentUnstructureModel(cal_score, model_parameter) cal_score_id = str(mongo.save_cal_score_to_db()) except Exception as e: return { 'message': ERROR_CANNOT_INSRET_MONGO.format(experiment.experiment_name) }, 500 try: experiment.cal_score_id = cal_score_id experiment.save_to_db() except Exception as e: return {'message': ERROR_CANNOT_INSERT_DB}, 500 return {'message': SUCCESS_MESSAGE.format(experiment_id)}, 200