简介
有些剖析须要很长时间,因为它在单个处理器上运行并且有大量数据须要解决。如果数据能够分成块并独自解决,那么问题就被认为是可并行化的。
数据并行状况
- 当文件的每一行都能够独自解决时
- 基因组的每条染色体都能够独自解决
- 组件的每个脚手架都能够独自解决
解决并行
- 压缩或解压缩 10 到 100 个文件
- 计算大文件中的行数
- 将许多样本的原始测序数据文件与基因组进行比对
不能并行的状况
基因组组装并不是简略的可并行化,因为第一步须要将每个读数与其余读数进行对齐,以便找到哪些读数类似并且应该连贯(组装)。获取读取的子集会导致低质量的组装后果。
GNU 并行
咱们用来并行化生物信息学问题的程序是 GNU 并行。它是“一种应用一个或多个计算节点并行执行作业的 shell 工具”。GNU 并行可帮忙您运行本来要按程序一项一项或循环运行的作业。您能够查看 GNU Parallel 网站,以确定如何在集群上装置 Parallel 和 / 或理解如何应用它。
- ubuntu 装置
sudo apt update # 更新包列表
sudo apt install parallel
# 版本查看
parallel --version
- 集群,咱们加载模块并查看版本
# 集群 load 模块
module load parallel
# 版本查看
parallel --version
一般状况
咱们将应用纽约时报 github 存储库整顿的 COVID-19 数据
mkdir GNU-parallel
cd GNU-parallel
wget https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv
这是一个逗号分隔的文件,所以让咱们将其转换为制表符分隔的文件
more us-counties.csv | tr ',' '\t' > us-counties.tab
如您所见,此数据蕴含各县和州无关疫情随工夫变动的信息。
head us-counties.tab
让咱们按县 / 州离开这些数据,而不是一个大文件
应用 sort 和 awk,咱们能够首先按县 / 州对文件进行排序,而后应用 awk 将每一行 ($0) 打印到名为 County-state.tab 的文件中。
sort -k 2,3 us-counties.tab | awk '{print $0 > $2"-"$3".tab"}'
这将生成 2578 个文件 + 咱们下载的原始 2 个文件
ls | wc
2580 2580 50550 # 输入后果
GNU 示例
- Gzip 压缩 2580 个文本文件
让咱们复制数据并比拟应用 for 循环与应用并行运行 gzip 须要多长时间
mkdir -p gzip/parallel
mkdir -p gzip/forloop
cp *.tab gzip/parallel
cp *.tab gzip/forloop
- GNU 并行 /gzip/forloop
cd gzip/forloop
time for f in *.tab; do gzip $f; done
real 0m15.801s
user 0m1.414s
sys 0m5.045s
然而,咱们能够通过应用 GNU 并行来更好地利用所有可用的 CPU。该函数的应用办法是:
- 并行命令
- -j10 用于解决的作业或 cpu 数量。这里咱们应用 10 个 cpu。
- 在本例中,“command”为 gzip {},其中 {} 是占位符,用于替换分隔符后定义的文件列表
- ‘:::’ 分隔符
- .tab 文件列表,对以 tab 结尾的任何文件应用 运算符
parallel -j10 "gunzip {}" ::: *.tab.gz
real 0m5.519s
user 0m0.376s
sys 0m1.367s
正如您所看到的,这将 gziping 命令的速度进步了 2.3 倍。这可能会有所不同,具体取决于您领有的 CPU 数量及其速度。
本文由 mdnice 多平台公布