// // Copyright (C) 2024 Novartis Biomedical Research and other RDKit contributors // // @@ All Rights Reserved @@ // This file is part of the RDKit. // The contents are covered by the terms of the BSD license // which is included in the file license.txt, found at the root // of the RDKit source tree. // #define USE_BETTER_ENUMS #include "MolFragmenterJSONParser.h" #include #include #include #include namespace RDKit { void parseMolzipParametersJSON(MolzipParams ¶ms, const char *details_json) { if (!details_json || !strlen(details_json)) { return; } boost::property_tree::ptree pt; std::istringstream ss; ss.str(details_json); boost::property_tree::read_json(ss, pt); std::string label; label = pt.get("Label", label); if (MolzipLabel::_is_valid(label.c_str())) { params.label = MolzipLabel::_from_string(label.c_str()); } auto atomSymbolsIt = pt.find("AtomSymbols"); if (atomSymbolsIt != pt.not_found()) { const auto &jsonVect = atomSymbolsIt->second; params.atomSymbols.resize(jsonVect.size()); std::transform( jsonVect.begin(), jsonVect.end(), params.atomSymbols.begin(), [](const auto &atomSymbolNode) { return atomSymbolNode.second.template get_value(); }); } params.atomProperty = pt.get("AtomProperty", params.atomProperty); params.enforceValenceRules = pt.get("EnforceValenceRules", params.enforceValenceRules); params.generateCoordinates = pt.get("GenerateCoordinates", params.generateCoordinates); params.alignCoordinates = pt.get("AlignCoordinates", params.alignCoordinates); } } // end namespace RDKit