README.md

plinkr

| Branch | GitHub Actions logo | Codecov logo | |-----------|-------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| | master | R-CMD-check | codecov.io | | develop | R-CMD-check | codecov.io |

Work with PLINK and PLINK2 from R.

Installation

See doc/install.md

Examples

Running PLINK

plinkr can seamlessly run any PLINK or PLINK2 versions.

Run PLINK:

library(plinkr)
run_plink("--help")

To call a specific version of PLINK:

run_plink(c("--help", "--noweb"), create_plink_v1_7_options())
run_plink("--help", create_plink_v1_9_options())
run_plink("--help", create_plink_v2_0_options())

Of course, you can also call PLINK to detect genetic associations :-) :

# Use the PLINK v1.9 example files
plink_v1_9 <- create_plink_v1_9_options()
ped_filename <- get_plink_example_filename("toy.ped", plink_v1_9)
map_filename <- get_plink_example_filename("toy.map", plink_v1_9)

# Do a case-control association
plinkr::run_plink(
  args = c(
    "--ped", ped_filename, 
    "--map", map_filename
  )
)

Run a quantitative trait analysis on existing files

Read from PLINK text files

assoc_qt_data <- create_assoc_qt_data(
  data = create_plink_text_filenames(
    map_filename = get_plinkr_filename("demo_assoc_qt.map"), 
    ped_filename = get_plinkr_filename("demo_assoc_qt.ped")
  ),
  phenotype_data = create_phenotype_data_filename(
    phe_filename = get_plinkr_filename("demo_assoc_qt.phe")  
  )
)
assoc_qt_filenames <- assoc_qt(assoc_qt_data = assoc_qt_data)
read_plink_qassoc_file(assoc_qt_filenames$qassoc_filenames[1])

Read from PLINK binary files

assoc_qt_data <- create_assoc_qt_data(
  data = create_plink_bin_filenames(
    bed_filename = get_plinkr_filename("demo_assoc_qt.bed"), 
    bim_filename = get_plinkr_filename("demo_assoc_qt.bim"), 
    fam_filename = get_plinkr_filename("demo_assoc_qt.fam")
  ),
  phenotype_data = create_phenotype_data_filename(
    phe_filename = get_plinkr_filename("demo_assoc_qt.phe")  
  )
)
assoc_qt_filenames <- assoc_qt(assoc_qt_data = assoc_qt_data)
read_plink_qassoc_file(assoc_qt_filenames$qassoc_filenames[1])

Demonstrate a quantitative trait analysis

plinkr can seamlessly use PLINK/PLINK2 in-memory-data or files.

assoc_qt_data <- create_demo_assoc_qt_data()

# Prove that this is PLINK text data
check_plink_text_data(assoc_qt_data$data)

assoc_qt_params <- create_test_assoc_qt_params()
assoc_qt(
  assoc_qt_data = assoc_qt_data,
  assoc_qt_params = assoc_qt_params
)

To convert the in-memory data to PLINK binary format and do the same quantitative trait analysis:

assoc_qt_data$data <- convert_plink_text_data_to_plink_bin_data(
  assoc_qt_data$data
)

# Prove that this is PLINK binary data
check_plink_bin_data(assoc_qt_data$data)

assoc_qt(
  assoc_qt_data = assoc_qt_data,
  assoc_qt_params = assoc_qt_params
)

File I/O

plinkr can read and save many types of PLINK files. Below is an overview. List from the PLINK file format reference.

| File extension | plink read function | |---------------------|----------------------------------| | .adjusted | read_plink_adjusted_file | | .allele.no.snp | :construction: | | .assoc | read_plink_assoc_file | | .assoc.adjusted | read_plink_assoc_adjusted_file | | .assoc.dosage | :construction: | | .assoc.fisher | :construction: | | .assoc.linear | :construction: | | .assoc.logistic | :construction: | | .auto.R | :construction: | | .bcf | :construction: | | .beagle.dat | :construction: | | .bed | read_plink_bed_file | | .bim | read_plink_bin_file | | PLINK binary data | read_plink_bin_data | | PLINK2 binary data | read_plink2_bin_data | | .blocks* | :construction: | | .chr-*.dat | :construction: | | .chr-*.map | :construction: | | .clst | :construction: | | .clumped* | :construction: | | .cluster* | :construction: | | .cmh | :construction: | | .cmh2 | :construction: | | .cnv | :construction: | | .cnv.indiv | :construction: | | .cnv.overlap | :construction: | | .cnv.summary | :construction: | | .cov | read_plink_cov_file | | .dfam | :construction: | | .diff | :construction: | | .dist | :construction: | | .dupvar | :construction: | | .eigenvec* | :construction: | | .epi.* | :construction: | | .fam | read_plink_fam_file | | .flipscan | :construction: | | .frq | read_plink_frq_file | | .frq.cc | :construction: | | .frq.count | :construction: | | .frq.strat | read_plink_frq_strat_file | | .frqx | :construction: | | .fst | :construction: | | .gen | :construction: | | .genome | :construction: | | .grm | :construction: | | .grm.N.bin | :construction: | | .grm.bin | :construction: | | .gvar | :construction: | | .het | :construction: | | .hh | :construction: | | .hom | :construction: | | .hom.indiv | :construction: | | .hom.overlap* | :construction: | | .hom.summary | :construction: | | .homog | :construction: | | .hwe | :construction: | | .ibc | :construction: | | .imiss | read_plink_imiss_file | | .info | :construction: | | .lasso | :construction: | | .ld | read_plink_ld_file | | .ldset | :construction: | | .lgen | :construction: | | .list | :construction: | | .lmiss | read_plink_lmiss_file | | .log | read_plink_log_file | | .map | read_plink_map_file | | .mdist | :construction: | | .mdist.missing | :construction: | | .mds | :construction: | | .*mendel | :construction: | | .meta | :construction: | | .mibs | :construction: | | .missing | :construction: | | .missing.hap | :construction: | | .model | :construction: | | .mperm | :construction: | | .nearest | :construction: | | .occur.dosage | :construction: | | .out.dosage | :construction: | | .ped | read_plink_ped_file | | .perm | :construction: | | .phe | read_plink_phe_file | | .pphe | :construction: | | .prob | :construction: | | .profile | :construction: | | .qassoc | read_plink_qassoc_file | | .qassoc.gxe | :construction: | | .qassoc.means | :construction: | | .qfam.* | :construction: | | .range.report | :construction: | | .raw | :construction: | | .recode.*.txt | :construction: | | .recode.phase.inp | :construction: | | .recode.strct_in | :construction: | | .ref | :construction: | | .rel | :construction: | | .rlist | :construction: | | .sample | :construction: | | .set | :construction: | | .set.{perm,mperm} | :construction: | | .set.table | :construction: | | .sexcheck | :construction: | | .simfreq | read_plink_simfreq_file | | .tags.list | :construction: | | .tdt | :construction: | | .tdt.poo | :construction: | | PLINK text data | read_plink_text_data | | .tfam | :construction: | | .tped | :construction: | | .traw | :construction: | | .twolocus | :construction: | | .var.ranges | :construction: | | .vcf | :construction: |

Associations

| Association type | Data type | General function | Specialized function | |------------------|-------------------|---------------------------|-----------------------------------------------| | Case-control | PLINK1 text data | assoc | assoc_on_plink_text_data | | Case-control | PLINK1 bin data | assoc | assoc_on_plink_bin_data | | Case-control | PLINK2 bin data | assoc | assoc_on_plink2_bin_data | | Case-control | PLINK1 text files | assoc :construction: | assoc_on_plink_text_files :construction: | | Case-control | PLINK1 bin files | assoc :construction: | assoc_on_plink_bin_files :construction: | | Case-control | PLINK2 bin files | assoc :construction: | assoc_on_plink2_bin_files :construction: | | Quantitative | PLINK1 text data | assoc_qt | assoc_qt_on_plink_text_data | | Quantitative | PLINK1 bin data | assoc_qt | assoc_qt_on_plink_bin_data | | Quantitative | PLINK2 bin data | assoc_qt | assoc_qt_on_plink2_bin_data | | Quantitative | PLINK1 text files | assoc_qt :construction: | assoc_qt_on_plink_text_files :construction: | | Quantitative | PLINK1 bin files | assoc_qt :construction: | assoc_qt_on_plink_bin_files :construction: | | Quantitative | PLINK2 bin files | assoc_qt :construction: | assoc_qt_on_plink2_bin_files :construction: |

PLINK and PLINK2 files conversions

plinkr allows to convert between any PLINK and PLINK2 files.

| From | To | Function name | |---------------------|---------------------|---------------------------------------------------------------| | PLINK1 text files | PLINK1 binary files | convert_plink_text_files_to_plink_bin_files | | PLINK1 text files | PLINK2 binary files | convert_plink_text_files_to_plink2_bin_files | | PLINK1 binary files | PLINK text files | convert_plink_bin_files_to_plink_text_files | | PLINK1 binary files | PLINK2 binary files | convert_plink_bin_files_to_plink2_bin_files | | PLINK2 binary files | PLINK text files | convert_plink2_bin_files_to_plink_text_files :construction: | | PLINK2 binary files | PLINK binary files | convert_plink2_bin_files_to_plink_bin_files | | :construction: | :construction: | :construction: | | any type of files | PLINK text files | convert_files_to_plink_text_files :construction: | | any type of files | PLINK1 binary files | convert_files_to_plink_bin_files :construction: | | any type of files | PLINK2 binary files | convert_files_to_plink2_bin_files :construction: | | PLINK1 binary files | SAIGE files | create_bgen_files_for_saige :construction: | | PLINK1 binary files | PLINK2 VCF files | convert_plink_bin_files_to_plink_vcf_files :construction: |

PLINK and PLINK2 data conversions

plinkr allows to convert between any PLINK and PLINK2 data.

| From | To | Function name | |--------------------|--------------------|-------------------------------------------------------------| | PLINK1 text data | PLINK1 binary data | convert_plink_text_data_to_plink_bin_data | | PLINK1 text data | PLINK2 binary data | convert_plink_text_data_to_plink2_bin_data | | PLINK1 binary data | PLINK text data | convert_plink_bin_data_to_plink_text_data :construction: | | PLINK1 binary data | PLINK2 binary data | convert_plink_bin_data_to_plink2_bin_data | | PLINK2 binary data | PLINK text data | convert_plink2_bin_data_to_plink_text_data :construction: | | PLINK2 binary data | PLINK binary data | convert_plink2_bin_data_to_plink_bin_data |

Singularity container

FAQ

See doc/faq.md



richelbilderbeek/plinkr documentation built on March 25, 2024, 3:18 p.m.