ararpy 0.1.24__py3-none-any.whl → 0.1.25__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 -2
- ararpy/calc/regression.py +28 -43
- {ararpy-0.1.24.dist-info → ararpy-0.1.25.dist-info}/METADATA +1 -1
- {ararpy-0.1.24.dist-info → ararpy-0.1.25.dist-info}/RECORD +7 -7
- {ararpy-0.1.24.dist-info → ararpy-0.1.25.dist-info}/WHEEL +0 -0
- {ararpy-0.1.24.dist-info → ararpy-0.1.25.dist-info}/licenses/LICENSE +0 -0
- {ararpy-0.1.24.dist-info → ararpy-0.1.25.dist-info}/top_level.txt +0 -0
ararpy/__init__.py
CHANGED
|
@@ -16,10 +16,10 @@ from . import calc, smp, files, thermo, test
|
|
|
16
16
|
""" Information """
|
|
17
17
|
|
|
18
18
|
name = 'ararpy'
|
|
19
|
-
version = '0.1.
|
|
19
|
+
version = '0.1.25'
|
|
20
20
|
__version__ = version
|
|
21
21
|
full_version = version
|
|
22
|
-
last_update = '2024-
|
|
22
|
+
last_update = '2024-05-20'
|
|
23
23
|
|
|
24
24
|
""" ArArPy Functions """
|
|
25
25
|
|
ararpy/calc/regression.py
CHANGED
|
@@ -794,39 +794,31 @@ def power(a0: list, a1: list):
|
|
|
794
794
|
def _pow_func(x, a, b, c):
|
|
795
795
|
return a * x ** b + c
|
|
796
796
|
|
|
797
|
-
def
|
|
797
|
+
def _residuals(params):
|
|
798
798
|
a, b, c = params
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
y[1] = sum(a0) / len(a0)
|
|
804
|
-
x[2] = sum(a1[-3:]) / 3
|
|
805
|
-
y[2] = sum(a0[-3:]) / 3
|
|
806
|
-
return np.array([
|
|
807
|
-
_pow_func(x[0], a, b, c) - y[0],
|
|
808
|
-
_pow_func(x[1], a, b, c) - y[1],
|
|
809
|
-
_pow_func(x[2], a, b, c) - y[2],
|
|
810
|
-
])
|
|
811
|
-
|
|
812
|
-
def _get_sum(a, b, c):
|
|
813
|
-
y_predicted = [_pow_func(_x, a, b, c) for _x in a1]
|
|
814
|
-
return sum([(y_predicted[i] - a0[i]) ** 2 for i in range(len(a0))])
|
|
799
|
+
return [_pow_func(xi, a, b, c) - yi for xi, yi in zip(a1, a0)]
|
|
800
|
+
|
|
801
|
+
def _sum_squared_error(params):
|
|
802
|
+
return sum(r**2 for r in _residuals(params))
|
|
815
803
|
|
|
816
804
|
def _get_abc(b): # Return a, b, c given b based on linest regression
|
|
817
805
|
f = linest(a0, [_x ** b for _x in a1])
|
|
818
806
|
return f[5][1], b, f[0]
|
|
819
807
|
|
|
808
|
+
def _get_init():
|
|
809
|
+
f = linest(np.log(np.array(a0)), np.log(np.array(a1)))
|
|
810
|
+
return np.exp(f[0]), f[5][1], 0
|
|
811
|
+
|
|
820
812
|
try:
|
|
821
|
-
a, b, c =
|
|
813
|
+
a, b, c = _get_init() # initial estimate
|
|
822
814
|
count = 0
|
|
823
815
|
step = 0.01
|
|
824
816
|
while count < 100:
|
|
825
817
|
a, b, c = _get_abc(b)
|
|
826
|
-
s =
|
|
818
|
+
s = _sum_squared_error([a, b, c])
|
|
827
819
|
b_left, b_right = b - step * b, b + step * b
|
|
828
|
-
s_left =
|
|
829
|
-
s_right =
|
|
820
|
+
s_left = _sum_squared_error(_get_abc(b_left))
|
|
821
|
+
s_right = _sum_squared_error(_get_abc(b_right))
|
|
830
822
|
if s_left > s > s_right:
|
|
831
823
|
b = b_right
|
|
832
824
|
continue
|
|
@@ -886,39 +878,32 @@ def exponential(a0: list, a1: list):
|
|
|
886
878
|
def _exp_func(x, a, b, c):
|
|
887
879
|
return a * b ** x + c
|
|
888
880
|
|
|
889
|
-
def
|
|
881
|
+
def _residuals(params):
|
|
890
882
|
a, b, c = params
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
y[1] = sum(a0) / len(a0)
|
|
896
|
-
x[2] = sum(a1[-3:]) / 3
|
|
897
|
-
y[2] = sum(a0[-3:]) / 3
|
|
898
|
-
return np.array([
|
|
899
|
-
_exp_func(x[0], a, b, c) - y[0],
|
|
900
|
-
_exp_func(x[1], a, b, c) - y[1],
|
|
901
|
-
_exp_func(x[2], a, b, c) - y[2],
|
|
902
|
-
])
|
|
903
|
-
|
|
904
|
-
def _get_sum(a, b, c):
|
|
905
|
-
y_predicted = [_exp_func(_x, a, b, c) for _x in a1]
|
|
906
|
-
return sum([(y_predicted[i] - a0[i]) ** 2 for i in range(len(a0))])
|
|
883
|
+
return [_exp_func(xi, a, b, c) - yi for xi, yi in zip(a1, a0)]
|
|
884
|
+
|
|
885
|
+
def _sum_squared_error(params):
|
|
886
|
+
return sum(r**2 for r in _residuals(params))
|
|
907
887
|
|
|
908
888
|
def _get_ac(b):
|
|
909
|
-
f = linest(a0, [b **
|
|
889
|
+
f = linest(a0, [b ** xi for xi in a1])
|
|
910
890
|
return f[5][1], b, f[0]
|
|
911
891
|
|
|
892
|
+
def _get_init():
|
|
893
|
+
f = linest(np.log(np.array(a0)), np.array(a1))
|
|
894
|
+
return np.exp(f[0]), np.exp(f[5][1]), 0
|
|
895
|
+
|
|
912
896
|
try:
|
|
913
|
-
a, b, c =
|
|
897
|
+
a, b, c = _get_init()
|
|
898
|
+
# a, b, c = minimize(_sum_squared_error, [a, b, c], method="Nelder-Mead").x # 优化方法
|
|
914
899
|
count = 0
|
|
915
900
|
step = 0.01
|
|
916
901
|
while count < 100:
|
|
917
902
|
a, b, c = _get_ac(b)
|
|
918
|
-
s =
|
|
903
|
+
s = _sum_squared_error([a, b, c])
|
|
919
904
|
b_left, b_right = b - step * b, b + step * b
|
|
920
|
-
s_left =
|
|
921
|
-
s_right =
|
|
905
|
+
s_left = _sum_squared_error(_get_ac(b_left))
|
|
906
|
+
s_right = _sum_squared_error(_get_ac(b_right))
|
|
922
907
|
if s_left > s > s_right:
|
|
923
908
|
b = b_right
|
|
924
909
|
continue
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
ararpy/__init__.py,sha256=
|
|
1
|
+
ararpy/__init__.py,sha256=IaTaNQCT51JP-Xn9mL40aPYSjWqEPbZAtHp0nkoS52c,6857
|
|
2
2
|
ararpy/test.py,sha256=4F46-JJ1Ge12HGae0qO44Qc6kiEMHBgn2MsY_5LlHDo,3973
|
|
3
3
|
ararpy/calc/__init__.py,sha256=kUjRuLE8TLuKOv3i976RnGJoEMj23QBZDu37LWs81U4,322
|
|
4
4
|
ararpy/calc/age.py,sha256=WOZs70zXiBWDIEhXJLIaNiYTOFJNk0NDbH5e5zCbCks,5435
|
|
@@ -11,7 +11,7 @@ ararpy/calc/isochron.py,sha256=ej9G2e68k6yszonWHsLcEubh3TA7eh1upTJP_X0ttAA,5726
|
|
|
11
11
|
ararpy/calc/jvalue.py,sha256=OL5zPYU8Pac-wOxUWPCgu3onh2n01xDnhpi2mlUsjJM,1146
|
|
12
12
|
ararpy/calc/plot.py,sha256=sUqjKBdAEjFarUoSCLqf8cbUM0rEAdZhmtyXB2K7LkA,2139
|
|
13
13
|
ararpy/calc/raw_funcs.py,sha256=UC01lvA6GyZ5FJv43jgoUULAFoLnZJMxeSa0BeVFCAM,2637
|
|
14
|
-
ararpy/calc/regression.py,sha256=
|
|
14
|
+
ararpy/calc/regression.py,sha256=mHUKobKx-Q9c7E49vPoQA2tA-MwO9BWvCp3VfnuUhUA,39776
|
|
15
15
|
ararpy/calc/spectra.py,sha256=_Q23eP9necHlaCoHf3_UfW1N3JmVZj5rcWFro8GS-CA,1995
|
|
16
16
|
ararpy/examples/022_VU124-M11a.ahd,sha256=3m0Gd-ZObou3KsnRNFMf77QwzT1Uz3nu3vA33Sqeyng,5414
|
|
17
17
|
ararpy/examples/20WHA0103.age,sha256=cT-a4d7Wt77aotx6v0G47vulY_TZIcZUcaVHB3pqTPM,380416
|
|
@@ -59,8 +59,8 @@ ararpy/thermo/__init__.py,sha256=6VBuqTRFl403PVqOuMkVrut0nKaQsAosBmfW91X1dMg,263
|
|
|
59
59
|
ararpy/thermo/arrhenius.py,sha256=Ass1ichHfqIAtpv8eLlgrUc1UOb3Urh1qzr1E3gLB4U,233
|
|
60
60
|
ararpy/thermo/atomic_level_random_walk.py,sha256=Q97zfe2h2RaxADkoBAqd0uEiP16BFOajrTmXHMkL2EQ,25502
|
|
61
61
|
ararpy/thermo/basic.py,sha256=nBGHI9uK7VdJwThwBIOcKAzdnYqPyQseFoY6s4zKizk,11504
|
|
62
|
-
ararpy-0.1.
|
|
63
|
-
ararpy-0.1.
|
|
64
|
-
ararpy-0.1.
|
|
65
|
-
ararpy-0.1.
|
|
66
|
-
ararpy-0.1.
|
|
62
|
+
ararpy-0.1.25.dist-info/licenses/LICENSE,sha256=cvG5t_C1qY_zUyJI7sNOa7gCArdngNPaOrfujl2LYuc,1085
|
|
63
|
+
ararpy-0.1.25.dist-info/METADATA,sha256=_jTZMLzib2249ffidHh8OG0E3stzFUz9LXDlIRkQNzk,24516
|
|
64
|
+
ararpy-0.1.25.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
|
65
|
+
ararpy-0.1.25.dist-info/top_level.txt,sha256=9iTpsPCYuRYq09yQTk9d2lqB8JtTEOmbN-IcGB-K3vY,7
|
|
66
|
+
ararpy-0.1.25.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|