giovannipizzi / seekpath

A module to obtain and visualize k-vector coefficients and obtain band paths in the Brillouin zone of crystal structures
Other
114 stars 45 forks source link

symmetry info is not right for some structure #36

Closed simonnier closed 6 years ago

simonnier commented 6 years ago

Dear developers, I have a structure which is monoclinic and spacegroup C2/m (No.12). The cif file can be downloaded here But when I feed this structure into seekpath.get_path, no matter what threshold I set, it always shows the spacegroup is P1(No.1) and bravais lattice is aP. On the other hand, the spglib.get_symmetry_dataset do return P1 with the default symprec=1e-5. But it will return C2/m with symprec=5e-4. So, I am wondering if there is something wrong with threshold in seekpath.get_path ?

best regards

giovannipizzi commented 6 years ago

Hi, indeed, the 'threshold' in seek path is not the symprec of spglib, but it's used e.g. to detect if the system is cubic or tetragonal, etc. See e.g. https://github.com/giovannipizzi/seekpath/blob/c0091c1692d3dbcac7e6322b391ade50f8d34644/seekpath/hpkot/__init__.py#L85

We need to add another parameter.

giovannipizzi commented 6 years ago

Hi, I just implemented what you were asking in the branch fix_36_symprec. Before I merge and make a new release, could you check that it works for you? All relevant functions now have two additional parameters, symprec and angle_tolerance that are passed to SPGLIB. To test, you can (in a new folder)

git clone https://github.com/giovannipizzi/seekpath.git
cd seekpath
git checkout fix_36_symprec
pip install -e .

that will replace the current seekpath installation with the one you downloaded.

Could you please report back if it works, so I merge and make a new release? Thanks!

simonnier commented 6 years ago

Hi, @giovannipizzi . Thank you so much for quick fix. I just tried it. It works as expected. Will this symprec option be added to the web version seekpath? I think this option is important to get correct view of k path. Also, I am confused about the usage of "threshold". Doesn't spacegroup determine everything? Why do we need "threshold" to test cubic or tetragonal?

best regards

simonnier commented 6 years ago

Hi, @giovannipizzi . By the way, I notice that you are one of the authors of wannier90. I recently made a bug report on github and got no reply for a week. Does github of wannier90 not maintained an more?

best regards

giovannipizzi commented 6 years ago

I opened #37 for the web interface, I will not manage to work on it soon.

The "threshold" is needed for seekpath-specific things. E.g., for a given Bravais lattice, different topologies of the BZ are possible (even if the space group is the same), e.g. for tetragonal body-centered. You can check the cases by looking at extended Bravais symbols where the third character changes, like tI1 vs tI2 (see our Bravais Symbol Explanation and this is also explained in our paper, see Table 94 for instance). In the specific example of tI we need to check if c<a or c>a but there are more complex cases.

For Wannier90, its actively maintained, we just don't have enough time to react to issues quickly. We'll try to reply there as soon as possible.

simonnier commented 6 years ago

@giovannipizzi . Thank you so much : )