ararpy 0.2.2__py3-none-any.whl → 0.2.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ararpy/__init__.py +2 -20
- ararpy/calc/arr.py +5 -2
- ararpy/calc/corr.py +15 -16
- ararpy/files/calc_file.py +4 -2
- ararpy/smp/basic.py +13 -7
- ararpy/smp/corr.py +28 -23
- ararpy/smp/export.py +1 -1
- ararpy/smp/initial.py +21 -4
- ararpy/smp/plots.py +248 -203
- ararpy/smp/sample.py +33 -16
- ararpy/smp/style.py +10 -4
- ararpy/smp/table.py +72 -39
- {ararpy-0.2.2.dist-info → ararpy-0.2.4.dist-info}/METADATA +1 -1
- {ararpy-0.2.2.dist-info → ararpy-0.2.4.dist-info}/RECORD +17 -17
- {ararpy-0.2.2.dist-info → ararpy-0.2.4.dist-info}/WHEEL +0 -0
- {ararpy-0.2.2.dist-info → ararpy-0.2.4.dist-info}/licenses/LICENSE +0 -0
- {ararpy-0.2.2.dist-info → ararpy-0.2.4.dist-info}/top_level.txt +0 -0
ararpy/smp/table.py
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import ast
|
|
13
13
|
import re
|
|
14
14
|
import copy
|
|
15
|
+
import numpy as np
|
|
15
16
|
from .. import calc
|
|
16
17
|
from . import (sample as samples, basic)
|
|
17
18
|
|
|
@@ -46,13 +47,11 @@ def update_table_data(smp: Sample, only_table: str = None):
|
|
|
46
47
|
elif key == '4':
|
|
47
48
|
data = [smp.SequenceName, smp.SequenceValue, smp.IsochronMark, *smp.DegasValues]
|
|
48
49
|
elif key == '5':
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
smp.PublishValues[
|
|
52
|
-
smp.PublishValues[
|
|
53
|
-
smp.PublishValues[
|
|
54
|
-
smp.PublishValues[5:7] = copy.deepcopy(smp.ApparentAgeValues[2:4])
|
|
55
|
-
smp.PublishValues[7:9] = copy.deepcopy(smp.ApparentAgeValues[6:8])
|
|
50
|
+
data = np.array(smp.CorrectedValues)
|
|
51
|
+
data[1:10:2] = np.abs(np.divide(data[1:10:2], data[0:10:2])) * 100
|
|
52
|
+
smp.PublishValues[0:10] = copy.deepcopy(data.tolist())
|
|
53
|
+
smp.PublishValues[10:14] = copy.deepcopy(smp.ApparentAgeValues[0:4])
|
|
54
|
+
smp.PublishValues[14:16] = copy.deepcopy(smp.ApparentAgeValues[6:8])
|
|
56
55
|
data = [smp.SequenceName, smp.SequenceValue, smp.IsochronMark, *smp.PublishValues]
|
|
57
56
|
elif key == '6':
|
|
58
57
|
data = [smp.SequenceName, smp.SequenceValue, smp.IsochronMark, *smp.ApparentAgeValues]
|
|
@@ -61,7 +60,10 @@ def update_table_data(smp: Sample, only_table: str = None):
|
|
|
61
60
|
elif key == '8':
|
|
62
61
|
data = [smp.SequenceName, smp.SequenceValue, smp.IsochronMark, *smp.TotalParam]
|
|
63
62
|
else:
|
|
64
|
-
|
|
63
|
+
raise KeyError(f"Invalid table id")
|
|
64
|
+
|
|
65
|
+
data = _normalize_data(
|
|
66
|
+
data, len(comp.header), smp.Info.experiment.step_num, text_col_indexes=comp.text_indexes)
|
|
65
67
|
|
|
66
68
|
try:
|
|
67
69
|
params_to_check = {
|
|
@@ -95,61 +97,46 @@ def update_handsontable(smp: Sample, data: list, id: str):
|
|
|
95
97
|
|
|
96
98
|
"""
|
|
97
99
|
|
|
98
|
-
def _normalize_data(a, cols, start_col=0):
|
|
99
|
-
if len(a) >= cols:
|
|
100
|
-
return a[start_col:cols]
|
|
101
|
-
else:
|
|
102
|
-
return a[start_col:] + [[''] * len(a[0])] * (cols - len(a))
|
|
103
|
-
|
|
104
|
-
def _strToBool(cols):
|
|
105
|
-
bools_dict = {
|
|
106
|
-
'true': True, 'false': False, 'True': True, 'False': False, '1': True, '0': False, 'none': False,
|
|
107
|
-
}
|
|
108
|
-
return [bools_dict.get(str(col).lower(), False) for col in cols]
|
|
109
|
-
|
|
110
|
-
def _digitize_data(a):
|
|
111
|
-
# pattern = r'^[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?$'
|
|
112
|
-
# return [[ast.literal_eval(str(cell)) if re.fullmatch(pattern, str(cell)) else np.nan if str(cell) == "" else cell for cell in row] for row in a]
|
|
113
|
-
return a
|
|
114
100
|
|
|
115
101
|
try:
|
|
116
|
-
|
|
102
|
+
col3 = _normalize_data(data[0:3], cols=3, rows=len(data[0]), text_col_indexes=[0, 1, 2])
|
|
117
103
|
except IndexError:
|
|
118
|
-
|
|
104
|
+
raise
|
|
119
105
|
|
|
120
106
|
update_all_table = False
|
|
121
107
|
try:
|
|
122
|
-
if
|
|
108
|
+
if col3[0] != smp.SequenceName or col3[1] != smp.SequenceValue or col3[2] != smp.IsochronMark:
|
|
123
109
|
update_all_table = True
|
|
124
|
-
smp.
|
|
125
|
-
smp.
|
|
110
|
+
smp.SequenceName = col3[0]
|
|
111
|
+
smp.SequenceValue = col3[1]
|
|
112
|
+
smp.IsochronMark = col3[2]
|
|
126
113
|
except IndexError:
|
|
127
114
|
print(f"Check sequence value / isochron mark failed")
|
|
128
|
-
|
|
129
|
-
|
|
115
|
+
raise
|
|
116
|
+
n = len(data[0])
|
|
130
117
|
if id == '1': # 样品值
|
|
131
|
-
data = _normalize_data(data, len(samples.SAMPLE_INTERCEPT_HEADERS), 3)
|
|
118
|
+
data = _normalize_data(data, len(samples.SAMPLE_INTERCEPT_HEADERS), n, 3)
|
|
132
119
|
smp.SampleIntercept = _digitize_data(data)
|
|
133
120
|
elif id == '2': # 本底值
|
|
134
|
-
data = _normalize_data(data, len(samples.BLANK_INTERCEPT_HEADERS), 3)
|
|
121
|
+
data = _normalize_data(data, len(samples.BLANK_INTERCEPT_HEADERS), n, 3)
|
|
135
122
|
smp.BlankIntercept = _digitize_data(data)
|
|
136
123
|
elif id == '3': # 校正值
|
|
137
|
-
data = _normalize_data(data, len(samples.CORRECTED_HEADERS), 3)
|
|
124
|
+
data = _normalize_data(data, len(samples.CORRECTED_HEADERS), n, 3)
|
|
138
125
|
smp.CorrectedValues = _digitize_data(data)
|
|
139
126
|
elif id == '4': # Degas table
|
|
140
|
-
data = _normalize_data(data, len(samples.DEGAS_HEADERS), 3)
|
|
127
|
+
data = _normalize_data(data, len(samples.DEGAS_HEADERS), n, 3)
|
|
141
128
|
smp.DegasValues = _digitize_data(data)
|
|
142
129
|
elif id == '5': # 发行表
|
|
143
|
-
data = _normalize_data(data, len(samples.PUBLISH_TABLE_HEADERS), 3)
|
|
130
|
+
data = _normalize_data(data, len(samples.PUBLISH_TABLE_HEADERS), n, 3)
|
|
144
131
|
smp.PublishValues = _digitize_data(data)
|
|
145
132
|
elif id == '6': # 年龄谱
|
|
146
|
-
data = _normalize_data(data, len(samples.SPECTRUM_TABLE_HEADERS), 3)
|
|
133
|
+
data = _normalize_data(data, len(samples.SPECTRUM_TABLE_HEADERS), n, 3)
|
|
147
134
|
smp.ApparentAgeValues = _digitize_data(data)
|
|
148
135
|
elif id == '7': # 等时线
|
|
149
|
-
data = _normalize_data(data, len(samples.ISOCHRON_TABLE_HEADERS), 3)
|
|
136
|
+
data = _normalize_data(data, len(samples.ISOCHRON_TABLE_HEADERS), n, 3)
|
|
150
137
|
smp.IsochronValues = _digitize_data(data)
|
|
151
138
|
elif id == '8': # 总参数
|
|
152
|
-
data = _normalize_data(data, len(samples.TOTAL_PARAMS_HEADERS), 3)
|
|
139
|
+
data = _normalize_data(data, len(samples.TOTAL_PARAMS_HEADERS), n, 3)
|
|
153
140
|
data = _digitize_data(data)
|
|
154
141
|
data[101: 112] = [_strToBool(i) for i in data[101: 112]]
|
|
155
142
|
smp.TotalParam = data
|
|
@@ -199,4 +186,50 @@ def update_data_from_table(smp: Sample, only_table: str = None):
|
|
|
199
186
|
pass
|
|
200
187
|
|
|
201
188
|
|
|
189
|
+
def _normalize_data(a, cols, rows, start_col=0, start_row=0, text_col_indexes=[]):
|
|
190
|
+
if isinstance(a, np.ndarray):
|
|
191
|
+
a = a.tolist()
|
|
192
|
+
if not isinstance(a, list):
|
|
193
|
+
raise ValueError(f"List required, but {type(a)} given.")
|
|
194
|
+
if len(a) >= cols:
|
|
195
|
+
a = a[start_col:cols]
|
|
196
|
+
else:
|
|
197
|
+
a = a[start_col:] + [[] for j in range(cols - len(a))]
|
|
198
|
+
|
|
199
|
+
def f(_, _i):
|
|
200
|
+
if _i in text_col_indexes:
|
|
201
|
+
if isinstance(_, type(None)):
|
|
202
|
+
return ""
|
|
203
|
+
if isinstance(_, float) and np.isnan(_):
|
|
204
|
+
return ""
|
|
205
|
+
return str(_)
|
|
206
|
+
else:
|
|
207
|
+
if _ in ["", None, np.nan]:
|
|
208
|
+
return np.nan
|
|
209
|
+
elif isinstance(_, str):
|
|
210
|
+
if _.lower() == 'true':
|
|
211
|
+
return 1
|
|
212
|
+
elif _.lower() == 'false':
|
|
213
|
+
return 0
|
|
214
|
+
return float(_)
|
|
215
|
+
|
|
216
|
+
for i in range(cols - start_col):
|
|
217
|
+
if len(a[i]) >= rows:
|
|
218
|
+
a[i] = [f(each, i + start_col) for each in a[i][start_row:rows]]
|
|
219
|
+
else:
|
|
220
|
+
a[i] = [f(each, i + start_col) for each in a[i][start_row:]] + [f("", i + start_col) for j in range(rows - len(a[i]))]
|
|
221
|
+
|
|
222
|
+
return a
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def _digitize_data(a):
|
|
226
|
+
# pattern = r'^[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?$'
|
|
227
|
+
# return [[ast.literal_eval(str(cell)) if re.fullmatch(pattern, str(cell)) else np.nan if str(cell) == "" else cell for cell in row] for row in a]
|
|
228
|
+
return a
|
|
229
|
+
|
|
202
230
|
|
|
231
|
+
def _strToBool(cols):
|
|
232
|
+
bools_dict = {
|
|
233
|
+
'true': True, 'false': False, 'True': True, 'False': False, '1': True, '0': False, 'none': False,
|
|
234
|
+
}
|
|
235
|
+
return [bools_dict.get(str(col).lower(), False) for col in cols]
|
|
@@ -5,13 +5,13 @@ ararpy/Example - Show MDD results.py,sha256=YFkiQual60lyCClsfvivr4REY6waSYuomf0u
|
|
|
5
5
|
ararpy/Example - Show all Kfs age spectra.py,sha256=1edPtBpFfS0lC7vLnLu34mDHt_xjbc8ptk6rZ--pf-I,12304
|
|
6
6
|
ararpy/Example - Show random walk results.py,sha256=8WWvbAI7ySiMR-XwtFe5kTQihW3mcqzL3S7EUZdoxYo,15477
|
|
7
7
|
ararpy/Example - Tc calculation.py,sha256=sD9pu3IaZ8mBV95rV2wOEhlQUexFNqBUoBqnNMdUBis,19617
|
|
8
|
-
ararpy/__init__.py,sha256=
|
|
8
|
+
ararpy/__init__.py,sha256=H-LaMP-KRGnQMY-ocBUgmRe9vohsJqj9gR-O_DZXSp0,5386
|
|
9
9
|
ararpy/test.py,sha256=4F46-JJ1Ge12HGae0qO44Qc6kiEMHBgn2MsY_5LlHDo,3973
|
|
10
10
|
ararpy/calc/__init__.py,sha256=kUjRuLE8TLuKOv3i976RnGJoEMj23QBZDu37LWs81U4,322
|
|
11
11
|
ararpy/calc/age.py,sha256=WOZs70zXiBWDIEhXJLIaNiYTOFJNk0NDbH5e5zCbCks,5435
|
|
12
|
-
ararpy/calc/arr.py,sha256=
|
|
12
|
+
ararpy/calc/arr.py,sha256=Kiads9ABfcBA3j_e_ZvpQou7tH-voOONoYFN2B8U5ak,15006
|
|
13
13
|
ararpy/calc/basic.py,sha256=AMQrhkNHhHtiguqTe4GPOYLuV8TEJBXpRJXJAoOwD9w,4634
|
|
14
|
-
ararpy/calc/corr.py,sha256=
|
|
14
|
+
ararpy/calc/corr.py,sha256=e9HGsD1GCS_Kv7X_dFYachBxAJgeKg2GP--fvZHedns,21609
|
|
15
15
|
ararpy/calc/err.py,sha256=63LtprqjemlIb1QGDst4Ggcv5KMSDHdlAIL-nyQs1eA,2691
|
|
16
16
|
ararpy/calc/histogram.py,sha256=0GVbDdsjd91KQ1sa2B7NtZ4KGo0XpRIJapgIrzAwQUo,5777
|
|
17
17
|
ararpy/calc/isochron.py,sha256=ej9G2e68k6yszonWHsLcEubh3TA7eh1upTJP_X0ttAA,5726
|
|
@@ -42,32 +42,32 @@ ararpy/examples/sample-default.smp,sha256=YNkoQGgPrsL_fXS7ZHxfRtLQWekCDqT9czS6vB
|
|
|
42
42
|
ararpy/files/__init__.py,sha256=l5B5ZQ01WdtvjjN0aMkyAFNgpwANdM_1I0tQbqnRuEY,69
|
|
43
43
|
ararpy/files/arr_file.py,sha256=pD5MxkAydL7cNq2wmKFUaOU4jHhc3MzTYrwbxZ3f46w,881
|
|
44
44
|
ararpy/files/basic.py,sha256=k2GXgZjhqSmKvpXQLjsXDksS_ZLvqD7AWW54fXnYvTI,1228
|
|
45
|
-
ararpy/files/calc_file.py,sha256
|
|
45
|
+
ararpy/files/calc_file.py,sha256=-CZXmlHVf65hKMLhwp6eSewbxzxywXcnpycoEeLDhZA,29304
|
|
46
46
|
ararpy/files/new_file.py,sha256=efblARIBROVLWS2w3-98BxLX5VZ8grRpiTkJFtf_rAk,214
|
|
47
47
|
ararpy/files/raw_file.py,sha256=X2_RjlNOUbdkA9MM2ZMNlZmGL7jc1-eV-Wy-bIu2bb0,20592
|
|
48
48
|
ararpy/files/xls.py,sha256=DVcZ_yRnc19p-m4leGGjt-YPDpSa2udYKmGyrM0qub0,640
|
|
49
49
|
ararpy/smp/EXPORT_TO_PDF_DATA_PROPERTIES.py,sha256=baDM437tu6hsPv0uYfod0TREXlPd6kvMBFT1S9ZZlkk,3024
|
|
50
50
|
ararpy/smp/__init__.py,sha256=k6_fa27UJsQK7K7oC5GYlwMo6l0Xd8af3QtOrZz2XJk,478
|
|
51
|
-
ararpy/smp/basic.py,sha256=
|
|
51
|
+
ararpy/smp/basic.py,sha256=MBvUXF1KlKcm-W4WLlIhUQ5AhJQ9lUEwIwSy1NMFiq8,28812
|
|
52
52
|
ararpy/smp/calculation.py,sha256=4Vg0HNbAGdTVdYIt17WeoKPmrTjmq9EqaP44P8AxT9U,2874
|
|
53
53
|
ararpy/smp/consts.py,sha256=XIdjdz8cYxspG2jMnoItdlUsxr3hKbNFJjMZJh1bpzw,393
|
|
54
|
-
ararpy/smp/corr.py,sha256=
|
|
54
|
+
ararpy/smp/corr.py,sha256=uZY3P5TLuXK1kwDXWqF6zWHPiEH0Ovsx9L6xonzDYhY,37844
|
|
55
55
|
ararpy/smp/diffusion_funcs.py,sha256=X6LC1XY-vub5BpAuZMlyA5k3DQcU8Qqf5uukwGjJOxw,186690
|
|
56
|
-
ararpy/smp/export.py,sha256=
|
|
56
|
+
ararpy/smp/export.py,sha256=XnLKjWk4LFqtqXdy2qCUkOLy0vkjMq-X-tE9A545BVE,120439
|
|
57
57
|
ararpy/smp/info.py,sha256=tpEIjrE4nR-GAYTricBk9gq0LuHh6F1Bt7HPo1rS2HM,497
|
|
58
|
-
ararpy/smp/initial.py,sha256=
|
|
58
|
+
ararpy/smp/initial.py,sha256=o3KcEx9nCIVJtdmy6BX_JZ_SjOmzWjAMffdm8JM01Vo,20119
|
|
59
59
|
ararpy/smp/json.py,sha256=zfJCC_2LCDckqC8Fpu10jEA6Knl3UtKO31I5g4fvsBE,2273
|
|
60
|
-
ararpy/smp/plots.py,sha256=
|
|
60
|
+
ararpy/smp/plots.py,sha256=SrYlTFUzfcKnUnhVf04dyGx0eJmR2mbjG0VRE8LTJnU,34202
|
|
61
61
|
ararpy/smp/raw.py,sha256=77J1dEYL4ZSeftp4tyog_Cy1Y5bwHNaLqJK4i4KLOSY,6500
|
|
62
|
-
ararpy/smp/sample.py,sha256=
|
|
63
|
-
ararpy/smp/style.py,sha256=
|
|
64
|
-
ararpy/smp/table.py,sha256=
|
|
62
|
+
ararpy/smp/sample.py,sha256=ICW-Sy1fePQLMJLT8wR4KIK8Ikcc0zzeXBZ55gVxI3s,60478
|
|
63
|
+
ararpy/smp/style.py,sha256=P7pAgBVpUzviJWyMiJXRE_NpzDf3ncNtFmUJHQGNFw0,8446
|
|
64
|
+
ararpy/smp/table.py,sha256=iXJilp0V_kDyuTycjV82fBimuzLmVciAaL_av0zIb5Y,8540
|
|
65
65
|
ararpy/thermo/__init__.py,sha256=6VBuqTRFl403PVqOuMkVrut0nKaQsAosBmfW91X1dMg,263
|
|
66
66
|
ararpy/thermo/arrhenius.py,sha256=Ass1ichHfqIAtpv8eLlgrUc1UOb3Urh1qzr1E3gLB4U,233
|
|
67
67
|
ararpy/thermo/atomic_level_random_walk.py,sha256=ncw9DtxRfS6zlQbLVLNX7WNoO9sX_nSomwAsTH0_O3k,25910
|
|
68
68
|
ararpy/thermo/basic.py,sha256=JJRZbYmvXlpRAV2FeFPwLhrig4ZhNQmJnWqgOjo-1YQ,11508
|
|
69
|
-
ararpy-0.2.
|
|
70
|
-
ararpy-0.2.
|
|
71
|
-
ararpy-0.2.
|
|
72
|
-
ararpy-0.2.
|
|
73
|
-
ararpy-0.2.
|
|
69
|
+
ararpy-0.2.4.dist-info/licenses/LICENSE,sha256=cvG5t_C1qY_zUyJI7sNOa7gCArdngNPaOrfujl2LYuc,1085
|
|
70
|
+
ararpy-0.2.4.dist-info/METADATA,sha256=KaF8mrbZECHMeFN-h3w2r6YA9g6j04ozGPQ13-CoeRc,24726
|
|
71
|
+
ararpy-0.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
72
|
+
ararpy-0.2.4.dist-info/top_level.txt,sha256=9iTpsPCYuRYq09yQTk9d2lqB8JtTEOmbN-IcGB-K3vY,7
|
|
73
|
+
ararpy-0.2.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|