comparison COBRAxy/flux_to_map.py @ 302:753347af8bc9 draft

Uploaded
author francesco_lapi
date Tue, 20 May 2025 14:49:15 +0000
parents 626b6d1de075
children
comparison
equal deleted inserted replaced
301:5a595a737220 302:753347af8bc9
269 269
270 class ArrowColor(Enum): 270 class ArrowColor(Enum):
271 """ 271 """
272 Encodes possible arrow colors based on their meaning in the enrichment process. 272 Encodes possible arrow colors based on their meaning in the enrichment process.
273 """ 273 """
274 Invalid = "#BEBEBE" # gray, fold-change under treshold 274 Invalid = "#BEBEBE" # gray, fold-change under treshold or not significant p-value
275 Transparent = "#ffffff00" # white, not significant p-value 275 Transparent = "#ffffff00" # transparent, to make some arrow segments disappear
276 UpRegulated = "#ecac68" # red, up-regulated reaction 276 UpRegulated = "#ecac68" # red, up-regulated reaction
277 DownRegulated = "#6495ed" # blue, down-regulated reaction 277 DownRegulated = "#6495ed" # blue, down-regulated reaction
278 278
279 UpRegulatedInv = "#FF0000" 279 UpRegulatedInv = "#FF0000"
280 # ^^^ different shade of red (actually orange), up-regulated net value for a reversible reaction with 280 # ^^^ different shade of red (actually orange), up-regulated net value for a reversible reaction with
623 match ARGS.test: 623 match ARGS.test:
624 case "ks": 624 case "ks":
625 # Perform Kolmogorov-Smirnov test 625 # Perform Kolmogorov-Smirnov test
626 _, p_value = st.ks_2samp(dataset1Data, dataset2Data) 626 _, p_value = st.ks_2samp(dataset1Data, dataset2Data)
627 case "ttest_p": 627 case "ttest_p":
628 # Datasets should have same size
629 if len(dataset1Data) != len(dataset2Data):
630 raise ValueError("Datasets must have the same size for paired t-test.")
628 # Perform t-test for paired samples 631 # Perform t-test for paired samples
629 _, p_value = st.ttest_rel(dataset1Data, dataset2Data) 632 _, p_value = st.ttest_rel(dataset1Data, dataset2Data)
630 case "ttest_ind": 633 case "ttest_ind":
631 # Perform t-test for independent samples 634 # Perform t-test for independent samples
632 _, p_value = st.ttest_ind(dataset1Data, dataset2Data) 635 _, p_value = st.ttest_ind(dataset1Data, dataset2Data)
633 case "wilcoxon": 636 case "wilcoxon":
637 # Datasets should have same size
638 if len(dataset1Data) != len(dataset2Data):
639 raise ValueError("Datasets must have the same size for Wilcoxon signed-rank test.")
634 # Perform Wilcoxon signed-rank test 640 # Perform Wilcoxon signed-rank test
635 _, p_value = st.wilcoxon(dataset1Data, dataset2Data) 641 _, p_value = st.wilcoxon(dataset1Data, dataset2Data)
636 case "mw": 642 case "mw":
637 # Perform Mann-Whitney U test 643 # Perform Mann-Whitney U test
638 _, p_value = st.mannwhitneyu(dataset1Data, dataset2Data) 644 _, p_value = st.mannwhitneyu(dataset1Data, dataset2Data)
672 except (TypeError, ZeroDivisionError): continue 678 except (TypeError, ZeroDivisionError): continue
673 679
674 # Apply multiple testing correction if set by the user 680 # Apply multiple testing correction if set by the user
675 if ARGS.adjusted: 681 if ARGS.adjusted:
676 682
677 # Retrive the p-values from the comparisonResult dictionary 683 # Retrieve the p-values from the comparisonResult dictionary, they have to be different from NaN
678 reactIds = list(comparisonResult.keys()) 684 validPValues = [(reactId, result[0]) for reactId, result in comparisonResult.items() if not np.isnan(result[0])]
679 pValues = [comparisonResult[reactId][0] for reactId in reactIds] 685
680 686 if not validPValues:
681 # Apply the Benjamini-Hochberg correction and update 687 return comparisonResult, max_z_score
682 adjustedPValues = st.multipletests(pValues, method="fdr_bh")[1] 688
683 for i, reactId in enumerate(reactIds): 689 # Unpack the valid p-values
684 comparisonResult[reactId][0] = adjustedPValues[i] 690 reactIds, pValues = zip(*validPValues)
691 # Adjust the p-values using the Benjamini-Hochberg method
692 adjustedPValues = st.false_discovery_control(pValues)
693 # Update the comparisonResult dictionary with the adjusted p-values
694 for reactId , adjustedPValue in zip(reactIds, adjustedPValues):
695 comparisonResult[reactId][0] = adjustedPValue
685 696
686 return comparisonResult, max_z_score 697 return comparisonResult, max_z_score
687 698
688 def computeEnrichment(class_pat :Dict[str, List[List[float]]], ids :List[str]) -> List[Tuple[str, str, dict, float]]: 699 def computeEnrichment(class_pat :Dict[str, List[List[float]]], ids :List[str]) -> List[Tuple[str, str, dict, float]]:
689 """ 700 """