Skip to content

mecfs_bio.build_system.task.gwaslab.gwaslab_transform_sumstats

Contains a task for transforming gwaslab Sumstats objefts.

Classes:

  • GWASLabTransformSumstatsTask

    Task to read a pickled GWASlab sumstats object, apply transformations to it, write it out as a new GWASLab sumstats object.

GWASLabTransformSumstatsTask

Bases: Task

Task to read a pickled GWASlab sumstats object, apply transformations to it, write it out as a new GWASLab sumstats object.

Methods:

Attributes:

deps property

deps: list[Task]

meta property

meta: Meta

post_pipe class-attribute instance-attribute

post_pipe: DataProcessingPipe = IdentityPipe()

source_asset_id property

source_asset_id: AssetId

source_meta property

source_meta: Meta

source_sumstats_task instance-attribute

source_sumstats_task: Task

transform_spec instance-attribute

transform_spec: GwasLabTransformSpec

create_from_source_task classmethod

create_from_source_task(
    source_tsk: Task,
    asset_id: str,
    spec: GwasLabTransformSpec,
    post_pipe: DataProcessingPipe = IdentityPipe(),
)
Source code in mecfs_bio/build_system/task/gwaslab/gwaslab_transform_sumstats.py
@classmethod
def create_from_source_task(
    cls,
    source_tsk: Task,
    asset_id: str,
    spec: GwasLabTransformSpec,
    post_pipe: DataProcessingPipe = IdentityPipe(),
):
    source_meta = source_tsk.meta
    assert isinstance(source_meta, GWASLabSumStatsMeta)
    meta = GWASLabSumStatsMeta(
        id=AssetId(asset_id),
        trait=source_meta.trait,
        project=source_meta.project,
        sub_dir=source_meta.sub_dir,
    )
    return cls(
        meta=meta,
        source_sumstats_task=source_tsk,
        transform_spec=spec,
        post_pipe=post_pipe,
    )

execute

execute(scratch_dir: Path, fetch: Fetch, wf: WF) -> Asset
Source code in mecfs_bio/build_system/task/gwaslab/gwaslab_transform_sumstats.py
def execute(self, scratch_dir: Path, fetch: Fetch, wf: WF) -> Asset:
    asset = fetch(self.source_asset_id)
    sumstats = read_sumstats(asset)
    sumstats = transform_gwaslab_sumstats(
        sumstats,
        spec=self.transform_spec,
    )
    sumstats.data = self.post_pipe.process_pandas(sumstats.data)
    out_path = scratch_dir / "pickled_sumstats.pickle"
    gl.dump_pickle(sumstats, path=out_path)
    return FileAsset(out_path)