I/O and Merging¶
GraphLD provides helpers to load LDGMs, read metadata, partition summary statistics across LD blocks, and merge variants onto LDGM indices.
Start by loading metadata:
import graphld as gld
import polars as pl
ldgm_metadata: pl.DataFrame = gld.read_ldgm_metadata(
"data/test/metadata.csv",
populations=["EUR"],
)
Then partition summary statistics across LD blocks:
sumstats: pl.DataFrame = gld.read_ldsc_sumstats("data/test/example.sumstats")
partitioned_sumstats = gld.partition_variants(ldgm_metadata, sumstats)
Load LDGMs and merge them with summary statistics:
merged_ldgms = []
for row, df in zip(ldgm_metadata.iter_rows(named=True), partitioned_sumstats):
ldgm = gld.load_ldgm(
filepath="data/test/" + row["name"],
snplist_path="data/test/" + row["snplistName"],
)
ldgm, _ = gld.merge_snplists(ldgm, df)
merged_ldgms.append(ldgm)
After merging, each ldgm.variant_info table carries the summary-statistics columns for matched variants:
for ldgm in merged_ldgms:
z_scores = (
ldgm.variant_info.group_by("index", maintain_order=True)
.agg(pl.col("Z").first())
.select("Z")
.to_numpy()
)
solution = ldgm.solve(z_scores)
See also: