pmagpy-cli 4.2.124__tar.gz → 4.3.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/MANIFEST.in +1 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/PKG-INFO +29 -13
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/__init__.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/leastsq_jacobian.py +7 -9
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_IZZI_MD.py +3 -5
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_additivity_check_statistics.py +1 -3
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_arai_plot_statistics.py +25 -27
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_curvature.py +27 -29
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_directional_statistics.py +10 -13
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_leastsquares.py +3 -6
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_ptrm_statistics.py +15 -20
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/lib_tail_check_statistics.py +3 -5
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/lib/new_lib_curvature.py +5 -9
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/new_lj_thellier_gui_spd.py +38 -42
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/spd.py +1 -5
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/test_instance.py +0 -2
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/__init__.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/test_additivity_check_statistics.py +1 -3
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/test_arai_plot_statistics.py +5 -8
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/test_directional_statistics.py +2 -4
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/test_ptrm_statistics.py +8 -11
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/test_tail_check_statistics.py +3 -5
- pmagpy_cli-4.3.13/command_line_setup.py +72 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/demag_interpretation_editor.py +3 -3
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/magic_grid3.py +1 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/thellier_gui_dialogs.py +1 -1
- pmagpy_cli-4.3.13/pmagpy/field_models/igrf14coeffs.txt +199 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/mapping/__init__.py +0 -1
- pmagpy_cli-4.3.13/pmagpy/test/conftest.py +20 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_igrf.py +269 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_common_mean.py +142 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_correlation.py +50 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_data_handling.py +135 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_ei.py +182 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_field_tests.py +301 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_plotting.py +270 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_random.py +187 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_statistics.py +187 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_vgp.py +242 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_anisotropy.py +145 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_data_handling.py +175 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_directions.py +214 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_domean.py +226 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_field_models.py +89 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_io.py +130 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_kent_bingham.py +133 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_projection.py +129 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_random.py +83 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_statistics.py +242 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_transforms.py +276 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_utilities.py +251 -0
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_vgp.py +172 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_cli.egg-info/PKG-INFO +29 -13
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_cli.egg-info/SOURCES.txt +25 -3
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_cli.egg-info/entry_points.txt +0 -1
- pmagpy_cli-4.3.13/pmagpy_cli.egg-info/requires.txt +9 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_tests/examples/my_project_with_errors/something.py +0 -1
- pmagpy_cli-4.3.13/programs/__init__.py +38 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/agm_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/angle.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/ani_depthplot2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/apwp.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/azdip_magic.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/b_vdm.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/bootams.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/cart_dir.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/chartmaker.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/common_mean.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/__init__.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/template_magic.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/_2g_bin_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/bgc_magic2.py +2 -5
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/cit_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/generic_magic2.py +1 -4
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/huji_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/huji_magic_new2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/iodp_dscr_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/iodp_jr6_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/iodp_srm_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/jr6_jr6_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/jr6_txt_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/ldeo_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/pmd_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/sio_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/tdt_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/utrecht_magic2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/convert2unix.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/core_depthplot.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/curie.py +6 -9
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/demag_gui.py +317 -239
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/di_eq.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/di_geo.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/di_rot.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/di_tilt.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dia_vgp.py +13 -39
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dipole_pinc.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dipole_plat.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dir_cart.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dir_redo.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/eigs_s.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/eq_di.py +1 -4
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/find_ei.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/fisher.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/fishqq.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/fishrot.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/forc_diagram.py +39 -30
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/gaussian.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/gobing.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/gofish.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/gokent.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/goprinc.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/igrf.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/incfish.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/k15_s.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/lowes.py +1 -4
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/lowrie.py +6 -15
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/lsq_redo.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/magic_select.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/mk_redo.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/pca.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plot_2cdfs.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plot_cdf.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plot_geomagia.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plot_magmap.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plot_map_pts.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plotxy.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/pmag_results_extract.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/pmm_redo.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/pt_rot.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/qqplot.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/qqunf.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/quick_hyst2.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/remanence_anisotropy_magic.py +8 -11
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/replace_ac_specimens.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/revtest.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/revtest_mm1990.py +2 -5
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/s_eigs.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/s_geo.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/s_hext.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/s_tilt.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/scalc.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/site_edit_magic.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/sort_specimens.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/squish.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/stats.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/strip_magic.py +3 -3
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/sundec.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/thellier_gui.py +4 -46
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/tk03.py +1 -2
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/uniform.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/unsquish.py +1 -4
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/vdm_b.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/vector_mean.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/vgp_di.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/watsons_f.py +1 -4
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/watsons_v.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/zeq.py +0 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/zeq_magic2.py +0 -1
- pmagpy_cli-4.3.13/setup.py +121 -0
- pmagpy-cli-4.2.124/command_line_setup.py +0 -180
- pmagpy-cli-4.2.124/pmagpy/test/test_fisher_sample.py +0 -20
- pmagpy-cli-4.2.124/pmagpy/test/test_igrf.py +0 -14
- pmagpy-cli-4.2.124/programs/__init__.py +0 -60
- pmagpy-cli-4.2.124/programs/install_etopo.py +0 -51
- pmagpy-cli-4.2.124/programs/plot_magmap_basemap.py +0 -137
- pmagpy-cli-4.2.124/setup.py +0 -214
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/README.md +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/__init__.py +1 -1
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/run_tests.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/known_values.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/test_all.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/SPD/tests/test_curvature.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/bin/ani_depthplot_anaconda +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/bin/core_depthplot_anaconda +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/bin/demag_gui_anaconda +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/bin/magic_gui2_anaconda +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/bin/magic_gui_anaconda +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/bin/pmag_gui_anaconda +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/bin/thellier_gui_anaconda +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/ErMagicBuilder.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/demag_dialogs.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/drop_down_menus3.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/grid_frame3.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicAgeHelp.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicBuilderHelp.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicHeadersHelp.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicLocationHelp.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicSampleHelp.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicSampleHelp1.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicSiteHelp.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/ErMagicSpecimenHelp.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/help_files/magic_gui.html +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/magic_grid2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/pmag_er_magic_dialogs.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/pmag_gui_dialogs.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/pmag_gui_menu3.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/pmag_menu_dialogs.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/pmag_widgets.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/thellier_consistency_test.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/thellier_gui_lib.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/dialogs/thellier_interpreter.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/help_files/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/help_files/demag_gui_help.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/help_files/demag_interpretation_editor_help.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/locator/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/locator/resource.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/MagIC-data-model.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/age_methods.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/all_codes.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/code_types.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/controlled_vocabularies2.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/controlled_vocabularies_August_9_2018.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/controlled_vocabularies_December_10_2018.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/controlled_vocabularies_February_6_2017.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/controlled_vocabularies_October_3_2019.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/data_model.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/er_methods.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/method_codes.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/pmag_methods.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/suggested_vocabularies_August_9_2018.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/suggested_vocabularies_December_10_2018.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/data_model/suggested_vocabularies_February_6_2017.json +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/mapping/map_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/mapping/maps.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/test/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy/test/test_rotations.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_cli.egg-info/dependency_links.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_cli.egg-info/top_level.txt +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_tests/examples/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_tests/examples/empty_dir/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_tests/examples/my_project/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/pmagpy_tests/examples/my_project_with_errors/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/aarm_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/ani_depthplot.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/aniso_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/aniso_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/atrm_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/chi_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/chi_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/combine_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/_2g_bin_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/agm_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/bgc_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/cit_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/generic_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/huji_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/huji_sample_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/iodp_dscr_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/iodp_jr6_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/iodp_samples_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/iodp_srm_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/irm_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/jr6_jr6_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/jr6_txt_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/k15_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/kly4s_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/ldeo_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/livdb_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/magic_geomagia.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/mst_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/pmd_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/run_multi_samples.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/s_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/sio_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/squidm_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/sufar4_asc_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/tdt_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/utrecht_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts/xpeem_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/conversion_scripts2/__init__.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dayplot_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dayplot_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/di_vgp.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dmag_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/dmag_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/download_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/eqarea.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/eqarea_ell.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/eqarea_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/eqarea_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/foldtest.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/foldtest_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/foldtest_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/grab_magic_key.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/histplot.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/hysteresis_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/hysteresis_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/images/PmagPy.ico +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/images/PmagPy_16x16.ico +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/images/PmagPy_32x32.ico +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/images/pmagpy_logo.ico +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/irm_unmix.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/irmaq_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/lnp_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/lowrie_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/magic_gui.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/make_magic_plots.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/microwave_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/move_data_files.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/mst_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/orientation_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plotdi_a.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/plotdi_e.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/pmag_gui.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/polemap_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/program_envs.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/quick_hyst.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/remove_bad_chars.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/revtest_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/scalc_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/thellier_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/thellier_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/thumbnails.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/trmaq_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/upload_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/vgpmap_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/vgpmap_magic2.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/programs/zeq_magic.py +0 -0
- {pmagpy-cli-4.2.124 → pmagpy_cli-4.3.13}/setup.cfg +0 -0
|
@@ -1,22 +1,40 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pmagpy-cli
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.3.13
|
|
4
4
|
Summary: Analysis tools for paleo/rock magnetic data
|
|
5
5
|
Home-page: https://github.com/PmagPy/PmagPy
|
|
6
6
|
Author: PmagPy team
|
|
7
7
|
Author-email: ltauxe@ucsd.edu
|
|
8
|
-
License: BSD-3
|
|
8
|
+
License: BSD-3-Clause
|
|
9
9
|
Keywords: geology paleomagnetism
|
|
10
|
-
Platform: UNKNOWN
|
|
11
10
|
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: License :: OSI Approved ::
|
|
13
|
-
Classifier: Programming Language :: Python :: 2
|
|
14
|
-
Classifier: Programming Language :: Python :: 2.6
|
|
15
|
-
Classifier: Programming Language :: Python :: 2.7
|
|
11
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
16
12
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.
|
|
19
|
-
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Requires-Python: >=3.9
|
|
19
|
+
Requires-Dist: pmagpy
|
|
20
|
+
Requires-Dist: wxPython
|
|
21
|
+
Requires-Dist: PyQt5
|
|
22
|
+
Requires-Dist: lmfit
|
|
23
|
+
Requires-Dist: pillow
|
|
24
|
+
Requires-Dist: appdirs
|
|
25
|
+
Provides-Extra: maps
|
|
26
|
+
Requires-Dist: pmagpy[maps]; extra == "maps"
|
|
27
|
+
Dynamic: author
|
|
28
|
+
Dynamic: author-email
|
|
29
|
+
Dynamic: classifier
|
|
30
|
+
Dynamic: description
|
|
31
|
+
Dynamic: home-page
|
|
32
|
+
Dynamic: keywords
|
|
33
|
+
Dynamic: license
|
|
34
|
+
Dynamic: provides-extra
|
|
35
|
+
Dynamic: requires-dist
|
|
36
|
+
Dynamic: requires-python
|
|
37
|
+
Dynamic: summary
|
|
20
38
|
|
|
21
39
|
|
|
22
40
|
|
|
@@ -167,5 +185,3 @@ This code and the PmagPy cookbook (http://earthref.org/PmagPy/cookbook) are comp
|
|
|
167
185
|
|
|
168
186
|
|
|
169
187
|
This code can be freely used, modified, and shared. It is licensed under a 3-clause BSD license. See [license.txt](https://github.com/PmagPy/PmagPy/blob/master/license.txt) for details.
|
|
170
|
-
|
|
171
|
-
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
# Author: Lori Jonestrask (mintblue87@gmail.com) .
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
from __future__ import absolute_import
|
|
10
9
|
__all__ = ['lib_additivity_check_statistics', 'lib_curvature', 'lib_ptrm_statistics', 'lib_directional_statistics', 'lib_IZZI_MD', 'lib_arai_plot_statistics', 'lib_tail_check_statistics']
|
|
11
10
|
|
|
12
11
|
#print "initializing in /lib"
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
from __future__ import division
|
|
2
1
|
from builtins import map
|
|
3
2
|
from builtins import range
|
|
4
|
-
from past.utils import old_div
|
|
5
3
|
import numpy
|
|
6
4
|
from scipy import optimize
|
|
7
5
|
|
|
@@ -14,9 +12,9 @@ Y = [ 34., 10., 6., -14., 27., -10.]
|
|
|
14
12
|
def AraiCurvature(x=X, y=Y):
|
|
15
13
|
# ensure all values are floats, then norm them by largest value
|
|
16
14
|
x = numpy.array(list(map(float, x)))
|
|
17
|
-
x =
|
|
15
|
+
x = x / max(x)
|
|
18
16
|
y = numpy.array(list(map(float, y)))
|
|
19
|
-
y =
|
|
17
|
+
y = y /max(y)
|
|
20
18
|
# if all x or all y values are identical, there is no curvature (it is a line)
|
|
21
19
|
if len(set(x)) == 1 or len(set(y)) == 1:
|
|
22
20
|
return -999., None, None, -999.
|
|
@@ -24,9 +22,9 @@ def AraiCurvature(x=X, y=Y):
|
|
|
24
22
|
#print "best_a, best_b, r", best_a, best_b, r
|
|
25
23
|
SSE = get_SSE(best_a, best_b, r, x, y)
|
|
26
24
|
if best_a <= numpy.mean(x) and best_b <= numpy.mean(y):
|
|
27
|
-
k =
|
|
25
|
+
k = -1. / r
|
|
28
26
|
else:
|
|
29
|
-
k =
|
|
27
|
+
k = 1. / r
|
|
30
28
|
return k, best_a, best_b, SSE
|
|
31
29
|
|
|
32
30
|
def do_circlefit(x, y):
|
|
@@ -50,7 +48,7 @@ def do_circlefit(x, y):
|
|
|
50
48
|
Svvv = sum(v**3)
|
|
51
49
|
# Solving the linear system
|
|
52
50
|
A = numpy.array([ [ Suu, Suv ], [Suv, Svv]])
|
|
53
|
-
B =
|
|
51
|
+
B = numpy.array([ Suuu + Suvv, Svvv + Suuv ]) /2.0
|
|
54
52
|
uc, vc = numpy.linalg.solve(A, B)
|
|
55
53
|
|
|
56
54
|
xc_1 = x_m + uc
|
|
@@ -80,8 +78,8 @@ def do_circlefit(x, y):
|
|
|
80
78
|
df2b_dc = numpy.empty((len(c), x.size))
|
|
81
79
|
|
|
82
80
|
Ri = calc_R(xc, yc)
|
|
83
|
-
df2b_dc[0] =
|
|
84
|
-
df2b_dc[1] =
|
|
81
|
+
df2b_dc[0] = (xc - x) / Ri # dR/dxc
|
|
82
|
+
df2b_dc[1] = (yc - y) / Ri # dR/dyc
|
|
85
83
|
df2b_dc = df2b_dc - df2b_dc.mean(axis=1)[:, numpy.newaxis]
|
|
86
84
|
|
|
87
85
|
return df2b_dc
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
|
|
3
|
-
from __future__ import division
|
|
4
3
|
from builtins import range
|
|
5
|
-
from past.utils import old_div
|
|
6
4
|
from numpy import *
|
|
7
5
|
|
|
8
6
|
|
|
@@ -12,7 +10,7 @@ def rect_area(three_points):
|
|
|
12
10
|
xB,yB=three_points[1][0],three_points[1][1]
|
|
13
11
|
xC,yC=three_points[2][0],three_points[2][1]
|
|
14
12
|
#area=abs((xB*yA-xA*yB)+(xC*yB-xB*yC)+(xA*yC-xC*yA))/2
|
|
15
|
-
area=
|
|
13
|
+
area = abs((xB*yA-xA*yB)+(xC*yB-xB*yC)+(xA*yC-xC*yA)) / 2
|
|
16
14
|
return area
|
|
17
15
|
|
|
18
16
|
|
|
@@ -74,7 +72,7 @@ def get_IZZI_MD(X_arai,Y_arai,Step,start,end):
|
|
|
74
72
|
C=array([X_IZZI_MD[i+2],Y_IZZI_MD[i+2]])
|
|
75
73
|
area=rect_area([A,B,C])
|
|
76
74
|
|
|
77
|
-
slope_A_C=
|
|
75
|
+
slope_A_C = (C[1]-A[1]) / (C[0]-A[0])
|
|
78
76
|
intercept_A_C=A[1]-(slope_A_C*A[0])
|
|
79
77
|
#print 'slope_A_C,intercept_A_C', slope_A_C,intercept_A_C
|
|
80
78
|
#raw_input()
|
|
@@ -93,5 +91,5 @@ def get_IZZI_MD(X_arai,Y_arai,Step,start,end):
|
|
|
93
91
|
|
|
94
92
|
if total_ZI_curve == 0:
|
|
95
93
|
return 0
|
|
96
|
-
IZZI_MD=
|
|
94
|
+
IZZI_MD = total_Z_area / total_ZI_curve
|
|
97
95
|
return(IZZI_MD)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
|
|
3
|
-
from __future__ import division
|
|
4
|
-
from past.utils import old_div
|
|
5
3
|
import numpy
|
|
6
4
|
|
|
7
5
|
|
|
@@ -25,7 +23,7 @@ def get_delta_AC(n_add, add_checks, x_int):
|
|
|
25
23
|
#print "x_int", x_int
|
|
26
24
|
#print "(abs(incl_add_checks)", (abs(incl_add_checks))
|
|
27
25
|
#print "( max(abs(incl_add_checks) ) ", ( max(abs(incl_add_checks) ) )
|
|
28
|
-
delta_AC = (
|
|
26
|
+
delta_AC = (max(abs(incl_add_checks)) / abs(x_int)) * 100.
|
|
29
27
|
#print delta_AC
|
|
30
28
|
else:
|
|
31
29
|
incl_add_checks = 0
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
#! /usr/bin/env python
|
|
2
2
|
|
|
3
3
|
#from scipy import *
|
|
4
|
-
from __future__ import division
|
|
5
4
|
from builtins import range
|
|
6
|
-
from past.utils import old_div
|
|
7
5
|
import numpy
|
|
8
6
|
|
|
9
7
|
|
|
@@ -17,7 +15,7 @@ def York_Regression(x_segment, y_segment, x_mean, y_mean, n, lab_dc_field, steps
|
|
|
17
15
|
"""
|
|
18
16
|
x_err = x_segment - x_mean
|
|
19
17
|
y_err = y_segment - y_mean
|
|
20
|
-
york_b = -1* numpy.sqrt(
|
|
18
|
+
york_b = -1* numpy.sqrt(sum(y_err**2) / sum(x_err**2)) # averaged slope
|
|
21
19
|
|
|
22
20
|
b = numpy.sign(sum(x_err * y_err)) * numpy.std(y_segment, ddof=1)/numpy.std(x_segment, ddof=1) # ddof is degrees of freedom
|
|
23
21
|
if b == 0:
|
|
@@ -25,33 +23,33 @@ def York_Regression(x_segment, y_segment, x_mean, y_mean, n, lab_dc_field, steps
|
|
|
25
23
|
else:
|
|
26
24
|
york_b = b
|
|
27
25
|
|
|
28
|
-
york_sigma= numpy.sqrt(
|
|
26
|
+
york_sigma= numpy.sqrt((2 * sum(y_err**2) - 2*york_b* sum(x_err*y_err)) / ((n-2) * sum(x_err**2)))
|
|
29
27
|
if york_sigma == 0: # prevent divide by zero
|
|
30
28
|
york_sigma = 1e-10
|
|
31
|
-
beta_Coe = abs(
|
|
29
|
+
beta_Coe = abs(york_sigma / york_b)
|
|
32
30
|
# y_T is the intercept of the extrepolated line
|
|
33
31
|
# through the center of mass (see figure 7 in Coe (1978))
|
|
34
32
|
y_T = y_mean - (york_b* x_mean)
|
|
35
|
-
x_T =
|
|
33
|
+
x_T = (-1 * y_T) / york_b # x intercept
|
|
36
34
|
# # calculate the extrarpolated data points for f and fvds
|
|
37
|
-
x_tag =
|
|
35
|
+
x_tag = (y_segment - y_T ) / york_b # returns array of y points minus the y intercept, divided by slope
|
|
38
36
|
y_tag = york_b*x_segment + y_T
|
|
39
37
|
|
|
40
38
|
# intersect of the dashed square and the horizontal dahed line next to delta-y-5 in figure 7, Coe (1978)
|
|
41
|
-
x_prime =
|
|
42
|
-
y_prime =
|
|
39
|
+
x_prime = (x_segment+x_tag) / 2.
|
|
40
|
+
y_prime = (y_segment+y_tag) / 2.
|
|
43
41
|
|
|
44
42
|
delta_x_prime = abs(max(x_prime) - min(x_prime)) # TRM length of best fit line
|
|
45
43
|
delta_y_prime = abs(max(y_prime) - min(y_prime)) # NRM length of best fit line
|
|
46
44
|
|
|
47
|
-
f_Coe =
|
|
45
|
+
f_Coe = delta_y_prime / abs(y_T)
|
|
48
46
|
if delta_y_prime:
|
|
49
|
-
g_Coe = 1 - (
|
|
47
|
+
g_Coe = 1 - (sum((y_prime[:-1]-y_prime[1:])**2) / (delta_y_prime ** 2)) # gap factor
|
|
50
48
|
else:
|
|
51
49
|
g_Coe = float('nan')
|
|
52
|
-
g_lim =
|
|
50
|
+
g_lim = (float(n) - 2) / (float(n) - 1)
|
|
53
51
|
q_Coe = abs(york_b)*f_Coe*g_Coe/york_sigma
|
|
54
|
-
w_Coe =
|
|
52
|
+
w_Coe = q_Coe / numpy.sqrt(n - 2)
|
|
55
53
|
count_IZ = steps_Arai.count('IZ')
|
|
56
54
|
count_ZI = steps_Arai.count('ZI')
|
|
57
55
|
B_lab = lab_dc_field * 1e6
|
|
@@ -76,11 +74,11 @@ def get_vds(zdata, delta_y_prime, start, end):
|
|
|
76
74
|
last_vector = numpy.linalg.norm(zdata[-1])
|
|
77
75
|
vector_diffs.append(last_vector)
|
|
78
76
|
vds = sum(vector_diffs)
|
|
79
|
-
f_vds = abs(
|
|
77
|
+
f_vds = abs(delta_y_prime / vds) # fvds varies, because of delta_y_prime, but vds does not.
|
|
80
78
|
vector_diffs_segment = vector_diffs[start:end]
|
|
81
79
|
partial_vds = sum(vector_diffs_segment)
|
|
82
80
|
max_diff = max(vector_diffs_segment)
|
|
83
|
-
GAP_MAX =
|
|
81
|
+
GAP_MAX = max_diff / partial_vds #
|
|
84
82
|
return {'max_diff': max_diff, 'vector_diffs': vector_diffs, 'specimen_vds': vds,
|
|
85
83
|
'specimen_fvds': f_vds, 'vector_diffs_segment': vector_diffs_segment,
|
|
86
84
|
'partial_vds': partial_vds, 'GAP-MAX': GAP_MAX}
|
|
@@ -99,10 +97,10 @@ def get_SCAT_box(slope, x_mean, y_mean, beta_threshold = .1):
|
|
|
99
97
|
# get lines that pass through mass center, with opposite slope
|
|
100
98
|
slope1 = slope + (2* slope_err_threshold)
|
|
101
99
|
line1_y_int = y - (slope1 * x)
|
|
102
|
-
line1_x_int = -1 * (
|
|
100
|
+
line1_x_int = -1 * (line1_y_int / slope1)
|
|
103
101
|
slope2 = slope - (2 * slope_err_threshold)
|
|
104
102
|
line2_y_int = y - (slope2 * x)
|
|
105
|
-
line2_x_int = -1 * (
|
|
103
|
+
line2_x_int = -1 * (line2_y_int / slope2)
|
|
106
104
|
# l1_y_int and l2_x_int form the bottom line of the box
|
|
107
105
|
# l2_y_int and l1_x_int form the top line of the box
|
|
108
106
|
# print "_diagonal line1:", (0, line2_y_int), (line2_x_int, 0), (x, y)
|
|
@@ -114,13 +112,13 @@ def get_SCAT_box(slope, x_mean, y_mean, beta_threshold = .1):
|
|
|
114
112
|
x_max = high_bound[1][0]#
|
|
115
113
|
y_max = high_bound[0][1]
|
|
116
114
|
# function for low_bound
|
|
117
|
-
low_slope =
|
|
115
|
+
low_slope = (low_bound[0][1] - low_bound[1][1]) / (low_bound[0][0] - low_bound[1][0]) #
|
|
118
116
|
low_y_int = low_bound[0][1]
|
|
119
117
|
def low_bound(x):
|
|
120
118
|
y = low_slope * x + low_y_int
|
|
121
119
|
return y
|
|
122
120
|
# function for high_bound
|
|
123
|
-
high_slope =
|
|
121
|
+
high_slope = (high_bound[0][1] - high_bound[1][1]) / (high_bound[0][0] - high_bound[1][0]) # y_0-y_1/x_0-x_1
|
|
124
122
|
high_y_int = high_bound[0][1]
|
|
125
123
|
def high_bound(x):
|
|
126
124
|
y = high_slope * x + high_y_int
|
|
@@ -226,7 +224,7 @@ def get_FRAC(vds, vector_diffs_segment):
|
|
|
226
224
|
raise ValueError('vector diffs should not be negative')
|
|
227
225
|
if vds == 0:
|
|
228
226
|
raise ValueError('attempting to divide by zero. vds should be a positive number')
|
|
229
|
-
FRAC =
|
|
227
|
+
FRAC = sum(vector_diffs_segment) / vds
|
|
230
228
|
return FRAC
|
|
231
229
|
|
|
232
230
|
def get_R_corr2(x_avg, y_avg, x_segment, y_segment): #
|
|
@@ -238,7 +236,7 @@ def get_R_corr2(x_avg, y_avg, x_segment, y_segment): #
|
|
|
238
236
|
yd = y_segment - y_avg # detrend y_segment
|
|
239
237
|
if sum(xd**2) * sum(yd**2) == 0: # prevent divide by zero error
|
|
240
238
|
return float('nan')
|
|
241
|
-
rcorr =
|
|
239
|
+
rcorr = sum((xd * yd))**2 / (sum(xd**2) * sum(yd**2))
|
|
242
240
|
return rcorr
|
|
243
241
|
|
|
244
242
|
def get_R_det2(y_segment, y_avg, y_prime):
|
|
@@ -249,7 +247,7 @@ def get_R_det2(y_segment, y_avg, y_prime):
|
|
|
249
247
|
numerator = sum((numpy.array(y_segment) - numpy.array(y_prime))**2)
|
|
250
248
|
denominator = sum((numpy.array(y_segment) - y_avg)**2)
|
|
251
249
|
if denominator: # prevent divide by zero error
|
|
252
|
-
R_det2 = 1 - (
|
|
250
|
+
R_det2 = 1 - (numerator / denominator)
|
|
253
251
|
return R_det2
|
|
254
252
|
else:
|
|
255
253
|
return float('nan')
|
|
@@ -259,7 +257,7 @@ def get_b_wiggle(x, y, y_int):
|
|
|
259
257
|
if x == 0:
|
|
260
258
|
b_wiggle = 0
|
|
261
259
|
else:
|
|
262
|
-
b_wiggle =
|
|
260
|
+
b_wiggle = (y_int - y) / x
|
|
263
261
|
return b_wiggle
|
|
264
262
|
|
|
265
263
|
def get_Z(x_segment, y_segment, x_int, y_int, slope):
|
|
@@ -271,7 +269,7 @@ def get_Z(x_segment, y_segment, x_int, y_int, slope):
|
|
|
271
269
|
first_time = True
|
|
272
270
|
for num, x in enumerate(x_segment):
|
|
273
271
|
b_wiggle = get_b_wiggle(x, y_segment[num], y_int)
|
|
274
|
-
z =
|
|
272
|
+
z = (x * abs(b_wiggle - abs(slope)) ) / abs(x_int)
|
|
275
273
|
Z += z
|
|
276
274
|
first_time = False
|
|
277
275
|
return Z
|
|
@@ -285,10 +283,10 @@ def get_Zstar(x_segment, y_segment, x_int, y_int, slope, n):
|
|
|
285
283
|
first_time = True
|
|
286
284
|
for num, x in enumerate(x_segment):
|
|
287
285
|
b_wiggle = get_b_wiggle(x, y_segment[num], y_int)
|
|
288
|
-
result = 100 * (
|
|
286
|
+
result = 100 * ((x * abs(b_wiggle - abs(slope)) ) / abs(y_int))
|
|
289
287
|
total += result
|
|
290
288
|
first_time = False
|
|
291
|
-
Zstar = (
|
|
289
|
+
Zstar = (1. / (n - 1.)) * total
|
|
292
290
|
return Zstar
|
|
293
291
|
|
|
294
292
|
|
|
@@ -303,7 +301,7 @@ def get_normed_points(point_array, norm): # good to go
|
|
|
303
301
|
#floated_array = []
|
|
304
302
|
#for p in point_array: # need to make sure each point is a float
|
|
305
303
|
#floated_array.append(float(p))
|
|
306
|
-
points =
|
|
304
|
+
points = numpy.array(point_array) / norm
|
|
307
305
|
return points
|
|
308
306
|
|
|
309
307
|
def get_xy_array(x_segment, y_segment):
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
|
|
3
|
-
from __future__ import division
|
|
4
3
|
from builtins import zip
|
|
5
4
|
from builtins import map
|
|
6
5
|
from builtins import range
|
|
7
|
-
from past.utils import old_div
|
|
8
6
|
import numpy
|
|
9
7
|
from numpy import *
|
|
10
8
|
|
|
@@ -29,9 +27,9 @@ def AraiCurvature(x=x,y=y):
|
|
|
29
27
|
"""
|
|
30
28
|
# makes sure all values are floats, then norms them by largest value
|
|
31
29
|
X = numpy.array(list(map(float, x)))
|
|
32
|
-
X =
|
|
30
|
+
X = X / max(X)
|
|
33
31
|
Y = numpy.array(list(map(float, y)))
|
|
34
|
-
Y =
|
|
32
|
+
Y = Y / max(Y)
|
|
35
33
|
XY = numpy.array(list(zip(X, Y)))
|
|
36
34
|
|
|
37
35
|
#Provide the intitial estimate
|
|
@@ -47,9 +45,9 @@ def AraiCurvature(x=x,y=y):
|
|
|
47
45
|
best_r = E2[2]
|
|
48
46
|
|
|
49
47
|
if best_a <= numpy.mean(X) and best_b <= numpy.mean(Y):
|
|
50
|
-
k =
|
|
48
|
+
k = -1. / best_r
|
|
51
49
|
else:
|
|
52
|
-
k =
|
|
50
|
+
k = 1. / best_r
|
|
53
51
|
|
|
54
52
|
SSE = get_SSE(best_a, best_b, best_r, X, Y)
|
|
55
53
|
return k, best_a, best_b, SSE
|
|
@@ -73,12 +71,12 @@ def TaubinSVD(XY):
|
|
|
73
71
|
centroid = [numpy.mean(XY[:,0]), numpy.mean(XY[:,1])]
|
|
74
72
|
Z = X * X + Y * Y
|
|
75
73
|
Zmean = numpy.mean(Z)
|
|
76
|
-
Z0 =
|
|
74
|
+
Z0 = (Z - Zmean) / (2. * numpy.sqrt(Zmean))
|
|
77
75
|
ZXY = numpy.array([Z0, X, Y]).T
|
|
78
76
|
U, S, V = numpy.linalg.svd(ZXY, full_matrices=False) #
|
|
79
77
|
V = V.transpose()
|
|
80
78
|
A = V[:,2]
|
|
81
|
-
A[0] =
|
|
79
|
+
A[0] = A[0] / (2. * numpy.sqrt(Zmean))
|
|
82
80
|
A = numpy.concatenate([A, [(-1. * Zmean * A[0])]], axis=0)
|
|
83
81
|
a, b = (-1 * A[1:3]) / A[0] / 2 + centroid
|
|
84
82
|
r = numpy.sqrt(A[1]*A[1]+A[2]*A[2]-4*A[0]*A[3])/abs(A[0])/2;
|
|
@@ -97,7 +95,7 @@ def VarCircle(XY, Par): # must have at least 4 sets of xy points or else divisi
|
|
|
97
95
|
Dx = XY[:,0] - Par[0]
|
|
98
96
|
Dy = XY[:,1] - Par[1]
|
|
99
97
|
D = numpy.sqrt(Dx * Dx + Dy * Dy) - Par[2]
|
|
100
|
-
result =
|
|
98
|
+
result = numpy.dot(D, D) / (n-3)
|
|
101
99
|
return result
|
|
102
100
|
|
|
103
101
|
|
|
@@ -126,10 +124,10 @@ def LMA(XY,ParIni):
|
|
|
126
124
|
|
|
127
125
|
anew = ParIni[0] + Xshift
|
|
128
126
|
bnew = ParIni[1] + Yshift
|
|
129
|
-
Anew =
|
|
127
|
+
Anew = 1. / (2.*ParIni[2])
|
|
130
128
|
aabb = anew*anew + bnew*bnew
|
|
131
129
|
Fnew = (aabb - ParIni[2]*ParIni[2])*Anew
|
|
132
|
-
Tnew = numpy.arccos(
|
|
130
|
+
Tnew = numpy.arccos(-anew / numpy.sqrt(aabb))
|
|
133
131
|
if bnew > 0:
|
|
134
132
|
Tnew = 2*numpy.pi - Tnew
|
|
135
133
|
VarNew = VarCircle(XY,ParIni)
|
|
@@ -147,7 +145,7 @@ def LMA(XY,ParIni):
|
|
|
147
145
|
H = numpy.sqrt(1+4*Aold*Fold);
|
|
148
146
|
aold = -H*numpy.cos(Told)/(Aold+Aold) - Xshift;
|
|
149
147
|
bold = -H*numpy.sin(Told)/(Aold+Aold) - Yshift;
|
|
150
|
-
Rold =
|
|
148
|
+
Rold = 1 / abs(Aold+Aold);
|
|
151
149
|
|
|
152
150
|
DD = 1 + 4*Aold*Fold;
|
|
153
151
|
D = numpy.sqrt(DD);
|
|
@@ -195,20 +193,20 @@ def LMA(XY,ParIni):
|
|
|
195
193
|
|
|
196
194
|
# Cholesly decomposition
|
|
197
195
|
|
|
198
|
-
G11 = numpy.sqrt(H11 + VarLambda)
|
|
199
|
-
G12 =
|
|
200
|
-
G13 =
|
|
196
|
+
G11 = numpy.sqrt(H11 + VarLambda)
|
|
197
|
+
G12 = H12 / G11
|
|
198
|
+
G13 = H13 / G11
|
|
201
199
|
G22 = numpy.sqrt(H22 + VarLambda - G12*G12);
|
|
202
|
-
G23 =
|
|
200
|
+
G23 = (H23 - G12*G13) / G22;
|
|
203
201
|
G33 = numpy.sqrt(H33 + VarLambda - G13*G13 - G23*G23);
|
|
204
202
|
|
|
205
|
-
D1 =
|
|
206
|
-
D2 =
|
|
207
|
-
D3 =
|
|
203
|
+
D1 = F1 / G11
|
|
204
|
+
D2 = (F2 - G12*D1) / G22
|
|
205
|
+
D3 = (F3 - G13*D1 - G23*D2) / G33
|
|
208
206
|
|
|
209
|
-
dT =
|
|
210
|
-
dF =
|
|
211
|
-
dA =
|
|
207
|
+
dT = D3 / G33
|
|
208
|
+
dF = (D2 - G23*dT) / G22
|
|
209
|
+
dA = (D1 - G12*dF - G13*dT) / G11
|
|
212
210
|
|
|
213
211
|
# updating the parameters
|
|
214
212
|
|
|
@@ -223,12 +221,12 @@ def LMA(XY,ParIni):
|
|
|
223
221
|
H = numpy.sqrt(1+4*Aold*Fold);
|
|
224
222
|
aTemp = -H*numpy.cos(Told)/(Aold+Aold) + dX;
|
|
225
223
|
bTemp = -H*numpy.sin(Told)/(Aold+Aold) + dY;
|
|
226
|
-
rTemp =
|
|
224
|
+
rTemp = 1 / abs(Aold+Aold)
|
|
227
225
|
|
|
228
|
-
Anew =
|
|
226
|
+
Anew = 1 / (rTemp + rTemp)
|
|
229
227
|
aabb = aTemp*aTemp + bTemp*bTemp;
|
|
230
228
|
Fnew = (aabb - rTemp*rTemp)*Anew;
|
|
231
|
-
Tnew = numpy.arccos(
|
|
229
|
+
Tnew = numpy.arccos(-aTemp / numpy.sqrt(aabb))
|
|
232
230
|
if bTemp > 0:
|
|
233
231
|
Tnew = 2*numpy.pi - Tnew;
|
|
234
232
|
VarNew = VarOld;
|
|
@@ -259,15 +257,15 @@ def LMA(XY,ParIni):
|
|
|
259
257
|
Gi = 2*ADF/DEN;
|
|
260
258
|
GG = GG + Gi*Gi;
|
|
261
259
|
|
|
262
|
-
VarNew =
|
|
260
|
+
VarNew = GG / (n-3)
|
|
263
261
|
|
|
264
262
|
H = numpy.sqrt(1+4*Anew*Fnew);
|
|
265
263
|
anew = -H*numpy.cos(Tnew)/(Anew+Anew) - Xshift;
|
|
266
264
|
bnew = -H*numpy.sin(Tnew)/(Anew+Anew) - Yshift;
|
|
267
|
-
Rnew =
|
|
265
|
+
Rnew = 1 / abs(Anew+Anew)
|
|
268
266
|
|
|
269
267
|
if VarNew <= VarOld:
|
|
270
|
-
progress =
|
|
268
|
+
progress = (abs(anew-aold) + abs(bnew-bold) + abs(Rnew-Rold)) / (Rnew+Rold)
|
|
271
269
|
if progress < epsilon:
|
|
272
270
|
Aold = Anew;
|
|
273
271
|
Fold = Fnew;
|
|
@@ -288,7 +286,7 @@ def LMA(XY,ParIni):
|
|
|
288
286
|
H = numpy.sqrt(1+4*Aold*Fold);
|
|
289
287
|
result_a = -H*numpy.cos(Told)/(Aold+Aold) - Xshift;
|
|
290
288
|
result_b = -H*numpy.sin(Told)/(Aold+Aold) - Yshift;
|
|
291
|
-
result_r =
|
|
289
|
+
result_r = 1 / abs(Aold+Aold)
|
|
292
290
|
|
|
293
291
|
return result_a, result_b, result_r
|
|
294
292
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
#! /usr/bin/env python
|
|
2
2
|
|
|
3
|
-
from __future__ import division
|
|
4
|
-
from __future__ import print_function
|
|
5
3
|
from builtins import range
|
|
6
|
-
from past.utils import old_div
|
|
7
4
|
import numpy
|
|
8
5
|
import math
|
|
9
6
|
|
|
@@ -57,7 +54,7 @@ def tauV(T):
|
|
|
57
54
|
tr += tau # tr totals tau values
|
|
58
55
|
if tr != 0:
|
|
59
56
|
for i in range(3):
|
|
60
|
-
evalues[i]=
|
|
57
|
+
evalues[i] = evalues[i] / tr # convention is norming eigenvalues so they sum to 1.
|
|
61
58
|
else:
|
|
62
59
|
return t,V # if eigenvalues add up to zero, no sorting is needed
|
|
63
60
|
# sort evalues,evectors
|
|
@@ -93,7 +90,7 @@ def get_PD_direction(X1_prime, X2_prime, X3_prime, PD):
|
|
|
93
90
|
dot = -1
|
|
94
91
|
elif dot > 1:
|
|
95
92
|
dot = 1
|
|
96
|
-
if numpy.arccos(dot) >
|
|
93
|
+
if numpy.arccos(dot) > numpy.pi / 2.:
|
|
97
94
|
#print 'numpy.arccos(dot) {} > numpy.pi / 2. {}'.format(numpy.arccos(dot), numpy.pi / 2)
|
|
98
95
|
#print 'correcting PD direction'
|
|
99
96
|
PD = -1. * numpy.array(PD)
|
|
@@ -105,15 +102,15 @@ def cart2dir(cart):
|
|
|
105
102
|
converts a direction to cartesian coordinates
|
|
106
103
|
"""
|
|
107
104
|
cart=numpy.array(cart)
|
|
108
|
-
rad=
|
|
105
|
+
rad = numpy.pi / 180. # constant to convert degrees to radians
|
|
109
106
|
if len(cart.shape)>1:
|
|
110
107
|
Xs,Ys,Zs=cart[:,0],cart[:,1],cart[:,2]
|
|
111
108
|
else: #single vector
|
|
112
109
|
Xs,Ys,Zs=cart[0],cart[1],cart[2]
|
|
113
110
|
Rs=numpy.sqrt(Xs**2 + Ys**2 + Zs**2) # calculate resultant vector length
|
|
114
111
|
try:
|
|
115
|
-
Decs=(
|
|
116
|
-
Incs=
|
|
112
|
+
Decs=(numpy.arctan2(Ys,Xs) / rad)%360. # calculate declination taking care of correct quadrants (arctan2) and making modulo 360.
|
|
113
|
+
Incs = numpy.arcsin(Zs / Rs) / rad # calculate inclination (converting to degrees) #
|
|
117
114
|
except:
|
|
118
115
|
print('trouble in cart2dir') # most likely division by zero somewhere
|
|
119
116
|
return numpy.zeros(3)
|
|
@@ -146,14 +143,14 @@ def get_MAD(tau):
|
|
|
146
143
|
for t in tau:
|
|
147
144
|
if isinstance(t, complex):
|
|
148
145
|
return -999
|
|
149
|
-
MAD = math.degrees(numpy.arctan(numpy.sqrt(
|
|
146
|
+
MAD = math.degrees(numpy.arctan(numpy.sqrt((tau[1] + tau[2]) / tau[0])))
|
|
150
147
|
return MAD
|
|
151
148
|
|
|
152
149
|
def dir2cart(d): # from pmag.py
|
|
153
150
|
"""converts list or array of vector directions, in degrees, to array of cartesian coordinates, in x,y,z form """
|
|
154
151
|
ints = numpy.ones(len(d)).transpose() # get an array of ones to plug into dec,inc pairs
|
|
155
152
|
d = numpy.array(d)
|
|
156
|
-
rad =
|
|
153
|
+
rad = numpy.pi / 180.
|
|
157
154
|
if len(d.shape) > 1: # array of vectors
|
|
158
155
|
decs, incs = d[:,0] * rad, d[:,1] * rad
|
|
159
156
|
if d.shape[1] == 3: ints = d[:,2] # take the given lengths
|
|
@@ -202,7 +199,7 @@ def get_angle_difference(v1, v2):
|
|
|
202
199
|
"""returns angular difference in degrees between two vectors. takes in cartesian coordinates."""
|
|
203
200
|
v1 = numpy.array(v1)
|
|
204
201
|
v2 = numpy.array(v2)
|
|
205
|
-
angle=numpy.arccos(
|
|
202
|
+
angle=numpy.arccos((numpy.dot(v1, v2)) / (numpy.sqrt(math.fsum(v1**2)) * numpy.sqrt(math.fsum(v2**2))))
|
|
206
203
|
return math.degrees(angle)
|
|
207
204
|
|
|
208
205
|
def get_alpha(anc_fit, free_fit):
|
|
@@ -215,7 +212,7 @@ def get_DANG(mass_center, free_best_fit_vector):
|
|
|
215
212
|
return DANG
|
|
216
213
|
|
|
217
214
|
def get_NRM_dev(dang, x_avg, y_int):
|
|
218
|
-
NRM_dev =
|
|
215
|
+
NRM_dev = (numpy.sin(numpy.deg2rad(dang)) * numpy.linalg.norm(x_avg)) / abs(y_int)
|
|
219
216
|
NRM_dev *= 100.
|
|
220
217
|
return NRM_dev
|
|
221
218
|
|
|
@@ -237,5 +234,5 @@ def get_ptrms_angle(ptrms_best_fit_vector, B_lab_vector):
|
|
|
237
234
|
"""
|
|
238
235
|
gives angle between principal direction of the ptrm data and the b_lab vector. this is NOT in SPD, but taken from Ron Shaar's old thellier_gui.py code. see PmagPy on github
|
|
239
236
|
"""
|
|
240
|
-
ptrms_angle = math.degrees(math.acos(
|
|
237
|
+
ptrms_angle = math.degrees(math.acos(numpy.dot(ptrms_best_fit_vector,B_lab_vector) / (numpy.sqrt(sum(ptrms_best_fit_vector**2)) * numpy.sqrt(sum(B_lab_vector**2))))) # from old thellier_gui.py code
|
|
241
238
|
return ptrms_angle
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
|
|
3
|
-
from __future__ import division
|
|
4
|
-
from __future__ import print_function
|
|
5
3
|
from builtins import map
|
|
6
|
-
from past.utils import old_div
|
|
7
4
|
from numpy import *
|
|
8
5
|
from scipy import optimize
|
|
9
6
|
|
|
@@ -26,9 +23,9 @@ def do_circlefit(x=x, y=y):
|
|
|
26
23
|
|
|
27
24
|
# ensure all values are floats, then norm them by largest value
|
|
28
25
|
x = array(list(map(float, x)))
|
|
29
|
-
x =
|
|
26
|
+
x = x / max(x)
|
|
30
27
|
y = array(list(map(float, y)))
|
|
31
|
-
y =
|
|
28
|
+
y = y / max(y)
|
|
32
29
|
|
|
33
30
|
|
|
34
31
|
# coordinates of the barycenter
|
|
@@ -52,7 +49,7 @@ def do_circlefit(x=x, y=y):
|
|
|
52
49
|
|
|
53
50
|
# Solving the linear system
|
|
54
51
|
A = array([ [ Suu, Suv ], [Suv, Svv]])
|
|
55
|
-
B =
|
|
52
|
+
B = array([ Suuu + Suvv, Svvv + Suuv ]) / 2.0
|
|
56
53
|
uc, vc = linalg.solve(A, B)
|
|
57
54
|
|
|
58
55
|
xc_1 = x_m + uc
|