Пример #1
0
def suites(stid=None):
    session_init(session, db)
    suites = []
    if stid is None:
        for st in db.filtered_query('suite'):
            name, notes, person_id = st.name, st.notes, st.person_id
            person_email = db.get_person(person_id).email
            spectra = spectra_for_suite(db, st.id)

            is_owner = (int(session['person_id']) == int(st.person_id))
            suites.append({'id': st.id, 'name': name, 'notes': notes,
                           'person_email': person_email,
                           'rating': get_rating(st),
                           'suite_owner': is_owner,
                           'nspectra': len(spectra), 'spectra': spectra})

    else:
        st = db.filtered_query('suite', id=stid)[0]
        name, notes, person_id = st.name, st.notes, st.person_id
        person_email = db.get_person(person_id).email
        spectra = spectra_for_suite(db, stid)

        is_owner = (int(session['person_id']) == int(st.person_id))
        suites.append({'id': stid, 'name': name, 'notes': notes,
                       'person_email': person_email,
                       'rating': get_rating(st),
                       'suite_owner': is_owner,
                       'nspectra': len(spectra), 'spectra': spectra})
    return render_template('suites.html', nsuites=len(suites), suites=suites)
Пример #2
0
def all():
    session_init(session, db)
    spectra = []
    dbspectra = db.get_spectra()
    for s in dbspectra:
        edge = db.get_edge(s.edge_id)
        elem_sym = db.get_element(s.element_z).symbol
        elem = s.element_z
        person = db.get_person(s.person_id)

        bl_id, bl_desc = beamline_for_spectrum(db, s)

        spectra.append({
            'id': s.id,
            'name': s.name,
            'element': elem,
            'edge': edge.name,
            'person_email': person.email,
            'person_name': person.name,
            'elem_sym': elem_sym,
            'rating': get_rating(s),
            'beamline_desc': bl_desc,
            'beamline_id': bl_id,
        })

    return render_template('ptable.html',
                           nspectra=len(dbspectra),
                           elem='All Elements',
                           spectra=spectra)
Пример #3
0
def parse_review_page(restaurant: Restaurant, page: BeautifulSoup) -> Review:
    title = page.find("div", class_="quote").text.strip()
    score = utils.get_rating(page)

    username = page.find(class_="member_info").find(class_="username").text

    text = utils.get_text_with_breaks(page.find("p", class_="partial_entry"))

    visit_date_span = page.find(class_="prw_rup prw_reviews_stay_date_hsx")
    visit_date_text = visit_date_span.contents[1].strip()
    date = datetime.datetime.strptime(visit_date_text, '%B %Y').date()

    response_div = page.find(class_="mgrRspnInline")
    if response_div:
        response_element = response_div.find(class_="partial_entry")
        response = utils.get_text_with_breaks(response_element)
    else:
        response = None

    return Review(restaurant=restaurant,
                  user=username,
                  title=title,
                  text=text,
                  visit_date=date,
                  score=score,
                  response=response)
Пример #4
0
def all():
    session_init(session, db)
    spectra = []
    dbspectra = db.get_spectra()
    for s in dbspectra:
        edge     = db.get_edge(s.edge_id)
        elem_sym = db.get_element(s.element_z).symbol
        elem     = s.element_z
        person   = db.get_person(s.person_id)

        bl_id, bl_desc = beamline_for_spectrum(db, s)

        spectra.append({'id': s.id,
                        'name': s.name,
                        'element': elem,
                        'edge': edge.name,
                        'person_email': person.email,
                        'person_name': person.name,
                        'elem_sym': elem_sym,
                        'rating': get_rating(s),
                        'beamline_desc': bl_desc,
                        'beamline_id': bl_id,
                        })

    return render_template('ptable.html', nspectra=len(dbspectra),
                           elem='All Elements', spectra=spectra)
Пример #5
0
def suites(stid=None):
    session_init(session, db)
    suites = []
    if stid is None:
        for st in db.filtered_query('suite'):
            name, notes, person_id = st.name, st.notes, st.person_id
            person_email = db.get_person(person_id).email
            spectra = spectra_for_suite(db, st.id)

            is_owner = (int(session['person_id']) == int(st.person_id))
            suites.append({
                'id': st.id,
                'name': name,
                'notes': notes,
                'person_email': person_email,
                'rating': get_rating(st),
                'suite_owner': is_owner,
                'nspectra': len(spectra),
                'spectra': spectra
            })

    else:
        st = db.filtered_query('suite', id=stid)[0]
        name, notes, person_id = st.name, st.notes, st.person_id
        person_email = db.get_person(person_id).email
        spectra = spectra_for_suite(db, stid)

        is_owner = (int(session['person_id']) == int(st.person_id))
        suites.append({
            'id': stid,
            'name': name,
            'notes': notes,
            'person_email': person_email,
            'rating': get_rating(st),
            'suite_owner': is_owner,
            'nspectra': len(spectra),
            'spectra': spectra
        })
    return render_template('suites.html', nsuites=len(suites), suites=suites)
Пример #6
0
def index():
    if request.method == 'POST':
        salary_data = get_salary(
            request.form['first'],
            request.form['last']
            )
        full_name = salary_data['full_name']
        salary = salary_data['salary']
        # If the NYC Database does not have an entry with the given name,
        # scrape ratemyteachers.com for the teacher with the closest name
        # at the given school, and then attempt to get the salary data again.
        if not salary:
            name_and_rating_data = get_name_and_rating(
                full_name,
                request.form['school']
                )
            subject = name_and_rating_data['subject']
            rating = name_and_rating_data['rating']
            num_ratings = name_and_rating_data['num_ratings']
            salary_data = get_salary(
                name_and_rating_data['first_name'],
                name_and_rating_data['last_name']
                )
            full_name = salary_data['full_name']
            salary = salary_data['salary']
        # Otherwise, only use ratemyteachers.com to get the rating.
        else:
            rating_data = get_rating(
                salary_data['full_name'],
                request.form['school']
                )
            subject = rating_data['subject']
            rating = rating_data['rating']
            num_ratings = rating_data['num_ratings']
        #photo = get_photo(full_name, request.form['school'])
        efficiency = get_efficiency(salary, rating)
        return render_template(
            'results.html',
            full_name = full_name,
            subject = subject,
            salary = salary,
            rating = rating,
            num_ratings = num_ratings,
            photo = None, #photo,
            efficiency = efficiency
            )
    return render_template('index.html')
Пример #7
0
def edit_suite(stid=None):
    session_init(session, db)
    error=None
    if session['username'] is None:
        error='must be logged in to edit suite'
        return render_template('ptable.html', error=error)

    st = db.filtered_query('suite', id=stid)[0]
    name, notes, person_id = st.name, st.notes, st.person_id
    person_email = db.get_person(person_id).email
    spectra = spectra_for_suite(db, stid)

    is_owner = (int(session['person_id']) == int(st.person_id))
    opts = {'id': stid, 'name': name, 'notes': notes,
            'person_email': person_email,
            'rating': get_rating(st),
            'suite_owner': is_owner,
            'nspectra': len(spectra), 'spectra': spectra}
    return render_template('edit_suite.html', **opts)
Пример #8
0
def search(elem=None, orderby=None, reverse=0):
    session_init(session, db)
    dbspectra = []
    if orderby is None: orderby = 'id'
    if elem is not None:
        try:
            dbspectra = db.get_spectra(element=elem, orderby=orderby)
        except:
            pass

    reverse = int(reverse)
    if reverse:
        dbspectra.reverse()
        reverse = 0
    else:
        reverse = 1

    spectra = []
    for s in dbspectra:
        edge = db.get_edge(s.edge_id)
        elem_sym = db.get_element(s.element_z).symbol
        person = db.get_person(s.person_id)
        bl_id, bl_desc = beamline_for_spectrum(db, s)

        spectra.append({
            'id': s.id,
            'name': s.name,
            'element': elem,
            'edge': edge.name,
            'person_email': person.email,
            'person_name': person.name,
            'elem_sym': elem_sym,
            'rating': get_rating(s),
            'beamline_desc': bl_desc,
            'beamline_id': bl_id,
        })

    return render_template('ptable.html',
                           nspectra=len(dbspectra),
                           elem=elem,
                           spectra=spectra,
                           reverse=reverse)
Пример #9
0
def search(elem=None, orderby=None, reverse=0):
    session_init(session, db)
    dbspectra = []
    if orderby is None: orderby = 'id'
    if elem is not None:
        try:
            dbspectra = db.get_spectra(element=elem, orderby=orderby)
        except:
            pass

    reverse = int(reverse)
    if reverse:
        dbspectra.reverse()
        reverse = 0
    else:
        reverse = 1

    spectra = []
    for s in dbspectra:
        edge     = db.get_edge(s.edge_id)
        elem_sym = db.get_element(s.element_z).symbol
        person   = db.get_person(s.person_id)
        bl_id, bl_desc = beamline_for_spectrum(db, s)

        spectra.append({'id': s.id,
                        'name': s.name,
                        'element': elem,
                        'edge': edge.name,
                        'person_email': person.email,
                        'person_name': person.name,
                        'elem_sym': elem_sym,
                        'rating': get_rating(s),
                        'beamline_desc': bl_desc,
                        'beamline_id': bl_id,
                        })

    return render_template('ptable.html', nspectra=len(dbspectra),
                           elem=elem, spectra=spectra,
                           reverse=reverse)
Пример #10
0
def edit_suite(stid=None):
    session_init(session, db)
    error = None
    if session['username'] is None:
        error = 'must be logged in to edit suite'
        return render_template('ptable.html', error=error)

    st = db.filtered_query('suite', id=stid)[0]
    name, notes, person_id = st.name, st.notes, st.person_id
    person_email = db.get_person(person_id).email
    spectra = spectra_for_suite(db, stid)

    is_owner = (int(session['person_id']) == int(st.person_id))
    opts = {
        'id': stid,
        'name': name,
        'notes': notes,
        'person_email': person_email,
        'rating': get_rating(st),
        'suite_owner': is_owner,
        'nspectra': len(spectra),
        'spectra': spectra
    }
    return render_template('edit_suite.html', **opts)
Пример #11
0
def spectrum(spid=None):
    session_init(session, db)
    s = db.get_spectrum(spid)
    if s is None:
        error = 'Could not find Spectrum #%i' % spid
        return render_template('ptable.html', error=error)

    opts = parse_spectrum(s, db)
    opts['spectrum_owner'] = (session['person_id'] == "%i" % s.person_id)
    opts['rating'] = get_rating(s)

    modes = db.get_spectrum_mode(spid)
    if modes is None:
        modes = 1
    else:
        modes = modes[0][1]

    if modes == 1:
        try:
            energy = np.array(json.loads(s.energy))
            i0 = np.array(json.loads(s.i0))
            itrans = np.array(json.loads(s.itrans))
            mutrans = -np.log(itrans / i0)
        except:
            error = 'Could not extract data from spectrum'
            return render_template('spectrum.html', **opts)
    else:  #get a fluorescence
        try:
            energy = np.array(json.loads(s.energy))
            i0 = np.array(json.loads(s.i0))
            ifluor = np.array(json.loads(s.ifluor))
            mutrans = ifluor / i0
        except:
            error = 'Could not extract data from spectrum'
            return render_template('spectrum.html', **opts)

    murefer = None
    try:
        irefer = np.array(json.loads(s.irefer))
        murefer = -np.log(irefer / itrans)
    except:
        pass

    eunits = opts['energy_units']
    if eunits.startswith('keV'):
        energy = energy / 1000.0
    elif eunits.startswith('deg'):
        print 'Need to convert angle to energy'

    if modes != 7:
        group = preedge(energy, mutrans)
        e0 = group['e0']
    try:
        e0 = edge_energies[int(s.element_z)][str(opts['edge'])]
    except:
        pass

    try:
        i1 = max(np.where(energy <= e0 - 25)[0])
    except:
        i1 = 0
    i2 = max(np.where(energy <= e0 + 75)[0]) + 1
    xanes_en = energy[i1:i2] - e0

    if modes != 3:
        xanes_mu = group['norm'][i1:i2]
    else:
        xanes_mu = mutrans[i1:i2]

    xanes_ref = None
    if murefer is not None:
        rgroup = preedge(energy, murefer)
        xanes_ref = rgroup['norm'][i1:i2]

    opts['e0'] = '%f' % e0
    opts['fullfig'] = make_xafs_plot(energy,
                                     mutrans,
                                     s.name,
                                     ylabel='Raw XAFS')

    opts['xanesfig'] = make_xafs_plot(xanes_en,
                                      xanes_mu,
                                      s.name,
                                      xlabel='Energy-%.1f (eV)' % e0,
                                      ylabel='Normalized XANES',
                                      x0=e0,
                                      ref_mu=xanes_ref,
                                      ref_name='with reference')

    suites = []
    for r in db.filtered_query('spectrum_suite', spectrum_id=s.id):
        st = db.filtered_query('suite', id=r.suite_id)[0]
        suites.append({'id': r.suite_id, 'name': st.name})
    opts['nsuites'] = len(suites)
    opts['suites'] = suites

    return render_template('spectrum.html', **opts)
Пример #12
0
import utils
import json
from collections import defaultdict
import time

IN_FILE = 'electro.json'
OUT_FILE = 'new_electro.json'

f = open(IN_FILE)
data = json.load(f)

new_data = defaultdict(dict)

for k in data:
    release_id = data[k][0]
    try:
        (rating, count) = utils.get_rating(release_id)
        new_data[k] = defaultdict(dict)
        new_data[k]['release_id'] = release_id
        new_data[k]['rating'] = rating
        new_data[k]['count'] = count
        print "%s: %s/%s" % (release_id, rating,count)
        time.sleep(1)
    except Exception:
        continue


w = open(OUT_FILE,'w')
json.dump(new_data, w)
Пример #13
0
def spectrum(spid=None):
    session_init(session, db)
    s  = db.get_spectrum(spid)
    if s is None:
        error = 'Could not find Spectrum #%i' % spid
        return render_template('ptable.html', error=error)

    opts = parse_spectrum(s, db)
    opts['spectrum_owner'] = (session['person_id'] == "%i" % s.person_id)
    opts['rating'] = get_rating(s)

    modes = db.get_spectrum_mode(spid)
    if modes is None:
        modes = 1
    else:
        modes = modes[0][1]

    if modes == 1:
        try:
            energy = np.array(json.loads(s.energy))
            i0     = np.array(json.loads(s.i0))
            itrans = np.array(json.loads(s.itrans))
            mutrans = -np.log(itrans/i0)
        except:
            error = 'Could not extract data from spectrum'
            return render_template('spectrum.html', **opts)
    else: #get a fluorescence
        try:
            energy = np.array(json.loads(s.energy))
            i0     = np.array(json.loads(s.i0))
            ifluor = np.array(json.loads(s.ifluor))
            mutrans = ifluor/i0
        except:
            error = 'Could not extract data from spectrum'
            return render_template('spectrum.html', **opts)

    murefer = None
    try:
        irefer = np.array(json.loads(s.irefer))
        murefer = -np.log(irefer/itrans)
    except:
        pass


    eunits = opts['energy_units']
    if eunits.startswith('keV'):
        energy = energy /1000.0
    elif eunits.startswith('deg'):
        print 'Need to convert angle to energy'


    if modes != 7:
        group = preedge(energy, mutrans)
        e0 = group['e0']
    try:
        e0 = edge_energies[int(s.element_z)][str(opts['edge'])]
    except:
        pass

    try:
        i1 = max(np.where(energy<=e0 - 25)[0])
    except:
        i1 = 0
    i2 = max(np.where(energy<=e0 + 75)[0]) + 1
    xanes_en = energy[i1:i2] - e0
    
    if modes !=3:
        xanes_mu = group['norm'][i1:i2]
    else:
        xanes_mu = mutrans[i1:i2]
        
    xanes_ref = None
    if murefer is not None:
        rgroup = preedge(energy, murefer)
        xanes_ref = rgroup['norm'][i1:i2]

    opts['e0'] = '%f' % e0
    opts['fullfig'] =  make_xafs_plot(energy, mutrans, s.name,
                                      ylabel='Raw XAFS')

    opts['xanesfig'] = make_xafs_plot(xanes_en, xanes_mu, s.name,
                                      xlabel='Energy-%.1f (eV)' % e0,
                                      ylabel='Normalized XANES',
                                      x0=e0, ref_mu=xanes_ref,
                                      ref_name='with reference')

    suites = []
    for r in db.filtered_query('spectrum_suite', spectrum_id=s.id):
        st = db.filtered_query('suite', id=r.suite_id)[0]
        suites.append({'id': r.suite_id, 'name': st.name})
    opts['nsuites'] = len(suites)
    opts['suites'] = suites

    return render_template('spectrum.html', **opts)