0%

Singularity: building a root file system that runs on any other Linux system where Singularity is installed.

Commands

  • build:建立一个Singularity容器(container)
  • capability:管理容器上的Linux功能
  • exec:在容器中执行命令
  • help:命令帮助
  • inspect:显示容器元数据(metadata)
  • instance:管理在背景运行的容器
  • keys:管理OpenPGP密钥
  • pull:从URI拉下容器
  • push:推容器到URI库(library)

URI stands for Uniform Resource Identifier, and it’s the official name for those things you see all the time on the Web that begin ‘ http: ‘ or ‘ mailto: ‘

  • run:在容器中启动运行脚本
  • run-help:容器帮助
  • search:搜索库
  • shell:在容器中运行Bourne shell

A Bourne shell (sh) is a UNIX shell or command processor that is used for scripting.

  • sign:将加密签名附加到容器
  • verify:验证容器加密签名
  • version:应用版本
Read more »

windows 安装 docker 建议直接上虚拟机+Ubuntu iso,用WSL有太多坑,当然想尝试没问题。

Read more »

bwa和bowtie是常用的用于比对的软件,使用来看bwa mem比对的敏感度比bowtie更高(可能是高很多),而且有一段read比对到多段contigs (primary and supplementary) 的功能。

提取双端比对序列

只需要在用完相应的比对软件后,使用samtools view-F选项删除flag对应的reads,flag=4(0x4)代表这条read没有比对到参考序列上,flag=8(0x8)代表这是单端比对上的read,12=4+8,因此使用-F 12可以保留双端比对上的序列。

bwa mem

1
2
3
4
5
6
7
8
9
bwa index $ref

# can map to more than one contig
bwa mem -t 8 $ref $InDir/$fq1 $InDir/$fq2 > out.sam

# `-q 30` reads mapping quality, `-F 12` paired-end,
# `-b` output bam, `-S` input format auto-detected
samtools view -@8 -q 30 -bS out.sam > out.bam
samtools view -@8 -F 12 -b out.bam > out2.bam

bowtie提取双端比对序列

1
2
3
4
5
6
bowtie2-build $ref index
bowtie2 -p 8 -x index \
-1 $InDir/$fq1 \
-2 $InDir/$fq2 -S out.sam

samtools view -@8 -F 12 -bS out.sam > out.bam
Read more »

2020年的诺贝尔化学奖颁发给了法国生物化学家埃马纽埃尔·卡彭蒂耶(Emmanuelle Charpentier)、美国生物学家詹妮弗·杜德纳(Jennifer Doudna),以表彰认可她们在新一代基因编辑技术的重要贡献。CRISPR-Cas9基因编辑技术能对DNA进行定点切割,显著提升了基因编辑效率,是生物医学领域最重要的新兴技术之一。本篇文章的理论部分主要参考2016年发表在Annual Review of Ecology, Evolution, and Systematics的综述文章Evolution and Ecology of CRISPR介绍CRISPR-Cas系统[1],并借此希望对基因编辑技术能有更深刻的认识。

Read more »

Github加入.gitignore可以使指定的文件不同步。

情况一:文件夹不同步

在这个文件夹下,.gitignore写入*

情况二:保留一个空文件夹

在这个文件夹下,.gitignore写入

1
2
3
4
# Ignore everything in this directory
*
# Except this file
!.gitignore

情况三:指定文件不同步

可以直接在仓库根目录的.gitignore写入,比如说

1
2
*.rar
*.pdf

它在同步时会忽略rarpdf后缀的文件。

情况四:删除缓存的索引文件

会遇到的一个问题是,原来同步的文件在后来不希望同步了,于是这个时候要先删除缓存的索引文件

1
git rm -r --cached .  

重新生成,并忽略.gitignore的指定文件

1
git add .

上传,但会在github上移除.gitignore的指定文件,本地保留

1
git commit -m 'Removing ignored files'

方法一:nucmer+ggbio

1
2
3
4
5
conda install -c bioconda mummer4=4.0.0beta2
nucmer --mum NC_045512.2.fna spades_output_sc_4000/scaffolds.fasta -p test
# 筛选长度为1000以上的
delta-filter -l 1000 -q test.delta > test_filter.delta
show-coords -c -l -L 1000 -r -T test_filter.delta > test_filter_coords.txt
1
samtools faidx NC_045512.2.fna

需要用到的是test_filter_coords.txtNC_045512.2.fna.fai

参考
https://taylorreiter.github.io/2019-05-11-Visualizing-NUCmer-Output/

跑链接里这个R代码,但这个R代码需要改进

方法二:minidot

下载minidot加入环境变量,这个软件会依赖一些R包,按照报错进行安装。

-S参数可以不要显示自己跟自己比对的结果

1
minidot -S -o out.pdf spades_output_sc_4000/scaffolds.fasta NC_045512.2.fna

以下报错显示缺少libcrypto.so.1.0.0动态库。

1
2
$ samtools
samtools: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory

通过ldd查看samtools依赖库

1
2
3
4
5
6
7
8
9
10
11
$ which samtools
~/miniconda2/envs/rna2/bin/samtools
$ ldd ~/miniconda2/envs/rna2/bin/samtools
linux-vdso.so.1 => (0x00007ffcd9138000)
libz.so.1 => /public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libz.so.1 (0x00007f7a9eaaa000)
libm.so.6 => /lib64/libm.so.6 (0x00007f7a9e5a2000)
libbz2.so.1.0 => /public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libbz2.so.1.0 (0x00007f7a9ea74000)
liblzma.so.5 => /public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/liblzma.so.5 (0x00007f7a9ea4b000)
libcurl.so.4 => /public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libcurl.so.4 (0x00007f7a9e9bb000)
libcrypto.so.1.0.0 => not found
...

查看已有的动态库

1
2
3
$ ls /public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libcrypto*
/public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libcrypto.so
/public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libcrypto.so.1.1

使用软链接瞒天过海的时候到了!
在上述的lib目录下面,创建一个链接到已有动态库libcrypto.so.1.1的假的libcrypto.so.1.0.0骗过samtools

1
ln -s /public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libcrypto.so.1.1 /public/home/huangsisi/miniconda2/envs/rna2/bin/../lib/libcrypto.so.1.0.0

然后就成功了。/滑稽

Brief version for Jiang lab. Original link: https://hc1023.github.io/2019/09/07/conda/

Step1:安装miniconda

可以进入镜像网站寻找想要的版本:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/

也可以直接conda官网miniconda:https://conda.io/miniconda.html

或者直接用以下代码安装最新版本。

1
2
3
4
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda2-latest-Linux-x86_64.sh
# ls *sh
bash Miniconda2-latest-Linux-x86_64.sh
# Type Enter or yes

source bashrc 并检查是否安装成功。

1
2
source ~/.bashrc
conda --help

Step2:配置

  • 添加源
1
2
3
4
conda config --add channels r
conda config --add channels conda-forge
conda config --add channels bioconda
cat ~/.condarc
  • 创建环境,比如创建一个叫rna的环境
1
conda create -n rna python=2

Step3:安装包

以下代码在rna环境中安装了处理数据时的常用包

1
2
3
4
5
6
7
8
conda activate rna
conda install -y bowtie2
conda install -y samtools
conda install -y fastqc
conda install -y bwa
conda install r-base
conda install -c r r-ggplot2 # 安装R包
conda deactivate

conda基础命令操作

  • 环境创建、激活、退出、删除
1
2
3
4
5
6
7
8
9
10
11
12
# 基于python2版本创建一个名字为rna的环境
conda create -n rna python=2
# 激活环境
source activate rna
# 或者
conda activate rna
# 退出环境
conda deactivate
# 删除环境
conda remove -n rna --all
# 或者
conda env remove -n rna
  • 查看所有创建的环境
1
2
3
4
5
6
7
$ conda info -e
# conda environments:
#
base /public/home/huangsisi/miniconda2
crispr /public/home/huangsisi/miniconda2/envs/crispr
rna * /public/home/huangsisi/miniconda2/envs/rna
rna2 /public/home/huangsisi/miniconda2/envs/rna2
  • 管理包
1
2
3
4
5
6
7
8
9
10
11
# 更新所有包,一般没必要
conda upgrade --all
# 安装 bwa
# 加上 -y 是为了在提示yes/no时默认回答yes
conda install -y bwa
# 查看已安装的包
conda list
# 包更新
conda update bwa
# 删除包
conda remove bwa

  • .bst文件,控制引文格式(期刊提供)。如elsarticle-num.bst

在tex文件前面加上

1
2
%% `Elsevier LaTeX' style
\bibliographystyle{elsarticle-num}
  • .bib文件,其中是我们的参考文献。如mybibfile.bib
1
2
3
4
5
6
7
8
9
@article{Feynman1963118,
title = "The theory of a general quantum system interacting with a linear dissipative system",
journal = "Annals of Physics ",
volume = "24",
pages = "118--173",
year = "1963",
doi = "10.1016/0003-4916(63)90068-X",
author = "R.P Feynman and F.L {Vernon Jr.}"
}

在结尾引文处加上

1
\bibliography{mybibfile}

并在正文中引用

1
\cite{Feynman1963118}
  • 编译

1.XeLaTeX编译生成.aux文件等,告诉BibTeX使用的引用
2.用BibTeX 编译.bib文件,生成.bbl文件,.blg文件
3.再次XeLaTeX编译,结尾出现参考文献
4.最后再XeLaTeX编译,正文中出现正确的引用编号

也许在未来某一天我会在github上上传一份良好的论文模板,当然我也可能把这事鸽了……

使用的集群会有计算结点和登录结点。以lab的集群为例

1
2
3
4
5
[huangsisi@tc6000 ~]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
sugon* up infinite 1 idle node1
low up infinite 1 idle node1
download up infinite 1 idle tc6000
  • -N node oriented
  • -l 提供更多的信息:number of CPUs, memory, temporary disk (also called scratch space), node weight (an internal parameter specifying preferences in nodes for allocations when there are multiple possibilities), features of the nodes (such as processor type for instance) and the reason, if any, for which a node is down.
1
2
3
4
5
6
[huangsisi@tc6000 ~]$ sinfo -Nl
Sun Aug 16 10:38:15 2020
NODELIST NODES PARTITION STATE CPUS S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON
node1 1 sugon* idle 144 4:18:2 206359 0 1 (null) none
node1 1 low idle 144 4:18:2 206359 0 1 (null) none
tc6000 1 download idle 12 1:12:1 63889 0 1 (null) none

node1是计算结点(不连网),tc6000是登录结点(连网),sbatch递交作业后slurm是在计算结点进行工作调度。

Read more »