Example #1
0
 def test_aniso_depthplot_with_sum_file(self):
     dir_path = os.path.join(WD, 'data_files', 'UTESTA', 'UTESTA_MagIC')
     sum_file = 'CoreSummary_XXX_UTESTA.csv'
     main_plot, plot_name = ipmag.ani_depthplot2(dir_path=dir_path,
                                                 sum_file=sum_file)
     assert (isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'UTESTA_ani_depthplot.svg')
Example #2
0
 def test_aniso_depthplot_with_no_files(self):
     program_ran, error_message = ipmag.ani_depthplot2()
     expected_file = pmag.resolve_file_name('rmag_anisotropy.txt')
     self.assertFalse(program_ran)
     self.assertEqual(
         error_message,
         "Could not find rmag_anisotropy type file: {}.\nPlease provide a valid file path and try again"
         .format(expected_file))
Example #3
0
 def test_aniso_depthplot_with_options(self):
     main_plot, plot_name = ipmag.ani_depthplot2(
         dmin=20,
         dmax=40,
         depth_scale='sample_core_depth',
         fmt='png',
         dir_path=self.aniso_WD)
     assert (isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'U1361A_ani_depthplot.png')
Example #4
0
def main():
    """
    NAME
        ani_depthplot.py

    DESCRIPTION
        plots tau, V3_inc, V1_dec, P and chi versus core_depth

    SYNTAX
        ani_depthplot.py [command line optins]
        # or, for Anaconda users:
        ani_depthplot_anaconda [command line options]


    OPTIONS
        -h prints help message and quits
        -f FILE: specify input rmag_anisotropy format file from magic (MagIC 2 only)
        -fb FILE: specify input measurements format file from magic
        -fsa FILE: specify input sample format file from magic
        -fsp FILE: specify input specimen file (MagIC 3 only)
        -fsum FILE : specify input LIMS database (IODP) core summary csv file
                to print the core names, set lab to 1
        -fa FILE: specify input ages format file from magic
        -d min max [in m] depth range to plot
        -ds [mcd,mbsf], specify depth scale, default is mbsf (core depth)
        -sav save plot without review
        -fmt specfiy format for figures - default is svg
     DEFAULTS:
         Anisotropy file: specimens.txt
         Bulk susceptibility file: measurements.txt
         Samples file: samples.txt
    """


    args = sys.argv
    if '-h' in args:
        print(main.__doc__)
        sys.exit()
    dataframe = extractor.command_line_dataframe([['f', False, 'rmag_anisotropy.txt'],
                                                  ['fb', False, 'magic_measurements.txt'],
                                                  ['fsa', False, 'er_samples.txt'],
                                                  ['fa', False, None], ['fsum', False, None],
                                                  ['fmt', False, 'svg'], ['ds', False, 'mbsf'],
                                                  ['d', False, '-1 -1'], ['sav', False, False],
                                                  ['WD', False, '.' ], ['DM', False, 3],
                                                  ['fsp', False, 'specimens.txt']])
        #args = sys.argv
    checked_args = extractor.extract_and_check_args(args, dataframe)
    ani_file, meas_file, samp_file, age_file, sum_file, fmt, depth_scale, depth, save_quietly, dir_path, data_model, spec_file = extractor.get_vars(['f', 'fb', 'fsa', 'fa', 'fsum', 'fmt', 'ds', 'd', 'sav', 'WD', 'DM', 'fsp'], checked_args)

    # format min/max depth
    try:
        dmin, dmax = depth.split()
        dmin, dmax = float(dmin), float(dmax)
    except:
        print('you must provide depth in this format: -d dmin dmax')
        print('could not parse "{}", defaulting to plotting all depths'.format('-d ' + str(depth)))
        dmin, dmax = -1, -1

    if depth_scale:
        if depth_scale not in ['age', 'mbsf', 'mcd']:
            print('-W- Unrecognized option "{}" provided for depth scale.\n    Options for depth scale are mbsf (meters below sea floor) or mcd (meters composite depth).\n    Alternatively, if you provide an age file the depth scale will be automatically set to plot by age instead.\n    Using default "mbsf"'.format(depth_scale))
            depth_scale = 'sample_core_depth'
        if age_file:
            depth_scale = 'age'
        elif 'mbsf' in depth_scale:
            depth_scale = 'sample_core_depth'
        elif 'mcd' in depth_scale:
            depth_scale = 'sample_composite_depth'

    data_model = int(float(data_model))
    # MagIC 2
    if data_model == 2:
        fig, figname = ipmag.ani_depthplot2(ani_file, meas_file, samp_file, age_file, sum_file, fmt, dmin, dmax, depth_scale, dir_path)
    # MagIC 3
    else:
        if meas_file == "magic_measurements.txt":
            meas_file = 'measurements.txt'
        if samp_file in ['er_samples.txt', 'pmag_samples.txt']:
            samp_file = "samples.txt"
        site_file = 'sites.txt'
        fig, fignames = ipmag.ani_depthplot(spec_file, samp_file, meas_file, site_file, age_file, sum_file, fmt, dmin, dmax, depth_scale, dir_path)
        figname = fignames[0]
    if save_quietly:
        if dir_path == '.':
            dir_path = os.getcwd()
        plt.savefig(figname)
        plt.clf()
        print('Saved file: {}'.format(figname))
        return False

    app = wx.App(redirect=False)
    if not fig:
        pw.simple_warning('No plot was able to be created with the data you provided.\nMake sure you have given all the required information and try again')
        return False

    dpi = fig.get_dpi()
    pixel_width = dpi * fig.get_figwidth()
    pixel_height = dpi * fig.get_figheight()
    figname = os.path.join(dir_path, figname)
    plot_frame = pmag_menu_dialogs.PlotFrame((int(pixel_width), int(pixel_height + 50)),
                                             fig, figname, standalone=True)

    app.MainLoop()
Example #5
0
def main():
    """
    NAME
        ani_depthplot.py

    DESCRIPTION
        plots tau, V3_inc, V1_dec, P and chi versus core_depth

    SYNTAX
        ani_depthplot.py [command line optins]
        # or, for Anaconda users:
        ani_depthplot_anaconda [command line options]


    OPTIONS
        -h prints help message and quits
        -f FILE: specify input rmag_anisotropy format file from magic (MagIC 2 only)
        -fb FILE: specify input measurements format file from magic
        -fsa FILE: specify input sample format file from magic
        -fsp FILE: specify input specimen file (MagIC 3 only)
        -fsum FILE : specify input LIMS database (IODP) core summary csv file
                to print the core names, set lab to 1
        -fa FILE: specify input ages format file from magic
        -d min max [in m] depth range to plot
        -ds [mcd,mbsf], specify depth scale, default is mbsf (core depth)
        -sav save plot without review
        -fmt specfiy format for figures - default is svg
     DEFAULTS:
         Anisotropy file: rmag_anisotropy.txt
         Bulk susceptibility file: magic_measurements.txt
         Samples file: er_samples.txt
    """

    args = sys.argv
    if '-h' in args:
        print(main.__doc__)
        sys.exit()
    dataframe = extractor.command_line_dataframe(
        [['f', False, 'rmag_anisotropy.txt'],
         ['fb', False, 'magic_measurements.txt'],
         ['fsa', False, 'er_samples.txt'], ['fa', False, None],
         ['fsum', False, None], ['fmt', False, 'svg'], ['ds', False, 'mbsf'],
         ['d', False, '-1 -1'], ['sav', False, False], ['WD', False, '.'],
         ['DM', False, 3], ['fsp', False, 'specimens.txt']])
    #args = sys.argv
    checked_args = extractor.extract_and_check_args(args, dataframe)
    ani_file, meas_file, samp_file, age_file, sum_file, fmt, depth_scale, depth, save_quietly, dir_path, data_model, spec_file = extractor.get_vars(
        [
            'f', 'fb', 'fsa', 'fa', 'fsum', 'fmt', 'ds', 'd', 'sav', 'WD',
            'DM', 'fsp'
        ], checked_args)

    # format min/max depth
    try:
        dmin, dmax = depth.split()
        dmin, dmax = float(dmin), float(dmax)
    except:
        print('you must provide depth in this format: -d dmin dmax')
        print('could not parse "{}", defaulting to plotting all depths'.format(
            '-d ' + str(depth)))
        dmin, dmax = -1, -1

    if depth_scale:
        if depth_scale not in ['age', 'mbsf', 'mcd']:
            print(
                '-W- Unrecognized option "{}" provided for depth scale.\n    Options for depth scale are mbsf (meters below sea floor) or mcd (meters composite depth).\n    Alternatively, if you provide an age file the depth scale will be automatically set to plot by age instead.\n    Using default "mbsf"'
                .format(depth_scale))
            depth_scale = 'sample_core_depth'
        if age_file:
            depth_scale = 'age'
        elif 'mbsf' in depth_scale:
            depth_scale = 'sample_core_depth'
        elif 'mcd' in depth_scale:
            depth_scale = 'sample_composite_depth'

    data_model = int(float(data_model))
    # MagIC 2
    if data_model == 2:
        fig, figname = ipmag.ani_depthplot2(ani_file, meas_file, samp_file,
                                            age_file, sum_file, fmt, dmin,
                                            dmax, depth_scale, dir_path)
    # MagIC 3
    else:
        if meas_file == "magic_measurements.txt":
            meas_file = 'measurements.txt'
        if samp_file in ['er_samples.txt', 'pmag_samples.txt']:
            samp_file = "samples.txt"
        site_file = 'sites.txt'
        fig, figname = ipmag.ani_depthplot(spec_file, samp_file, meas_file,
                                           site_file, age_file, sum_file, fmt,
                                           dmin, dmax, depth_scale, dir_path)
    if save_quietly:
        if dir_path == '.':
            dir_path = os.getcwd()
        plt.savefig(figname)
        plt.clf()
        print('Saved file: {}'.format(figname))
        return False

    app = wx.App(redirect=False)
    if not fig:
        pw.simple_warning(
            'No plot was able to be created with the data you provided.\nMake sure you have given all the required information and try again'
        )
        return False

    dpi = fig.get_dpi()
    pixel_width = dpi * fig.get_figwidth()
    pixel_height = dpi * fig.get_figheight()
    figname = os.path.join(dir_path, figname)
    plot_frame = pmag_menu_dialogs.PlotFrame(
        (int(pixel_width), int(pixel_height + 50)),
        fig,
        figname,
        standalone=True)

    app.MainLoop()
Example #6
0
 def test_aniso_depthplot_with_options(self):
     main_plot, plot_name = ipmag.ani_depthplot2(dmin=20, dmax=40, depth_scale='sample_core_depth', fmt='png', dir_path=self.aniso_WD)
     assert(isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'U1361A_ani_depthplot.png')
Example #7
0
 def test_aniso_depthplot_with_age_option(self):
     main_plot, plot_name = ipmag.ani_depthplot2(age_file='er_ages.txt', dir_path=self.aniso_WD)
     assert(isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'U1361A_ani_depthplot.svg')
Example #8
0
 def test_aniso_depthplot_with_sum_file(self):
     dir_path = os.path.join(WD, 'data_files', 'UTESTA', 'UTESTA_MagIC')
     sum_file = 'CoreSummary_XXX_UTESTA.csv'
     main_plot, plot_name = ipmag.ani_depthplot2(dir_path=dir_path, sum_file=sum_file)
     assert(isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'UTESTA_ani_depthplot.svg')
Example #9
0
 def test_aniso_depthplot_with_files(self):
     #dir_path = os.path.join(WD, 'data_files', 'UTESTA')
     main_plot, plot_name = ipmag.ani_depthplot2(dir_path=self.aniso_WD, sum_file='CoreSummary_XXX_UTESTA.csv')
     assert(isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'U1361A_ani_depthplot.svg')
Example #10
0
 def test_aniso_depthplot_with_no_files(self):
     program_ran, error_message = ipmag.ani_depthplot2()
     expected_file = pmag.resolve_file_name('rmag_anisotropy.txt')
     self.assertFalse(program_ran)
     self.assertEqual(error_message, "Could not find rmag_anisotropy type file: {}.\nPlease provide a valid file path and try again".format(expected_file))
Example #11
0
 def test_aniso_depthplot_with_age_option(self):
     main_plot, plot_name = ipmag.ani_depthplot2(age_file='er_ages.txt',
                                                 dir_path=self.aniso_WD)
     assert (isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'U1361A_ani_depthplot.svg')
Example #12
0
 def test_aniso_depthplot_with_files(self):
     #dir_path = os.path.join(WD, 'data_files', 'UTESTA')
     main_plot, plot_name = ipmag.ani_depthplot2(
         dir_path=self.aniso_WD, sum_file='CoreSummary_XXX_UTESTA.csv')
     assert (isinstance(main_plot, matplotlib.figure.Figure))
     self.assertEqual(plot_name, 'U1361A_ani_depthplot.svg')