def __init__(self, db_root): """ Create project x-ray Database at given db_root. db_root: Path to directory containing settings.sh, *.db, tilegrid.json and tileconn.json """ self.db_root = db_root # tilegrid.json JSON object self.tilegrid = None self.tileconn = None self.tile_types = None self.tile_types = {} self.tile_segbits = {} self.site_types = {} for f in os.listdir(self.db_root): if f.endswith('.json') and f.startswith('tile_type_'): tile_type = f[len('tile_type_'):-len('.json')].lower() segbits = os.path.join(self.db_root, 'segbits_{}.db'.format(tile_type)) if not os.path.isfile(segbits): segbits = None ppips = os.path.join(self.db_root, 'ppips_{}.db'.format(tile_type)) if not os.path.isfile(ppips): ppips = None mask = os.path.join(self.db_root, 'mask_{}.db'.format(tile_type)) if not os.path.isfile(mask): mask = None tile_type_file = os.path.join( self.db_root, 'tile_type_{}.json'.format(tile_type.upper())) if not os.path.isfile(tile_type_file): tile_type_file = None self.tile_types[tile_type.upper()] = tile.TileDbs( segbits=segbits, ppips=ppips, mask=mask, tile_type=tile_type_file, ) if f.endswith('.json') and f.startswith('site_type_'): site_type_name = f[len('site_type_'):-len('.json')] self.site_types[site_type_name] = os.path.join(self.db_root, f) self.tile_types_obj = {}
def __init__(self, db_root, part): """ Create project x-ray Database at given db_root. db_root: Path to directory containing settings.sh, *.db, tilegrid.json and tileconn.json """ self.db_root = db_root self.part = part # tilegrid.json JSON object self.tilegrid = None self.tileconn = None self.tile_types = None self.tile_types = {} self.tile_segbits = {} self.site_types = {} self.required_features = {} for f in os.listdir(self.db_root): if f.endswith('.json') and f.startswith('tile_type_'): tile_type = f[len('tile_type_'):-len('.json')].lower() segbits = os.path.join( self.db_root, 'segbits_{}.db'.format(tile_type)) if not os.path.isfile(segbits): segbits = None block_ram_segbits = os.path.join( self.db_root, 'segbits_{}.block_ram.db'.format(tile_type)) if not os.path.isfile(block_ram_segbits): block_ram_segbits = None ppips = os.path.join( self.db_root, 'ppips_{}.db'.format(tile_type)) if not os.path.isfile(ppips): ppips = None mask = os.path.join( self.db_root, 'mask_{}.db'.format(tile_type)) if not os.path.isfile(mask): mask = None tile_type_file = os.path.join( self.db_root, 'tile_type_{}.json'.format( tile_type.upper())) if not os.path.isfile(tile_type_file): tile_type_file = None self.tile_types[tile_type.upper()] = tile.TileDbs( segbits=segbits, block_ram_segbits=block_ram_segbits, ppips=ppips, mask=mask, tile_type=tile_type_file, ) if f.endswith('.json') and f.startswith('site_type_'): site_type_name = f[len('site_type_'):-len('.json')] self.site_types[site_type_name] = os.path.join(self.db_root, f) required_features_path = os.path.join( self.db_root, self.part, "required_features.fasm") if os.path.isfile(required_features_path): with open(required_features_path, "r") as fp: features = [] for line in fp: line = line.strip() if len(line) > 0: features.append(line) self.required_features[self.part] = set(features) self.tile_types_obj = {}