Пример #1
0
def write_analyses_to_csv(p, ms):
    man = IsotopeDatabaseManager(bind=False, connect=False)
    man.db.trait_set(name='pychrondata',
                     kind='mysql',
                     host='129.138.12.160',
                     username='******',
                     password='******')

    man.connect()
    db = man.db

    with db.session_ctx():
        h = datetime.now()
        l = h - timedelta(days=60)
        ans = db.get_analyses_date_range(l, h, mass_spectrometers=ms)

        with open(p, 'w') as wfile:
            writer = csv.writer(wfile)
            n = len(ans)
            for i, ai in enumerate(ans):
                if not (i + 1) % 10:
                    print '{}/{}'.format(i + 1, n)
                try:
                    t = ai.timestamp
                    pc = ai.peak_center.center
                    # print ai.analysis_timestamp, t, pc
                    writer.writerow([t, pc])
                except AttributeError:
                    pass
Пример #2
0
def write_analyses_to_csv(p, ms):
    man = IsotopeDatabaseManager(bind=False, connect=False)
    man.db.trait_set(
        name="pychrondata",
        kind="mysql",
        host=os.environ.get("HOST"),
        username="******",
        password=os.environ.get("DB_PWD"),
    )

    man.connect()
    db = man.db

    with db.session_ctx():
        h = datetime.now()
        l = h - timedelta(days=60)
        ans = db.get_analyses_date_range(l, h, mass_spectrometers=ms)

        with open(p, "w") as wfile:
            writer = csv.writer(wfile)
            n = len(ans)
            for i, ai in enumerate(ans):
                # if not (i + 1) % 10:
                #     print '{}/{}'.format(i + 1, n)
                try:
                    t = ai.timestamp
                    # print ai.id
                    pc = ai.peak_center.center

                    print ai.analysis_timestamp, ai.record_id, t, pc
                    writer.writerow([t, pc])
                except AttributeError, e:
                    print e
Пример #3
0
def write_analyses_to_csv(p, ms):
    man = IsotopeDatabaseManager(bind=False, connect=False)
    man.db.trait_set(name='pychrondata',
                     kind='mysql',
                     host='129.138.12.160',
                     username='******',
                     password='******')

    man.connect()
    db = man.db

    with db.session_ctx():
        h = datetime.now()
        l = h - timedelta(days=60)
        ans = db.get_analyses_date_range(l, h, mass_spectrometers=ms)

        with open(p, 'w') as wfile:
            writer = csv.writer(wfile)
            n = len(ans)
            for i, ai in enumerate(ans):
                if not (i + 1) % 10:
                    print '{}/{}'.format(i + 1, n)
                try:
                    t = ai.timestamp
                    pc = ai.peak_center.center
                    # print ai.analysis_timestamp, t, pc
                    writer.writerow([t, pc])
                except AttributeError:
                    pass
Пример #4
0
def isotope_manager_factory(name='pychrondata_dev'):
    man = IsotopeDatabaseManager(connect=False, bind=False)
    man.db.kind = 'mysql'
    man.db.name = name
    man.db.password = '******'
    man.db.username = '******'
    man.db.host = 'localhost'
    man.connect()
    return man
Пример #5
0
def isotope_manager_factory(name='pychrondata_dev'):
    man = IsotopeDatabaseManager(connect=False, bind=False)
    man.db.kind = 'mysql'
    man.db.name = name
    man.db.password = '******'
    man.db.username = '******'
    man.db.host = 'localhost'
    man.connect()
    return man
Пример #6
0
    def load(self, db_mol_weights=True):
        self.debug('******************************* LOAD Spec')
        if db_mol_weights:
            # get the molecular weights from the database
            dbm = IsotopeDatabaseManager(application=self.application,
                                         warn=False)
            self.db = dbm
            if dbm.isConnected():
                self.info('loading molecular_weights from database')
                mws = dbm.db.get_molecular_weights()
                # convert to a dictionary
                m = dict([(mi.name, mi.mass) for mi in mws])
                self.spectrometer.molecular_weights = m

        if not self.spectrometer.molecular_weights:
            import csv
            # load the molecular weights dictionary
            p = os.path.join(paths.spectrometer_dir, 'molecular_weights.csv')
            if os.path.isfile(p):
                self.info('loading "molecular_weights.csv" file')
                with open(p, 'U') as f:
                    reader = csv.reader(f, delimiter='\t')
                    args = [[l[0], float(l[1])] for l in reader]
                    self.spectrometer.molecular_weights = dict(args)
            else:
                self.info('writing a default "molecular_weights.csv" file')
                # make a default molecular_weights.csv file
                from pychron.spectrometer.molecular_weights import MOLECULAR_WEIGHTS as mw

                with open(p, 'U') as f:
                    writer = csv.writer(f, delimiter='\t')
                    data = [a for a in mw.itervalues()]
                    data = sorted(data, key=lambda x: x[1])
                    for row in data:
                        writer.writerow(row)
                self.spectrometer.molecular_weights = mw

        #config = self.get_configuration(path=os.path.join(paths.spectrometer_dir, 'detectors.cfg'))
        #for name in config.sections():
        #    relative_position = self.config_get(config, name, 'relative_position', cast='float')
        #    color = self.config_get(config, name, 'color', default='black')
        #    default_state = self.config_get(config, name, 'default_state', default=True, cast='boolean')
        #    isotope = self.config_get(config, name, 'isotope')
        #    kind = self.config_get(config, name, 'kind', default='Faraday', optional=True)
        #    self.spectrometer.add_detector(name=name,
        #                                   relative_position=relative_position,
        #                                   color=color,
        #                                   active=default_state,
        #                                   isotope=isotope,
        #                                   kind=kind)
        self.spectrometer.load()

        return True
Пример #7
0
    def load(self, db_mol_weights=True):
        self.debug('******************************* LOAD Spec')
        if db_mol_weights:
            # get the molecular weights from the database
            dbm = IsotopeDatabaseManager(application=self.application,
                                         warn=False)
            self.db = dbm
            if dbm.isConnected():
                self.info('loading molecular_weights from database')
                mws = dbm.db.get_molecular_weights()
                # convert to a dictionary
                m = dict([(mi.name, mi.mass) for mi in mws])
                self.spectrometer.molecular_weights = m

        if not self.spectrometer.molecular_weights:
            import csv
            # load the molecular weights dictionary
            p = os.path.join(paths.spectrometer_dir, 'molecular_weights.csv')
            if os.path.isfile(p):
                self.info('loading "molecular_weights.csv" file')
                with open(p, 'U') as f:
                    reader = csv.reader(f, delimiter='\t')
                    args = [[l[0], float(l[1])] for l in reader]
                    self.spectrometer.molecular_weights = dict(args)
            else:
                self.info('writing a default "molecular_weights.csv" file')
                # make a default molecular_weights.csv file
                from pychron.spectrometer.molecular_weights import MOLECULAR_WEIGHTS as mw

                with open(p, 'U') as f:
                    writer = csv.writer(f, delimiter='\t')
                    data = [a for a in mw.itervalues()]
                    data = sorted(data, key=lambda x: x[1])
                    for row in data:
                        writer.writerow(row)
                self.spectrometer.molecular_weights = mw

        #config = self.get_configuration(path=os.path.join(paths.spectrometer_dir, 'detectors.cfg'))
        #for name in config.sections():
        #    relative_position = self.config_get(config, name, 'relative_position', cast='float')
        #    color = self.config_get(config, name, 'color', default='black')
        #    default_state = self.config_get(config, name, 'default_state', default=True, cast='boolean')
        #    isotope = self.config_get(config, name, 'isotope')
        #    kind = self.config_get(config, name, 'kind', default='Faraday', optional=True)
        #    self.spectrometer.add_detector(name=name,
        #                                   relative_position=relative_position,
        #                                   color=color,
        #                                   active=default_state,
        #                                   isotope=isotope,
        #                                   kind=kind)
        self.spectrometer.load()

        return True
Пример #8
0
 def setup_source(self):
     src = IsotopeDatabaseManager(connect=False, bind=False)
     db = src.db
     db.trait_set(name='pychrondata',
                  kind='mysql',
                  host='129.138.12.160',
                  username='******',
                  password='******')
     self.source = src
Пример #9
0
 def setup_source(self):
     src = IsotopeDatabaseManager(connect=False, bind=False)
     db = src.db
     db.trait_set(name='pychrondata',
                  kind='mysql',
                  host=os.environ.get('HOST'),
                  username='******',
                  password=os.environ.get('DB_PWD'))
     self.source = src
Пример #10
0
    def _scanner_default(self):
        spec = self.spectrometer_manager.spectrometer

        s = MassCalibratorSweep(spectrometer=spec, db=IsotopeDatabaseManager())
        if spec.simulation:
            s.integration_time = 0.065536
        s.verbose = True

        return s
Пример #11
0
 def _source_default(self):
     r = IsotopeDatabaseManager(connect=False, bind=False)
     r.db.trait_set(kind='mysql',
                    host='localhost',
                    username='******',
                    password='******',
                    name='pychrondata_dev')
     r.db.connect()
     return r
Пример #12
0
    def perform(self, event):
        from pychron.entry.loaders.irradiation_holder_loader import IrradiationHolderLoader
        from pychron.database.isotope_database_manager import IsotopeDatabaseManager

        man = IsotopeDatabaseManager()
        db = man.db
        if db.connect():
            a = IrradiationHolderLoader()
            a.do_import(db)
Пример #13
0
    def load(self, db_mol_weights=True):
        spec = self.spectrometer
        mftable = spec.magnet.mftable

        self.debug('******************************* LOAD Spec')
        if db_mol_weights:
            # get the molecular weights from the database
            dbm = IsotopeDatabaseManager(application=self.application,
                                         warn=False)
            if dbm.is_connected():
                self.info('loading molecular_weights from database')
                mws = dbm.db.get_molecular_weights()
                # convert to a dictionary
                m = dict([(mi.name, mi.mass) for mi in mws])
                spec.molecular_weights = m
                mftable.db = dbm.db

        if not spec.molecular_weights:
            import csv
            # load the molecular weights dictionary
            p = os.path.join(paths.spectrometer_dir, 'molecular_weights.csv')
            if os.path.isfile(p):
                self.info('loading "molecular_weights.csv" file')
                with open(p, 'U') as f:
                    reader = csv.reader(f, delimiter='\t')
                    args = [[l[0], float(l[1])] for l in reader]
                    spec.molecular_weights = dict(args)
            else:
                self.info('writing a default "molecular_weights.csv" file')
                # make a default molecular_weights.csv file
                from pychron.spectrometer.molecular_weights import MOLECULAR_WEIGHTS as mw

                with open(p, 'U') as f:
                    writer = csv.writer(f, delimiter='\t')
                    data = [a for a in mw.itervalues()]
                    data = sorted(data, key=lambda x: x[1])
                    for row in data:
                        writer.writerow(row)
                spec.molecular_weights = mw

        self.spectrometer.load()
        mftable.spectrometer_name = self.spectrometer.name

        return True
Пример #14
0
    def _get_database_manager(self, connect=True):
        if not self._db:
            iso = IsotopeDatabaseManager(application=self.application,
                                         warn=False,
                                         version_warn=False,
                                         attribute_warn=False,
                                         connect=connect)
            self._db = iso

        return self._db
Пример #15
0
    def init(self):
        conn = dict(
            host=os.environ.get('ARGONSERVER_HOST'),
            username='******',  # os.environ.get('ARGONSERVER_DB_USER'),
            password=os.environ.get('ARGONSERVER_DB_PWD'),
            kind='mysql')

        use_local = False
        if use_local:
            meta_name = 'MetaDataDev'
            dest_conn = dict(
                host='localhost',
                username=os.environ.get('LOCALHOST_DB_USER'),
                password=os.environ.get('LOCALHOST_DB_PWD'),
                kind='mysql',
                # echo=True,
                name='pychrondvc_dev')
        else:
            meta_name = 'NMGRLMetaData'
            dest_conn = conn.copy()
            dest_conn['name'] = 'pychrondvc'

        self.dvc = DVC(bind=False,
                       organization='NMGRLData',
                       meta_repo_name=meta_name)
        paths.meta_root = os.path.join(paths.dvc_dir, self.dvc.meta_repo_name)
        self.dvc.db.trait_set(**dest_conn)
        if not self.dvc.initialize():
            self.warning_dialog('Failed to initialize DVC')
            return

        self.dvc.meta_repo.smart_pull(quiet=self.quiet)
        self.persister = DVCPersister(dvc=self.dvc,
                                      stage_files=False,
                                      bind=False)

        proc = IsotopeDatabaseManager(bind=False, connect=False)

        use_local_src = False
        if use_local_src:
            conn = dict(
                host='localhost',
                username=os.environ.get('LOCALHOST_DB_USER'),
                password=os.environ.get('LOCALHOST_DB_PWD'),
                kind='mysql',
                # echo=True,
                name='pychrondata')
        else:
            conn['name'] = 'pychrondata'

        proc.db.trait_set(**conn)
        src = proc.db
        src.connect()
        self.processor = proc
def get_project_bins(project):
    # src = self.processor.db
    src = IsotopeDatabaseManager(
        dict(
            host='localhost',
            username=os.environ.get('LOCALHOST_DB_USER'),
            password=os.environ.get('LOCALHOST_DB_PWD'),
            kind='mysql',
            # echo=True,
            name='pychrondata'))
    tol_hrs = 6
    # self.debug('bulk import project={}, pi={}'.format(project, principal_investigator))
    ts, idxs = get_project_timestamps(src.db, project, tol_hrs=tol_hrs)

    # repository_identifier = project
    # def filterfunc(x):
    #     a = x.labnumber.irradiation_position is None
    #     b = False
    #     if not a:
    #         b = x.labnumber.irradiation_position.level.irradiation.name == irradname
    #
    #     d = False
    #     if x.extraction:
    #         ed = x.extraction.extraction_device
    #         if not ed:
    #             d = True
    #         else:
    #             d = ed.name == 'Fusions CO2'
    #
    #     return (a or b) and d
    #
    for ms in ('jan', 'obama'):
        for i, ais in enumerate(array_split(ts, idxs + 1)):
            if not ais.shape[0]:
                continue

            low = get_datetime(ais[0]) - timedelta(hours=tol_hrs / 2.)
            high = get_datetime(ais[-1]) + timedelta(hours=tol_hrs / 2.)

            print ms, low, high
Пример #17
0
    def bind_preferences(self):

        # massspec
        prefid = 'pychron.massspec.database'
        bind_preference(self, 'massspec_enabled', '{}.enabled'.format(prefid))
        if self.massspec_enabled:
            from pychron.experiment.utilities.mass_spec_database_importer import MassSpecDatabaseImporter

            store = MassSpecDatabaseImporter()
            bind_preference(store.db, 'name', '{}.name'.format(prefid))
            bind_preference(store.db, 'host', '{}.host'.format(prefid))
            bind_preference(store.db, 'username', '{}.username'.format(prefid))
            bind_preference(store.db, 'password', '{}.password'.format(prefid))

            prefid = 'pychron.massspec.config'
            bind_preference(store, 'reference_detector_name',
                            '{}.reference_detector_name'.format(prefid))
            bind_preference(store, 'reference_isotope_name',
                            '{}.reference_isotope_name'.format(prefid))
            bind_preference(
                store, 'use_reference_detector_by_isotope',
                '{}.use_reference_detector_by_isotope'.format(prefid))

            self.stores['massspec'] = store

        # isotopedb
        prefid = 'pychron.pychron.database'
        bind_preference(self, 'isotopedb_enabled', '{}.enabled'.format(prefid))
        if self.isotopedb_enabled:
            from pychron.database.isotope_database_manager import IsotopeDatabaseManager
            store = IsotopeDatabaseManager()
            bind_preference(store.db, 'name', '{}.name'.format(prefid))
            bind_preference(store.db, 'host', '{}.host'.format(prefid))
            bind_preference(store.db, 'username', '{}.username'.format(prefid))
            bind_preference(store.db, 'password', '{}.password'.format(prefid))

            self.stores['isotopedb'] = store

        self.stores['dvc'] = self.mainstore
Пример #18
0
 def start(self):
     iso = IsotopeDatabaseManager()
     iso.populate_default_tables()
Пример #19
0
 def _manager_default(self):
     return IsotopeDatabaseManager(connect=False, bind=False)
Пример #20
0
            v = View('test')
            return v

    p = Permutator()
    p.path = './tests/data/config.yaml'
    logging_setup('perm')

    from pychron.database.isotope_database_manager import IsotopeDatabaseManager

    class Record(object):
        analysis_type = 'unknown'

        def __init__(self, u):
            self.uuid = u

    man = IsotopeDatabaseManager(bind=False, connect=False)
    db = man.db
    db.trait_set(kind='mysql',
                 host='localhost',
                 name='pychrondata_dev',
                 username='******',
                 password='******')
    db.connect()

    ans = man.make_analyses(
        [
            Record('65c1c4a9-e317-452b-9654-3f06efcbe664'),
            # Record('39b6e623-e178-4dc4-bf5c-14c81485bd54')
        ],
        use_cache=False,
        unpack=True)
Пример #21
0
 def start(self):
     iso = IsotopeDatabaseManager()
     iso.populate_default_tables()
Пример #22
0
 def __init__(self, connect=True, *args, **kw):
     super(MFTableHistory, self).__init__(*args, **kw)
     self.dbm = IsotopeDatabaseManager(bind=connect, connect=connect)
Пример #23
0
        self._add_meta(d)

    def _add_meta(self, d):
        print d['project'], d['sample']


if __name__ == '__main__':
    from pychron.core.helpers.logger_setup import logging_setup

    logging_setup('analysis_loader')
    # al = YAMLAnalysisLoader()
    # p = '/Users/ross/Sandbox/analysis_import_template.yml'
    # al.load_analyses(p)
    from pychron.database.isotope_database_manager import IsotopeDatabaseManager

    man = IsotopeDatabaseManager(bind=False, connect=False)
    db = man.db
    db.trait_set(kind='mysql',
                 username='******',
                 password='******',
                 host='localhost',
                 name='pychrondata_dev')
    db.connect()
    al = XLSAnalysisLoader()
    al.db = db
    al.load_analyses(
        '/Users/ross/Programming/git/pychron_dev/pychron/entry/tests/data/analysis_import.xls'
    )
    al.import_analyses()

    # al.delete_analyses()
Пример #24
0
            v = View("test")
            return v

    p = Permutator()
    p.path = "./tests/data/config.yaml"
    logging_setup("perm")

    from pychron.database.isotope_database_manager import IsotopeDatabaseManager

    class Record(object):
        analysis_type = "unknown"

        def __init__(self, u):
            self.uuid = u

    man = IsotopeDatabaseManager(bind=False, connect=False)
    db = man.db
    db.trait_set(kind="mysql", host="localhost", name="pychrondata_dev", username="******", password="******")
    db.connect()

    ans = man.make_analyses(
        [
            Record("65c1c4a9-e317-452b-9654-3f06efcbe664"),
            # Record('39b6e623-e178-4dc4-bf5c-14c81485bd54')
        ],
        use_cache=False,
        unpack=True,
    )
    # a.j = ufloat(1e-4, 1e-7)

    p.oanalyses = ans
Пример #25
0
    def _mainstore_default(self):
        mainstore = IsotopeDatabaseManager(precedence=1,
                                           connect=self.bind_mainstore,
                                           bind=self.bind_mainstore)

        return mainstore