Source code for vivarium.library.look_up

from __future__ import absolute_import, division, print_function

import os
import csv
import random
from vivarium.data.spreadsheets import load_tsv

FLAT_DIR = os.path.join('vivarium', 'data', 'flat')
MEDIA_IDS = ['minimal', 'minimal_minus_oxygen', 'minimal_plus_amino_acids']
FLUX_STR = 'lookup_flux_'

[docs]class LookUp(object): def __init__(self): self.lookup_avg = {media_id: {} for media_id in MEDIA_IDS} self.lookup_dist = {media_id: {} for media_id in MEDIA_IDS} for media_id in MEDIA_IDS: filename=os.path.join(FLAT_DIR, FLUX_STR + media_id + '.tsv') avg, dist = load_lookup(filename) self.lookup_avg[media_id].update(avg) self.lookup_dist[media_id].update(dist)
[docs] def look_up(self, lookup_type, media, keys): ''' return look up values for each key in keys''' values = {} if lookup_type == 'average': values = { key: self.lookup_avg[media].get(key, None) for key in keys} if lookup_type == 'distribution': values = { key: random.choice(self.lookup_avg[media].get(key, None)) for key in keys} return values
[docs]def load_lookup(filename): ''' load a file and pass back dicts with lookup_avg and lookup_dist''' lookup_avg = {} lookup_dist = {} rows = load_tsv(filename) for row in rows: key = row.get('id') avg = row.get('average') dist = row.get('distribution') # check if empty distribution if dist: dist = [float(value) for value in dist] else: dist=[0] lookup_avg[key] = avg lookup_dist[key] = dist return lookup_avg, lookup_dist