blob: 6d0dbd40927fb0536a1f1df61461b2fc616d3f14 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
using CrystFEL
function mergereflections(correction, crystalrefls, sym)
merged = RefList{MergedReflection}(sym)
for (cr,reflections) in crystalrefls
for refl in reflections
indices = asymmetricindices(sym, refl.indices)
model_version = get!(merged, indices)
w = 1.0
mean = model_version.intensity
sumweight = model_version.temp1
M2 = model_version.temp2
temp = w + sumweight
delta = correction(refl.intensity, cr) - mean
R = delta * w / temp
model_version.intensity = mean + R
model_version.temp1 = temp
model_version.temp2 = M2 + sumweight * delta * R
model_version.nmeasurements += 1
end
end
for refl in merged
if refl.nmeasurements > 1
refl.sigintensity = sqrt(refl.temp2/refl.temp1)/sqrt(refl.nmeasurements)
else
refl.nmeasurements = 0
end
end
return merged
end
let st = Stream("input.stream", "r")
merged = mergereflections((i,cr)->i, allcrystals(st), SymOpList("2/m_uab"))
savereflist!(merged, "merged.hkl")
end
|