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.
Files changed (54) hide show
  1. {DiadFit-1.0.1 → DiadFit-1.0.5}/PKG-INFO +1 -1
  2. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/CO2_EOS.py +20 -4
  3. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/H2O_fitting.py +24 -16
  4. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/_version.py +1 -1
  5. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/densimeters.py +2 -2
  6. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/diads.py +94 -2
  7. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/error_propagation.py +12 -4
  8. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/ne_lines.py +9 -9
  9. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/relaxifi.py +24 -9
  10. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/PKG-INFO +1 -1
  11. {DiadFit-1.0.1 → DiadFit-1.0.5}/README.md +0 -0
  12. {DiadFit-1.0.1 → DiadFit-1.0.5}/setup.cfg +0 -0
  13. {DiadFit-1.0.1 → DiadFit-1.0.5}/setup.py +0 -0
  14. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/CO2_in_bubble_error.py +0 -0
  15. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data.pkl +0 -0
  16. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1117_1400.pkl +0 -0
  17. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1117_1447.pkl +0 -0
  18. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1220_1400.pkl +0 -0
  19. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1220_1447.pkl +0 -0
  20. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_dataUCB_1220_1567.pkl +0 -0
  21. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data_CCMR.pkl +0 -0
  22. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data_CMASS.pkl +0 -0
  23. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Highrho_polyfit_data_CMASS_24C.pkl +0 -0
  24. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data.pkl +0 -0
  25. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1117_1400.pkl +0 -0
  26. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1117_1447.pkl +0 -0
  27. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1220_1400.pkl +0 -0
  28. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1220_1447.pkl +0 -0
  29. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_dataUCB_1220_1567.pkl +0 -0
  30. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data_CCMR.pkl +0 -0
  31. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data_CMASS.pkl +0 -0
  32. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Lowrho_polyfit_data_CMASS_24C.pkl +0 -0
  33. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_data.pkl +0 -0
  34. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1117_1400.pkl +0 -0
  35. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1117_1447.pkl +0 -0
  36. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1220_1400.pkl +0 -0
  37. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1220_1447.pkl +0 -0
  38. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_dataUCB_1220_1567.pkl +0 -0
  39. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_data_CCMR.pkl +0 -0
  40. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Mediumrho_polyfit_data_CMASS.pkl +0 -0
  41. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/Psensor.py +0 -0
  42. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/__init__.py +0 -0
  43. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/argon_lines.py +0 -0
  44. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/cosmicray_filter.py +0 -0
  45. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/densimeter_fitting.py +0 -0
  46. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/density_depth_crustal_profiles.py +0 -0
  47. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/importing_data_files.py +0 -0
  48. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/lookup_table.csv +0 -0
  49. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/lookup_table_noneg.csv +0 -0
  50. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit/molar_gas_proportions.py +0 -0
  51. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/SOURCES.txt +0 -0
  52. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/dependency_links.txt +0 -0
  53. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/requires.txt +0 -0
  54. {DiadFit-1.0.1 → DiadFit-1.0.5}/src/DiadFit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: DiadFit
3
- Version: 1.0.1
3
+ Version: 1.0.5
4
4
  Summary: DiadFit
5
5
  Home-page: https://github.com/PennyWieser/DiadFit
6
6
  Author: Penny Wieser
@@ -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
- rho_orig_no_H_loss=(CO2_dens_gcm3*H2O_dens)/((1-XH2O_mass)*H2O_dens+XH2O_mass*CO2_dens_gcm3)
2090
- rho_orig_no_H_loss = np.where(nan_mask, CO2_dens_gcm3, rho_orig_no_H_loss)
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 = trapezoid(y_corr_sil, dx=xspace_sil)
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=trapezoid(y_corr_sil_LW, dx=xspace_sil_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=trapezoid(y_corr_sil_HW, dx=xspace_sil_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=trapezoid(y_corr_sil_MW, dx=xspace_sil_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':area_trap_LW,
970
- 'HW_Silicate_Simpson_Area':area_simp_LW,
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 'Water_Trapezoid_Area', 'Water_Simpson_Area', as well as parameters for the selected background positions
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 = trapezoid(y_corr_water, dx=xspace_water)
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, HW:LW_Trapezoid, HW:LW_Simpson, Water_Trapezoid_Area,
1246
- Water_Simpson_Area, Silicate_Trapezoid_Area, and Silicate_Simpson_Area.
1247
- If Host_file is provided,
1248
- the DataFrame will also include a column for Host filename.
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, 'HW:LW_Trapezoid',
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, 'HW:LW_Simpson',
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', 'HW:LW_Trapezoid', 'HW:LW_Simpson',
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', 'HW:LW_Trapezoid', 'HW:LW_Simpson',
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
 
@@ -5,4 +5,4 @@
5
5
  # 1) we don't load dependencies by storing it in __init__.py
6
6
  # 2) we can import it in setup.py for the same reason
7
7
  # 3) we can import it into your module
8
- __version__ = '1.0.1'
8
+ __version__ = '1.0.5'
@@ -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 numpy import trapz
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
- # Continue with the function using the possibly converted inputs...
345
- # For demonstration, just return the converted inputs
346
- return T_K, error_T_K, CO2_dens_gcm3, error_CO2_dens_gcm3, XH2O, error_XH2O
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, dR_dt, R_m * 10 ** 6, b_m * 10 ** 6,
519
- (R_m * 10 ** 6 - results.loc[0, 'Fi_radius(μm)']) / results.loc[0, 'Fi_radius(μm)'],
520
- CO2_dens_new]
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: DiadFit
3
- Version: 1.0.1
3
+ Version: 1.0.5
4
4
  Summary: DiadFit
5
5
  Home-page: https://github.com/PennyWieser/DiadFit
6
6
  Author: Penny Wieser
File without changes
File without changes
File without changes
File without changes
File without changes