コード例 #1
0
def new_meteorite(name, group, subgroup=None,
                  magnetic_carriers=None, iron_content=None,
                  fall=False, fall_date=None,
                  shock_stage=None,
                  comment='', notes=''):
    session = helper.connect_db()
    res = session.query(Group).filter(Group.name == group).first()
    if not res:
        res = session.query(Group).filter(Group.full_name == group).first()
    if res:
        check = session.query(Meteorite).filter(Meteorite.name == name).first()

        if check:
            print '%s already in database' % check.name
            return check
        else:
            met = Meteorite(name=name.lower(), group_id=res.id,
                            magnetic_carriers=None, iron_content=iron_content,
                            shock_stage=shock_stage,
                            fall=True, fall_date=fall_date,
                            comment=comment, notes=notes
            )
            session.add(met)
            session.commit()
            session.close()
            return res
    else:
        print '%s not found' % group
コード例 #2
0
def measurement_type(name, **kwargs):
    session = helper.connect_db()

    res = fetch.measurement_type(name)
    if not res:
        mdef = Measurement_Def(name)
        mdef.comment = kwargs.get('comment')
        mdef.notes = kwargs.get('notes')
        mdef.reference = kwargs.get('reference')

        mdef.defA = kwargs.get('defA')
        mdef.defB = kwargs.get('defB')
        mdef.defC = kwargs.get('defC')
        mdef.defD = kwargs.get('defD')
        mdef.defE = kwargs.get('defE')
        mdef.defF = kwargs.get('defF')
        mdef.defG = kwargs.get('defG')
        mdef.defH = kwargs.get('defH')
        mdef.defI = kwargs.get('defI')
        mdef.defJ = kwargs.get('defJ')
        mdef.defK = kwargs.get('defK')
        mdef.defL = kwargs.get('defL')
        mdef.defM = kwargs.get('defM')

        mdef.date_added = datetime.datetime.now()
        session.add(mdef)
        session.commit()
        return mdef
    else:
        return res
コード例 #3
0
def measurements(sample_name, type, *args, **kwargs):
    session = connect_db()
    m_out = (
        session.query(Measurement)
        .filter(Measurement.name == sample_name)
        # .filter(Measurement.measurement_type_id == measurement_type(type).id)
    ).all()
    print m_out
    return m_out
コード例 #4
0
def measurement_type(type, *args, **kwargs):
    session = connect_db()
    measurement_type = (
        session.query(Measurement_Def)
        .filter(Measurement_Def.name == type)
    ).first()
    if not measurement_type:
        '%s not implemented' % type

    return measurement_type
コード例 #5
0
def d_def(name, defA, defB=None, defC=None, comment=None, notes=None):
    session = connect_db()
    res = session.query(Data_Def).filter(Data_Def.name == name).first()
    if not res:
        D_Type = Data_Def(name, defA, defB, defC, comment, notes)
        session.add(D_Type)
    else:
        print res, 'already in database, please check defintion:'
        print res.all()

    session.commit()
コード例 #6
0
def new_sample(
    name,
    meteorite,
    intensity,
    unit,
    determination_type,
    citekey,
    intensity_error=None,
    lab_field=None,
    fit_t_min=None,
    fit_t_max=None,
    vacuum=None,
    vac_unit="",
    inert_gas=None,
    comment="",
    notes="",
):
    session = helper.connect_db()

    conversion = {"Oe": 0.0001, "mT": 1e-3, "muT": 1e-6, "torr": 133.322368, "": 1}  # to Tesla  # pascal

    if isinstance(meteorite, Meteorite):
        met_id = meteorite.id
    else:
        res = session.query(Meteorite).filter(Meteorite.name == meteorite).first()
        if res:
            met_id = res.id
    check = session.query(Sample).filter(Sample.name == name).first()
    # try:
    #     Pint_T = intensity*conversion[unit]

    if not check:
        sample = Sample(
            name=name,
            meteorite_id=met_id,
            intensity=intensity * conversion[unit],
            intensity_error=intensity_error * conversion[unit],
            determination_type=determination_type,
            citekey=citekey,
            vacuum=vacuum * conversion[vac_unit],
            inert_gas=inert_gas,
            fit_t_min=fit_t_min,
            fit_t_max=fit_t_max,
            lab_field=lab_field * conversion[unit],
            comment=comment,
            notes=notes,
        )
        session.add(sample)
        session.commit()
        session.close()
        return sample
コード例 #7
0
def show(project, s_set=None, samples='all'):
    session = connect_db()

    table = []

    if samples == 'all':
        set = session.query(SampleSet).filter(SampleSet.name == s_set).first()
        res = (
            session.query(Sample)
            # .join(SampleSet)     # It's necessary to join the "children" of Post
            .filter(Project.name == project)
            # here comes the magic:
            # you can filter with Tag, even though it was not directly joined)
            .filter(Sample.sample_set.contains(set))
        ).all()
        for S in res:
            print S.name
            print '-------------'
            d = None
            mass_measurements = (
                session.query(Measurement)
                .filter(Measurement.sample_id == S.id)
                .filter(Measurement.name == 'mass')
            ).all()
            height_measurements = (
                session.query(Measurement)
                .filter(Measurement.sample_id == S.id)
                .filter(Measurement.name == 'height')
            ).all()
            diameter_measurements = (
                session.query(Measurement)
                .filter(Measurement.sample_id == S.id)
                .filter(Measurement.name == 'diameter')
            ).all()

            for measurement in mass_measurements:
                mass_point = (
                    session.query(Data_Point)
                    .filter(Data_Point.measurement_id == measurement.id)
                ).all()
                for point in mass_point:
                    # print point.id
                    d = (session.query(Data)
                         .filter(Data.data_point_id == point.id).filter(Data.data_type_id == 1)).all()
                    # print d
                masses = [i.valA for i in d if type(i.valA)==float ]
                mass = np.mean(masses)
                print S.name, measurement.name, measurement.date_added, mass
コード例 #8
0
def exp_def(name, defA=None, defB=None, defC=None, exp_class=None, comment=None, notes=None, references=None):
    '''    logging    '''
    log = logging.getLogger(name='RockPy.experiments')
    log.debug('ESTABLISHING CONNECTION to database')
    session = connect_db()
    log.debug('TRYING \t to create new experiment definition << %s >>' % name)
    res = session.query(Experiment_Def).filter(Experiment_Def.name == name).first()
    if not res:
        e_def = Experiment_Def(name=name, defA=defA, defB=defB, defC=defC,
                               exp_class=exp_class, comment=comment, notes=notes, references=references)
        log.info('SUCCESS \t new experiment definition << %s >> created' % name)
        session.add(e_def)
    if res:
        log.warning('FAIL \t << %s >>already in database, please check defintion!' % res)
    session.commit()
    session.close()
コード例 #9
0
def meas_def(name, comment='', notes='', references='', measurement_class=None,
             defA=None, defB=None, defC=None, defD=None, defE=None, defF=None, defG=None, defH=None,
             defI=None, defJ=None, defK=None, defL=None, defM=None, defN=None, defO=None, defP=None,
             defQ=None, defR=None, defS=None, defT=None, defU=None, defV=None, defW=None, defX=None,
             defY=None, defZ=None):
    log = logging.getLogger(name='RockPy.measurements')
    log.debug('ESTABLISHING CONNECTION to database')
    session = connect_db()
    log.debug('TRYING \t to create new measurement definition << %s >>' % name)
    res = session.query(Measurement_Def).filter(Measurement_Def.name == name).first()
    if not res:
        e_def = Measurement_Def(name=name, comment=comment, notes=notes, measurement_class=measurement_class,
                               defA=defA, defB=defB, defC=defC, defD=defD, defE=defE, defF=defF, defG=defG, defH=defH,
                               defI=defI, defJ=defJ, defK=defK, defL=defL, defM=defM, defN=defN, defO=defO, defP=defP,
                               defQ=defQ, defR=defR, defS=defS, defT=defT, defU=defU, defV=defV, defW=defW, defX=defX,
                               defY=defY, defZ=defZ)
        log.info('SUCCESS \t new measurement definition << %s >> created' % name)
        session.add(e_def)
        if res:
            log.warning('FAIL \t << %s >> already in database, please check definition!' % res)
        session.commit()
        session.close()
コード例 #10
0
ファイル: hm_requester.py プロジェクト: mayo-s/phonebookdiver
import sys
import pymongo
import time
import requests
import helper

# author: Mario Schuetz
#
# Process heatmap requests
#
db = helper.connect_db('Heatmap')


# used for heatmap
def hm_query(collection, query):
    start = time.time()
    print(f'Searching for {query} in {collection}')
    results = list(db[collection].find(query, {
        '_id': 1,
        'zip': 1,
        'city': 1,
        'area_code': 1
    }))
    if results is None or len(results) <= 0:
        print('Found 0 results')
        return []
    print(f'Found {len(results)} results')
    results = sort_results_by_zip_and_city(results)
    print('Geocoding...')
    geo_list = []
    for r in results:
コード例 #11
0
    notes = Column(String(250))
    intensity = Column(Float) # always stored in T
    intensity_error = Column(Float) # always stored in T
    lab_field = Column(Float) # always stored in T
    fit_t_min = Column(Float)
    fit_t_max = Column(Float)
    determination_type = Column(String(250))
    citekey = Column(String(250))
    vacuum = Column(String(250))
    inert_gas = Column(String(250))

engine = create_engine('sqlite:///meteorite_intensity.db')
# engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)

session = helper.connect_db()

''' Kingdoms '''
diff = Kingdom(name='differentiated')
undiff = Kingdom(name='undifferentiated')
general = Kingdom(name='no kingdom')
map(session.add, [diff, undiff, general])
session.commit()
''' Categories '''
chondr = Cat(name='chondrites', kingdom_id=undiff.id)
primitive_achondr = Cat(name='primitive achondrites', kingdom_id=diff.id)
achondr = Cat(name='achondrites', kingdom_id=general.id)

map(session.add, [chondr, achondr, primitive_achondr])
session.commit()
session.flush()
コード例 #12
0
def sample_mass_dimensions(file, project, experiment, *args, **kwargs):
    """
    Import of Sample mass and dimension CSV files.

    :param:
       file: *str*
       project: *str*
       experiment: *str*

    :kwargs:
       mass_unit: *str* can specify the unit e.g. 'mg'
       length_unit: *str* can specify the unit for diameter and height e.g. 'mm'

    :filestructure:
       HEADER
       DATA

       :datastructure:
          Header:
           Sample \t mass \t height \t diameter

       :Data:
        Ia \t 435.2 \t 21.5 \t 23

    """  # Todo rewrite the info

    experiment_type = "mass & dimensions"

    db = kwargs.get("db")
    natural = kwargs.get("natural")

    readall = reader(open(file), delimiter="\t")
    readall.next()

    mass_unit = kwargs.get("mass_unit")
    length_unit = kwargs.get("length_unit")
    s_set = kwargs.get("sample_set")

    entries = []

    for row in readall:  # Loop over rows of csv file
        sample = row[0]
        mass = float(row[1])
        height = float(row[2])
        diameter = float(row[3])
        aux = [sample, mass, height, diameter]
        entries.append(aux)
        # print row

    if db:
        session = helper.connect_db()
        project = helper.check_project(session, project)
        experiment = add.experiment(session=session, name=experiment, definition="mass & dimensions")

        if s_set:
            sample_set = add.sample_set(session, s_set)

        for sample in entries:
            if project:
                sample_obj = add.sample(session=session, name=sample[0], project_id=project.id)

                if s_set:
                    sample_set.samples.append(sample_obj)

                measurement = add.measurement(
                    session=session,
                    name="mass",
                    definition="mass & dimensions",
                    sample=sample_obj,
                    experiment=experiment,
                    mtype="mass",
                )
                data_point = add.data_point(session, sample, measurement)
                data = helper.input_data(session, data_point, data=sample, definition="mass")

                measurement2 = add.measurement(
                    session=session,
                    name="height",
                    definition="mass & dimensions",
                    sample=sample_obj,
                    experiment=experiment,
                )
                data_point2 = add.data_point(session, sample, measurement2)
                data2 = helper.input_data(
                    session, data_point2, data=sample, definition="height", unit="mm", unit_type="length"
                )

                measurement3 = add.measurement(
                    session=session,
                    name="diameter",
                    definition="mass & dimensions",
                    sample=sample_obj,
                    experiment=experiment,
                )
                data_point3 = add.data_point(session, sample, measurement3)
                data3 = helper.input_data(
                    session, data_point3, data=sample, definition="diameter", unit="mm", unit_type="length"
                )
コード例 #13
0
def main():
    sess = connect_db('../../locations')