Skip to content

mecfs_bio.build_system.task.pipes.heritability_conversion_pipe

Classes:

HeritabilityConversionPipe

Bases: DataProcessingPipe

Methods:

Attributes:

assume_even_sample instance-attribute

assume_even_sample: bool

liability_heritability_column instance-attribute

liability_heritability_column: str

observed_heritability_column instance-attribute

observed_heritability_column: str

sample_info instance-attribute

sample_info: PhenotypeInfo

process

process(x: LazyFrame) -> narwhals.LazyFrame
Source code in mecfs_bio/build_system/task/pipes/heritability_conversion_pipe.py
def process(self, x: narwhals.LazyFrame) -> narwhals.LazyFrame:
    if isinstance(self.sample_info, QuantPhenotype):
        return x
    pop_prev = self.sample_info.estimated_population_prevalence
    df = x.collect().to_pandas()
    if self.assume_even_sample:
        sample_prev = 0.5
    else:
        sample_prev = self.sample_info.sample_prevalence
    pop_prev = self.sample_info.estimated_population_prevalence
    df[self.liability_heritability_column] = df[
        self.observed_heritability_column
    ].apply(
        lambda h: _get_liability_scale_heritability(
            h,
            sample_prev=sample_prev,
            population_prev=pop_prev,
        )
    )
    return narwhals.from_native(df).lazy()