DiadFit 1.0.1__tar.gz → 1.0.5__tar.gz
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.
- {DiadFit-1.0.1 → DiadFit-1.0.5}/PKG-INFO +1 -1
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/CO2_EOS.py +20 -4
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/H2O_fitting.py +24 -16
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/_version.py +1 -1
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/densimeters.py +2 -2
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/diads.py +94 -2
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/error_propagation.py +12 -4
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/ne_lines.py +9 -9
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/relaxifi.py +24 -9
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/PKG-INFO +1 -1
- {DiadFit-1.0.1 → DiadFit-1.0.5}/README.md +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/setup.cfg +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/setup.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/CO2_in_bubble_error.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1117_1400.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1117_1447.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1220_1400.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1220_1447.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1220_1567.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data_CCMR.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data_CMASS.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data_CMASS_24C.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1117_1400.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1117_1447.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1220_1400.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1220_1447.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1220_1567.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data_CCMR.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data_CMASS.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data_CMASS_24C.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_data.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1117_1400.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1117_1447.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1220_1400.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1220_1447.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1220_1567.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_data_CCMR.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_data_CMASS.pkl +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Psensor.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/__init__.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/argon_lines.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/cosmicray_filter.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/densimeter_fitting.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/density_depth_crustal_profiles.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/importing_data_files.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/lookup_table.csv +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/lookup_table_noneg.csv +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/molar_gas_proportions.py +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/SOURCES.txt +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/dependency_links.txt +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/requires.txt +0 -0
- {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/top_level.txt +0 -0
@@ -1028,7 +1028,7 @@ def ensure_series(a, b, c):
|
|
1028
1028
|
else:
|
1029
1029
|
c = pd.Series(c)
|
1030
1030
|
|
1031
|
-
return a, b, c
|
1031
|
+
return a.reset_index(drop=True), b.reset_index(drop=True), c.reset_index(drop=True)
|
1032
1032
|
|
1033
1033
|
|
1034
1034
|
def ensure_series_4(a, b, c, d):
|
@@ -1061,7 +1061,7 @@ def ensure_series_4(a, b, c, d):
|
|
1061
1061
|
else:
|
1062
1062
|
d = pd.Series(d)
|
1063
1063
|
|
1064
|
-
return a, b, c, d
|
1064
|
+
return a.reset_index(drop=True), b.reset_index(drop=True), c.reset_index(drop=True), d.reset_index(drop=True)
|
1065
1065
|
|
1066
1066
|
|
1067
1067
|
|
@@ -2064,9 +2064,13 @@ def calculate_entrapment_P_XH2O(*, XH2O, CO2_dens_gcm3, T_K, T_K_ambient=37+273.
|
|
2064
2064
|
|
2065
2065
|
|
2066
2066
|
"""
|
2067
|
+
|
2067
2068
|
XH2O, rho_meas, T_K=ensure_series(a=XH2O, b=CO2_dens_gcm3, c=T_K)
|
2068
2069
|
alpha=XH2O/(1-XH2O)
|
2069
2070
|
|
2071
|
+
# All inputs 194 up to here
|
2072
|
+
|
2073
|
+
|
2070
2074
|
# IF water is lost
|
2071
2075
|
rho_orig_H_loss=rho_meas*(1+alpha*(18/44))
|
2072
2076
|
# IF water isnt lost
|
@@ -2083,11 +2087,23 @@ def calculate_entrapment_P_XH2O(*, XH2O, CO2_dens_gcm3, T_K, T_K_ambient=37+273.
|
|
2083
2087
|
|
2084
2088
|
# calculate density of H2O using EOS
|
2085
2089
|
H2O_dens=calculate_rho_for_P_T_H2O(P_kbar=P_H2O,T_K=T_K_ambient)
|
2090
|
+
H2O_dens=H2O_dens.reset_index(drop=True)
|
2086
2091
|
|
2087
2092
|
# Calculate the bulk density by re-arranging the two volume equations
|
2088
2093
|
nan_mask = H2O_dens==0
|
2089
|
-
|
2090
|
-
|
2094
|
+
|
2095
|
+
# Debugging
|
2096
|
+
|
2097
|
+
|
2098
|
+
|
2099
|
+
|
2100
|
+
rho_orig_no_H_loss=(rho_meas*H2O_dens)/((1-XH2O_mass)*H2O_dens+XH2O_mass*rho_meas)
|
2101
|
+
|
2102
|
+
|
2103
|
+
|
2104
|
+
|
2105
|
+
rho_orig_no_H_loss = np.where(nan_mask, rho_meas, rho_orig_no_H_loss)
|
2106
|
+
|
2091
2107
|
|
2092
2108
|
|
2093
2109
|
|
@@ -872,13 +872,14 @@ fit_sil='poly', dpi=200):
|
|
872
872
|
ydat_sil=y_corr_sil
|
873
873
|
|
874
874
|
xspace_sil=xdat_sil[1]-xdat_sil[0]
|
875
|
-
area_trap =
|
875
|
+
area_trap = trapz(y_corr_sil, dx=xspace_sil)
|
876
876
|
area_simps = simpson(y_corr_sil, dx=xspace_sil)
|
877
|
+
|
877
878
|
# Just the LW area
|
878
879
|
xsil_LW=xdat_sil[(xdat_sil>LW[0]) & (xdat_sil<LW[1])]
|
879
880
|
y_corr_sil_LW=y_corr_sil[(xdat_sil>LW[0]) & (xdat_sil<LW[1])]
|
880
881
|
xspace_sil_LW=xsil_LW[1]-xsil_LW[0]
|
881
|
-
area_trap_LW=
|
882
|
+
area_trap_LW=trapz(y_corr_sil_LW, dx=xspace_sil_LW)
|
882
883
|
area_simp_LW=simpson(y_corr_sil_LW, dx=xspace_sil_LW)
|
883
884
|
|
884
885
|
|
@@ -886,7 +887,7 @@ fit_sil='poly', dpi=200):
|
|
886
887
|
xsil_HW=xdat_sil[(xdat_sil>HW[0]) & (xdat_sil<HW[1])]
|
887
888
|
y_corr_sil_HW=y_corr_sil[(xdat_sil>HW[0]) & (xdat_sil<HW[1])]
|
888
889
|
xspace_sil_HW=xsil_HW[1]-xsil_HW[0]
|
889
|
-
area_trap_HW=
|
890
|
+
area_trap_HW=trapz(y_corr_sil_HW, dx=xspace_sil_HW)
|
890
891
|
area_simp_HW=simpson(y_corr_sil_HW, dx=xspace_sil_HW)
|
891
892
|
|
892
893
|
# MW
|
@@ -894,7 +895,7 @@ fit_sil='poly', dpi=200):
|
|
894
895
|
xsil_MW=xdat_sil[(xdat_sil>MW[0]) & (xdat_sil<MW[1])]
|
895
896
|
y_corr_sil_MW=y_corr_sil[(xdat_sil>MW[0]) & (xdat_sil<MW[1])]
|
896
897
|
xspace_sil_MW=xsil_MW[1]-xsil_MW[0]
|
897
|
-
area_trap_MW=
|
898
|
+
area_trap_MW=trapz(y_corr_sil_MW, dx=xspace_sil_MW)
|
898
899
|
area_simp_MW=simpson(y_corr_sil_MW, dx=xspace_sil_MW)
|
899
900
|
|
900
901
|
|
@@ -966,8 +967,8 @@ fit_sil='poly', dpi=200):
|
|
966
967
|
'Silicate_Simpson_Area': area_simps,
|
967
968
|
'LW_Silicate_Trapezoid_Area':area_trap_LW,
|
968
969
|
'LW_Silicate_Simpson_Area':area_simp_LW,
|
969
|
-
'HW_Silicate_Trapezoid_Area':
|
970
|
-
'HW_Silicate_Simpson_Area':
|
970
|
+
'HW_Silicate_Trapezoid_Area':area_trap_HW,
|
971
|
+
'HW_Silicate_Simpson_Area':area_simp_HW,
|
971
972
|
}, index=[0])
|
972
973
|
|
973
974
|
if MW is not None:
|
@@ -1039,7 +1040,8 @@ def fit_area_for_water_region(*, path, filename, Spectra=None, config1: water_bc
|
|
1039
1040
|
Returns
|
1040
1041
|
-------
|
1041
1042
|
pd.DataFrame
|
1042
|
-
DataFrame with columns for
|
1043
|
+
DataFrame with columns for different areas, and parameters for choosen background positions.
|
1044
|
+
|
1043
1045
|
|
1044
1046
|
"""
|
1045
1047
|
Water=Spectra
|
@@ -1155,7 +1157,7 @@ def fit_area_for_water_region(*, path, filename, Spectra=None, config1: water_bc
|
|
1155
1157
|
|
1156
1158
|
|
1157
1159
|
xspace_water=xdat_water[1]-xdat_water[0]
|
1158
|
-
area_trap =
|
1160
|
+
area_trap = trapz(y_corr_water, dx=xspace_water)
|
1159
1161
|
area_simps = simpson(y_corr_water, dx=xspace_water)
|
1160
1162
|
|
1161
1163
|
|
@@ -1242,10 +1244,12 @@ def stitch_dataframes_together(df_sil, df_water, MI_file, Host_file=None, save_
|
|
1242
1244
|
Returns
|
1243
1245
|
-----------
|
1244
1246
|
pd.DataFrame
|
1245
|
-
DataFrame with columns for MI filename,
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1247
|
+
DataFrame with columns for MI filename,
|
1248
|
+
Silicate_Trapezoid_Area, Silicate_Simpson_Area = Total Silicate Area using trapezoid or Simpson method
|
1249
|
+
LW_Trapezoid_Area, LW_Simpson_Area, MW_Trapezoid_Area, MW_Simpson_Area, HW_Trapezoid_Area, HW_Simpson_Area = Areas of LW, MW and HW Silicate areas (following Shiavi) using Trapezoid or Simpson integration methodWater_Trapezoid_area,
|
1250
|
+
Water_Simpson_area = Total area under water peak using Simpson or Trapezoid Integration method.
|
1251
|
+
Water_to_HW_ratio_Simpson, Water_to_HW_ratio_Trapezoid: Ratio of Total water area divided by the HW silicate area
|
1252
|
+
Water_to_Total_Silicate_ratio_Simpson, Water_to_Total_Silicate_ratio_Trapezoid: Ratio of Total water area divided by the HW silicate area
|
1249
1253
|
|
1250
1254
|
|
1251
1255
|
"""
|
@@ -1253,16 +1257,20 @@ def stitch_dataframes_together(df_sil, df_water, MI_file, Host_file=None, save_
|
|
1253
1257
|
if Host_file is not None:
|
1254
1258
|
Combo_Area.insert(0, 'Host filename', Host_file)
|
1255
1259
|
Combo_Area.insert(1, 'MI filename', MI_file)
|
1256
|
-
Combo_Area.insert(2, '
|
1260
|
+
Combo_Area.insert(2, 'Water_to_HW_ratio_Trapezoid',
|
1257
1261
|
Combo_Area['Water_Trapezoid_Area']/Combo_Area['HW_Silicate_Trapezoid_Area'])
|
1258
|
-
Combo_Area.insert(3, '
|
1262
|
+
Combo_Area.insert(3, 'Water_to_HW_ratio_Simpson',
|
1259
1263
|
Combo_Area['Water_Simpson_Area']/Combo_Area['HW_Silicate_Simpson_Area'])
|
1264
|
+
Combo_Area.insert(4, 'Water_to_Total_Silicate_ratio_Trapezoid',
|
1265
|
+
Combo_Area['Water_Trapezoid_Area']/Combo_Area['Silicate_Trapezoid_Area'])
|
1266
|
+
Combo_Area.insert(5, 'Water_to_Total_Silicate_ratio_Simpson',
|
1267
|
+
Combo_Area['Water_Simpson_Area']/Combo_Area['Silicate_Simpson_Area'])
|
1260
1268
|
|
1261
1269
|
if Host_file is not None:
|
1262
|
-
cols_to_move=['Host filename', 'MI filename', '
|
1270
|
+
cols_to_move=['Host filename', 'MI filename', 'Water_to_HW_ratio_Trapezoid', 'Water_to_HW_ratio_Simpson', 'Water_to_Total_Silicate_ratio_Trapezoid', 'Water_to_Total_Silicate_ratio_Simpson',
|
1263
1271
|
'Water_Trapezoid_Area', 'Water_Simpson_Area', 'Silicate_Trapezoid_Area', 'Silicate_Simpson_Area']
|
1264
1272
|
else:
|
1265
|
-
cols_to_move=['MI filename', '
|
1273
|
+
cols_to_move=['MI filename', 'Water_to_HW_ratio_Trapezoid', 'Water_to_HW_ratio_Simpson', 'Water_to_Total_Silicate_ratio_Trapezoid', 'Water_to_Total_Silicate_ratio_Simpson',
|
1266
1274
|
'Water_Trapezoid_Area', 'Water_Simpson_Area', 'Silicate_Trapezoid_Area', 'Silicate_Simpson_Area']
|
1267
1275
|
|
1268
1276
|
|
@@ -267,8 +267,8 @@ def propagate_error_split_neon_peakfit(*, df_fits, Ne_corr=None, Ne_err=None, pr
|
|
267
267
|
|
268
268
|
|
269
269
|
# Get the peak fit errors
|
270
|
-
Diad1_err=df_fits['Diad1_cent_err'].fillna(0)
|
271
|
-
Diad2_err=df_fits['Diad2_cent_err'].fillna(0)
|
270
|
+
Diad1_err=df_fits['Diad1_cent_err'].fillna(0).infer_objects()
|
271
|
+
Diad2_err=df_fits['Diad2_cent_err'].fillna(0).infer_objects()
|
272
272
|
split_err=(Diad1_err**2 + Diad2_err**2)**0.5
|
273
273
|
Combo_err= (((df_fits['Splitting']* (Ne_err))**2) + (pref_Ne *split_err )**2 )**0.5
|
274
274
|
|
@@ -7,6 +7,7 @@ from lmfit.models import GaussianModel, VoigtModel, LinearModel, ConstantModel,
|
|
7
7
|
from scipy.signal import find_peaks
|
8
8
|
from scipy.signal.windows import gaussian
|
9
9
|
|
10
|
+
|
10
11
|
import os
|
11
12
|
import re
|
12
13
|
from os import listdir
|
@@ -17,10 +18,11 @@ from dataclasses import dataclass
|
|
17
18
|
import matplotlib.patches as patches
|
18
19
|
import warnings as w
|
19
20
|
from tqdm import tqdm
|
20
|
-
from
|
21
|
+
from scipy.integrate import trapezoid
|
21
22
|
from scipy.integrate import simpson
|
22
23
|
from scipy.interpolate import interp1d
|
23
24
|
|
25
|
+
|
24
26
|
# Allowed models
|
25
27
|
|
26
28
|
allowed_models = ["VoigtModel", "PseudoVoigtModel", "Pearson4Model", "SkewedVoigtModel"]
|
@@ -832,6 +834,96 @@ def filter_splitting_prominence(*, fit_params, data_y_all,
|
|
832
834
|
|
833
835
|
return fit_params_filt.reset_index(drop=True), data_y_filt, fit_params_disc.reset_index(drop=True), data_y_disc
|
834
836
|
|
837
|
+
def filter_by_string(*, fit_params, data_y_all,
|
838
|
+
x_cord,
|
839
|
+
str_filt=None):
|
840
|
+
""" Filters Spectra based on approximate splitting, draws a plot showing spectra to discard and those to keep
|
841
|
+
|
842
|
+
Parameters
|
843
|
+
--------------
|
844
|
+
fit_params: pd.dataframe
|
845
|
+
dataframe of fit parameters from loop_approx_diad_fits
|
846
|
+
|
847
|
+
data_y_all: np.array
|
848
|
+
y coordinates of each spectra from loop_approx_diad_fits, used for plotting visualizatoins
|
849
|
+
|
850
|
+
x_cord: np.array
|
851
|
+
x coordinates of 1 spectra. Assumes all x coordinates the same length
|
852
|
+
|
853
|
+
|
854
|
+
|
855
|
+
str_filt: str
|
856
|
+
Filters just based on string in filename. Keeps files with string in, discards those without.
|
857
|
+
|
858
|
+
Returns
|
859
|
+
--------------
|
860
|
+
fit_params_filt: pd.DataFrame
|
861
|
+
dataframe of fit parameters for spectra to keep
|
862
|
+
data_y_filt: np.array
|
863
|
+
y coordinates of spectra to keep
|
864
|
+
fit_params_disc: pd.DataFrame
|
865
|
+
dataframe of fit parameters for spectra to discard
|
866
|
+
data_y_disc: np.array
|
867
|
+
y coordinates of spectra to discard
|
868
|
+
|
869
|
+
|
870
|
+
"""
|
871
|
+
|
872
|
+
filt=fit_params['filename'].str.contains(str_filt)
|
873
|
+
|
874
|
+
|
875
|
+
fit_params_filt=fit_params.loc[filt].reset_index(drop=True)
|
876
|
+
fit_params_disc=fit_params.loc[~(filt)].reset_index(drop=True)
|
877
|
+
|
878
|
+
print('Keeping N='+str(len(fit_params_filt)))
|
879
|
+
print('Discarding N='+str(len(fit_params_disc)))
|
880
|
+
|
881
|
+
|
882
|
+
|
883
|
+
# Then apply to get data
|
884
|
+
data_y_filt=data_y_all[:, (filt)]
|
885
|
+
data_y_disc=data_y_all[:, ~(filt)]
|
886
|
+
|
887
|
+
intc=800
|
888
|
+
prom_filt=0
|
889
|
+
prom_disc=0
|
890
|
+
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12,5))
|
891
|
+
ax1.set_title('Samples')
|
892
|
+
ax2.set_title('Standards')
|
893
|
+
if sum(~filt)>0:
|
894
|
+
for i in range(0, np.shape(data_y_disc)[1]):
|
895
|
+
av_prom_disc=np.abs(np.nanmedian(fit_params_disc['Diad1_abs_prom'])/intc)
|
896
|
+
Diff=np.nanmax(data_y_disc[:, i])-np.nanmin(data_y_disc[:, i])
|
897
|
+
av_prom_Keep=fit_params_disc['Diad1_abs_prom'].iloc[i]
|
898
|
+
prom_disc=prom_disc+av_prom_disc
|
899
|
+
ax1.plot(x_cord+i*5, (data_y_disc[:, i]-np.nanmin(data_y_disc[:, i]))/Diff+i/3, '-r', lw=0.5)
|
900
|
+
yplot=np.quantile((data_y_disc[:, i]-np.nanmin(data_y_disc[:, i]))/Diff+i/3, 0.65)
|
901
|
+
file=fit_params_disc['filename'].iloc[i]
|
902
|
+
file = file.replace("_CRR_DiadFit", "")
|
903
|
+
ax1.annotate(str(file), xy=(1450+i*5, yplot),
|
904
|
+
xycoords="data", fontsize=8, bbox=dict(facecolor='white', edgecolor='none', pad=2))
|
905
|
+
|
906
|
+
ax1.set_xlim([1250, 1500+i*5])
|
907
|
+
ax1.set_xticks([])
|
908
|
+
ax1.set_yticks([])
|
909
|
+
if sum(filt)>0:
|
910
|
+
for i in range(0, np.shape(data_y_filt)[1]):
|
911
|
+
Diff=np.nanmax(data_y_filt[:, i])-np.nanmin(data_y_filt[:, i])
|
912
|
+
av_prom_Keep=fit_params_filt['Diad1_abs_prom'].iloc[i]
|
913
|
+
prom_filt=prom_filt+av_prom_Keep
|
914
|
+
file=fit_params_filt['filename'].iloc[i]
|
915
|
+
ax2.plot(x_cord+i*5, (data_y_filt[:, i]-np.nanmin(data_y_filt[:, i]))/Diff+i/3, '-b', lw=0.5)
|
916
|
+
yplot=np.quantile((data_y_filt[:, i]-np.nanmin(data_y_filt[:, i]))/Diff+i/3, 0.65)
|
917
|
+
ax2.annotate(str(file), xy=(1450+i*5, yplot),
|
918
|
+
xycoords="data", fontsize=8, bbox=dict(facecolor='white', edgecolor='none', pad=2))
|
919
|
+
|
920
|
+
|
921
|
+
ax2.set_xlim([1250, 1450+i*5])
|
922
|
+
ax2.set_xticks([])
|
923
|
+
ax2.set_yticks([])
|
924
|
+
|
925
|
+
return fit_params_filt.reset_index(drop=True), data_y_filt, fit_params_disc.reset_index(drop=True), data_y_disc
|
926
|
+
|
835
927
|
|
836
928
|
def identify_diad_group(*, fit_params, data_y, x_cord, filter_bool,y_fig_scale=0.1, grp_filter='Weak', str_filt=None):
|
837
929
|
|
@@ -2459,7 +2551,7 @@ def fit_gaussian_voigt_generic_diad(config1, *, diad1=False, diad2=False, path=N
|
|
2459
2551
|
# Final check - that Gaussian isnt anywhere near the height of the diad
|
2460
2552
|
|
2461
2553
|
|
2462
|
-
df_out=df_out.fillna(0)
|
2554
|
+
df_out=df_out.fillna(0).infer_objects()
|
2463
2555
|
|
2464
2556
|
return result, df_out, y_best_fit, x_lin, components, xdat, ydat, ax1_xlim, ax2_xlim, residual_diad_coords, ydat_inrange, xdat_inrange
|
2465
2557
|
|
@@ -331,6 +331,8 @@ error_CO2_dens=0, error_type_CO2_dens='Abs', error_dist_CO2_dens='normal',
|
|
331
331
|
|
332
332
|
# Check for panda Series
|
333
333
|
|
334
|
+
|
335
|
+
|
334
336
|
def convert_inputs_to_series(T_K, error_T_K, CO2_dens_gcm3, error_CO2_dens_gcm3, XH2O, error_XH2O):
|
335
337
|
# Create a list of all inputs
|
336
338
|
inputs = [T_K, error_T_K, CO2_dens_gcm3, error_CO2_dens_gcm3, XH2O, error_XH2O]
|
@@ -341,11 +343,17 @@ def convert_inputs_to_series(T_K, error_T_K, CO2_dens_gcm3, error_CO2_dens_gcm3,
|
|
341
343
|
# Unpack the converted inputs back to their respective variables
|
342
344
|
T_K, error_T_K, CO2_dens_gcm3, error_CO2_dens_gcm3, XH2O, error_XH2O = converted_inputs
|
343
345
|
|
344
|
-
#
|
345
|
-
|
346
|
-
|
347
|
-
|
346
|
+
# Reset index only if the input is a pandas Series
|
347
|
+
T_K = T_K.reset_index(drop=True) if isinstance(T_K, pd.Series) else T_K
|
348
|
+
error_T_K = error_T_K.reset_index(drop=True) if isinstance(error_T_K, pd.Series) else error_T_K
|
349
|
+
CO2_dens_gcm3 = CO2_dens_gcm3.reset_index(drop=True) if isinstance(CO2_dens_gcm3, pd.Series) else CO2_dens_gcm3
|
350
|
+
error_CO2_dens_gcm3 = error_CO2_dens_gcm3.reset_index(drop=True) if isinstance(error_CO2_dens_gcm3, pd.Series) else error_CO2_dens_gcm3
|
351
|
+
XH2O = XH2O.reset_index(drop=True) if isinstance(XH2O, pd.Series) else XH2O
|
352
|
+
error_XH2O = error_XH2O.reset_index(drop=True) if isinstance(error_XH2O, pd.Series) else error_XH2O
|
348
353
|
|
354
|
+
# Return the possibly converted inputs
|
355
|
+
return T_K, error_T_K, CO2_dens_gcm3, error_CO2_dens_gcm3, XH2O, error_XH2O
|
356
|
+
|
349
357
|
|
350
358
|
|
351
359
|
def propagate_FI_uncertainty(sample_ID, CO2_dens_gcm3, T_K, multiprocess='default', cores='default',
|
@@ -1531,9 +1531,9 @@ plot_figure=True, loop=True,
|
|
1531
1531
|
|
1532
1532
|
df_combo=df
|
1533
1533
|
pk1_peak_cent_values = df_combo['pk1_peak_cent'].values
|
1534
|
-
pk1_peak_cent_errors = df_combo['error_pk1'].fillna(0).values
|
1534
|
+
pk1_peak_cent_errors = df_combo['error_pk1'].fillna(0).infer_objects().values
|
1535
1535
|
pk2_peak_cent_values = df_combo['pk2_peak_cent'].values
|
1536
|
-
pk2_peak_cent_errors = df_combo['error_pk2'].fillna(0).values
|
1536
|
+
pk2_peak_cent_errors = df_combo['error_pk2'].fillna(0).infer_objects().values
|
1537
1537
|
|
1538
1538
|
constant=df_combo['deltaNe']
|
1539
1539
|
|
@@ -1568,7 +1568,7 @@ def plot_Ne_corrections(df=None, x_axis=None, x_label='index', marker='o', mec='
|
|
1568
1568
|
|
1569
1569
|
# Pk1 center vs. X
|
1570
1570
|
|
1571
|
-
ax5.errorbar(x, df['pk1_peak_cent'], xerr=0, yerr=df['error_pk1'].fillna(0),
|
1571
|
+
ax5.errorbar(x, df['pk1_peak_cent'], xerr=0, yerr=df['error_pk1'].fillna(0).infer_objects(),
|
1572
1572
|
fmt='o', ecolor='k', elinewidth=0.8, mfc='b', ms=5, mec='k', capsize=3)
|
1573
1573
|
ax5.set_xlabel(x_label)
|
1574
1574
|
ax5.set_ylabel('Peak 1 center')
|
@@ -1576,15 +1576,15 @@ def plot_Ne_corrections(df=None, x_axis=None, x_label='index', marker='o', mec='
|
|
1576
1576
|
# Pk2 center vs. X
|
1577
1577
|
|
1578
1578
|
ax6.plot(x, df['pk2_peak_cent'], marker, mec='k', mfc='r')
|
1579
|
-
ax6.errorbar(x, df['pk2_peak_cent'], xerr=0, yerr=df['error_pk2'].fillna(0),
|
1579
|
+
ax6.errorbar(x, df['pk2_peak_cent'], xerr=0, yerr=df['error_pk2'].fillna(0).infer_objects(),
|
1580
1580
|
fmt='o', ecolor='k', elinewidth=0.8, mfc='r', ms=5, mec='k', capsize=3)
|
1581
1581
|
|
1582
1582
|
ax6.set_xlabel(x_label)
|
1583
1583
|
ax6.set_ylabel('Peak 2 center')
|
1584
1584
|
|
1585
1585
|
#
|
1586
|
-
ax3.errorbar(df['Ne_Corr'], df['pk2_peak_cent'], xerr=df['1σ_Ne_Corr'].fillna(0),
|
1587
|
-
yerr=df['error_pk2'].fillna(0),
|
1586
|
+
ax3.errorbar(df['Ne_Corr'], df['pk2_peak_cent'], xerr=df['1σ_Ne_Corr'].fillna(0).infer_objects(),
|
1587
|
+
yerr=df['error_pk2'].fillna(0).infer_objects(),
|
1588
1588
|
fmt='o', ecolor='k', elinewidth=0.8, mfc='b', ms=5, mec='k', capsize=3)
|
1589
1589
|
|
1590
1590
|
|
@@ -1592,14 +1592,14 @@ def plot_Ne_corrections(df=None, x_axis=None, x_label='index', marker='o', mec='
|
|
1592
1592
|
ax3.set_ylabel('Peak 2 center')
|
1593
1593
|
|
1594
1594
|
|
1595
|
-
ax4.errorbar(df['Ne_Corr'], df['pk1_peak_cent'], xerr=df['1σ_Ne_Corr'].fillna(0),
|
1596
|
-
yerr=df['error_pk1'].fillna(0),
|
1595
|
+
ax4.errorbar(df['Ne_Corr'], df['pk1_peak_cent'], xerr=df['1σ_Ne_Corr'].fillna(0).infer_objects(),
|
1596
|
+
yerr=df['error_pk1'].fillna(0).infer_objects(),
|
1597
1597
|
fmt='o', ecolor='k', elinewidth=0.8, mfc='b', ms=5, mec='k', capsize=3)
|
1598
1598
|
ax4.set_xlabel('Ne Correction factor')
|
1599
1599
|
ax4.set_ylabel('Peak 1 center')
|
1600
1600
|
|
1601
1601
|
# Ne correction factor vs. time
|
1602
|
-
ax1.errorbar(x, df['Ne_Corr'], xerr=0, yerr=df['1σ_Ne_Corr'].fillna(0),
|
1602
|
+
ax1.errorbar(x, df['Ne_Corr'], xerr=0, yerr=df['1σ_Ne_Corr'].fillna(0).infer_objects(),
|
1603
1603
|
fmt='o', ecolor='k', elinewidth=0.8, mfc='grey', ms=5, mec='k',capsize=3)
|
1604
1604
|
|
1605
1605
|
ax1.set_ylabel('Ne Correction factor')
|
@@ -493,13 +493,27 @@ def stretch_at_constant_Pext(*,R_m,b_m,T_K,EOS='SW96',Pinternal_MPa,Pexternal_MP
|
|
493
493
|
results = pd.DataFrame([{'Time(s)': 0,
|
494
494
|
'Step':0,
|
495
495
|
'dt(s)':0,
|
496
|
-
'Pexternal(MPa)': Pexternal_MPa,
|
497
|
-
'Pinternal(MPa)': Pinternal_MPa,
|
498
|
-
'dR/dt(m/s)': calculate_dR_dt(R_m=R_m, b_m=b_m, Pinternal_MPa=Pinternal_MPa, Pexternal_MPa=Pexternal_MPa, T_K=T_K),
|
499
|
-
'Fi_radius(μm)': R_m*10**6,
|
500
|
-
'b (distance to xtal rim -μm)':b_m*10**6,
|
496
|
+
'Pexternal(MPa)': float(Pexternal_MPa),
|
497
|
+
'Pinternal(MPa)': float(Pinternal_MPa),
|
498
|
+
'dR/dt(m/s)': float(calculate_dR_dt(R_m=R_m, b_m=b_m, Pinternal_MPa=Pinternal_MPa, Pexternal_MPa=Pexternal_MPa, T_K=T_K)),
|
499
|
+
'Fi_radius(μm)': float(R_m*10**6),
|
500
|
+
'b (distance to xtal rim -μm)':float(b_m*10**6),
|
501
501
|
'\u0394R/R0 (fractional change in radius)':0,
|
502
|
-
'CO2_dens_gcm3': CO2_dens_initial}], index=range(steps))
|
502
|
+
'CO2_dens_gcm3': float(CO2_dens_initial)}], index=range(steps))
|
503
|
+
|
504
|
+
results = results.astype({
|
505
|
+
'Time(s)': 'float64',
|
506
|
+
'Step': 'int64',
|
507
|
+
'dt(s)': 'float64',
|
508
|
+
'Pexternal(MPa)': 'float64',
|
509
|
+
'Pinternal(MPa)': 'float64',
|
510
|
+
'dR/dt(m/s)': 'float64',
|
511
|
+
'Fi_radius(μm)': 'float64',
|
512
|
+
'b (distance to xtal rim -μm)': 'float64',
|
513
|
+
'\u0394R/R0 (fractional change in radius)': 'float64',
|
514
|
+
'CO2_dens_gcm3': 'float64'
|
515
|
+
})
|
516
|
+
|
503
517
|
|
504
518
|
dt_s=totaltime_s/steps
|
505
519
|
|
@@ -515,9 +529,10 @@ def stretch_at_constant_Pext(*,R_m,b_m,T_K,EOS='SW96',Pinternal_MPa,Pexternal_MP
|
|
515
529
|
if update_b==True:
|
516
530
|
b_m=1000*R_m
|
517
531
|
|
518
|
-
results.loc[step] = [step * dt_s, step, dt_s, Pexternal_MPa, Pinternal_MPa,
|
519
|
-
|
520
|
-
|
532
|
+
results.loc[step] = [float(step * dt_s), int(step), float(dt_s), float(Pexternal_MPa), float(Pinternal_MPa),
|
533
|
+
float(dR_dt), float(R_m * 10 ** 6), float(b_m * 10 ** 6),
|
534
|
+
float((R_m * 10 ** 6 - results.loc[0, 'Fi_radius(μm)']) / results.loc[0, 'Fi_radius(μm)']),
|
535
|
+
float(CO2_dens_new)]
|
521
536
|
|
522
537
|
if report_results == 'startendonly':
|
523
538
|
results.drop(index=list(range(1, results.shape[0] - 1)), inplace=True) # Drop all rows except first and last
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|