예제 #1
0
def test_save_persister():
    paths.build('_dev')
    dvc = DVC(bind=False)
    dvc.db.connect()

    per = DVCPersister(dvc=dvc)

    run_spec = AutomatedRunSpec()
    run_spec.labnumber = '10001'
    run_spec.project = 'Test'

    arar = ArArAge()
    arar.isotopes['Ar40'] = Isotope(xs=[1, 2, 3], ys=[1, 2, 3],
                                    name='Ar40', detector='H1')
    sd = {}
    dd = {'H1': 100}
    gd = {'H1': 1.021}
    per_spec = PersistenceSpec(run_spec=run_spec,
                               arar_age=arar,
                               spec_dict=sd,
                               defl_dict=dd,
                               gains=gd,
                               positions=[1, ],
                               experiment_queue_name='testexp.txt',
                               measurement_name='jan_unknown.py',
                               extraction_name='foo.py')

    per.per_spec_save(per_spec)
def gen_mock_runspec():
    for p, l, _ in runs:
        rs = AutomatedRunSpec()
        rs.project = p
        rs.labnumber = l
        yield rs
    def get_analysis_import_spec(self, p, delimiter=None):
        pspec = PersistenceSpec()

        rspec = AutomatedRunSpec()
        pspec.run_spec = rspec
        # spec = ImportSpec

        # analysis = Analysis()
        # spec.analysis = analysis

        # position = Position()
        # analysis.position = position

        if delimiter is None:
            delim = self._delimiter

        def gen():
            with open(p, 'r') as rfile:
                for line in rfile:
                    yield line.strip().split(delim)

        f = gen()
        row = f.next()
        # analysis.runid = row[0]
        rspec.runid = row[0]

        # irrad = Irradiation()
        rspec.irradiation = row[1]

        row = f.next()
        rspec.irradiation_level = row[1]

        row = f.next()
        rspec.sample = row[1]

        row = f.next()
        rspec.material = row[1]

        row = f.next()
        rspec.project = row[1]

        row = f.next()
        j = float(row[1])

        row = f.next()
        j_err = float(row[1])

        pspec.j, pspec.j_err = j, j_err
        row = f.next()
        d = row[1]
        row = f.next()
        t = row[1]

        rspec.analysis_timestamp = datetime.strptime('{} {}'.format(d, t),
                                                     '%m/%d/%Y %H:%M:%S')
        row = f.next()
        abundance_sens = float(row[0])
        row = f.next()
        abundance_sens_err = float(row[0])

        row = f.next()
        air = float(row[0])
        disc = 295.5 / air

        pspec.discrimination = disc

        row = f.next()  # MD errpr
        row = f.next()  # peakhop cycles

        n40 = int(f.next()[0])
        n39 = int(f.next()[0])
        n38 = int(f.next()[0])
        n37 = int(f.next()[0])
        n36 = int(f.next()[0])
        n35 = int(f.next()[0])
        n355 = int(f.next()[0])

        f.next()

        row = f.next()
        b40 = map(float, row)
        b39 = map(float, row)
        b38 = map(float, row)
        b37 = map(float, row)
        b36 = map(float, row)
        b35 = map(float, row)
        for i, row in enumerate(f):
            if i > 36:
                break

        isotopes = {}
        isotopes['Ar40'] = self._get_isotope(f, 'Ar40', n40, b40)
        isotopes['Ar39'] = self._get_isotope(f, 'Ar39', n39, b39)
        isotopes['Ar38'] = self._get_isotope(f, 'Ar38', n38, b38)
        isotopes['Ar37'] = self._get_isotope(f, 'Ar37', n37, b37)
        isotopes['Ar36'] = self._get_isotope(f, 'Ar36', n36, b36)
        isotopes['Ar35'] = self._get_isotope(f, 'Ar35', n35, b35)
        isotopes['Ar35.5'] = self._get_isotope(f, 'Ar35.5', n355, b355)

        try:
            f.next()
            self.warning('Extra data in file')
        except StopIteration:
            pass

        pspec.isotope_group = IsotopeGroup(isotopes=isotopes)
        return pspec