0%

可能让大家失望了,我的主力电脑不是服务器平台,也不是HEDT(high end desktop)平台。得益于技术进步,最普通的家用电脑,也能很好的完成我的生物信息分析。

配置单

1
2
3
4
5
6
CPU:英特尔 i5 10400
主板:华擎B460M Pro4
内存:光威 DDR4 2666 32G
硬盘:西部数据 SN550 1TB,西部数据紫盘 4T
电源:金河田 金牌 500W
机箱:先马 小黑洞

这个配置的价格约4000元,性价比非常高。

使用体验

盒装CPU自带的散热器,全铝鳍片,没有导热铜管,下压式而不是侧吹式,我担心因为散热的问题不能发挥出CPU的全部性能。实际测试,盒装自带的散热器完全够用,i5-10400能跑满全核心睿频4.0GHz,温度在62度左右。

查看CPU运行频率

1
2
sudo apt install cpufrequtils
cpufreq-info |grep 'current CPU frequency'

查看CPU温度

1
2
sudo apt install lm-sensors
sensors

0-based和1-based

生物信息文件格式中有很多格式是基于基因组坐标的,比如常见的BED格式或者GTF格式。然而对于对标系的定义,这两者有着截然的区别。BED格式第一个位置的下标是0,区间前开后闭;而GTF格式第一个位置的下标是1,区间都是闭的。不妨我们称前者为0-based,后者为1-based。0-based的优点是长度的计算很简单,直接相减就可以得到序列的长度;而1-based的优点是比较直观。

除了BED格式和GTF格式,下表列举了其他格式的情况。

长度计算

Length(0-based) = End(0-based) - Start(0-based)
Length(1-based) = End(1-based) - Start(1-based) + 1

坐标转换

0-based转1-based
Start(1-based) = Start(0-based) + 1
End(1-based) = End(0-based)

1-based转0-based
Start(0-based) = Start(1-based) - 1
End(0-based) = End(1-based)

BBR 是 Google开发的TCP拥塞控制算法,可以显著提高Linux服务器TCP传输的吞吐量。我最早是从Youtube上那帮做翻墙视频的人那里知道BBR的。翻墙服务器开启BBR后,观看4K Youtube视频毫无压力。受此启发,我把所有的服务器都开启了BBR,SFTP上传下载的速度提升有10倍以上,服务器上的网站访问也比以前流畅了。

查看Linux内核版本

从Linux 4.9内核开始,BBR已经加入到Linux内核之中。如果所使用的Linux系统内核版本大于4.9,就可以直接开启BBR功能。现在常用的的CentOS 8和Ubuntu 18.04的内核版本都大于4.9。如果你的系统内核低于4.9,需要自己安装BBR,但是不推荐新手这么做。我们可以使用如下命令查看Linux内核版本。

1
uname -r

查看BBR状态

1
sysctl net.ipv4.tcp_available_congestion_control

返回值为net.ipv4.tcp_available_congestion_control = reno cub,说明当前系统没有开启BBR。

开启BBR

1
2
3
sudo bin/su -c "echo 'net.core.default_qdisc=fq' >> /etc/sysctl.conf"
sudo bin/su -c "echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.conf"
sudo sysctl -p

再次,查看BBR状态

1
sysctl net.ipv4.tcp_available_congestion_control
此时,返回值为net.ipv4.tcp_available_congestion_control = reno cub bbr,说明BBR已经成功开启。

使用一键脚本

对BBR最为喜欢的是做翻墙的一群人,他们开发的一键脚本不仅支持官方的BBR算法,还有魔改BBR、BBR plus、锐速BBR。非官方BBR算法更加激进,比起官方BBR,在翻墙速度方面有所提升,但提升的幅度并没有是否开启BBR的差距大。考虑到稳定性,推荐只使用官方BBR。

1
2
3
wget -c https://static.biochen.com/software/tcp.sh
sudo chmod 755 tcp.sh
./tcp.sh

Python语言简洁,学习起来非常快,使用Python的科研工作者越来越多。Python拥有丰富的扩展包,这使得它可以轻松处理各种问题。

Python用于科学计算的包括但不限于如下: + Numpy:提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库等。 + Scipy:提供许多科学计算函数库,包括统计,优化,整合,线性代数模块,傅里叶变换,信号和图像处理,常微分方程求解器等。 + Pandas:基于Numpy,提供了大量库和一些标准的数据模型,比如二维数组。 + Matplotlib:绘图包,旨在替代MATLAB。

Anaconda是一个集合,包括conda,Python解释器,一些第三方库。conda用于包管理和环境管理。包管理与pip类似,管理Python第三方库。conda将一切都看成包,包括conda本身和Python解释器。环境管理类似于virtualenv,能够允许用户使用不同版本的Python和不同的第三方库环境,并灵活切换。

用Anaconda来管理环境和第三方库将是非常方便的,而且自己安装这些库对新手来说是一个不小的挑战。

Anaconda包括了科学、数学、工程、数据分析中最受欢迎的300多个Python包,支持Python2/3, Windows/Linux/Mac,而且还是非常有好的安装包(.exe/.sh/.pkg)。一键安装科学计算中常用的包,爽!

安装Anaconda

在Linux上安装Anaconda非常简单。Anaconda带了很多包,体积非常大,为了节省空间也可以先装Miniconda,再装自己需要的包。

1
sh Anaconda3-5.1.0-Linux-x86_64.sh
安装过程中会提示安装的路径PREFIX=/home/chenwen/anaconda3,默认在用户的home目录,可以安装到其他地方。还会提示是否将此路径添加到用户的环境变量(/home/chenwen/.bashrc)。

安装Anaconda之后,输入如下命令验证Anaconda是否安装成功,并查看它的版本。

1
conda --version

修改源镜像

Anaconda安装成功之后,我们首先将软件源修改为国内镜像,运行如下命令。

1
2
3
4
5
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes

查看已经添加的镜像

1
conda config --get channels

管理虚拟环境

有些包依赖特定版本的Python,或者依赖其他特定版本的包,与我们已有的Python环境不同。如果我们因此重装Python,或者重装一些软件包,就把已有的Python环境搞乱了,这时候虚拟环境就派上用场了。如果只是简单的学习Python,直接用基础环境就可以了,没有必要创建虚拟环境。

我们可以通过create命令来创建虚拟环境。

1
conda create --name tensorflow python=3.5

这样我就创建了一个名叫tensorflow的虚拟环境,当然你可以用任何你喜欢的名字代替。我还指定了Python版本是3.5。环境创建完毕后,我们可以使用info命令查看所有环境。

1
conda info --envs
我看到这条命令的输出有tensorflow /home/chenwen/anaconda3/envs/tensorflow,告诉我们tensorflow这个虚拟环境的路径。虚拟环境的实质就是创建了一个文件夹,把相关的包放在这里,并且把一些环境变量指向这里。如果需要切换到该虚拟环境,可以使用activate命令。
1
conda activate tensorflow

如果想取消激活,使用deactivate命令即可。

1
conda deactivate
如果想删除虚拟环境,使用remove命令。
1
conda remove --name tensorflow --all

当我们切换到某个虚拟环境后,就可以进行这个环境的包管理了。

管理包

查看安装的包,可以使用list命令。

1
conda list
如果你发现某个包默认没有装,比如scikit-learn,可以使用conda install 命令安装。
1
conda install scikit-learn
更新包,可以使用conda update命令
1
conda update scikit-learn

后记

Anaconda的功能非常强大,熟悉R的朋友可能知道Bioconductor,与此对应的有Bioconda。Bioconda不仅是装Python包,还能装很多其他生信软件。

此外,我还非常喜欢Anaconda带的IDE工具spyder,比起Python官方自带的IDLE强很多,但是又不复杂。