|
1 | 1 | import numpy as np |
2 | 2 | import copy |
| 3 | +import re |
3 | 4 | from enum import Enum |
4 | 5 | from pySNOM.defaults import Defaults |
5 | 6 | from gwyfile.objects import GwyDataField |
@@ -121,21 +122,26 @@ def data(self,value): |
121 | 122 | raise ValueError("The provided data object does not contain 'data' attribute") |
122 | 123 |
|
123 | 124 | def type_from_channelname(channelname): |
124 | | - if channelname[0] == 'O': |
| 125 | + channel_strings = ['M(.?)A', 'M(.?)P', 'O(.?)A', 'O(.?)P', 'Z C', 'Z raw'] |
| 126 | + for pattern in channel_strings: |
| 127 | + if re.search(pattern, channelname) is not None: |
| 128 | + channel_name = re.search(pattern, channelname)[0] |
| 129 | + |
| 130 | + if channel_name[0] == 'O': |
125 | 131 | channeltype = ChannelTypes["Optical"] |
126 | | - elif 'M' in channelname: |
| 132 | + elif 'M' in channel_name: |
127 | 133 | channeltype = ChannelTypes["Mechanical"] |
128 | 134 | else: |
129 | 135 | channeltype = ChannelTypes["None"] |
130 | 136 |
|
131 | | - if 'Z' in channelname: |
| 137 | + if 'Z' in channel_name: |
132 | 138 | order = 0 |
133 | 139 | else: |
134 | | - order = int(channelname[1]) |
| 140 | + order = int(channel_name[1]) |
135 | 141 |
|
136 | | - if channelname[2] == 'A': |
| 142 | + if channel_name[2] == 'A': |
137 | 143 | datatype = DataTypes["Amplitude"] |
138 | | - elif 'Z' in channelname: |
| 144 | + elif 'Z' in channel_name: |
139 | 145 | datatype = DataTypes["Topography"] |
140 | 146 | else: |
141 | 147 | datatype = DataTypes["Phase"] |
@@ -224,6 +230,11 @@ def transform(self, data): |
224 | 230 | return data / self.value |
225 | 231 | else: |
226 | 232 | return data - self.value |
| 233 | + case 'min': |
| 234 | + if self.datatype == DataTypes.Amplitude: |
| 235 | + return data / np.nanmin(data) |
| 236 | + else: |
| 237 | + return data - np.nanmin(data) |
227 | 238 |
|
228 | 239 | class BackgroundPolyFit(Transformation): |
229 | 240 |
|
|
0 commit comments