Mercurial > repos > bimib > cobraxy
comparison COBRAxy/flux_to_map.py @ 168:fa981714e87d draft
Uploaded
| author | luca_milaz |
|---|---|
| date | Mon, 18 Nov 2024 17:34:42 +0000 |
| parents | 929104dceba8 |
| children | c933b2c6a39e |
comparison
equal
deleted
inserted
replaced
| 167:eefe693b2fdd | 168:fa981714e87d |
|---|---|
| 889 return np.min(non_zero_elements) if non_zero_elements.size > 0 else None | 889 return np.min(non_zero_elements) if non_zero_elements.size > 0 else None |
| 890 | 890 |
| 891 def computeEnrichmentMeanMedian(metabMap: ET.ElementTree, class_pat: Dict[str, List[List[float]]], ids: List[str], colormap:str) -> None: | 891 def computeEnrichmentMeanMedian(metabMap: ET.ElementTree, class_pat: Dict[str, List[List[float]]], ids: List[str], colormap:str) -> None: |
| 892 """ | 892 """ |
| 893 Compute and visualize the metabolic map based on mean and median of the input fluxes. | 893 Compute and visualize the metabolic map based on mean and median of the input fluxes. |
| 894 The fluxes are normalized across classes/datasets and visualized using the given colormap. | 894 The fluxes are normalised across classes/datasets and visualised using the given colormap. |
| 895 | 895 |
| 896 Args: | 896 Args: |
| 897 metabMap (ET.ElementTree): An XML tree representing the metabolic map. | 897 metabMap (ET.ElementTree): An XML tree representing the metabolic map. |
| 898 class_pat (Dict[str, List[List[float]]]): A dictionary where keys are class names and values are lists of enrichment values. | 898 class_pat (Dict[str, List[List[float]]]): A dictionary where keys are class names and values are lists of enrichment values. |
| 899 ids (List[str]): A list of reaction IDs to be used for coloring arrows. | 899 ids (List[str]): A list of reaction IDs to be used for coloring arrows. |
| 905 metabMap_mean = copy.deepcopy(metabMap) | 905 metabMap_mean = copy.deepcopy(metabMap) |
| 906 metabMap_median = copy.deepcopy(metabMap) | 906 metabMap_median = copy.deepcopy(metabMap) |
| 907 | 907 |
| 908 # Compute medians and means | 908 # Compute medians and means |
| 909 medians = {key: np.round(np.median(np.array(value), axis=1), 6) for key, value in class_pat.items()} | 909 medians = {key: np.round(np.median(np.array(value), axis=1), 6) for key, value in class_pat.items()} |
| 910 means = {key: np.round(np.mean(np.array(value), axis=1), 6) for key, value in class_pat.items()} | 910 means = {key: np.round(np.mean(np.array(value), axis=1),6) for key, value in class_pat.items()} |
| 911 | 911 |
| 912 # Normalize medians and means | 912 # Normalize medians and means |
| 913 max_flux_medians = max(np.max(np.abs(arr)) for arr in medians.values()) | 913 max_flux_medians = max(np.max(np.abs(arr)) for arr in medians.values()) |
| 914 max_flux_means = max(np.max(np.abs(arr)) for arr in means.values()) | 914 max_flux_means = max(np.max(np.abs(arr)) for arr in means.values()) |
| 915 | 915 |
| 916 min_flux_medians = min(np.min(arr) for arr in medians.values()) | 916 min_flux_medians = min(min_nonzero_abs(arr) for arr in medians.values()) |
| 917 min_flux_means = min(np.min(arr) for arr in means.values()) | 917 min_flux_means = min(min_nonzero_abs(arr) for arr in means.values()) |
| 918 | 918 |
| 919 max_flux_medians = max(np.max(arr) for arr in medians.values()) | 919 medians = {key: median/max_flux_medians for key, median in medians.items()} |
| 920 max_flux_means = max(np.max(arr) for arr in means.values()) | 920 means = {key: mean/max_flux_means for key, mean in means.items()} |
| 921 | 921 |
| 922 save_colormap_image(min_flux_medians, max_flux_medians, utils.FilePath("Color map median", ext=utils.FileFormat.PNG, prefix=ARGS.output_path), colormap) | 922 save_colormap_image(min_flux_medians, max_flux_medians, utils.FilePath("Color map median", ext=utils.FileFormat.PNG, prefix=ARGS.output_path), colormap) |
| 923 save_colormap_image(min_flux_means, max_flux_means, utils.FilePath("Color map mean", ext=utils.FileFormat.PNG, prefix=ARGS.output_path), colormap) | 923 save_colormap_image(min_flux_means, max_flux_means, utils.FilePath("Color map mean", ext=utils.FileFormat.PNG, prefix=ARGS.output_path), colormap) |
| 924 | 924 |
| 925 cmap = plt.get_cmap(colormap) | 925 cmap = plt.get_cmap(colormap) |
| 926 | 926 |
| 927 for key in class_pat: | 927 for key in class_pat: |
| 928 # Create color mappings for median and mean | 928 # Create color mappings for median and mean |
| 929 colors_median = { | 929 colors_median = { |
| 930 rxn_id: rgb_to_hex(cmap((medians[key][i] - min_flux_medians) / (max_flux_medians - min_flux_medians))) if medians[key][i] != 0 else '#bebebe' #grey blocked | 930 rxn_id: rgb_to_hex(cmap(abs(medians[key][i]))) if medians[key][i] != 0 else '#bebebe' #grey blocked |
| 931 for i, rxn_id in enumerate(ids) | 931 for i, rxn_id in enumerate(ids) |
| 932 } | 932 } |
| 933 | 933 |
| 934 colors_mean = { | 934 colors_mean = { |
| 935 rxn_id: rgb_to_hex(cmap((means[key][i] - min_flux_means) / (max_flux_means - min_flux_means))) if means[key][i] != 0 else '#bebebe' #grey blocked | 935 rxn_id: rgb_to_hex(cmap(abs(means[key][i]))) if means[key][i] != 0 else '#bebebe' #grey blocked |
| 936 for i, rxn_id in enumerate(ids) | 936 for i, rxn_id in enumerate(ids) |
| 937 } | 937 } |
| 938 | 938 |
| 939 for i, rxn_id in enumerate(ids): | 939 for i, rxn_id in enumerate(ids): |
| 940 isNegative = medians[key][i] < 0 | 940 isNegative = medians[key][i] < 0 |
