Source code for metquest.generate_partitions

# -*- coding: utf-8 -*-

from __future__ import absolute_import

from itertools import product


[docs]def generate_partitions(maximumvalue, lbnumlist, columnvalue): """ This code takes as input the columnvalue (j), values of the shortest path of each of the metabolites (given as a list) and the sum that has to be obtained using these combination of numbers. Parameters ---------- maximumvalue : int Maximum values which the numbers can take lbnumlist : list a list of values pertaining to the length of shortest paths of every metabolite columnvalue : int Desired sum to be obtained All the partitions of numbers which will generate the desired sum whose values are between the values for shortest paths and the maximum values. Returns ------- all_partitions : List of tuples Notes ----- For instance, if the column value is 7, the number of imputs is 2, and the shortest path of the metabolites is 4,3 respectively, and the maximum sum that has to be obtained is 8, then >>> generate_partitions(7,[4,3],8) [(4, 4), (5, 3)] >>> generate_partitions(4, [2,1,1], 5) [(2, 1, 2), (2, 2, 1), (3, 1, 1)] """ all_combinations = [] for entry in lbnumlist: all_combinations.append(list(range(entry, columnvalue + 1))) all_partitions = [] for partitions in product(*all_combinations): if sum(partitions) == maximumvalue: all_partitions.append(partitions) return all_partitions