pmagpy-cli 4.3.13__tar.gz → 4.6.0__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.6.0/PKG-INFO +111 -0
- pmagpy_cli-4.6.0/README.md +87 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/leastsq_jacobian.py +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_IZZI_MD.py +0 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_arai_plot_statistics.py +0 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_curvature.py +0 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_directional_statistics.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_leastsquares.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_tail_check_statistics.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/new_lib_curvature.py +0 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/new_lj_thellier_gui_spd.py +17 -26
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/spd.py +1 -7
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/command_line_setup.py +5 -5
- pmagpy_cli-4.6.0/dialogs/__init__.py +34 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/demag_dialogs.py +9 -8
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/demag_interpretation_editor.py +10 -4
- pmagpy_cli-4.6.0/dialogs/gui_theme.py +256 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/magic_grid3.py +3 -3
- pmagpy_cli-4.6.0/dialogs/plot_export.py +17 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/pmag_gui_dialogs.py +7 -7
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/pmag_gui_menu3.py +20 -16
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/pmag_menu_dialogs.py +40 -27
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/pmag_widgets.py +5 -8
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/thellier_consistency_test.py +5 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/thellier_gui_dialogs.py +6 -8
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/thellier_gui_lib.py +39 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/thellier_interpreter.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/help_files/demag_gui_help.py +7 -1
- pmagpy_cli-4.3.13/pmagpy/data_model/controlled_vocabularies_December_10_2018.json → pmagpy_cli-4.6.0/pmagpy/data_model/controlled_vocabularies.json +760 -101
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/data_model/data_model.json +1608 -944
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/data_model/method_codes.json +396 -161
- pmagpy_cli-4.3.13/pmagpy/data_model/suggested_vocabularies_December_10_2018.json → pmagpy_cli-4.6.0/pmagpy/data_model/suggested_vocabularies.json +20 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/mapping/map_magic.py +1 -1
- pmagpy_cli-4.6.0/pmagpy/test/test_aarm_magic_cli.py +112 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ani_depthplot_cli.py +66 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ani_depthplot_dialog.py +49 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_aniso_coordinate_rotation.py +71 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_aniso_measurements.py +169 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_contribution_builder_propagation.py +150 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_convert_cit.py +168 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_convert_rs3.py +391 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_convert_tdt.py +143 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_convert_vftb.py +155 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_curie_cli.py +129 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_fit_types.py +32 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_forc.py +1665 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_gui_plot_export.py +61 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_gui_theme.py +155 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_inclination_only.py +133 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_ani_depthplot.py +142 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_aniso_magic.py +280 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_common_mean.py +39 -1
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_compilation_kent.py +174 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_dmag_magic.py +115 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_ei.py +52 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_load_magic_contribution.py +191 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_plotting.py +545 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_upload.py +88 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_ipmag_zeq.py +96 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_magic_validation.py +361 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_packaging.py +25 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_directions.py +134 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_domean.py +116 -1
- pmagpy_cli-4.6.0/pmagpy/test/test_pmag_field_models.py +186 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_io.py +19 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_pmag_pintpars.py +50 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_pmag_pintpars_range.py +51 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_pmag_sun_compass.py +195 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_transforms.py +152 -1
- pmagpy_cli-4.6.0/pmagpy/test/test_pmagplotlib_backend.py +70 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_pmagplotlib_zij.py +283 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_programs_backend.py +307 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_programs_output_file.py +51 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_retired_dm2_cli.py +23 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_rockmag_curie.py +1182 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_rockmag_hysteresis.py +2505 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_rockmag_unmixing.py +1605 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_svei.py +317 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_thellier_cooling_rate.py +138 -0
- pmagpy_cli-4.6.0/pmagpy/test/test_thellier_gui_layout.py +49 -0
- pmagpy_cli-4.6.0/pmagpy_cli.egg-info/PKG-INFO +111 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy_cli.egg-info/SOURCES.txt +43 -28
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy_cli.egg-info/entry_points.txt +0 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy_cli.egg-info/requires.txt +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy_cli.egg-info/top_level.txt +0 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/__init__.py +5 -10
- pmagpy_cli-4.6.0/programs/aarm_magic.py +84 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/angle.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/ani_depthplot.py +21 -22
- pmagpy_cli-4.6.0/programs/aniso_magic.py +124 -0
- pmagpy_cli-4.6.0/programs/aniso_magic2.py +19 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/apwp.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/azdip_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/b_vdm.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/bootams.py +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/cart_dir.py +3 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/chartmaker.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/chi_magic.py +2 -3
- pmagpy_cli-4.6.0/programs/chi_magic2.py +19 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/common_mean.py +5 -6
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/cit_magic.py +5 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/livdb_magic.py +4 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/sufar4_asc_magic.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/tdt_magic.py +4 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/_2g_bin_magic2.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/bgc_magic2.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/cit_magic2.py +1 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/generic_magic2.py +16 -17
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/huji_magic2.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/huji_magic_new2.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/iodp_dscr_magic2.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/iodp_jr6_magic2.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/iodp_srm_magic2.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/jr6_jr6_magic2.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/jr6_txt_magic2.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/ldeo_magic2.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/pmd_magic2.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/sio_magic2.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/tdt_magic2.py +1 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/utrecht_magic2.py +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/core_depthplot.py +8 -8
- pmagpy_cli-4.6.0/programs/curie.py +140 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/dayplot_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/demag_gui.py +283 -100
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/di_eq.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/di_geo.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/di_rot.py +5 -6
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/di_tilt.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/di_vgp.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/dia_vgp.py +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/dipole_pinc.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/dipole_plat.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/dir_cart.py +3 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/dmag_magic.py +6 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/eigs_s.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/eq_di.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/eqarea.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/eqarea_ell.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/eqarea_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/find_ei.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/fisher.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/fishqq.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/fishrot.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/foldtest.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/foldtest_magic.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/forc_diagram.py +7 -12
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/gaussian.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/gobing.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/gofish.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/gokent.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/goprinc.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/histplot.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/hysteresis_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/igrf.py +6 -8
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/incfish.py +3 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/irmaq_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/k15_s.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/lnp_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/lowes.py +1 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/lowrie.py +3 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/lowrie_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/lsq_redo.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/magic_gui.py +4 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/make_magic_plots.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/microwave_magic.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plot_2cdfs.py +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plot_cdf.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plot_geomagia.py +0 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plot_magmap.py +5 -6
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plot_map_pts.py +3 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plotdi_a.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plotdi_e.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/plotxy.py +3 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/pmag_gui.py +28 -29
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/polemap_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/program_envs.py +4 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/pt_rot.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/qqplot.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/qqunf.py +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/quick_hyst.py +1 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/remanence_anisotropy_magic.py +4 -10
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/revtest.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/revtest_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/revtest_mm1990.py +1 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/s_eigs.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/s_geo.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/s_hext.py +1 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/s_tilt.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/scalc.py +3 -6
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/site_edit_magic.py +1 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/squish.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/stats.py +3 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/strip_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/sundec.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/thellier_gui.py +196 -156
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/thellier_magic.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/tk03.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/unsquish.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/upload_magic.py +9 -6
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/vdm_b.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/vector_mean.py +2 -2
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/vgp_di.py +1 -1
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/vgpmap_magic.py +2 -3
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/watsons_v.py +3 -5
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/zeq.py +3 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/zeq_magic.py +2 -4
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/setup.py +5 -2
- pmagpy_cli-4.3.13/PKG-INFO +0 -187
- pmagpy_cli-4.3.13/README.md +0 -89
- pmagpy_cli-4.3.13/dialogs/__init__.py +0 -18
- pmagpy_cli-4.3.13/locator/resource.py +0 -0
- pmagpy_cli-4.3.13/pmagpy/data_model/MagIC-data-model.txt +0 -1207
- pmagpy_cli-4.3.13/pmagpy/data_model/age_methods.txt +0 -1
- pmagpy_cli-4.3.13/pmagpy/data_model/all_codes.txt +0 -1
- pmagpy_cli-4.3.13/pmagpy/data_model/code_types.txt +0 -1
- pmagpy_cli-4.3.13/pmagpy/data_model/controlled_vocabularies2.json +0 -1
- pmagpy_cli-4.3.13/pmagpy/data_model/controlled_vocabularies_August_9_2018.json +0 -7808
- pmagpy_cli-4.3.13/pmagpy/data_model/controlled_vocabularies_February_6_2017.json +0 -7685
- pmagpy_cli-4.3.13/pmagpy/data_model/controlled_vocabularies_October_3_2019.json +0 -19002
- pmagpy_cli-4.3.13/pmagpy/data_model/er_methods.txt +0 -1
- pmagpy_cli-4.3.13/pmagpy/data_model/pmag_methods.txt +0 -1
- pmagpy_cli-4.3.13/pmagpy/data_model/suggested_vocabularies_August_9_2018.json +0 -7173
- pmagpy_cli-4.3.13/pmagpy/data_model/suggested_vocabularies_February_6_2017.json +0 -7147
- pmagpy_cli-4.3.13/pmagpy/test/test_ipmag_plotting.py +0 -270
- pmagpy_cli-4.3.13/pmagpy/test/test_pmag_field_models.py +0 -89
- pmagpy_cli-4.3.13/pmagpy_cli.egg-info/PKG-INFO +0 -187
- pmagpy_cli-4.3.13/pmagpy_tests/examples/my_project_with_errors/__init__.py +0 -0
- pmagpy_cli-4.3.13/programs/aarm_magic.py +0 -79
- pmagpy_cli-4.3.13/programs/agm_magic2.py +0 -252
- pmagpy_cli-4.3.13/programs/ani_depthplot2.py +0 -121
- pmagpy_cli-4.3.13/programs/aniso_magic.py +0 -192
- pmagpy_cli-4.3.13/programs/aniso_magic2.py +0 -584
- pmagpy_cli-4.3.13/programs/chi_magic2.py +0 -251
- pmagpy_cli-4.3.13/programs/curie.py +0 -283
- pmagpy_cli-4.3.13/programs/dayplot_magic2.py +0 -146
- pmagpy_cli-4.3.13/programs/dmag_magic2.py +0 -168
- pmagpy_cli-4.3.13/programs/eqarea_magic2.py +0 -441
- pmagpy_cli-4.3.13/programs/foldtest_magic2.py +0 -204
- pmagpy_cli-4.3.13/programs/hysteresis_magic2.py +0 -336
- pmagpy_cli-4.3.13/programs/irm_unmix.py +0 -606
- pmagpy_cli-4.3.13/programs/quick_hyst2.py +0 -251
- pmagpy_cli-4.3.13/programs/thellier_magic2.py +0 -729
- pmagpy_cli-4.3.13/programs/vgpmap_magic2.py +0 -255
- pmagpy_cli-4.3.13/programs/zeq_magic2.py +0 -731
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/MANIFEST.in +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_additivity_check_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/lib/lib_ptrm_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/run_tests.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/test_instance.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/known_values.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/test_additivity_check_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/test_all.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/test_arai_plot_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/test_curvature.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/test_directional_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/test_ptrm_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/SPD/tests/test_tail_check_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/bin/ani_depthplot_anaconda +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/bin/core_depthplot_anaconda +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/bin/demag_gui_anaconda +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/bin/magic_gui2_anaconda +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/bin/magic_gui_anaconda +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/bin/pmag_gui_anaconda +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/bin/thellier_gui_anaconda +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/ErMagicBuilder.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/drop_down_menus3.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/grid_frame3.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicAgeHelp.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicBuilderHelp.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicHeadersHelp.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicLocationHelp.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicSampleHelp.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicSampleHelp1.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicSiteHelp.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/ErMagicSpecimenHelp.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/help_files/magic_gui.html +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/magic_grid2.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/dialogs/pmag_er_magic_dialogs.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/help_files/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/help_files/demag_interpretation_editor_help.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/field_models/igrf14coeffs.txt +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/mapping/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/mapping/maps.py +0 -0
- {pmagpy_cli-4.3.13/locator → pmagpy_cli-4.6.0/pmagpy/test}/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/conftest.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_igrf.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_correlation.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_data_handling.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_field_tests.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_random.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_ipmag_vgp.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_anisotropy.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_data_handling.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_kent_bingham.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_projection.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_random.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_statistics.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_utilities.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_pmag_vgp.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy/test/test_rotations.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy_cli.egg-info/dependency_links.txt +0 -0
- {pmagpy_cli-4.3.13/pmagpy/test → pmagpy_cli-4.6.0/pmagpy_tests/examples}/__init__.py +0 -0
- {pmagpy_cli-4.3.13/pmagpy_tests/examples → pmagpy_cli-4.6.0/pmagpy_tests/examples/empty_dir}/__init__.py +0 -0
- {pmagpy_cli-4.3.13/pmagpy_tests/examples/empty_dir → pmagpy_cli-4.6.0/pmagpy_tests/examples/my_project}/__init__.py +0 -0
- {pmagpy_cli-4.3.13/pmagpy_tests/examples/my_project → pmagpy_cli-4.6.0/pmagpy_tests/examples/my_project_with_errors}/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/pmagpy_tests/examples/my_project_with_errors/something.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/atrm_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/combine_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/_2g_bin_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/agm_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/bgc_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/generic_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/huji_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/huji_sample_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/iodp_dscr_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/iodp_jr6_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/iodp_samples_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/iodp_srm_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/irm_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/jr6_jr6_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/jr6_txt_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/k15_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/kly4s_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/ldeo_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/magic_geomagia.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/mst_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/pmd_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/run_multi_samples.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/s_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/sio_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/squidm_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/template_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/utrecht_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts/xpeem_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/conversion_scripts2/__init__.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/convert2unix.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/dir_redo.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/download_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/grab_magic_key.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/images/PmagPy.ico +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/images/PmagPy_16x16.ico +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/images/PmagPy_32x32.ico +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/images/pmagpy_logo.ico +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/magic_select.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/mk_redo.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/move_data_files.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/mst_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/orientation_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/pca.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/pmag_results_extract.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/pmm_redo.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/remove_bad_chars.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/replace_ac_specimens.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/scalc_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/sort_specimens.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/thumbnails.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/trmaq_magic.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/uniform.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/programs/watsons_f.py +0 -0
- {pmagpy_cli-4.3.13 → pmagpy_cli-4.6.0}/setup.cfg +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pmagpy-cli
|
|
3
|
+
Version: 4.6.0
|
|
4
|
+
Summary: Analysis tools for paleo/rock magnetic data
|
|
5
|
+
Home-page: https://github.com/PmagPy/PmagPy
|
|
6
|
+
Author: PmagPy team
|
|
7
|
+
Author-email: ltauxe@ucsd.edu
|
|
8
|
+
License: BSD-3-Clause
|
|
9
|
+
Keywords: geology paleomagnetism
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
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
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
Requires-Dist: pmagpy==4.6.0
|
|
21
|
+
Requires-Dist: wxPython
|
|
22
|
+
Requires-Dist: pillow
|
|
23
|
+
Requires-Dist: appdirs
|
|
24
|
+
Provides-Extra: maps
|
|
25
|
+
Requires-Dist: pmagpy[maps]; extra == "maps"
|
|
26
|
+
Dynamic: author
|
|
27
|
+
Dynamic: author-email
|
|
28
|
+
Dynamic: classifier
|
|
29
|
+
Dynamic: description
|
|
30
|
+
Dynamic: description-content-type
|
|
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
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
**PmagPy** is a comprehensive set of tools for analyzing paleomagnetic data. It facilitates interpretation of demagnetization data, Thellier-type experimental data and data from other types of rock magnetic experiments. PmagPy can be used to create a wide variety of useful plots and conduct statistical tests. It is designed to work with the MagIC database (https://earthref.org/MagIC), allowing manipulation of downloaded data sets as well as preparation of new contributions for uploading to the MagIC database. Functions within PmagPy can be imported and used in Jupyter notebooks enabling fully documented and nicely illustrated data analysis.
|
|
41
|
+
|
|
42
|
+
## Citing PmagPy
|
|
43
|
+
|
|
44
|
+
Users of PmagPy should cite the open access article:
|
|
45
|
+
|
|
46
|
+
Tauxe, L., R. Shaar, L. Jonestrask, N. L. Swanson-Hysell, R. Minnett, A. A. P. Koppers, C. G. Constable, N. Jarboe, K. Gaastra, and L. Fairchild (2016), PmagPy: Software package for paleomagnetic data analysis and a bridge to the Magnetics Information Consortium (MagIC) Database, Geochem. Geophys. Geosyst., 17, https://doi.org/10.1002/2016GC006307.
|
|
47
|
+
|
|
48
|
+
## Main features
|
|
49
|
+
|
|
50
|
+
PmagPy is comprised of:
|
|
51
|
+
- GUI programs for getting data into MagIC database format (pmag\_gui), analyzing demagnetization data (demag\_gui) and analyzing paleointensity data (thellier\_gui). These GUIs are available as part of the python package pmagpy-cli. Alternatively, these GUIs are available for download as standalone applications for [macOS](https://github.com/PmagPy/PmagPy-Standalone-OSX/releases/latest) and [Windows](https://github.com/PmagPy/PmagPy-Standalone-Windows/releases/latest).
|
|
52
|
+
- Command line programs for all sorts of paleomagnetic data analysis and wrangling (contained within the programs folder of the repository and pip installed as pmagpy-cli).
|
|
53
|
+
- The pmagpy function modules for paleomagnetic data analysis (pmagpy.pmag) and plotting (pmagpy.pmagplotlib) as well as a function module that further enables paleomagnetic data analysis within interactive computing environments such as the Jupyter notebook (pmagpy.ipmag). The functions within these modules are at the heart of the GUI and command line programs. With pmagpy installed ([described below](#how-to-get-it)), these modules can be imported (e.g. `from pmagpy import ipmag`).
|
|
54
|
+
- A rock magnetism module (pmagpy.rockmag) for processing and interpreting hysteresis, backfield, FORC, low-temperature, thermomagnetic, and anisotropy experiments, demonstrated in the [RockmagPy notebooks](https://pmagpy.github.io/RockmagPy-notebooks).
|
|
55
|
+
- Example data files that are used in the examples provided in the [PmagPy documentation notebooks](https://pmagpy.github.io/PmagPy-docs/documentation_notebooks/PmagPy_introduction.html)
|
|
56
|
+
|
|
57
|
+
Use of all these features is described in the [PmagPy documentation](https://pmagpy.github.io/PmagPy-docs/) and the underlying science behind the data and code can be explored in the book [Essentials of Paleomagnetism: Third Web Edition](http://earthref.org/MagIC/books/Tauxe/Essentials/). Example Jupyter notebooks using PmagPy can be found in this [repository](https://github.com/PmagPy/2016_Tauxe-et-al_PmagPy_Notebooks)
|
|
58
|
+
|
|
59
|
+
## How to get it
|
|
60
|
+
|
|
61
|
+
Full instructions for installing and using PmagPy are in the [PmagPy documentation](https://pmagpy.github.io/PmagPy-docs/installation/PmagPy_install.html). You don't need a programming background to follow them. In brief:
|
|
62
|
+
|
|
63
|
+
| I want to... | Do this |
|
|
64
|
+
|---|---|
|
|
65
|
+
| Use Pmag GUI, Demag GUI, or Thellier GUI, and nothing else | Download the standalone application for [macOS](https://github.com/PmagPy/PmagPy-Standalone-OSX/releases/latest) or [Windows](https://github.com/PmagPy/PmagPy-Standalone-Windows/releases/latest) (no Python needed) |
|
|
66
|
+
| Try PmagPy without installing anything | Use the [EarthRef JupyterHub](https://pmagpy.github.io/PmagPy-docs/installation/PmagPy_install.html#using-pmagpy-online), or run `%pip install pmagpy` in a Google Colab notebook |
|
|
67
|
+
| Use PmagPy in Jupyter notebooks, run the command-line programs, or run the GUIs on Linux | [Install PmagPy on your computer](https://pmagpy.github.io/PmagPy-docs/installation/pip_install.html) with conda and pip |
|
|
68
|
+
| Contribute to PmagPy, or use changes before they are released | Do a [developer install](https://pmagpy.github.io/PmagPy-docs/installation/developer_install.html) |
|
|
69
|
+
|
|
70
|
+
### Install on your computer
|
|
71
|
+
|
|
72
|
+
The recommended approach uses [Miniforge](https://github.com/conda-forge/miniforge) to create a conda environment with the scientific Python packages, and then pip to install PmagPy. With Miniforge installed, run these commands in a terminal (on Windows, in Miniforge Prompt):
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
conda create -n pmagpy -c conda-forge python=3.12 numpy scipy matplotlib pandas cartopy shapely wxpython pyqt jupyterlab pip
|
|
76
|
+
conda activate pmagpy
|
|
77
|
+
pip install --upgrade pmagpy pmagpy-cli
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`pmagpy` contains the function modules used in Jupyter notebooks and your own code; `pmagpy-cli` adds the command-line programs and the GUIs. To update later, activate the environment and rerun the last command. The [installation guide](https://pmagpy.github.io/PmagPy-docs/installation/pip_install.html) explains each step, and the [troubleshooting page](https://pmagpy.github.io/PmagPy-docs/installation/troubleshooting.html) covers common problems.
|
|
81
|
+
|
|
82
|
+
### Developer install
|
|
83
|
+
|
|
84
|
+
To work from the source code (the master branch or your own fork) rather than a release, clone the repository, create an environment from its `environment.yml`, and install it in editable mode:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
git clone https://github.com/PmagPy/PmagPy.git
|
|
88
|
+
cd PmagPy
|
|
89
|
+
conda env create -f environment.yml -n pmagpy-dev
|
|
90
|
+
conda activate pmagpy-dev
|
|
91
|
+
pip install -e ".[maps]"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Edits to the code, and `git pull`, take effect immediately without reinstalling. The command-line programs and GUIs can be run from the `programs` directory (for example, `python pmag_gui.py`), or installed from the released `pmagpy-cli` package alongside the editable library. Full details are in the [developer install instructions](https://pmagpy.github.io/PmagPy-docs/installation/developer_install.html).
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
## Background and support
|
|
98
|
+
|
|
99
|
+
The code base for the PmagPy project has been built up over many years by Lisa Tauxe (Professor Emerita at the Scripps Institution of Oceanography) supported by grants from the National Science Foundation. Substantial contributions to the project have been made by Nick Swanson-Hysell (Associate Professor at the University of Minnesota), Ron Shaar (Associate Professor at the Hebrew University of Jerusalem), Lori Jonestrask and Kevin Gaastra as well as others.
|
|
100
|
+
|
|
101
|
+
## Contributing
|
|
102
|
+
|
|
103
|
+
If you want to get involved with the project - whether that means reporting a bug, requesting a feature, or adding significant code - please check out the project's [Contribution guidelines](https://github.com/PmagPy/PmagPy/blob/master/CONTRIBUTING.md).
|
|
104
|
+
|
|
105
|
+
## More information
|
|
106
|
+
|
|
107
|
+
This code and the [PmagPy documentation](https://pmagpy.github.io/PmagPy-docs/) are companions to the the book Essentials of Paleomagnetism: Third Web Edition (http://earthref.org/MagIC/books/Tauxe/Essentials/) written by Lisa Tauxe with contributions from Subir K. Banerjee, Robert F. Butler and Rob van der Voo. The printed version of the book came out in January, 2010 from University of California Press (http://www.ucpress.edu/book.php?isbn=9780520260313).
|
|
108
|
+
|
|
109
|
+
## Licensing
|
|
110
|
+
|
|
111
|
+
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.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# PmagPy: tools for paleomagnetic data analysis
|
|
2
|
+
|
|
3
|
+
<table>
|
|
4
|
+
<tr>
|
|
5
|
+
<td>Latest Release</td>
|
|
6
|
+
<td><img src="https://img.shields.io/pypi/v/pmagpy.svg" alt="latest release" /></td>
|
|
7
|
+
</tr>
|
|
8
|
+
<tr>
|
|
9
|
+
<td>License</td>
|
|
10
|
+
<td><img src="https://img.shields.io/pypi/l/pmagpy.svg" alt="license" /></td>
|
|
11
|
+
</tr>
|
|
12
|
+
</table>
|
|
13
|
+
|
|
14
|
+
## What is it
|
|
15
|
+
|
|
16
|
+
**PmagPy** is a comprehensive set of tools for analyzing paleomagnetic data. It facilitates interpretation of demagnetization data, Thellier-type experimental data and data from other types of rock magnetic experiments. PmagPy can be used to create a wide variety of useful plots and conduct statistical tests. It is designed to work with the MagIC database (https://earthref.org/MagIC), allowing manipulation of downloaded data sets as well as preparation of new contributions for uploading to the MagIC database. Functions within PmagPy can be imported and used in Jupyter notebooks enabling fully documented and nicely illustrated data analysis.
|
|
17
|
+
|
|
18
|
+
## Citing PmagPy
|
|
19
|
+
|
|
20
|
+
Users of PmagPy should cite the open access article:
|
|
21
|
+
|
|
22
|
+
Tauxe, L., R. Shaar, L. Jonestrask, N. L. Swanson-Hysell, R. Minnett, A. A. P. Koppers, C. G. Constable, N. Jarboe, K. Gaastra, and L. Fairchild (2016), PmagPy: Software package for paleomagnetic data analysis and a bridge to the Magnetics Information Consortium (MagIC) Database, Geochem. Geophys. Geosyst., 17, https://doi.org/10.1002/2016GC006307.
|
|
23
|
+
|
|
24
|
+
## Main features
|
|
25
|
+
|
|
26
|
+
PmagPy is comprised of:
|
|
27
|
+
- GUI programs for getting data into MagIC database format (pmag\_gui), analyzing demagnetization data (demag\_gui) and analyzing paleointensity data (thellier\_gui). These GUIs are available as part of the python package pmagpy-cli. Alternatively, these GUIs are available for download as standalone applications for [macOS](https://github.com/PmagPy/PmagPy-Standalone-OSX/releases/latest) and [Windows](https://github.com/PmagPy/PmagPy-Standalone-Windows/releases/latest).
|
|
28
|
+
- Command line programs for all sorts of paleomagnetic data analysis and wrangling (contained within the programs folder of the repository and pip installed as pmagpy-cli).
|
|
29
|
+
- The pmagpy function modules for paleomagnetic data analysis (pmagpy.pmag) and plotting (pmagpy.pmagplotlib) as well as a function module that further enables paleomagnetic data analysis within interactive computing environments such as the Jupyter notebook (pmagpy.ipmag). The functions within these modules are at the heart of the GUI and command line programs. With pmagpy installed ([described below](#how-to-get-it)), these modules can be imported (e.g. `from pmagpy import ipmag`).
|
|
30
|
+
- A rock magnetism module (pmagpy.rockmag) for processing and interpreting hysteresis, backfield, FORC, low-temperature, thermomagnetic, and anisotropy experiments, demonstrated in the [RockmagPy notebooks](https://pmagpy.github.io/RockmagPy-notebooks).
|
|
31
|
+
- Example data files that are used in the examples provided in the [PmagPy documentation notebooks](https://pmagpy.github.io/PmagPy-docs/documentation_notebooks/PmagPy_introduction.html)
|
|
32
|
+
|
|
33
|
+
Use of all these features is described in the [PmagPy documentation](https://pmagpy.github.io/PmagPy-docs/) and the underlying science behind the data and code can be explored in the book [Essentials of Paleomagnetism: Third Web Edition](http://earthref.org/MagIC/books/Tauxe/Essentials/). Example Jupyter notebooks using PmagPy can be found in this [repository](https://github.com/PmagPy/2016_Tauxe-et-al_PmagPy_Notebooks)
|
|
34
|
+
|
|
35
|
+
## How to get it
|
|
36
|
+
|
|
37
|
+
Full instructions for installing and using PmagPy are in the [PmagPy documentation](https://pmagpy.github.io/PmagPy-docs/installation/PmagPy_install.html). You don't need a programming background to follow them. In brief:
|
|
38
|
+
|
|
39
|
+
| I want to... | Do this |
|
|
40
|
+
|---|---|
|
|
41
|
+
| Use Pmag GUI, Demag GUI, or Thellier GUI, and nothing else | Download the standalone application for [macOS](https://github.com/PmagPy/PmagPy-Standalone-OSX/releases/latest) or [Windows](https://github.com/PmagPy/PmagPy-Standalone-Windows/releases/latest) (no Python needed) |
|
|
42
|
+
| Try PmagPy without installing anything | Use the [EarthRef JupyterHub](https://pmagpy.github.io/PmagPy-docs/installation/PmagPy_install.html#using-pmagpy-online), or run `%pip install pmagpy` in a Google Colab notebook |
|
|
43
|
+
| Use PmagPy in Jupyter notebooks, run the command-line programs, or run the GUIs on Linux | [Install PmagPy on your computer](https://pmagpy.github.io/PmagPy-docs/installation/pip_install.html) with conda and pip |
|
|
44
|
+
| Contribute to PmagPy, or use changes before they are released | Do a [developer install](https://pmagpy.github.io/PmagPy-docs/installation/developer_install.html) |
|
|
45
|
+
|
|
46
|
+
### Install on your computer
|
|
47
|
+
|
|
48
|
+
The recommended approach uses [Miniforge](https://github.com/conda-forge/miniforge) to create a conda environment with the scientific Python packages, and then pip to install PmagPy. With Miniforge installed, run these commands in a terminal (on Windows, in Miniforge Prompt):
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
conda create -n pmagpy -c conda-forge python=3.12 numpy scipy matplotlib pandas cartopy shapely wxpython pyqt jupyterlab pip
|
|
52
|
+
conda activate pmagpy
|
|
53
|
+
pip install --upgrade pmagpy pmagpy-cli
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`pmagpy` contains the function modules used in Jupyter notebooks and your own code; `pmagpy-cli` adds the command-line programs and the GUIs. To update later, activate the environment and rerun the last command. The [installation guide](https://pmagpy.github.io/PmagPy-docs/installation/pip_install.html) explains each step, and the [troubleshooting page](https://pmagpy.github.io/PmagPy-docs/installation/troubleshooting.html) covers common problems.
|
|
57
|
+
|
|
58
|
+
### Developer install
|
|
59
|
+
|
|
60
|
+
To work from the source code (the master branch or your own fork) rather than a release, clone the repository, create an environment from its `environment.yml`, and install it in editable mode:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
git clone https://github.com/PmagPy/PmagPy.git
|
|
64
|
+
cd PmagPy
|
|
65
|
+
conda env create -f environment.yml -n pmagpy-dev
|
|
66
|
+
conda activate pmagpy-dev
|
|
67
|
+
pip install -e ".[maps]"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Edits to the code, and `git pull`, take effect immediately without reinstalling. The command-line programs and GUIs can be run from the `programs` directory (for example, `python pmag_gui.py`), or installed from the released `pmagpy-cli` package alongside the editable library. Full details are in the [developer install instructions](https://pmagpy.github.io/PmagPy-docs/installation/developer_install.html).
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## Background and support
|
|
74
|
+
|
|
75
|
+
The code base for the PmagPy project has been built up over many years by Lisa Tauxe (Professor Emerita at the Scripps Institution of Oceanography) supported by grants from the National Science Foundation. Substantial contributions to the project have been made by Nick Swanson-Hysell (Associate Professor at the University of Minnesota), Ron Shaar (Associate Professor at the Hebrew University of Jerusalem), Lori Jonestrask and Kevin Gaastra as well as others.
|
|
76
|
+
|
|
77
|
+
## Contributing
|
|
78
|
+
|
|
79
|
+
If you want to get involved with the project - whether that means reporting a bug, requesting a feature, or adding significant code - please check out the project's [Contribution guidelines](https://github.com/PmagPy/PmagPy/blob/master/CONTRIBUTING.md).
|
|
80
|
+
|
|
81
|
+
## More information
|
|
82
|
+
|
|
83
|
+
This code and the [PmagPy documentation](https://pmagpy.github.io/PmagPy-docs/) are companions to the the book Essentials of Paleomagnetism: Third Web Edition (http://earthref.org/MagIC/books/Tauxe/Essentials/) written by Lisa Tauxe with contributions from Subir K. Banerjee, Robert F. Butler and Rob van der Voo. The printed version of the book came out in January, 2010 from University of California Press (http://www.ucpress.edu/book.php?isbn=9780520260313).
|
|
84
|
+
|
|
85
|
+
## Licensing
|
|
86
|
+
|
|
87
|
+
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.
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from builtins import map
|
|
2
|
-
from builtins import range
|
|
3
1
|
import numpy
|
|
4
2
|
from scipy import optimize
|
|
5
3
|
|
|
@@ -97,7 +95,7 @@ def do_circlefit(x, y):
|
|
|
97
95
|
def get_SSE(a,b,r,x,y):
|
|
98
96
|
"""
|
|
99
97
|
input: a, b, r, x, y. circle center, radius, xpts, ypts
|
|
100
|
-
output: SSE
|
|
98
|
+
output: SSE (sum of squared errors)
|
|
101
99
|
"""
|
|
102
100
|
SSE = 0
|
|
103
101
|
X = numpy.array(x)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#! /usr/bin/env python
|
|
2
2
|
|
|
3
|
-
from builtins import range
|
|
4
3
|
import numpy
|
|
5
4
|
import math
|
|
6
5
|
|
|
@@ -111,7 +110,7 @@ def cart2dir(cart):
|
|
|
111
110
|
try:
|
|
112
111
|
Decs=(numpy.arctan2(Ys,Xs) / rad)%360. # calculate declination taking care of correct quadrants (arctan2) and making modulo 360.
|
|
113
112
|
Incs = numpy.arcsin(Zs / Rs) / rad # calculate inclination (converting to degrees) #
|
|
114
|
-
except:
|
|
113
|
+
except Exception:
|
|
115
114
|
print('trouble in cart2dir') # most likely division by zero somewhere
|
|
116
115
|
return numpy.zeros(3)
|
|
117
116
|
return numpy.array([Decs,Incs,Rs]).transpose() # return the directions list
|
|
@@ -11,7 +11,7 @@ def get_n_tail(tmax, tail_temps):
|
|
|
11
11
|
return 0
|
|
12
12
|
try:
|
|
13
13
|
t_index = list(tail_temps).index(tmax)
|
|
14
|
-
except: # finds correct tmax if there was no tail check performed at tmax
|
|
14
|
+
except Exception: # finds correct tmax if there was no tail check performed at tmax
|
|
15
15
|
for temp in tail_temps:
|
|
16
16
|
if temp <= tmax:
|
|
17
17
|
adj_tmax = temp
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
#============================================================================================
|
|
2
|
-
|
|
3
|
-
from builtins import range
|
|
4
|
-
from builtins import object
|
|
2
|
+
|
|
5
3
|
global CURRENT_VRSION
|
|
6
4
|
CURRENT_VRSION = "v.2.03"
|
|
7
|
-
|
|
5
|
+
|
|
8
6
|
|
|
9
7
|
import numpy
|
|
10
8
|
import sys
|
|
11
|
-
import os
|
|
12
9
|
import math
|
|
13
10
|
#import pylab,scipy
|
|
14
11
|
##try:
|
|
@@ -17,14 +14,8 @@ import math
|
|
|
17
14
|
## pass
|
|
18
15
|
try:
|
|
19
16
|
import thellier_gui_preferences
|
|
20
|
-
except:
|
|
17
|
+
except Exception:
|
|
21
18
|
pass
|
|
22
|
-
#import copy
|
|
23
|
-
#import stat
|
|
24
|
-
#import subprocess
|
|
25
|
-
#import time
|
|
26
|
-
#import random
|
|
27
|
-
#import copy
|
|
28
19
|
|
|
29
20
|
#from pylab import * # this stuff is being used, don't know all where
|
|
30
21
|
|
|
@@ -126,7 +117,7 @@ class Arai_GUI(object):
|
|
|
126
117
|
#{'treatment_ac_field': '0', 'treatment_dc_field_theta': '90', 'measurement_temp': '273', 'er_citation_names': 'This study', 'measurement_magn_moment': '1.98e-09', 'treatment_temp': '373', 'measurement_number': '1', 'measurement_standard': 'u', 'er_site_name': '0238x', 'er_sample_name': '0238x601104', 'treatment_dc_field_phi': '0', 'measurement_inc': '-8.1', 'er_location_name': '238', 'measurement_dec': '255.7', 'magic_experiment_name': '0238x6011043:LP-PI-TRM:LP-PI-ALT-PTRM:LP-PI-BT-MD:LP-PI-BT-IZZI', 'measurement_flag': 'g', 'er_specimen_name': '0238x6011043', 'measurement_csd': '0.7', 'treatment_dc_field': '4e-05', 'magic_method_codes': 'LT-T-I:LP-PI-TRM-IZ:LP-PI-TRM:LP-PI-ALT-PTRM:LP-PI-BT-MD:LP-PI-BT-IZZI'}
|
|
127
118
|
# so, first is a zero field, heated to 273 and measured at 273. second is infield, heated to 373 but measured at 273.
|
|
128
119
|
# actual measurements: measurement_magn_moment, measurement_inc, measurement_dec, and measurement_csd. inc == inclination (how a compass would want to point down through the earth to get to the N pole, at least while in northern hemisphere) magn_moment = "The product of the pole strength of a magnet and the distance between the poles." dec == declination.
|
|
129
|
-
except:
|
|
120
|
+
except Exception:
|
|
130
121
|
print("-E- ERROR: Cant read magic_measurement.txt file. File is corrupted.")
|
|
131
122
|
return {},{}
|
|
132
123
|
|
|
@@ -282,14 +273,14 @@ class Arai_GUI(object):
|
|
|
282
273
|
try:
|
|
283
274
|
rmag_anis_data,file_type=self.magic_read(self.WD+'/rmag_anisotropy.txt')
|
|
284
275
|
print( "-I- Anisotropy data read %s/from rmag_anisotropy.txt\n"%self.WD)
|
|
285
|
-
except:
|
|
276
|
+
except Exception:
|
|
286
277
|
print("-W- WARNING cant find rmag_anisotropy in working directory\n")
|
|
287
278
|
|
|
288
279
|
try:
|
|
289
280
|
results_anis_data,file_type=self.magic_read(self.WD+'/rmag_results.txt')
|
|
290
281
|
print( "-I- Anisotropy data read %s/from rmag_anisotropy.txt\n"%self.WD)
|
|
291
282
|
|
|
292
|
-
except:
|
|
283
|
+
except Exception:
|
|
293
284
|
print("-W- WARNING cant find rmag_anisotropy in working directory\n")
|
|
294
285
|
|
|
295
286
|
|
|
@@ -512,7 +503,7 @@ class Arai_GUI(object):
|
|
|
512
503
|
try:
|
|
513
504
|
ancient_cooling_rate=float(self.Data_info["er_samples"][sample]['sample_cooling_rate'])
|
|
514
505
|
ancient_cooling_rate = ancient_cooling_rate / (1e6*365*24*60) # change to K/minute
|
|
515
|
-
except:
|
|
506
|
+
except Exception:
|
|
516
507
|
print("-W- Cant find ancient cooling rate estimation for sample %s"%sample)
|
|
517
508
|
continue
|
|
518
509
|
self.Data_info["er_samples"]
|
|
@@ -787,7 +778,7 @@ class Arai_GUI(object):
|
|
|
787
778
|
x_ptrm_check.append(ptrm_checks[k][3] / NRM)
|
|
788
779
|
y_ptrm_check.append(zerofields[index_zerofield][3] / NRM)
|
|
789
780
|
ptrm_checks_temperatures.append(ptrm_checks[k][0])
|
|
790
|
-
except:
|
|
781
|
+
except Exception:
|
|
791
782
|
pass
|
|
792
783
|
|
|
793
784
|
# microwave
|
|
@@ -804,7 +795,7 @@ class Arai_GUI(object):
|
|
|
804
795
|
x_ptrm_check.append(ptrm_checks[k][3] / NRM)
|
|
805
796
|
y_ptrm_check.append(zerofields[index_zerofield][3] / NRM)
|
|
806
797
|
ptrm_checks_temperatures.append(ptrm_checks[k][0])
|
|
807
|
-
except:
|
|
798
|
+
except Exception:
|
|
808
799
|
pass
|
|
809
800
|
|
|
810
801
|
|
|
@@ -855,7 +846,7 @@ class Arai_GUI(object):
|
|
|
855
846
|
tail_check_temperatures.append(ptrm_tail[k][0])
|
|
856
847
|
|
|
857
848
|
break
|
|
858
|
-
except:
|
|
849
|
+
except Exception:
|
|
859
850
|
pass
|
|
860
851
|
|
|
861
852
|
|
|
@@ -938,7 +929,7 @@ class Arai_GUI(object):
|
|
|
938
929
|
#print ""
|
|
939
930
|
#lj
|
|
940
931
|
|
|
941
|
-
except:
|
|
932
|
+
except Exception:
|
|
942
933
|
pass
|
|
943
934
|
|
|
944
935
|
x_AC=numpy.array(x_AC)
|
|
@@ -1013,20 +1004,20 @@ class Arai_GUI(object):
|
|
|
1013
1004
|
|
|
1014
1005
|
try:
|
|
1015
1006
|
data_er_samples=read_magic_file(self.WD+"/er_samples.txt",'er_sample_name')
|
|
1016
|
-
except:
|
|
1007
|
+
except Exception:
|
|
1017
1008
|
print("-W- Cant find er_sample.txt in project directory\n")
|
|
1018
1009
|
|
|
1019
1010
|
try:
|
|
1020
1011
|
data_er_sites=read_magic_file(self.WD+"/er_sites.txt",'er_site_name')
|
|
1021
|
-
except:
|
|
1012
|
+
except Exception:
|
|
1022
1013
|
print ("-W- Cant find er_sites.txt in project directory\n")
|
|
1023
1014
|
|
|
1024
1015
|
try:
|
|
1025
1016
|
data_er_ages=read_magic_file(self.WD+"/er_ages.txt",'er_sample_name')
|
|
1026
|
-
except:
|
|
1017
|
+
except Exception:
|
|
1027
1018
|
try:
|
|
1028
1019
|
data_er_ages=read_magic_file(self.WD+"/er_ages.txt",'er_site_name')
|
|
1029
|
-
except:
|
|
1020
|
+
except Exception:
|
|
1030
1021
|
print ("-W- Cant find er_ages in project directory\n")
|
|
1031
1022
|
|
|
1032
1023
|
|
|
@@ -1068,7 +1059,7 @@ class Arai_GUI(object):
|
|
|
1068
1059
|
Decs = (numpy.arctan2(Ys,Xs) / rad)%360. # calculate declination taking care of correct quadrants (arctan2) and making modulo 360.
|
|
1069
1060
|
try:
|
|
1070
1061
|
Incs = numpy.arcsin(Zs / Rs) / rad # calculate inclination (converting to degrees) #
|
|
1071
|
-
except:
|
|
1062
|
+
except Exception:
|
|
1072
1063
|
print('trouble in cart2dir') # most likely division by zero somewhere
|
|
1073
1064
|
return numpy.zeros(3)
|
|
1074
1065
|
|
|
@@ -1103,7 +1094,7 @@ class Arai_GUI(object):
|
|
|
1103
1094
|
hold,magic_data,magic_record,magic_keys=[],[],{},[]
|
|
1104
1095
|
try:
|
|
1105
1096
|
f=open(infile,"r")
|
|
1106
|
-
except:
|
|
1097
|
+
except Exception:
|
|
1107
1098
|
return [],'bad_file'
|
|
1108
1099
|
d = f.readline()[:-1].strip('\n')
|
|
1109
1100
|
if d[0]=="s" or d[1]=="s":
|
|
@@ -14,15 +14,9 @@
|
|
|
14
14
|
# Initial revision: September 2013:
|
|
15
15
|
#
|
|
16
16
|
#============================================================================================
|
|
17
|
-
|
|
18
|
-
from builtins import object
|
|
19
17
|
import sys
|
|
20
18
|
import numpy
|
|
21
19
|
import os
|
|
22
|
-
#import pylab
|
|
23
|
-
#import scipy
|
|
24
|
-
#from scipy import *
|
|
25
|
-
#import os
|
|
26
20
|
import SPD.lib.lib_arai_plot_statistics as lib_arai
|
|
27
21
|
#import SPD.lib.lib_curvature as lib_k
|
|
28
22
|
import SPD.lib.leastsq_jacobian as lib_k
|
|
@@ -791,7 +785,7 @@ class PintPars(object):
|
|
|
791
785
|
try:
|
|
792
786
|
func(self) # this will work if the function has no dependencies
|
|
793
787
|
stats_run.append(func.__name__)
|
|
794
|
-
except:
|
|
788
|
+
except Exception:
|
|
795
789
|
self.calculate_all_statistics() # if no dependency info can be found, just run all statistics
|
|
796
790
|
return 0 # since all possible statistics have been run, the function ends
|
|
797
791
|
#print 'stats run: ', stats_run
|
|
@@ -2,12 +2,13 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
from pmagpy import version
|
|
3
3
|
from programs_list import programs_list
|
|
4
4
|
|
|
5
|
-
version_num = version.version.
|
|
5
|
+
version_num = version.version.removeprefix('pmagpy-')
|
|
6
|
+
shared_version_requirement = f'pmagpy=={version_num}'
|
|
6
7
|
|
|
7
8
|
# skip the html header at the top of README.md
|
|
8
9
|
with open('README.md', encoding='utf-8') as f:
|
|
9
10
|
lines = f.readlines()[14:]
|
|
10
|
-
long_description = "
|
|
11
|
+
long_description = "".join(lines)
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
setup(
|
|
@@ -15,6 +16,7 @@ setup(
|
|
|
15
16
|
version=version_num,
|
|
16
17
|
description='Analysis tools for paleo/rock magnetic data',
|
|
17
18
|
long_description=long_description,
|
|
19
|
+
long_description_content_type='text/markdown',
|
|
18
20
|
url='https://github.com/PmagPy/PmagPy',
|
|
19
21
|
author='PmagPy team',
|
|
20
22
|
author_email='ltauxe@ucsd.edu',
|
|
@@ -36,10 +38,8 @@ setup(
|
|
|
36
38
|
python_requires='>=3.9',
|
|
37
39
|
|
|
38
40
|
install_requires=[
|
|
39
|
-
|
|
41
|
+
shared_version_requirement,
|
|
40
42
|
'wxPython',
|
|
41
|
-
'PyQt5',
|
|
42
|
-
'lmfit',
|
|
43
43
|
'pillow',
|
|
44
44
|
'appdirs',
|
|
45
45
|
],
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""GUI dialog package with lazy submodule loading."""
|
|
2
|
+
|
|
3
|
+
from importlib import import_module
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
_SUBMODULES = {
|
|
7
|
+
'ErMagicBuilder': 'ErMagicBuilder',
|
|
8
|
+
'demag_dialogs': 'demag_dialogs',
|
|
9
|
+
'demag_interpretation_editor': 'demag_interpretation_editor',
|
|
10
|
+
'grid_frame3': 'grid_frame3',
|
|
11
|
+
'magic_grid3': 'magic_grid3',
|
|
12
|
+
'pmag_gui_dialogs': 'pmag_gui_dialogs',
|
|
13
|
+
'pmag_er_magic_dialogs': 'pmag_er_magic_dialogs',
|
|
14
|
+
'pmag_menu_dialogs': 'pmag_menu_dialogs',
|
|
15
|
+
'pmag_widgets': 'pmag_widgets',
|
|
16
|
+
'thellier_consistency_test': 'thellier_consistency_test',
|
|
17
|
+
'thellier_gui_dialogs': 'thellier_gui_dialogs',
|
|
18
|
+
'thellier_gui_lib': 'thellier_gui_lib',
|
|
19
|
+
'thellier_interpreter': 'thellier_interpreter',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
__all__ = list(_SUBMODULES)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def __getattr__(name):
|
|
26
|
+
if name not in _SUBMODULES:
|
|
27
|
+
raise AttributeError(f"module 'dialogs' has no attribute {name!r}")
|
|
28
|
+
module = import_module(f'.{_SUBMODULES[name]}', __name__)
|
|
29
|
+
globals()[name] = module
|
|
30
|
+
return module
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def __dir__():
|
|
34
|
+
return sorted(list(globals()) + __all__)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
|
|
3
|
+
import importlib
|
|
3
4
|
import matplotlib
|
|
4
5
|
import numpy as np
|
|
5
6
|
import wx
|
|
@@ -12,15 +13,17 @@ import matplotlib.pyplot as plt
|
|
|
12
13
|
from matplotlib.figure import Figure
|
|
13
14
|
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigCanvas
|
|
14
15
|
from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar
|
|
16
|
+
from dialogs.plot_export import save_figure
|
|
15
17
|
from pmagpy.demag_gui_utilities import *
|
|
16
18
|
from pmag_env import set_env
|
|
17
19
|
from numpy import vstack,sqrt
|
|
18
20
|
from functools import reduce
|
|
19
21
|
|
|
20
22
|
has_cartopy, Cartopy = pmag.import_cartopy()
|
|
23
|
+
cfeature = ccrs = None
|
|
21
24
|
if has_cartopy:
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
cfeature = importlib.import_module('cartopy.feature')
|
|
26
|
+
ccrs = importlib.import_module('cartopy.crs')
|
|
24
27
|
|
|
25
28
|
#============================================================================================
|
|
26
29
|
# LOG HEADER:
|
|
@@ -46,7 +49,7 @@ class VGP_Dialog(wx.Frame):
|
|
|
46
49
|
|
|
47
50
|
def __init__(self,parent,VGP_Data):
|
|
48
51
|
if set_env.IS_FROZEN and not set_env.IS_WIN:
|
|
49
|
-
parent.user_warning("This feature is not available in the standalone executable. If you need to look at VGPs, consider installing Python and PmagPy: https://
|
|
52
|
+
parent.user_warning("This feature is not available in the standalone executable. If you need to look at VGPs, consider installing Python and PmagPy: https://pmagpy.github.io/PmagPy-docs/installation/pip_install.html");
|
|
50
53
|
self.failed_init=True
|
|
51
54
|
return
|
|
52
55
|
self.failed_init = False
|
|
@@ -398,11 +401,9 @@ class SaveMyPlot(wx.Frame):
|
|
|
398
401
|
return
|
|
399
402
|
|
|
400
403
|
title=name
|
|
401
|
-
self.panel = wx.Panel(self)
|
|
402
404
|
self.dpi=300
|
|
403
405
|
|
|
404
|
-
|
|
405
|
-
canvas_tmp_1.print_figure(path, dpi=self.dpi)
|
|
406
|
+
save_figure(fig, path, dpi=self.dpi)
|
|
406
407
|
|
|
407
408
|
#--------------------------------------------------------------
|
|
408
409
|
# MagIc results tables dialog
|
|
@@ -550,7 +551,7 @@ class user_input(wx.Dialog):
|
|
|
550
551
|
for i,ctrl in enumerate(self.list_ctrls):
|
|
551
552
|
if hasattr(self.parse_funcs,'__getitem__') and len(self.parse_funcs)>i and hasattr(self.parse_funcs[i],'__call__'):
|
|
552
553
|
try: return_dict[self.inputs[i]] = self.parse_funcs[i](ctrl.GetValue())
|
|
553
|
-
except: return_dict[self.inputs[i]] = ctrl.GetValue()
|
|
554
|
+
except Exception: return_dict[self.inputs[i]] = ctrl.GetValue()
|
|
554
555
|
else:
|
|
555
556
|
return_dict[self.inputs[i]] = ctrl.GetValue()
|
|
556
557
|
return ('' not in list(return_dict.values()), return_dict)
|
|
@@ -1146,7 +1147,7 @@ class convert_generic_files_to_MagIC(wx.Frame):
|
|
|
1146
1147
|
self.er_sample_data={}
|
|
1147
1148
|
try:
|
|
1148
1149
|
self.er_sample_data=self.read_magic_file(os.path.join(self.WD, "er_samples.txt"), 'er_sample_name')
|
|
1149
|
-
except:
|
|
1150
|
+
except Exception:
|
|
1150
1151
|
print("-W- WARNING: Cant find er_samples.txt table")
|
|
1151
1152
|
|
|
1152
1153
|
for i in range(self.max_files):
|
|
@@ -6,6 +6,7 @@ from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigCanvas
|
|
|
6
6
|
from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar
|
|
7
7
|
from matplotlib.figure import Figure
|
|
8
8
|
import help_files.demag_interpretation_editor_help as dieh
|
|
9
|
+
from dialogs import gui_theme
|
|
9
10
|
from pmagpy.demag_gui_utilities import *
|
|
10
11
|
from pmagpy.Fit import *
|
|
11
12
|
from pmagpy.pmag import get_version
|
|
@@ -28,6 +29,7 @@ class InterpretationEditorFrame(wx.Frame):
|
|
|
28
29
|
#call init of super class
|
|
29
30
|
default_style = wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN | wx.NO_FULL_REPAINT_ON_RESIZE | wx.WS_EX_CONTEXTHELP | wx.FRAME_EX_CONTEXTHELP
|
|
30
31
|
wx.Frame.__init__(self, self.parent, title="Interpretation Editor version:%s"%CURRENT_VERSION,style=default_style, size=(675*self.GUI_RESOLUTION,425*self.GUI_RESOLUTION))
|
|
32
|
+
gui_theme.bind_theme_updates(self)
|
|
31
33
|
self.Bind(wx.EVT_CLOSE, self.on_close_edit_window)
|
|
32
34
|
#setup wx help provider class to give help messages
|
|
33
35
|
provider = wx.SimpleHelpProvider()
|
|
@@ -237,8 +239,8 @@ class InterpretationEditorFrame(wx.Frame):
|
|
|
237
239
|
for parameter in ['mean_type','dec','inc','alpha95','K','R','n_lines','n_planes']:
|
|
238
240
|
COMMAND="self.%s_window=wx.TextCtrl(self.panel,style=wx.TE_CENTER|wx.TE_READONLY,size=(100*self.GUI_RESOLUTION,25))"%parameter
|
|
239
241
|
exec(COMMAND)
|
|
240
|
-
|
|
241
|
-
|
|
242
|
+
gui_theme.style_control(
|
|
243
|
+
getattr(self, "{}_window".format(parameter)))
|
|
242
244
|
COMMAND="self.%s_window.SetFont(font2)"%parameter
|
|
243
245
|
exec(COMMAND)
|
|
244
246
|
COMMAND="self.%s_outer_window = wx.GridSizer(1,2,5*self.GUI_RESOLUTION,15*self.GUI_RESOLUTION)"%parameter
|
|
@@ -346,7 +348,7 @@ class InterpretationEditorFrame(wx.Frame):
|
|
|
346
348
|
m_help = menu_Help.Append(-1, "&Usage and Tips\tCtrl-H", "")
|
|
347
349
|
self.Bind(wx.EVT_MENU, self.on_menu_help, m_help)
|
|
348
350
|
|
|
349
|
-
m_cookbook = menu_Help.Append(-1, "&PmagPy
|
|
351
|
+
m_cookbook = menu_Help.Append(-1, "&PmagPy Documentation\tCtrl-Shift-W", "")
|
|
350
352
|
self.Bind(wx.EVT_MENU, self.parent.on_menu_cookbook, m_cookbook)
|
|
351
353
|
|
|
352
354
|
m_docs = menu_Help.Append(-1, "&Open Docs\tCtrl-Shift-H", "")
|
|
@@ -482,7 +484,11 @@ class InterpretationEditorFrame(wx.Frame):
|
|
|
482
484
|
else: inc = "N/A"
|
|
483
485
|
if 'specimen_mad' in list(pars.keys()): mad = "%.1f"%pars['specimen_mad']
|
|
484
486
|
else: mad = "N/A"
|
|
485
|
-
|
|
487
|
+
# DANG is not calculated for anchored lines (placeholder of 0), nor
|
|
488
|
+
# for fits that return -1 (vector and Fisher means)
|
|
489
|
+
if 'specimen_dang' in list(pars.keys()) and float(pars['specimen_dang']) != -1 \
|
|
490
|
+
and pars.get('calculation_type') != 'DE-BFL-A':
|
|
491
|
+
dang = "%.1f"%pars['specimen_dang']
|
|
486
492
|
else: dang = "N/A"
|
|
487
493
|
if 'specimen_alpha95' in list(pars.keys()): a95 = "%.1f"%pars['specimen_alpha95']
|
|
488
494
|
else: a95 = "N/A"
|