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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
154 changes: 78 additions & 76 deletions tests/cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class ReferenceCase:
expected_markdown: str
pmid: int | None = None
arxiv: str | None = None
skip_reason: str | None = None

@property
def expected_text(self) -> str:
Expand Down Expand Up @@ -390,82 +391,83 @@ def expected_text(self) -> str:
expected_markdown=r"Jinzhe Zeng, Linfeng Zhang, Han Wang, Tong Zhu, Exploring the Chemical Space of Linear Alkane Pyrolysis via Deep Potential GENerator, *Energy Fuels*, 2021, 35, 762-769, DOI: [10.1021/acs.energyfuels.0c03211](https://doi.org/10.1021/acs.energyfuels.0c03211). [![Citations](https://citations.njzjz.win/10.1021/acs.energyfuels.0c03211)](https://badge.dimensions.ai/details/doi/10.1021/acs.energyfuels.0c03211)",
),
# ChemRxiv
# ReferenceCase(
# reference=Reference(
# author=[
# Author(first="Manyi", last="Yang"),
# Author(first="Duo", last="Zhang"),
# Author(first="Xinyan", last="Wang"),
# # why not Linfeng???
# Author(first="Lingfeng", last="Zhang"),
# Author(first="Tong", last="Zhu"),
# Author(first="Han", last="Wang"),
# ],
# title="Ab initio Accuracy Neural Network Potential for Drug-like Molecules",
# journal="ChemRxiv",
# year=2024,
# annote=textwrap.dedent("""\
# <jats:p>The advent of machine learning
# (ML) in computational chemistry heralds a transformative approach to
# one of the quintessential challenges in computer-aided drug design
# (CADD): the accurate and cost-effective calculation of atomic
# interactions. By leveraging a neural network (NN) potential, we
# address this balance and push the boundaries of the NN potential's
# representational capacity. Our work details the development of a
# robust general-purpose NN potential, architected on the framework of
# DPA-2, a deep learning potential with attention, which demonstrates
# remarkable fidelity in replicating the interatomic potential energy
# surface for drug-like molecules comprising eight critical chemical
# elements: H, C, N, O, F, S, Cl, and P. We employed state-of-the-art
# molecular dynamic techniques, including temperature acceleration and
# enhanced sampling, to construct a comprehensive dataset to ensure
# exhaustive coverage of relevant configurational spaces. Our rigorous
# testing protocols, including torsion scanning, global minimum
# searches, and high-temperature MD simulations across various organic
# molecules, have culminated in an NN model that achieves chemical
# precision commensurate with the highly regarded DFT model, while
# significantly outstripping the accuracy of prevalent semi-empirical
# methods. This study presents a leap forward in the predictive
# modelling of molecular interactions, offering extensive applications
# in drug development and beyond.</jats:p>
# """)
# .strip()
# .replace("\n", " "),
# doi="10.26434/chemrxiv-2024-sq8nh",
# ),
# expected_bibtex=textwrap.dedent(r"""
# @Article{Yang_ChemRxiv_2024,
# author = {Manyi Yang and Duo Zhang and Xinyan Wang and Lingfeng Zhang and Tong
# Zhu and Han Wang},
# title = {{Ab initio Accuracy Neural Network Potential for Drug-like Molecules}},
# journal = {ChemRxiv},
# year = 2024,
# doi = {10.26434/chemrxiv-2024-sq8nh},
# abstract = {The advent of machine learning (ML) in computational chemistry heralds
# a transformative approach to one of the quintessential challenges in
# computer-aided drug design (CADD): the accurate and cost-effective
# calculation of atomic interactions. By leveraging a neural network
# (NN) potential, we address this balance and push the boundaries of the
# NN potential's representational capacity. Our work details the
# development of a robust general-purpose NN potential, architected on
# the framework of DPA-2, a deep learning potential with attention,
# which demonstrates remarkable fidelity in replicating the interatomic
# potential energy surface for drug-like molecules comprising eight
# critical chemical elements: H, C, N, O, F, S, Cl, and P. We employed
# state-of-the-art molecular dynamic techniques, including temperature
# acceleration and enhanced sampling, to construct a comprehensive
# dataset to ensure exhaustive coverage of relevant configurational
# spaces. Our rigorous testing protocols, including torsion scanning,
# global minimum searches, and high-temperature MD simulations across
# various organic molecules, have culminated in an NN model that
# achieves chemical precision commensurate with the highly regarded DFT
# model, while significantly outstripping the accuracy of prevalent
# semi-empirical methods. This study presents a leap forward in the
# predictive modelling of molecular interactions, offering extensive
# applications in drug development and beyond.},
# }""").strip(),
# expected_markdown=r"Manyi Yang, Duo Zhang, Xinyan Wang, Lingfeng Zhang, Tong Zhu, Han Wang, Ab initio Accuracy Neural Network Potential for Drug-like Molecules, *ChemRxiv*, 2024, DOI: [10.26434/chemrxiv-2024-sq8nh](https://doi.org/10.26434/chemrxiv-2024-sq8nh). [![Citations](https://citations.njzjz.win/10.26434/chemrxiv-2024-sq8nh)](https://badge.dimensions.ai/details/doi/10.26434/chemrxiv-2024-sq8nh)",
# ),
ReferenceCase(
reference=Reference(
author=[
Author(first="Manyi", last="Yang"),
Author(first="Duo", last="Zhang"),
Author(first="Xinyan", last="Wang"),
# why not Linfeng???
Author(first="Lingfeng", last="Zhang"),
Author(first="Tong", last="Zhu"),
Author(first="Han", last="Wang"),
],
title="Ab initio Accuracy Neural Network Potential for Drug-like Molecules",
journal="ChemRxiv",
year=2024,
annote=textwrap.dedent("""\
<jats:p>The advent of machine learning
(ML) in computational chemistry heralds a transformative approach to
one of the quintessential challenges in computer-aided drug design
(CADD): the accurate and cost-effective calculation of atomic
interactions. By leveraging a neural network (NN) potential, we
address this balance and push the boundaries of the NN potential's
representational capacity. Our work details the development of a
robust general-purpose NN potential, architected on the framework of
DPA-2, a deep learning potential with attention, which demonstrates
remarkable fidelity in replicating the interatomic potential energy
surface for drug-like molecules comprising eight critical chemical
elements: H, C, N, O, F, S, Cl, and P. We employed state-of-the-art
molecular dynamic techniques, including temperature acceleration and
enhanced sampling, to construct a comprehensive dataset to ensure
exhaustive coverage of relevant configurational spaces. Our rigorous
testing protocols, including torsion scanning, global minimum
searches, and high-temperature MD simulations across various organic
molecules, have culminated in an NN model that achieves chemical
precision commensurate with the highly regarded DFT model, while
significantly outstripping the accuracy of prevalent semi-empirical
methods. This study presents a leap forward in the predictive
modelling of molecular interactions, offering extensive applications
in drug development and beyond.</jats:p>
""")
.strip()
.replace("\n", " "),
doi="10.26434/chemrxiv-2024-sq8nh",
),
expected_bibtex=textwrap.dedent(r"""
@Article{Yang_ChemRxiv_2024,
author = {Manyi Yang and Duo Zhang and Xinyan Wang and Lingfeng Zhang and Tong
Zhu and Han Wang},
title = {{Ab initio Accuracy Neural Network Potential for Drug-like Molecules}},
journal = {ChemRxiv},
year = 2024,
doi = {10.26434/chemrxiv-2024-sq8nh},
abstract = {The advent of machine learning (ML) in computational chemistry heralds
a transformative approach to one of the quintessential challenges in
computer-aided drug design (CADD): the accurate and cost-effective
calculation of atomic interactions. By leveraging a neural network
(NN) potential, we address this balance and push the boundaries of the
NN potential's representational capacity. Our work details the
development of a robust general-purpose NN potential, architected on
the framework of DPA-2, a deep learning potential with attention,
which demonstrates remarkable fidelity in replicating the interatomic
potential energy surface for drug-like molecules comprising eight
critical chemical elements: H, C, N, O, F, S, Cl, and P. We employed
state-of-the-art molecular dynamic techniques, including temperature
acceleration and enhanced sampling, to construct a comprehensive
dataset to ensure exhaustive coverage of relevant configurational
spaces. Our rigorous testing protocols, including torsion scanning,
global minimum searches, and high-temperature MD simulations across
various organic molecules, have culminated in an NN model that
achieves chemical precision commensurate with the highly regarded DFT
model, while significantly outstripping the accuracy of prevalent
semi-empirical methods. This study presents a leap forward in the
predictive modelling of molecular interactions, offering extensive
applications in drug development and beyond.},
}""").strip(),
expected_markdown=r"Manyi Yang, Duo Zhang, Xinyan Wang, Lingfeng Zhang, Tong Zhu, Han Wang, Ab initio Accuracy Neural Network Potential for Drug-like Molecules, *ChemRxiv*, 2024, DOI: [10.26434/chemrxiv-2024-sq8nh](https://doi.org/10.26434/chemrxiv-2024-sq8nh). [![Citations](https://citations.njzjz.win/10.26434/chemrxiv-2024-sq8nh)](https://badge.dimensions.ai/details/doi/10.26434/chemrxiv-2024-sq8nh)",
skip_reason="ChemRxiv API broken",
),
# chapter
ReferenceCase(
reference=Reference(
Expand Down
22 changes: 18 additions & 4 deletions tests/test_from_identifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,35 @@

from wenxian.from_identifier import from_identifier

from .cases import TEST_CASES
from .cases import TEST_CASES, ReferenceCase


def _create_test_param(test_case: ReferenceCase, identifier: str | None):
"""Create a pytest.param with skip marks if needed."""
return pytest.param(
identifier,
test_case.reference,
marks=pytest.mark.skip(reason=test_case.skip_reason)
if test_case.skip_reason
else (),
)


@pytest.mark.parametrize(
"identifier, expected",
[
*[(test_case.reference.doi, test_case.reference) for test_case in TEST_CASES],
*[
_create_test_param(test_case, test_case.reference.doi)
for test_case in TEST_CASES
],
*[
# from_identifier accept str
(str(test_case.pmid), test_case.reference)
_create_test_param(test_case, str(test_case.pmid))
for test_case in TEST_CASES
if test_case.pmid is not None
],
*[
(test_case.arxiv, test_case.reference)
_create_test_param(test_case, test_case.arxiv)
for test_case in TEST_CASES
if test_case.arxiv is not None
],
Expand Down
22 changes: 18 additions & 4 deletions tests/test_output.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,44 @@

import pytest

from .cases import TEST_CASES
from .cases import TEST_CASES, ReferenceCase

if TYPE_CHECKING:
from wenxian.reference import Reference


def _create_test_param(test_case: ReferenceCase, expected_value: str):
"""Create a pytest.param with skip marks if needed."""
return pytest.param(
test_case.reference,
expected_value,
marks=pytest.mark.skip(reason=test_case.skip_reason)
if test_case.skip_reason
else (),
)


@pytest.mark.parametrize(
"reference, expected", [(cc.reference, cc.expected_bibtex) for cc in TEST_CASES]
"reference, expected",
[_create_test_param(cc, cc.expected_bibtex) for cc in TEST_CASES],
)
def test_bibtex(reference: Reference, expected):
"""Test generating BibTeX entries from references."""
assert reference.bibtex.strip() == expected


@pytest.mark.parametrize(
"reference, expected", [(cc.reference, cc.expected_markdown) for cc in TEST_CASES]
"reference, expected",
[_create_test_param(cc, cc.expected_markdown) for cc in TEST_CASES],
)
def test_markdown(reference: Reference, expected):
"""Test generating Markdown from references."""
assert reference.markdown.strip() == expected


@pytest.mark.parametrize(
"reference, expected", [(cc.reference, cc.expected_text) for cc in TEST_CASES]
"reference, expected",
[_create_test_param(cc, cc.expected_text) for cc in TEST_CASES],
)
def test_text(reference: Reference, expected):
"""Test generating text from references."""
Expand Down
Loading