Rstudio-server deployment

After installing the two server with super user previledges, we can’t directly run the servers because the path to R has not been set.

The configuration file of rstudio-server lies at /etc/rstudio/rserver.conf
We shall append the following line:

rsession-which-r=/home/csj/anaconda3/envs/r411py37/bin/R

More options, such as port, external lib paths, could also be set in the rserver.conf file (see details at https://support.rstudio.com/hc/en-us/articles/200552316-Configuring-RStudio-Workbench-RStudio-Server)

Run the following command to verify if rstudio-server was configured successfully.

sudo rstudio-server verify-installation

we can manage the rstudio-server with the following commands
sudo rstudio-server status
sudo rstudio-server start
sudo rstudio-server stop
sudo rstudio-server restart

The default port of rstudio-server is 8787.

 

Shiny-server deployment

run the following code first before starting the server
export R=/home/csj/anaconda3/envs/r411py37/bin

the path to R shall be configured at /etc/shiny-server/shiny-server.conf

we can change the configurations here

# Define a server that listens on port 3838
server {
listen 3838;

# Define a location at the base URL
location / {

# Host the directory of Shiny Apps stored in this directory
site_dir /srv/shiny-server;

# Log all Shiny output to files in this directory
log_dir /var/log/shiny-server;

# When a user visits the base URL rather than a particular application,
# an index of the applications available in this directory will be shown.
directory_index on;
}
}

start the server with
sudo systemctl start shiny-server

https://nymrli.top/2019/02/24/%E6%90%AD%E5%BB%BAfrp%E6%9C%8D%E5%8A%A1-%E9%98%BF%E9%87%8C%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8/

vi frps.ini

[common]
bind_port = 7000
vhost_http_port = 8080

[common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口,vhost_http_port是自己设定的http访问端口。

./frps -c ./frps.ini

——————————————————————————–
vi frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[nas]
type = http
local_port = 5000
custom_domains = no1.sunnyrx.com

[web]
type = http
local_port = 80
custom_domains = no2.sunnyrx.com

上面的配置和服务端是对应的。

[common]中的server_addr填frp服务端的ip(也就是外网主机的IP),server_port填frp服务端的bind_prot。

[ssh]中的local_port填群晖的ssh端口。

[nas]中的type对应服务端配置。local_port填群晖的DSM端口。custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP。

[web]同上,local_port填群晖的web端口。这里创建了两个http反向代理是为了分别映射群晖两个重要的端口,5000和80,前者用于登录群晖管理,后者用于群晖的Web Station和DS Photo。

保存配置,输入以下指令运行frp客户端。(同样如果需要在后台运行,请往下翻阅关于后台运行的部分。)

./frpc -c ./frpc.ini

向量数据库
Milvus https://github.com/milvus-io/milvus
Milvus向量数据库知乎介绍 https://zhuanlan.zhihu.com/p/393699963
向量数据库知乎介绍 https://zhuanlan.zhihu.com/p/40487710

Single-cell
只用单个细胞的信息做分类CellID https://zhuanlan.zhihu.com/p/392992024
Next Generation Genomics https://underline.io/events/165/reception
Clustered DotPlot https://divingintogeneticsandgenomics.rbind.io/post/clustered-dotplot-for-single-cell-rnaseq/
Clustered DotPlot https://davemcg.github.io/post/lets-plot-scrna-dotplots/
增强的单细胞绘图,支持Seurat https://bioconductor.org/packages/release/bioc/vignettes/dittoSeq/inst/doc/dittoSeq.html#561_dittoDotPlot
漂亮的DotPlot https://www.biostars.org/p/484150/
HieRFIT: A hierarchical cell type classification tool https://academic.oup.com/bioinformatics/advance-article-abstract/doi/10.1093/bioinformatics/btab499/6320801?redirectedFrom=fulltext
Subpopulation mapping https://www.researchgate.net/publication/329421271_Accurate_sub-population_detection_and_mapping_across_single_cell_experiments_with_PopCorn
Iterative clustering https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8009055/
Challenges in single-cell clustering https://www.nature.com/articles/s41576-018-0088-9#Sec2

Generative Models
GAN vs VAE,本质差别知乎 https://www.zhihu.com/question/317623081/answer/1997177136

Tang Ming gave an implementation of improved heatmap using ComplexHeatmap.

Do not show too many cells on a single screen.

  • When you have too many cells (> 10,000), the use_raster option really helps. Also consider downsample the Seurat object to a smaller number of cells for plotting the heatmap. Your screen resolution is not as high as 300,000 pixels if you have 300,000 cells (columns).

https://divingintogeneticsandgenomics.rbind.io/post/enhancement-of-scrnaseq-heatmap-using-complexheatmap/

For hierarchical clustering, consult this hclust tutorial

https://uc-r.github.io/hc_clustering#algorithms

 

基于Seurat数据创建clustered heatmap

0. 导入需要的包

suppressPackageStartupMessages({
    library(ComplexHeatmap)
    library(circlize)
})

1. 准备数据

# 1.1 收集表达矩阵
mat  = GetAssayData(t.combined, slot = "data", assay = "RNA")

# 1.2 把细胞按某种想要的顺序排好
ordered.cells <- rownames(t.combined@meta.data)

# 1.3 选择一列感兴趣的基因用于绘图
features.sel <-  unique(c("CD3E","CD3D","CD4","CD8A","CD8B"))

# 1.4 重新组织原始矩阵按行列
mat = as.matrix( mat[features.sel, ordered.cells] )

2. 对数据作层次聚类(可选)

# 2.1 层次聚类
## 注意,mat是从Seurat来的feature-by-sample矩阵,应该转置成sample-by-feature矩阵;
## 此处选择一些基因做聚类,然后用另一些基因画zheng
distobj   <- dist(t(mat[c("CD3D","CD3E","CD4","CD8A","CD8B"),]), method = "euclidean")
hclustobj <- hclust(distobj, method = "ward.D2" )

# 2.2 切隔树形成聚类
sub_grp <- cutree(hclustobj, k = 10) #参数k直接指定类别数,也可用参数h指定切割深度
# 打印各类里的细胞数看看
table(sub_grp) 
# 打印聚类树看看
options(repr.plot.width=15, repr.plot.height=5)
plot(hclustobj, cex = 0.1, label=F) #画🌲,label=F隐藏样本名,不然过密不美观
rect.hclust(hclustobj, k = 10) #画方框
# 按聚类树顺序画heatmap看看
library(pheatmap)
options(repr.plot.width=15, repr.plot.height=10)
pheatmap(mat[,hclustobj$order], cluster_rows = F, cluster_cols = F, 
         border_color=NA,
         show_colnames = F, use_raster=TRUE)

# 看看要是还行,就把层次聚类的结果标签弄进metadata去
t.combined@meta.data["subgroup"]<-as.character(sub_grp)

3. 创建meta数据框,并构建annotations

meta = t.combined@meta.data[ordered.cells,]

# configure colors for cell type annotations
library(paletteer)  
cl_levels = unique(meta$subgroup)
blockcol = paletteer_d("ggsci::default_igv")[1:length(cl_levels)] %>% as.vector
names(blockcol) <-cl_levels


colann <- HeatmapAnnotation(
    cluster = meta$cluster,
    organ   = meta$organ,
    subgroup= meta$subgroup,
    col = list( subgroup = blockcol ),
    annotation_legend_param=list(
        cluster = list(nrow=5),
        organ = list(nrow=3),
        subgroup=list(nrow=1)
    )
)

4. 绘制Heatmap

hm<-Heatmap(mat, name = "Normalized expression", 
        cluster_rows = T, 
        cluster_columns = hclustobj, show_column_names=FALSE,
        column_dend_height = unit(4, "cm"),
        
        #column_split=meta$organ, cluster_column_slices=T,
        col= colorRamp2(c(0,1.5,3), c("#486E9E", "white", "#D84B59")),
        column_title_rot=90, column_gap=unit(2, "mm"),
        top_annotation=colann, heatmap_legend_param = list(direction = "horizontal"),
        use_raster = TRUE)

options(warn=-1)
options(repr.plot.width=20, repr.plot.height=20)
#cairo_pdf("XXXX.hm.pdf",width=15, height = 18)
draw(hm,
     padding = unit(c(10, 10, 30, 3), "mm"), #下左上右
     merge_legend = TRUE,
     heatmap_legend_side = "bottom", 
     annotation_legend_side = "bottom")
#dev.off()

Prefetch下载

  • SRR_Acc_List.txt

SRR_Acc_List.txt为文件列表

SRR8956146
SRR8956147
SRR8956148
SRR8956149
SRR8956150
SRR8956151
prefetch --option-file GSM3258244.SRR_Acc_List.txt

cut 切割metadata文件获取下载地址、

cut    -d$'\t'    -f48    E-MTAB-7159.sdrf.txt
-d给出分隔符为制表符,-f指定第多少列是需要的 -f1-3就是第一到三列

ascp下载

$ wget https://download.asperasoft.com/download/sw/connect/3.9.1/ibm-aspera-connect-3.9.1.171801-linux-g2.12-64.tar.gz
$ tar zxvf ibm-aspera-connect-3.9.1.171801-linux-g2.12-64.tar.gz
$ bash ibm-aspera-connect-3.9.1.171801-linux-g2.12-64.sh

Installing IBM Aspera Connect
Install complete.
#加入环境路径
$ echo 'export PATH=$PATH:~/.aspera/connect/bin' >> ~/.bash_profile
$ source ~/.bash_profile

wget使用

(转载自https://zhuanlan.zhihu.com/p/343117380《后台下载、断点续传?wget命令指南》)
1. 基础:下载整个http或者ftp站点文件

wget http://place.your.url/here

这个最简单的命令可以将http://place.your.url/here 首页下载下来。
注:
使用 -x 会强制建立服务器上一模一样的目录
使用 -nd 参数,那么服务器上下载的所有内容都会加到本地当前目录。

1.1 递归下载目录里的多个文件

wget -r http://place.your.url/here

这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。
这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址 同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!
基于这个原因,这个参数不常用。可以用 -l number 参数来指定下载的层次。
例如只下载两层,那么可以使用 -l 2。
制作镜像站点,那么可以使用 -m 参数,例如:

wget -m http://place.your.url/here

这时 wget 会自动判断合适的参数来制作镜像站点。此时,wget 会登录到服务器上,读入 robots.txt 并按robots.txt 的规定来执行。

2. 断点续传
当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。
wget的断点续传是自动的,只需要使用-c参数,例如:

wget -c http://the.url.of/incomplete/file

使用断点续传要求服务器支持断点续传。

-t 参数表示重试次数,例如需要重试100次,那么就写 -t 100,如果设成 -t 0,那么表示无穷次重试,直到连接成功。
-T 参数表示超时等待时间,例如 -T 120,表示等待120秒连接不上就算超时。

3. 批量下载多个地址
如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行。
例如生成文件 download.txt,然后用命令:

wget -i download.txt

这样就会把 download.txt 里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)

4. 选择性的下载
可以指定让wget只下载一类文件,或者不下载什么文件。例如:

wget -m –reject=gif http://target.web.site/subdirectory

表示下载 http://target.web.site/subdirectory,但是忽略gif文件。
–accept=LIST 可以接受的文件类型,
–reject=LIST 拒绝接受的文件类型。

 

7. 后台下载
加入参数 -b, 让wget在后台运行,记录文件写在当前目录下“wget-log”文件中;

此时,最好也加上限制等待时间的 -T,和限制重试次数的 -t 参数,具体可以参照断点续传的部分。

axel下载

基本用法

axel -n 50 ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/swissprot.gz

多线程下载脚本

#!/usr/bin/sh
# filename:axel_batch.sh
if [ $# -ne 2 ];then
echo "USAGE: $0 download.list save_pathname"
else
cat $1 | xargs -L1 axel -n 10 -a -o $2
fi

#xargs参数说明:
# -L num 每次最多使用num个非空输入行,-L1表示每次只处理一行
# 参考 https://blog.csdn.net/richardfjf/article/details/106983961
#软件选项参数:
--max-speed=x , -s x         最高速度x
--num-connections=x , -n x   连接数x
--output=f , -o f            下载为本地文件f
--search[=x] , -S [x]        搜索镜像
--header=x , -H x            添加头文件字符串x(指定 HTTP header)
--user-agent=x , -U x        设置用户代理(指定 HTTP user agent)
--no-proxy , -N             不使用代理服务器
--quiet , -q                静默模式
--verbose ,-v               更多状态信息
--alternate , -a            Alternate progress indicator
--help ,-h                  帮助
--version ,-V               版本信息

Aria2

To be updated

https://zhuanlan.zhihu.com/p/37021947

« Older entries