Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
geomtools
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository 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
dataAnalysis
geomtools
Commits
2e6e8aac
Commit
2e6e8aac
authored
2 weeks ago
by
Egor Sobolev
Browse files
Options
Downloads
Patches
Plain Diff
Update powder notebook
parent
bd140591
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!3
Center refinement using powder diffraction data
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
nb/powder.ipynb
+142
-22
142 additions, 22 deletions
nb/powder.ipynb
with
142 additions
and
22 deletions
nb/powder.ipynb
+
142
−
22
View file @
2e6e8aac
...
@@ -7,13 +7,25 @@
...
@@ -7,13 +7,25 @@
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"runno = 189\n",
"propno, runno = 2671, 409\n",
"propno = 900463\n",
"propno, runno = 6880, 42\n",
"propno, runno = 7955, 1\n",
"\n",
"\n",
"ref_geom_fn = \"/gpfs/exfel/exp/SPB/202430/p900429/usr/Shared/geom/p5681_r64_67_refined.geom\" # initial geometry file name\n",
"detector_id = \"SPB_DET_AGIPD1M-1\"\n",
"legacy = True\n",
"\n",
"ref_geom_fn = \"/gpfs/exfel/exp/SPB/202530/p900510/usr/Shared/geom/agipd_p008316_r0024_v04.geom\" # initial geometry file name\n",
"\n",
"# image averager parameters\n",
"mask_fn = \"/gpfs/exfel/exp/SPB/202530/p900510/usr/Shared/geom/mask_hvoff_20250124.h5\"\n",
"\n",
"#propno, runno = 8376, 5\n",
"\n",
"#detector_id = \"SPB_IRDA_JF4M\"\n",
"#ref_geom_fn = \"/gpfs/exfel/exp/SPB/202425/p008376/usr/Shared/amore/geom/jf4m_p7216_v105.geom\" # initial geometry file name\n",
"\n",
"\n",
"# image averager parameters\n",
"# image averager parameters\n",
"mask_fn =
\"/gpfs/exfel/exp/SPB/202431/p900463/usr/Shared/mask/mask_hvoff_20240807.h5\"
\n",
"
#
mask_fn =
None
\n",
"\n",
"\n",
"# slurm paramenters\n",
"# slurm paramenters\n",
"num_nodes = 16\n",
"num_nodes = 16\n",
...
@@ -43,12 +55,12 @@
...
@@ -43,12 +55,12 @@
"import h5py\n",
"import h5py\n",
"\n",
"\n",
"from extra_data import open_run\n",
"from extra_data import open_run\n",
"from extra_geom import agipd_asic_seams, AGIPD_1MGeometry\n",
"from extra_geom import agipd_asic_seams, AGIPD_1MGeometry
, JUNGFRAUGeometry
\n",
"from extra_geom.motors import AGIPD_1MMotors\n",
"from extra_geom.motors import AGIPD_1MMotors
, JF4MMotors
\n",
"from extra.components import AGIPD1MQuadrantMotors\n",
"from extra.components import AGIPD1MQuadrantMotors
, JF4MHalfMotors
\n",
"\n",
"\n",
"from geomtools.powder.calibrants import get_calibrant\n",
"from geomtools.powder.calibrants import get_calibrant\n",
"from geomtools.powder.misc import agipd_borders\n",
"from geomtools.powder.misc import agipd_borders
, jungfrau_borders
\n",
"from geomtools.powder import PowderDiffraction"
"from geomtools.powder import PowderDiffraction"
]
]
},
},
...
@@ -65,9 +77,13 @@
...
@@ -65,9 +77,13 @@
" mpiopts = (\"--map-by NODES -x LD_LIBRARY_PATH -x PATH --bind-to none \"\n",
" mpiopts = (\"--map-by NODES -x LD_LIBRARY_PATH -x PATH --bind-to none \"\n",
" \"--mca btl ^smcuda --mca rcache ^gpusm,rgpusm --mca accelerator ^cuda\")\n",
" \"--mca btl ^smcuda --mca rcache ^gpusm,rgpusm --mca accelerator ^cuda\")\n",
" powder_sum_args = (\n",
" powder_sum_args = (\n",
" f\"-p {propno} -r {runno} -
m {mask_fn} --legacy -l agipd1m SPB_DET_AGIPD1M-1
\"\n",
" f\"-p {propno} -r {runno} -
R
\"\n",
" )\n",
" )\n",
" !salloc {sopts} mpirun {mpiopts} geomtools-powder-sum {powder_sum_args}"
" if mask_fn:\n",
" powder_sum_args += f\" -m {mask_fn} \"\n",
" if legacy:\n",
" powder_sum_args += \" --legacy \"\n",
" !salloc {sopts} mpirun {mpiopts} geomtools-powder-sum {powder_sum_args} {detector_id}"
]
]
},
},
{
{
...
@@ -77,6 +93,7 @@
...
@@ -77,6 +93,7 @@
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"fn = f\"powder_sum_p{propno:06d}_r{runno:04d}.h5\"\n",
"with h5py.File(fn, \"r\") as f:\n",
"with h5py.File(fn, \"r\") as f:\n",
" # conditions\n",
" # conditions\n",
" clen = f[\"powderSum/conditions/cameraLen\"][()]\n",
" clen = f[\"powderSum/conditions/cameraLen\"][()]\n",
...
@@ -94,21 +111,57 @@
...
@@ -94,21 +111,57 @@
"\n",
"\n",
"print(\"Photon energy\", photon_en, \"(keV)\")\n",
"print(\"Photon energy\", photon_en, \"(keV)\")\n",
"print(\"Wave length\", lmd, \"(nm)\")\n",
"print(\"Wave length\", lmd, \"(nm)\")\n",
"print(\"Camera length\", clen, \"(m)\")"
"print(\"Camera length\", clen, \"(m)\")\n",
"\n",
"img=img_mean\n",
"msk=mask\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "20f6615a-f0d9-4376-b914-57d624251c2d",
"metadata": {},
"outputs": [],
"source": [
"DETECTOR = {\n",
" \"agipd1m\": {\n",
" \"geometry\": AGIPD_1MGeometry,\n",
" \"borders\": agipd_borders,\n",
" \"motors\": AGIPD1MQuadrantMotors,\n",
" \"tracker\": AGIPD_1MMotors\n",
" },\n",
" \"jf4m\": {\n",
" \"geometry\": JUNGFRAUGeometry,\n",
" \"borders\": jungfrau_borders,\n",
" \"motors\": JF4MMotors,\n",
" \"tracker\": JF4MHalfMotors\n",
" }\n",
"}\n",
"\n",
"def guess_detector_type(detector_id):\n",
" for detector_type in DETECTOR.keys():\n",
" if detector_type.upper() in detector_id:\n",
" return detector_type\n",
"\n",
" raise ValueError(\"Unknown detector type\")\n",
"\n",
"detector_type = guess_detector_type(detector_id)\n",
"det = DETECTOR[detector_type]"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": null,
"id": "
8fdf43d7-db13-4493-a030-3132337e1512
",
"id": "
5cbcd431-5145-4bc0-92a0-6a11f598171a
",
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"# geometry\n",
"# geometry\n",
"run = open_run(propno, runno, data=\"raw\")\n",
"run = open_run(propno, runno, data=\"raw\")\n",
"ref_geom =
AGIPD_1MG
eometry.from_crystfel_geom(ref_geom_fn)\n",
"ref_geom =
det[\"g
eometry
\"]
.from_crystfel_geom(ref_geom_fn)\n",
"tracker =
AGIPD_1MMotors
(ref_geom)\n",
"tracker =
det[\"tracker\"]
(ref_geom)\n",
"motors =
AGIPD1MQuadrantM
otors(run)\n",
"motors =
det[\"m
otors
\"]
(run)\n",
"geom = tracker.geom_at(motors.most_frequent_positions())"
"geom = tracker.geom_at(motors.most_frequent_positions())"
]
]
},
},
...
@@ -120,7 +173,7 @@
...
@@ -120,7 +173,7 @@
"outputs": [],
"outputs": [],
"source": [
"source": [
"img = np.copy(img_mean)\n",
"img = np.copy(img_mean)\n",
"geom.plot_data(img, norm=\"log\", interpolation=\"none\")\n",
"geom.plot_data(img, norm=\"log\", interpolation=\"none\"
, vmax=1, vmin=0.01
)\n",
"plt.show()"
"plt.show()"
]
]
},
},
...
@@ -131,16 +184,31 @@
...
@@ -131,16 +184,31 @@
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"rings = get_calibrant(\"AgBh\")\n",
"from geomtools.sfx.lattice import spacing_monoclinic\n",
"borders = agipd_borders()\n",
"from geomtools.powder.misc import reciprocal_to_dectector\n",
"pw = PowderDiffraction(geom, rings, clen, lmd,\n",
"h, k, l = np.mgrid[:5, :5, 1:5:2]\n",
"#rings = np.sqrt(np.unique(spacing_monoclinic(h.ravel(), k.ravel(), l.ravel(), 0.505, 0.876, 0.968, 100/180*np.pi)))[1:]\n",
"rings = get_calibrant(\"LaB6\")\n",
"\n",
"borders = det[\"borders\"]()\n",
"pw = PowderDiffraction(geom, rings, clen, lmd, sigma=1.5, snr=1.3,\n",
" border_mask=~borders, make_shadow_mask=True)\n",
" border_mask=~borders, make_shadow_mask=True)\n",
"pw.fit(img
_mean
, mask, num_frames)\n",
"pw.fit(img, mask, num_frames)\n",
"pw.refinement_info()\n",
"pw.refinement_info()\n",
"pw.draw()\n",
"pw.draw()\n",
"plt.show()"
"plt.show()"
]
]
},
},
{
"cell_type": "code",
"execution_count": null,
"id": "bf65ce37-306a-4b19-b5af-e204e8fea59e",
"metadata": {},
"outputs": [],
"source": [
"geom.plot_data(pw.labels)"
]
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": null,
...
@@ -151,13 +219,65 @@
...
@@ -151,13 +219,65 @@
"pw.draw_radial_profile(img_mean, mask)\n",
"pw.draw_radial_profile(img_mean, mask)\n",
"plt.show()"
"plt.show()"
]
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "efbf9f46-3462-499e-9e8f-03d530d3182b",
"metadata": {},
"outputs": [],
"source": [
"geom2 = pw.transform_geometry()\n",
"geom2.motor_positions = motors.most_frequent_positions()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a9a4d447-0554-49f5-80d5-9ba5e1b11e0a",
"metadata": {},
"outputs": [],
"source": [
"geom2.metadata"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "75ee257e-833e-4bb9-90d4-67f1d73b8ee2",
"metadata": {},
"outputs": [],
"source": [
"geom2.compare(geom)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fbac9184-5382-497b-b5f8-c53e04b22bf4",
"metadata": {},
"outputs": [],
"source": [
"out_geom_fn = \"/gpfs/exfel/exp/SPB/202530/p900510/usr/Shared/geom/agipd_p007955_r0001.geom\"\n",
"geom2.write_crystfel_geom(out_geom_fn, **geom2.metadata)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8b590618-fbc2-45a0-9d9a-25ff88803eb6",
"metadata": {},
"outputs": [],
"source": [
"geom2.plot_data(pw.shadow)"
]
}
}
],
],
"metadata": {
"metadata": {
"kernelspec": {
"kernelspec": {
"display_name": "
egor-dev
",
"display_name": "
Python 3
",
"language": "python",
"language": "python",
"name": "
egor-dev
"
"name": "
python3
"
},
},
"language_info": {
"language_info": {
"codemirror_mode": {
"codemirror_mode": {
...
...
%% Cell type:code id:c134ff02-0eba-4146-803b-2b69f9ccaef9 tags:
%% Cell type:code id:c134ff02-0eba-4146-803b-2b69f9ccaef9 tags:
```
python
```
python
runno
=
189
propno
,
runno
=
2671
,
409
propno
=
900463
propno
,
runno
=
6880
,
42
propno
,
runno
=
7955
,
1
ref_geom_fn
=
"
/gpfs/exfel/exp/SPB/202430/p900429/usr/Shared/geom/p5681_r64_67_refined.geom
"
# initial geometry file name
detector_id
=
"
SPB_DET_AGIPD1M-1
"
legacy
=
True
ref_geom_fn
=
"
/gpfs/exfel/exp/SPB/202530/p900510/usr/Shared/geom/agipd_p008316_r0024_v04.geom
"
# initial geometry file name
# image averager parameters
mask_fn
=
"
/gpfs/exfel/exp/SPB/202530/p900510/usr/Shared/geom/mask_hvoff_20250124.h5
"
#propno, runno = 8376, 5
#detector_id = "SPB_IRDA_JF4M"
#ref_geom_fn = "/gpfs/exfel/exp/SPB/202425/p008376/usr/Shared/amore/geom/jf4m_p7216_v105.geom" # initial geometry file name
# image averager parameters
# image averager parameters
mask_fn
=
"
/gpfs/exfel/exp/SPB/202431/p900463/usr/Shared/mask/mask_hvoff_20240807.h5
"
#
mask_fn =
None
# slurm paramenters
# slurm paramenters
num_nodes
=
16
num_nodes
=
16
slurm_partition
=
"
exfel
"
slurm_partition
=
"
exfel
"
```
```
%% Cell type:code id:0bdf665e-9ad7-4a40-a59e-23b428312f4f tags:
%% Cell type:code id:0bdf665e-9ad7-4a40-a59e-23b428312f4f tags:
```
python
```
python
# !geomtools-powder-center -g {ref_geom_fn} -c AgBh ../../../nb/powder_sum_p{propno:06d}_r{runno:04d}.h5
# !geomtools-powder-center -g {ref_geom_fn} -c AgBh ../../../nb/powder_sum_p{propno:06d}_r{runno:04d}.h5
```
```
%% Cell type:code id:504eca33-7f3d-4b7e-9ce1-9edcadff6387 tags:
%% Cell type:code id:504eca33-7f3d-4b7e-9ce1-9edcadff6387 tags:
```
python
```
python
import
os
import
os
import
numpy
as
np
import
numpy
as
np
import
matplotlib.pyplot
as
plt
import
matplotlib.pyplot
as
plt
import
h5py
import
h5py
from
extra_data
import
open_run
from
extra_data
import
open_run
from
extra_geom
import
agipd_asic_seams
,
AGIPD_1MGeometry
from
extra_geom
import
agipd_asic_seams
,
AGIPD_1MGeometry
,
JUNGFRAUGeometry
from
extra_geom.motors
import
AGIPD_1MMotors
from
extra_geom.motors
import
AGIPD_1MMotors
,
JF4MMotors
from
extra.components
import
AGIPD1MQuadrantMotors
from
extra.components
import
AGIPD1MQuadrantMotors
,
JF4MHalfMotors
from
geomtools.powder.calibrants
import
get_calibrant
from
geomtools.powder.calibrants
import
get_calibrant
from
geomtools.powder.misc
import
agipd_borders
from
geomtools.powder.misc
import
agipd_borders
,
jungfrau_borders
from
geomtools.powder
import
PowderDiffraction
from
geomtools.powder
import
PowderDiffraction
```
```
%% Cell type:code id:33f4f527-d61e-45c1-8301-1be7c6aa8edf tags:
%% Cell type:code id:33f4f527-d61e-45c1-8301-1be7c6aa8edf tags:
```
python
```
python
fn
=
f
"
powder_sum_p
{
propno
:
06
d
}
_r
{
runno
:
04
d
}
.h5
"
fn
=
f
"
powder_sum_p
{
propno
:
06
d
}
_r
{
runno
:
04
d
}
.h5
"
if
not
os
.
path
.
exists
(
fn
):
if
not
os
.
path
.
exists
(
fn
):
sopts
=
f
"
-N
{
num_nodes
}
-p
{
slurm_partition
}
--ntasks-per-node=1
"
sopts
=
f
"
-N
{
num_nodes
}
-p
{
slurm_partition
}
--ntasks-per-node=1
"
mpiopts
=
(
"
--map-by NODES -x LD_LIBRARY_PATH -x PATH --bind-to none
"
mpiopts
=
(
"
--map-by NODES -x LD_LIBRARY_PATH -x PATH --bind-to none
"
"
--mca btl ^smcuda --mca rcache ^gpusm,rgpusm --mca accelerator ^cuda
"
)
"
--mca btl ^smcuda --mca rcache ^gpusm,rgpusm --mca accelerator ^cuda
"
)
powder_sum_args
=
(
powder_sum_args
=
(
f
"
-p
{
propno
}
-r
{
runno
}
-
m
{
mask_fn
}
--legacy -l agipd1m SPB_DET_AGIPD1M-1
"
f
"
-p
{
propno
}
-r
{
runno
}
-
R
"
)
)
!
salloc
{
sopts
}
mpirun
{
mpiopts
}
geomtools
-
powder
-
sum
{
powder_sum_args
}
if
mask_fn
:
powder_sum_args
+=
f
"
-m
{
mask_fn
}
"
if
legacy
:
powder_sum_args
+=
"
--legacy
"
!
salloc
{
sopts
}
mpirun
{
mpiopts
}
geomtools
-
powder
-
sum
{
powder_sum_args
}
{
detector_id
}
```
```
%% Cell type:code id:e9c147f0-e011-46cb-bf0f-e0ef01a6d8a4 tags:
%% Cell type:code id:e9c147f0-e011-46cb-bf0f-e0ef01a6d8a4 tags:
```
python
```
python
fn
=
f
"
powder_sum_p
{
propno
:
06
d
}
_r
{
runno
:
04
d
}
.h5
"
with
h5py
.
File
(
fn
,
"
r
"
)
as
f
:
with
h5py
.
File
(
fn
,
"
r
"
)
as
f
:
# conditions
# conditions
clen
=
f
[
"
powderSum/conditions/cameraLen
"
][()]
clen
=
f
[
"
powderSum/conditions/cameraLen
"
][()]
photon_en
=
f
[
"
powderSum/conditions/photonEnergy
"
][()]
photon_en
=
f
[
"
powderSum/conditions/photonEnergy
"
][()]
lmd
=
f
[
"
powderSum/conditions/waveLength
"
][()]
lmd
=
f
[
"
powderSum/conditions/waveLength
"
][()]
detector_id
=
f
[
"
powderSum/conditions/detectorId
"
][()].
decode
()
detector_id
=
f
[
"
powderSum/conditions/detectorId
"
][()].
decode
()
# average image
# average image
img_mean
=
f
[
"
powderSum/image/mean
"
][:]
img_mean
=
f
[
"
powderSum/image/mean
"
][:]
img_std
=
f
[
"
powderSum/image/std
"
][:]
img_std
=
f
[
"
powderSum/image/std
"
][:]
img_count
=
f
[
"
powderSum/image/count
"
][:]
img_count
=
f
[
"
powderSum/image/count
"
][:]
num_frames
=
f
[
"
powderSum/image/numFrames
"
][:]
num_frames
=
f
[
"
powderSum/image/numFrames
"
][:]
mask
=
f
[
"
powderSum/image/mask
"
][:].
astype
(
bool
)
mask
=
f
[
"
powderSum/image/mask
"
][:].
astype
(
bool
)
modules
=
f
[
"
powderSum/image/modules
"
][:]
modules
=
f
[
"
powderSum/image/modules
"
][:]
print
(
"
Photon energy
"
,
photon_en
,
"
(keV)
"
)
print
(
"
Photon energy
"
,
photon_en
,
"
(keV)
"
)
print
(
"
Wave length
"
,
lmd
,
"
(nm)
"
)
print
(
"
Wave length
"
,
lmd
,
"
(nm)
"
)
print
(
"
Camera length
"
,
clen
,
"
(m)
"
)
print
(
"
Camera length
"
,
clen
,
"
(m)
"
)
img
=
img_mean
msk
=
mask
```
%% Cell type:code id:20f6615a-f0d9-4376-b914-57d624251c2d tags:
```
python
DETECTOR
=
{
"
agipd1m
"
:
{
"
geometry
"
:
AGIPD_1MGeometry
,
"
borders
"
:
agipd_borders
,
"
motors
"
:
AGIPD1MQuadrantMotors
,
"
tracker
"
:
AGIPD_1MMotors
},
"
jf4m
"
:
{
"
geometry
"
:
JUNGFRAUGeometry
,
"
borders
"
:
jungfrau_borders
,
"
motors
"
:
JF4MMotors
,
"
tracker
"
:
JF4MHalfMotors
}
}
def
guess_detector_type
(
detector_id
):
for
detector_type
in
DETECTOR
.
keys
():
if
detector_type
.
upper
()
in
detector_id
:
return
detector_type
raise
ValueError
(
"
Unknown detector type
"
)
detector_type
=
guess_detector_type
(
detector_id
)
det
=
DETECTOR
[
detector_type
]
```
```
%% Cell type:code id:
8fdf43d7-db13-4493-a030-3132337e1512
tags:
%% Cell type:code id:
5cbcd431-5145-4bc0-92a0-6a11f598171a
tags:
```
python
```
python
# geometry
# geometry
run
=
open_run
(
propno
,
runno
,
data
=
"
raw
"
)
run
=
open_run
(
propno
,
runno
,
data
=
"
raw
"
)
ref_geom
=
AGIPD_1MG
eometry
.
from_crystfel_geom
(
ref_geom_fn
)
ref_geom
=
det
[
"
g
eometry
"
]
.
from_crystfel_geom
(
ref_geom_fn
)
tracker
=
AGIPD_1MMotors
(
ref_geom
)
tracker
=
det
[
"
tracker
"
]
(
ref_geom
)
motors
=
AGIPD1MQuadrantM
otors
(
run
)
motors
=
det
[
"
m
otors
"
]
(
run
)
geom
=
tracker
.
geom_at
(
motors
.
most_frequent_positions
())
geom
=
tracker
.
geom_at
(
motors
.
most_frequent_positions
())
```
```
%% Cell type:code id:332a77f6-b3b7-4e13-b6e4-5838391949df tags:
%% Cell type:code id:332a77f6-b3b7-4e13-b6e4-5838391949df tags:
```
python
```
python
img
=
np
.
copy
(
img_mean
)
img
=
np
.
copy
(
img_mean
)
geom
.
plot_data
(
img
,
norm
=
"
log
"
,
interpolation
=
"
none
"
)
geom
.
plot_data
(
img
,
norm
=
"
log
"
,
interpolation
=
"
none
"
,
vmax
=
1
,
vmin
=
0.01
)
plt
.
show
()
plt
.
show
()
```
```
%% Cell type:code id:83dd3cb1-00d5-4337-80c5-e83d9eeec0b1 tags:
%% Cell type:code id:83dd3cb1-00d5-4337-80c5-e83d9eeec0b1 tags:
```
python
```
python
rings
=
get_calibrant
(
"
AgBh
"
)
from
geomtools.sfx.lattice
import
spacing_monoclinic
borders
=
agipd_borders
()
from
geomtools.powder.misc
import
reciprocal_to_dectector
pw
=
PowderDiffraction
(
geom
,
rings
,
clen
,
lmd
,
h
,
k
,
l
=
np
.
mgrid
[:
5
,
:
5
,
1
:
5
:
2
]
#rings = np.sqrt(np.unique(spacing_monoclinic(h.ravel(), k.ravel(), l.ravel(), 0.505, 0.876, 0.968, 100/180*np.pi)))[1:]
rings
=
get_calibrant
(
"
LaB6
"
)
borders
=
det
[
"
borders
"
]()
pw
=
PowderDiffraction
(
geom
,
rings
,
clen
,
lmd
,
sigma
=
1.5
,
snr
=
1.3
,
border_mask
=~
borders
,
make_shadow_mask
=
True
)
border_mask
=~
borders
,
make_shadow_mask
=
True
)
pw
.
fit
(
img
_mean
,
mask
,
num_frames
)
pw
.
fit
(
img
,
mask
,
num_frames
)
pw
.
refinement_info
()
pw
.
refinement_info
()
pw
.
draw
()
pw
.
draw
()
plt
.
show
()
plt
.
show
()
```
```
%% Cell type:code id:bf65ce37-306a-4b19-b5af-e204e8fea59e tags:
```
python
geom
.
plot_data
(
pw
.
labels
)
```
%% Cell type:code id:1bd08493-2562-4f92-82aa-eb866d5af791 tags:
%% Cell type:code id:1bd08493-2562-4f92-82aa-eb866d5af791 tags:
```
python
```
python
pw
.
draw_radial_profile
(
img_mean
,
mask
)
pw
.
draw_radial_profile
(
img_mean
,
mask
)
plt
.
show
()
plt
.
show
()
```
```
%% Cell type:code id:efbf9f46-3462-499e-9e8f-03d530d3182b tags:
```
python
geom2
=
pw
.
transform_geometry
()
geom2
.
motor_positions
=
motors
.
most_frequent_positions
()
```
%% Cell type:code id:a9a4d447-0554-49f5-80d5-9ba5e1b11e0a tags:
```
python
geom2
.
metadata
```
%% Cell type:code id:75ee257e-833e-4bb9-90d4-67f1d73b8ee2 tags:
```
python
geom2
.
compare
(
geom
)
```
%% Cell type:code id:fbac9184-5382-497b-b5f8-c53e04b22bf4 tags:
```
python
out_geom_fn
=
"
/gpfs/exfel/exp/SPB/202530/p900510/usr/Shared/geom/agipd_p007955_r0001.geom
"
geom2
.
write_crystfel_geom
(
out_geom_fn
,
**
geom2
.
metadata
)
```
%% Cell type:code id:8b590618-fbc2-45a0-9d9a-25ff88803eb6 tags:
```
python
geom2
.
plot_data
(
pw
.
shadow
)
```
...
...
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