Skip to content
Snippets Groups Projects
Commit bd425898 authored by Hampus Wikmark Kreuger's avatar Hampus Wikmark Kreuger
Browse files

Merge branch 'p2866_updates_darksubtraction' into 'p2866_updates'

P2866 updates darksubtraction

See merge request !192
parents 239dd0e3 a2ffa1b9
No related branches found
No related tags found
3 merge requests!195Commented centroid,!192P2866 updates darksubtraction,!188P2866 updates
...@@ -295,7 +295,13 @@ class hRIXS: ...@@ -295,7 +295,13 @@ class hRIXS:
BINS = abs(np.subtract(*RANGE)) * FACTOR BINS = abs(np.subtract(*RANGE)) * FACTOR
METHOD = 'centroid' # ['centroid', 'integral'] METHOD = 'centroid' # ['centroid', 'integral']
# Dark image and mask treatment
USE_DARK = False USE_DARK = False
USE_DARK_MASK = False
DARK_MASK_THRESHOLD = 100
MASK_AVG_X = np.s_[1850:2000]
MASK_AVG_Y = np.s_[500:1500]
ENERGY_INTERCEPT = 0 ENERGY_INTERCEPT = 0
ENERGY_SLOPE = 1 ENERGY_SLOPE = 1
...@@ -322,7 +328,10 @@ class hRIXS: ...@@ -322,7 +328,10 @@ class hRIXS:
return data return data
def load_dark(self, runNB, proposal=None): def load_dark(self, runNB, proposal=None, use_dark=True, mask=True,
mask_threshold=None):
if mask_threshold == None:
mask_threshold = self.DARK_MASK_THRESHOLD
try: try:
# Checks to see if runNB can be iterated over (is list-like) # Checks to see if runNB can be iterated over (is list-like)
data_list = [] data_list = []
...@@ -334,7 +343,15 @@ class hRIXS: ...@@ -334,7 +343,15 @@ class hRIXS:
data = self.from_run(runNB, proposal) data = self.from_run(runNB, proposal)
self.dark_image = data['hRIXS_det'].mean(dim='trainId') self.dark_image = data['hRIXS_det'].mean(dim='trainId')
self.dark_im_array = self.dark_image.to_numpy() self.dark_im_array = self.dark_image.to_numpy()
self.USE_DARK = True if use_dark:
self.USE_DARK = True
if mask:
dark_avg = np.mean(self.dark_im_array[self.MASK_AVG_Y,
self.MASK_AVG_X], (0, 1))
self.dark_mask = np.abs(self.dark_im_array - dark_avg) > mask_threshold
self.dark_im_array_m = np.array(self.dark_im_array)
self.dark_im_array_m[self.dark_mask] = dark_avg
self.USE_DARK_MASK = True
def find_curvature(self, runNB, proposal=None, plot=True, args=None, **kwargs): def find_curvature(self, runNB, proposal=None, plot=True, args=None, **kwargs):
data = self.from_run(runNB, proposal) data = self.from_run(runNB, proposal)
...@@ -354,12 +371,18 @@ class hRIXS: ...@@ -354,12 +371,18 @@ class hRIXS:
bins = self.BINS bins = self.BINS
hit_x = [] hit_x = []
hit_y = [] hit_y = []
hits = []
ret = np.zeros((len(data["hRIXS_det"]), bins)) ret = np.zeros((len(data["hRIXS_det"]), bins))
for image, r in zip(data["hRIXS_det"], ret): for image, r in zip(data["hRIXS_det"], ret):
if self.USE_DARK: use_image = image.to_numpy()
use_image = image.to_numpy() - self.dark_im_array if self.USE_DARK_MASK:
use_image[self.dark_mask] = np.mean(use_image[self.MASK_AVG_Y,
self.MASK_AVG_X], (0, 1))
if self.USE_DARK:
use_image = use_image - self.dark_im_array_m
else: else:
use_image = image.to_numpy() if self.USE_DARK:
use_image = use_image - self.dark_im_array
c = centroid( c = centroid(
use_image[self.X_RANGE, self.Y_RANGE].T, use_image[self.X_RANGE, self.Y_RANGE].T,
threshold=self.THRESHOLD, threshold=self.THRESHOLD,
...@@ -371,8 +394,9 @@ class hRIXS: ...@@ -371,8 +394,9 @@ class hRIXS:
rc = np.array(c) rc = np.array(c)
if return_hits: if return_hits:
hit_x.append(rc[:,0]) hit_x.append(rc[:, 0])
hit_y.append(rc[:,1]) hit_y.append(rc[:, 1])
hits.append(rc)
hy, hx = np.histogram( hy, hx = np.histogram(
rc[:, 0], bins=bins, rc[:, 0], bins=bins,
...@@ -383,7 +407,9 @@ class hRIXS: ...@@ -383,7 +407,9 @@ class hRIXS:
energy=np.linspace(self.Y_RANGE.start, self.Y_RANGE.stop, bins) energy=np.linspace(self.Y_RANGE.start, self.Y_RANGE.stop, bins)
* self.ENERGY_SLOPE + self.ENERGY_INTERCEPT) * self.ENERGY_SLOPE + self.ENERGY_INTERCEPT)
if return_hits: if return_hits:
return data.assign(xhits=(("trainId"), hit_x), yhits=(("trainId"), hit_y)) return data.assign(hits=(("trainId"), hits),
xhits=(("trainId"), hit_x),
yhits=(("trainId"), hit_y))
else: else:
return data.assign(spectrum=(("trainId", "energy"), ret)) return data.assign(spectrum=(("trainId", "energy"), ret))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment