Skip to main content

Find active genes in bulk RNA-seq data

Project description

zfpkm

Overview

This package performs zFPKM on RNA-seq FPKM data. This implementation is adapted from ronammar/zFPKM, which was originally based on Hart et al. 2013 (PMID24215113). The original article recommends selecting an active/inactive cutoff at -3; this value was selected based on experimental data that indicated the number of active promoters becomes more than the number of repressed promoters Figure 1.

Installation

This package can be installed from GitHub or PyPi

PyPi

python3 -m pip install zfpkm

Latest GitHub Version

python3 -m pip install git+https://github.com/JoshLoecker/zfpkm.git

Usage

To calculate zFPKM, simply import the zfpkm function and provide the raw, non-normalized FPKM values as a pandas DataFrame. The row names of the input dataframe should be the genomic identifier (Entrez IDs, Ensembl IDs, Gene Symbols, etc.) and the column names should be the sample name. The returned DataFrame will have the same number of rows and columns (in the same order provided) with a modified z-transformation applied.

import pandas as pd

from zfpkm import zFPKM, zfpkm_plot


def main():
    fpkm = pd.read_csv("fpkm.csv", index_col=0, header=0)
    zfpkm_df, zfpkm_results = zFPKM(fpkm)
    zfpkm_df.to_csv("zfpkm.csv", index=True)
    zfpkm_plot(zfpkm_results, save_filepath="zfpkm_density.png")


if __name__ == "__main__":
    main()

Results

Expected zFPKM Distribution

The following figure shows the expected FPKM ('fpkm_density', in teal) and zFPKM ('fpkm_density_scaled', in salmon). The Gaussian curve is fit to the peak of the FPKM density distribution. Values > -3 can be marked as active. Expected zFPKM

Figure 1: The expected zFPKM Gaussian distribution overlaid on the FPKM distribution

Actual zFPKM Distribution (from this package)

The following figure shows the calculated zFPKM from this package. Like Figure 1, the FPKM ('fpkm_density', in teal) and zFPKM ('fpkm_density_scaled', in salmon) are overlaid on the highest FPKM peak.

Example code showing how this graph was generated can be found in examples/example_zfpkm.py.

Actual zFPKM

Figure 2: The actual zFPKM Gaussian distribution from this package overlaid on the FPKM distribution

Comparison with scikit-learn and scipy

Figure 3 and 4, below, were generated with scikit-learn==1.7.2 and scipy==1.16.3, respsectively. These figures, while very similar to the expected and actual zFPKM distributions, have several noteable differences:

  1. The maximum density is ~37% greater than the expected and actual zFPKM distributions (~0.131 expected vs ~0.180 for scikit-learn and scipy)
  2. The left-hand of the FPKM density distribution is much smoother than the expected results; this comes specifically from a larger bandwidth value than the original R source.

Taken together, this results in the final zFPKM scores using scikit-learn or scipy being similar to, but distinct enough, from the expected values to potentially cause problems in downstream analysis.

scikit-learn zFPKM

Figure 3: scikit-learn FPKM ('fpkm_density', in teal) & zFPKM ('fitted_density_scaled', in salmon) distribution

scipy zFPKM

Figure 4: scipy FPKM ('fpkm_density', in teal) & zFPKM ('fitted_density_scaled', in salmon) distribution

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zfpkm-1.0.2.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zfpkm-1.0.2-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file zfpkm-1.0.2.tar.gz.

File metadata

  • Download URL: zfpkm-1.0.2.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.8

File hashes

Hashes for zfpkm-1.0.2.tar.gz
Algorithm Hash digest
SHA256 734d00cc61b77166ada53ee5b753e1a72188e11558ba5fc755d14b30bfe55607
MD5 b345dba51b0f472859c411cb79295512
BLAKE2b-256 0cb2f99c1d17c1c6acdecd3820122fda3d0aee9e79d56582bf60c130dd1da14e

See more details on using hashes here.

File details

Details for the file zfpkm-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: zfpkm-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.8

File hashes

Hashes for zfpkm-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1f3c835dadd6796e3f67166efefce084b0116b73f8367a9b5e8ea2a50dc405d3
MD5 d56d258b561387ad4ba98d9aa2170cb8
BLAKE2b-256 274416e02297bacf6eda8a4e810a18a203940f7b5b1fb8dac119f8b21dc44a49

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page