0.1 Parameters

suffix = ""
data_to_read = ""

0.2 functions

0.3 Data

“/sci/labs/yotamd/lab_share/lung_sc/bulk/RoxaOsi/02.Bam/”

counts <- read.delim("/sci/labs/yotamd/lab_share/lung_sc/bulk/RoxaOsi/02.Bam/RoxaOsi_noMTGLKI",skip=1,header=T,sep="\t",stringsAsFactors=F,row.names=1,check.names = F)

tpm <- read.delim("/sci/labs/yotamd/lab_share/lung_sc/bulk/RoxaOsi/02.Bam/RoxaOsi_noMTGLKI_tpm.txt",skip=1,header=T,sep="\t",stringsAsFactors=F,row.names=1,check.names = F)

1 Pre-process

#save before omitting
genes_names = counts$gene_name
genes_lengths = counts[,5]

#omit non relevant cols
counts=counts[,7:ncol(counts)]


#create genes names
genes_names=make.unique(genes_names) %>% replace_na('NA')
rownames(counts) = genes_names

#omit non relevant genes
omitgenes= startsWith(rownames(counts),"NA")
counts=counts[!omitgenes,]
genes_lengths = genes_lengths[!omitgenes] #update genes_lengths

#calcualte gene length and MT genes
mt_genes = startsWith(rownames(counts),"MT-")| startsWith(rownames(counts),"ERCC-")

#get colnames
cell.labels <- gsub(pattern = ".bam",replacement = "",colnames(counts))

#change colnames
colnames(counts) <- cell.labels


counts_seurat <- CreateSeuratObject(counts = counts, project = "egfr_counts", min.cells = 0, min.features = 1000)
cell_type = str_extract(cell.labels, "^[A-Z]{1,3}[0-9]{3}")
condition = str_extract(cell.labels, "cp|osi|ctrl|roxa|op")
replicate = str_extract(cell.labels, ".$")
metadata = data.frame(cell_type = cell_type, condition = condition, replicate = replicate, row.names = colnames(counts))
dds <- DESeqDataSetFromMatrix(countData = round(counts),
                              colData = metadata,
                              design = ~condition)
converting counts to integer mode
Warning in DESeqDataSet(se, design = design, ignoreRank) :
  some variables in design formula are characters, converting to factors
nrow(dds)
[1] 60445
dds1 <- dds[ rowSums(counts(dds)) >= 3, ]
nrow(dds1)
[1] 33579
vst = vst(dds1, blind=FALSE)
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
PCAdata <- prcomp(t(assay(vst)))
autoplot(PCAdata, data = metadata,colour = "condition",label = FALSE, main="PCA")

VlnPlot(counts_seurat, features = c("nCount_RNA"),group.by = "orig.ident",pt.size = 3)
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Groups with fewer than two data points have been dropped.
Warning: Computation failed in `stat_ydensity()`:
replacement has 1 row, data has 0

counts_filtered = counts[, colnames(counts) != "HCC827cp3"]
metadata_filtered = metadata[ rownames(metadata) != "HCC827cp3",]
dds <- DESeqDataSetFromMatrix(countData = round(counts_filtered),
                              colData = metadata_filtered,
                              design = ~condition)
converting counts to integer mode
Warning in DESeqDataSet(se, design = design, ignoreRank) :
  some variables in design formula are characters, converting to factors
nrow(dds)
[1] 60445
dds1 <- dds[ rowSums(counts(dds)) >= 3, ]
nrow(dds1)
[1] 33503
vst = vst(dds1, blind=FALSE)

sampleDists <- dist( t( assay(vst) ) )
sampleDistMatrix <- as.matrix( sampleDists )
rownames(sampleDistMatrix) <- colnames(counts_filtered)
colnames(sampleDistMatrix) <- colnames(counts_filtered)
colors <- colorRampPalette( rev(brewer.pal(9, "Blues")) )(255)
pheatmap(sampleDistMatrix,
         clustering_distance_rows=sampleDists,
         clustering_distance_cols=sampleDists,
         col=colors, main = "Sample Distance Matrix ",show_colnames = T)

LS0tCnRpdGxlOiAnYHIgcnN0dWRpb2FwaTo6Z2V0U291cmNlRWRpdG9yQ29udGV4dCgpJHBhdGggJT4lIGJhc2VuYW1lKCkgJT4lIGdzdWIocGF0dGVybiA9ICJcXC5SbWQiLHJlcGxhY2VtZW50ID0gIiIpYCcgCmF1dGhvcjogIkF2aXNoYWkgV2l6ZWwiCmRhdGU6ICdgciBTeXMudGltZSgpYCcKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB5ZXMKICAgIHRvY19jb2xsYXBzZTogeWVzCiAgICB0b2NfZmxvYXQ6IAogICAgICBjb2xsYXBzZWQ6IEZBTFNFCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIHRvY19kZXB0aDogMQotLS0KCiMjIFBhcmFtZXRlcnMKCmBgYHtyIHdhcm5pbmc9RkFMU0V9CnN1ZmZpeCA9ICIiCmRhdGFfdG9fcmVhZCA9ICIiCmBgYAoKCiMjIGZ1bmN0aW9ucwoKYGBge3Igd2FybmluZz1GQUxTRX0KYGBgCgojIyBEYXRhCgoiL3NjaS9sYWJzL3lvdGFtZC9sYWJfc2hhcmUvbHVuZ19zYy9idWxrL1JveGFPc2kvMDIuQmFtLyIKCgpgYGB7cn0KY291bnRzIDwtIHJlYWQuZGVsaW0oIi9zY2kvbGFicy95b3RhbWQvbGFiX3NoYXJlL2x1bmdfc2MvYnVsay9Sb3hhT3NpLzAyLkJhbS9Sb3hhT3NpX25vTVRHTEtJIixza2lwPTEsaGVhZGVyPVQsc2VwPSJcdCIsc3RyaW5nc0FzRmFjdG9ycz1GLHJvdy5uYW1lcz0xLGNoZWNrLm5hbWVzID0gRikKCnRwbSA8LSByZWFkLmRlbGltKCIvc2NpL2xhYnMveW90YW1kL2xhYl9zaGFyZS9sdW5nX3NjL2J1bGsvUm94YU9zaS8wMi5CYW0vUm94YU9zaV9ub01UR0xLSV90cG0udHh0Iixza2lwPTEsaGVhZGVyPVQsc2VwPSJcdCIsc3RyaW5nc0FzRmFjdG9ycz1GLHJvdy5uYW1lcz0xLGNoZWNrLm5hbWVzID0gRikKYGBgCgojIFByZS1wcm9jZXNzCmBgYHtyfQojc2F2ZSBiZWZvcmUgb21pdHRpbmcKZ2VuZXNfbmFtZXMgPSBjb3VudHMkZ2VuZV9uYW1lCmdlbmVzX2xlbmd0aHMgPSBjb3VudHNbLDVdCgojb21pdCBub24gcmVsZXZhbnQgY29scwpjb3VudHM9Y291bnRzWyw3Om5jb2woY291bnRzKV0KCgojY3JlYXRlIGdlbmVzIG5hbWVzCmdlbmVzX25hbWVzPW1ha2UudW5pcXVlKGdlbmVzX25hbWVzKSAlPiUgcmVwbGFjZV9uYSgnTkEnKQpyb3duYW1lcyhjb3VudHMpID0gZ2VuZXNfbmFtZXMKCiNvbWl0IG5vbiByZWxldmFudCBnZW5lcwpvbWl0Z2VuZXM9IHN0YXJ0c1dpdGgocm93bmFtZXMoY291bnRzKSwiTkEiKQpjb3VudHM9Y291bnRzWyFvbWl0Z2VuZXMsXQpnZW5lc19sZW5ndGhzID0gZ2VuZXNfbGVuZ3Roc1shb21pdGdlbmVzXSAjdXBkYXRlIGdlbmVzX2xlbmd0aHMKCiNjYWxjdWFsdGUgZ2VuZSBsZW5ndGggYW5kIE1UIGdlbmVzCm10X2dlbmVzID0gc3RhcnRzV2l0aChyb3duYW1lcyhjb3VudHMpLCJNVC0iKXwgc3RhcnRzV2l0aChyb3duYW1lcyhjb3VudHMpLCJFUkNDLSIpCgojZ2V0IGNvbG5hbWVzCmNlbGwubGFiZWxzIDwtIGdzdWIocGF0dGVybiA9ICIuYmFtIixyZXBsYWNlbWVudCA9ICIiLGNvbG5hbWVzKGNvdW50cykpCgojY2hhbmdlIGNvbG5hbWVzCmNvbG5hbWVzKGNvdW50cykgPC0gY2VsbC5sYWJlbHMKCgpjb3VudHNfc2V1cmF0IDwtIENyZWF0ZVNldXJhdE9iamVjdChjb3VudHMgPSBjb3VudHMsIHByb2plY3QgPSAiZWdmcl9jb3VudHMiLCBtaW4uY2VsbHMgPSAwLCBtaW4uZmVhdHVyZXMgPSAxMDAwKQpgYGAKCmBgYHtyfQpjZWxsX3R5cGUgPSBzdHJfZXh0cmFjdChjZWxsLmxhYmVscywgIl5bQS1aXXsxLDN9WzAtOV17M30iKQpjb25kaXRpb24gPSBzdHJfZXh0cmFjdChjZWxsLmxhYmVscywgImNwfG9zaXxjdHJsfHJveGF8b3AiKQpyZXBsaWNhdGUgPSBzdHJfZXh0cmFjdChjZWxsLmxhYmVscywgIi4kIikKbWV0YWRhdGEgPSBkYXRhLmZyYW1lKGNlbGxfdHlwZSA9IGNlbGxfdHlwZSwgY29uZGl0aW9uID0gY29uZGl0aW9uLCByZXBsaWNhdGUgPSByZXBsaWNhdGUsIHJvdy5uYW1lcyA9IGNvbG5hbWVzKGNvdW50cykpCgpgYGAKCmBgYHtyfQpkZHMgPC0gREVTZXFEYXRhU2V0RnJvbU1hdHJpeChjb3VudERhdGEgPSByb3VuZChjb3VudHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xEYXRhID0gbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbiA9IH5jb25kaXRpb24pCmBgYApgYGB7cn0KbnJvdyhkZHMpCmRkczEgPC0gZGRzWyByb3dTdW1zKGNvdW50cyhkZHMpKSA+PSAzLCBdCm5yb3coZGRzMSkKYGBgCmBgYHtyfQp2c3QgPSB2c3QoZGRzMSwgYmxpbmQ9RkFMU0UpCmBgYApgYGB7cn0KUENBZGF0YSA8LSBwcmNvbXAodChhc3NheSh2c3QpKSkKYXV0b3Bsb3QoUENBZGF0YSwgZGF0YSA9IG1ldGFkYXRhLGNvbG91ciA9ICJjb25kaXRpb24iLGxhYmVsID0gRkFMU0UsIG1haW49IlBDQSIpCmBgYAoKCmBgYHtyfQpjb3VudHNfc2V1cmF0ID0gQWRkTWV0YURhdGEob2JqZWN0ID0gY291bnRzX3NldXJhdCxtZXRhZGF0YSA9IG1ldGFkYXRhKQpjb3VudHNfc2V1cmF0JG9yaWcuaWRlbnQgPSBjb2xuYW1lcyhjb3VudHNfc2V1cmF0KQpWbG5QbG90KGNvdW50c19zZXVyYXQsIGZlYXR1cmVzID0gYygibkNvdW50X1JOQSIpLGdyb3VwLmJ5ID0gIm9yaWcuaWRlbnQiLHB0LnNpemUgPSAzKQpgYGAKCmBgYHtyfQpjb3VudHNfZmlsdGVyZWQgPSBjb3VudHNbLCBjb2xuYW1lcyhjb3VudHMpICE9ICJIQ0M4MjdjcDMiXQptZXRhZGF0YV9maWx0ZXJlZCA9IG1ldGFkYXRhWyByb3duYW1lcyhtZXRhZGF0YSkgIT0gIkhDQzgyN2NwMyIsXQpkZHMgPC0gREVTZXFEYXRhU2V0RnJvbU1hdHJpeChjb3VudERhdGEgPSByb3VuZChjb3VudHNfZmlsdGVyZWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xEYXRhID0gbWV0YWRhdGFfZmlsdGVyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbiA9IH5jb25kaXRpb24pCmBgYApgYGB7cn0KbnJvdyhkZHMpCmRkczEgPC0gZGRzWyByb3dTdW1zKGNvdW50cyhkZHMpKSA+PSAzLCBdCm5yb3coZGRzMSkKYGBgCmBgYHtyfQp2c3QgPSB2c3QoZGRzMSwgYmxpbmQ9RkFMU0UpCmBgYApgYGB7cn0KUENBZGF0YSA8LSBwcmNvbXAodChhc3NheSh2c3QpKSkKYXV0b3Bsb3QoUENBZGF0YSwgZGF0YSA9IG1ldGFkYXRhX2ZpbHRlcmVkLGNvbG91ciA9ICJjb25kaXRpb24iLGxhYmVsID0gRkFMU0UsIG1haW49IlBDQSIpCmF1dG9wbG90KFBDQWRhdGEsIGRhdGEgPSBtZXRhZGF0YV9maWx0ZXJlZCxjb2xvdXIgPSAiY2VsbF90eXBlIixsYWJlbCA9IEZBTFNFLCBtYWluPSJQQ0EiKQoKYGBgCmBgYHtyfQpzYW1wbGVEaXN0cyA8LSBkaXN0KCB0KCBhc3NheSh2c3QpICkgKQpzYW1wbGVEaXN0TWF0cml4IDwtIGFzLm1hdHJpeCggc2FtcGxlRGlzdHMgKQpyb3duYW1lcyhzYW1wbGVEaXN0TWF0cml4KSA8LSBjb2xuYW1lcyhjb3VudHNfZmlsdGVyZWQpCmNvbG5hbWVzKHNhbXBsZURpc3RNYXRyaXgpIDwtIGNvbG5hbWVzKGNvdW50c19maWx0ZXJlZCkKY29sb3JzIDwtIGNvbG9yUmFtcFBhbGV0dGUoIHJldihicmV3ZXIucGFsKDksICJCbHVlcyIpKSApKDI1NSkKcGhlYXRtYXAoc2FtcGxlRGlzdE1hdHJpeCwKICAgICAgICAgY2x1c3RlcmluZ19kaXN0YW5jZV9yb3dzPXNhbXBsZURpc3RzLAogICAgICAgICBjbHVzdGVyaW5nX2Rpc3RhbmNlX2NvbHM9c2FtcGxlRGlzdHMsCiAgICAgICAgIGNvbD1jb2xvcnMsIG1haW4gPSAiU2FtcGxlIERpc3RhbmNlIE1hdHJpeCAiLHNob3dfY29sbmFtZXMgPSBUKQpgYGAK