Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 35 additions & 10 deletions api/wasm/indigo-ketcher/indigo-ketcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ namespace indigo
if (objectId >= 0)
return IndigoKetcherObject(objectId, IndigoKetcherObject::EKETMolecule);
}

if (use_document)
{
print_js("try as document");
Expand Down Expand Up @@ -514,6 +515,16 @@ namespace indigo
}
}
exceptionMessages.emplace_back(indigoGetLastError());

// Let's try a simple molecule
print_js("try as molecule");
objectId = indigoLoadMoleculeFromBuffer(data.c_str(), data.size());
if (objectId >= 0)
{
return IndigoKetcherObject(objectId, IndigoKetcherObject::EKETMolecule);
}
exceptionMessages.emplace_back(indigoGetLastError());

// Let's try query molecule
print_js("try as query molecule");
objectId = indigoLoadQueryMoleculeFromBuffer(data.c_str(), data.size());
Expand All @@ -530,15 +541,6 @@ namespace indigo
return IndigoKetcherObject(objectId, IndigoKetcherObject::EKETReactionQuery);
}

// Let's try a simple molecule
print_js("try as molecule");
objectId = indigoLoadMoleculeFromBuffer(data.c_str(), data.size());
if (objectId >= 0)
{
return IndigoKetcherObject(objectId, IndigoKetcherObject::EKETMolecule);
}
exceptionMessages.emplace_back(indigoGetLastError());

// Let's try reaction
print_js("try as reaction");
objectId = indigoLoadReactionFromBuffer(data.c_str(), data.size());
Expand Down Expand Up @@ -707,6 +709,27 @@ namespace indigo
return _checkResultString(indigoCheckObj(iko.id(), properties.c_str()));
}

std::string pka(const std::string& data, const std::map<std::string, std::string>& options)
{
const IndigoSession session;
const auto iko = loadMoleculeOrReaction(data.c_str(), options);
return std::to_string(indigoPka(iko.id()));
}

std::string logp(const std::string& data, const std::map<std::string, std::string>& options)
{
const IndigoSession session;
const auto iko = loadMoleculeOrReaction(data.c_str(), options);
return std::to_string(indigoLogP(iko.id()));
}

std::string molarRefractivity(const std::string& data, const std::map<std::string, std::string>& options)
{
const IndigoSession session;
const auto iko = loadMoleculeOrReaction(data.c_str(), options);
return std::to_string(indigoMolarRefractivity(iko.id()));
}

std::string calculateCip(const std::string& data, const std::string& outputFormat, const std::map<std::string, std::string>& options)
{
const IndigoSession session;
Expand Down Expand Up @@ -1149,7 +1172,9 @@ namespace indigo
emscripten::function("calculateMacroProperties", &calculateMacroProperties);
emscripten::function("render", &render);
emscripten::function("reactionComponents", &reactionComponents);

emscripten::function("pka", &pka);
emscripten::function("logp", &logp);
emscripten::function("molarRefractivity", &molarRefractivity);
emscripten::register_vector<int>("VectorInt");
emscripten::register_map<std::string, std::string>("MapStringString");
};
Expand Down
30 changes: 30 additions & 0 deletions api/wasm/indigo-ketcher/test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1263,6 +1263,36 @@ M END
});
}

{
test("calculate pka", "PKa", () => {
let options = new indigo.MapStringString();
let pka = indigo.pka('C([C@@H](C(=O)O)N)S', options);
assert.equal(pka.toString(), '4.006667');
options.delete();
assert(true);
});
}

{
test("calculate LogP", "LogP", () => {
let options = new indigo.MapStringString();
let pka = indigo.logp('C([C@@H](C(=O)O)N)S', options);
assert.equal(pka.toString(), '-0.671900');
options.delete();
assert(true);
});
}

{
test("molar refractivity", "molarRefractivity", () => {
let options = new indigo.MapStringString();
let pka = indigo.molarRefractivity('C([C@@H](C(=O)O)N)S', options);
assert.equal(pka.toString(), '29.464200');
options.delete();
assert(true);
});
}

// Run tests
run();
});
Loading