Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

style: enforce LF line ending #661

Merged
merged 3 commits into from
May 22, 2024
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
36 changes: 18 additions & 18 deletions .github/workflows/test_import.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
name: test Python import
on:
- push
- pull_request
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
architecture: 'x64'
- run: python -m pip install uv
- run: python -m uv pip install --system .
- run: python -c 'import dpdata'
name: test Python import

on:
- push
- pull_request

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
architecture: 'x64'
- run: python -m pip install uv
- run: python -m uv pip install --system .
- run: python -c 'import dpdata'
2 changes: 2 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ repos:
- id: check-merge-conflict
- id: check-symlinks
- id: check-toml
- id: mixed-line-ending
args: ["--fix=lf"]
# Python
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
Expand Down
6 changes: 3 additions & 3 deletions docs/credits.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Authors
=======
Authors
=======

.. git-shortlog-authors::
128 changes: 64 additions & 64 deletions dpdata/orca/output.py
Original file line number Diff line number Diff line change
@@ -1,64 +1,64 @@
from __future__ import annotations
import numpy as np
def read_orca_sp_output(fn: str) -> tuple[np.ndarray, np.ndarray, float, np.ndarray]:
"""Read from ORCA output.
Note that both the energy and the gradient should be printed.
Parameters
----------
fn : str
file name
Returns
-------
np.ndarray
atomic symbols
np.ndarray
atomic coordinates
float
total potential energy
np.ndarray
atomic forces
"""
coord = None
symbols = None
forces = None
energy = None
with open(fn) as f:
flag = 0
for line in f:
if flag in (1, 3, 4):
flag += 1
elif flag == 2:
s = line.split()
if not len(s):
flag = 0
else:
symbols.append(s[0].capitalize())
coord.append([float(s[1]), float(s[2]), float(s[3])])
elif flag == 5:
s = line.split()
if not len(s):
flag = 0
else:
forces.append([float(s[3]), float(s[4]), float(s[5])])
elif line.startswith("CARTESIAN COORDINATES (ANGSTROEM)"):
# coord
flag = 1
coord = []
symbols = []
elif line.startswith("CARTESIAN GRADIENT"):
flag = 3
forces = []
elif line.startswith("FINAL SINGLE POINT ENERGY"):
energy = float(line.split()[-1])
symbols = np.array(symbols)
forces = -np.array(forces)
coord = np.array(coord)
assert coord.shape == forces.shape
return symbols, coord, energy, forces
from __future__ import annotations

import numpy as np


def read_orca_sp_output(fn: str) -> tuple[np.ndarray, np.ndarray, float, np.ndarray]:
"""Read from ORCA output.

Note that both the energy and the gradient should be printed.

Parameters
----------
fn : str
file name

Returns
-------
np.ndarray
atomic symbols
np.ndarray
atomic coordinates
float
total potential energy
np.ndarray
atomic forces
"""
coord = None
symbols = None
forces = None
energy = None
with open(fn) as f:
flag = 0
for line in f:
if flag in (1, 3, 4):
flag += 1
elif flag == 2:
s = line.split()
if not len(s):
flag = 0
else:
symbols.append(s[0].capitalize())
coord.append([float(s[1]), float(s[2]), float(s[3])])
elif flag == 5:
s = line.split()
if not len(s):
flag = 0
else:
forces.append([float(s[3]), float(s[4]), float(s[5])])
elif line.startswith("CARTESIAN COORDINATES (ANGSTROEM)"):
# coord
flag = 1
coord = []
symbols = []
elif line.startswith("CARTESIAN GRADIENT"):
flag = 3
forces = []
elif line.startswith("FINAL SINGLE POINT ENERGY"):
energy = float(line.split()[-1])
symbols = np.array(symbols)
forces = -np.array(forces)
coord = np.array(coord)
assert coord.shape == forces.shape

return symbols, coord, energy, forces
106 changes: 53 additions & 53 deletions dpdata/plugins/orca.py
Original file line number Diff line number Diff line change
@@ -1,53 +1,53 @@
from __future__ import annotations
import numpy as np
from dpdata.format import Format
from dpdata.orca.output import read_orca_sp_output
from dpdata.unit import EnergyConversion, ForceConversion
energy_convert = EnergyConversion("hartree", "eV").value()
force_convert = ForceConversion("hartree/bohr", "eV/angstrom").value()
@Format.register("orca/spout")
class ORCASPOutFormat(Format):
"""ORCA single point energy output.
Note that both the energy and the gradient should be
printed into the output file.
"""
def from_labeled_system(self, file_name: str, **kwargs) -> dict:
"""Read from ORCA single point energy output.
Parameters
----------
file_name : str
file name
**kwargs
keyword arguments
Returns
-------
dict
system data
"""
symbols, coord, energy, forces = read_orca_sp_output(file_name)
atom_names, atom_types, atom_numbs = np.unique(
symbols, return_inverse=True, return_counts=True
)
natoms = coord.shape[0]
return {
"atom_types": atom_types,
"atom_names": list(atom_names),
"atom_numbs": list(atom_numbs),
"coords": coord.reshape((1, natoms, 3)),
"energies": np.array([energy * energy_convert]),
"forces": (forces * force_convert).reshape((1, natoms, 3)),
"cells": np.zeros((1, 3, 3)),
"orig": np.zeros(3),
"nopbc": True,
}
from __future__ import annotations

import numpy as np

from dpdata.format import Format
from dpdata.orca.output import read_orca_sp_output
from dpdata.unit import EnergyConversion, ForceConversion

energy_convert = EnergyConversion("hartree", "eV").value()
force_convert = ForceConversion("hartree/bohr", "eV/angstrom").value()


@Format.register("orca/spout")
class ORCASPOutFormat(Format):
"""ORCA single point energy output.

Note that both the energy and the gradient should be
printed into the output file.
"""

def from_labeled_system(self, file_name: str, **kwargs) -> dict:
"""Read from ORCA single point energy output.

Parameters
----------
file_name : str
file name
**kwargs
keyword arguments

Returns
-------
dict
system data
"""
symbols, coord, energy, forces = read_orca_sp_output(file_name)

atom_names, atom_types, atom_numbs = np.unique(
symbols, return_inverse=True, return_counts=True
)
natoms = coord.shape[0]

return {
"atom_types": atom_types,
"atom_names": list(atom_names),
"atom_numbs": list(atom_numbs),
"coords": coord.reshape((1, natoms, 3)),
"energies": np.array([energy * energy_convert]),
"forces": (forces * force_convert).reshape((1, natoms, 3)),
"cells": np.zeros((1, 3, 3)),
"orig": np.zeros(3),
"nopbc": True,
}
Loading