pmagpy 4.3.7__py3-none-any.whl → 4.3.9__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.
Files changed (979) hide show
  1. pmagpy/continents.py +9 -65
  2. pmagpy/find_pmag_dir.py +14 -23
  3. pmagpy/frp.py +34 -17
  4. pmagpy/gufm.py +1 -1
  5. pmagpy/ipmag.py +782 -232
  6. pmagpy/nlt.py +17 -9
  7. pmagpy/pmag.py +494 -596
  8. pmagpy/pmagplotlib.py +313 -180
  9. pmagpy/rockmag.py +739 -126
  10. pmagpy/spline.py +4 -4
  11. pmagpy/version.py +2 -2
  12. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/PmagPy_plots_analysis.ipynb +20 -14
  13. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aarm_magic/specimens.txt +7 -7
  14. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/specimens.txt +30 -30
  15. {pmagpy-4.3.7.dist-info → pmagpy-4.3.9.dist-info}/METADATA +1 -1
  16. {pmagpy-4.3.7.dist-info → pmagpy-4.3.9.dist-info}/RECORD +979 -979
  17. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/ages.txt +0 -0
  18. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_ages.txt +0 -0
  19. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_citations.txt +0 -0
  20. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_images.txt +0 -0
  21. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_locations.txt +0 -0
  22. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_mailinglist.txt +0 -0
  23. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_samples.txt +0 -0
  24. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_sites.txt +0 -0
  25. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/er_specimens.txt +0 -0
  26. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/magic_measurements.txt +0 -0
  27. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/magic_methods.txt +0 -0
  28. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/pmag_criteria.txt +0 -0
  29. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/pmag_results.txt +0 -0
  30. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/pmag_sites.txt +0 -0
  31. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/pmag_specimens.txt +0 -0
  32. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/rmag_anisotropy.txt +0 -0
  33. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/rmag_hysteresis.txt +0 -0
  34. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/rmag_results.txt +0 -0
  35. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/2_5/McMurdo/zmab0100049tmp03.txt +0 -0
  36. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/.ipynb_checkpoints/Parsing_data_model-checkpoint.ipynb +0 -0
  37. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/ages.txt +0 -0
  38. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/contribution.txt +0 -0
  39. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/criteria.txt +0 -0
  40. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/extra_specimens.txt +0 -0
  41. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/images.txt +0 -0
  42. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/locations.txt +0 -0
  43. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/measurements.txt +0 -0
  44. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/new_locations.txt +0 -0
  45. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/samples.txt +0 -0
  46. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/sites.txt +0 -0
  47. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/McMurdo/specimens.txt +0 -0
  48. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/.ipynb_checkpoints/ages_from_samples_to_sites-checkpoint.ipynb +0 -0
  49. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_1/ages.txt +0 -0
  50. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_1/locations.txt +0 -0
  51. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_1/measurements.txt +0 -0
  52. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_1/samples.txt +0 -0
  53. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_1/sites.txt +0 -0
  54. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_1/specimens.txt +0 -0
  55. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_2/ages.txt +0 -0
  56. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_2/locations.txt +0 -0
  57. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_2/measurements.txt +0 -0
  58. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_2/samples.txt +0 -0
  59. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_2/sites.txt +0 -0
  60. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/Location_2/specimens.txt +0 -0
  61. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/ages.txt +0 -0
  62. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/ages_from_samples_to_sites.ipynb +0 -0
  63. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/contribution.txt +0 -0
  64. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/criteria.txt +0 -0
  65. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/locations.txt +0 -0
  66. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/magic_contribution.txt +0 -0
  67. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/measurements.txt +0 -0
  68. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/samples.txt +0 -0
  69. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/sites.txt +0 -0
  70. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/specimens.txt +0 -0
  71. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Megiddo/test_spec.txt +0 -0
  72. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/contribution.txt +0 -0
  73. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/contribution_11087_v2.5.txt +0 -0
  74. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/contribution_11087_v3.0.txt +0 -0
  75. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/er_citations.txt +0 -0
  76. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/er_locations.txt +0 -0
  77. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/er_sites.txt +0 -0
  78. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/locations.txt +0 -0
  79. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/pmag_results.txt +0 -0
  80. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/pmag_sites.txt +0 -0
  81. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/sites.txt +0 -0
  82. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/3_0/Osler/stored.json +0 -0
  83. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/Cont_rot.svg +0 -0
  84. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/aus_saf.frp +0 -0
  85. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/col_saf.frp +0 -0
  86. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/eant_saf.frp +0 -0
  87. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/eur_saf.frp +0 -0
  88. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/grn_saf.frp +0 -0
  89. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/ind_saf.frp +0 -0
  90. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/mad_saf.frp +0 -0
  91. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/nam_saf.frp +0 -0
  92. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/neaf_saf.frp +0 -0
  93. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/nwaf_saf.frp +0 -0
  94. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/par_saf.frp +0 -0
  95. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/FRPTMP/sac_saf.frp +0 -0
  96. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/af.asc +0 -0
  97. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/ages.tmp +0 -0
  98. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/ant.asc +0 -0
  99. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/aus.asc +0 -0
  100. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/aus_saf.frp +0 -0
  101. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/balt.asc +0 -0
  102. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/col_saf.frp +0 -0
  103. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/congo.asc +0 -0
  104. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/continents.py +0 -0
  105. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/eant_saf.frp +0 -0
  106. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/eur.asc +0 -0
  107. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/eur_saf.frp +0 -0
  108. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/finrot_saf.txt +0 -0
  109. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/globalapwps.txt +0 -0
  110. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/gond.asc +0 -0
  111. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/grn.asc +0 -0
  112. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/grn_saf.frp +0 -0
  113. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/ib_eur.frp +0 -0
  114. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/ind.asc +0 -0
  115. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/ind.bak +0 -0
  116. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/ind_saf.frp +0 -0
  117. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/kala.asc +0 -0
  118. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/lau.asc +0 -0
  119. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/mad_saf.frp +0 -0
  120. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/mkcont.py +0 -0
  121. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/mkfrp.py +0 -0
  122. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/nam.asc +0 -0
  123. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/nam_saf.frp +0 -0
  124. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/neaf_saf.frp +0 -0
  125. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/nwaf_saf.frp +0 -0
  126. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/par_saf.frp +0 -0
  127. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/plates.asc +0 -0
  128. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/sac_saf.frp +0 -0
  129. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/saf.frp +0 -0
  130. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/sam.asc +0 -0
  131. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Continents/waf.asc +0 -0
  132. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/Z35.sam.magic +0 -0
  133. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/Z35_er_samples.txt +0 -0
  134. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/Z35_er_sites.txt +0 -0
  135. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/Z35_er_specimens.txt +0 -0
  136. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/er_ages.txt +0 -0
  137. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/er_locations.txt +0 -0
  138. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/er_samples.txt +0 -0
  139. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/er_sites.txt +0 -0
  140. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/er_specimens.txt +0 -0
  141. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ErMagicBuilder/magic_measurements.txt +0 -0
  142. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Figures/atrm_meas.png +0 -0
  143. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Figures/chartmaker.png +0 -0
  144. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Figures/meas15.png +0 -0
  145. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Figures/samples.png +0 -0
  146. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/PmagPy-cli.ipynb +0 -0
  147. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/PmagPy_MagIC.ipynb +0 -0
  148. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/PmagPy_calculations.ipynb +0 -0
  149. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/PmagPy_introduction.ipynb +0 -0
  150. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/PmagPy_online.ipynb +0 -0
  151. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/Tel-Hazor_Tel-Megiddo_25.Aug.2016.txt +0 -0
  152. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/ages.txt +0 -0
  153. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/ages_from_samples_to_sites.ipynb +0 -0
  154. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/contribution.txt +0 -0
  155. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/criteria.txt +0 -0
  156. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/demag_orient.txt +0 -0
  157. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/locations.txt +0 -0
  158. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/measurements.txt +0 -0
  159. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/new_samples.txt +0 -0
  160. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/new_sites.txt +0 -0
  161. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/new_specimens.txt +0 -0
  162. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/samples.bak +0 -0
  163. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/samples.txt +0 -0
  164. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/sites.bak +0 -0
  165. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/sites.txt +0 -0
  166. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/specimens.bak +0 -0
  167. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/specimens.txt +0 -0
  168. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/3_0/thellier_GUI.log +0 -0
  169. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/SIOfiles/na_sw.atrm +0 -0
  170. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/SIOfiles/na_sw.cool +0 -0
  171. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/SIOfiles/na_sw.thel +0 -0
  172. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/SIOfiles.zip +0 -0
  173. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/ThisProject/SrExample_AF.txt +0 -0
  174. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/ThisProject/SrExample_orient.txt +0 -0
  175. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/ThisProject/SrExample_thellier.txt +0 -0
  176. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/ThisProject/SrExample_thermal.txt +0 -0
  177. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/Pmag_GUI/zmab0083201tmp03.txt +0 -0
  178. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/SVEI_demo.ipynb +0 -0
  179. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/.ipynb_checkpoints/Editing-checkpoint.ipynb +0 -0
  180. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/.ipynb_checkpoints/U1456A-checkpoint.ipynb +0 -0
  181. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/.ipynb_checkpoints/discretes-checkpoint.ipynb +0 -0
  182. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/Core_depthplot.py +0 -0
  183. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/JR6_data/UTESTA.jr6 +0 -0
  184. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/JR6_data/UTESTA_fixed.jr6 +0 -0
  185. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/KLY4S_data/UTESTA.kly4s +0 -0
  186. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/SRM_data/srmdiscrete-XXX-UTEST-A.csv +0 -0
  187. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/SRM_data/srmsection-XXX-UTEST-A.csv +0 -0
  188. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/CoreSummary_XXX_UTESTA.csv +0 -0
  189. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/UTESTA.kly4s.magic +0 -0
  190. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/UTESTA_er_specimens.txt +0 -0
  191. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/UTESTA_fixed.jr6.magic +0 -0
  192. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/UTESTA_rmag_anisotropy.txt +0 -0
  193. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/er_samples.txt +0 -0
  194. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/er_sites.txt +0 -0
  195. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/er_specimens.txt +0 -0
  196. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/magic_measurements.txt +0 -0
  197. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/pmag_specimens.txt +0 -0
  198. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/rmag_anisotropy.txt +0 -0
  199. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/samples-XXX-UTEST-A_er_samples.txt +0 -0
  200. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/srmdiscrete-XXX-UTEST-A.csv.magic +0 -0
  201. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/srmsection-XXX-UTEST-A.csv.magic +0 -0
  202. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/srmsection-XXX-UTEST-A_er_samples.txt +0 -0
  203. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/srmsection-XXX-UTEST-A_er_sites.txt +0 -0
  204. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC/srmsection-XXX-UTEST-A_er_specimens.txt +0 -0
  205. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC3/CoreSummary_XXX_UTESTA.csv +0 -0
  206. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC3/measurements.txt +0 -0
  207. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC3/samples.txt +0 -0
  208. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC3/sites.txt +0 -0
  209. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/UTESTA_MagIC3/specimens.txt +0 -0
  210. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/UTESTA/samples-XXX-UTEST-A.csv +0 -0
  211. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aarm_magic/aarm_measurements.txt +0 -0
  212. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aarm_magic/arm_magic_example.dat +0 -0
  213. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aarm_magic/locations.txt +0 -0
  214. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aarm_magic/samples.txt +0 -0
  215. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aarm_magic/sites.txt +0 -0
  216. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/angle/angle.dat +0 -0
  217. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/angle/tmp.out +0 -0
  218. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/ages.txt +0 -0
  219. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/er_ages.txt +0 -0
  220. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/er_locations.txt +0 -0
  221. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/er_samples.txt +0 -0
  222. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/er_sites.txt +0 -0
  223. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/er_specimens.txt +0 -0
  224. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/magic_contribution_12152.txt +0 -0
  225. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/magic_measurements.txt +0 -0
  226. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/magic_methods.txt +0 -0
  227. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/measurements.txt +0 -0
  228. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/pmag_specimens.txt +0 -0
  229. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/rmag_anisotropy.txt +0 -0
  230. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/samples.txt +0 -0
  231. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/sites.txt +0 -0
  232. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/ani_depthplot/specimens.txt +0 -0
  233. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aniso_magic/dike_anisotropy.txt +0 -0
  234. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aniso_magic/dike_specimens.txt +0 -0
  235. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aniso_magic/sed_anisotropy.txt +0 -0
  236. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/aniso_magic/sed_specimens.txt +0 -0
  237. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/apwp/apwp_example.dat +0 -0
  238. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/atrm_magic_example.dat +0 -0
  239. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/atrm_measurements.txt +0 -0
  240. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/atrm_measurements3.txt +0 -0
  241. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/atrm_results.txt +0 -0
  242. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/locations.txt +0 -0
  243. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/measurements.txt +0 -0
  244. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/orig_specimens.txt +0 -0
  245. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/samples.txt +0 -0
  246. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/atrm_magic/sites.txt +0 -0
  247. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/azdip_magic/azdip_magic_example.dat +0 -0
  248. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/b_vdm/b_vdm_example.dat +0 -0
  249. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/basemap_magic/basemap_example.txt +0 -0
  250. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/biplot_magic/biplot_magic_example.dat +0 -0
  251. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/biplot_magic/contribution.txt +0 -0
  252. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/biplot_magic/locations.txt +0 -0
  253. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/biplot_magic/measurements.txt +0 -0
  254. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/biplot_magic/samples.txt +0 -0
  255. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/biplot_magic/sites.txt +0 -0
  256. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/biplot_magic/specimens.txt +0 -0
  257. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/bootams/bootams_example.dat +0 -0
  258. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/cart_dir/cart_dir_example.dat +0 -0
  259. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/chi_magic_example.dat +0 -0
  260. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/chi_magic_example.txt +0 -0
  261. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/contribution.txt +0 -0
  262. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/locations.txt +0 -0
  263. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/measurements.txt +0 -0
  264. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/samples.txt +0 -0
  265. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/sites.txt +0 -0
  266. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/chi_magic/specimens.txt +0 -0
  267. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/combine_magic/af_measurements.txt +0 -0
  268. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/combine_magic/measurements.txt +0 -0
  269. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/combine_magic/ns_a.mag +0 -0
  270. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/combine_magic/ns_t.mag +0 -0
  271. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/combine_magic/therm_measurements.txt +0 -0
  272. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/common_mean/common_mean_ex_file1.dat +0 -0
  273. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/common_mean/common_mean_ex_file2.dat +0 -0
  274. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_asc_magic/README +0 -0
  275. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_asc_magic/_2g_asc/DR3B.asc +0 -0
  276. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_asc_magic/_2g_asc/OK3_15af.asc +0 -0
  277. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_asc_magic/_2g_asc/README +0 -0
  278. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/165A.dat +0 -0
  279. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/165B.dat +0 -0
  280. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/165C.dat +0 -0
  281. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/60A.dat +0 -0
  282. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/60B.dat +0 -0
  283. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/60C.dat +0 -0
  284. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/70A.dat +0 -0
  285. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/70C.dat +0 -0
  286. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/KodamaFiles/70D.dat +0 -0
  287. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1ab.dat +0 -0
  288. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1bb.dat +0 -0
  289. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1c.dat +0 -0
  290. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1db.dat +0 -0
  291. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1e.dat +0 -0
  292. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1f.dat +0 -0
  293. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1ga.dat +0 -0
  294. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1ha.dat +0 -0
  295. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1ib.dat +0 -0
  296. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1jb.dat +0 -0
  297. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1kb.dat +0 -0
  298. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1la.dat +0 -0
  299. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton1ma.dat +0 -0
  300. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29ab.dat +0 -0
  301. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29bb.dat +0 -0
  302. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29cb.dat +0 -0
  303. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29da.dat +0 -0
  304. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29db.dat +0 -0
  305. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29e.dat +0 -0
  306. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29eb.dat +0 -0
  307. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29f.dat +0 -0
  308. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29ga.dat +0 -0
  309. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29gc.dat +0 -0
  310. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29h.dat +0 -0
  311. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29ib.dat +0 -0
  312. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton29j.dat +0 -0
  313. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2a.dat +0 -0
  314. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2b.dat +0 -0
  315. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2c.dat +0 -0
  316. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2d.dat +0 -0
  317. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2e.dat +0 -0
  318. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2f.dat +0 -0
  319. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2g.dat +0 -0
  320. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2h.dat +0 -0
  321. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton2i.dat +0 -0
  322. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3aa.dat +0 -0
  323. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3ba.dat +0 -0
  324. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3ca.dat +0 -0
  325. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3da.dat +0 -0
  326. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3ea.dat +0 -0
  327. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3fb.dat +0 -0
  328. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3ga.dat +0 -0
  329. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton3ha.dat +0 -0
  330. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4ab.dat +0 -0
  331. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4bb.dat +0 -0
  332. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4c.dat +0 -0
  333. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4d.dat +0 -0
  334. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4eb.dat +0 -0
  335. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4fb.dat +0 -0
  336. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4gb.dat +0 -0
  337. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4ha.dat +0 -0
  338. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/MolinaFiles/ton4ia.dat +0 -0
  339. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/README +0 -0
  340. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/MN1.CSV +0 -0
  341. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/MN_chr_dir.xls +0 -0
  342. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn001-1a.dat +0 -0
  343. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn004-2b.dat +0 -0
  344. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn008-2b.dat +0 -0
  345. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn010-1a.dat +0 -0
  346. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn014-1b.dat +0 -0
  347. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn017-1b.dat +0 -0
  348. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn022-1b.dat +0 -0
  349. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn026-1b.dat +0 -0
  350. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn031-1a.dat +0 -0
  351. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn033-1b.dat +0 -0
  352. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn034-2a.dat +0 -0
  353. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn038-1b.dat +0 -0
  354. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn041-1a.dat +0 -0
  355. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn042-1b.dat +0 -0
  356. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn046-1a.dat +0 -0
  357. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn049-2a.dat +0 -0
  358. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn056-2a.dat +0 -0
  359. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn061-1a.dat +0 -0
  360. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn065-1b.dat +0 -0
  361. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn067-1a.dat +0 -0
  362. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn071-1a.dat +0 -0
  363. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn075-1b.dat +0 -0
  364. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn078-1a.dat +0 -0
  365. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn081-1b.dat +0 -0
  366. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn084-1b.dat +0 -0
  367. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn087-2a.dat +0 -0
  368. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn091-1a.dat +0 -0
  369. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn093-1b.dat +0 -0
  370. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn096-1b.dat +0 -0
  371. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn1.saf +0 -0
  372. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn1.txt +0 -0
  373. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn100-1a.dat +0 -0
  374. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn103-1b.dat +0 -0
  375. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn105-1a.dat +0 -0
  376. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn106-1a.dat +0 -0
  377. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn107-1b.dat +0 -0
  378. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn109-2a.dat +0 -0
  379. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/2g_bin_magic/mn1/mn110-1b.dat +0 -0
  380. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01a-1.agm +0 -0
  381. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01a-1.irm +0 -0
  382. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01a-2.agm +0 -0
  383. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01a-2.irm +0 -0
  384. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01b-1.agm +0 -0
  385. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01b-1.irm +0 -0
  386. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01c-1.agm +0 -0
  387. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01c-1.irm +0 -0
  388. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01d-1.agm +0 -0
  389. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01d-1.irm +0 -0
  390. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01e-1.agm +0 -0
  391. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01e-1.irm +0 -0
  392. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01f-1.agm +0 -0
  393. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01f-1.irm +0 -0
  394. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01f-2.agm +0 -0
  395. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS01f-2.irm +0 -0
  396. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02a-1.agm +0 -0
  397. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02a-1.irm +0 -0
  398. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02a-2.agm +0 -0
  399. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02a-3.irm +0 -0
  400. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02b-1.agm +0 -0
  401. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02b-1.irm +0 -0
  402. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02b-2.agm +0 -0
  403. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02b-2.irm +0 -0
  404. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_directory/IS02c-1.agm +0 -0
  405. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_magic_example.agm +0 -0
  406. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/agm_magic/agm_magic_example.irm +0 -0
  407. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/bgc_magic/15HHA1-2A +0 -0
  408. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/bgc_magic/15JC4-1A +0 -0
  409. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/bgc_magic/96MT.05.01 +0 -0
  410. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/bgc_magic/96MT.05.01.txt +0 -0
  411. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/bgc_magic/BC0-3A +0 -0
  412. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/bgc_magic/BC0-3A.txt +0 -0
  413. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/bgc_magic/CA14-TA02.05'a +0 -0
  414. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/Craig_Jones_webpage_of_PMag_file_formats_CIT_file_format_source.html +0 -0
  415. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/Craig_Jones_webpage_of_PMag_file_formats_CIT_file_format_source_files/PaleoMag.gif +0 -0
  416. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/Craig_Jones_webpage_of_PMag_file_formats_CIT_file_format_source_files/PaleoMag_002.gif +0 -0
  417. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/Craig_Jones_webpage_of_PMag_file_formats_CIT_file_format_source_files/a-95.gif +0 -0
  418. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/Craig_Jones_webpage_of_PMag_file_formats_CIT_file_format_source_files/kappa.gif +0 -0
  419. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/Craig_Jones_webpage_of_PMag_file_formats_CIT_file_format_source_files/phi.gif +0 -0
  420. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B.LSQ +0 -0
  421. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B.sam +0 -0
  422. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B71 +0 -0
  423. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B72 +0 -0
  424. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B73 +0 -0
  425. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B74 +0 -0
  426. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B75 +0 -0
  427. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B76 +0 -0
  428. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B77 +0 -0
  429. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B78 +0 -0
  430. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/MIT/7325B/7325B79 +0 -0
  431. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-.sam +0 -0
  432. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-1a +0 -0
  433. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-2a +0 -0
  434. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-3a +0 -0
  435. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-4a +0 -0
  436. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-5a +0 -0
  437. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-6a +0 -0
  438. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-7a +0 -0
  439. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-8a +0 -0
  440. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/PI47-9a +0 -0
  441. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/locations.txt +0 -0
  442. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/measurements.txt +0 -0
  443. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/samples.txt +0 -0
  444. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/sites.txt +0 -0
  445. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/PI47/specimens.txt +0 -0
  446. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/README +0 -0
  447. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9001-1 +0 -0
  448. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9001-1.rmg +0 -0
  449. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9002-1 +0 -0
  450. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9002-1.rmg +0 -0
  451. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9003-1 +0 -0
  452. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9003-1.rmg +0 -0
  453. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9004-1 +0 -0
  454. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9004-1.rmg +0 -0
  455. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9005-1 +0 -0
  456. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9005-1.rmg +0 -0
  457. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9006-1 +0 -0
  458. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9006-1.rmg +0 -0
  459. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9007-1 +0 -0
  460. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9007-1.rmg +0 -0
  461. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9008-1 +0 -0
  462. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9008-1.rmg +0 -0
  463. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9009-1 +0 -0
  464. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/BL9009-1.rmg +0 -0
  465. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/bl9-1.sam +0 -0
  466. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/bl9001.dir +0 -0
  467. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/USGS/bl9-1/command +0 -0
  468. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/cit_magic/sample_formats.pdf +0 -0
  469. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/fla_magic/README +0 -0
  470. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/fla_magic/mejia04.pdf +0 -0
  471. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/fla_magic/pa_thermal.fla +0 -0
  472. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/fla_magic/pt_af.fla +0 -0
  473. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/generic_magic/generic_magic_example.txt +0 -0
  474. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/huji_magic/Massada_AF_HUJI_new_format.txt +0 -0
  475. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/huji_magic/Massada_AF_all_old_format.txt +0 -0
  476. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/huji_magic/README +0 -0
  477. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/huji_magic/magdelkrum.txt +0 -0
  478. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/huji_magic/magdelkrum_datafile.txt +0 -0
  479. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_jr6_magic/er_samples.txt +0 -0
  480. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_jr6_magic/test.jr6 +0 -0
  481. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_srm_magic/GCR_U1359_B_coresummary.csv +0 -0
  482. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_srm_magic/IODP_Janus_312_U1256.csv +0 -0
  483. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_srm_magic/IODP_LIMS_SRMdiscrete_344_1414A.csv +0 -0
  484. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_srm_magic/IODP_LIMS_SRMsection_344_1414A.csv +0 -0
  485. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_srm_magic/SRM_318_U1359_B_A.csv +0 -0
  486. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/iodp_srm_magic/samples_318_U1359_B.csv +0 -0
  487. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AF.jr6 +0 -0
  488. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AF.txt +0 -0
  489. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AF_samples.txt +0 -0
  490. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AF_sites.txt +0 -0
  491. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AF_specimens.txt +0 -0
  492. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AP12.jr6 +0 -0
  493. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AP12.tmp +0 -0
  494. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/AP12.txt +0 -0
  495. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/README +0 -0
  496. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/SML01.JR6 +0 -0
  497. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/SML02.JR6 +0 -0
  498. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/SML03.JR6 +0 -0
  499. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/SML04.JR6 +0 -0
  500. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/SML05.JR6 +0 -0
  501. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/SML06.JR6 +0 -0
  502. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/SML07.JR6 +0 -0
  503. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/TRM.jr6 +0 -0
  504. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/TRM.txt +0 -0
  505. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/TRM_samples.txt +0 -0
  506. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/TRM_sites.txt +0 -0
  507. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/TRM_specimens.txt +0 -0
  508. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/locations.txt +0 -0
  509. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/measurements.txt +0 -0
  510. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/samples.txt +0 -0
  511. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/sites.txt +0 -0
  512. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/jr6_magic/specimens.txt +0 -0
  513. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/k15_magic/k15_example.dat +0 -0
  514. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/kly4s_magic/KLY4S_magic_example.dat +0 -0
  515. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/ldeo_magic/ldeo_magic_example.dat +0 -0
  516. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_C+/CHEV.livdb +0 -0
  517. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_C+/CHEV.livdb_different_delimiters +0 -0
  518. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_C+/measurements.txt +0 -0
  519. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_C+/samples.txt +0 -0
  520. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_C+/sites.txt +0 -0
  521. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_C+/specimens.txt +0 -0
  522. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_IZZI+andC++/NVPA.livdb +0 -0
  523. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_IZZI+andC++/NVPA.livdb_fifferent_delimiter +0 -0
  524. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_IZZI+andC++/measurements.txt +0 -0
  525. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_IZZI+andC++/samples.txt +0 -0
  526. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_IZZI+andC++/sites.txt +0 -0
  527. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_IZZI+andC++/specimens.txt +0 -0
  528. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_OT+/016-01.livdb_old_delimiters +0 -0
  529. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_OT+/017-03.livdb_old_delimiters +0 -0
  530. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_OT+/16-1.livdb +0 -0
  531. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_OT+/measurements.txt +0 -0
  532. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_OT+/samples.txt +0 -0
  533. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_OT+/sites.txt +0 -0
  534. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_OT+/specimens.txt +0 -0
  535. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_P/measurements.txt +0 -0
  536. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_P/perp.csv +0 -0
  537. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_P/samples.txt +0 -0
  538. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_P/sites.txt +0 -0
  539. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/MW_P/specimens.txt +0 -0
  540. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/TH_IZZI+/ATPI_Thellier.livdb +0 -0
  541. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/TH_IZZI+/measurements.txt +0 -0
  542. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/TH_IZZI+/samples.txt +0 -0
  543. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/TH_IZZI+/sites.txt +0 -0
  544. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/livdb_magic/TH_IZZI+/specimens.txt +0 -0
  545. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/mini_magic/Peru_rev1.txt +0 -0
  546. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/mini_magic/Peru_rev1_description.rtf +0 -0
  547. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/mst_magic/curie_example.dat +0 -0
  548. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/IPGP/0110C.PMD +0 -0
  549. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/IPGP/0210C.pmd +0 -0
  550. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/README +0 -0
  551. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0101a.pmd +0 -0
  552. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0102a.pmd +0 -0
  553. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0103a.pmd +0 -0
  554. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0104a.pmd +0 -0
  555. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0105a.pmd +0 -0
  556. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0106a.pmd +0 -0
  557. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0107a.pmd +0 -0
  558. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0108a.pmd +0 -0
  559. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0201a.pmd +0 -0
  560. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0202a.pmd +0 -0
  561. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0203a.pmd +0 -0
  562. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0204a.pmd +0 -0
  563. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0205a.pmd +0 -0
  564. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0206a.pmd +0 -0
  565. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0207a.pmd +0 -0
  566. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/PMD/ss0208c.pmd +0 -0
  567. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/pmd_magic/UCSC/ssDirAll.pmm +0 -0
  568. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/s_magic/s_magic_example.dat +0 -0
  569. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/SantaRosa2006.scz +0 -0
  570. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy01.pmm +0 -0
  571. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy02.pmm +0 -0
  572. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy03.pmm +0 -0
  573. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy04.pmm +0 -0
  574. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy05.pmm +0 -0
  575. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy06.pmm +0 -0
  576. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy07.pmm +0 -0
  577. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy08.pmm +0 -0
  578. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy09.pmm +0 -0
  579. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy10.pmm +0 -0
  580. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy11.pmm +0 -0
  581. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy12.pmm +0 -0
  582. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy13.pmm +0 -0
  583. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy13A.pmm +0 -0
  584. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy13B.pmm +0 -0
  585. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy14.pmm +0 -0
  586. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/cy15.pmm +0 -0
  587. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/scz_magic/CanyonCreek/santaRosa.pmm +0 -0
  588. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sio_magic/locations.txt +0 -0
  589. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sio_magic/samples.txt +0 -0
  590. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sio_magic/sio_af_example.dat +0 -0
  591. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sio_magic/sio_thermal_example.dat +0 -0
  592. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sio_magic/sites.txt +0 -0
  593. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sio_magic/specimens.txt +0 -0
  594. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sufar_asc_magic/measurements.txt +0 -0
  595. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sufar_asc_magic/samples.txt +0 -0
  596. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sufar_asc_magic/sites.txt +0 -0
  597. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sufar_asc_magic/specimens.txt +0 -0
  598. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/sufar_asc_magic/sufar4-asc_magic_example.txt +0 -0
  599. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/tdt_magic/Krasa_MGH1.tdt +0 -0
  600. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/tdt_magic/Krasa_MGH1_noAC.tdt +0 -0
  601. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/utrecht_magic/Utrecht_Example.af +0 -0
  602. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/utrecht_magic/locations.txt +0 -0
  603. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/utrecht_magic/measurements.txt +0 -0
  604. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/utrecht_magic/samples.txt +0 -0
  605. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/utrecht_magic/sites.txt +0 -0
  606. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_2_magic/utrecht_magic/specimens.txt +0 -0
  607. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_ages/magic_downloaded_rows.txt +0 -0
  608. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_samples/Iceland_orient.txt_Northern_Iceland.txt +0 -0
  609. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_samples/README +0 -0
  610. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_samples/convert_samples_example.dat +0 -0
  611. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/convert_samples/orient_Northern_Iceland.txt +0 -0
  612. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/Z35.sam.magic +0 -0
  613. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/Z35_er_samples.txt +0 -0
  614. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/Z35_er_sites.txt +0 -0
  615. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/Z35_er_specimens.txt +0 -0
  616. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/copy_er_ages.txt +0 -0
  617. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/er_ages.txt +0 -0
  618. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/er_locations.txt +0 -0
  619. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/er_samples.txt +0 -0
  620. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/er_sites.txt +0 -0
  621. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/er_specimens.txt +0 -0
  622. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/magic_measurements.txt +0 -0
  623. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/pmag_samples.txt +0 -0
  624. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/pmag_sites.txt +0 -0
  625. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/pmag_specimens.txt +0 -0
  626. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/copy_ErMagicBuilder/weird_er_ages.txt +0 -0
  627. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/ages.txt +0 -0
  628. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/core_depthplot_fixed.txt +0 -0
  629. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/er_ages.txt +0 -0
  630. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/er_citations.txt +0 -0
  631. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/er_locations.txt +0 -0
  632. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/er_samples.txt +0 -0
  633. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/er_sites.txt +0 -0
  634. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/er_specimens.txt +0 -0
  635. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/locations.txt +0 -0
  636. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/magic_measurements.txt +0 -0
  637. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/measurements.txt +0 -0
  638. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/pmag_results.txt +0 -0
  639. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/pmag_specimens.txt +0 -0
  640. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/samples.txt +0 -0
  641. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/sites.txt +0 -0
  642. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/core_depthplot/specimens.txt +0 -0
  643. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/curie/curie_example.dat +0 -0
  644. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dayplot_magic/dayplot_magic_example.dat +0 -0
  645. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dayplot_magic/specimens.txt +0 -0
  646. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_eq/di_eq_example.dat +0 -0
  647. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_eq/tmp +0 -0
  648. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_eq/tmp1 +0 -0
  649. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_geo/di_geo.out +0 -0
  650. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_geo/di_geo_example.dat +0 -0
  651. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_rot/di_rot.out +0 -0
  652. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_rot/di_rot_example.txt +0 -0
  653. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_rot/fishrot.out +0 -0
  654. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_tilt/di_tilt.out +0 -0
  655. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_tilt/di_tilt_example.dat +0 -0
  656. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/di_vgp/di_vgp_example.dat +0 -0
  657. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dipole_pinc/dipole_pinc_example.dat +0 -0
  658. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dipole_plat/dipole_plat_example.dat +0 -0
  659. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dir_cart/dir_cart_example.dat +0 -0
  660. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/contribution.txt +0 -0
  661. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/dmag_magic_example.dat +0 -0
  662. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/locations.txt +0 -0
  663. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/magic_contribution_16338.txt +0 -0
  664. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/measurements.txt +0 -0
  665. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/samples.txt +0 -0
  666. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/sites.txt +0 -0
  667. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/dmag_magic/specimens.txt +0 -0
  668. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eigs_s/eigs_s_example.dat +0 -0
  669. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eq_di/eq_di_example.dat +0 -0
  670. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eq_di/tmp +0 -0
  671. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea/fishrot.out +0 -0
  672. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_ell/eqarea_ell_example.txt +0 -0
  673. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_ell/tk03.out +0 -0
  674. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_magic/measurements.txt +0 -0
  675. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_magic/pmag_results.txt +0 -0
  676. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_magic/samples.txt +0 -0
  677. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_magic/site_results.txt +0 -0
  678. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_magic/sites.txt +0 -0
  679. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/eqarea_magic/specimens.txt +0 -0
  680. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/etopo20/etopo20data.gz +0 -0
  681. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/etopo20/etopo20lats.gz +0 -0
  682. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/etopo20/etopo20lons.gz +0 -0
  683. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/find_EI/find_EI_example.dat +0 -0
  684. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/find_EI/tmp +0 -0
  685. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/fishqq/fishqq_example.txt +0 -0
  686. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/fishrot/fishrot.out +0 -0
  687. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest/foldtest_example.dat +0 -0
  688. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/er_citations.txt +0 -0
  689. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/er_locations.txt +0 -0
  690. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/er_sites.txt +0 -0
  691. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/magic_contribution_11087.txt +0 -0
  692. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/magic_methods.txt +0 -0
  693. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/pmag_results.txt +0 -0
  694. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/pmag_sites.txt +0 -0
  695. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/foldtest_magic/sites.txt +0 -0
  696. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/forc_diagram/.ipynb_checkpoints/forc_diagram-checkpoint.ipynb +0 -0
  697. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/forc_diagram/conventional_example.forc +0 -0
  698. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/forc_diagram/irforc_exmaple.irforc +0 -0
  699. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/gaussian/gauss.out +0 -0
  700. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/ATRM/README +0 -0
  701. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/ATRM/generic_ATRM.txt +0 -0
  702. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/ATRM/generic_ATRM.txt.magic +0 -0
  703. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/CR/README +0 -0
  704. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/CR/generic_CR.magic +0 -0
  705. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/CR/generic_CR.txt +0 -0
  706. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/Demag/README.txt +0 -0
  707. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/Demag/generic_demag.txt +0 -0
  708. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/PI/README +0 -0
  709. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/generic_magic/PI/generic_izzi.txt +0 -0
  710. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/geomagia/geomagia_sel.txt +0 -0
  711. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/gobing/gobing_example.txt +0 -0
  712. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/gofish/fishrot.out +0 -0
  713. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/gokent/gokent_example.txt +0 -0
  714. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/gokent/tk03.out +0 -0
  715. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/goprinc/goprinc_example.txt +0 -0
  716. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/goprinc/tk03.out +0 -0
  717. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/grab_magic_key/lats +0 -0
  718. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/hysteresis_magic/hysteresis_magic_example.dat +0 -0
  719. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/hysteresis_magic/measurements.txt +0 -0
  720. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/igrf/igrf.out +0 -0
  721. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/igrf/igrf_example.dat +0 -0
  722. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/incfish/incfish_example_di.dat +0 -0
  723. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/incfish/incfish_example_inc.dat +0 -0
  724. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/.ipynb_checkpoints/PmagPy_iodp_HOLE_template-checkpoint.ipynb +0 -0
  725. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/.ipynb_checkpoints/U999A-checkpoint.ipynb +0 -0
  726. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/Figures/U999A_1.pdf +0 -0
  727. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/Figures/U999A_anisotropy_xmastree.pdf +0 -0
  728. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/ProcessingPmagData.docx +0 -0
  729. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/Core Summary_18_5_2019.csv +0 -0
  730. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/JR6_data/spinner_17_5_2019.csv +0 -0
  731. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/KLY4S_data/ex-kappa_17_5_2019.csv +0 -0
  732. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/SRM_archive_data/srmsection_17_5_2019.csv +0 -0
  733. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/SRM_discrete_data/srmdiscrete_17_5_2019.csv +0 -0
  734. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/Section Summary_17_5_2019.csv +0 -0
  735. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U1999A_xray_disturbance.xlsx +0 -0
  736. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/Core Summary_17_5_2019.csv +0 -0
  737. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/dscr_measurements.txt +0 -0
  738. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/jr6_measurements.txt +0 -0
  739. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/kly4s_measurements.txt +0 -0
  740. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/kly4s_specimens.txt +0 -0
  741. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/lims_samples.txt +0 -0
  742. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/lims_sites.txt +0 -0
  743. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/lims_specimens.txt +0 -0
  744. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/locations.txt +0 -0
  745. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/samples.txt +0 -0
  746. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/sites.txt +0 -0
  747. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/specimens.txt +0 -0
  748. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/srm_arch_measurements.txt +0 -0
  749. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/srm_arch_samples.txt +0 -0
  750. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/srm_arch_sites.txt +0 -0
  751. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/srm_arch_specimens.txt +0 -0
  752. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_MagIC/srm_dscr_measurements.txt +0 -0
  753. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/U999A_disturbances.xlsx +0 -0
  754. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A/samples_17_5_2019.csv +0 -0
  755. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/iodp_magic/U999A.ipynb +0 -0
  756. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/irm_unmix/irm_unmix_example.dat +0 -0
  757. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/irm_unmix/irm_unmix_example_fit.csv +0 -0
  758. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/irmaq_magic/U1359A_IRM_coil2.txt +0 -0
  759. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/irmaq_magic/U1359A_IRM_coil3.txt +0 -0
  760. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/irmaq_magic/measurements.txt +0 -0
  761. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/k15_magic/k15_example.dat +0 -0
  762. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/k15_s/k15_example.dat +0 -0
  763. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/kly4s_magic/KLY4S_magic_example.dat +0 -0
  764. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/ages.txt +0 -0
  765. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/criteria.txt +0 -0
  766. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/locations.txt +0 -0
  767. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/measurements.txt +0 -0
  768. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/samples.txt +0 -0
  769. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/sites.txt +0 -0
  770. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/specimens.txt +0 -0
  771. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lnp_magic/zmab0001193tmp02.txt +0 -0
  772. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lowrie/lowrie_example.dat +0 -0
  773. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lowrie/lowrie_magic_example.dat +0 -0
  774. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lowrie_magic/lowrie_example.dat +0 -0
  775. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lowrie_magic/lowrie_magic_example.dat +0 -0
  776. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/lowrie_magic/measurements.txt +0 -0
  777. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/SrExample_AF.txt.magic +0 -0
  778. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/SrExample_AF_er_samples.txt +0 -0
  779. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/SrExample_thellier.txt.magic +0 -0
  780. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/SrExample_thellier_er_samples.txt +0 -0
  781. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/SrExample_thermal.txt.magic +0 -0
  782. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/SrExample_thermal_er_samples.txt +0 -0
  783. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/er_samples.txt +0 -0
  784. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/magic_measurements.txt +0 -0
  785. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/measurements.txt +0 -0
  786. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/samples.txt +0 -0
  787. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_gui/3_0/specimens.txt +0 -0
  788. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_select/AF_BFL_specimens.txt +0 -0
  789. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_select/AF_specimens.txt +0 -0
  790. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_select/pmag_specimens.txt +0 -0
  791. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/magic_select/specimens.txt +0 -0
  792. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/measurements_normalize/irm_measurements.txt +0 -0
  793. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/measurements_normalize/specimens_weight.txt +0 -0
  794. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/misc_files/er_specimens.txt +0 -0
  795. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/misc_files/pmag_specimens.txt +0 -0
  796. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/er_ages.txt +0 -0
  797. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/er_citations.txt +0 -0
  798. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/er_locations.txt +0 -0
  799. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/er_samples.txt +0 -0
  800. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/er_sites.txt +0 -0
  801. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/er_specimens.txt +0 -0
  802. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/magic_measurements.txt +0 -0
  803. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/magic_methods.txt +0 -0
  804. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/pmag_criteria.txt +0 -0
  805. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/pmag_results.txt +0 -0
  806. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/pmag_samples.txt +0 -0
  807. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/pmag_sites.txt +0 -0
  808. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/pmag_specimens.txt +0 -0
  809. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/specimens.txt +0 -0
  810. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/mk_redo/zmab0083201tmp03.txt +0 -0
  811. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/notebooks/Importing and using the 3.0 data model.ipynb +0 -0
  812. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/notebooks/Intro to MagIC Contributions.ipynb +0 -0
  813. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/notebooks/Intro to MagicDataFrames.ipynb +0 -0
  814. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/notebooks/Uploading contributions (with validations).ipynb +0 -0
  815. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/notebooks/Validate Quoted Strings.ipynb +0 -0
  816. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/notebooks/data_model_conversion.ipynb +0 -0
  817. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/notebooks/thellier_gui3_0_tester.ipynb +0 -0
  818. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/nrm_specimens_magic/magic_contribution_15143.txt +0 -0
  819. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/nrm_specimens_magic/nrm_specimens.txt +0 -0
  820. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/orientation_magic/orient_example.txt +0 -0
  821. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/parse_measurements/magic_measurements.txt +0 -0
  822. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pca/pca_example.txt +0 -0
  823. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pca/zeq_example.dat +0 -0
  824. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plotXY/plotXY.png +0 -0
  825. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plotXY/plotXY.svg +0 -0
  826. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plotXY/plotxy_example.txt +0 -0
  827. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plotXY/tmp +0 -0
  828. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plot_cdf/gaussian.out +0 -0
  829. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plot_map_pts/Map_PTS.png +0 -0
  830. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plot_map_pts/uniform.out +0 -0
  831. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/plotdi_a/plotdi_a_example.dat +0 -0
  832. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/Directions.tex +0 -0
  833. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/Directions.txt +0 -0
  834. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/Intensities.tex +0 -0
  835. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/Intensities.txt +0 -0
  836. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/SiteNfo.tex +0 -0
  837. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/SiteNfo.txt +0 -0
  838. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/pmag_results.txt +0 -0
  839. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pmag_results_extract/pmag_specimens.txt +0 -0
  840. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/polemap_magic/locations.txt +0 -0
  841. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/Map_PTS.pdf +0 -0
  842. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/lon_lat +0 -0
  843. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/nam_180-200.txt +0 -0
  844. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/nam_panA.frp +0 -0
  845. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/panA.out +0 -0
  846. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/pt_rot.input +0 -0
  847. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/pt_rot.out +0 -0
  848. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/pt_rot_example.dat +0 -0
  849. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/pt_rot/pt_rot_panA.out +0 -0
  850. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/qqplot/gauss.out +0 -0
  851. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/quick_hyst/hysteresis_magic_example3.dat +0 -0
  852. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/quick_hyst2/hysteresis_magic_example.dat +0 -0
  853. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/remanence_anisotropy_magic/README +0 -0
  854. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/revtest/revtest_example.txt +0 -0
  855. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/revtest_magic/criteria.txt +0 -0
  856. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/revtest_magic/revtest_magic_example.txt +0 -0
  857. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/revtest_magic/sites.txt +0 -0
  858. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/s_eigs/s_eigs_example.dat +0 -0
  859. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/s_geo/s_geo_example.dat +0 -0
  860. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/s_hext/s_geo_example.dat +0 -0
  861. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/s_magic/s_magic_example.dat +0 -0
  862. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/s_magic/specimens.txt +0 -0
  863. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/s_tilt/s_tilt_example.dat +0 -0
  864. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/scalc/scalc_example.txt +0 -0
  865. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/scalc_magic/pmag_results.txt +0 -0
  866. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/scalc_magic/sites.txt +0 -0
  867. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/scalc_magic/vgp_lat +0 -0
  868. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/site_edit_magic/thellier_redo +0 -0
  869. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/site_edit_magic/zeq_redo +0 -0
  870. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/site_edit_magic/zmab0083201tmp03.txt +0 -0
  871. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/squish/squish_example.dat +0 -0
  872. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/stats/gaussian.out +0 -0
  873. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/strip_magic/pmag_results.txt +0 -0
  874. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/strip_magic/sites.txt +0 -0
  875. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/strip_magic/sites_with_vgps.txt +0 -0
  876. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/sundec/sundec_example.dat +0 -0
  877. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/__init__.py +0 -0
  878. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/empty_dir/blank.txt +0 -0
  879. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/er_ages.txt +0 -0
  880. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/er_locations.txt +0 -0
  881. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/er_samples.txt +0 -0
  882. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/er_sites.txt +0 -0
  883. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/er_specimens.txt +0 -0
  884. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/location_09.Oct.2015.txt +0 -0
  885. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/location_14.Oct.2015.txt +0 -0
  886. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/location_16.Aug.2015.txt +0 -0
  887. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/location_16.Aug.2015_1.txt +0 -0
  888. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/methods/pmag_specimens.txt +0 -0
  889. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/__init__.py +0 -0
  890. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/er_ages.txt +0 -0
  891. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/er_locations.txt +0 -0
  892. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/er_samples.txt +0 -0
  893. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/er_samples_orient.txt +0 -0
  894. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/er_sites.txt +0 -0
  895. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/er_sites_orient.txt +0 -0
  896. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/er_specimens.txt +0 -0
  897. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/magic_measurements.txt +0 -0
  898. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/thellier_GUI.log +0 -0
  899. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/thellier_interpreter/thellier_interpreter.log +0 -0
  900. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/thellier_interpreter/thellier_interpreter_STDEV-OPT_redo +0 -0
  901. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/thellier_interpreter/thellier_interpreter_STDEV-OPT_samples.txt +0 -0
  902. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/thellier_interpreter/thellier_interpreter_STDEV-OPT_specimens.txt +0 -0
  903. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/thellier_interpreter/thellier_interpreter_all.txt +0 -0
  904. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project/thellier_interpreter/thellier_interpreter_specimens_bounds.txt +0 -0
  905. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/__init__.py +0 -0
  906. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/er_ages.txt +0 -0
  907. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/er_locations.txt +0 -0
  908. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/er_samples.txt +0 -0
  909. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/er_samples_orient.txt +0 -0
  910. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/er_sites.txt +0 -0
  911. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/er_sites_orient.txt +0 -0
  912. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/er_specimens.txt +0 -0
  913. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/magic_measurements.txt +0 -0
  914. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/my_project_with_errors/something.py +0 -0
  915. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/odp_magic/odp_magic_er_samples.txt +0 -0
  916. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/validation/Jack-Hills_19.Apr.2020_4.txt +0 -0
  917. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/validation/Jack-Hills_19.Apr.2020_5.txt +0 -0
  918. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/validation/er_locations.txt +0 -0
  919. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/validation/er_sites.txt +0 -0
  920. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/validation/location1_30.Dec.2015.txt +0 -0
  921. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/testing/validation/location1_30.Dec.2015_1.txt +0 -0
  922. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Megiddo_unpublished_example/er_ages.txt +0 -0
  923. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Megiddo_unpublished_example/er_locations.txt +0 -0
  924. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/SU1_example/er_ages.txt +0 -0
  925. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/SU1_example/er_locations.txt +0 -0
  926. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/SU1_example/optimizer_test_groups.txt +0 -0
  927. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/er_ages.txt +0 -0
  928. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/er_citations.txt +0 -0
  929. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/er_expeditions.txt +0 -0
  930. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/er_locations.txt +0 -0
  931. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/er_test_groups.txt +0 -0
  932. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/magic_methods.txt +0 -0
  933. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/pmag_results.txt +0 -0
  934. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/pmag_samples.txt +0 -0
  935. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/pmag_sites.txt +0 -0
  936. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/pmag_specimens.txt +0 -0
  937. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/thellier_interpreter/thellier_interpreter_STDEV-OPT_redo +0 -0
  938. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/thellier_interpreter/thellier_interpreter_STDEV-OPT_samples.txt +0 -0
  939. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/thellier_interpreter/thellier_interpreter_STDEV-OPT_specimens.txt +0 -0
  940. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/thellier_interpreter/thellier_interpreter_all.txt +0 -0
  941. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/thellier_interpreter/thellier_interpreter_specimens_bounds.txt +0 -0
  942. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/thellier_redo +0 -0
  943. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/thellier_specimens.txt +0 -0
  944. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/Tauxe_2006_example/zmab0094380tmp01.txt +0 -0
  945. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_GUI/thellier_GUI_full_manual_1_0.pdf +0 -0
  946. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_magic/measurements.txt +0 -0
  947. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/thellier_magic/zmab0100159tmp01.txt +0 -0
  948. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/tk03/tk03.out +0 -0
  949. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/tsunakawa_shaw/raw_data/mc120c-SA4.d +0 -0
  950. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/uniform/uniform.out +0 -0
  951. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/unsquish/unsquish_example.dat +0 -0
  952. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/er_ages.txt +0 -0
  953. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/er_citations.txt +0 -0
  954. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/er_locations.txt +0 -0
  955. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/magic_methods.txt +0 -0
  956. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/pmag_results.txt +0 -0
  957. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/pmag_samples.txt +0 -0
  958. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/pmag_sites.txt +0 -0
  959. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/pmag_specimens.txt +0 -0
  960. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/thellier_specimens.txt +0 -0
  961. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/upload.txt +0 -0
  962. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/upload_dos.txt +0 -0
  963. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/upload_magic/zeq_specimens.txt +0 -0
  964. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/vdm_b/vdm_b_example.dat +0 -0
  965. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/vector_mean/vector_mean_example.dat +0 -0
  966. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/vgp_di/vgp_di_example.dat +0 -0
  967. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/vgpmap_magic/pmag_results.txt +0 -0
  968. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/vgpmap_magic/sites.txt +0 -0
  969. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/watsons_f/watsons_f_example_file1.dat +0 -0
  970. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/watsons_f/watsons_f_example_file2.dat +0 -0
  971. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/xpeem_magic/Bryson2019_PVA01-r1.txt +0 -0
  972. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/xpeem_magic/Maurel2020_TeA01Comma-r1onL.txt +0 -0
  973. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/xpeem_magic/Maurel2020_TeA01TwoSpace-r1onL.txt +0 -0
  974. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/zeq/zeq_example.dat +0 -0
  975. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/zeq_magic/measurements.txt +0 -0
  976. {pmagpy-4.3.7.data → pmagpy-4.3.9.data}/data/data_files/zeq_magic/zmab0083201tmp03.txt +0 -0
  977. {pmagpy-4.3.7.dist-info → pmagpy-4.3.9.dist-info}/WHEEL +0 -0
  978. {pmagpy-4.3.7.dist-info → pmagpy-4.3.9.dist-info}/entry_points.txt +0 -0
  979. {pmagpy-4.3.7.dist-info → pmagpy-4.3.9.dist-info}/top_level.txt +0 -0
pmagpy/ipmag.py CHANGED
@@ -23,11 +23,6 @@ from matplotlib.pylab import polyfit
23
23
  import matplotlib.ticker as mtick
24
24
  from matplotlib import colors
25
25
  from matplotlib import cm
26
- try:
27
- import requests
28
- except ImportError:
29
- requests = None
30
- encoding = "ISO-8859-1"
31
26
  from .mapping import map_magic
32
27
  from pmagpy import contribution_builder as cb
33
28
  from pmagpy import spline
@@ -36,12 +31,16 @@ from pmag_env import set_env
36
31
  from . import pmag
37
32
  from . import pmagplotlib
38
33
  from . import data_model3 as data_model
39
- from .contribution_builder import Contribution
34
+ #from .contribution_builder import Contribution appears redundant
40
35
  from . import validate_upload3 as val_up3
41
36
  from numpy.linalg import inv, eig
37
+ try:
38
+ import requests
39
+ except ImportError:
40
+ requests = None
41
+ encoding = "ISO-8859-1"
42
42
  has_cartopy, cartopy = pmag.import_cartopy()
43
-
44
- if has_cartopy == True:
43
+ if has_cartopy:
45
44
  import cartopy.crs as ccrs
46
45
 
47
46
 
@@ -781,7 +780,8 @@ def unsquish(incs, f):
781
780
  inc_new = np.rad2deg(np.arctan(inc_new_rad))
782
781
  incs_unsquished.append(inc_new)
783
782
  return incs_unsquished
784
- except:
783
+ except TypeError as e:
784
+ print("TypeError caught: ", e) # to catch single values
785
785
  inc_rad = np.deg2rad(incs) # convert to radians
786
786
  inc_new_rad = (1.0/f) * np.tan(inc_rad)
787
787
  inc_new = np.rad2deg(np.arctan(inc_new_rad)) # convert back to degrees
@@ -822,7 +822,8 @@ def squish(incs, f):
822
822
  np.pi # convert back to degrees
823
823
  incs_squished.append(inc_new)
824
824
  return incs_squished
825
- except:
825
+ except TypeError as e: # to catch single values
826
+ print("TypeError caught: ", e)
826
827
  inc_rad = incs * np.pi / 180. # convert to radians
827
828
  inc_new_rad = f * np.tan(inc_rad)
828
829
  inc_new = np.arctan(inc_new_rad) * 180. / \
@@ -904,9 +905,9 @@ def do_flip(dec=None, inc=None, di_block=None, unit_vector=True):
904
905
  dflip = []
905
906
  for rec in di_block:
906
907
  d, i = (rec[0] - 180.) % 360., -rec[1]
907
- if unit_vector==True:
908
+ if unit_vector:
908
909
  dflip.append([d, i, 1.0])
909
- if unit_vector==False:
910
+ if not unit_vector:
910
911
  dflip.append([d, i])
911
912
  return dflip
912
913
 
@@ -1041,52 +1042,113 @@ def common_mean_bootstrap(Data1, Data2, NumSims=1000,
1041
1042
  save=False, save_folder='.', fmt='svg',
1042
1043
  figsize=(7, 2.3), x_tick_bins=4,verbose=True):
1043
1044
  """
1044
- Conduct a bootstrap test (Tauxe, 2010) for a common mean on two declination,
1045
- inclination data sets. Plots are generated of the cumulative distributions
1046
- of the Cartesian coordinates of the means of the pseudo-samples (one for x,
1047
- one for y and one for z). If the 95 percent confidence bounds for each
1048
- component overlap, the two set of directions "pass" the test and are
1049
- consistent with sharing a common mean.
1045
+ Conducts a bootstrap test for a common mean on two directional data sets.
1050
1046
 
1051
- Parameters:
1052
- Data1 : a nested list of directional data [dec,inc] (a di_block)
1053
- Data2 : a nested list of directional data [dec,inc] (a di_block)
1054
- if Data2 is length of 1, treat as single direction
1055
- NumSims : number of bootstrap samples (default is 1000)
1056
- save : optional save of plots (default is False)
1057
- save_folder : path to directory where plots should be saved
1058
- fmt : format of figures to be saved (default is 'svg')
1059
- figsize : optionally adjust figure size (default is (7, 2.3))
1060
- x_tick_bins : because they occasionally overlap depending on the data, this
1061
- argument allows you adjust number of tick marks on the x axis of graphs
1062
- (default is 4)
1047
+ This function implements the bootstrap test from Tauxe (2010) to determine
1048
+ if two sets of directional data are consistent with sharing a common mean.
1049
+ It generates cumulative distribution plots for the X, Y, and Z components
1050
+ of the bootstrapped means. The test "passes" if the 95% confidence bounds
1051
+ for each of the three components overlap.
1063
1052
 
1064
- Returns:
1065
- **three plots** (cumulative distributions of the X, Y, Z of bootstrapped means,
1066
- **result** (a boolean where 0 is fail and 1 is pass)
1053
+ Alternatively, if a single direction is provided for `Data2`, the function
1054
+ tests if that direction falls within the 95% confidence bounds of `Data1`.
1067
1055
 
1068
- Examples:
1069
- Develop two populations of directions using ``ipmag.fishrot()``. Use the
1070
- function to determine if they share a common mean.
1056
+ Parameters
1057
+ ----------
1058
+ Data1 : array-like
1059
+ A list of lists or NumPy array of directional data, where each inner
1060
+ list is [declination, inclination].
1061
+ Data2 : array-like
1062
+ A second set of directional data in the same format as `Data1`, or a
1063
+ single direction as [declination, inclination].
1064
+ NumSims : int, optional
1065
+ The number of bootstrap samples to generate. Defaults to 1000.
1066
+ color1 : str, optional
1067
+ Matplotlib color for the first dataset. Defaults to 'r' (red).
1068
+ color2 : str, optional
1069
+ Matplotlib color for the second dataset. Defaults to 'b' (blue).
1070
+ save : bool, optional
1071
+ If True, saves the generated plots. Defaults to False.
1072
+ save_folder : str, optional
1073
+ The directory path where plots will be saved. Defaults to '.'.
1074
+ fmt : str, optional
1075
+ The file format for saved plots (e.g., 'svg', 'png', 'pdf').
1076
+ Defaults to 'svg'.
1077
+ figsize : tuple, optional
1078
+ The size of the figure for the plots. Defaults to (7, 2.3).
1079
+ x_tick_bins : int, optional
1080
+ The maximum number of tick mark bins for the x-axis of the plots.
1081
+ Defaults to 4.
1082
+ verbose : bool, optional
1083
+ If True, prints the test result ('Pass' or 'Fail') to the console.
1084
+ Defaults to True.
1071
1085
 
1072
- >>> directions_A = ipmag.fishrot(k=20, n=30, dec=40, inc=60)
1073
- >>> directions_B = ipmag.fishrot(k=35, n=25, dec=42, inc=57)
1074
- >>> ipmag.common_mean_bootstrap(directions_A, directions_B)
1086
+ Returns
1087
+ -------
1088
+ int
1089
+ Returns 1 if the datasets pass the common mean test, and 0 if they fail.
1090
+
1091
+ Notes
1092
+ -----
1093
+ The function also displays or saves three plots showing the cumulative
1094
+ distributions for the X, Y, and Z components of the bootstrapped means. These
1095
+ plots are a visual representation of the statistical test.
1096
+
1097
+ Examples
1098
+ --------
1099
+ Develop two populations of directions using ``ipmag.fishrot()`` and then
1100
+ use the function to determine if they share a common mean.
1101
+
1102
+ >>> directions_A = ipmag.fishrot(k=20, n=30, dec=40, inc=60)
1103
+ >>> directions_B = ipmag.fishrot(k=35, n=25, dec=42, inc=57)
1104
+ >>> result = ipmag.common_mean_bootstrap_new(directions_A, directions_B)
1105
+ Pass
1106
+ >>> print(result)
1107
+ 1
1108
+
1109
+ Compare a single direction to a population.
1110
+
1111
+ >>> directions_A = ipmag.fishrot(k=100, n=30, dec=45, inc=45)
1112
+ >>> direction_B = [45,45]
1113
+ >>> common_mean_bootstrap_new(directions_A, direction_B)
1114
+ Pass
1075
1115
  """
1076
- counter = 0
1077
1116
  BDI1 = pmag.di_boot(Data1)
1078
1117
  cart1 = pmag.dir2cart(BDI1).transpose()
1079
1118
  X1, Y1, Z1 = cart1[0], cart1[1], cart1[2]
1080
- if np.array(Data2).shape[0] > 2:
1081
- BDI2 = pmag.di_boot(Data2)
1082
- cart2 = pmag.dir2cart(BDI2).transpose()
1119
+
1120
+ Data2_arr = np.asarray(Data2, dtype=float)
1121
+
1122
+ # Determine if Data2 is a single direction or a block
1123
+ if Data2_arr.ndim == 1 and Data2_arr.size in (2, 3):
1124
+ is_block = False
1125
+ single_direction = Data2_arr # (2,) or (3,)
1126
+ elif Data2_arr.ndim == 2 and Data2_arr.shape[1] in (2, 3):
1127
+ is_block = Data2_arr.shape[0] > 1
1128
+ direction_block = Data2_arr # (N, 2) or (N, 3)
1129
+ elif Data2_arr.ndim == 2 and Data2_arr.shape[0] in (2, 3) and Data2_arr.shape[1] > 1:
1130
+ # Handle transposed input like (2, N) or (3, N)
1131
+ direction_block = Data2_arr.T
1132
+ if direction_block.shape[1] not in (2, 3):
1133
+ raise ValueError(f"Expected (N, 2) or (N, 3), got {direction_block.shape}.")
1134
+ is_block = direction_block.shape[0] > 1
1135
+ else:
1136
+ raise ValueError(
1137
+ f"Expected [dec, inc(, intensity)] or an array with 2 or 3 columns; "
1138
+ f"got shape {Data2_arr.shape}."
1139
+ )
1140
+
1141
+ if is_block:
1142
+ BDI2 = pmag.di_boot(direction_block)
1143
+ cart2 = pmag.dir2cart(BDI2).T
1083
1144
  X2, Y2, Z2 = cart2[0], cart2[1], cart2[2]
1084
1145
  else:
1085
- cart = pmag.dir2cart(Data2).transpose()
1086
-
1146
+ cart2 = pmag.dir2cart(single_direction).T
1147
+ X2, Y2, Z2 = cart2[0], cart2[1], cart2[2]
1148
+
1087
1149
  minimum = int(0.025 * len(X1))
1088
1150
  maximum = int(0.975 * len(X1))
1089
-
1151
+
1090
1152
  fignum = 1
1091
1153
  fig = plt.figure(figsize=figsize)
1092
1154
 
@@ -1094,43 +1156,45 @@ def common_mean_bootstrap(Data1, Data2, NumSims=1000,
1094
1156
  X1, y = pmagplotlib.plot_cdf(fignum, X1, "X component", color1, "")
1095
1157
  bounds1 = [X1[minimum], X1[maximum]]
1096
1158
  pmagplotlib.plot_vs(fignum, bounds1, color1, '-')
1097
- if np.array(Data2).shape[0] > 2:
1159
+ if is_block:
1098
1160
  X2, y = pmagplotlib.plot_cdf(fignum, X2, "X component", color2, "")
1099
1161
  bounds2 = [X2[minimum], X2[maximum]]
1100
1162
  pmagplotlib.plot_vs(fignum, bounds2, color2, '--')
1163
+ x_overlap = pmag.interval_overlap(bounds1, bounds2)
1101
1164
  else:
1102
- pmagplotlib.plot_vs(fignum, [cart[0]], 'k', '--')
1165
+ x_in_bounds = X1[minimum] <= X2 <= X1[maximum]
1166
+ pmagplotlib.plot_vs(fignum, [X2], color2, ':')
1103
1167
  plt.ylim(0, 1)
1104
1168
  plt.locator_params(nbins=x_tick_bins)
1105
- x_overlap = pmag.interval_overlap(bounds1,bounds2)
1106
1169
 
1107
1170
  plt.subplot(1, 3, 2)
1108
1171
  Y1, y = pmagplotlib.plot_cdf(fignum, Y1, "Y component", color1, "")
1109
1172
  bounds1 = [Y1[minimum], Y1[maximum]]
1110
1173
  pmagplotlib.plot_vs(fignum, bounds1, color1, '-')
1111
- if np.array(Data2).shape[0] > 2:
1174
+ if is_block:
1112
1175
  Y2, y = pmagplotlib.plot_cdf(fignum, Y2, "Y component", color2, "")
1113
1176
  bounds2 = [Y2[minimum], Y2[maximum]]
1114
1177
  pmagplotlib.plot_vs(fignum, bounds2, color2, '--')
1178
+ y_overlap = pmag.interval_overlap(bounds1, bounds2)
1115
1179
  else:
1116
- pmagplotlib.plot_vs(fignum, [cart[1]], 'k', '--')
1180
+ y_in_bounds = Y1[minimum] <= Y2 <= Y1[maximum]
1181
+ pmagplotlib.plot_vs(fignum, [Y2], color2, ':')
1117
1182
  plt.ylim(0, 1)
1118
- y_overlap = pmag.interval_overlap(bounds1,bounds2)
1119
-
1183
+
1120
1184
  plt.subplot(1, 3, 3)
1121
1185
  Z1, y = pmagplotlib.plot_cdf(fignum, Z1, "Z component", color1, "")
1122
1186
  bounds1 = [Z1[minimum], Z1[maximum]]
1123
1187
  pmagplotlib.plot_vs(fignum, bounds1, color1, '-')
1124
-
1125
- if np.array(Data2).shape[0] > 2:
1188
+ if is_block:
1126
1189
  Z2, y = pmagplotlib.plot_cdf(fignum, Z2, "Z component", color2, "")
1127
1190
  bounds2 = [Z2[minimum], Z2[maximum]]
1128
1191
  pmagplotlib.plot_vs(fignum, bounds2, color2, '--')
1192
+ z_overlap = pmag.interval_overlap(bounds1, bounds2)
1129
1193
  else:
1130
- pmagplotlib.plot_vs(fignum, [cart[2]], 'k', '--')
1194
+ z_in_bounds = Z1[minimum] <= Z2 <= Z1[maximum]
1195
+ pmagplotlib.plot_vs(fignum, [Z2], color2, ':')
1131
1196
  plt.ylim(0, 1)
1132
1197
  plt.locator_params(nbins=x_tick_bins)
1133
- z_overlap = pmag.interval_overlap(bounds1,bounds2)
1134
1198
 
1135
1199
  plt.tight_layout()
1136
1200
  if save:
@@ -1138,39 +1202,83 @@ def common_mean_bootstrap(Data1, Data2, NumSims=1000,
1138
1202
  save_folder, 'common_mean_bootstrap') + '.' + fmt,
1139
1203
  dpi=300,bbox_inches='tight')
1140
1204
  plt.show()
1141
-
1142
- if ((x_overlap != 0) and (y_overlap != 0) and (z_overlap != 0)):
1143
- if verbose:print('Pass')
1144
- result = 1
1145
- return result
1146
- elif ((x_overlap == 0) and (y_overlap != 0) and (z_overlap != 0)):
1147
- if verbose:print('Fail, distinct in x')
1148
- result = 0
1149
- return result
1150
- elif ((x_overlap != 0) and (y_overlap == 0) and (z_overlap != 0)):
1151
- if verbose:print('Fail, distinct in y')
1152
- result = 0
1153
- return result
1154
- elif ((x_overlap != 0) and (y_overlap != 0) and (z_overlap == 0)):
1155
- if verbose:print('Fail, distinct in z')
1156
- result = 0
1157
- return result
1158
- elif ((x_overlap == 0) and (y_overlap == 0) and (z_overlap != 0)):
1159
- if verbose:print('Fail, distinct in x and y')
1160
- result = 0
1161
- return result
1162
- elif ((x_overlap == 0) and (y_overlap != 0) and (z_overlap == 0)):
1163
- if verbose:print('Fail, distinct in x and z')
1164
- result = 0
1165
- return result
1166
- elif ((x_overlap != 0) and (y_overlap == 0) and (z_overlap == 0)):
1167
- if verbose:print('Fail, distinct in y and z')
1168
- result = 0
1169
- return result
1170
- elif ((x_overlap == 0) and (y_overlap == 0) and (z_overlap == 0)):
1171
- if verbose:print('Fail, distinct in x, y and z')
1172
- result = 0
1173
- return result
1205
+
1206
+ if is_block:
1207
+ if ((x_overlap != 0) and (y_overlap != 0) and (z_overlap != 0)):
1208
+ if verbose:
1209
+ print('Pass')
1210
+ result = 1
1211
+ return result
1212
+ elif ((x_overlap == 0) and (y_overlap != 0) and (z_overlap != 0)):
1213
+ if verbose:
1214
+ print('Fail, distinct in x')
1215
+ result = 0
1216
+ return result
1217
+ elif ((x_overlap != 0) and (y_overlap == 0) and (z_overlap != 0)):
1218
+ if verbose:
1219
+ print('Fail, distinct in y')
1220
+ result = 0
1221
+ return result
1222
+ elif ((x_overlap != 0) and (y_overlap != 0) and (z_overlap == 0)):
1223
+ if verbose:
1224
+ print('Fail, distinct in z')
1225
+ result = 0
1226
+ return result
1227
+ elif ((x_overlap == 0) and (y_overlap == 0) and (z_overlap != 0)):
1228
+ if verbose:
1229
+ print('Fail, distinct in x and y')
1230
+ result = 0
1231
+ return result
1232
+ elif ((x_overlap == 0) and (y_overlap != 0) and (z_overlap == 0)):
1233
+ if verbose:
1234
+ print('Fail, distinct in x and z')
1235
+ result = 0
1236
+ return result
1237
+ elif ((x_overlap != 0) and (y_overlap == 0) and (z_overlap == 0)):
1238
+ if verbose:
1239
+ print('Fail, distinct in y and z')
1240
+ result = 0
1241
+ return result
1242
+ elif ((x_overlap == 0) and (y_overlap == 0) and (z_overlap == 0)):
1243
+ if verbose:
1244
+ print('Fail, distinct in x, y and z')
1245
+ result = 0
1246
+ return result
1247
+
1248
+ else:
1249
+ if x_in_bounds and y_in_bounds and z_in_bounds:
1250
+ if verbose:
1251
+ print('Pass')
1252
+ return 1
1253
+ elif (not x_in_bounds) and y_in_bounds and z_in_bounds:
1254
+ if verbose:
1255
+ print('Fail, distinct in x')
1256
+ return 0
1257
+ elif x_in_bounds and (not y_in_bounds) and z_in_bounds:
1258
+ if verbose:
1259
+ print('Fail, distinct in y')
1260
+ return 0
1261
+ elif x_in_bounds and y_in_bounds and (not z_in_bounds):
1262
+ if verbose:
1263
+ print('Fail, distinct in z')
1264
+ return 0
1265
+ elif (not x_in_bounds) and (not y_in_bounds) and z_in_bounds:
1266
+ if verbose:
1267
+ print('Fail, distinct in x and y')
1268
+ return 0
1269
+ elif (not x_in_bounds) and y_in_bounds and (not z_in_bounds):
1270
+ if verbose:
1271
+ print('Fail, distinct in x and z')
1272
+ return 0
1273
+ elif x_in_bounds and (not y_in_bounds) and (not z_in_bounds):
1274
+ if verbose:
1275
+ print('Fail, distinct in y and z')
1276
+ return 0
1277
+ else:
1278
+ # all three out of bounds
1279
+ if verbose:
1280
+ print('Fail, distinct in x, y and z')
1281
+ return 0
1174
1282
 
1175
1283
 
1176
1284
  def common_mean_bootstrap_H23(Data1, Data2, num_sims=10000, alpha=0.05, plot=True, reversal=False,
@@ -1285,25 +1393,31 @@ def common_mean_bootstrap_H23(Data1, Data2, num_sims=10000, alpha=0.05, plot=Tru
1285
1393
  Lmin_c = np.quantile(Lmin_b,1-alpha) #test critical value
1286
1394
  # (n.b., if Lmin > Lmin_c reject null of common means at alpha significance level)
1287
1395
 
1288
- if verbose: print("Heslop et al. (2023) test statistic value = {:.2f}".format(Lmin))
1289
- if verbose: print("Heslop et al. (2023) critical test statistic value = {:.2f}".format(Lmin_c))
1290
- if verbose: print("Estimated p-value = {:.2f}".format(p))
1396
+ if verbose:
1397
+ print("Heslop et al. (2023) test statistic value = {:.2f}".format(Lmin))
1398
+ if verbose:
1399
+ print("Heslop et al. (2023) critical test statistic value = {:.2f}".format(Lmin_c))
1400
+ if verbose:
1401
+ print("Estimated p-value = {:.2f}".format(p))
1291
1402
  if p < alpha:
1292
- if verbose:print("Reject null of common means at alpha = {:.2f} confidence level".format(alpha))
1403
+ if verbose:
1404
+ print("Reject null of common means at alpha = {:.2f} confidence level".format(alpha))
1293
1405
  result = 0
1294
1406
  else:
1295
- if verbose:print("Cannot reject null of common means at alpha = {:.2f} confidence level".format(alpha))
1407
+ if verbose:
1408
+ print("Cannot reject null of common means at alpha = {:.2f} confidence level".format(alpha))
1296
1409
  result = 1
1297
1410
 
1298
- if plot==True:
1411
+ if plot:
1299
1412
  fig=plt.figure()
1300
1413
  ax1=fig.add_subplot(111)
1301
- plt.hist(Lmin_b,bins=int(np.sqrt(num_sims)),color = "0.6", ec="0.6");
1414
+ plt.hist(Lmin_b,bins=int(np.sqrt(num_sims)),color = "0.6", ec="0.6")
1302
1415
  #axes = plt.gca()
1303
1416
  y_min, y_max = ax1.get_ylim()
1304
1417
  plt.plot([Lmin,Lmin],[y_min,y_max],'--r',label='Test statistic:')
1305
1418
  plt.plot([Lmin_c,Lmin_c],[y_min,y_max],'-k',label='Critical value')
1306
- if y_max<Lmin:y_max=Lmin+5
1419
+ if y_max<Lmin:
1420
+ y_max=Lmin+5
1307
1421
  plt.ylim([y_min,y_max])
1308
1422
  plt.xlim(np.min(Lmin_b),np.max(Lmin_b)+10)
1309
1423
  plt.xlabel(r'$\lambda_{\rm{min}}^{(b)}$')
@@ -1376,7 +1490,6 @@ def common_mean_watson(Data1, Data2, NumSims=5000, print_result=True, plot='no',
1376
1490
 
1377
1491
  # do monte carlo simulation of datasets with same kappas as data,
1378
1492
  # but a common mean
1379
- counter = 0
1380
1493
  Vp = [] # set of Vs from simulations
1381
1494
  for k in range(NumSims):
1382
1495
 
@@ -1513,7 +1626,7 @@ def common_mean_bayes(Data1, Data2, reversal_test=False):
1513
1626
  X1=pmag.dir2cart(Data1)
1514
1627
  X2=pmag.dir2cart(Data2)
1515
1628
 
1516
- if reversal_test==True:
1629
+ if reversal_test:
1517
1630
  X12=np.concatenate((X1,-X2), axis=0) #pool site directions
1518
1631
  else:
1519
1632
  X12=np.concatenate((X1,X2), axis=0) #pool site directions
@@ -1778,7 +1891,7 @@ def reversal_test_MM1990(dec=None, inc=None, di_block=None, plot_CDF=False,
1778
1891
  plot_di(di_block=directions1, color='b'),
1779
1892
  plot_di(di_block=do_flip(di_block=directions2), color='r')
1780
1893
 
1781
- if plot_CDF == False:
1894
+ if not plot_CDF:
1782
1895
  result, angle, critical_angle, classification=common_mean_watson(directions1, directions2,
1783
1896
  save=save, save_folder=save_folder, fmt=fmt)
1784
1897
  else:
@@ -2195,24 +2308,24 @@ def plot_di(dec=None, inc=None, di_block=None, color='k', marker='o', markersize
2195
2308
  if len(di_lists) == 2:
2196
2309
  dec, inc = di_lists
2197
2310
  try:
2198
- length = len(dec)
2199
2311
  for n in range(len(dec)):
2200
2312
  XY = pmag.dimap(dec[n], inc[n])
2201
2313
  if inc[n] >= 0:
2202
2314
  X_down.append(XY[0])
2203
2315
  Y_down.append(XY[1])
2204
- if type(color) == list:
2316
+ if isinstance(color, list):
2205
2317
  color_down.append(color[n])
2206
2318
  else:
2207
2319
  color_down.append(color)
2208
2320
  else:
2209
2321
  X_up.append(XY[0])
2210
2322
  Y_up.append(XY[1])
2211
- if type(color) == list:
2323
+ if isinstance(color, list):
2212
2324
  color_up.append(color[n])
2213
2325
  else:
2214
2326
  color_up.append(color)
2215
- except:
2327
+ except TypeError as e:
2328
+ print("TypeError caught:", e)
2216
2329
  XY = pmag.dimap(dec, inc)
2217
2330
  if inc >= 0:
2218
2331
  X_down.append(XY[0])
@@ -2236,7 +2349,7 @@ def plot_di(dec=None, inc=None, di_block=None, color='k', marker='o', markersize
2236
2349
  if legend == 'yes':
2237
2350
  plt.legend(loc=2)
2238
2351
  plt.tight_layout()
2239
- if title != None:
2352
+ if title is not None:
2240
2353
  plt.title(title)
2241
2354
 
2242
2355
 
@@ -2483,6 +2596,7 @@ def make_robinson_map(central_longitude=0, figsize=(8, 8),
2483
2596
  ax.gridlines(xlocs=lon_grid, ylocs=lat_grid)
2484
2597
  return ax
2485
2598
 
2599
+
2486
2600
  def plot_pole(map_axis, plon, plat, A95, label='', color='k', edgecolor='k',
2487
2601
  marker='o', markersize=20, legend='no',outline=True,
2488
2602
  filled_pole=False, fill_color='k', fill_alpha=1.0,
@@ -2523,9 +2637,9 @@ def plot_pole(map_axis, plon, plat, A95, label='', color='k', edgecolor='k',
2523
2637
  map_axis.scatter(plon, plat, marker=marker,
2524
2638
  color=color, edgecolors=edgecolor, s=markersize,
2525
2639
  label=label, zorder=zorder, transform=ccrs.PlateCarree(), alpha = mean_alpha)
2526
- if filled_pole==False:
2640
+ if not filled_pole:
2527
2641
  equi(map_axis, plon, plat, A95_km, color, alpha=A95_alpha)
2528
- elif filled_pole==True:
2642
+ elif filled_pole:
2529
2643
  equi(map_axis, plon, plat, A95_km, fill_color, alpha=fill_alpha, outline=outline,fill=True)
2530
2644
  if legend == 'yes':
2531
2645
  plt.legend(loc=2)
@@ -2573,12 +2687,14 @@ def plot_poles(map_axis, plon, plat, A95, label='', color='k', edgecolor='k',
2573
2687
  >>> ipmag.plot_poles(map_axis, plons, plats, A95s, color=colors, markersize=40)
2574
2688
 
2575
2689
  """
2576
-
2690
+ if not has_cartopy:
2691
+ print('-W- cartopy must be installed to run ipmag.plot_poles')
2692
+ return
2577
2693
  map_axis.scatter(plon, plat, marker=marker,
2578
2694
  color=color, edgecolors=edgecolor, s=markersize,
2579
2695
  label=label, zorder=zorder, transform=ccrs.PlateCarree(), alpha=alpha)
2580
- if filled_pole==False:
2581
- if isinstance(color,str)==True:
2696
+ if not filled_pole:
2697
+ if isinstance(color,str):
2582
2698
  for n in range(0,len(A95)):
2583
2699
  A95_km = A95[n] * 111.32
2584
2700
  equi(map_axis, plon[n], plat[n], A95_km, color, alpha=alpha, lw=lw)
@@ -2586,8 +2702,8 @@ def plot_poles(map_axis, plon, plat, A95, label='', color='k', edgecolor='k',
2586
2702
  for n in range(0,len(A95)):
2587
2703
  A95_km = A95[n] * 111.32
2588
2704
  equi(map_axis, plon[n], plat[n], A95_km, color[n], alpha=alpha, lw=lw)
2589
- elif filled_pole==True:
2590
- if isinstance(fill_color,str)==True:
2705
+ elif filled_pole:
2706
+ if isinstance(fill_color,str):
2591
2707
  for n in range(0,len(A95)):
2592
2708
  A95_km = A95[n] * 111.32
2593
2709
  equi(map_axis, plon[n], plat[n], A95_km, fill_color, alpha=fill_alpha, outline=outline, fill=True, lw=lw)
@@ -2599,6 +2715,7 @@ def plot_poles(map_axis, plon, plat, A95, label='', color='k', edgecolor='k',
2599
2715
  if legend == 'yes':
2600
2716
  plt.legend(loc=2)
2601
2717
 
2718
+
2602
2719
  def plot_pole_ellipse(map_axis, dictionary,
2603
2720
  color='k', edgecolor='k', marker='s',
2604
2721
  markersize=20, label='', alpha=1.0, lw=1, lower=True, zorder=100):
@@ -2634,6 +2751,9 @@ def plot_pole_ellipse(map_axis, dictionary,
2634
2751
  >>> map_axis = ipmag.make_orthographic_map(central_longitude=200,central_latitude=90)
2635
2752
  >>> ipmag.plot_pole_ellipse(map_axis,kent_dict, color='red',markersize=40)
2636
2753
  """
2754
+ if not has_cartopy:
2755
+ print('-W- cartopy must be installed to run ipmag.plot_pole_ellipse')
2756
+ return
2637
2757
  pars = []
2638
2758
  pars.append(dictionary['dec'])
2639
2759
  pars.append(dictionary['inc'])
@@ -2660,7 +2780,7 @@ def plot_pole_ellipse(map_axis, dictionary,
2660
2780
  def plot_pole_dp_dm(map_axis, plon, plat, slon, slat, dp, dm, pole_label='pole', site_label='site',
2661
2781
  pole_color='k', pole_edgecolor='k', pole_marker='o',
2662
2782
  site_color='r', site_edgecolor='r', site_marker='s',
2663
- markersize=20, legend=True, transform=ccrs.PlateCarree()):
2783
+ markersize=20, legend=True, transform="PlateCarree"):
2664
2784
  """
2665
2785
  This function plots a paleomagnetic pole and a dp/dm confidence ellipse on a cartopy map axis.
2666
2786
 
@@ -2683,11 +2803,12 @@ def plot_pole_dp_dm(map_axis, plon, plat, slon, slat, dp, dm, pole_label='pole',
2683
2803
  pole_label : string that labels the pole.
2684
2804
  site_label : string that labels the site
2685
2805
  legend : the default is a legend (True). Putting False will suppress legend plotting.
2686
- transform : the default is the PlateCarree transform in Cartopy.
2687
- Other transforms can be chosen (e.g. ccrs.geodetic), but this parameter
2688
- rarely needs to be changed by the user and is included for completeness
2689
- and in case of artifacts arising from the PlateCarree transform on some
2690
- map projections in which case the Geodetic transform may work better.
2806
+ transform : str or cartopy.crs.Projection, default "PlateCarree"
2807
+ The coordinate reference system used to interpret input coordinates.
2808
+ Can be a string ("PlateCarree" or "Geodetic") or a Cartopy CRS object
2809
+ (e.g., ccrs.PlateCarree()). If a string is provided, it will be
2810
+ internally mapped to the appropriate Cartopy transform. This parameter
2811
+ rarely needs to be changed, but "Geodetic" may help in certain projections.
2691
2812
 
2692
2813
  Examples:
2693
2814
  >>> dec = 280
@@ -2707,14 +2828,43 @@ def plot_pole_dp_dm(map_axis, plon, plat, slon, slat, dp, dm, pole_label='pole',
2707
2828
  if not has_cartopy:
2708
2829
  print('-W- cartopy must be installed to run ipmag.plot_pole_dp_dm')
2709
2830
  return
2831
+
2832
+ transform_map = {
2833
+ "PlateCarree": ccrs.PlateCarree(),
2834
+ "Geodetic": ccrs.Geodetic(),
2835
+ }
2836
+
2837
+ if isinstance(transform, str):
2838
+ if transform not in transform_map:
2839
+ raise ValueError(f"Invalid transform '{transform}'. Choose from {list(transform_map)}.")
2840
+ transform_obj = transform_map[transform]
2841
+ else:
2842
+ transform_obj = transform
2843
+
2710
2844
  dp_km = dp*111.32
2711
2845
  dm_km = dm*111.32
2712
- map_axis.scatter(plon, plat, marker=pole_marker,
2713
- color=pole_color, edgecolors=pole_edgecolor, s=markersize,
2714
- label=pole_label, zorder=101, transform=ccrs.PlateCarree())
2715
- map_axis.scatter(slon, slat, marker=site_marker,
2716
- color=site_color, edgecolors=site_edgecolor, s=markersize,
2717
- label=site_label, zorder=101, transform=ccrs.PlateCarree())
2846
+ map_axis.scatter(
2847
+ plon,
2848
+ plat,
2849
+ marker=pole_marker,
2850
+ color=pole_color,
2851
+ edgecolors=pole_edgecolor,
2852
+ s=markersize,
2853
+ label=pole_label,
2854
+ zorder=101,
2855
+ transform=transform_obj,
2856
+ )
2857
+ map_axis.scatter(
2858
+ slon,
2859
+ slat,
2860
+ marker=site_marker,
2861
+ color=site_color,
2862
+ edgecolors=site_edgecolor,
2863
+ s=markersize,
2864
+ label=site_label,
2865
+ zorder=101,
2866
+ transform=transform_obj,
2867
+ )
2718
2868
  # the orientation of the ellipse needs to be determined using the
2719
2869
  # two laws of cosines for spherical triangles where the triangle is
2720
2870
  # A: site, B: north pole, C: paleomagnetic pole (see Fig. A.2 of Butler)
@@ -2757,7 +2907,7 @@ def plot_pole_dp_dm(map_axis, plon, plat, slon, slat, dp, dm, pole_label='pole',
2757
2907
  C_deg = np.abs(np.rad2deg(C_rad))
2758
2908
 
2759
2909
  # print(C_deg)
2760
- ellipse(map_axis, plon, plat, dp_km, dm_km, C_deg, color=pole_color, transform=transform)
2910
+ ellipse(map_axis, plon, plat, dp_km, dm_km, C_deg, color=pole_color, transform=transform_obj)
2761
2911
 
2762
2912
  if legend:
2763
2913
  plt.legend(loc=2)
@@ -2816,7 +2966,7 @@ def plot_poles_colorbar(map_axis, plons, plats, A95s, colorvalues, vmin, vmax,
2816
2966
  cmap=colormap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
2817
2967
  sm._A = []
2818
2968
  plt.colorbar(sm, orientation='horizontal', shrink=0.8,
2819
- pad=0.05, label=colorbar_label)
2969
+ pad=0.05, label=colorbar_label, ax=map_axis)
2820
2970
 
2821
2971
 
2822
2972
  def plot_vgp(map_axis, vgp_lon=None, vgp_lat=None, di_block=None, label='', color='k', marker='o',
@@ -2850,13 +3000,13 @@ def plot_vgp(map_axis, vgp_lon=None, vgp_lat=None, di_block=None, label='', colo
2850
3000
  if not has_cartopy:
2851
3001
  print('-W- cartopy must be installed to run ipmag.plot_vgp')
2852
3002
  return
2853
- if di_block != None:
3003
+ if di_block is not None:
2854
3004
  di_lists = unpack_di_block(di_block)
2855
3005
  if len(di_lists) == 3:
2856
3006
  vgp_lon, vgp_lat, intensity = di_lists
2857
3007
  if len(di_lists) == 2:
2858
3008
  vgp_lon, vgp_lat = di_lists
2859
- if edge==None:
3009
+ if edge is None:
2860
3010
  map_axis.scatter(vgp_lon, vgp_lat, marker=marker, edgecolors=None,
2861
3011
  s=markersize, color=color, label=label, zorder=zorder,
2862
3012
  alpha=alpha, transform=ccrs.PlateCarree())
@@ -3155,6 +3305,9 @@ def plot_distributions(ax, lon_samples, lat_samples, to_plot='d', resolution=100
3155
3305
  resolution: the resolution at which to plot the distributions
3156
3306
  kwargs: other keyword arguments inherited from matplotlib
3157
3307
  '''
3308
+ if not has_cartopy:
3309
+ print('-W- cartopy must be installed to run ipmag.plot_distributions')
3310
+ return
3158
3311
  cmap=kwargs.get('cmap', 'viridis')
3159
3312
 
3160
3313
  artists = []
@@ -3204,10 +3357,10 @@ def make_di_block(dec, inc, unit_vector=True):
3204
3357
  [[180.3, 12.1, 1.0], [179.2, 13.7, 1.0], [177.2, 11.9, 1.0]]
3205
3358
  """
3206
3359
  di_block = []
3207
- if unit_vector==True:
3360
+ if unit_vector:
3208
3361
  for n in range(0, len(dec)):
3209
3362
  di_block.append([dec[n], inc[n], 1.0])
3210
- if unit_vector==False:
3363
+ if not unit_vector:
3211
3364
  for n in range(0, len(dec)):
3212
3365
  di_block.append([dec[n], inc[n]])
3213
3366
  return di_block
@@ -3401,14 +3554,14 @@ def equi(map_axis, centerlon, centerlat, radius, color, alpha=1.0, outline=True,
3401
3554
  Y = Y[::-1]
3402
3555
 
3403
3556
  # for non-filled ellipses
3404
- if fill==False:
3557
+ if not fill:
3405
3558
  plt.plot(X, Y, color=color,
3406
3559
  transform=ccrs.Geodetic(), alpha=alpha, lw=lw)
3407
3560
 
3408
3561
  # for filled ellipses
3409
3562
  else:
3410
3563
  XY = np.stack([X,Y],axis=1)
3411
- if outline==True:
3564
+ if outline:
3412
3565
  circle_edge = Polygon(XY,
3413
3566
  edgecolor=color,facecolor='none',
3414
3567
  transform=ccrs.Geodetic())
@@ -3442,7 +3595,7 @@ def ellipse(map_axis, centerlon, centerlat, major_axis, minor_axis, angle, n=360
3442
3595
  The map object with the ellipse plotted on it
3443
3596
 
3444
3597
  """
3445
- if transform == None:
3598
+ if transform is None:
3446
3599
  transform=ccrs.PlateCarree()
3447
3600
  if not has_cartopy:
3448
3601
  print('-W- cartopy must be installed to run ipmag.ellipse')
@@ -3470,8 +3623,10 @@ def ellipse(map_axis, centerlon, centerlat, major_axis, minor_axis, angle, n=360
3470
3623
  map_axis.add_patch(poly)
3471
3624
  else:
3472
3625
  try:
3473
- if "facecolor" in kwargs: kwargs["color"] = kwargs.pop("facecolor")
3474
- if "edgecolor" in kwargs: kwargs["color"] = kwargs.pop("edgecolor")
3626
+ if "facecolor" in kwargs:
3627
+ kwargs["color"] = kwargs.pop("facecolor")
3628
+ if "edgecolor" in kwargs:
3629
+ kwargs["color"] = kwargs.pop("edgecolor")
3475
3630
  map_axis.plot(X, Y, transform=transform, **kwargs)
3476
3631
  return True
3477
3632
  except ValueError:
@@ -3511,7 +3666,7 @@ def combine_magic(filenames, outfile='measurements.txt', data_model=3, magic_tab
3511
3666
  magic_table))
3512
3667
  return False
3513
3668
  # figure out file type from first of files to join
3514
- with open(filenames[0]) as f:
3669
+ with open(filenames[0], encoding="utf-8") as f:
3515
3670
  file_type = f.readline().split()[1]
3516
3671
  if file_type in ['er_specimens', 'er_samples', 'er_sites',
3517
3672
  'er_locations', 'er_ages', 'pmag_specimens',
@@ -4051,8 +4206,10 @@ def ani_depthplot(spec_file='specimens.txt', samp_file='samples.txt',
4051
4206
  for depth in depths:
4052
4207
  if depth >= dmin and depth < dmax:
4053
4208
  plt.axhline(depth,color='blue',linestyle='dotted')
4054
- if tau_min>.3: tau_min=.3
4055
- if tau_max<.36: tau_max=.36
4209
+ if tau_min>.3:
4210
+ tau_min=.3
4211
+ if tau_max<.36:
4212
+ tau_max=.36
4056
4213
  ax.axis([tau_min, tau_max, dmax, dmin])
4057
4214
  ax.set_xlabel('Eigenvalues')
4058
4215
  if depth_scale == 'core_depth':
@@ -4238,7 +4395,8 @@ def core_depthplot(input_dir_path='.', meas_file='measurements.txt', spc_file=''
4238
4395
  if spc_size:
4239
4396
  spc_size = int(spc_size)
4240
4397
  title = ""
4241
- if location:title=location
4398
+ if location:
4399
+ title=location
4242
4400
 
4243
4401
  # file formats not supported for the moment
4244
4402
  ngr_file = "" # nothing needed, not implemented fully in original script
@@ -4428,7 +4586,7 @@ def core_depthplot(input_dir_path='.', meas_file='measurements.txt', spc_file=''
4428
4586
  if sum_file:
4429
4587
  # os.path.join(input_dir_path, sum_file)
4430
4588
  sum_file = pmag.resolve_file_name(sum_file, input_dir_path)
4431
- with open(sum_file, 'r') as fin:
4589
+ with open(sum_file, 'r', encoding="utf-8") as fin:
4432
4590
  indat = fin.readlines()
4433
4591
  if "Core Summary" in indat[0]:
4434
4592
  headline = 1
@@ -4992,8 +5150,8 @@ def download_magic(infile=None, dir_path='.', input_dir_path='',
4992
5150
  table_dicts=table.to_dict('records')
4993
5151
  outfile = os.path.join(dir_path, sheet + '.txt')
4994
5152
  pmag.magic_write(outfile,table_dicts,sheet)
4995
- except:
4996
- print ('sheet not found ',sheet)
5153
+ except Exception as ex:
5154
+ print (f'sheet not found {sheet}: {ex}')
4997
5155
  return
4998
5156
 
4999
5157
  # try to deal reasonably with unicode errors
@@ -5146,7 +5304,7 @@ def download_magic(infile=None, dir_path='.', input_dir_path='',
5146
5304
  locnum += 1
5147
5305
  try:
5148
5306
  os.mkdir(lpath)
5149
- except:
5307
+ except FileExistsError:
5150
5308
  print('directory ', lpath,
5151
5309
  ' already exists - overwriting everything: {}'.format(overwrite))
5152
5310
  if not overwrite:
@@ -5195,7 +5353,7 @@ def download_magic_from_id(magic_id, directory='.', share_key=""):
5195
5353
  out_path = os.path.join(directory, file_name)
5196
5354
 
5197
5355
  # Define API endpoint
5198
- api = f'https://api.earthref.org/v1/MagIC/data'
5356
+ api = 'https://api.earthref.org/v1/MagIC/data'
5199
5357
  params = {'id': magic_id, 'key': share_key} if share_key else {'id': magic_id}
5200
5358
 
5201
5359
  # Perform the request
@@ -5203,7 +5361,7 @@ def download_magic_from_id(magic_id, directory='.', share_key=""):
5203
5361
 
5204
5362
  if response.status_code == 200 and response.text:
5205
5363
  # Write the content to the file only if the request was successful and the content is not empty
5206
- with open(out_path, 'w') as file:
5364
+ with open(out_path, 'w', encoding="utf-8") as file:
5207
5365
  file.write(response.text)
5208
5366
  print("Download successful. File saved to:", out_path)
5209
5367
  return True, file_name
@@ -5245,7 +5403,7 @@ def download_magic_from_doi(doi):
5245
5403
  for filename in contribution_zip.namelist():
5246
5404
  if (re.match(r'^\d+\/magic_contribution_\d+\.txt', filename)):
5247
5405
  contribution_text = io.TextIOWrapper(contribution_zip.open(filename)).read()
5248
- with open('magic_contribution.txt', 'wt') as fh:
5406
+ with open('magic_contribution.txt', 'wt', encoding="utf-8") as fh:
5249
5407
  fh.write(contribution_text)
5250
5408
  print(filename, 'extracted to magic_contribution.txt', '\n')
5251
5409
  return True, ""
@@ -5373,7 +5531,7 @@ def upload_magic2(concat=0, dir_path='.', data_model=None):
5373
5531
  # (this causes validation errors, elsewise)
5374
5532
  ignore = True
5375
5533
  for rec in Data:
5376
- if ignore == False:
5534
+ if not ignore:
5377
5535
  break
5378
5536
  keys = list(rec.keys())
5379
5537
  exclude_keys = ['er_citation_names', 'er_site_name', 'er_sample_name',
@@ -5772,7 +5930,8 @@ def create_private_contribution(username="",password=""):
5772
5930
  response['url']=create_response.request.url
5773
5931
  response['id']='None'
5774
5932
  response['errors']=create_response.json()['errors'][0]['message']
5775
- except:
5933
+ except Exception as e:
5934
+ print("Error creating private contribution:", e)
5776
5935
  pass
5777
5936
  return response
5778
5937
 
@@ -5821,7 +5980,8 @@ def delete_private_contribution(contribution_id,username="",password=""):
5821
5980
  response['url']=delete_response.request.url
5822
5981
  response['id']='None'
5823
5982
  response['errors']=delete_response.json()['errors'][0]['message']
5824
- except:
5983
+ except Exception as e:
5984
+ print("Error deleting private contribution:", e)
5825
5985
  pass
5826
5986
  return response
5827
5987
 
@@ -5859,7 +6019,7 @@ def upload_to_private_contribution(contribution_id, upload_file,username="",pass
5859
6019
  response['method']='PUT'
5860
6020
  response['upload_file']=upload_file
5861
6021
  try:
5862
- with open(upload_file, 'rb') as f:
6022
+ with open(upload_file, 'rb', encoding="utf-8") as f:
5863
6023
  upload_response = requests.put(api.format('private'),
5864
6024
  params={'id':contribution_id},
5865
6025
  auth=(username, password),
@@ -5873,8 +6033,8 @@ def upload_to_private_contribution(contribution_id, upload_file,username="",pass
5873
6033
  response['status_code']=False
5874
6034
  response['url']=upload_response.request.url
5875
6035
  #response['errors']=upload_response.json()['errors'][0]['message']
5876
- except:
5877
- print ('trouble uploading:')
6036
+ except Exception as e:
6037
+ print ('trouble uploading:', e)
5878
6038
  print (upload_response.json()['errors'])
5879
6039
  return response
5880
6040
 
@@ -5923,7 +6083,8 @@ def validate_private_contribution(contribution_id,username="",password="",verbos
5923
6083
  response['errors']='None'
5924
6084
  errors_dict=json.loads(create_response.text)
5925
6085
  response['validation_results']=errors_dict['validation']['errors']
5926
- if verbose:print('Validated contribution with ID', contribution_id, ':\n', response['validation_results'])
6086
+ if verbose:
6087
+ print('Validated contribution with ID', contribution_id, ':\n', response['validation_results'])
5927
6088
  else:
5928
6089
  response['status_code']=False
5929
6090
  response['url']=create_response.request.url
@@ -5931,8 +6092,8 @@ def validate_private_contribution(contribution_id,username="",password="",verbos
5931
6092
  response['validation_results']='None'
5932
6093
  print('A private contribution with ID', contribution_id,
5933
6094
  ' could not be found in your private workspace for validation\n')
5934
- except:
5935
- print ('trouble validating:')
6095
+ except Exception as e:
6096
+ print ('trouble validating:', e)
5936
6097
  return response
5937
6098
 
5938
6099
 
@@ -5991,7 +6152,7 @@ def specimens_results_magic(infile='pmag_specimens.txt', measfile='magic_measure
5991
6152
  else:
5992
6153
  nositeints = 1
5993
6154
 
5994
- # chagne these all to True/False instead of 1/0
6155
+ # change these all to True/False instead of 1/0
5995
6156
 
5996
6157
  if not skip_intensities:
5997
6158
  # set model lat and
@@ -6016,7 +6177,7 @@ def specimens_results_magic(infile='pmag_specimens.txt', measfile='magic_measure
6016
6177
  ModelLat["sample_lat"] = tmp[1]
6017
6178
  ModelLats.append(ModelLat)
6018
6179
  mlat.clos()
6019
- except:
6180
+ except FileNotFoundError:
6020
6181
  print("use_paleolatitude option requires a valid paleolatitude file")
6021
6182
  else:
6022
6183
  get_model_lat = 0 # skips VADM calculation entirely
@@ -6912,8 +7073,8 @@ def orientation_magic(or_con=1, dec_correction_con=1, dec_correction=0, bed_corr
6912
7073
  ImageRecs.append(map_magic.mapping(
6913
7074
  image_rec, map_magic.image_magic3_2_magic2_map))
6914
7075
  print('image data to be appended to: ', image_file)
6915
- except:
6916
- print('problem with existing file: ',
7076
+ except Exception as e:
7077
+ print('problem', e, ' with existing file: ',
6917
7078
  image_file, ' will create new.')
6918
7079
  #
6919
7080
  # read in file to convert
@@ -7494,8 +7655,8 @@ def azdip_magic(orient_file='orient.txt', samp_file="samples.txt", samp_con="1",
7494
7655
  try:
7495
7656
  SampRecs, file_type = pmag.magic_read(samp_file)
7496
7657
  print("sample data to be appended to: ", samp_file)
7497
- except:
7498
- print('problem with existing samp file: ',
7658
+ except Exception as e:
7659
+ print('problem: ', e, ' with existing samp file',
7499
7660
  samp_file, ' will create new')
7500
7661
  #
7501
7662
  # read in file to convert
@@ -7631,7 +7792,7 @@ class Site(object):
7631
7792
  os.path.join
7632
7793
  self.file_names = []
7633
7794
  for file_name in self.all_file_names:
7634
- if re.match('.*txt', file_name) != None:
7795
+ if re.match('.*txt', file_name) is not None:
7635
7796
  self.file_names.append(file_name)
7636
7797
  for i in self.file_names:
7637
7798
  path_to_open = os.path.join(dir_name, i)
@@ -7651,9 +7812,9 @@ class Site(object):
7651
7812
  #self.er_sites_path = er_sites_path
7652
7813
  if self.data_format == "MagIC":
7653
7814
  self.fits = pd.read_csv(self.data_path, sep="\t", skiprows=1)
7654
- if self.mean_path != None:
7815
+ if self.mean_path is not None:
7655
7816
  self.means = pd.read_csv(self.mean_path, sep="\t", skiprows=1)
7656
- if self.er_sites_path != None:
7817
+ if self.er_sites_path is not None:
7657
7818
  self.location = pd.read_csv(
7658
7819
  self.er_sites_path, sep="\t", skiprows=1)
7659
7820
  else:
@@ -7663,7 +7824,7 @@ class Site(object):
7663
7824
  self.lon = float(self.location.site_lon)
7664
7825
  # the following exception won't be necessary if parse_all_fits is
7665
7826
  # working properly
7666
- if self.mean_path == None:
7827
+ if self.mean_path is None:
7667
7828
  raise Exception(
7668
7829
  'Make fisher means within the demag GUI - functionality for handling this is in progress')
7669
7830
 
@@ -7695,7 +7856,7 @@ class Site(object):
7695
7856
 
7696
7857
  def get_fisher_mean(self, fit_name):
7697
7858
  mean_name = str(fit_name) + "_mean"
7698
- if self.mean_path != None:
7859
+ if self.mean_path is not None:
7699
7860
  self.fisher_dict = {'dec': float(getattr(self, mean_name).site_dec),
7700
7861
  'inc': float(getattr(self, mean_name).site_inc),
7701
7862
  'alpha95': float(getattr(self, mean_name).site_alpha95),
@@ -7757,7 +7918,7 @@ class Site(object):
7757
7918
  float(getattr(self, mean_code).site_alpha95),
7758
7919
  color=self.random_color, marker='s', label=fits + ' mean')
7759
7920
  plt.legend(**kwargs)
7760
- if title != None:
7921
+ if title is not None:
7761
7922
  plt.title(title)
7762
7923
  plt.show()
7763
7924
 
@@ -7777,7 +7938,7 @@ class Site(object):
7777
7938
  float(getattr(self, mean_code).site_inc),
7778
7939
  float(getattr(self, mean_code).site_alpha95), marker='s', label=fit_name + ' mean')
7779
7940
  plt.legend(**kwargs)
7780
- if title != None:
7941
+ if title is not None:
7781
7942
  plt.title(title)
7782
7943
  plt.show()
7783
7944
 
@@ -8026,7 +8187,7 @@ def smooth(x, window_len, window='bartlett'):
8026
8187
  return x
8027
8188
 
8028
8189
  # numpy available windows
8029
- if not window in ['flat', 'hanning', 'hamming', 'bartlett', 'blackman']:
8190
+ if window not in ['flat', 'hanning', 'hamming', 'bartlett', 'blackman']:
8030
8191
  raise ValueError(
8031
8192
  "Window is on of 'flat', 'hanning', 'hamming', 'bartlett', 'blackman'")
8032
8193
 
@@ -8216,8 +8377,8 @@ def curie(path_to_file='.', file_name='', magic=False,
8216
8377
  try:
8217
8378
  plt.figure(num=PLT[key])
8218
8379
  plt.savefig(save_folder + '/' + files[key].replace('/', '-'))
8219
- except:
8220
- print('could not save: ', PLT[key], files[key])
8380
+ except Exception as e:
8381
+ print('could not save: ', PLT[key], files[key], ' because', e)
8221
8382
  print("output file format not supported ")
8222
8383
  plt.show()
8223
8384
 
@@ -8255,8 +8416,8 @@ def chi_magic2(path_to_file='.', file_name='magic_measurements.txt',
8255
8416
  if EXP != "":
8256
8417
  try:
8257
8418
  k = experiment_names.index(EXP)
8258
- except:
8259
- print("Bad experiment name")
8419
+ except Exception as e:
8420
+ print("Bad experiment name:", e)
8260
8421
  sys.exit()
8261
8422
  while k < len(experiment_names):
8262
8423
  e = experiment_names[k]
@@ -8343,8 +8504,8 @@ def chi_magic2(path_to_file='.', file_name='magic_measurements.txt',
8343
8504
  plt.figure(num=PLTS[key])
8344
8505
  plt.savefig(save_folder + '/' +
8345
8506
  files[key].replace('/', '-'))
8346
- except:
8347
- print('could not save: ', PLTS[key], files[key])
8507
+ except Exception as e:
8508
+ print('could not save: ', PLTS[key], files[key], ' because', e)
8348
8509
  print("output file format not supported ")
8349
8510
 
8350
8511
 
@@ -8764,7 +8925,7 @@ def demag_magic(path_to_file='.', file_name='magic_measurements.txt',
8764
8925
  elif plot_by == 'spc':
8765
8926
  plot_key = 'er_specimen_name'
8766
8927
 
8767
- if treat != None:
8928
+ if treat is not None:
8768
8929
  LT = 'LT-' + treat + '-Z' # get lab treatment for plotting
8769
8930
  if LT == 'LT-T-Z':
8770
8931
  units, dmag_key = 'K', 'treatment_temp'
@@ -8815,7 +8976,7 @@ def demag_magic(path_to_file='.', file_name='magic_measurements.txt',
8815
8976
  int_key = IntMeths[0]
8816
8977
  # print plotlist
8817
8978
  if individual is not None:
8818
- if type(individual) == list or type(individual) == tuple:
8979
+ if isinstance(individual, (list, tuple)):
8819
8980
  plotlist = list(individual)
8820
8981
  else:
8821
8982
  plotlist = []
@@ -8979,7 +9140,8 @@ def iplot_hys(fignum, B, M, s):
8979
9140
  poly = polyfit(Baz, Maz, 1)
8980
9141
  Bac = -poly[1]/poly[0] # x intercept
8981
9142
  hpars['hysteresis_bc'] = '%8.3e' % (0.5 * (abs(Bc) + abs(Bac)))
8982
- except:
9143
+ except Exception as e:
9144
+ print("cannot compute Bc:", e)
8983
9145
  hpars['hysteresis_bc'] = '0'
8984
9146
  return hpars, deltaM, Bdm, B, Mnorm, MadjN
8985
9147
 
@@ -9163,8 +9325,8 @@ def hysteresis_magic2(path_to_file='.', hyst_file="rmag_hysteresis.txt",
9163
9325
  ax4.axvline(0, color='k')
9164
9326
  ax4.set_xlabel('B (T)')
9165
9327
  ax4.set_ylabel('M/Mr')
9166
- except:
9167
- print("not doing it")
9328
+ except Exception as e:
9329
+ print("Processing skipped because:", e)
9168
9330
  hpars['hysteresis_bcr'] = '0'
9169
9331
  hpars['magic_method_codes'] = ""
9170
9332
  plt.gcf()
@@ -9214,10 +9376,10 @@ def find_ei(data, nb=1000, save=False, save_folder='.', fmt='svg',
9214
9376
 
9215
9377
  Returns:
9216
9378
  - equal area plot of original directions
9217
- - Elongation/inclination pairs as a function of f, data plus 25 bootstrap samples
9379
+ - Elongation/inclination pairs as a function of f, data plus num_resample_to_plot bootstrap samples
9218
9380
  - Cumulative distribution of bootstrapped optimal inclinations plus uncertainties.
9219
9381
  Estimate from original data set plotted as solid line
9220
- - Orientation of principle direction through unflattening
9382
+ - Orientation of principal direction through unflattening
9221
9383
 
9222
9384
  NOTE:
9223
9385
  If distribution does not have a solution, plot labeled: Pathological. Some bootstrap samples may have
@@ -9227,7 +9389,6 @@ def find_ei(data, nb=1000, save=False, save_folder='.', fmt='svg',
9227
9389
  print("")
9228
9390
  sys.stdout.flush()
9229
9391
 
9230
- upper, lower = int(round(.975 * nb)), int(round(.025 * nb))
9231
9392
  E, I = [], []
9232
9393
  plt.figure(num=1, figsize=(4, 4))
9233
9394
  plot_net(1)
@@ -9278,19 +9439,19 @@ def find_ei(data, nb=1000, save=False, save_folder='.', fmt='svg',
9278
9439
  for i in I:
9279
9440
  Eexp.append(pmag.EI(i))
9280
9441
  plt.plot(I, Eexp, 'k')
9442
+
9443
+ i_lo, i_hi = np.quantile(I, [0.025, 0.975])
9281
9444
  if Inc == 0:
9282
- title = 'Pathological Distribution: ' + \
9283
- '[%7.1f, %7.1f]' % (I[lower], I[upper])
9284
9445
  title = 'Pathological Distribution: '
9285
9446
  else:
9286
- title = '%7.1f [%7.1f, %7.1f]' % (Inc, I[lower], I[upper])
9447
+ title = '%7.1f [%7.1f, %7.1f]' % (Inc, i_lo, i_hi)
9287
9448
  if save:
9288
9449
  plt.savefig(save_folder+'/'+figprefix+'_EI_bootstraps'+'.'+fmt, bbox_inches='tight', dpi=300)
9289
9450
 
9290
9451
  cdf_fig_num = 3
9291
9452
  plt.figure(num=cdf_fig_num, figsize=(4, 4))
9292
9453
  pmagplotlib.plot_cdf(cdf_fig_num, I, r'inclination ($^\circ$)', 'r', title)
9293
- pmagplotlib.plot_vs(cdf_fig_num, [I[lower], I[upper]], 'b', '--')
9454
+ pmagplotlib.plot_vs(cdf_fig_num, [i_lo, i_hi], 'b', '--')
9294
9455
  pmagplotlib.plot_vs(cdf_fig_num, [Inc], 'g', '-')
9295
9456
  pmagplotlib.plot_vs(cdf_fig_num, [Io], 'k', '-')
9296
9457
  if save:
@@ -9323,11 +9484,11 @@ def find_ei(data, nb=1000, save=False, save_folder='.', fmt='svg',
9323
9484
  print("")
9324
9485
  print("The corrected inclination is: " + str(np.round(Inc,2)))
9325
9486
  print("with bootstrapped confidence bounds of: " +
9326
- str(np.round(I[lower],2)) + ' to ' + str(np.round(I[upper],2)))
9487
+ str(np.round(i_lo,2)) + ' to ' + str(np.round(i_hi,2)))
9327
9488
  print("and elongation parameter of: " + str(np.round(Elong,2)))
9328
9489
  print("The flattening factor is: " + str(np.round(flat_f,2)))
9329
- f_lower = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(I[lower]))
9330
- f_upper = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(I[upper]))
9490
+ f_lower = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(i_lo))
9491
+ f_upper = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(i_hi))
9331
9492
  print("with bootstrapped confidence bounds of: " +
9332
9493
  str(np.round(f_lower,2)) + ' to ' + str(np.round(f_upper,2)))
9333
9494
 
@@ -9343,6 +9504,7 @@ def find_ei(data, nb=1000, save=False, save_folder='.', fmt='svg',
9343
9504
  else:
9344
9505
  return
9345
9506
 
9507
+
9346
9508
  def find_ei_kent(data, site_latitude, site_longitude, kent_color='k', nb=1000, save=False, save_folder='.', fmt='svg',
9347
9509
  return_new_dirs=False, return_values=False, figprefix='EI',
9348
9510
  num_resample_to_plot=1000, EI_color='r', resample_EI_color='grey', resample_EI_alpha=0.05,
@@ -9399,7 +9561,6 @@ def find_ei_kent(data, site_latitude, site_longitude, kent_color='k', nb=1000, s
9399
9561
  print("")
9400
9562
  sys.stdout.flush()
9401
9563
 
9402
- upper, lower = int(round(.975 * nb)), int(round(.025 * nb))
9403
9564
  E, I = [], []
9404
9565
 
9405
9566
  ppars = pmag.doprinc(data)
@@ -9438,17 +9599,19 @@ def find_ei_kent(data, site_latitude, site_longitude, kent_color='k', nb=1000, s
9438
9599
  for i in I:
9439
9600
  Eexp.append(pmag.EI(i))
9440
9601
  plt.plot(I, Eexp, 'k')
9602
+
9603
+ i_lo, i_hi = np.quantile(I, [0.025, 0.975])
9441
9604
  if Inc == 0:
9442
9605
  title = 'Pathological Distribution: ' + \
9443
- '[%7.1f, %7.1f]' % (I[lower], I[upper])
9606
+ '[%7.1f, %7.1f]' % (i_lo, i_hi)
9444
9607
  else:
9445
- title = '%7.1f [%7.1f, %7.1f]' % (Inc, I[lower], I[upper])
9608
+ title = '%7.1f [%7.1f, %7.1f]' % (Inc, i_lo, i_hi)
9446
9609
  if save:
9447
9610
  plt.savefig(save_folder+'/'+figprefix+'_bootstraps'+'.'+fmt, bbox_inches='tight', dpi=300)
9448
9611
 
9449
9612
  plt.figure(figsize=(4, 4))
9450
9613
  pmagplotlib.plot_cdf(2, I, r'inclination ($^\circ$)', 'r', title)
9451
- pmagplotlib.plot_vs(2, [I[lower], I[upper]], 'b', '--')
9614
+ pmagplotlib.plot_vs(2, [i_lo, i_hi], 'b', '--')
9452
9615
  pmagplotlib.plot_vs(2, [Inc], 'g', '-')
9453
9616
  pmagplotlib.plot_vs(2, [Io], 'k', '-')
9454
9617
  if save:
@@ -9532,11 +9695,11 @@ def find_ei_kent(data, site_latitude, site_longitude, kent_color='k', nb=1000, s
9532
9695
  print("")
9533
9696
  print("The corrected inclination is: " + str(np.round(Inc,2)))
9534
9697
  print("with bootstrapped confidence bounds of: " +
9535
- str(np.round(I[lower],2)) + ' to ' + str(np.round(I[upper],2)))
9698
+ str(np.round(i_lo,2)) + ' to ' + str(np.round(i_hi,2)))
9536
9699
  print("and elongation parameter of: " + str(np.round(Elong,2)))
9537
9700
  print("The flattening factor is: " + str(np.round(flat_f,2)))
9538
- f_lower = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(I[lower]))
9539
- f_upper = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(I[upper]))
9701
+ f_lower = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(i_lo))
9702
+ f_upper = np.tan(np.deg2rad(Io))/np.tan(np.deg2rad(i_hi))
9540
9703
  print("with bootstrapped confidence bounds of: " +
9541
9704
  str(np.round(f_lower,2)) + ' to ' + str(np.round(f_upper,2)))
9542
9705
  print("")
@@ -9685,6 +9848,194 @@ def find_compilation_kent(plon, plat, A95, slon, slat,
9685
9848
  if len(results) == 1:
9686
9849
  return results[0]
9687
9850
  return tuple(results)
9851
+
9852
+
9853
+ def find_svei_kent(
9854
+ di_block,
9855
+ site_latitude,
9856
+ site_longitude,
9857
+ f_low,
9858
+ f_high,
9859
+ kent_color="k",
9860
+ n=1000,
9861
+ save=False,
9862
+ save_folder=".",
9863
+ figprefix="SVEI",
9864
+ fmt="svg",
9865
+ return_poles=False,
9866
+ return_kent_stats=True,
9867
+ return_paleolats=False,
9868
+ vgp_nb=100,
9869
+ cmap="viridis_r",
9870
+ central_longitude=0,
9871
+ central_latitude=0,
9872
+ ):
9873
+ """
9874
+ Uses a uniform distribution of flattening factors (f) derived from the SVEI analysis
9875
+ of Tauxe et al. (2024) to correct inclination shallowing in sedimentary paleomagnetic
9876
+ data and quantify uncertainty in the resulting mean pole using a Kent distribution.
9877
+
9878
+ The f values are sampled uniformly from a user-defined interval (`f_low`, `f_high`)
9879
+ that should be determined in advance using the `find_flat` function of the SVEI
9880
+ module (Tauxe et al., 2024), which identifies the range of flattening factors
9881
+ consistent with the THG24 geomagnetic field model.
9882
+
9883
+ For each sampled f, the directions are "unflattened" using the tangent transformation,
9884
+ converted to VGPs, and resampled with a Fisher distribution. The resulting distribution
9885
+ of mean poles is summarized with a Kent distribution. Plots of corrected directions,
9886
+ paleolatitudes, and resampled poles are optionally generated and saved.
9887
+
9888
+ Parameters:
9889
+ di_block : list or array-like (a di block)
9890
+ Nested list or array of [dec, inc] or [dec, inc, intensity] directional data.
9891
+ site_latitude : float
9892
+ Latitude of the paleomagnetic sampling site.
9893
+ site_longitude : float
9894
+ Longitude of the paleomagnetic sampling site.
9895
+ f_low : float
9896
+ Lower bound for flattening factor, as determined from SVEI analysis (e.g. 0.51).
9897
+ f_high : float
9898
+ Upper bound for flattening factor, as determined from SVEI analysis (e.g. 0.89).
9899
+ kent_color : str, optional
9900
+ Color of the plotted Kent ellipse (default is 'k').
9901
+ n : int, optional
9902
+ Number of flattening factors to sample (default is 1000).
9903
+ save : bool, optional
9904
+ If True, saves figures to the specified folder (default is False).
9905
+ save_folder : str, optional
9906
+ Directory to save plots (default is current directory).
9907
+ figprefix : str, optional
9908
+ Prefix for saved figure filenames (default is 'SVEI').
9909
+ fmt : str, optional
9910
+ Format for saved figures (e.g., 'svg', 'png') (default is 'svg').
9911
+ return_poles : bool, optional
9912
+ If True, returns the resampled mean pole positions (default is False).
9913
+ return_kent_stats : bool, optional
9914
+ If True, returns the Kent distribution statistics (default is True).
9915
+ return_paleolats : bool, optional
9916
+ If True, returns the distribution of calculated paleolatitudes (default is False).
9917
+ vgp_nb : int, optional
9918
+ Number of Fisher resamples per unflattened mean pole (default is 100).
9919
+ cmap : str, optional
9920
+ Colormap used to indicate f value in directional plots (default is 'viridis_r').
9921
+ central_longitude : float, optional
9922
+ Central longitude of the orthographic projection (default is 0).
9923
+ central_latitude : float, optional
9924
+ Central latitude of the orthographic projection (default is 0).
9925
+
9926
+ Returns:
9927
+ Depending on flags, returns one or more of:
9928
+ - kent_stats : dict
9929
+ Kent distribution parameters summarizing the resampled mean poles.
9930
+ - mean_lons, mean_lats : list of float
9931
+ Longitudes and latitudes of resampled mean poles.
9932
+ - paleolats : list of float
9933
+ Paleolatitudes calculated from resampled mean poles.
9934
+
9935
+ Notes:
9936
+ This function assumes the user has previously run the SVEI `find_flat` function
9937
+ (Tauxe et al., 2024) to determine the range of flattening factors (`f_low`, `f_high`)
9938
+ that are consistent with the THG24 GGP model for the dataset under consideration.
9939
+ """
9940
+ f_resample = np.random.uniform(f_low,f_high,n)
9941
+
9942
+ plt.figure(figsize=(4,4))
9943
+ plot_net()
9944
+ cNorm = colors.Normalize(vmin=min(f_resample), vmax=max(f_resample))
9945
+ f_scalarMap = cm.ScalarMappable(norm=cNorm, cmap=cmap)
9946
+
9947
+ di_lists = unpack_di_block(di_block)
9948
+ if len(di_lists) == 3:
9949
+ decs, incs, intensity = di_lists
9950
+ if len(di_lists) == 2:
9951
+ decs, incs = di_lists
9952
+
9953
+ mean_lons = []
9954
+ mean_lats = []
9955
+ paleolats=[]
9956
+
9957
+ VGPs = pmag.dia_vgp(np.array([decs, incs, np.zeros(len(decs)), np.full(len(decs), site_latitude), np.full(len(decs),site_longitude)]).T)
9958
+ VGPs_lons, VGPs_lats = VGPs[0], VGPs[1]
9959
+ uncorrected_pole = fisher_mean(VGPs_lons, VGPs_lats)
9960
+ plon = uncorrected_pole['dec']
9961
+ plat = uncorrected_pole['inc']
9962
+ A95 = uncorrected_pole['alpha95']
9963
+
9964
+ for f in f_resample:
9965
+ unsquish_incs = unsquish(incs, f)
9966
+ #unsquish_mean_dir=fisher_mean(dec=decs,inc=unsquish_incs)
9967
+ unsquish_VGPs = pmag.dia_vgp(np.array([decs, unsquish_incs, np.zeros(len(decs)), np.full(len(decs), site_latitude), np.full(len(decs),site_longitude)]).T)
9968
+ unsquish_lons, unsquish_lats = unsquish_VGPs[0], unsquish_VGPs[1]
9969
+ unsquish_VGPs_mean = fisher_mean(unsquish_lons, unsquish_lats)
9970
+ resampled_lons, resampled_lats = fisher_mean_resample(alpha95=unsquish_VGPs_mean['alpha95'], n=vgp_nb,
9971
+ dec=unsquish_VGPs_mean['dec'], inc=unsquish_VGPs_mean['inc'], di_block=0)
9972
+ resampled_poles = np.column_stack((resampled_lons, resampled_lats))
9973
+ N = resampled_poles.shape[0] # Number of rows
9974
+ site_array = np.tile([site_longitude,site_latitude], (N, 1))
9975
+ mean_lons.extend(resampled_lons)
9976
+ mean_lats.extend(resampled_lats)
9977
+ plats = 90 - pmag.angle(resampled_poles, site_array)
9978
+ paleolats.extend(plats.tolist())
9979
+ rgba = f_scalarMap.to_rgba(f)
9980
+ hex_color = colors.rgb2hex(rgba)
9981
+ plot_di(decs, unsquish_incs, color = hex_color, alpha=0.02)
9982
+ cb = plt.colorbar(f_scalarMap, ax=plt.gca(),orientation='horizontal',fraction=0.05, pad=0.05)
9983
+ cb.ax.tick_params(labelsize=14)
9984
+ cb.ax.set_title(label='$f$ values', fontsize=14)
9985
+
9986
+ if save:
9987
+ plt.savefig(save_folder+'/'+figprefix+'_corrected_directions'+'.'+fmt, bbox_inches='tight', dpi=300)
9988
+
9989
+ plat_med=np.median(paleolats)
9990
+ plat_lower, plat_upper = np.round(np.percentile(paleolats, [2.5, 97.5]), 1)
9991
+ mu, std = stats.norm.fit(paleolats)
9992
+ x = np.linspace(min(paleolats), max(paleolats), 100)
9993
+ p = stats.norm.pdf(x, mu, std)
9994
+
9995
+ plt.figure(figsize=(4, 4))
9996
+ plt.hist(paleolats, bins=15, alpha=0.6, density=1)
9997
+ plt.plot(x, p, 'k', linewidth=1)
9998
+
9999
+ plt.axvline(x=plat_lower, color = 'gray', ls='--')
10000
+ plt.axvline(x=plat_upper, color = 'gray', ls='--')
10001
+
10002
+ plt.title('%7.1f [%7.1f, %7.1f]' % (plat_med, plat_lower, plat_upper) + '\nFit result: mu='+str(round(mu,2))+'\nstd='+str(round(std, 2)), fontsize=14)
10003
+ plt.xticks(fontsize=14)
10004
+ plt.yticks(fontsize=14)
10005
+ plt.xlabel(r'paleolatitude ($^\circ$)', fontsize=16)
10006
+ plt.ylabel('density', fontsize=16)
10007
+
10008
+ if save:
10009
+ plt.savefig(save_folder+'/'+figprefix+'_paleolatitudes'+'.'+fmt, bbox_inches='tight', dpi=300)
10010
+
10011
+ plt.show()
10012
+
10013
+ # plot resampled mean poles
10014
+ m = make_orthographic_map(central_longitude, central_latitude)
10015
+ plot_vgp(m, mean_lons, mean_lats, color='lightgrey', edge='none', markersize=5, alpha=0.02)
10016
+
10017
+ kent_stats = kent_distribution_95(dec=mean_lons,inc=mean_lats)
10018
+ print_kent_mean(kent_stats)
10019
+ plot_pole_ellipse(m,kent_stats, color=kent_color,label="Kent mean pole")
10020
+ plot_pole(m, plon, plat, A95, label="uncorrected pole position", color="C0")
10021
+ plt.legend(loc=8, fontsize=14)
10022
+
10023
+ if save:
10024
+ plt.savefig(save_folder+'/'+figprefix+'_paleolatitudes'+'.'+fmt, bbox_inches='tight', dpi=300)
10025
+
10026
+ plt.show()
10027
+
10028
+ results = []
10029
+ if return_kent_stats:
10030
+ results.append(kent_stats)
10031
+ if return_poles:
10032
+ results.extend([mean_lons, mean_lats])
10033
+ if return_paleolats:
10034
+ results.append(paleolats)
10035
+
10036
+ if len(results) == 1:
10037
+ return results[0]
10038
+ return tuple(results)
9688
10039
 
9689
10040
 
9690
10041
  def pole_comparison_H2019(lon_1,lat_1,k_1,r_1,lon_2,lat_2,k_2,r_2):
@@ -9799,7 +10150,7 @@ def plate_rate_mc(pole1_plon, pole1_plat, pole1_kappa, pole1_N, pole1_age, pole1
9799
10150
  100000)/((pole1_age - pole2_age) * 1000000)
9800
10151
  print("The rate of paleolatitudinal change implied by the poles pairs in cm/yr is:" + str(rate))
9801
10152
 
9802
- if random_seed != None:
10153
+ if random_seed is not None:
9803
10154
  np.random.seed(random_seed)
9804
10155
  pole1_MCages = np.random.normal(pole1_age, pole1_age_error, samplesize)
9805
10156
  pole2_MCages = np.random.normal(pole2_age, pole2_age_error, samplesize)
@@ -10001,9 +10352,9 @@ def zeq(path_to_file='.', file='', data="", units='U', calculation_type="DE-BFL"
10001
10352
  if make_plots:
10002
10353
  ZED = {}
10003
10354
  ZED['eqarea'], ZED['zijd'], ZED['demag'] = 2, 1, 3
10004
- plt.figure(num=ZED['zijd'], figsize=(5, 5));
10005
- plt.figure(num=ZED['eqarea'], figsize=(5, 5));
10006
- plt.figure(num=ZED['demag'], figsize=(5, 5));
10355
+ plt.figure(num=ZED['zijd'], figsize=(5, 5))
10356
+ plt.figure(num=ZED['eqarea'], figsize=(5, 5))
10357
+ plt.figure(num=ZED['demag'], figsize=(5, 5))
10007
10358
  #
10008
10359
  #
10009
10360
  pmagplotlib.plot_zed(ZED, datablock, angle, s, SIunits) # plot the data
@@ -10026,12 +10377,13 @@ def zeq(path_to_file='.', file='', data="", units='U', calculation_type="DE-BFL"
10026
10377
  recnum += 1
10027
10378
  #pmagplotlib.draw_figs(ZED)
10028
10379
  if begin_pca != "" and end_pca != "" and calculation_type != "":
10029
- if make_plots:pmagplotlib.plot_zed(ZED, datablock, angle, s,
10030
- SIunits) # plot the data
10380
+ if make_plots:
10381
+ pmagplotlib.plot_zed(ZED, datablock, angle, s, SIunits) # plot the data
10031
10382
  # get best-fit direction/great circle
10032
10383
  mpars = pmag.domean(datablock, begin_pca, end_pca, calculation_type)
10033
10384
  # plot the best-fit direction/great circle
10034
- if make_plots:pmagplotlib.plot_dir(ZED, mpars, datablock, angle)
10385
+ if make_plots:
10386
+ pmagplotlib.plot_dir(ZED, mpars, datablock, angle)
10035
10387
  print('Specimen, calc_type, N, min, max, MAD, dec, inc')
10036
10388
  if units == 'mT':
10037
10389
  print('%s %s %i %6.2f %6.2f %6.1f %7.1f %7.1f' % (s, calculation_type,
@@ -10616,20 +10968,18 @@ def aniso_magic_old(infile='specimens.txt', samp_file='samples.txt', site_file='
10616
10968
  PDir.append(float(di[0]))
10617
10969
  PDir.append(float(di[1]))
10618
10970
  con = 0
10619
- except:
10971
+ except Exception as e:
10620
10972
  cnt += 1
10621
10973
  if cnt < 10:
10622
10974
  print(
10623
10975
  " enter the dec and inc of the pole on one line ")
10624
10976
  else:
10625
- print(
10626
- "ummm - you are doing something wrong - i give up")
10977
+ print("Error parsing input, please reconsider: ", e)
10627
10978
  sys.exit()
10628
10979
  if set_env.IS_WIN:
10629
10980
  # if windows, must re-draw everything
10630
10981
  pmagplotlib.plot_anis(ANIS, Ss, iboot, ihext, ivec, ipar,
10631
10982
  title, iplot, comp, vec, Dir, num_bootstraps)
10632
-
10633
10983
  pmagplotlib.plot_circ(ANIS['data'], PDir, 90., 'g')
10634
10984
  pmagplotlib.plot_circ(ANIS['conf'], PDir, 90., 'g')
10635
10985
  if verbose and not plots:
@@ -10647,7 +10997,8 @@ def aniso_magic_old(infile='specimens.txt', samp_file='samples.txt', site_file='
10647
10997
  try:
10648
10998
  k = sitelist.index(site)
10649
10999
  keepon = 0
10650
- except:
11000
+ except Exception as e:
11001
+ print("Error finding site:", e)
10651
11002
  tmplist = []
10652
11003
  for qq in range(len(sitelist)):
10653
11004
  if site in sitelist[qq]:
@@ -10865,7 +11216,7 @@ def aniso_magic(infile='specimens.txt', samp_file='samples.txt', site_file='site
10865
11216
  ivec=ivec, iboot=iboot, vec=vec, num_bootstraps=num_bootstraps)
10866
11217
  try:
10867
11218
  locs = cs_df['location'].unique()
10868
- except:
11219
+ except KeyError:
10869
11220
  locs = [""]
10870
11221
  locs = "-".join(locs)
10871
11222
  files = {key: locs + "_" + crd + "_aniso-" + key + ".png" for (key, value) in figs.items()}
@@ -10931,12 +11282,18 @@ def plot_dmag(data="", title="", fignum=1, norm=1,dmag_key='treat_ac_field',inte
10931
11282
  data = data[data[int_key].notnull()] # fish out all data with this key
10932
11283
  units = "U" # this sets the units for plotting to undefined
10933
11284
  if not dmag_key:
10934
- if 'treat_temp' in data.columns: units = "K" # kelvin
10935
- elif 'treat_ac_field' in data.columns: units = "T" # tesla
10936
- elif 'treat_mw_energy' in data.columns: units = "J" # joules
10937
- if dmag_key=='treat_temp': units='K'
10938
- if dmag_key=='treat_ac_field': units='T'
10939
- if dmag_key=='treat_mw_energy': units='J'
11285
+ if 'treat_temp' in data.columns:
11286
+ units = "K" # kelvin
11287
+ elif 'treat_ac_field' in data.columns:
11288
+ units = "T" # tesla
11289
+ elif 'treat_mw_energy' in data.columns:
11290
+ units = "J" # joules
11291
+ if dmag_key=='treat_temp':
11292
+ units='K'
11293
+ if dmag_key=='treat_ac_field':
11294
+ units='T'
11295
+ if dmag_key=='treat_mw_energy':
11296
+ units='J'
10940
11297
  spcs = data.specimen.unique() # get a list of all specimens in DataFrame data
10941
11298
  if len(spcs)==0:
10942
11299
  print('no data for plotting')
@@ -11323,7 +11680,7 @@ def aarm_magic_dm2(infile, dir_path=".", input_dir_path="",
11323
11680
  RmagSpecRec["er_location_name"] = data[0].get(
11324
11681
  "er_location_name", "")
11325
11682
  RmagSpecRec["er_specimen_name"] = data[0]["er_specimen_name"]
11326
- if not "er_sample_name" in RmagSpecRec:
11683
+ if "er_sample_name" not in RmagSpecRec:
11327
11684
  RmagSpecRec["er_sample_name"] = data[0].get(
11328
11685
  "er_sample_name", "")
11329
11686
  RmagSpecRec["er_site_name"] = data[0].get("er_site_name", "")
@@ -11707,7 +12064,8 @@ def aarm_magic(meas_file, dir_path=".", input_dir_path="",
11707
12064
  old_spec_df=pd.DataFrame.from_dict(old_spec_recs)
11708
12065
  # check format of output specimens table
11709
12066
  for col in aniso_spec_columns:
11710
- if col not in old_spec_df.columns:old_spec_df[col]=""
12067
+ if col not in old_spec_df.columns:
12068
+ old_spec_df[col]=""
11711
12069
  df=pd.DataFrame.from_dict(meas_data)
11712
12070
  df=df[df['method_codes'].str.contains('LP-AN-ARM')]
11713
12071
  if not len(df):
@@ -11764,13 +12122,13 @@ def aarm_magic(meas_file, dir_path=".", input_dir_path="",
11764
12122
  new_spec_df['aniso_type']='AARM'
11765
12123
  new_spec_df['software_packages']=pmag.get_version()
11766
12124
  new_spec_df['citations']='This study'
11767
- if old_specs and 'aniso_s' in old_spec_df.columns and old_spec_df.loc[(old_spec_df['specimen']==spec)&
11768
- (old_spec_df['aniso_type']=='AARM')].empty==False: # there is a previous record of AARM for this specimen
12125
+ if old_specs and 'aniso_s' in old_spec_df.columns and not old_spec_df.loc[(old_spec_df['specimen']==spec)&
12126
+ (old_spec_df['aniso_type']=='AARM')].empty: # there is a previous record of AARM for this specimen
11769
12127
  print ('replacing existing AARM data for ',spec)
11770
12128
  for col in ['aniso_ftest','aniso_ftest12','aniso_ftest23','aniso_p','aniso_s','aniso_s_n_measurements','aniso_s_sigma','aniso_type','aniso_v1','aniso_v2','aniso_v3','aniso_ftest_quality','aniso_tilt_correction','description','software_packages','citations']:
11771
12129
  old_spec_df.loc[(old_spec_df['specimen']==spec)&(old_spec_df['aniso_type']=='AARM')&
11772
12130
  (old_spec_df[col].notnull()),col]=new_spec_df[col].values[0] # replace existing AARM data for this specimen
11773
- elif old_specs and 'aniso_s' in old_spec_df.columns and old_spec_df.loc[old_spec_df['specimen']==spec].empty==False: # there is a no previous record of AARM for this specimen
12131
+ elif old_specs and 'aniso_s' in old_spec_df.columns and not old_spec_df.loc[old_spec_df['specimen']==spec].empty: # there is a no previous record of AARM for this specimen
11774
12132
  print ('adding AARM data for ',spec)
11775
12133
  for col in ['aniso_ftest','aniso_ftest12','aniso_ftest23','aniso_p','aniso_s','aniso_s_n_measurements','aniso_s_sigma','aniso_type','aniso_v1','aniso_v2','aniso_v3','aniso_ftest_quality','aniso_tilt_correction','description','software_packages','citations']:
11776
12134
  old_spec_df.loc[old_spec_df['specimen']==spec,col]=new_spec_df[col].values[0] # add AARM data for this specimen
@@ -11898,7 +12256,7 @@ def atrm_magic_dm2(meas_file, dir_path=".", input_dir_path="",
11898
12256
  RmagSpecRec["er_location_name"] = data[0].get(
11899
12257
  "er_location_name", "")
11900
12258
  RmagSpecRec["er_specimen_name"] = data[0]["er_specimen_name"]
11901
- if not "er_sample_name" in RmagSpecRec:
12259
+ if "er_sample_name" not in RmagSpecRec:
11902
12260
  RmagSpecRec["er_sample_name"] = data[0].get(
11903
12261
  "er_sample_name", "")
11904
12262
  RmagSpecRec["er_site_name"] = data[0].get("er_site_name", "")
@@ -12302,7 +12660,8 @@ def atrm_magic(meas_file, dir_path=".", input_dir_path="",
12302
12660
  old_spec_df=pd.DataFrame.from_dict(old_spec_recs)
12303
12661
  # check format of output specimens table
12304
12662
  for col in aniso_spec_columns:
12305
- if col not in old_spec_df.columns:old_spec_df[col]=""
12663
+ if col not in old_spec_df.columns:
12664
+ old_spec_df[col]=""
12306
12665
  df=pd.DataFrame.from_dict(meas_data)
12307
12666
  df=df[df['method_codes'].str.contains('LP-AN-TRM')]
12308
12667
  if not len(df):
@@ -12366,13 +12725,13 @@ def atrm_magic(meas_file, dir_path=".", input_dir_path="",
12366
12725
  new_spec_df['software_packages']=pmag.get_version()
12367
12726
  new_spec_df['citations']='This study'
12368
12727
  new_spec_df['aniso_type']='ATRM'
12369
- if old_specs and 'aniso_s' in old_spec_df.columns and old_spec_df.loc[(old_spec_df['specimen']==spec)&
12370
- (old_spec_df['aniso_type']=='ATRM')].empty==False: # there is a previous record of ATRM for this specimen
12728
+ if old_specs and 'aniso_s' in old_spec_df.columns and not old_spec_df.loc[(old_spec_df['specimen']==spec)&
12729
+ (old_spec_df['aniso_type']=='ATRM')].empty: # there is a previous record of ATRM for this specimen
12371
12730
  print ('replacing existing ATRM data for ',spec)
12372
12731
  for col in ['aniso_alt','aniso_ftest','aniso_ftest12','aniso_ftest23','aniso_p','aniso_s','aniso_s_n_measurements','aniso_s_sigma','aniso_type','aniso_v1','aniso_v2','aniso_v3','aniso_ftest_quality','aniso_tilt_correction','description','method_codes','software_packages','citations']:
12373
12732
  old_spec_df.loc[(old_spec_df['specimen']==spec)&(old_spec_df['aniso_type']=='ATRM')&
12374
12733
  (old_spec_df[col].notnull()),col]=new_spec_df[col].values[0] # replace existing ATRM data for this specimen
12375
- elif old_specs and 'aniso_s' in old_spec_df.columns and old_spec_df.loc[old_spec_df['specimen']==spec].empty==False: # there is a no previous record of ATRM for this specimen
12734
+ elif old_specs and 'aniso_s' in old_spec_df.columns and not old_spec_df.loc[old_spec_df['specimen']==spec].empty: # there is a no previous record of ATRM for this specimen
12376
12735
  print ('adding ATRM data for ',spec)
12377
12736
  for col in ['aniso_alt','aniso_ftest','aniso_ftest12','aniso_ftest23','aniso_p','aniso_s','aniso_s_n_measurements','aniso_s_sigma','aniso_type','aniso_v1','aniso_v2','aniso_v3','aniso_ftest_quality','aniso_tilt_correction','description','method_codes','software_packages','citations']:
12378
12737
  old_spec_df.loc[old_spec_df['specimen']==spec,col]=new_spec_df[col].values[0] # add ATRM data for this specimen
@@ -12601,7 +12960,7 @@ def zeq_magic(meas_file='measurements.txt', spec_file='',crd='s', dir_path = "."
12601
12960
  try:
12602
12961
  this_spec_meas_df['magn_moment'] = this_spec_meas_df['magn_moment'].astype(float)
12603
12962
  this_spec_meas_df['treat_temp'] = this_spec_meas_df['treat_temp'].astype(float)
12604
- except:
12963
+ except (ValueError, KeyError):
12605
12964
  print('-W- There are malformed or missing data for specimen {}, skipping'.format(spec))
12606
12965
  return False, False
12607
12966
  datablock = this_spec_meas_df[['treat_temp', 'dir_dec', 'dir_inc',
@@ -12621,7 +12980,7 @@ def zeq_magic(meas_file='measurements.txt', spec_file='',crd='s', dir_path = "."
12621
12980
  try:
12622
12981
  this_spec_meas_df['magn_moment'] = this_spec_meas_df['magn_moment'].astype(float)
12623
12982
  this_spec_meas_df['treat_ac_field'] = this_spec_meas_df['treat_ac_field'].astype(float)
12624
- except:
12983
+ except Exception:
12625
12984
  print('-W- There are malformed or missing data for specimen {}, skipping'.format(spec))
12626
12985
  return False, False
12627
12986
  datablock = this_spec_meas_df[['treat_ac_field', 'dir_dec', 'dir_inc',
@@ -13125,7 +13484,8 @@ def hysteresis_magic(output_dir_path=".", input_dir_path="", spec_file="specimen
13125
13484
  elif n_specs != "all":
13126
13485
  try:
13127
13486
  sids = sids[:n_specs]
13128
- except:
13487
+ except Exception as e:
13488
+ print("Error selecting n_specs:", e)
13129
13489
  pass
13130
13490
  cnt = 0
13131
13491
  while k < len(sids):
@@ -13298,7 +13658,8 @@ def hysteresis_magic(output_dir_path=".", input_dir_path="", spec_file="specimen
13298
13658
  try:
13299
13659
  k = sids.index(specimen)
13300
13660
  keepon = 0
13301
- except:
13661
+ except Exception as e:
13662
+ print("Error:", e)
13302
13663
  tmplist = []
13303
13664
  for qq in range(len(sids)):
13304
13665
  if specimen in sids[qq]:
@@ -14345,7 +14706,8 @@ def polemap_magic(loc_file="locations.txt", dir_path=".", interactive=False, crd
14345
14706
  pmagplotlib.plot_map(FIG['map'], [90.], [0.], Opts)
14346
14707
 
14347
14708
  #Opts['pltgrid'] = -1
14348
- if proj=='merc':Opts['pltgrid']=1
14709
+ if proj=='merc':
14710
+ Opts['pltgrid']=1
14349
14711
  Opts['sym'] = sym
14350
14712
  Opts['symsize'] = symsize
14351
14713
  if len(dates) > 0:
@@ -15658,3 +16020,191 @@ def rand_correlation_prob(sec_var, delta1, delta2, alpha, trials=10000, print_re
15658
16020
  print ('The probability (average of P1 and P2) that directions represent random samples of the geomagnetic field is: {0:5.3f}'.format((prand1+prand2)/2))
15659
16021
 
15660
16022
  return rand_prob
16023
+
16024
+
16025
+ def MADcrit(N,alpha,niter=int(1E8)):
16026
+ """
16027
+ Estimate the MAD critical value at a given significance level to
16028
+ test a null hypothesis of random demagnetization behavior.
16029
+ function from Heslop and Roberts, 2025, Establishing a Statistical Framework for Assessing Paleomagnetic Data Quality: A Significance Test Based on Maximum Angular Deviation doi: https://doi.org/10.1029/ 2025JB031417
16030
+
16031
+ Parameters
16032
+ ----------
16033
+ N : integer
16034
+ Number of demagnetization points in the unanchored PCA fit.
16035
+ alpha : float
16036
+ Array of significance values for which the critical MAD values should be estimated.
16037
+ niter: integer
16038
+ Number of Monte Carlo iterations (default is 1E8).
16039
+ Because α values of interest are in the lower tail of the MAD distribution, it is important to ensure that B is sufficiently large to sample the distribution extremes accurately.
16040
+ Returns
16041
+ -------
16042
+ float
16043
+ Array of estimated critical MAD values.
16044
+
16045
+ Examples
16046
+ --------
16047
+ >>> N = 10
16048
+ >>> alpha = np.array([0.0001,0.001,0.01,0.05,0.1])
16049
+ >>> MADcrit(N, alpha)
16050
+ [19.5, 23.1, 27.6, 31.7, 33.9]
16051
+ """
16052
+
16053
+ df = N-1 #degrees of freedom of the Wishart distribution
16054
+ X = stats.wishart.rvs(df, scale=np.ones(3),size=niter) #Generate samples from the Wishart distribution
16055
+ X = np.sort(np.linalg.eig(X)[0],axis=1) #find and sort the eigenvalues of each case
16056
+ #find the MAD values and estimate critical values based on the percentiles corresponding to alpha
16057
+ MAD_prc = np.nanpercentile(np.arctan(np.sqrt((X[:,0]+X[:,1])/X[:,2])),alpha*100)
16058
+
16059
+ return np.rad2deg(MAD_prc) #return critical values in degrees
16060
+
16061
+ def MADcrit_95_filter(N, MAD):
16062
+ '''
16063
+ A convenience function to quickly filter for MADcrit values at the 95% significance level.
16064
+ '''
16065
+ if N < 3:
16066
+ raise ValueError("N must be greater than 2 for MADcrit_95_filter")
16067
+ if N > 50:
16068
+ raise ValueError("N must be less than 51 for MADcrit_95_filter")
16069
+ Ns = np.arange(3, 51)
16070
+ MADcrit_95 = np.array([6.5, 14.8, 20.13, 23.8, 26.54, 28.64, 30.34,
16071
+ 31.74, 32.93, 33.96, 34.86, 35.63,
16072
+ 36.34, 36.95, 37.53, 38.04, 38.51,
16073
+ 38.94, 39.34, 39.72, 40.08, 40.39,
16074
+ 40.7, 40.99, 41.25, 41.51, 41.75,
16075
+ 41.98, 42.18, 42.4, 42.6, 42.77,
16076
+ 42.96, 43.13, 43.29, 43.44, 43.59,
16077
+ 43.74, 43.87, 44.01, 44.14, 44.26,
16078
+ 44.38, 44.5, 44.61, 44.72, 44.83,
16079
+ 44.92])
16080
+ MADcrit_table = pd.Series(MADcrit_95, index=Ns, name='MADcrit_95')
16081
+ # compare a given MAD to the critical value for the given N
16082
+ MADcrit = MADcrit_table.loc[N]
16083
+
16084
+ if MAD < MADcrit:
16085
+ return True
16086
+ else:
16087
+ return False
16088
+
16089
+ def mad_to_a95(mad, n_steps, anchored=False):
16090
+ """
16091
+ Convert MAD (or aMAD) to α95 using the scaling factors of
16092
+ Khokhlov & Hulot (2016), Table 8.
16093
+
16094
+ Parameters
16095
+ ----------
16096
+ mad : float or array-like
16097
+ MAD (for standard PCA) or aMAD (for anchored PCA), in degrees.
16098
+ n_steps : int or array-like of int
16099
+ Number of vector measurements (demagnetization steps) used in the line
16100
+ fit. Can be a scalar (applied to all MAD values) or an array with the
16101
+ same shape as `mad` to allow different n_steps for different specimens.
16102
+ Table 8 of Khokhlov & Hulot (2016) is defined for 3 <= n_steps <= 16.
16103
+ For n_steps > 16, the large-N asymptotic scaling factor is applied.
16104
+ anchored : bool, default False
16105
+ If False, use CMAD factors for standard (unanchored) PCA MAD.
16106
+ If True, use CaMAD factors for anchored PCA aMAD.
16107
+ If an array of bool is provided, it must have the same shape as `mad`.
16108
+
16109
+ Returns
16110
+ -------
16111
+ a95 : float or array-like
16112
+ Estimated α95 in degrees, with the same shape as `mad`.
16113
+
16114
+ Notes
16115
+ -----
16116
+ For n_steps < 3, this function raises a ValueError because Table 8 is not
16117
+ defined for fewer than three measurements. For n_steps > 16, the asymptotic
16118
+ large-N scaling factor tabulated at n = 100 in Khokhlov & Hulot (2016) is used.
16119
+
16120
+ Examples
16121
+ --------
16122
+ Convert a MAD value of 4.2 determined from an anchored line fit with 7 steps
16123
+ to α95:
16124
+ >>> ipmag.mad_to_a95(4.2, n_steps=7, anchored=True)
16125
+ >>> 18.102
16126
+
16127
+ Convert arrays of MAD values with different n_steps for each specimen:
16128
+ >>> mads = np.array([2.0, 3.0, 4.0])
16129
+ >>> steps = np.array([5, 7, 10])
16130
+ >>> ipmag.mad_to_a95(mads, n_steps=steps, anchored=False)
16131
+ array([ 6.36 , 8.13 , 10.16 ])
16132
+ """
16133
+
16134
+ # Table 8 from Khokhlov & Hulot (2016)
16135
+ CMAD = {
16136
+ 3: 7.69,
16137
+ 4: 3.90,
16138
+ 5: 3.18,
16139
+ 6: 2.88,
16140
+ 7: 2.71,
16141
+ 8: 2.63,
16142
+ 9: 2.57,
16143
+ 10: 2.54,
16144
+ 11: 2.51,
16145
+ 12: 2.48,
16146
+ 13: 2.46,
16147
+ 14: 2.44,
16148
+ 15: 2.43,
16149
+ 16: 2.43,
16150
+ 100: 2.37,
16151
+ }
16152
+
16153
+ CaMAD = {
16154
+ 3: 6.00,
16155
+ 4: 5.00,
16156
+ 5: 4.63,
16157
+ 6: 4.43,
16158
+ 7: 4.31,
16159
+ 8: 4.24,
16160
+ 9: 4.18,
16161
+ 10: 4.14,
16162
+ 11: 4.12,
16163
+ 12: 4.11,
16164
+ 13: 4.08,
16165
+ 14: 4.08,
16166
+ 15: 4.06,
16167
+ 16: 4.05,
16168
+ 100: 3.99,
16169
+ }
16170
+
16171
+ if np.isscalar(n_steps):
16172
+ table = CaMAD if anchored else CMAD
16173
+
16174
+ n = int(n_steps)
16175
+ if n < 3:
16176
+ raise ValueError(
16177
+ f"n_steps={n} is too small; Table 8 is defined for n>=3.")
16178
+ elif n > 16:
16179
+ factor = table[100] # large-N asymptotic factor
16180
+ else:
16181
+ factor = table[n]
16182
+ # works for scalars, numpy arrays, pandas Series, etc.
16183
+ return mad * factor
16184
+
16185
+ else:
16186
+ # Array-like n_steps → elementwise mapping, same shape as mad
16187
+ mad_arr = np.asarray(mad, dtype=float)
16188
+ n_arr = np.asarray(n_steps)
16189
+ anchored = np.asarray(anchored)
16190
+
16191
+ if mad_arr.shape != n_arr.shape:
16192
+ raise ValueError(
16193
+ "When n_steps is array-like, it must have the same shape as mad."
16194
+ )
16195
+
16196
+ def _factor_for_n(n, anchored):
16197
+ n = int(n)
16198
+ table = CaMAD if anchored else CMAD
16199
+ if n < 3:
16200
+ raise ValueError(
16201
+ f"n_steps={n} is too small; Table 8 is defined for n>=3."
16202
+ )
16203
+ if n > 16:
16204
+ return table[100]
16205
+ return table[n]
16206
+
16207
+ vec_factor = np.vectorize(_factor_for_n, otypes=[float])
16208
+ factors = vec_factor(n_arr, anchored)
16209
+
16210
+ return mad_arr * factors