R: Sample code for cis/trans-eQTL analysis with Matrix eQTL

MatrixEQTL_cis_code {MatrixEQTL} | R Documentation

## Sample code for cis/trans-eQTL analysis with Matrix eQTL

### Description

The following code is the best starting point for those who want to perform cis-/trans-eQTL analysis with Matrix eQTL.

### Author(s)

Andrey A Shabalin andrey.shabalin@gmail.com

### References

The package website: http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/

### See Also

See `Matrix_eQTL_engine` for reference and other sample code.

### Examples

    # Matrix eQTL by Andrey A. Shabalin
    # http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/
    #
    # Be sure to use an up to date version of R and Matrix eQTL.

    # source("Matrix_eQTL_R/Matrix_eQTL_engine.r");
    library(MatrixEQTL)

    ## Location of the package with the data files.
    base.dir = find.package('MatrixEQTL');

    ## Settings

    # Linear model to use, modelANOVA, modelLINEAR, or modelLINEAR_CROSS
    useModel = modelLINEAR; # modelANOVA, modelLINEAR, or modelLINEAR_CROSS

    # Genotype file name
    SNP_file_name = paste0(base.dir, "/data/SNP.txt");
    snps_location_file_name = paste0(base.dir, "/data/snpsloc.txt");

    # Gene expression file name
    expression_file_name = paste0(base.dir, "/data/GE.txt");
    gene_location_file_name = paste0(base.dir, "/data/geneloc.txt");

    # Covariates file name
    # Set to character() for no covariates
    covariates_file_name = paste0(base.dir, "/data/Covariates.txt");

    # Output file name
    output_file_name_cis = tempfile();
    output_file_name_tra = tempfile();

    # Only associations significant at this level will be saved
    pvOutputThreshold_cis = 2e-2;
    pvOutputThreshold_tra = 1e-2;

    # Error covariance matrix
    # Set to numeric() for identity.
    errorCovariance = numeric();
    # errorCovariance = read.table("Sample_Data/errorCovariance.txt");

    # Distance for local gene-SNP pairs
    cisDist = 1e6;

    ## Load genotype data

    snps = SlicedData$new();
    snps$fileDelimiter = "\t";      # the TAB character
    snps$fileOmitCharacters = "NA"; # denote missing values;
    snps$fileSkipRows = 1;          # one row of column labels
    snps$fileSkipColumns = 1;       # one column of row labels
    snps$fileSliceSize = 2000;      # read file in slices of 2,000 rows
    snps$LoadFile(SNP_file_name);

    ## Load gene expression data

    gene = SlicedData$new();
    gene$fileDelimiter = "\t";      # the TAB character
    gene$fileOmitCharacters = "NA"; # denote missing values;
    gene$fileSkipRows = 1;          # one row of column labels
    gene$fileSkipColumns = 1;       # one column of row labels
    gene$fileSliceSize = 2000;      # read file in slices of 2,000 rows
    gene$LoadFile(expression_file_name);

    ## Load covariates

    cvrt = SlicedData$new();
    cvrt$fileDelimiter = "\t";      # the TAB character
    cvrt$fileOmitCharacters = "NA"; # denote missing values;
    cvrt$fileSkipRows = 1;          # one row of column labels
    cvrt$fileSkipColumns = 1;       # one column of row labels
    if(length(covariates_file_name)>0) {
      cvrt$LoadFile(covariates_file_name);
    }

    ## Run the analysis
    snpspos = read.table(snps_location_file_name, header = TRUE, stringsAsFactors = FALSE);
    genepos = read.table(gene_location_file_name, header = TRUE, stringsAsFactors = FALSE);

    me = Matrix_eQTL_main(
        snps = snps,
        gene = gene,
        cvrt = cvrt,
        output_file_name      = output_file_name_tra,
        pvOutputThreshold     = pvOutputThreshold_tra,
        useModel = useModel,
        errorCovariance = errorCovariance,
        verbose = TRUE,
        output_file_name.cis  = output_file_name_cis,
        pvOutputThreshold.cis = pvOutputThreshold_cis,
        snpspos = snpspos,
        genepos = genepos,
        cisDist = cisDist,
        pvalue.hist = TRUE,
        min.pv.by.genesnp = FALSE,
        noFDRsaveMemory = FALSE);

    unlink(output_file_name_tra);
    unlink(output_file_name_cis);

    ## Results:

    cat('Analysis done in: ', me$time.in.sec, ' seconds', '\n');
    cat('Detected local eQTLs:', '\n');
    show(me$cis$eqtls)
    cat('Detected distant eQTLs:', '\n');
    show(me$trans$eqtls)

    ## Make the histogram of local and distant p-values

    plot(me)

[Package MatrixEQTL version 2.2 Index]