def pick_up_intermediate_cone(internal_metabolites, network, intermediate_cone_path): with open(intermediate_cone_path) as file: header = file.readline() metab_ids_intermediate = header.split(',') if metab_ids_intermediate[-1][-1:] == '\n': metab_ids_intermediate[-1] = metab_ids_intermediate[-1][:-1] R_transpose = np.genfromtxt(intermediate_cone_path, dtype='str', delimiter=',', skip_header=1) R = np.transpose(to_fractions(R_transpose)) new_netw_metabs = [] for metab_id in metab_ids_intermediate: new_netw_metabs.append([ metab for metab in network.metabolites if metab.id == metab_id ][0]) network.metabolites = new_netw_metabs internal_metabolites = [ ind for ind, metab in enumerate(network.metabolites) if not metab.is_external ] network.N = R return R, internal_metabolites, network
if args.direct: # Direct intersection method R = network.N external = np.asarray(network.external_metabolite_indices()) internal = np.setdiff1d(range(R.shape[0]), external) T_intersected, ids = intersect_directly( R, internal, network, verbose=args.verbose, sort_order=args.sort_order, manual_override=args.manual_override, intermediate_cone_path=args.intermediate_cone_path) if external_cycles: external_cycles_array = to_fractions( np.zeros((T_intersected.shape[0], len(external_cycles)))) for ind, cycle in enumerate(external_cycles): for cycle_metab in cycle: metab_ind = [ ind for ind, metab in enumerate(ids) if metab == cycle_metab ][0] external_cycles_array[metab_ind, ind] = cycle[cycle_metab] T_intersected = np.concatenate( (T_intersected, external_cycles_array, -external_cycles_array), axis=1) cone = np.transpose(T_intersected) else: if args.iterative:
def unique(matrix): unique_set = list( {tuple(row) for row in matrix if np.count_nonzero(row) > 0}) return np.vstack(unique_set) if len(unique_set) else to_fractions( np.ndarray(shape=(0, matrix.shape[1])))