diff --git a/External/ChemDraw/chemdraw.cpp b/External/ChemDraw/chemdraw.cpp index b82d908b5..7ca496a50 100644 --- a/External/ChemDraw/chemdraw.cpp +++ b/External/ChemDraw/chemdraw.cpp @@ -292,8 +292,15 @@ std::unique_ptr streamToCDXDocument(std::istream &inStream, } else { CDXistream input(inStream); const bool doThrow = true; - std::unique_ptr doc(CDXReadDocFromStorage(input, doThrow)); - return doc; + // if we aren't opened in binary mode on windows, we are going to have a bad time... + try { + std::unique_ptr doc(CDXReadDocFromStorage(input, doThrow)); + return doc; + } catch (const std::exception &ex) { + throw FileParseException( + std::string(ex.what()) + + "\nPlease ensure for CDX data streams, the stream is in binary mode."); + } } } @@ -375,15 +382,22 @@ std::vector> MolsFromChemDrawBlock( std::vector> MolsFromChemDrawFile( const std::string &filename, const ChemDrawParserParams ¶ms) { - CDXMLParser parser; + ChemDrawParserParams realparams{params}; + std::vector> mols; - std::fstream chemdrawfile(filename); // FIX ME CHECK CDX versus CDXML + std::fstream chemdrawfile(filename, std::ios::in | std::ios::binary); // Always open in Binary mode + if (!chemdrawfile) { throw BadFileException(filename + " does not exist"); return mols; } - auto chemdrawmols = molsFromCDXMLDataStream(chemdrawfile, params); + + if (params.format == CDXFormat::AUTO && sniff_format(chemdrawfile) == CDXFormat::CDX) { // need to reopen in binary mode + realparams.format = CDXFormat::CDX; + } + + auto chemdrawmols = molsFromCDXMLDataStream(chemdrawfile, realparams); mols.reserve(chemdrawmols.size()); for (auto &mol : chemdrawmols) { diff --git a/External/ChemDraw/test.cpp b/External/ChemDraw/test.cpp index 5fadb985b..6e5549f8b 100644 --- a/External/ChemDraw/test.cpp +++ b/External/ChemDraw/test.cpp @@ -1412,3 +1412,51 @@ TEST_CASE("Geometry") { REQUIRE("C1[C@H]2C[C@@H]12" == MolToSmiles(*mols[0])); } } + +TEST_CASE("Test Reading Wrong File Format") { + std::string path = std::string(getenv("RDBASE")) + "/Code/GraphMol/test_data/CDXML/"; + SECTION("CDX as CDXML") { + auto fname = path + "ring-stereo1.cdx"; + ChemDrawParserParams params; + params.format = CDXFormat::CDXML; + bool caught = false; + try { + auto mols = MolsFromChemDrawFile(fname, params); + } catch (FileParseException &ex) { + caught = true; + } + REQUIRE(caught); + } + } + +TEST_CASE("github8761") { + std::string path = + std::string(getenv("RDBASE")) + "/External/ChemDraw/test_data/"; + SECTION("US12404367-20250902-C00017") { + auto fname = path + "US12404367-20250902-C00017.CDX"; + auto mols = MolsFromChemDrawFile(fname); + REQUIRE(mols.size()); + + fname = path + "US12404367-20250902-C00025.CDX"; + mols = MolsFromChemDrawFile(fname); + REQUIRE(mols.size()); + } + + SECTION("Failing Patents") { + std::filesystem::path patents(path + "patents"); + for (auto &entry : std::filesystem::directory_iterator(patents)) { + ChemDrawParserParams params; + params.sanitize = false; + auto mols = MolsFromChemDrawFile(entry.path().generic_string(), params); + // we just don't want a crash + + std:: + string block; + std::fstream chemdrawfile(entry.path(), std::ios::in | std::ios::binary); + std::stringstream buffer; + buffer << chemdrawfile.rdbuf(); + mols = MolsFromChemDrawBlock(buffer.str(), params); + // we just don't want a crash + } + } +} diff --git a/External/ChemDraw/test_data/US12404367-20250902-C00017.CDX b/External/ChemDraw/test_data/US12404367-20250902-C00017.CDX new file mode 100755 index 000000000..a1488a393 Binary files /dev/null and b/External/ChemDraw/test_data/US12404367-20250902-C00017.CDX differ diff --git a/External/ChemDraw/test_data/US12404367-20250902-C00025.CDX b/External/ChemDraw/test_data/US12404367-20250902-C00025.CDX new file mode 100755 index 000000000..8aff2c2e9 Binary files /dev/null and b/External/ChemDraw/test_data/US12404367-20250902-C00025.CDX differ diff --git a/External/ChemDraw/test_data/patents/US06534627-20030318-C00058.CDX b/External/ChemDraw/test_data/patents/US06534627-20030318-C00058.CDX new file mode 100644 index 000000000..adeef0c65 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US06534627-20030318-C00058.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08034513-20111011-C00002.CDX b/External/ChemDraw/test_data/patents/US08034513-20111011-C00002.CDX new file mode 100644 index 000000000..4945c5e9d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08034513-20111011-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08173765-20120508-C00041.CDX b/External/ChemDraw/test_data/patents/US08173765-20120508-C00041.CDX new file mode 100644 index 000000000..47f89b806 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08173765-20120508-C00041.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08262949-20120911-C00020.CDX b/External/ChemDraw/test_data/patents/US08262949-20120911-C00020.CDX new file mode 100644 index 000000000..47fc70098 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08262949-20120911-C00020.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08262949-20120911-C00028.CDX b/External/ChemDraw/test_data/patents/US08262949-20120911-C00028.CDX new file mode 100644 index 000000000..a5117d752 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08262949-20120911-C00028.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08278238-20121002-C00034.CDX b/External/ChemDraw/test_data/patents/US08278238-20121002-C00034.CDX new file mode 100644 index 000000000..81194cb96 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08278238-20121002-C00034.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08465972-20130618-C00006.CDX b/External/ChemDraw/test_data/patents/US08465972-20130618-C00006.CDX new file mode 100644 index 000000000..9f0244268 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08465972-20130618-C00006.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08497331-20130730-C00023.CDX b/External/ChemDraw/test_data/patents/US08497331-20130730-C00023.CDX new file mode 100644 index 000000000..257207de0 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08497331-20130730-C00023.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08497331-20130730-C00031.CDX b/External/ChemDraw/test_data/patents/US08497331-20130730-C00031.CDX new file mode 100644 index 000000000..66f74373e Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08497331-20130730-C00031.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08497331-20130730-C00032.CDX b/External/ChemDraw/test_data/patents/US08497331-20130730-C00032.CDX new file mode 100644 index 000000000..0efb672b8 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08497331-20130730-C00032.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08580402-20131112-C00091.CDX b/External/ChemDraw/test_data/patents/US08580402-20131112-C00091.CDX new file mode 100644 index 000000000..bab5ac866 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08580402-20131112-C00091.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08580402-20131112-C00092.CDX b/External/ChemDraw/test_data/patents/US08580402-20131112-C00092.CDX new file mode 100644 index 000000000..573758c1c Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08580402-20131112-C00092.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08703722-20140422-C00001.CDX b/External/ChemDraw/test_data/patents/US08703722-20140422-C00001.CDX new file mode 100644 index 000000000..02b7d5051 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08703722-20140422-C00001.CDX differ diff --git a/External/ChemDraw/test_data/patents/US08981023-20150317-C00024.CDX b/External/ChemDraw/test_data/patents/US08981023-20150317-C00024.CDX new file mode 100644 index 000000000..15788a9f6 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US08981023-20150317-C00024.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09090705-20150728-C00001.CDX b/External/ChemDraw/test_data/patents/US09090705-20150728-C00001.CDX new file mode 100644 index 000000000..a46a104aa Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09090705-20150728-C00001.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09090705-20150728-C00002.CDX b/External/ChemDraw/test_data/patents/US09090705-20150728-C00002.CDX new file mode 100644 index 000000000..f574b575d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09090705-20150728-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09090705-20150728-C00003.CDX b/External/ChemDraw/test_data/patents/US09090705-20150728-C00003.CDX new file mode 100644 index 000000000..f1bb20b4a Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09090705-20150728-C00003.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09176128-20151103-C00053.CDX b/External/ChemDraw/test_data/patents/US09176128-20151103-C00053.CDX new file mode 100644 index 000000000..563717c83 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09176128-20151103-C00053.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09176128-20151103-C00054.CDX b/External/ChemDraw/test_data/patents/US09176128-20151103-C00054.CDX new file mode 100644 index 000000000..09b3d08d1 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09176128-20151103-C00054.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09293712-20160322-C00153.CDX b/External/ChemDraw/test_data/patents/US09293712-20160322-C00153.CDX new file mode 100644 index 000000000..2ed805e00 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09293712-20160322-C00153.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09586939-20170307-C00095.CDX b/External/ChemDraw/test_data/patents/US09586939-20170307-C00095.CDX new file mode 100644 index 000000000..1a2b85867 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09586939-20170307-C00095.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09943606-20180417-C00004.CDX b/External/ChemDraw/test_data/patents/US09943606-20180417-C00004.CDX new file mode 100644 index 000000000..8cad9dd72 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09943606-20180417-C00004.CDX differ diff --git a/External/ChemDraw/test_data/patents/US09994597-20180612-C00015.CDX b/External/ChemDraw/test_data/patents/US09994597-20180612-C00015.CDX new file mode 100644 index 000000000..bb7baa5f7 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US09994597-20180612-C00015.CDX differ diff --git a/External/ChemDraw/test_data/patents/US10160771-20181225-C00012.CDX b/External/ChemDraw/test_data/patents/US10160771-20181225-C00012.CDX new file mode 100644 index 000000000..a479dff11 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US10160771-20181225-C00012.CDX differ diff --git a/External/ChemDraw/test_data/patents/US10265425-20190423-C00021.CDX b/External/ChemDraw/test_data/patents/US10265425-20190423-C00021.CDX new file mode 100644 index 000000000..6b2fdd965 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US10265425-20190423-C00021.CDX differ diff --git a/External/ChemDraw/test_data/patents/US10329212-20190625-C00010.CDX b/External/ChemDraw/test_data/patents/US10329212-20190625-C00010.CDX new file mode 100644 index 000000000..3c9bb251c Binary files /dev/null and b/External/ChemDraw/test_data/patents/US10329212-20190625-C00010.CDX differ diff --git a/External/ChemDraw/test_data/patents/US10640524-20200505-C00001.CDX b/External/ChemDraw/test_data/patents/US10640524-20200505-C00001.CDX new file mode 100644 index 000000000..794f2910b Binary files /dev/null and b/External/ChemDraw/test_data/patents/US10640524-20200505-C00001.CDX differ diff --git a/External/ChemDraw/test_data/patents/US10640524-20200505-C00005.CDX b/External/ChemDraw/test_data/patents/US10640524-20200505-C00005.CDX new file mode 100644 index 000000000..d5ef86087 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US10640524-20200505-C00005.CDX differ diff --git a/External/ChemDraw/test_data/patents/US10824014-20201103-C00009.CDX b/External/ChemDraw/test_data/patents/US10824014-20201103-C00009.CDX new file mode 100644 index 000000000..df3fd1f1c Binary files /dev/null and b/External/ChemDraw/test_data/patents/US10824014-20201103-C00009.CDX differ diff --git a/External/ChemDraw/test_data/patents/US11149044-20211019-C00006.CDX b/External/ChemDraw/test_data/patents/US11149044-20211019-C00006.CDX new file mode 100644 index 000000000..c1acf2aa0 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US11149044-20211019-C00006.CDX differ diff --git a/External/ChemDraw/test_data/patents/US11707511-20230725-C00001.CDX b/External/ChemDraw/test_data/patents/US11707511-20230725-C00001.CDX new file mode 100644 index 000000000..db12e2d02 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US11707511-20230725-C00001.CDX differ diff --git a/External/ChemDraw/test_data/patents/US11707511-20230725-C00002.CDX b/External/ChemDraw/test_data/patents/US11707511-20230725-C00002.CDX new file mode 100644 index 000000000..53d615d16 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US11707511-20230725-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00013.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00013.CDX new file mode 100644 index 000000000..f450f2c26 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00013.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00015.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00015.CDX new file mode 100644 index 000000000..640c850be Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00015.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00018.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00018.CDX new file mode 100644 index 000000000..f30378dce Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00018.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00019.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00019.CDX new file mode 100644 index 000000000..ba49690c5 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00019.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00023.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00023.CDX new file mode 100644 index 000000000..b93e3c68e Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00023.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00024.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00024.CDX new file mode 100644 index 000000000..9eb41631d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00024.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00025.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00025.CDX new file mode 100644 index 000000000..3c4175966 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00025.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12128110-20241029-C00027.CDX b/External/ChemDraw/test_data/patents/US12128110-20241029-C00027.CDX new file mode 100644 index 000000000..068309d51 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12128110-20241029-C00027.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12404367-20250902-C00017.CDX b/External/ChemDraw/test_data/patents/US12404367-20250902-C00017.CDX new file mode 100644 index 000000000..a1488a393 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12404367-20250902-C00017.CDX differ diff --git a/External/ChemDraw/test_data/patents/US12404367-20250902-C00025.CDX b/External/ChemDraw/test_data/patents/US12404367-20250902-C00025.CDX new file mode 100644 index 000000000..8aff2c2e9 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US12404367-20250902-C00025.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20030032827A1-20030213-C00040.CDX b/External/ChemDraw/test_data/patents/US20030032827A1-20030213-C00040.CDX new file mode 100644 index 000000000..a3f7d0f6a Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20030032827A1-20030213-C00040.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00033.CDX b/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00033.CDX new file mode 100644 index 000000000..17793accc Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00033.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00035.CDX b/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00035.CDX new file mode 100644 index 000000000..17793accc Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00035.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00040.CDX b/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00040.CDX new file mode 100644 index 000000000..17793accc Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20030073027A1-20030417-C00040.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20050062906A1-20050324-C00002.CDX b/External/ChemDraw/test_data/patents/US20050062906A1-20050324-C00002.CDX new file mode 100644 index 000000000..a9904b892 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20050062906A1-20050324-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20060029544A1-20060209-C00020.CDX b/External/ChemDraw/test_data/patents/US20060029544A1-20060209-C00020.CDX new file mode 100644 index 000000000..dc632123a Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20060029544A1-20060209-C00020.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00103.CDX b/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00103.CDX new file mode 100644 index 000000000..70eb4c888 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00103.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00104.CDX b/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00104.CDX new file mode 100644 index 000000000..40680c06c Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00104.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00105.CDX b/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00105.CDX new file mode 100644 index 000000000..ea013195d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20060063898A1-20060323-C00105.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20060199101A1-20060907-C00013.CDX b/External/ChemDraw/test_data/patents/US20060199101A1-20060907-C00013.CDX new file mode 100644 index 000000000..523411967 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20060199101A1-20060907-C00013.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00023.CDX b/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00023.CDX new file mode 100644 index 000000000..257207de0 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00023.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00031.CDX b/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00031.CDX new file mode 100644 index 000000000..66f74373e Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00031.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00032.CDX b/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00032.CDX new file mode 100644 index 000000000..0efb672b8 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20100063229A1-20100311-C00032.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20100163813A1-20100701-C00020.CDX b/External/ChemDraw/test_data/patents/US20100163813A1-20100701-C00020.CDX new file mode 100644 index 000000000..47fc70098 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20100163813A1-20100701-C00020.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20100163813A1-20100701-C00028.CDX b/External/ChemDraw/test_data/patents/US20100163813A1-20100701-C00028.CDX new file mode 100644 index 000000000..a5117d752 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20100163813A1-20100701-C00028.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110117476A1-20110519-C00002.CDX b/External/ChemDraw/test_data/patents/US20110117476A1-20110519-C00002.CDX new file mode 100644 index 000000000..4945c5e9d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110117476A1-20110519-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00001.CDX b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00001.CDX new file mode 100644 index 000000000..a46a104aa Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00001.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00002.CDX b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00002.CDX new file mode 100644 index 000000000..f574b575d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00003.CDX b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00003.CDX new file mode 100644 index 000000000..f1bb20b4a Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00003.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00004.CDX b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00004.CDX new file mode 100644 index 000000000..0c3a55f33 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110159538A1-20110630-C00004.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110230440A1-20110922-C00792.CDX b/External/ChemDraw/test_data/patents/US20110230440A1-20110922-C00792.CDX new file mode 100644 index 000000000..9835c13d6 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110230440A1-20110922-C00792.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110230440A1-20110922-C00793.CDX b/External/ChemDraw/test_data/patents/US20110230440A1-20110922-C00793.CDX new file mode 100644 index 000000000..68ac0e819 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110230440A1-20110922-C00793.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20110306574A1-20111215-C00001.CDX b/External/ChemDraw/test_data/patents/US20110306574A1-20111215-C00001.CDX new file mode 100644 index 000000000..02b7d5051 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20110306574A1-20111215-C00001.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20120012829A1-20120119-C00091.CDX b/External/ChemDraw/test_data/patents/US20120012829A1-20120119-C00091.CDX new file mode 100644 index 000000000..bab5ac866 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20120012829A1-20120119-C00091.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20120012829A1-20120119-C00092.CDX b/External/ChemDraw/test_data/patents/US20120012829A1-20120119-C00092.CDX new file mode 100644 index 000000000..573758c1c Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20120012829A1-20120119-C00092.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20120035320A1-20120209-C00029.CDX b/External/ChemDraw/test_data/patents/US20120035320A1-20120209-C00029.CDX new file mode 100644 index 000000000..d40406f76 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20120035320A1-20120209-C00029.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20120288939A1-20121115-C00006.CDX b/External/ChemDraw/test_data/patents/US20120288939A1-20121115-C00006.CDX new file mode 100644 index 000000000..9f0244268 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20120288939A1-20121115-C00006.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20140161801A1-20140612-C00095.CDX b/External/ChemDraw/test_data/patents/US20140161801A1-20140612-C00095.CDX new file mode 100644 index 000000000..1a2b85867 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20140161801A1-20140612-C00095.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20140235834A1-20140821-C00053.CDX b/External/ChemDraw/test_data/patents/US20140235834A1-20140821-C00053.CDX new file mode 100644 index 000000000..563717c83 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20140235834A1-20140821-C00053.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20140235834A1-20140821-C00054.CDX b/External/ChemDraw/test_data/patents/US20140235834A1-20140821-C00054.CDX new file mode 100644 index 000000000..09b3d08d1 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20140235834A1-20140821-C00054.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20140238939A1-20140828-C00021.CDX b/External/ChemDraw/test_data/patents/US20140238939A1-20140828-C00021.CDX new file mode 100644 index 000000000..4df8bfdf0 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20140238939A1-20140828-C00021.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20150102321A1-20150416-C00153.CDX b/External/ChemDraw/test_data/patents/US20150102321A1-20150416-C00153.CDX new file mode 100644 index 000000000..2ed805e00 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20150102321A1-20150416-C00153.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20160375158A1-20161229-C00021.CDX b/External/ChemDraw/test_data/patents/US20160375158A1-20161229-C00021.CDX new file mode 100644 index 000000000..5b04907a9 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20160375158A1-20161229-C00021.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20170044190A1-20170216-C00015.CDX b/External/ChemDraw/test_data/patents/US20170044190A1-20170216-C00015.CDX new file mode 100644 index 000000000..bb7baa5f7 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20170044190A1-20170216-C00015.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20170253614A1-20170907-C00012.CDX b/External/ChemDraw/test_data/patents/US20170253614A1-20170907-C00012.CDX new file mode 100644 index 000000000..a479dff11 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20170253614A1-20170907-C00012.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20170342001A1-20171130-C00010.CDX b/External/ChemDraw/test_data/patents/US20170342001A1-20171130-C00010.CDX new file mode 100644 index 000000000..3c9bb251c Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20170342001A1-20171130-C00010.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20180008547A1-20180111-C00003.CDX b/External/ChemDraw/test_data/patents/US20180008547A1-20180111-C00003.CDX new file mode 100644 index 000000000..b437abfa0 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20180008547A1-20180111-C00003.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20180170953A1-20180621-C00005.CDX b/External/ChemDraw/test_data/patents/US20180170953A1-20180621-C00005.CDX new file mode 100644 index 000000000..d5ef86087 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20180170953A1-20180621-C00005.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20190278121A1-20190912-C00009.CDX b/External/ChemDraw/test_data/patents/US20190278121A1-20190912-C00009.CDX new file mode 100644 index 000000000..df3fd1f1c Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20190278121A1-20190912-C00009.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20200131193A1-20200430-C00008.CDX b/External/ChemDraw/test_data/patents/US20200131193A1-20200430-C00008.CDX new file mode 100644 index 000000000..038d748f8 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20200131193A1-20200430-C00008.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20200222518A1-20200716-C00001.CDX b/External/ChemDraw/test_data/patents/US20200222518A1-20200716-C00001.CDX new file mode 100644 index 000000000..db12e2d02 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20200222518A1-20200716-C00001.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20200222518A1-20200716-C00002.CDX b/External/ChemDraw/test_data/patents/US20200222518A1-20200716-C00002.CDX new file mode 100644 index 000000000..53d615d16 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20200222518A1-20200716-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00013.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00013.CDX new file mode 100644 index 000000000..f450f2c26 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00013.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00015.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00015.CDX new file mode 100644 index 000000000..640c850be Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00015.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00018.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00018.CDX new file mode 100644 index 000000000..f30378dce Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00018.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00019.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00019.CDX new file mode 100644 index 000000000..ba49690c5 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00019.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00023.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00023.CDX new file mode 100644 index 000000000..b93e3c68e Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00023.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00024.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00024.CDX new file mode 100644 index 000000000..9eb41631d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00024.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00025.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00025.CDX new file mode 100644 index 000000000..3c4175966 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00025.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00027.CDX b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00027.CDX new file mode 100644 index 000000000..068309d51 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20210128743A1-20210506-C00027.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20220227812A1-20220721-C00066.CDX b/External/ChemDraw/test_data/patents/US20220227812A1-20220721-C00066.CDX new file mode 100644 index 000000000..bc48a7430 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20220227812A1-20220721-C00066.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20220380533A1-20221201-C00017.CDX b/External/ChemDraw/test_data/patents/US20220380533A1-20221201-C00017.CDX new file mode 100644 index 000000000..a1488a393 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20220380533A1-20221201-C00017.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20220380533A1-20221201-C00025.CDX b/External/ChemDraw/test_data/patents/US20220380533A1-20221201-C00025.CDX new file mode 100644 index 000000000..8aff2c2e9 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20220380533A1-20221201-C00025.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20220395567A1-20221215-C00027.CDX b/External/ChemDraw/test_data/patents/US20220395567A1-20221215-C00027.CDX new file mode 100644 index 000000000..3db64f105 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20220395567A1-20221215-C00027.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20230192738A1-20230622-C00643.CDX b/External/ChemDraw/test_data/patents/US20230192738A1-20230622-C00643.CDX new file mode 100644 index 000000000..9f29f1560 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20230192738A1-20230622-C00643.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20230192738A1-20230622-C00660.CDX b/External/ChemDraw/test_data/patents/US20230192738A1-20230622-C00660.CDX new file mode 100644 index 000000000..29c6975ca Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20230192738A1-20230622-C00660.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20230218742A1-20230713-C00005.CDX b/External/ChemDraw/test_data/patents/US20230218742A1-20230713-C00005.CDX new file mode 100644 index 000000000..e5d04fbdd Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20230218742A1-20230713-C00005.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240092836A1-20240321-C00002.CDX b/External/ChemDraw/test_data/patents/US20240092836A1-20240321-C00002.CDX new file mode 100644 index 000000000..3125c20c1 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240092836A1-20240321-C00002.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240092836A1-20240321-C00004.CDX b/External/ChemDraw/test_data/patents/US20240092836A1-20240321-C00004.CDX new file mode 100644 index 000000000..827d8e98a Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240092836A1-20240321-C00004.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00013.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00013.CDX new file mode 100644 index 000000000..f450f2c26 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00013.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00015.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00015.CDX new file mode 100644 index 000000000..640c850be Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00015.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00018.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00018.CDX new file mode 100644 index 000000000..f30378dce Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00018.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00019.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00019.CDX new file mode 100644 index 000000000..ba49690c5 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00019.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00023.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00023.CDX new file mode 100644 index 000000000..b93e3c68e Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00023.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00024.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00024.CDX new file mode 100644 index 000000000..9eb41631d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00024.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00025.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00025.CDX new file mode 100644 index 000000000..3c4175966 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00025.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00027.CDX b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00027.CDX new file mode 100644 index 000000000..068309d51 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20240350656A1-20241024-C00027.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00013.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00013.CDX new file mode 100644 index 000000000..f450f2c26 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00013.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00015.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00015.CDX new file mode 100644 index 000000000..640c850be Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00015.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00018.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00018.CDX new file mode 100644 index 000000000..f30378dce Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00018.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00019.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00019.CDX new file mode 100644 index 000000000..ba49690c5 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00019.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00023.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00023.CDX new file mode 100644 index 000000000..b93e3c68e Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00023.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00024.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00024.CDX new file mode 100644 index 000000000..9eb41631d Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00024.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00025.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00025.CDX new file mode 100644 index 000000000..3c4175966 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00025.CDX differ diff --git a/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00027.CDX b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00027.CDX new file mode 100644 index 000000000..068309d51 Binary files /dev/null and b/External/ChemDraw/test_data/patents/US20250161479A1-20250522-C00027.CDX differ diff --git a/External/ChemDraw/utils.cpp b/External/ChemDraw/utils.cpp index f155945ad..da4612642 100644 --- a/External/ChemDraw/utils.cpp +++ b/External/ChemDraw/utils.cpp @@ -109,12 +109,26 @@ struct FragmentReplacement { // Find the connecting atoms and and do the replacement for (auto bond : mol.atomBonds(replacement_atom)) { // find the position of the attachement bonds in the bond ordering - auto bond_id = bond->getProp(CDX_BOND_ID); + unsigned bond_id = 0; + if (!bond->getPropIfPresent(CDX_BOND_ID, bond_id)) { + BOOST_LOG(rdWarningLog) + << "bond missing internal CDX BOND id, can't attach fragment at bond:" + << std::endl; + return false; + } auto it = std::find(bond_ordering.begin(), bond_ordering.end(), bond_id); if (it == bond_ordering.end()) return false; - + auto pos = std::distance(bond_ordering.begin(), it); + + if(pos < 0 || (size_t)pos >= fragment_atoms.size()) { + BOOST_LOG(rdWarningLog) << "bond ordering and number of atoms in fragment mismatch, can't attach fragment at bond:" + << bond_id + << std::endl; + return false; + } + auto &xatom = fragment_atoms[pos]; for (auto &xbond : mol.atomBonds(xatom)) {