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 | 
