def get_population_snapshot(iterations_id: int, n_snapshot: int) -> np.array: db_iter = MongoDBConnection.get_iterations_db() iter_obj = db_iter.find_one({'_id': iterations_id}) populations_documents = MongoDBConnection.get_population_gridfs() file_id = iter_obj['snapshots_population_documents'][n_snapshot] with populations_documents.get(file_id) as f: population_objs = np.load(f) return population_objs
def get_population(iterations_id: int) -> List[np.array]: db_iter = MongoDBConnection.get_iterations_db() iter_obj = db_iter.find_one({'_id': iterations_id}) populations_documents = MongoDBConnection.get_population_gridfs() population_objs = [] for file_id in iter_obj['snapshots_population_documents']: with populations_documents.get(file_id) as f: population_objs.append(np.load(f)) return population_objs
def save_population(iterations_id: int, whole_population: List[np.array]): db = MongoDBConnection.get_population_gridfs() gridfs_ids = [-1] * len(whole_population) for n_snapshot, population in enumerate(whole_population): with db.new_file() as f: gridfs_ids[n_snapshot] = f._id np.save(f, population) db_iter = MongoDBConnection.get_iterations_db() db_iter.update_one( {'_id': iterations_id}, {'$set': { 'snapshots_population_documents': gridfs_ids }})