def test_SUFAR4_with_options(self): input_dir = os.path.join(WD, 'data_files', 'Measurement_Import', 'SUFAR_asc_magic') infile = 'sufar4-asc_magic_example.txt' program_ran, outfile = ipmag.SUFAR4_magic(infile, meas_output='my_magic_measurements.txt', aniso_output="my_rmag_anisotropy.txt", specnum=2, locname="Here", instrument="INST", static_15_position_mode=True, input_dir_path=input_dir, sample_naming_con='5') self.assertTrue(program_ran) self.assertEqual(outfile, os.path.join('.', 'my_magic_measurements.txt'))
def test_SUFAR4_with_infile(self): input_dir = os.path.join(WD, 'data_files', 'Measurement_Import', 'SUFAR_asc_magic') infile = 'sufar4-asc_magic_example.txt' program_ran, outfile = ipmag.SUFAR4_magic(infile, input_dir_path=input_dir) self.assertTrue(program_ran) self.assertEqual(outfile, os.path.join('.', 'magic_measurements.txt'))
def test_SUFAR4_fail_option4(self): input_dir = os.path.join(WD, 'data_files', 'Measurement_Import', 'SUFAR_asc_magic') infile = 'sufar4-asc_magic_example.txt' program_ran, error_message = ipmag.SUFAR4_magic(infile, input_dir_path=input_dir, sample_naming_con='4') self.assertFalse(program_ran) self.assertEqual(error_message, "option [4] must be in form 4-Z where Z is an integer")
def test_SUFAR4_with_invalid_file(self): input_dir = os.path.join(WD, 'data_files', 'Measurement_Import', 'SUFAR_asc_magic') infile = 'fake_sufar4-asc_magic_example.txt' program_ran, error_message = ipmag.SUFAR4_magic( infile, input_dir_path=input_dir) self.assertFalse(program_ran) self.assertEqual( error_message, 'Error opening file: {}'.format(os.path.join(input_dir, infile)))
def test_SUFAR4_with_infile(self): input_dir = os.path.join(WD, 'data_files', 'Measurement_Import', 'SUFAR_asc_magic') infile = 'sufar4-asc_magic_example.txt' program_ran, outfile = ipmag.SUFAR4_magic(infile, input_dir_path=input_dir, data_model_num=2) self.assertTrue(program_ran) self.assertEqual(outfile, os.path.join('.', 'magic_measurements.txt')) with open(outfile, 'r') as ofile: lines = ofile.readlines() self.assertEqual(292, len(lines))
def test_SUFAR4_succeed_option4(self): input_dir = os.path.join(WD, 'data_files', 'Measurement_Import', 'SUFAR_asc_magic') print('WD', WD) print('input_dir', input_dir) infile = 'sufar4-asc_magic_example.txt' ofile = 'my_magic_measurements.txt' program_ran, outfile = ipmag.SUFAR4_magic(infile, meas_output=ofile, input_dir_path=input_dir, sample_naming_con='4-2') self.assertTrue(program_ran) self.assertEqual(outfile, os.path.join('.', ofile))
def test_SUFAR4_succeed_data_model3(self): input_dir = os.path.join(WD, 'data_files', 'Measurement_Import', 'SUFAR_asc_magic') infile = 'sufar4-asc_magic_example.txt' program_ran, outfile = ipmag.SUFAR4_magic(infile, input_dir_path=input_dir) self.assertTrue(program_ran) self.assertEqual(outfile, os.path.join('.', 'measurements.txt')) with open(outfile, 'r') as ofile: lines = ofile.readlines() self.assertEqual(292, len(lines)) self.assertEqual('measurements', lines[0].split('\t')[1].strip()) con = nb.Contribution(WD) self.assertEqual( sorted(con.tables), sorted(['measurements', 'specimens', 'samples', 'sites']))
def test_SUFAR4_with_no_files(self): with self.assertRaises(TypeError): ipmag.SUFAR4_magic()
def main(): """ NAME sufar4-asc_magic.py DESCRIPTION converts ascii files generated by SUFAR ver.4.0 to MagIC formated files for use with PmagPy plotting software SYNTAX sufar4-asc_magic.py -h [command line options] OPTIONS -h: prints the help message and quits -f FILE: specify .asc input file name -fsi SINFILE: specify er_specimens input file -F MFILE: specify magic_measurements output file -Fa AFILE: specify rmag_anisotropy output file -Fr RFILE: specify rmag_results output file -Fsi SFILE: specify er_specimens output file with location, sample, site, etc. information -usr USER: specify who made the measurements -loc LOC: specify location name for study -ins INST: specify instrument used -spc SPEC: specify number of characters to specify specimen from sample -ncn NCON: specify naming convention: default is #2 below -k15 : specify static 15 position mode - default is spinning -new : replace all existing magic files DEFAULTS AFILE: rmag_anisotropy.txt RFILE: rmag_results.txt SFILE: default is to create new er_specimen.txt file USER: "" LOC: "unknown" INST: "" SPEC: 0 sample name is same as site (if SPEC is 1, sample is all but last character) appends to 'er_specimens.txt, er_samples.txt, er_sites.txt' files Sample naming convention: [1] XXXXY: where XXXX is an arbitrary length site designation and Y is the single character sample designation. e.g., TG001a is the first sample from site TG001. [default] [2] XXXX-YY: YY sample from site XXXX (XXX, YY of arbitary length) [3] XXXX.YY: YY sample from site XXXX (XXX, YY of arbitary length) [4-Z] XXXX[YYY]: YYY is sample designation with Z characters from site XXX [5] site name same as sample [6] site is entered under a separate column -- NOT CURRENTLY SUPPORTED [7-Z] [XXXX]YYY: XXXX is site designation with Z characters with sample name XXXXYYYY NB: all others you will have to customize your self or e-mail [email protected] for help. [8] This is a synthetic [9] ODP naming convention """ args = sys.argv if '-h' in args: print main.__doc__ sys.exit() dataframe = extractor.command_line_dataframe( [['WD', False, '.'], ['ID', False, '.'], ['usr', False, ''], ['ncn', False, '1'], ['k15', False, False], ['ins', False, ''], ['f', True, ''], ['F', False, 'magic_measurements.txt'], ['Fa', False, 'rmag_anisotropy.txt'], ['Fsi', False, 'er_specimens.txt'], ['loc', False, 'unknown'], ['spc', False, 0], ['fsi', False, None]]) #'WD', 'ID', 'usr', 'ncn', 'k15', 'ins', 'f', 'F', 'Fa', 'Fsi', 'loc', 'spc', checked_args = extractor.extract_and_check_args(args, dataframe) output_dir_path, input_dir_path, user, sample_naming_con, static_15_position_mode, instrument, ascfile, meas_output, aniso_output, spec_outfile, locname, specnum, spec_infile = extractor.get_vars( [ 'WD', 'ID', 'usr', 'ncn', 'k15', 'ins', 'f', 'F', 'Fa', 'Fsi', 'loc', 'spc', 'fsi' ], checked_args) ipmag.SUFAR4_magic(ascfile, meas_output, aniso_output, spec_infile, spec_outfile, specnum=specnum, sample_naming_con=sample_naming_con, user=user, locname=locname, instrument=instrument, static_15_position_mode=static_15_position_mode, output_dir_path=output_dir_path, input_dir_path=input_dir_path)