Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
mantid
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Code review analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mantidproject
mantid
Commits
a4db2b1f
Commit
a4db2b1f
authored
6 years ago
by
Lynch, Vickie
Browse files
Options
Downloads
Patches
Plain Diff
Refs #24333 optimize sample position for each run
parent
adb532d3
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Framework/Crystal/src/OptimizeCrystalPlacement.cpp
+1
-1
1 addition, 1 deletion
Framework/Crystal/src/OptimizeCrystalPlacement.cpp
Framework/PythonInterface/plugins/algorithms/OptimizeCrystalPlacementByRun.py
+78
-0
78 additions, 0 deletions
...rface/plugins/algorithms/OptimizeCrystalPlacementByRun.py
with
79 additions
and
1 deletion
Framework/Crystal/src/OptimizeCrystalPlacement.cpp
+
1
−
1
View file @
a4db2b1f
...
...
@@ -449,7 +449,7 @@ void OptimizeCrystalPlacement::exec() {
UBinv
.
Invert
();
UBinv
/=
(
2
*
M_PI
);
for
(
int
i
=
0
;
i
<
outPeaks
->
getNumberPeaks
();
++
i
)
{
auto
peak
=
outPeaks
->
getPeak
(
i
);
auto
&
peak
=
outPeaks
->
getPeak
(
i
);
peak
.
setSamplePos
(
peak
.
getSamplePos
()
+
newSampPos
);
int
RunNum
=
peak
.
getRunNumber
();
std
::
string
RunNumStr
=
std
::
to_string
(
RunNum
);
...
...
This diff is collapsed.
Click to expand it.
Framework/PythonInterface/plugins/algorithms/OptimizeCrystalPlacementByRun.py
0 → 100644
+
78
−
0
View file @
a4db2b1f
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
# NScD Oak Ridge National Laboratory, European Spallation Source
# & Institut Laue - Langevin
# SPDX - License - Identifier: GPL - 3.0 +
#pylint: disable=no-init
from
__future__
import
(
absolute_import
,
division
,
print_function
)
from
mantid.api
import
PythonAlgorithm
,
AlgorithmFactory
,
ITableWorkspaceProperty
,
WorkspaceFactory
from
mantid.kernel
import
Direction
from
mantid.simpleapi
import
*
from
mantid
import
mtd
# Create an empty table workspace to be populated by a python script.
class
OptimizeCrystalPlacementByRun
(
PythonAlgorithm
):
def
summary
(
self
):
return
"
Optimizes the sample position for each run in a peaks workspace.
"
def
category
(
self
):
return
'
Crystal
\\
Corrections
'
def
seeAlso
(
self
):
return
[
"
OptimizeCrystalPlacement
"
]
def
PyInit
(
self
):
# Declare properties
self
.
declareProperty
(
ITableWorkspaceProperty
(
"
InputWorkspace
"
,
""
,
Direction
.
Input
),
"
The name of the peaks workspace that will be optimized.
"
)
self
.
declareProperty
(
"
Tolerance
"
,
0.15
,
"
Tolerance of indexing of peaks.
"
)
self
.
declareProperty
(
ITableWorkspaceProperty
(
"
OutputWorkspace
"
,
""
,
Direction
.
Output
),
"
The name of the peaks workspace that will be created.
"
)
def
PyExec
(
self
):
ws
=
self
.
getProperty
(
"
InputWorkspace
"
).
value
ws_append
=
self
.
getProperty
(
"
OutputWorkspace
"
).
value
ws_group
=
'
ws_group
'
tolerance
=
self
.
getProperty
(
"
Tolerance
"
).
value
if
not
ws
.
sample
().
hasOrientedLattice
():
FindUBUsingIndexedPeaks
(
PeaksWorkspace
=
ws
,
Tolerance
=
tolerance
)
num
,
err
=
IndexPeaks
(
PeaksWorkspace
=
ws
,
Tolerance
=
tolerance
)
print
(
'
Initial Number indexed: %s error: %s
\n
'
%
(
num
,
err
))
stats
=
StatisticsOfTableWorkspace
(
InputWorkspace
=
ws
)
stat_col
=
stats
.
column
(
'
Statistic
'
)
minR
=
int
(
stats
.
column
(
'
RunNumber
'
)[
stat_col
.
index
(
'
Minimum
'
)])
maxR
=
int
(
stats
.
column
(
'
RunNumber
'
)[
stat_col
.
index
(
'
Maximum
'
)])
+
1
group
=
[]
for
run
in
range
(
minR
,
maxR
):
FilterPeaks
(
InputWorkspace
=
ws
,
OutputWorkspace
=
str
(
run
),
FilterVariable
=
'
RunNumber
'
,
FilterValue
=
run
,
Operator
=
'
=
'
)
run
=
mtd
[
str
(
run
)]
peaks
=
run
.
getNumberPeaks
()
if
peaks
==
0
:
AnalysisDataService
.
remove
(
str
(
run
))
else
:
group
.
append
(
str
(
run
))
GroupWorkspaces
(
InputWorkspaces
=
group
,
OutputWorkspace
=
ws_group
)
OptimizeCrystalPlacement
(
PeaksWorkspace
=
ws_group
,
ModifiedPeaksWorkspace
=
ws_group
,
AdjustSampleOffsets
=
True
,
MaxSamplePositionChangeMeters
=
0.005
,
MaxIndexingError
=
tolerance
)
CloneWorkspace
(
InputWorkspace
=
str
(
minR
),
OutputWorkspace
=
ws_append
)
for
run
in
range
(
minR
+
1
,
maxR
):
if
AnalysisDataService
.
doesExist
(
str
(
run
)):
CombinePeaksWorkspaces
(
LHSWorkspace
=
ws_append
,
RHSWorkspace
=
str
(
run
),
OutputWorkspace
=
ws_append
)
print
(
'
Optimized %s sample position: %s
\n
'
%
(
str
(
run
),
mtd
[
str
(
run
)].
getPeak
(
0
).
getSamplePos
()))
AnalysisDataService
.
remove
(
str
(
run
))
num
,
err
=
IndexPeaks
(
PeaksWorkspace
=
ws_append
,
Tolerance
=
tolerance
)
print
(
'
After Optimization Number indexed: %s error: %s
\n
'
%
(
num
,
err
))
AnalysisDataService
.
remove
(
ws_group
)
self
.
setProperty
(
"
OutputWorkspace
"
,
ws_append
)
# Register algorithm with Mantid
AlgorithmFactory
.
subscribe
(
OptimizeCrystalPlacementByRun
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment