Ticket #10305 (closed: fixed)

Opened 6 years ago

Last modified 5 years ago

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:1 Changed 6 years ago by Martyn Gigg

  • Status changed from new to assigned

comment:2 Changed 6 years ago by Michael Wedel

  • Milestone changed from Release 3.3 to Release 3.4

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:5 Changed 6 years ago by Michael Wedel

  • Blocked By 11023 added

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

Note: See TracTickets for help on using tickets.