def get_used_system(self): m_ids = {m_id for (m_id, i) in self.m_id2i.items() if get_len(self.N[i, :])} r_ids = {r_id for (r_id, i) in self.r_id2i.items() if get_len(self.V[i, :])} r_id2i = {r_id: i for (i, r_id) in enumerate(r_ids)} m_id2i = {m_id: i for (i, m_id) in enumerate(m_ids)} efm_id2i = self.efm_id2i V = self.get_main_V(r_id2i=r_id2i, efm_id2i=efm_id2i) N = self.get_main_N(r_id2i=r_id2i, m_id2i=m_id2i) return System(N=N, V=V, r_id2i=r_id2i, m_id2i=m_id2i, efm_id2i=efm_id2i, boundary_m_ids=sorted(set(self.boundary_m_ids) & m_ids))
def test_len(self): V = np.array([[1, 0, 1], [1, 0, 0], [0, 10, 0], [0, 10, 0]]) v = V[:, 0] v_len = get_len(v) self.assertEqual(2, v_len, 'EFM length was supposed to be 2, got %d' % v_len)
def remove_unused_metabolites(self): self.m_ids = {m_id for (m_id, i) in self.m_id2i.items() if get_len(self.N[i, [self.r_id2i[r_id] for r_id in self.r_ids]])}
def get_len(self, efm_id, r_ids=None): return get_len(self.V[[self.r_id2i[r_id] for r_id in (r_ids if r_ids else self.r_ids)], self.efm_id2i[efm_id]])