Hirotomo MoriwakipersName, Yu-Shi TianpersName, Norihito KawashitapersName, Tatsuya TakagipersName (2018date). “Mordred: a molecular descriptor calculator.” Journal of Cheminformaticstitle·j.
Object of study — Mordredterm's descriptorterm coverage, software architecture, correctness controls, algorithms, interfaces, and performance
Research question — how to provide a fast, maintainable, permissively licensed molecular-descriptor calculatorterm with broad coverage and reliable results
Contribution — an open-source cross-platform descriptorterm calculatorterm with automatic preprocessing, reference tests, parallel execution, and more than 1,800 descriptorsterm
phenomenon · claim-type · cross-domain-transfer · mechanism · claim-relation · replication-status · limitation — grounded in the full text| phenomenon | software, correctness, licensing, and runtime constraints in molecular-descriptor calculation — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | |
| claim-type | method — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | |
| method — evidence | — “We used libPaDEL-Descriptor, which is included in the source code of PaDEL-Descriptor, to evaluate the performance of the PaDEL-Descriptor because it excludes the extra descriptor calculation time, such as the file IO and molecular preprocessing. In addition, it evaluates the exact calculation time. First, each molecular descriptor was calculated three times to perform a just-in-time compilation. Then, each molecular descriptor was calculated ten times to evaluate the performance. Garbage collection was performed before each molecular-descriptor calculation. In the Mordred benchmark test, calculations were carried out ten times after disabling garbage collection. The CLI benchmark test was performed to estimate real-world and multi-processor performance. We used the same machine. Up to 100 atoms compounds were used from the same dataset to avoid timeouts in PaDEL-Descriptor. We performed a benchmark test using one to six (the number of physical cores of an Intel Core i7-5930 K) threads (in PaDEL-Descriptor) or processes (in Mordred). Each benchmark was repeated ten times” | |
| object of study — evidence | — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | |
| research question — evidence | — “Mordred was designed to be a software program that is easy to install and use, supports abundant molecular descriptors, has a high calculation speed, and includes automated tests. Molecular-descriptor calculation programs usually have many dependent software programs that must be manually installed. All direct dependent libraries in Mordred, except for RDKit and NumPy [ 27 ], are coded in pure Python (enum34, networkx, six, tqdm) to simplify the installation. RDKit and NumPy are widely used Python libraries and can be easily installed via the pre-compiled libraries distributed by the Anaconda cloud [ 28 ]. Therefore, users can install Mordred using a single command (see Code 1 below). Because Mordred can be employed as a web service or from a CLI, and with Python 2 and 3 libraries, users ranging from beginners to experts can employ it” | |
| contribution — evidence | — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | |
| mechanism | descriptor-specific preprocessing Mordred automatically adds or removes hydrogens, performs Kekulization, and detects aromaticity for each descriptor. — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | mechanisms[0] |
| mechanism | commit-level reference testing All descriptors are tested against published, consensus, or manually verified values at every commit and release. — “Most descriptor calculation software programs do not include automated tests to check descriptor values in a distribution package. In Mordred, all descriptors are automatically tested to verify whether Mordred can calculate precise results using the reference values of the molecular descriptors. The reference values were collected from published studies, consensual findings of multiple descriptor-calculation programs, and results of manual checks according to the calculation algorithms published. The variations among descriptor values calculated by Mordred and other software programs are confirmed in Additional files 1 and 2 . All tests are performed at each commit on the GitHub repository as well as when a new version is released. In addition, users can locally execute tests to check the installation success and calculate valid results on user platforms” | mechanisms[1] |
| mechanism | descriptor dependency management Calculator resolves Descriptor dependencies and caches intermediate results. — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | mechanisms[2] |
| mechanism | parallel descriptor mapping Calculator.map uses the standard multiprocessing module for multi-molecule calculations. — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | mechanisms[3] |
| mechanism | diagnostic missing values MissingValueBase preserves the exception that caused a descriptor to be unavailable. — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | mechanisms[4] |
| mechanism | descriptor arithmetic Unary and binary operators compose existing descriptors into product terms and other derived descriptors. — “The product term is often used to consider the interaction between features in a linear model. Mordred can easily calculate the product term using the “descriptor arithmetic” feature. Instances of descriptors can be calculated by employing a unary/binary operator with other descriptors” | mechanisms[5] |
| mechanism | articulation-point decomposition A sparse chemical graph is split at articulation points, searched by subgraph, and merged for DetourMatrix. — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | mechanisms[6] |
| mechanism | Chi depth-first search Depth-first search replaces time-consuming SMARTS pattern matching for higher-order Chi descriptors. — “The Chi descriptor is calculated by matching all Smiles Arbitrary Target Specification (SMARTS) patterns in CDK. This approach is time consuming and cannot be used to calculate the higher-order Chi descriptor. The depth-first search is used in Mordred to overcome these issues” | mechanisms[7] |
| mechanism | Framework specialization General molecular-framework enumeration work is removed when it is unnecessary for Framework. — “The Framework descriptor is calculated using the function to match the molecular framework in CDK. However, during this process, this function also performs extra calculations to solve more general cases, such as enumerating the atoms in a molecular framework. Those calculations are not necessary for the derivation of the Framework descriptor and they are removed in Mordred” | mechanisms[8] |
| mechanism | MolecularId memoization Repeated pure-function calls with identical arguments reuse cached results. — “The MolecularId descriptor calls the internal pure function with the same arguments many times in CDK. The returned values of these function calls are cached to avoid same calculations in Mordred” | mechanisms[9] |
| extends | existing molecular-descriptor calculation software — “In this paper, we propose Mordred, a newly developed molecular-descriptor calculation software program. The software can calculate more than 1800 descriptors at high speed, and it can be used from the CLI and web UI, as well as with Python 2 and 3 libraries. Mordred was released under the three-clause Berkeley Software Distribution (BSD) license, which allows both commercial and non-commercial use” | claim_relations[0] |
| builds-on | RDKit descriptor implementations — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | claim_relations[1] |
| extends | standard descriptor ranges — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | claim_relations[2] |
| sense | molecular descriptor as the numeric or experimental output of a procedure transforming encoded molecular information — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | senses[0] |
| sense | Mordred as a permissively licensed descriptor calculator spanning CLI, web, and Python interfaces — “In this paper, we propose Mordred, a newly developed molecular-descriptor calculation software program. The software can calculate more than 1800 descriptors at high speed, and it can be used from the CLI and web UI, as well as with Python 2 and 3 libraries. Mordred was released under the three-clause Berkeley Software Distribution (BSD) license, which allows both commercial and non-commercial use” | senses[1] |
| sense | automatic preprocessing as descriptor-specific hydrogen, Kekulization, and aromaticity preparation — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | senses[2] |
| sense | Descriptor as an algorithm-bearing single-value class with preset configurations — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | senses[3] |
| sense | Calculator as a dependency-managing, caching, error-handling, parallel execution class — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | senses[4] |
| sense | MissingValueBase as a missing-result value that retains the triggering exception — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | senses[5] |
| sense | descriptor arithmetic as unary or binary operator composition of descriptors — “The product term is often used to consider the interaction between features in a linear model. Mordred can easily calculate the product term using the “descriptor arithmetic” feature. Instances of descriptors can be calculated by employing a unary/binary operator with other descriptors” | senses[6] |
| sense | DetourMatrix acceleration as articulation-point graph partitioning plus depth-first subgraph search — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | senses[7] |
| sense | performance as per-molecule total and per-descriptor calculation time across molecule sizes — “The total calculation time per molecule is shown in Fig. 4 and the calculation time of each descriptor per molecule is shown in Fig. 5 . For the descriptor selection in Fig. 5 , the mean calculation time of Mordred and/or PaDEL-Descriptor was over 0.1 s. DetourMatrix, Framework, and MolecularId descriptor calculation using PaDEL-Descriptor timed out when calculating descriptions for 5, 40, and 8 compounds. Figure 5 shows that AcidBase, BCUT, BaryszMatrix, Chi, DetourMatrix, Estate, and Framework are dramatically faster than the same calculations in PaDEL-Descriptor. The benchmark of Chi, DetourMatrix, Framework, and MolecularId shows the effects of improving the algorithm. On the other hand, a notable algorithm improvement is not achieved in AcidBase, BCUT, BaryszMatrix, or Estate. A performance difference of functions used in these descriptors between CDK and RDKit is apparent. PaDEL-Descriptor is faster than Mordred for many descriptor calculations, even though they both use the same algorithm. This is because Java is faster than Python for many cases. However, these descriptors can be calculated in a very short time even if Python is used. Thus, the total calculation time of Mordred, shown in Fig. 4 , is much lower than that of PaDEL-Descriptor. Some descriptors, such as DetourMatrix, which result in a time-out in PaDEL-Descriptor can be calculated using Mordred. This improvement not only makes the calculation faster, but it also permits the calculation of descriptors of large molecules that cannot be calculated using other software owing to time complexity” | senses[8] |
| sense | software openness as non-copyleft licensing, source availability, and patchable GitHub development — “Mordred is superior to other software programs in several aspects. First, it is open-source software. Moreover, Mordred and all software used by it are licensed under the non-copyleft open-source license. This implies that it can be used in proprietary software. In addition, users can easily report a bug, request new features, and send patches on GitHub. Second, it is easy to use. Mordred can be installed using only one command, whereas other Python molecular-descriptor calculation libraries (e.g., cinfony, ChemoPy) have more dependencies that require manual installation. The CLI and web interface can also be launched using a single command. Third, it has high flexibility. Mordred can calculate uncommon-range descriptors without modifying the source code. Users can create new molecular descriptors, such as the product term, by easily using the descriptor arithmetic feature. Additionally, the Mordred library can be simply accessed by using the presets in the Descriptor class. Finally, it is fast. Mordred can calculate an entire molecular descriptor twice as fast as PaDEL-Descriptor. Furthermore, the time complexity for some molecular descriptors is reduced in Mordred. As a result, it can be used for calculating the descriptors for large molecules that cannot be calculated using other software” | senses[9] |
| note | existing molecular-descriptor calculation software — Mordred adds a high-speed, cross-interface, permissively licensed implementation. — “In this paper, we propose Mordred, a newly developed molecular-descriptor calculation software program. The software can calculate more than 1800 descriptors at high speed, and it can be used from the CLI and web UI, as well as with Python 2 and 3 libraries. Mordred was released under the three-clause Berkeley Software Distribution (BSD) license, which allows both commercial and non-commercial use” | claim_relations[0] |
| weight | existing molecular-descriptor calculation software — 0.95 — “In this paper, we propose Mordred, a newly developed molecular-descriptor calculation software program. The software can calculate more than 1800 descriptors at high speed, and it can be used from the CLI and web UI, as well as with Python 2 and 3 libraries. Mordred was released under the three-clause Berkeley Software Distribution (BSD) license, which allows both commercial and non-commercial use” | claim_relations[0] |
| note | RDKit descriptor implementations — Seven RDKit modules are included beside forty-two original implementations. — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | claim_relations[1] |
| weight | RDKit descriptor implementations — 0.95 — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | claim_relations[1] |
| note | standard descriptor ranges — Parameterized uncommon-range and product-term descriptors extend default presets. — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | claim_relations[2] |
| weight | standard descriptor ranges — 0.95 — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | claim_relations[2] |
| note | Mordred —is-a→ promising choice of molecular descriptor calculation software — The class statement is direct, but 'promising' makes the paper strength evaluative rather than definitional. — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concept_edges[0] |
| relation | Mordred —is-a→ promising choice of molecular descriptor calculation software — Mordred is presented as a promising choice of molecular descriptor calculation software. — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concept_edges[0] |
| weight | Mordred —is-a→ promising choice of molecular descriptor calculation software — 0.95 — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concept_edges[0] |
| note | molecular descriptors —operationalised-as→ logical and mathematical procedure — Exact formal definition. — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | concept_edges[1] |
| relation | molecular descriptors —operationalised-as→ logical and mathematical procedure — A molecular descriptor is defined as the result of a logical and mathematical procedure. — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | concept_edges[1] |
| note | Descriptor —part-of→ Mordred — Categorical composition statement. — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | concept_edges[2] |
| relation | Descriptor —part-of→ Mordred — Mordred consists of the Descriptor and Calculator classes. — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | concept_edges[2] |
| note | Calculator —part-of→ Mordred — Categorical composition statement. — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | concept_edges[3] |
| relation | Calculator —part-of→ Mordred — Mordred consists of the Descriptor and Calculator classes. — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | concept_edges[3] |
| note | Mordred —contrasted-with→ PaDEL-Descriptor — Direct measured benchmark comparison. — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | concept_edges[5] |
| relation | Mordred —contrasted-with→ PaDEL-Descriptor — Mordred is more than twofold faster than PaDEL-Descriptor in all CLI tests. — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | concept_edges[5] |
| weight | Mordred —contrasted-with→ PaDEL-Descriptor — 0.95 — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | concept_edges[5] |
| relation | Quantitative structure–property relationship → molecular descriptors — QSPR models frequently use molecular descriptors. — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | unhoused_relations[0] |
| weight | Quantitative structure–property relationship → molecular descriptors — 0.95 — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | unhoused_relations[0] |
| relation | Calculator class → parallel computing — The Calculator class enables parallel computing. — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | unhoused_relations[1] |
| weight | Calculator class → parallel computing — 0.95 — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | unhoused_relations[1] |
| relation | Descriptor → Calculator — Descriptor presets are registered and used in a Calculator instance. — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | unhoused_relations[2] |
| weight | Descriptor → Calculator — 0.95 — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | unhoused_relations[2] |
| relation | MissingValueBase → Exception — A MissingValueBase result contains the exception that explains the missing value. — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | unhoused_relations[3] |
| weight | MissingValueBase → Exception — 0.95 — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | unhoused_relations[3] |
| relation | DetourMatrix descriptor → articulation point — Articulation points enable graph partitioning for DetourMatrix calculation. — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | unhoused_relations[4] |
| weight | DetourMatrix descriptor → articulation point — 0.95 — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | unhoused_relations[4] |
| relation | MolecularId descriptor → same calculations — Caching repeated pure-function results reduces redundant calculation work. — “The MolecularId descriptor calls the internal pure function with the same arguments many times in CDK. The returned values of these function calls are cached to avoid same calculations in Mordred” | unhoused_relations[5] |
| weight | MolecularId descriptor → same calculations — 0.95 — “The MolecularId descriptor calls the internal pure function with the same arguments many times in CDK. The returned values of these function calls are cached to avoid same calculations in Mordred” | unhoused_relations[5] |
| no type for this | Quantitative structure–property relationship → molecular descriptors — QSPR models frequently use molecular descriptors. — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | unhoused_relations[0] |
| no type for this | Calculator class → parallel computing — The Calculator class enables parallel computing. — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | unhoused_relations[1] |
| no type for this | Descriptor → Calculator — Descriptor presets are registered and used in a Calculator instance. — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | unhoused_relations[2] |
| no type for this | MissingValueBase → Exception — A MissingValueBase result contains the exception that explains the missing value. — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | unhoused_relations[3] |
| no type for this | DetourMatrix descriptor → articulation point — Articulation points enable graph partitioning for DetourMatrix calculation. — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | unhoused_relations[4] |
| no type for this | MolecularId descriptor → same calculations — Caching repeated pure-function results reduces redundant calculation work. — “The MolecularId descriptor calls the internal pure function with the same arguments many times in CDK. The returned values of these function calls are cached to avoid same calculations in Mordred” | unhoused_relations[5] |
| limitation | Existing descriptor software can contain bugs, update slowly, or impose licensing constraints. — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | limitations[0] |
| limitation | Descriptor values depend on molecular preprocessing, which other software may not check correctly. — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | limitations[1] |
| limitation | Some descriptor values are inherently missing for molecules outside a descriptor's calculable domain. — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | limitations[2] |
| limitation | Unintended missing values can also signal software errors, incorrect values, or calculation timeouts. — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | limitations[3] |
| limitation | The longest-path problem underlying DetourMatrix is NP-hard and cannot generally be solved efficiently. — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | limitations[4] |
| limitation | The demonstration web server limits one upload to 200 molecules for safety. — “A configuration button on the top right provides the selection options for the following descriptor calculations. By clicking the “calculate” button, users can obtain the values and summaries of descriptors, as well as the calculation log. To maintain server safety, the maximum molecule number that can be uploaded at one time is limited to 200 in this demonstration server. However, this limitation is not set by default when the user constructs his/her own server” | limitations[5] |
| limitation | Some browsers on devices with legacy graphics drivers may not support the web page. — “The web interface can work with a multi-core processor. Submitted tasks are fairly processed. A demonstration server is available at http://mordred.phs.osaka-u.ac.jp . This demonstration page works well on most widely used web browsers with current versions, such as Safari version 10+, Google Chrome version 61+, Internet Explorer version 11+, Microsoft Edge version 40+, and Firefox version 55+. However, certain browsers on some devices with legacy graphics drivers may not support this page, in which case another browser should be considered” | limitations[6] |
| limitation | Potential defects may remain in Mordred or its dependent libraries. — “There are some potential defects in Mordred and/or its dependent libraries. We are receptive to feedback, questions, and bug reports via both email and GitHub” | limitations[7] |
finding · quantity · variable · definition · key-term — grounded in the full text| finding | Mordred calculates more than 1,800 two- and three-dimensional descriptors. — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | content_tags.findings[0] |
| finding | Mordred is at least twice as fast as PaDEL-Descriptor and handles molecules other software cannot. — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | content_tags.findings[1] |
| finding | Automatic descriptor-specific preprocessing is intended to ensure valid inputs. — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | content_tags.findings[2] |
| finding | Default coverage combines seven RDKit modules and forty-two original modules. — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | content_tags.findings[3] |
| finding | Parameterized descriptors extend ring-size and other ranges without source modification. — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | content_tags.findings[4] |
| finding | Mordred calculates all descriptors for maitotoxin in about 1.2 seconds on the test machine. — “To implement molecular descriptors that can efficiently perform very large calculations, certain calculation algorithms were improved. Accordingly, Mordred can calculate all descriptors of molecules as large as a maitotoxin (molecular weight of 3422; it is the largest non-polymer compound in nature) in an acceptable calculation time (approximately 1.2 s on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine.). On the contrary, most other software packages have difficulty in calculating complicated descriptors for large molecules; e.g., PaDEL-Descriptor falls into a missing value from a “time out” in such cases. For further information on these improvements, the Mordred documentation can be referenced” | content_tags.findings[5] |
| finding | Automated tests run on every commit and release and can also validate local installations. — “Most descriptor calculation software programs do not include automated tests to check descriptor values in a distribution package. In Mordred, all descriptors are automatically tested to verify whether Mordred can calculate precise results using the reference values of the molecular descriptors. The reference values were collected from published studies, consensual findings of multiple descriptor-calculation programs, and results of manual checks according to the calculation algorithms published. The variations among descriptor values calculated by Mordred and other software programs are confirmed in Additional files 1 and 2 . All tests are performed at each commit on the GitHub repository as well as when a new version is released. In addition, users can locally execute tests to check the installation success and calculate valid results on user platforms” | content_tags.findings[6] |
| finding | Each user-facing Descriptor instance returns one value despite internal multi-result algorithms. — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | content_tags.findings[7] |
| finding | Calculator handles dependencies, caches, errors, and multiprocessing. — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | content_tags.findings[8] |
| finding | Articulation-point decomposition makes DetourMatrix feasible for most non-polymer compounds. — “For example, to calculate the longest path from atom 1 to atom 5 shown in Fig. 2 , the longest path of atom 1 to atom 4 (subgraph 1; magenta) and atom 4 to atom 5 (subgraph 2; cyan) are added. This algorithm provides a possible approach for calculating DetourMatrix for most non-polymer compounds (Fig. 1 ). For example, DetourMatrix of a maitotoxin can be calculated in approximately 1.2 s on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine.” | content_tags.findings[9] |
| finding | Mordred's CLI scales to five processes, compared with three PaDEL threads in the benchmark. — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | content_tags.findings[10] |
| finding | Mordred is four times faster than PaDEL-Descriptor in the six-thread/process test. — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | content_tags.findings[11] |
| finding | The permissive non-copyleft licence permits use inside proprietary software. — “Mordred is superior to other software programs in several aspects. First, it is open-source software. Moreover, Mordred and all software used by it are licensed under the non-copyleft open-source license. This implies that it can be used in proprietary software. In addition, users can easily report a bug, request new features, and send patches on GitHub. Second, it is easy to use. Mordred can be installed using only one command, whereas other Python molecular-descriptor calculation libraries (e.g., cinfony, ChemoPy) have more dependencies that require manual installation. The CLI and web interface can also be launched using a single command. Third, it has high flexibility. Mordred can calculate uncommon-range descriptors without modifying the source code. Users can create new molecular descriptors, such as the product term, by easily using the descriptor arithmetic feature. Additionally, the Mordred library can be simply accessed by using the presets in the Descriptor class. Finally, it is fast. Mordred can calculate an entire molecular descriptor twice as fast as PaDEL-Descriptor. Furthermore, the time complexity for some molecular descriptors is reduced in Mordred. As a result, it can be used for calculating the descriptors for large molecules that cannot be calculated using other software” | content_tags.findings[12] |
| quantity | more than 1800 — two- and three-dimensional descriptors calculated by Mordred — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | content_tags.quantities[0] |
| quantity | at least twice as fast — abstract benchmark comparison with PaDEL-Descriptor — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | content_tags.quantities[1] |
| quantity | seven modules — RDKit descriptor modules wrapped by Mordred — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | content_tags.quantities[2] |
| quantity | 42 modules — Mordred original descriptor implementation modules — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | content_tags.quantities[3] |
| quantity | approximately 1.2 s — time to calculate all descriptors for maitotoxin — “To implement molecular descriptors that can efficiently perform very large calculations, certain calculation algorithms were improved. Accordingly, Mordred can calculate all descriptors of molecules as large as a maitotoxin (molecular weight of 3422; it is the largest non-polymer compound in nature) in an acceptable calculation time (approximately 1.2 s on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine.). On the contrary, most other software packages have difficulty in calculating complicated descriptors for large molecules; e.g., PaDEL-Descriptor falls into a missing value from a “time out” in such cases. For further information on these improvements, the Mordred documentation can be referenced” | content_tags.quantities[4] |
| quantity | 7197 compounds — benchmark compounds remaining after conversion and filtering — “To determine the speed of the calculation of molecular descriptors, we performed a benchmark test. All tests were performed on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine. We used entries from the KEGG-drug database [ 32 ] as the benchmark target. We obtained 3D structures from the LigandBox database [ 33 ]. Compounds in the dataset were converted from Tripos mol2 format to MDL mol format using Open Babel. Then, the compounds were split with respect to the number of atoms using RDKit to evaluate the time complexity. After these procedures, 7197 compounds remained” | content_tags.quantities[5] |
| quantity | one to six — threads or processes used in the CLI scaling benchmark — “We used libPaDEL-Descriptor, which is included in the source code of PaDEL-Descriptor, to evaluate the performance of the PaDEL-Descriptor because it excludes the extra descriptor calculation time, such as the file IO and molecular preprocessing. In addition, it evaluates the exact calculation time. First, each molecular descriptor was calculated three times to perform a just-in-time compilation. Then, each molecular descriptor was calculated ten times to evaluate the performance. Garbage collection was performed before each molecular-descriptor calculation. In the Mordred benchmark test, calculations were carried out ten times after disabling garbage collection. The CLI benchmark test was performed to estimate real-world and multi-processor performance. We used the same machine. Up to 100 atoms compounds were used from the same dataset to avoid timeouts in PaDEL-Descriptor. We performed a benchmark test using one to six (the number of physical cores of an Intel Core i7-5930 K) threads (in PaDEL-Descriptor) or processes (in Mordred). Each benchmark was repeated ten times” | content_tags.quantities[6] |
| quantity | more than twofold faster — Mordred CLI performance relative to PaDEL in all tests — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | content_tags.quantities[7] |
| quantity | four times faster — Mordred performance in the six-thread/process test — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | content_tags.quantities[8] |
| quantity | 200 — maximum molecules per upload on the demonstration server — “A configuration button on the top right provides the selection options for the following descriptor calculations. By clicking the “calculate” button, users can obtain the values and summaries of descriptors, as well as the calculation log. To maintain server safety, the maximum molecule number that can be uploaded at one time is limited to 200 in this demonstration server. However, this limitation is not set by default when the user constructs his/her own server” | content_tags.quantities[9] |
| variable | descriptor values (outputs affected by molecular preprocessing) — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | content_tags.variables[0] |
| variable | number of atoms (molecule-size variable used to stratify benchmark compounds) — “To determine the speed of the calculation of molecular descriptors, we performed a benchmark test. All tests were performed on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine. We used entries from the KEGG-drug database [ 32 ] as the benchmark target. We obtained 3D structures from the LigandBox database [ 33 ]. Compounds in the dataset were converted from Tripos mol2 format to MDL mol format using Open Babel. Then, the compounds were split with respect to the number of atoms using RDKit to evaluate the time complexity. After these procedures, 7197 compounds remained” | content_tags.variables[1] |
| variable | calculation time (per-molecule and per-descriptor performance outcome) — “The total calculation time per molecule is shown in Fig. 4 and the calculation time of each descriptor per molecule is shown in Fig. 5 . For the descriptor selection in Fig. 5 , the mean calculation time of Mordred and/or PaDEL-Descriptor was over 0.1 s. DetourMatrix, Framework, and MolecularId descriptor calculation using PaDEL-Descriptor timed out when calculating descriptions for 5, 40, and 8 compounds. Figure 5 shows that AcidBase, BCUT, BaryszMatrix, Chi, DetourMatrix, Estate, and Framework are dramatically faster than the same calculations in PaDEL-Descriptor. The benchmark of Chi, DetourMatrix, Framework, and MolecularId shows the effects of improving the algorithm. On the other hand, a notable algorithm improvement is not achieved in AcidBase, BCUT, BaryszMatrix, or Estate. A performance difference of functions used in these descriptors between CDK and RDKit is apparent. PaDEL-Descriptor is faster than Mordred for many descriptor calculations, even though they both use the same algorithm. This is because Java is faster than Python for many cases. However, these descriptors can be calculated in a very short time even if Python is used. Thus, the total calculation time of Mordred, shown in Fig. 4 , is much lower than that of PaDEL-Descriptor. Some descriptors, such as DetourMatrix, which result in a time-out in PaDEL-Descriptor can be calculated using Mordred. This improvement not only makes the calculation faster, but it also permits the calculation of descriptors of large molecules that cannot be calculated using other software owing to time complexity” | content_tags.variables[2] |
| variable | threads (PaDEL concurrency variable) — “We used libPaDEL-Descriptor, which is included in the source code of PaDEL-Descriptor, to evaluate the performance of the PaDEL-Descriptor because it excludes the extra descriptor calculation time, such as the file IO and molecular preprocessing. In addition, it evaluates the exact calculation time. First, each molecular descriptor was calculated three times to perform a just-in-time compilation. Then, each molecular descriptor was calculated ten times to evaluate the performance. Garbage collection was performed before each molecular-descriptor calculation. In the Mordred benchmark test, calculations were carried out ten times after disabling garbage collection. The CLI benchmark test was performed to estimate real-world and multi-processor performance. We used the same machine. Up to 100 atoms compounds were used from the same dataset to avoid timeouts in PaDEL-Descriptor. We performed a benchmark test using one to six (the number of physical cores of an Intel Core i7-5930 K) threads (in PaDEL-Descriptor) or processes (in Mordred). Each benchmark was repeated ten times” | content_tags.variables[3] |
| variable | processes (Mordred concurrency variable) — “We used libPaDEL-Descriptor, which is included in the source code of PaDEL-Descriptor, to evaluate the performance of the PaDEL-Descriptor because it excludes the extra descriptor calculation time, such as the file IO and molecular preprocessing. In addition, it evaluates the exact calculation time. First, each molecular descriptor was calculated three times to perform a just-in-time compilation. Then, each molecular descriptor was calculated ten times to evaluate the performance. Garbage collection was performed before each molecular-descriptor calculation. In the Mordred benchmark test, calculations were carried out ten times after disabling garbage collection. The CLI benchmark test was performed to estimate real-world and multi-processor performance. We used the same machine. Up to 100 atoms compounds were used from the same dataset to avoid timeouts in PaDEL-Descriptor. We performed a benchmark test using one to six (the number of physical cores of an Intel Core i7-5930 K) threads (in PaDEL-Descriptor) or processes (in Mordred). Each benchmark was repeated ten times” | content_tags.variables[4] |
| variable | missing values (valid-domain or error outcome of descriptor calculation) — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | content_tags.variables[5] |
| variable | reference values (expected results for automated descriptor tests) — “Most descriptor calculation software programs do not include automated tests to check descriptor values in a distribution package. In Mordred, all descriptors are automatically tested to verify whether Mordred can calculate precise results using the reference values of the molecular descriptors. The reference values were collected from published studies, consensual findings of multiple descriptor-calculation programs, and results of manual checks according to the calculation algorithms published. The variations among descriptor values calculated by Mordred and other software programs are confirmed in Additional files 1 and 2 . All tests are performed at each commit on the GitHub repository as well as when a new version is released. In addition, users can locally execute tests to check the installation success and calculate valid results on user platforms” | content_tags.variables[6] |
| definition | molecular descriptor — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | content_tags.definitions[0] |
| definition | QSPR model construction — “The steps in a general procedure of QSPR model construction using molecular descriptors are outlined below. Split the dataset into training and test datasets for evaluating the predicted performance of the model. Calculate numerous molecular descriptors of each compound in the datasets. Construct a reliable model of the training dataset to predict the target activity or property from these calculated descriptors using classification or regression methods (e.g., multiple regression analysis, partial least squares regression, support vector machine (SVM), and random forest). Evaluate the performance of the constructed model by predicting the target activities of the compounds in the test dataset that are not used for model construction” | content_tags.definitions[1] |
| definition | articulation point — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | content_tags.definitions[2] |
| definition | Descriptor — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | content_tags.definitions[3] |
| definition | Calculator — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | content_tags.definitions[4] |
| definition | MissingValueBase — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | content_tags.definitions[5] |
| definition | descriptor arithmetic — “The product term is often used to consider the interaction between features in a linear model. Mordred can easily calculate the product term using the “descriptor arithmetic” feature. Instances of descriptors can be calculated by employing a unary/binary operator with other descriptors” | content_tags.definitions[6] |
| definition | Mordred — “In this paper, we propose Mordred, a newly developed molecular-descriptor calculation software program. The software can calculate more than 1800 descriptors at high speed, and it can be used from the CLI and web UI, as well as with Python 2 and 3 libraries. Mordred was released under the three-clause Berkeley Software Distribution (BSD) license, which allows both commercial and non-commercial use” | content_tags.definitions[7] |
| concept | molecular descriptors — not defined in this paper's own words; numeric or standardized-experiment representations of molecular information — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | concepts[0] |
| concept | molecular characteristics — not defined in this paper's own words; chemical properties represented in cheminformatics — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[1] |
| concept | cheminformatics — not defined in this paper's own words; application field for molecular descriptors — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[2] |
| concept | Mordred — not defined in this paper's own words; open-source molecular-descriptor calculation software — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[3] |
| concept | descriptor-calculation software application — not defined in this paper's own words; software class proposed for Mordred — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[4] |
| concept | two- and three-dimensional descriptors — not defined in this paper's own words; descriptor families computed by Mordred — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[5] |
| concept | PaDEL-Descriptor — not defined in this paper's own words; descriptor calculator used as the principal benchmark comparator — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[6] |
| concept | promising choice of molecular descriptor calculation software — not defined in this paper's own words; class and evaluative role assigned to Mordred — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[7] |
| concept | quantitative structure–property relationships — not defined in this paper's own words; QSPR application connecting chemical structure to properties — “Molecular descriptors are widely employed to present molecular characteristics in cheminformatics. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordred, a developed descriptor-calculation software application that can calculate more than 1800 two- and three-dimensional descriptors. It is freely available via GitHub. Mordred can be easily installed and used in the command line interface, as a web application, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordred is at least twice as fast as the well-known PaDEL-Descriptor and it can calculate descriptors for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptors, and a lax licensing constraint, Mordred is a promising choice of molecular descriptor calculation software that can be utilized for cheminformatics studies, such as those on quantitative structure–property relationships” | concepts[8] |
| concept | logical and mathematical procedure — not defined in this paper's own words; procedure transforming encoded chemical information — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | concepts[9] |
| concept | symbolic representation of a molecule — not defined in this paper's own words; encoded input transformed by a descriptor procedure — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | concepts[10] |
| concept | useful number — not defined in this paper's own words; one possible output of a molecular descriptor — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | concepts[11] |
| concept | Quantitative structure–property relationship — not defined in this paper's own words; predictive QSPR models built from molecular descriptors — “A molecular descriptor is defined as the “final result of a logical and mathematical procedure, which transforms chemical information encoded within a symbolic representation of a molecule into a useful number or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptors have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationship (QSPR) models frequently use molecular descriptors. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds” | concepts[12] |
| concept | training and test datasets — not defined in this paper's own words; data partition for fitting and evaluating QSPR models — “The steps in a general procedure of QSPR model construction using molecular descriptors are outlined below. Split the dataset into training and test datasets for evaluating the predicted performance of the model. Calculate numerous molecular descriptors of each compound in the datasets. Construct a reliable model of the training dataset to predict the target activity or property from these calculated descriptors using classification or regression methods (e.g., multiple regression analysis, partial least squares regression, support vector machine (SVM), and random forest). Evaluate the performance of the constructed model by predicting the target activities of the compounds in the test dataset that are not used for model construction” | concepts[13] |
| concept | classification or regression methods — not defined in this paper's own words; methods mapping calculated descriptors to target properties — “The steps in a general procedure of QSPR model construction using molecular descriptors are outlined below. Split the dataset into training and test datasets for evaluating the predicted performance of the model. Calculate numerous molecular descriptors of each compound in the datasets. Construct a reliable model of the training dataset to predict the target activity or property from these calculated descriptors using classification or regression methods (e.g., multiple regression analysis, partial least squares regression, support vector machine (SVM), and random forest). Evaluate the performance of the constructed model by predicting the target activities of the compounds in the test dataset that are not used for model construction” | concepts[14] |
| concept | three-clause Berkeley Software Distribution (BSD) license — not defined in this paper's own words; permissive licence used for Mordred — “In this paper, we propose Mordred, a newly developed molecular-descriptor calculation software program. The software can calculate more than 1800 descriptors at high speed, and it can be used from the CLI and web UI, as well as with Python 2 and 3 libraries. Mordred was released under the three-clause Berkeley Software Distribution (BSD) license, which allows both commercial and non-commercial use” | concepts[15] |
| concept | automated tests — not defined in this paper's own words; commit- and release-level checks of descriptor values — “Mordred was designed to be a software program that is easy to install and use, supports abundant molecular descriptors, has a high calculation speed, and includes automated tests. Molecular-descriptor calculation programs usually have many dependent software programs that must be manually installed. All direct dependent libraries in Mordred, except for RDKit and NumPy [ 27 ], are coded in pure Python (enum34, networkx, six, tqdm) to simplify the installation. RDKit and NumPy are widely used Python libraries and can be easily installed via the pre-compiled libraries distributed by the Anaconda cloud [ 28 ]. Therefore, users can install Mordred using a single command (see Code 1 below). Because Mordred can be employed as a web service or from a CLI, and with Python 2 and 3 libraries, users ranging from beginners to experts can employ it” | concepts[16] |
| concept | RDKit — not defined in this paper's own words; widely used dependency and source of wrapped descriptor modules — “Mordred was designed to be a software program that is easy to install and use, supports abundant molecular descriptors, has a high calculation speed, and includes automated tests. Molecular-descriptor calculation programs usually have many dependent software programs that must be manually installed. All direct dependent libraries in Mordred, except for RDKit and NumPy [ 27 ], are coded in pure Python (enum34, networkx, six, tqdm) to simplify the installation. RDKit and NumPy are widely used Python libraries and can be easily installed via the pre-compiled libraries distributed by the Anaconda cloud [ 28 ]. Therefore, users can install Mordred using a single command (see Code 1 below). Because Mordred can be employed as a web service or from a CLI, and with Python 2 and 3 libraries, users ranging from beginners to experts can employ it” | concepts[17] |
| concept | NumPy — not defined in this paper's own words; widely used numerical Python dependency — “Mordred was designed to be a software program that is easy to install and use, supports abundant molecular descriptors, has a high calculation speed, and includes automated tests. Molecular-descriptor calculation programs usually have many dependent software programs that must be manually installed. All direct dependent libraries in Mordred, except for RDKit and NumPy [ 27 ], are coded in pure Python (enum34, networkx, six, tqdm) to simplify the installation. RDKit and NumPy are widely used Python libraries and can be easily installed via the pre-compiled libraries distributed by the Anaconda cloud [ 28 ]. Therefore, users can install Mordred using a single command (see Code 1 below). Because Mordred can be employed as a web service or from a CLI, and with Python 2 and 3 libraries, users ranging from beginners to experts can employ it” | concepts[18] |
| concept | preprocessing of molecules — not defined in this paper's own words; hydrogen, Kekulization, and aromaticity preparation affecting descriptor values — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | concepts[19] |
| concept | explicit hydrogen atoms — not defined in this paper's own words; atoms removed for descriptor definitions requiring implicit hydrogen — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | concepts[20] |
| concept | correctness of preprocessing — not defined in this paper's own words; validity outcome of descriptor-specific automatic preparation — “Preprocessing of molecules affects the descriptor values in most molecular-descriptor calculators. However, for each descriptor, Mordred automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptor was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atoms. Therefore, explicit hydrogen atoms are automatically removed in Mordred. This procedure ensures correctness of preprocessing, which is usually not checked in other software” | concepts[21] |
| concept | optional descriptors — not defined in this paper's own words; parameterized or product-term descriptors beyond defaults — “Mordred calculates more than 1800 default molecular descriptors, including all those implemented by RDKit (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptor can calculate the largest number of descriptors among other related open-source software programs by providing 1875 molecular descriptors. The number of default descriptors calculated by Mordred is comparable, which suggests that Mordred can be used as alternative descriptor calculation software in QSAR studies. Table 2 lists the defects identified in other descriptor calculation applications. These defects were fixed in the development of Mordred. Moreover, users can employ optional descriptors by passing parameters or generating product terms of descriptors. For example, n-membered ring descriptors calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptor calculation abilities and distinguish Mordred from other previously developed software” | concepts[22] |
| concept | maitotoxin — not defined in this paper's own words; large non-polymer benchmark molecule — “To implement molecular descriptors that can efficiently perform very large calculations, certain calculation algorithms were improved. Accordingly, Mordred can calculate all descriptors of molecules as large as a maitotoxin (molecular weight of 3422; it is the largest non-polymer compound in nature) in an acceptable calculation time (approximately 1.2 s on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine.). On the contrary, most other software packages have difficulty in calculating complicated descriptors for large molecules; e.g., PaDEL-Descriptor falls into a missing value from a “time out” in such cases. For further information on these improvements, the Mordred documentation can be referenced” | concepts[23] |
| concept | calculation time — not defined in this paper's own words; runtime required for descriptor computation — “To implement molecular descriptors that can efficiently perform very large calculations, certain calculation algorithms were improved. Accordingly, Mordred can calculate all descriptors of molecules as large as a maitotoxin (molecular weight of 3422; it is the largest non-polymer compound in nature) in an acceptable calculation time (approximately 1.2 s on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine.). On the contrary, most other software packages have difficulty in calculating complicated descriptors for large molecules; e.g., PaDEL-Descriptor falls into a missing value from a “time out” in such cases. For further information on these improvements, the Mordred documentation can be referenced” | concepts[24] |
| concept | reference values — not defined in this paper's own words; published, consensus, or manually checked targets for automated tests — “Most descriptor calculation software programs do not include automated tests to check descriptor values in a distribution package. In Mordred, all descriptors are automatically tested to verify whether Mordred can calculate precise results using the reference values of the molecular descriptors. The reference values were collected from published studies, consensual findings of multiple descriptor-calculation programs, and results of manual checks according to the calculation algorithms published. The variations among descriptor values calculated by Mordred and other software programs are confirmed in Additional files 1 and 2 . All tests are performed at each commit on the GitHub repository as well as when a new version is released. In addition, users can locally execute tests to check the installation success and calculate valid results on user platforms” | concepts[25] |
| concept | Descriptor — not defined in this paper's own words; class whose subclasses implement descriptor algorithms — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | concepts[26] |
| concept | Calculator — not defined in this paper's own words; class registering and computing descriptors — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | concepts[27] |
| concept | Descriptor class — not defined in this paper's own words; base class for descriptor algorithms and presets — “Mordred consists of two main classes: “Descriptor” and “Calculator” (Fig. 1 ). The algorithms of molecular descriptors are implemented in the subclass of the Descriptor class. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordred. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor values. However, each Descriptor instance provided for users returns a single value in Mordred, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptors by passing parameters, as shown in Code 3. Although all Mordred descriptors can be calculated by constructing descriptor instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor class has a preset configuration, and users can obtain a set of descriptors by using this preset method (Code 4). They can be used in an instance of the Calculator class” | concepts[28] |
| concept | Calculator class — not defined in this paper's own words; dependency, caching, error, and parallel-execution manager — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | concepts[29] |
| concept | parallel computing — not defined in this paper's own words; multiprocess calculation of descriptors — “The Calculator class manages the dependencies of Descriptors, caches the results, handles errors, and enables parallel computing. Users can register the Descriptor instance (register itself), Descriptor class (preset of Descriptor), module (presets of all descriptors in the module), or a list of these in a Calculator instance. To calculate descriptors of a single molecule, an instance of Calculator can be used as a function. To calculate descriptors of multiple molecules, the map method in Calculator can be used. The map method can calculate descriptors in the CPU parallel using the multiprocessing module in the standard Python library” | concepts[30] |
| concept | MissingValueBase — not defined in this paper's own words; missing-result object carrying its triggering exception — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | concepts[31] |
| concept | Exception — not defined in this paper's own words; diagnostic object explaining a missing descriptor value — “These kinds of applications have missing values, even if there are no bugs in them. For example, a part of the autocorrelation descriptor cannot be calculated for small molecules. However, unintended missing values might cause errors or result in incorrect values. Therefore, it is important to reduce the missing values caused by software bugs or calculation timeouts. In Mordred, when the result is a missing value, an instance of the subclass MissingValueBase is returned. It contains an Exception that notifies users about the issue that triggered the exception” | concepts[32] |
| concept | NaN — not defined in this paper's own words; optional replacement representation for missing results — “As an option, if the expression of “MissingValue” is not necessary, these missing values can be filled with “NaN” or deleted by the fill_missing or drop_missing method of the Result class. Moreover, users can obtain results as a dictionary using the asdict method of the Result class” | concepts[33] |
| concept | product term — not defined in this paper's own words; feature interaction in a linear model — “The product term is often used to consider the interaction between features in a linear model. Mordred can easily calculate the product term using the “descriptor arithmetic” feature. Instances of descriptors can be calculated by employing a unary/binary operator with other descriptors” | concepts[34] |
| concept | descriptor arithmetic — not defined in this paper's own words; operator-based construction of derived descriptors — “The product term is often used to consider the interaction between features in a linear model. Mordred can easily calculate the product term using the “descriptor arithmetic” feature. Instances of descriptors can be calculated by employing a unary/binary operator with other descriptors” | concepts[35] |
| concept | DetourMatrix descriptor — not defined in this paper's own words; descriptor requiring longest paths between graph nodes — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | concepts[36] |
| concept | longest path problem — not defined in this paper's own words; NP-hard graph problem underlying DetourMatrix — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | concepts[37] |
| concept | articulation point — not defined in this paper's own words; vertex whose removal disconnects a graph — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | concepts[38] |
| concept | depth-first search — not defined in this paper's own words; search used for subgraph paths and Chi descriptors — “Several descriptors are algorithmically improved in Mordred. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptor [ 30 ] requires the solving of the longest path problem between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problem cannot be solved using the divide and conquer method. However, it can be solved using the articulation point. The articulation point refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation points. Hence, we use this property to solve DetourMatrix. First, all articulation points are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first search for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph” | concepts[39] |
| concept | Chi descriptor — not defined in this paper's own words; descriptor accelerated by depth-first search — “The Chi descriptor is calculated by matching all Smiles Arbitrary Target Specification (SMARTS) patterns in CDK. This approach is time consuming and cannot be used to calculate the higher-order Chi descriptor. The depth-first search is used in Mordred to overcome these issues” | concepts[40] |
| concept | Framework descriptor — not defined in this paper's own words; descriptor specialized by removing unnecessary general calculations — “The Framework descriptor is calculated using the function to match the molecular framework in CDK. However, during this process, this function also performs extra calculations to solve more general cases, such as enumerating the atoms in a molecular framework. Those calculations are not necessary for the derivation of the Framework descriptor and they are removed in Mordred” | concepts[41] |
| concept | MolecularId descriptor — not defined in this paper's own words; descriptor accelerated through caching — “The MolecularId descriptor calls the internal pure function with the same arguments many times in CDK. The returned values of these function calls are cached to avoid same calculations in Mordred” | concepts[42] |
| concept | same calculations — not defined in this paper's own words; redundant work avoided by MolecularId result caching — “The MolecularId descriptor calls the internal pure function with the same arguments many times in CDK. The returned values of these function calls are cached to avoid same calculations in Mordred” | concepts[43] |
| concept | CLI — not defined in this paper's own words; command-line interface for non-Python users — “The CLI is additionally implemented for non-Python users (Code 9). Accordingly, the entire set or subset of molecular descriptors can be calculated in CPU parallel computing. The results are provided in CSV format” | concepts[44] |
| concept | web application — not defined in this paper's own words; browser interface for descriptor calculation — “Mordred is also available as a web application (Fig. 3 ). The web interface is available when the Mordred web module is executed (to this end, the Mordred web package is required; the method to install this package is explained in the GitHub repository). The web interface enables beginners to easily calculate descriptors and study QSAR. In addition, Mordred can be installed on a server by an administrator. In this case, users can calculate descriptors using resources of the server simply by accessing the web page” | concepts[45] |
| concept | KEGG-drug database — not defined in this paper's own words; source of benchmark target compounds — “To determine the speed of the calculation of molecular descriptors, we performed a benchmark test. All tests were performed on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine. We used entries from the KEGG-drug database [ 32 ] as the benchmark target. We obtained 3D structures from the LigandBox database [ 33 ]. Compounds in the dataset were converted from Tripos mol2 format to MDL mol format using Open Babel. Then, the compounds were split with respect to the number of atoms using RDKit to evaluate the time complexity. After these procedures, 7197 compounds remained” | concepts[46] |
| concept | LigandBox database — not defined in this paper's own words; source of benchmark three-dimensional structures — “To determine the speed of the calculation of molecular descriptors, we performed a benchmark test. All tests were performed on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine. We used entries from the KEGG-drug database [ 32 ] as the benchmark target. We obtained 3D structures from the LigandBox database [ 33 ]. Compounds in the dataset were converted from Tripos mol2 format to MDL mol format using Open Babel. Then, the compounds were split with respect to the number of atoms using RDKit to evaluate the time complexity. After these procedures, 7197 compounds remained” | concepts[47] |
| concept | CLI benchmark test — not defined in this paper's own words; multi-core throughput comparison — “The results of the CLI benchmark test are shown in Fig. 6 . PaDEL-Descriptor can be scaled by up to three threads, while Mordred can be scaled by up to five threads. Moreover, Mordred is more than twofold faster than PaDEL-Descriptor for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordred is significantly more efficient than PaDEL-Descriptor” | concepts[48] |
| concept | potential defects — not defined in this paper's own words; explicit residual defect boundary for Mordred and dependencies — “There are some potential defects in Mordred and/or its dependent libraries. We are receptive to feedback, questions, and bug reports via both email and GitHub” | concepts[49] |
Full text — tagged
The reference list is not part of the text we hold for this paper. Our copy was extracted from the publisher's page and the bibliography did not survive that extraction, so the article below ends before its references. Nothing has been removed by us.
Mordredterm: a molecular descriptorterm·def calculatorterm Abstract Molecular descriptorsterm are widely employed to present molecular characteristicsterm in cheminformaticsterm. Various molecular-descriptor-calculation software programs have been developed. However, users of those programs must contend with several issues, including software bugs, insufficient update frequencies, and software licensing constraints. To address these issues, we propose Mordredterm, a developed descriptor-calculation software applicationterm that can calculate more than 1800 two- and three-dimensional descriptorsterm. It is freely available via GitHub. Mordredterm can be easily installed and used in the command line interface, as a web applicationterm, or as a high-flexibility Python package on all major platforms (Windows, Linux, and macOS). Performance benchmark results show that Mordredterm is at least twice as fast as the well-known PaDEL-Descriptorterm and it can calculate descriptorsterm for large molecules, which cannot be accomplished by other software. Owing to its good performance, convenience, number of descriptorsterm, and a lax licensing constraint, Mordredterm is a promising choice of molecular descriptor calculation softwareterm that can be utilized for cheminformaticsterm studies, such as those on quantitative structure–property relationshipsterm.
The online version of this article (10.1186/s13321-018-0258-y) contains supplementary material, which is available to authorized users.
Background A molecular descriptorterm·def is defined as the “final result of a logical and mathematical procedureterm, which transforms chemical information encoded within a symbolic representation of a moleculeterm into a useful numberterm or the result of some standardized experiment” [ 1 ]. Many types of molecular descriptorsterm have been developed, such as the number of carbon atoms; molecular weight; predictive values of LogP (XLogP [ 2 ], ALogP [ 3 ], etc.); properties calculated from two-dimensional (2D) structures (e.g., Eccentric Connectivity Index [ 4 ]) and three-dimensional (3D) structures (e.g., charged partial surface area (CPSA) [ 5 ]); and properties based on quantum mechanics (orbital energies of highest occupied molecular orbital (HOMO), lowest unoccupied molecular orbital (LUMO), etc.). Quantitative structure–property relationshipterm (QSPR) models frequently use molecular descriptorsterm. They are studied to predict the activity, toxicity, and other properties resulting from the chemical structures of compounds.
The steps in a general procedure of QSPR model constructionterm·def using molecular descriptorsterm are outlined below. Split the dataset into training and test datasetsterm for evaluating the predicted performance of the model. Calculate numerous molecular descriptorsterm of each compound in the datasets. Construct a reliable model of the training dataset to predict the target activity or property from these calculated descriptorsterm using classification or regression methodsterm (e.g., multiple regression analysis, partial least squares regression, support vector machine (SVM), and random forest). Evaluate the performance of the constructed model by predicting the target activities of the compounds in the test dataset that are not used for model construction.
Although both open-source and proprietary software have been developed for calculating molecular descriptorsterm—such as PaDEL-Descriptorterm [ 6 ], BlueDesc [ 7 ], ChemoPy [ 8 ], PyDPI [ 9 ], Rcpi [ 10 ], cinfony [ 11 ], and Dragon [ 12 ]—they each have advantages and disadvantages (Table 1 ). The freely available PaDEL-Descriptorterm can calculate 1875 molecular descriptorsterm and fingerprints. It provides several interfaces (e.g., a graphical user interface (GUI), command line interface (CLIterm), Konstanz Information Miner (KNIME) [ 13 ], and Rapid Miner [ 14 ]), and it has been cited by other papers more than 300 times. Moreover, it can calculate descriptorsterm in parallel. Thus, these advantages make it one of the best choices among open-source molecular-descriptor calculatorsterm. However, we determined that it has several defects (Table 2 ), which implies that careful verifications and modifications are required when using it. Table 1 Comparison features of major descriptorterm calculation software Mordredterm PaDEL-Descriptorterm BlueDesc ChemoPy PyDPI Rcpi Cinfony Dragon Number of descriptorsterm 1825 1875 174 1135 615 307 – a 5270 Citation count b – 598 – 48 17 21 38 148 Library Python2/3 – – Python2 Python2 R Python2/3 – Parallel computation ✓ ✓ – – – – – – GUI – ✓ – – – – – ✓ CLIterm ✓ ✓ ✓ – – – – ✓ KNIME – ✓ – – – – – ✓ RapidMiner – ✓ – – – – – – Web Interface ✓ – – – – – – ✓ c Last release 2018/1/20 2014/7/21 2008/10/3 2013/2/1 2015/11/10 2017/11/18 2015/8/1 ? d License BSD-3-Clause e GPL GPL GPL Artistic license BSD-2-clause/GPLv2/GPLv3 Proprietary Source code distribution Github Official site Official site Google code pypi github github – Other advantages Easy to use with libSVM Can also calculate protein descriptorterm Can also calculate protein descriptorterm Include analysis tool Other disadvantages Some bugs are founded No configurable options Require many manually installed dependencies Payware a Depends on backends b Citation counts on Google Scholar (accessed on 2018/01/16) c Provided by e-Dragon, which uses the old version of Dragon d Unknown; however, Dragon is being actively developed e “This software is free for all (e.g. personal, academic, non-profit, non-commercial, government, commercial, etc.) to use.” ( http://yapcwsoft.com/dd/padeldescriptorterm , accessed on 2018/01/16) Table 2 Defects identified in the descriptorterm calculation software Software Details CDK Theoretically, the roto-translation of a molecule should not change any molecular property. However, TPSA and LengthOverBreadth descriptorsterm resulted in different values of molecules before and after roto-translation transformation The value of ChiPathCluster is invalid because the patterns are not adequate (fixed in the latest version of CDK) PaDEL Several molecules (e.g., Cyanidin) resulted in invalid values in many descriptorsterm (e.g., nH (hydrogen count) returned 12) when using the default configuration owing to a bug in the aromaticity detecting procedure and/or 3D conformer generator of PaDEL-Descriptorterm. This caused breakage of an aromatic ring and attachment to an invalid hydrogen Some descriptorsterm use the log sum exponential (LSE) function ( LSE 1 below), which is prone to arithmetic overflow or underflow. The LSE trick ( LSE 2 below) should be used to avoid this issue LSE 1 x 1 , x 2 , … , x n = log ∑ i = 1 n exp x i \[\begin{array}{*{20}c} {{\text{LSE}}_{2} \left( {x_{1} ,x_{2} , \ldots , x_{n} } \right) = x^{ *} + \log \left( {\mathop \sum \limits_{i = 1}^{n} \exp \left( {x_{i} - x^{*} } \right)} \right)} \\ {x^{ *} = \hbox{max} \left( {x_{1} ,x_{2} , \ldots ,x_{n} } \right)} \\ \end{array}\] LSE 2 x 1 , x 2 , … , x n = x ∗ + log ∑ i = 1 n exp x i - x ∗ x ∗ = max x 1 , x 2 , … , x n In the constitutional descriptorterm, discrepancies might be induced in the algorithm implementation owing to incorrect code reuse ChemoPy Cannot calculate exact values of modified Zagreb index 2 Meanwhile, BlueDesc is a simple software program for calculating descriptorsterm. Because BlueDesc can output the results in libSVM input file format, users can easily construct SVM models. However, BlueDesc can calculate only 174 descriptorsterm, and it has no configurable options. ChemoPy, a free software environment that calculates both 2D and 3D descriptorsterm, can calculate 1135 descriptorsterm. ChemoPy is available as a Python package and is convenient for constructing models using Python machine-learning packages. However, it can be difficult to employ it by non-Python users who are not familiar with the construction of the Python interface. (As described later, this disadvantage can be overcome by using several web interfaces that incorporate ChemoPy.) To date, ChemoPy only supports Python 2.
Furthermore, PyDPI can calculate small molecule descriptorsterm as well as protein descriptorsterm. However, it has advantages and limitations that are similar to those of ChemoPy. In addition, Rcpi (the protein and small molecule descriptorterm calculation package for R [ 15 ]) is the only R package to calculate small molecular descriptorsterm and protein descriptorsterm. It can calculate only 307 small molecular descriptorsterm. Cinfony is another Python package. It is a Python wrapper of numerous other libraries (e.g., Open Babel [ 16 ], RDKitterm [ 17 ], Chemistry Development Kit (CDK) [ 18 ], Indigo [ 19 ], JChem [ 20 ], and OPSIN [ 21 ]). Thus, it requires many manually installed dependencies, which is a complicated processterm·var. Moreover, a new version has not been released since December 2012 [ 22 ]. Dragon is another widely used application software that is used to calculate molecular descriptorsterm. It can calculate numerous descriptorsterm, and it has several interfaces, such as a GUI, CLIterm, web (e-Dragon [ 23 ], which is based on an older free version of Dragon), and KNIME. However, it is proprietary shareware; its source code is not open, and it is not easy to publish constructed quantitative structure–activity relationship (QSAR) models, such as Ecological Structure Activity Relationships (ECOSAR) [ 24 ], on account of licensing issues. Furthermore, some descriptorterm calculation programs do not have a user-friendly interface and/or it is difficult to set up the environment. Thus, several web-based descriptorterm calculation interfaces have been developed, such as ChemDes [ 25 ] and BioTriangle [ 26 ]. ChemDes can calculate all descriptorsterm that can be calculated by ChemoPy, CDK, RDKitterm, Open Babel, BlueDesc, and PaDEL. Moreover, BioTriangle can manipulate not only small molecules, but also nucleic acid and protein. Because users do not need to install any software except a web browser, which can be accessed from any device, web user interfaces (UIs) are convenient.
In this paper, we propose Mordredterm, a newly developed molecular-descriptor calculation software program. The software can calculate more than 1800 descriptorsterm at high speed, and it can be used from the CLIterm and web UI, as well as with Python 2 and 3 libraries. Mordredterm was released under the three-clause Berkeley Software Distribution (BSD) licenseterm, which allows both commercial and non-commercial use.
Implementation Motivation and Mordredterm concepts Mordredterm was designed to be a software program that is easy to install and use, supports abundant molecular descriptorsterm, has a high calculation speed, and includes automated teststerm. Molecular-descriptor calculation programs usually have many dependent software programs that must be manually installed. All direct dependent libraries in Mordredterm, except for RDKitterm and NumPyterm [ 27 ], are coded in pure Python (enum34, networkx, six, tqdm) to simplify the installation. RDKitterm and NumPyterm are widely used Python libraries and can be easily installed via the pre-compiled libraries distributed by the Anaconda cloud [ 28 ]. Therefore, users can install Mordredterm using a single command (see Code 1 below). Because Mordredterm can be employed as a web service or from a CLIterm, and with Python 2 and 3 libraries, users ranging from beginners to experts can employ it.
Preprocessing of moleculesterm affects the descriptor valuesterm·var in most molecular-descriptor calculatorsterm. However, for each descriptorterm, Mordredterm automatically preprocesses molecules (adds or removes hydrogen atoms, performs Kekulization, and detects molecular aromaticity). For example, a topological index descriptorterm was reported by Balaban et al. [ 29 ]. along with a numerical example. To reproduce the values, the input molecule should not have explicit hydrogen atomsterm. Therefore, explicit hydrogen atomsterm are automatically removed in Mordredterm. This procedure ensures correctness of preprocessingterm, which is usually not checked in other software.
Mordredterm calculates more than 1800 default molecular descriptorsterm, including all those implemented by RDKitterm (seven modules) and original implementations (42 modules) (Table 3 ). To note, PaDEL-Descriptorterm can calculate the largest number of descriptorsterm among other related open-source software programs by providing 1875 molecular descriptorsterm. The number of default descriptorsterm calculated by Mordredterm is comparable, which suggests that Mordredterm can be used as alternative descriptorterm calculation software in QSAR studies. Table 2 lists the defects identified in other descriptorterm calculation applications. These defects were fixed in the development of Mordredterm. Moreover, users can employ optional descriptorsterm by passing parameters or generating product termsterm of descriptorsterm. For example, n-membered ring descriptorsterm calculate the number of n-membered rings; n = 3 to n = 12 can be calculated by default. If the number of a larger ring, e.g., 14- to 16-membered ring macrolides, is required, the calculation can be easily achieved by passing the parameter of an n value that is larger than 12 without modifying the source code. These unique functions significantly increase the descriptorterm calculation abilities and distinguish Mordredterm from other previously developed software. Table 3 List of Mordredterm descriptorsterm Descriptorterm name Number of descriptorsterm (preset) 2D ABCIndex 2 AcidBase 2 AdjacencyMatrix 13 Aromatic 2 AtomCount 16 Autocorrelation 606 BCUT a 24 BalabanJ a 1 BaryszMatrix a 104 BertzCT 1 BondCount 9 CarbonTypes 10 Chi 56 Constitutional 16 DetourMatrix 14 DistanceMatrix 13 EState 316 EccentricConnectivityIndex 1 ExtendedTopochemicalAtom 45 FragmentComplexity 1 Framework 1 HydrogenBond a 2 InformationContent 42 KappaShapeIndex 3 Lipinski 2 McGowanVolume 1 MoeType a 53 MolecularDistanceEdge 19 MolecularId 12 PathCount 21 Polarizability 2 RingCount 138 RotatableBond a 2 SLogP a 2 TopoPSA a 2 TopologicalCharge 21 TopologicalIndex 4 VdwVolumeABC 1 VertexAdjacencyInformation 1 WalkCount 21 Weight 2 WienerIndex 2 ZagrebIndex 4 3D CPSA 43 GeometricalIndex 4 GravitationalIndex 4 MoRSE 160 MomentOfInertia 3 a RDKitterm wrapper To implement molecular descriptorsterm that can efficiently perform very large calculations, certain calculation algorithms were improved. Accordingly, Mordredterm can calculate all descriptorsterm of molecules as large as a maitotoxinterm (molecular weight of 3422; it is the largest non-polymer compound in nature) in an acceptable calculation timeterm (approximately 1.2 s on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine.). On the contrary, most other software packages have difficulty in calculating complicated descriptorsterm for large molecules; e.g., PaDEL-Descriptorterm falls into a missing valueterm·var from a “time out” in such cases. For further information on these improvements, the Mordredterm documentation can be referenced.
Most descriptorterm calculation software programs do not include automated teststerm to check descriptor valuesterm·var in a distribution package. In Mordredterm, all descriptorsterm are automatically tested to verify whether Mordredterm can calculate precise results using the reference valuesterm of the molecular descriptorsterm. The reference valuesterm were collected from published studies, consensual findings of multiple descriptor-calculation programs, and results of manual checks according to the calculation algorithms published. The variations among descriptor valuesterm·var calculated by Mordredterm and other software programs are confirmed in Additional files 1 and 2 . All tests are performed at each commit on the GitHub repository as well as when a new version is released. In addition, users can locally execute tests to check the installation success and calculate valid results on user platforms.
Library design Mordredterm consists of two main classes: “Descriptorterm” and “Calculatorterm” (Fig. 1 ). The algorithms of molecular descriptorsterm are implemented in the subclass of the Descriptor classterm. Because there are interdependencies between the molecular-descriptor calculations, one subclass can depend on other subclasses for better efficiency in Mordredterm. Many descriptor-calculation algorithms provide multiple results, which complicates the treatment of descriptor valuesterm·var. However, each Descriptorterm instance provided for users returns a single value in Mordredterm, which makes it simple and convenient to use (Code 2). When necessary, users can employ uncommon-range descriptorsterm by passing parameters, as shown in Code 3. Although all Mordredterm descriptorsterm can be calculated by constructing descriptorterm instances, as shown in Code 2, this approach is not very convenient. Hence, each Descriptor classterm has a preset configuration, and users can obtain a set of descriptorsterm by using this preset method (Code 4). They can be used in an instance of the Calculator classterm (Additional file 3 ). Fig. 1 Overview of Mordredterm library. Mordredterm consists of two main classes: descriptorterm and calculatorterm. Users can register descriptorsterm on a Calculatorterm instance. A Calculatorterm instance can calculate descriptorsterm in parallel The Calculator classterm manages the dependencies of Descriptorsterm, caches the results, handles errors, and enables parallel computingterm. Users can register the Descriptorterm instance (register itself), Descriptor classterm (preset of Descriptorterm), module (presets of all descriptorsterm in the module), or a list of these in a Calculatorterm instance. To calculate descriptorsterm of a single molecule, an instance of Calculatorterm can be used as a function. To calculate descriptorsterm of multiple molecules, the map method in Calculatorterm can be used. The map method can calculate descriptorsterm in the CPU parallel using the multiprocessing module in the standard Python library (Code 5).
These kinds of applications have missing valuesterm·var, even if there are no bugs in them. For example, a part of the autocorrelation descriptorterm cannot be calculated for small molecules. However, unintended missing valuesterm·var might cause errors or result in incorrect values. Therefore, it is important to reduce the missing valuesterm·var caused by software bugs or calculation timeouts. In Mordredterm, when the result is a missing valueterm·var, an instance of the subclass MissingValueBaseterm is returned. It contains an Exceptionterm that notifies users about the issue that triggered the exceptionterm (Code 6).
As an option, if the expression of “MissingValue” is not necessary, these missing valuesterm·var can be filled with “NaNterm” or deleted by the fill_missing or drop_missing method of the Result class. Moreover, users can obtain results as a dictionary using the asdict method of the Result class (Code 7).
The product termterm is often used to consider the interaction between features in a linear model. Mordredterm can easily calculate the product termterm using the “descriptor arithmeticterm” feature. Instances of descriptorsterm can be calculated by employing a unary/binary operator with other descriptorsterm (Code 8).
The full executable code example of Code 2–8 can be found in Additional file 4 .
Improving the algorithm Several descriptorsterm are algorithmically improved in Mordredterm. A summary of the improvements is shown in Table 4 . For example, the DetourMatrix descriptorterm [ 30 ] requires the solving of the longest path problemterm between all nodes, which is an NP-hard problem. Thus, it is difficult to solve this problem efficiently. An algorithm [ 31 ] was already reported to solve this problem. However, it is not adequately efficient. The longest path problemterm cannot be solved using the divide and conquer method. However, it can be solved using the articulation pointterm. The articulation pointterm refers to the vertex, which disconnects the graph when it is removed. Chemicals generally form a sparse graph that has many articulation pointsterm. Hence, we use this property to solve DetourMatrix. First, all articulation pointsterm are found (this can be efficiently solved) and the chemical structures are split into subgraphs. Then, the longest path is searched using the depth-first searchterm for all subgraphs (usually this can be solved because subgraphs are smaller than the original graph). Finally, the longest paths of subgraphs are merged. Other elements are filled by adding the longest paths of each subgraph. Table 4 Summary of descriptorterm improvement Descriptorterm Summary Chi Depth-first searchterm is used instead of SMARTS pattern matching DetourMatrix Molecular graph is divided into a small graph by articulation pointsterm Framework Specialize to Framework descriptorterm MolecularId Cache parts of the calculation to avoid its redundancy For example, to calculate the longest path from atom 1 to atom 5 shown in Fig. 2 , the longest path of atom 1 to atom 4 (subgraph 1; magenta) and atom 4 to atom 5 (subgraph 2; cyan) are added. This algorithm provides a possible approach for calculating DetourMatrix for most non-polymer compounds (Fig. 1 ). For example, DetourMatrix of a maitotoxinterm can be calculated in approximately 1.2 s on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine. Fig. 2 DetourMatrix algorithm. The chemical structures are split into subgraphs by all articulation pointsterm. Then, the detour matrix of each subgraph is calculated. Finally, the detour matrices of subgraphs are merged and other elements are filled The Chi descriptorterm is calculated by matching all Smiles Arbitrary Target Specification (SMARTS) patterns in CDK. This approach is time consuming and cannot be used to calculate the higher-order Chi descriptorterm. The depth-first searchterm is used in Mordredterm to overcome these issues.
The Framework descriptorterm is calculated using the function to match the molecular framework in CDK. However, during this processterm·var, this function also performs extra calculations to solve more general cases, such as enumerating the atoms in a molecular framework. Those calculations are not necessary for the derivation of the Framework descriptorterm and they are removed in Mordredterm.
The MolecularId descriptorterm calls the internal pure function with the same arguments many times in CDK. The returned values of these function calls are cached to avoid same calculationsterm in Mordredterm.
Create user interface The CLIterm is additionally implemented for non-Python users (Code 9). Accordingly, the entire set or subset of molecular descriptorsterm can be calculated in CPU parallel computingterm. The results are provided in CSV format.
Mordredterm is also available as a web applicationterm (Fig. 3 ). The web interface is available when the Mordredterm web module is executed (to this end, the Mordredterm web package is required; the method to install this package is explained in the GitHub repository). The web interface enables beginners to easily calculate descriptorsterm and study QSAR. In addition, Mordredterm can be installed on a server by an administrator. In this case, users can calculate descriptorsterm using resources of the server simply by accessing the web page. Fig. 3 Web interface. a Top page of the web interface to upload a structure file, b preview page to check the conformation of compounds, c result page to confirm the descriptive statistics value of calculated descriptorsterm and download the results The web interface can work with a multi-core processor. Submitted tasks are fairly processed. A demonstration server is available at http://mordredterm.phs.osaka-u.ac.jp . This demonstration page works well on most widely used web browsers with current versions, such as Safari version 10+, Google Chrome version 61+, Internet Explorer version 11+, Microsoft Edge version 40+, and Firefox version 55+. However, certain browsers on some devices with legacy graphics drivers may not support this page, in which case another browser should be considered.
The usage of this demonstration page is quite simple. Briefly, a SMILE or SDF file containing single or multiple structures can be uploaded from the front page. Hydrogens can be automatically added when needed. “Generate 3D conformer” and “Desalt” buttons provide two preprocessing options. When the submission succeeds, the structures are displayed at the center of the screen. When multiple structures are uploaded, the structure can be shifted without refreshing the page by clicking the arrow buttons. If 3D conformers are provided or created, conformers can be scaled by using the middle button of the mouse, and they can be rotated by the left button of the mouse. The uploaded molecules can be downloaded in both SMILES and SDF formats by clicking the download button, which is on the right of the displayed file name. Atom names can be confirmed by hovering over the mouse.
A configuration button on the top right provides the selection options for the following descriptorterm calculations. By clicking the “calculate” button, users can obtain the values and summaries of descriptorsterm, as well as the calculation log. To maintain server safety, the maximum molecule number that can be uploaded at one time is limited to 200 in this demonstration server. However, this limitation is not set by default when the user constructs his/her own server.
Results and discussion Performance benchmark To determine the speed of the calculation of molecular descriptorsterm, we performed a benchmark test. All tests were performed on an Intel ® Core™ i7-5930 K CPU, DDR4-2133 (quad channel) 64 GB memory machine. We used entries from the KEGG-drug databaseterm [ 32 ] as the benchmark target. We obtained 3D structures from the LigandBox databaseterm [ 33 ]. Compounds in the dataset were converted from Tripos mol2 format to MDL mol format using Open Babel. Then, the compounds were split with respect to the number of atomsterm·var using RDKitterm to evaluate the time complexity. After these procedures, 7197 compounds remained. The frequency table of the number of atomsterm·var is shown as Table 5 . Table 5 Number of atomsterm·var in the benchmark dataset Number of atomsterm·var Compounds Cumulative percentage (0, 25] 917 12.74 (25, 50] 3412 60.15 (50, 75] 2180 90.44 (75, 100] 366 95.53 (100, 125] 147 97.57 (125, 150] 79 98.67 (150, 175] 37 99.18 (175, 200] 33 99.64 (200, 225] 12 99.81 (225, 250] 7 99.90 (250, 275] 2 99.93 (275, 300] 3 99.97 (300, 325] 1 99.99 (325, 350] 0 99.99 (350, 375] 1 100.00 (·,·] denotes a left-open and right-closed interval We used libPaDEL-Descriptor, which is included in the source code of PaDEL-Descriptorterm, to evaluate the performance of the PaDEL-Descriptorterm because it excludes the extra descriptorterm calculation timeterm, such as the file IO and molecular preprocessing. In addition, it evaluates the exact calculation timeterm. First, each molecular descriptorterm·def was calculated three times to perform a just-in-time compilation. Then, each molecular descriptorterm·def was calculated ten times to evaluate the performance. Garbage collection was performed before each molecular-descriptor calculation. In the Mordredterm benchmark test, calculations were carried out ten times after disabling garbage collection.
The CLI benchmark testterm was performed to estimate real-world and multi-processor performance. We used the same machine. Up to 100 atoms compounds were used from the same dataset to avoid timeouts in PaDEL-Descriptorterm. We performed a benchmark test using one to six (the number of physical cores of an Intel Core i7-5930 K) threadsterm·var (in PaDEL-Descriptorterm) or processesterm·var (in Mordredterm). Each benchmark was repeated ten times.
The total calculation timeterm per molecule is shown in Fig. 4 and the calculation timeterm of each descriptorterm per molecule is shown in Fig. 5 . For the descriptorterm selection in Fig. 5 , the mean calculation timeterm of Mordredterm and/or PaDEL-Descriptorterm was over 0.1 s. DetourMatrix, Framework, and MolecularId descriptorterm calculation using PaDEL-Descriptorterm timed out when calculating descriptions for 5, 40, and 8 compounds. Figure 5 shows that AcidBase, BCUT, BaryszMatrix, Chi, DetourMatrix, Estate, and Framework are dramatically faster than the same calculationsterm in PaDEL-Descriptorterm. The benchmark of Chi, DetourMatrix, Framework, and MolecularId shows the effects of improving the algorithm. On the other hand, a notable algorithm improvement is not achieved in AcidBase, BCUT, BaryszMatrix, or Estate. A performance difference of functions used in these descriptorsterm between CDK and RDKitterm is apparent. PaDEL-Descriptorterm is faster than Mordredterm for many descriptorterm calculations, even though they both use the same algorithm. This is because Java is faster than Python for many cases. However, these descriptorsterm can be calculated in a very short time even if Python is used. Thus, the total calculation timeterm of Mordredterm, shown in Fig. 4 , is much lower than that of PaDEL-Descriptorterm. Some descriptorsterm, such as DetourMatrix, which result in a time-out in PaDEL-Descriptorterm can be calculated using Mordredterm. This improvement not only makes the calculation faster, but it also permits the calculation of descriptorsterm of large molecules that cannot be calculated using other software owing to time complexity. Fig. 4 Calculation timeterm for all descriptorsterm. Comparison of Mordredterm and PaDEL-Descriptorterm in terms of the mean descriptorterm calculation timeterm per molecule arranged by its number of atomsterm·var. The vertical axis shows the mean time of calculating all descriptorsterm of single molecule. The horizontal axis shows class interval of number of atomsterm·var Fig. 5 Calculation timeterm for each descriptorterm. Comparison of Mordredterm and PaDEL-Descriptorterm in terms of the mean descriptorterm calculation timeterm of each kind of descriptorterm over 0.1 s in Mordredterm and/or PaDEL-Descriptorterm. The vertical axis shows the mean time of calculating the descriptorterm of single molecule. The horizontal axis shows the class interval of the number of atomsterm·var The results of the CLI benchmark testterm are shown in Fig. 6 . PaDEL-Descriptorterm can be scaled by up to three threadsterm·var, while Mordredterm can be scaled by up to five threadsterm·var. Moreover, Mordredterm is more than twofold faster than PaDEL-Descriptorterm for all tests, and it is four times faster for the six-thread test. These results demonstrate that Mordredterm is significantly more efficient than PaDEL-Descriptorterm. Fig. 6 Throughput of CLIterm. A comparison of Mordredterm and PaDEL-Descriptorterm on the throughput of the CLIterm using one to six threadsterm·var Comparison with other software Mordredterm is superior to other software programs in several aspects. First, it is open-source software. Moreover, Mordredterm and all software used by it are licensed under the non-copyleft open-source license. This implies that it can be used in proprietary software. In addition, users can easily report a bug, request new features, and send patches on GitHub.
Second, it is easy to use. Mordredterm can be installed using only one command, whereas other Python molecular-descriptor calculation libraries (e.g., cinfony, ChemoPy) have more dependencies that require manual installation. The CLIterm and web interface can also be launched using a single command. Third, it has high flexibility. Mordredterm can calculate uncommon-range descriptorsterm without modifying the source code. Users can create new molecular descriptorsterm, such as the product termterm, by easily using the descriptor arithmeticterm feature. Additionally, the Mordredterm library can be simply accessed by using the presets in the Descriptor classterm. Finally, it is fast. Mordredterm can calculate an entire molecular descriptorterm·def twice as fast as PaDEL-Descriptorterm. Furthermore, the time complexity for some molecular descriptorsterm is reduced in Mordredterm. As a result, it can be used for calculating the descriptorsterm for large molecules that cannot be calculated using other software.
Limitations There are some potential defectsterm in Mordredterm and/or its dependent libraries. We are receptive to feedback, questions, and bug reports via both email and GitHub.
Conclusion In this paper, we proposed one molecular descriptorterm·def calculation software named Mordredterm. This software is easy to install and use, generates abundant molecular descriptorsterm in a high calculation speed. It can be installed using a single command and has a web interface. Mordredterm can calculate more than 1800 descriptorsterm and calculates all descriptorsterm in acceptable time. Our proposed software was released under a 3-clause BSD license on https://github.com/mordred-descriptor .
Additional files Additional file 1. The variations among descriptor valuesterm·var calculated by Mordredterm and other software programs. Additional file 2. A confirmation of the variation among descriptor valuesterm·var calculated by Mordredterm and other software programs (PaDEL-Descriptorterm, chemopy and e-dragon).The results of some descriptorsterm (e.g., 0167) are not available in all software because the descriptorterm of the molecule cannot be algorithmically calculated. Additional file 3. All descriptorterm list. Additional file 4. Code examples.