.. _program_listing_file_lib_database.cpp: Program Listing for File database.cpp ===================================== |exhale_lsh| :ref:`Return to documentation for file ` (``lib/database.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "AnalysisGraph.hpp" #include using namespace std; using namespace delphi::utils; using json = nlohmann::json; sqlite3* AnalysisGraph::open_delphi_db(int mode) { char* pPath; pPath = getenv ("DELPHI_DB"); if (pPath == NULL) { cout << "\n\nERROR: DELPHI_DB environment variable containing the path to delphi.db is not set!\n\n"; exit(1); } sqlite3* db = nullptr; if (sqlite3_open_v2(getenv("DELPHI_DB"), &db, mode, NULL) != SQLITE_OK) { cout << "\n\nERROR: delphi.db does not exist at " << pPath << endl; cout << sqlite3_errmsg(db) << endl; exit(1); } return db; } void AnalysisGraph::write_model_to_db(string model_id) { if (!model_id.empty()) { sqlite3* db = this->open_delphi_db(SQLITE_OPEN_READWRITE); if (db == nullptr) { cout << "\n\nERROR: opening delphi.db" << endl; exit(1); } char* zErrMsg = 0; string query = "replace into delphimodel values ('" + model_id + "', '" + this->serialize_to_json_string(false) + "');"; int rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg); if (rc != SQLITE_OK) { cout << "Could not write\n"; cout << zErrMsg << endl; } sqlite3_close(db); db = nullptr; } } AdjectiveResponseMap AnalysisGraph::construct_adjective_response_map( mt19937 gen, uniform_real_distribution& uni_dist, normal_distribution& norm_dist, size_t n_kernels ) { sqlite3* db = this->open_delphi_db(SQLITE_OPEN_READONLY); if (db == nullptr) { cout << "\n\nERROR: opening delphi.db" << endl; exit(1); } sqlite3_stmt* stmt = nullptr; const char* query = "select * from gradableAdjectiveData"; int rc = sqlite3_prepare_v2(db, query, -1, &stmt, NULL); if (rc != SQLITE_OK) { cout << "\n\nERROR: Could not execute query \"" << query << "\" on delphi.db" << endl; cout << sqlite3_errmsg(db) << endl; exit(1); } AdjectiveResponseMap adjective_response_map; while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) { string adjective = string(reinterpret_cast(sqlite3_column_text(stmt, 2))); double response = sqlite3_column_double(stmt, 6); if (!in(adjective_response_map, adjective)) { adjective_response_map[adjective] = {response}; } else { adjective_response_map[adjective].push_back(response); } } for (auto& [k, v] : adjective_response_map) { v = KDE(v).resample(n_kernels, gen, uni_dist, norm_dist); } sqlite3_finalize(stmt); sqlite3_close(db); stmt = nullptr; db = nullptr; return adjective_response_map; }