Skip to content

Instantly share code, notes, and snippets.

@drbh
Created August 19, 2025 19:54
Show Gist options
  • Save drbh/9b1959121407773f0ef39afaccf2c2a8 to your computer and use it in GitHub Desktop.
Save drbh/9b1959121407773f0ef39afaccf2c2a8 to your computer and use it in GitHub Desktop.
get pairwise DE genes for each gene in the set
Target: CHMP3, DE genes: 3508
Target: AKT2, DE genes: 908
Target: SHPRH, DE genes: 121
Target: TMSB4X, DE genes: 291
Target: KLF10, DE genes: 6500
Target: TARBP2, DE genes: 1073
Target: KDM2B, DE genes: 4582
Target: non-targeting, DE genes: 0
Target: SV2A, DE genes: 198
Target: CLDN6, DE genes: 124
Target: TCF3, DE genes: 486
Target: ANTXR1, DE genes: 25
Target: NDUFB6, DE genes: 1689
Target: TADA1, DE genes: 10835
Target: MED12, DE genes: 5982
Target: CAMSAP2, DE genes: 25
Target: IDE, DE genes: 119
Target: PRCP, DE genes: 134
Target: WFS1, DE genes: 55
Target: FOXH1, DE genes: 1742
Target: SMARCA4, DE genes: 11415
Target: TWF2, DE genes: 45
Target: SAFB, DE genes: 4608
Target: POLB, DE genes: 1624
Target: TSC22D4, DE genes: 2849
Target: ACVR1B, DE genes: 1670
Target: PMS1, DE genes: 38
Target: NISCH, DE genes: 3518
Target: INSIG1, DE genes: 7556
Target: DHCR24, DE genes: 714
Target: MAP3K7, DE genes: 269
Target: TMSB10, DE genes: 4808
Target: SMARCA5, DE genes: 10392
Target: STAG2, DE genes: 8040
Target: ZNF426, DE genes: 56
Target: DNMT1, DE genes: 10389
Target: SSBP1, DE genes: 3452
Target: HIRA, DE genes: 3382
Target: USP22, DE genes: 3607
Target: PBX1, DE genes: 302
Target: EID2, DE genes: 50
Target: KAT2A, DE genes: 10791
Target: MAPKAPK2, DE genes: 66
Target: SRC, DE genes: 574
Target: HSBP1, DE genes: 1416
Target: MED13, DE genes: 6401
Target: ZNF593, DE genes: 1628
Target: TET1, DE genes: 2513
Target: KDR, DE genes: 62
Target: EIF4B, DE genes: 6385
Target: SIX4, DE genes: 343
Target: TFAM, DE genes: 6083
Target: MAST2, DE genes: 121
Target: SMAGP, DE genes: 1886
Target: CAST, DE genes: 4802
Target: MTA1, DE genes: 2781
Target: ATP1B1, DE genes: 34
Target: KIF20A, DE genes: 5879
Target: KIF1B, DE genes: 86
Target: NCK2, DE genes: 37
Target: XRCC4, DE genes: 4013
Target: RNF2, DE genes: 9405
Target: CASP3, DE genes: 8088
Target: HMGN1, DE genes: 47
Target: GSK3B, DE genes: 4039
Target: RAB3B, DE genes: 28
Target: MED13L, DE genes: 2331
Target: HMGB2, DE genes: 6261
Target: DHX36, DE genes: 10814
Target: IGF2R, DE genes: 227
Target: HAT1, DE genes: 1232
Target: STAT6, DE genes: 1650
Target: ARID1A, DE genes: 5800
Target: CDCA2, DE genes: 1160
Target: SNCA, DE genes: 336
Target: TRAM2, DE genes: 278
Target: STAT1, DE genes: 65
Target: TMBIM6, DE genes: 155
Target: PMEL, DE genes: 346
Target: DAXX, DE genes: 1973
Target: PRDM14, DE genes: 10856
Target: NREP, DE genes: 5897
Target: CREG1, DE genes: 84
Target: METTL14, DE genes: 11003
Target: RAF1, DE genes: 880
Target: RRM1, DE genes: 1096
Target: UQCRQ, DE genes: 3113
Target: BIRC2, DE genes: 6182
Target: IKBKG, DE genes: 467
Target: LRPPRC, DE genes: 5395
Target: SDC1, DE genes: 601
Target: ZNF714, DE genes: 64
Target: CASP2, DE genes: 137
Target: STX4, DE genes: 1809
Target: IRF3, DE genes: 77
Target: CENPO, DE genes: 2155
Target: EWSR1, DE genes: 7143
Target: PLCB3, DE genes: 1749
Target: PHF14, DE genes: 1757
Target: MAU2, DE genes: 8741
Target: TAZ, DE genes: 341
Target: DLG5, DE genes: 1690
Target: CLDN7, DE genes: 719
Target: PAGR1, DE genes: 2025
Target: PTPN1, DE genes: 43
Target: NDUFB4, DE genes: 2586
Target: KDM1A, DE genes: 11779
Target: UBE3C, DE genes: 5966
Target: TGFBR2, DE genes: 7742
Target: TRAPPC6A, DE genes: 2725
Target: MED24, DE genes: 7290
Target: METTL17, DE genes: 7103
Target: DZIP3, DE genes: 40
Target: SOX2, DE genes: 8761
Target: ZNF286A, DE genes: 42
Target: MKI67, DE genes: 320
Target: TXNDC9, DE genes: 1984
Target: MAP1B, DE genes: 53
Target: ACAT2, DE genes: 6878
Target: PRR12, DE genes: 2964
Target: TAF13, DE genes: 5444
Target: LAD1, DE genes: 16
Target: CALM3, DE genes: 1773
Target: C1QBP, DE genes: 5628
Target: NRAS, DE genes: 105
Target: SALL4, DE genes: 4819
Target: MED1, DE genes: 5232
Target: NIT1, DE genes: 10063
Target: MBTPS1, DE genes: 6013
Target: ATP6V0B, DE genes: 156
Target: ZNF562, DE genes: 104
Target: PHF10, DE genes: 2451
Target: WSB2, DE genes: 3824
Target: FDPS, DE genes: 3598
Target: SIN3B, DE genes: 8765
Target: METTL3, DE genes: 10991
Target: SLC25A3, DE genes: 1924
Target: OXCT1, DE genes: 3605
Target: LZTR1, DE genes: 5948
Target: SLC39A6, DE genes: 7378
Target: RNF20, DE genes: 5284
Target: SEC62, DE genes: 5620
Target: EPB41L2, DE genes: 4626
Target: OXA1L, DE genes: 2218
Target: ATP6V0C, DE genes: 256
Target: ETV4, DE genes: 3658
Target: EPHB4, DE genes: 3203
Target: BRD9, DE genes: 443
Target: SUPT4H1, DE genes: 10190
Target: ATM, DE genes: 5152
Target: DNAJA3, DE genes: 2352
# /// script
# requires-python = ">=3.10"
# dependencies = [
# "anndata",
# "pdex",
# ]
#
# [tool.uv.sources]
# pdex = { git = "https://github.com/drbh/pdex.git", branch = "pairwise_fdr" }
# ///
import os
import anndata as ad
from pdex._single_cell import (
parallel_differential_expression_vec_wrapper as parallel_differential_expression,
)
adata = ad.read_h5ad("../bspc/convert/vcc_data/adata_Training.h5ad")
os.makedirs("de_results", exist_ok=True)
ctrl_mask = adata.obs["target_gene"] == "non-targeting"
control_cells = adata[ctrl_mask]
# get all unique target genes
targets = adata.obs["target_gene"].unique()
results = parallel_differential_expression(
# de_adata,
adata,
reference="non-targeting",
groupby_key="target_gene",
)
results["diff"] = results["pairwise_fdr"] - results["fdr"]
results = results.sort_values("diff")
filtered = results[results["pairwise_fdr"] < 0.05]
# save filtered results
filtered.to_csv("de_results/filtered_results.csv")
print(filtered)
# print the number of each target
for target in targets:
count = filtered[filtered["target"] == target].shape[0]
print(f"Target: {target}, DE genes: {count}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment