Пример #1
0
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
Пример #2
0
    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])))