Ticket #10305 (closed: fixed)
Determine symmetry element from SymmetryOperation
Reported by: | Michael Wedel | Owned by: | Michael Wedel |
---|---|---|---|
Priority: | major | Milestone: | Release 3.4 |
Component: | Framework | Keywords: | |
Cc: | Blocked By: | #10280, #11023 | |
Blocking: | Tester: | Federico M Pouzols |
Description
Given the matrix and translation vector of a SymmetryOperation, it is possible to determine the underlying symmetry element and its location. One way to determine it is described in "Determination of the Symmetry Elements of a Space Group from the 'General Positions' listed in International Tables for X-ray Crystallography, Vol. I." (Wondratschek and Neubüser, Acta Crystallogr. 23 (1967), p. 349). I will check more recent literature for alternatives, otherwise I will implement this method, by using the Chain of Responsibility pattern (for each matrix type there will be a handler that generates symmetry element information from a SymmetryOperation instance or passes it on to the next handler).
This way, space group symbols can be generated from the contained symmetry operations.
Change History
comment:3 Changed 6 years ago by Michael Wedel
- Status changed from assigned to inprogress
Refs #10305. Implemented power operator for SymmetryOperation
Changeset: 6081e1b60b23af2e1edadc34b7b2be745cff3709
comment:4 Changed 6 years ago by Michael Wedel
Refs #10305. Applying clang-format to SymmetryOperation changes
Changeset: ef86c958e5dc996e8c2fd6967806c7466261d663
comment:6 Changed 6 years ago by Michael Wedel
Refs #10305. Clang format
Changeset: d21d856b8b89514ca4efe809a3fe5561d4d01749
comment:7 Changed 6 years ago by Michael Wedel
Refs #10305. Experimenting
Changeset: cc11434f4593909820511d46f713a4de3c58eb84
comment:8 Changed 6 years ago by Michael Wedel
Refs #10305. Added SymmetryElement-interface, first unit tests
Introduced the general interface and concrete implementations for identity and inversion, which are special cases.
Changeset: 755ac37b9972731d2032b674a1f8cfc0f0e202c7
comment:9 Changed 6 years ago by Michael Wedel
Refs #10305. Implementing parts of SymmetryElementWithAxis
Changeset: 9e789c9471559dcbaa70ffe7fdc0aba9e6126385
comment:10 Changed 6 years ago by Michael Wedel
Refs #10305. Testing determination of screw/glide component
Changeset: 73012e3c2f2298780b350d7f2e111ff726d06419
comment:11 Changed 6 years ago by Michael Wedel
Refs #10305. Beginning axis-determination method.
Changeset: 980999a298f703ca403a0003453434c4a2550625
comment:12 Changed 6 years ago by Michael Wedel
Refs #10305. Implemented determineAxis method
The implementation uses GSL to solve the general, non-symmetric eigenvalue problem.
Changeset: 6d665692f2bb3f2de17ce027e63ffe277ec42dc8
comment:13 Changed 6 years ago by Michael Wedel
Refs #10305. Removing fix points for now.
Changeset: c35dd713271415e209de7d0cc5c719af14f6ea2a
comment:14 Changed 6 years ago by Michael Wedel
Refs #10305. Correcting variable name in unit test.
Changeset: 1f8f9aaa3849b3e9d39ffa5cb542a4e4148a92e8
comment:15 Changed 6 years ago by Michael Wedel
Refs #10305. Adding method to determine rotation sense.
Changeset: 2f4d3a64e13cfd75ca654c22c3a7c9497af64637
comment:16 Changed 6 years ago by Michael Wedel
Refs #10305. Draft of symbol determination algorithm for rotations.
Changeset: f3d2cfc4cc01dea3187ae1ac79ffc796b90fb851
comment:17 Changed 6 years ago by Michael Wedel
Refs #10305. Removing garbage files from previous merge.
Changeset: 3ba62d2642b155422f6106d7de15b53578456b97
comment:18 Changed 6 years ago by Michael Wedel
Refs #10305. Modifying V3R to get vector with only positive components
Changeset: 30d9fe9bcf665011f42b6cf6f9ea0437f73d87f1
comment:19 Changed 6 years ago by Michael Wedel
Refs #10305. Checkpointing work
Changeset: ae2764853b8812a439dcdfc5f824a50f160c2c0f
comment:20 Changed 6 years ago by Michael Wedel
Refs #10305. Adding general glide plane g.
Some glide planes are "non-conventional", those are labeled "g" in ITA.
Changeset: 4302c5b4197ae6490595792b005638899b180818
comment:21 Changed 6 years ago by Michael Wedel
Refs #10305. Completing Rotation initialization.
Changeset: ef88b9c751beaf50b806c3eff7184e133ab8d6f8
comment:22 Changed 6 years ago by Michael Wedel
Refs #10305. Adding init method for mirrors
Changeset: 34af3b137726c1e357949a7644a6727bf0679a5a
comment:23 Changed 6 years ago by Michael Wedel
Refs #10305. Checkpointing work.
Changeset: fea6c6fd20229f3524b4a64d157de53857dde91f
comment:24 Changed 6 years ago by Michael Wedel
Refs #10305. Fix CMakeLists.txt
Changeset: b065521ba7730125c3b675961f6b16e9f2152b95
comment:25 Changed 6 years ago by Michael Wedel
Refs #10305. Completed SymmetryElementFactory, added tests
Changeset: f94db5f5321cd8ece82a938a98bab068e5ad2aee
comment:26 Changed 6 years ago by Michael Wedel
Refs #10305. Cleaning up SymmetryElement
Changeset: a3b5b54cfd25330f4510c291607bf220fa9b3dc7
comment:27 Changed 6 years ago by Michael Wedel
Refs #10305. Adding translation generator, cleaning up test
Changeset: 49fffd76f9ff1551b74141e659879b7b7a3a0711
comment:28 Changed 6 years ago by Michael Wedel
Refs #10305. Completing doxygen comments for SymmetryElement
Changeset: 4cd4ac709f94e19244adda6827a7662bbfb0d7b5
comment:29 Changed 6 years ago by Michael Wedel
Refs #10305. Finishing documentation for SymmetryElementFactory.
Changeset: a8c0982af64c55c37cec91f8a12cff99934ee3c3
comment:30 Changed 6 years ago by Michael Wedel
Refs #10305. Added std::vector<double>-operator to V3R
Changeset: 63dd804b149981ab16cee38870973f6d5dca4315
comment:31 Changed 6 years ago by Michael Wedel
Refs #10305. Exporting SymmetryElement to python
Changeset: 8bccbec22e393f7c879815ee232cfc6b14c775eb
comment:32 Changed 6 years ago by Michael Wedel
Refs #10305. Introduced aliases for geometry factories
Changeset: 1e043fcb2cd290d6e040141d5e9bd84cb0f4e3f3
comment:33 Changed 6 years ago by Michael Wedel
Refs #10305. Removing experiment from unit test
Changeset: 0ec2464cf353ec9c802386ba79801c1d1e6ce1ad
comment:34 Changed 6 years ago by Michael Wedel
- Status changed from inprogress to verify
- Resolution set to fixed
This is being verified as pull request #314.
comment:35 Changed 6 years ago by Michael Wedel
Refs #10305. Fixing warning and error on windows compiler
Changeset: 8763c5247b8bacb617224f081da13fb47fdc8b77
comment:36 Changed 6 years ago by Michael Wedel
Refs #10305. Using boost::math::round.
As it turns out, "round" is not available on certain systems.
Changeset: 15a4b409a71dbe727c5c67cabd5f66ebc4181129
comment:37 Changed 6 years ago by Michael Wedel
Refs #10305. Wrong label in doctest
Changeset: ac774eb80b967aee8eb299d9b8c8760193de84e5
comment:38 Changed 6 years ago by Federico M Pouzols
- Status changed from verify to verifying
- Tester set to Federico M Pouzols
comment:39 Changed 6 years ago by Federico M Pouzols
All tests pass. Code and doc look very need, and it is all extensively tested.
I'd suggest adding a comment in the code/doxygen blocks about the chain of responsibility pattern, as you describe in the ticket. That could help people follow the code in the future.
comment:40 Changed 6 years ago by Michael Wedel
Refs #10305. Implemented power operator for SymmetryOperation
Changeset: 6081e1b60b23af2e1edadc34b7b2be745cff3709
comment:41 Changed 6 years ago by Michael Wedel
Refs #10305. Clang format
Changeset: d21d856b8b89514ca4efe809a3fe5561d4d01749
comment:42 Changed 6 years ago by Michael Wedel
Refs #10305. Experimenting
Changeset: cc11434f4593909820511d46f713a4de3c58eb84
comment:43 Changed 6 years ago by Michael Wedel
Refs #10305. Applying clang-format to SymmetryOperation changes
Changeset: ef86c958e5dc996e8c2fd6967806c7466261d663
comment:44 Changed 6 years ago by Michael Wedel
- Status changed from verifying to closed
Merge branch 'feature/10305_symmetry_element_from_operation' of https://github.com/mantidproject/mantid into feature/10305_symmetry_element_from_operation
Full changeset: 1cd2b56c22178adebebfb9e533a8cc08e751f55c
comment:45 Changed 6 years ago by Michael Wedel
Refs #10305. Added SymmetryElement-interface, first unit tests
Introduced the general interface and concrete implementations for identity and inversion, which are special cases.
Changeset: 755ac37b9972731d2032b674a1f8cfc0f0e202c7
comment:46 Changed 6 years ago by Michael Wedel
Refs #10305. Implementing parts of SymmetryElementWithAxis
Changeset: 9e789c9471559dcbaa70ffe7fdc0aba9e6126385
comment:47 Changed 6 years ago by Michael Wedel
Refs #10305. Testing determination of screw/glide component
Changeset: 73012e3c2f2298780b350d7f2e111ff726d06419
comment:48 Changed 6 years ago by Michael Wedel
Refs #10305. Beginning axis-determination method.
Changeset: 980999a298f703ca403a0003453434c4a2550625
comment:49 Changed 6 years ago by Michael Wedel
Refs #10305. Implemented determineAxis method
The implementation uses GSL to solve the general, non-symmetric eigenvalue problem.
Changeset: 6d665692f2bb3f2de17ce027e63ffe277ec42dc8
comment:50 Changed 6 years ago by Michael Wedel
Refs #10305. Removing fix points for now.
Changeset: c35dd713271415e209de7d0cc5c719af14f6ea2a
comment:51 Changed 6 years ago by Michael Wedel
Refs #10305. Correcting variable name in unit test.
Changeset: 1f8f9aaa3849b3e9d39ffa5cb542a4e4148a92e8
comment:52 Changed 6 years ago by Michael Wedel
Refs #10305. Adding method to determine rotation sense.
Changeset: 2f4d3a64e13cfd75ca654c22c3a7c9497af64637
comment:53 Changed 6 years ago by Michael Wedel
Refs #10305. Draft of symbol determination algorithm for rotations.
Changeset: f3d2cfc4cc01dea3187ae1ac79ffc796b90fb851
comment:54 Changed 6 years ago by Michael Wedel
Refs #10305. Removing garbage files from previous merge.
Changeset: 3ba62d2642b155422f6106d7de15b53578456b97
comment:55 Changed 6 years ago by Michael Wedel
Refs #10305. Modifying V3R to get vector with only positive components
Changeset: 30d9fe9bcf665011f42b6cf6f9ea0437f73d87f1
comment:56 Changed 6 years ago by Michael Wedel
Refs #10305. Checkpointing work
Changeset: ae2764853b8812a439dcdfc5f824a50f160c2c0f
comment:57 Changed 6 years ago by Michael Wedel
Refs #10305. Adding general glide plane g.
Some glide planes are "non-conventional", those are labeled "g" in ITA.
Changeset: 4302c5b4197ae6490595792b005638899b180818
comment:58 Changed 6 years ago by Michael Wedel
Refs #10305. Completing Rotation initialization.
Changeset: ef88b9c751beaf50b806c3eff7184e133ab8d6f8
comment:59 Changed 6 years ago by Michael Wedel
Refs #10305. Adding init method for mirrors
Changeset: 34af3b137726c1e357949a7644a6727bf0679a5a
comment:60 Changed 6 years ago by Michael Wedel
Refs #10305. Checkpointing work.
Changeset: fea6c6fd20229f3524b4a64d157de53857dde91f
comment:61 Changed 6 years ago by Michael Wedel
Refs #10305. Fix CMakeLists.txt
Changeset: b065521ba7730125c3b675961f6b16e9f2152b95
comment:62 Changed 6 years ago by Michael Wedel
Refs #10305. Completed SymmetryElementFactory, added tests
Changeset: f94db5f5321cd8ece82a938a98bab068e5ad2aee
comment:63 Changed 6 years ago by Michael Wedel
Refs #10305. Cleaning up SymmetryElement
Changeset: a3b5b54cfd25330f4510c291607bf220fa9b3dc7
comment:64 Changed 6 years ago by Michael Wedel
Refs #10305. Adding translation generator, cleaning up test
Changeset: 49fffd76f9ff1551b74141e659879b7b7a3a0711
comment:65 Changed 6 years ago by Michael Wedel
Refs #10305. Completing doxygen comments for SymmetryElement
Changeset: 4cd4ac709f94e19244adda6827a7662bbfb0d7b5
comment:66 Changed 6 years ago by Michael Wedel
Refs #10305. Finishing documentation for SymmetryElementFactory.
Changeset: a8c0982af64c55c37cec91f8a12cff99934ee3c3
comment:67 Changed 6 years ago by Michael Wedel
Refs #10305. Added std::vector<double>-operator to V3R
Changeset: 63dd804b149981ab16cee38870973f6d5dca4315
comment:68 Changed 6 years ago by Michael Wedel
Refs #10305. Exporting SymmetryElement to python
Changeset: 8bccbec22e393f7c879815ee232cfc6b14c775eb
comment:69 Changed 6 years ago by Michael Wedel
Refs #10305. Introduced aliases for geometry factories
Changeset: 1e043fcb2cd290d6e040141d5e9bd84cb0f4e3f3
comment:70 Changed 6 years ago by Michael Wedel
Refs #10305. Updated point group concept page.
Changeset: ea98c4838c784e6125d27b5357d207222c8a569b
comment:71 Changed 6 years ago by Michael Wedel
Refs #10305. Removing experiment from unit test
Changeset: 0ec2464cf353ec9c802386ba79801c1d1e6ce1ad
comment:72 Changed 6 years ago by Michael Wedel
Refs #10305. Fixing warning and error on windows compiler
Changeset: 8763c5247b8bacb617224f081da13fb47fdc8b77
comment:73 Changed 6 years ago by Michael Wedel
Refs #10305. Using boost::math::round.
As it turns out, "round" is not available on certain systems.
Changeset: 15a4b409a71dbe727c5c67cabd5f66ebc4181129
comment:74 Changed 6 years ago by Michael Wedel
Refs #10305. Wrong label in doctest
Changeset: ac774eb80b967aee8eb299d9b8c8760193de84e5
comment:75 Changed 6 years ago by Federico M Pouzols
Merge pull request #314 from mantidproject/feature/10305_symmetry_element_from_operation
Derive symmetry elements from symmetry operations
Full changeset: 39634f0adaa35104cf0187b689051116030412b6
comment:76 Changed 5 years ago by Nick Draper
Somehow these slipped through without a resolution. Set to Fixed.
comment:77 Changed 5 years ago by Stuart Campbell
This ticket has been transferred to github issue 11147