Question about symmetry analyzer in pymatgen

What exactly does the
SpacegroupAnalyzer(struct).get_point_group_operations()
return? I would expect simply a list of point group SymmOps, once per inequivalent operation, such that taking an arbitrary (low-symmetry) vector would generate all symmetry-equivalent copies of that vector, one entry per copy. This does not seem to be the case:

First, it seems to return the same operation multiple times - specifically, if I take a supercell, it seems to repeat each operation N times, where N is the number of primitive cells in a supercell.

Second, it seems to return operations that do not seem to be a part of the space group: for example, for the following structure (just an artificial arrangement of atoms created to illustrate the point):
A : 4.0 0.0 0.0
B : 0.0 4.0 0.0
C : 0.0 0.0 3.0
PeriodicSite: O (1.0000, 1.0000, 1.3500) [0.2500, 0.2500, 0.4500]
PeriodicSite: O (1.0000, 3.0000, 1.6500) [0.2500, 0.7500, 0.5500]
PeriodicSite: O (3.0000, 1.0000, 1.6500) [0.7500, 0.2500, 0.5500]
PeriodicSite: O (3.0000, 3.0000, 1.3500) [0.7500, 0.7500, 0.4500]

it claims that the point group contains

Rot:
[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. -1.]]
tau
[ 0. 0. 0.]

– I am having difficulty seeing how the point group may contain this element?

Hi SVB,

From a quick glance, it looks like the code in pymatgen returns a list of which has not been filtered for duplicates (specifically for every symmetry operation in the spacegroup, it just generates a point group operation by removing the translational component). I’d file an issue on pymatgen’s github page (or submit a PR!) if you’d like to see this changed.

Can you elaborate on why you think the point group doesn’t apply? When I apply the point group, I get the same structure (sites 0 and 2 switch and then 1 and 3 switch, but it’s still the same structure as far as I can tell).

1 Like

How exactly do you apply it and how do you conclude the sites switch? For site 0, I get
o.operate([0.2500, 0.2500, 0.4500])
array([ 0.25, 0.25, -0.45])
This would be equivalent to [0.25, 0.25, 0.55], however, there is no atom at this position! Site 2 is at [0.75, 0.25, 0.55].

Generally, I don’t see why one would want to remove the translational component “for each symmetry operation in the spacegroup”. First, that is trivial and would not justify a separate function, and second, that seems to be in direct contradiction with the point group definition - aren’t we supposed to keep one point FIXED, rather than disregard the translation?

Ah, I see, thank you for helping me there. I’m honestly not sure why this choice was made, so I would ask on either the pymatgen mailing list or github issues page.

Sorry, wasn’t realizing pymatgen and MP have different support forums, I thought they were the same group.
Not quite sure if you mean you are going to post this issue there or suggesting that I should post myself? If the former - thanks in advance, please keep me posted; if the latter, could you please direct me to the correct forum/page? Thanks.

No problem, we get a fair amount of pymatgen questions here and answer/address them when we can, but our primary expertise here is in the web site and API, so it’s just for this particular issue you’re more likely to get it resolved by going to the source. Here’s the issues page.