Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/develop' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
vachram97 committed Jun 4, 2024
2 parents 3703d3a + 347a0c0 commit c809024
Show file tree
Hide file tree
Showing 6 changed files with 2,138 additions and 3 deletions.
5 changes: 4 additions & 1 deletion package/CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,14 @@ The rules for this file:
-------------------------------------------------------------------------------
??/??/?? IAlibay, HeetVekariya, marinegor, lilyminium, RMeli,
ljwoods2, aditya292002, pstaerk, PicoCentauri, BFedder,
tyler.je.reddy, SampurnaM, leonwehrhan, kainszs, orionarcher
tyler.je.reddy, SampurnaM, leonwehrhan, kainszs, orionarcher,
yuxuanzhuang

* 2.8.0

Fixes
* Fix PSFParser error when encoutering string-like resids
* (Issue #2053, Issue #4189 PR #4582)
* Fix `MDAnalysis.analysis.align.AlignTraj` not accepting writer kwargs
(Issue #4564, PR #4565)
* Fix #4259 via removing argument `parallelizable` of `NoJump` transformation.
Expand Down
32 changes: 32 additions & 0 deletions package/MDAnalysis/lib/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@
from functools import wraps
import textwrap
import weakref
import itertools

import numpy as np

Expand Down Expand Up @@ -2559,3 +2560,34 @@ def no_copy_shim():
else:
copy = False
return copy


def atoi(s: str) -> int:
"""Convert the leading number part of a string to an integer.
Parameters
----------
s : str
The string to convert to an integer.
Returns
-------
number : int
The first numeric part of the string converted to an integer.
If the string does not start with a number, 0 is returned.
Examples
--------
>>> from MDAnalysis.lib.util import atoi
>>> atoi('34f4')
34
>>> atoi('foo')
0
.. versionadded:: 2.8.0
"""
try:
return int(''.join(itertools.takewhile(str.isdigit, s.strip())))
except ValueError:
return 0
9 changes: 7 additions & 2 deletions package/MDAnalysis/topology/PSFParser.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
from math import ceil
import numpy as np

from ..lib.util import openany
from ..lib.util import openany, atoi
from .base import TopologyReaderBase, squash_by, change_squash
from ..core.topologyattrs import (
Atomids,
Expand Down Expand Up @@ -88,6 +88,10 @@ class PSFParser(TopologyReaderBase):
- impropers
.. _PSF: http://www.charmm.org/documentation/c35b1/struct.html
.. versionchanged:: 2.8.0
PSFParser now reads string resids and converts them to integers.
"""
format = 'PSF'

Expand Down Expand Up @@ -247,7 +251,8 @@ def _parseatoms(self, lines, atoms_per, numlines):
}
atom_parser = atom_parsers[self._format]
# once partitioned, assigned each component the correct type
set_type = lambda x: (int(x[0]) - 1, x[1] or "SYSTEM", int(x[2]), x[3],
set_type = lambda x: (int(x[0]) - 1, x[1] or "SYSTEM",
atoi(x[2]), x[3],
x[4], x[5], float(x[6]), float(x[7]))

# Oli: I don't think that this is the correct OUTPUT format:
Expand Down
Loading

0 comments on commit c809024

Please sign in to comment.