Source code for pml.load_csv

import os
import csv
from pml import lattice, element, device


[docs]def load(mode, control_system, directory=None): ''' Load a lattice object from a directory. Parameters: mode: the mode to be loaded control_system: control system to be used directory: directory where to load the files from. If no directory is given that the data directory at the root of the repository is used. ''' if directory is None: directory = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'data') lat = lattice.Lattice(mode, control_system, 1) with open(os.path.join(directory, mode, 'elements.csv')) as elements: csv_reader = csv.DictReader(elements) for item in csv_reader: e = element.Element(item['name'], float(item['length']), item['type']) e.add_to_family(item['type']) lat.add_element(e) with open(os.path.join(directory, mode, 'devices.csv')) as devices: csv_reader = csv.DictReader(devices) for item in csv_reader: d = device.Device(control_system, item['get_pv'], item['set_pv']) lat[int(item['id']) - 1].add_device(item['field'], d, None) with open(os.path.join(directory, mode, 'families.csv')) as families: csv_reader = csv.DictReader(families) for item in csv_reader: lat[int(item['id']) - 1].add_to_family(item['family']) return lat