0
$\begingroup$

Nowadays, I am trying to calculate Pearson correlation values between two genes of my interest from single-cell RNA-data (features.tsv, barcodes.tsv, and matrix.mtx files) which are obtained from the 10xgenomics cellranger. I am interested in tumor-infiltrating Tregs. I downloaded fastq files from a published paper that describes tumor-infiltrating Tregs with IL10+IL35+ (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE126184), and ran "cellranger count".

Yesterday, I learned how to get a Pearson correlation value from a kind guy. I made a graph below. enter image description here

In general, Tregs are defined by CD4 and Foxp3 expression. As a trial, I want to find the correlation between two genes. The correlation value was 0.05, which might have been due to the presence of Tregs that have zero value of either CD4 or Foxp3. So, my question is that can we remove cells with 0 value of genes to get more high correlation value? My data looks like this.


> Treg.data[c("Cd4", "Foxp3"), 1:30]

------------------------------------- # results

2 x 30 sparse Matrix of class "dgCMatrix"
   [[ suppressing 30 column names ‘AAACCTGAGAAACCAT-1’, ‘AAACCTGAGAAACCGC-1’, ‘AAACCTGAGAAACCTA-1’ ... ]]

Cd4   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Foxp3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


------------------------------------- # results

Each dot represents 0 value.

Meanwhile, I performed to standard pre-processing workflow, as suggested in Seural Tutorial. For example,

> Treg[["percent.mt"]] <- PercentageFeatureSet(Treg, pattern = "^MT-")

> Treg <- subset(Treg, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)

Can you help me? Thank you very much.

$\endgroup$

1 Answer 1

1
$\begingroup$

It will not improve your correlation most likely, unless the zeros are not missing at random:

library(Seurat)
data <- pbmc_small
data[["percent.mt"]] <- PercentageFeatureSet(data, pattern = "^MT-")
data <- NormalizeData(data)
genes <-c("HLA-DRA","LYZ")
countdata = pbmc_small[["RNA"]]@data
countdata <- t(as.matrix(countdata)[genes,])
plot(countdata)

enter image description here

Now you need to subset the matrix, and remove the rows where at least one of the entries is 0, you can use rowSums(..==0)==0, meaning no zeros in the rows:

plot(countdata[rowSums(countdata==0)==0,])

enter image description here

cor(countdata[rowSums(countdata==0)==0,])
          HLA-DRA       LYZ
HLA-DRA 1.0000000 0.2338371
LYZ     0.2338371 1.0000000
$\endgroup$
9
  • $\begingroup$ Thank you very much, SmartWolf. I tried to put your code on R. I put a series of commands as follows. (1) Tumors.data <- Read10X(data.dir = “…/filtered_feature_bc_matrix") (2) Tumors <- CreateSeuratObject(counts = Tumors.data, project = "Tumors", min.cells = 3, min.features = 200) (3) Tumors[["percent.mt"]] <- PercentageFeatureSet(Tumors, pattern = "^MT-") (4) Tumors <- subset(Tumors, subset= nFeature_RNA >200 & nFeature_RNA <2500) (5) Tumors <- NormalizeData(Tumors) (6) genes <- c(“Cd4”, “Foxp3”) $\endgroup$
    – raiora
    May 21, 2020 at 17:39
  • $\begingroup$ When I put the command “countdata <- t(as.matrix(countdata)[genes,]), it showed me that “Error in as.matrix(countdata) : object 'countdata' not found” I tried to put another command as follows. “countdata <-t(as.matrix(Tumors.data)[genes,])”, which at least worked with no error occurred. $\endgroup$
    – raiora
    May 21, 2020 at 17:40
  • $\begingroup$ sorry @raiora, was missing a line.. in your case, do countdata = Tumors[["RNA"]]@data $\endgroup$
    – StupidWolf
    May 21, 2020 at 17:40
  • $\begingroup$ You are welcome. So, I am now working on it. However, in the command "countdata = pbmc_small[["RNA"]]@data", I am little bit confused. In my case, should the "countdata = Tumors[["RNA"]]@data? Sorry. $\endgroup$
    – raiora
    May 21, 2020 at 17:49
  • $\begingroup$ In my understanding, data refers to Tumors (seurat object) and pbmc_small would be Tumors.data $\endgroup$
    – raiora
    May 21, 2020 at 17:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.