生物信息学R语言源码

跑BWA比对测试一下酷睿I9的CPU

2020-01-04  本文已影响0人  因地制宜的生信达人

最近给学员买了一个CPU,非常的霸气:

查看测试数据,配对的肿瘤外显子数据,fq文件如下:

3.6G 20:09 NPC10F-N_2.fastq.gz
3.2G 20:09 NPC10F-T_1.fastq.gz
3.3G 20:08 NPC10F-T_2.fastq.gz
2.7G 20:08 NPC15F-N_1.fastq.gz
2.8G 20:07 NPC15F-N_2.fastq.gz
2.8G 20:07 NPC15F-T_1.fastq.gz
2.9G 20:06 NPC15F-T_2.fastq.gz
2.8G 20:06 NPC29F-N_1.fastq.gz
2.9G 20:05 NPC29F-N_2.fastq.gz
2.4G 20:05 NPC29F-T_1.fastq.gz
2.5G 20:04 NPC29F-T_2.fastq.gz
2.0G 20:04 NPC34F-N_1.fastq.gz
2.0G 20:03 NPC34F-N_2.fastq.gz
2.2G 20:03 NPC34F-T_1.fastq.gz
2.3G 20:03 NPC34F-T_2.fastq.gz
2.1G 20:02 NPC37F-N_1.fastq.gz
2.1G 20:02 NPC37F-N_2.fastq.gz
2.2G 20:02 NPC37F-T_1.fastq.gz
2.2G 20:01 NPC37F-T_2.fastq.gz

都是标准的肿瘤外显子测序数据,T按照道理应该是比N测序数据量大,但是这些样本并不是。

使用简单的shell脚本构建配置文件如下:

NPC10F-N    /data//NPC10F-N_1.fastq.gz  /data//NPC10F-N_2.fastq.gz
NPC10F-T    /data//NPC10F-T_1.fastq.gz  /data//NPC10F-T_2.fastq.gz
NPC15F-N    /data//NPC15F-N_1.fastq.gz  /data//NPC15F-N_2.fastq.gz
NPC15F-T    /data//NPC15F-T_1.fastq.gz  /data//NPC15F-T_2.fastq.gz
NPC29F-N    /data//NPC29F-N_1.fastq.gz  /data//NPC29F-N_2.fastq.gz
NPC29F-T    /data//NPC29F-T_1.fastq.gz  /data//NPC29F-T_2.fastq.gz
NPC34F-N    /data//NPC34F-N_1.fastq.gz  /data//NPC34F-N_2.fastq.gz
NPC34F-T    /data//NPC34F-T_1.fastq.gz  /data//NPC34F-T_2.fastq.gz
NPC37F-N    /data//NPC37F-N_1.fastq.gz  /data//NPC37F-N_2.fastq.gz
NPC37F-T    /data//NPC37F-T_1.fastq.gz  /data//NPC37F-T_2.fastq.gz

这个取决于每个人的脚本习惯,我的脚本是;

ls /data/project/DNA/tumor-NT-NPC-WES/fastqData/*_1.fastq.gz > 1
ls /data/project/DNA/tumor-NT-NPC-WES/fastqData/*_2.fastq.gz > 2
cut -d"/" -f 7 1 |cut -d"_" -f 1 > 0
paste 0  1 2  > config.clean

一个简单的bwa比对脚本

虽然简单,但是技术含量有点高!

#!/bin/bash
# usage: for i in {0..9};do (nohup bash step1-bwa.sh ./ config.fq 10 $i & );done
analysis_dir=$1
config_file=$2
number1=$3
number2=$4
INDEX=/data/bigbiosoft/GATK/resources/bundle/hg38/bwa_index/gatk_hg38
cat $config_file |while read id
do
    arr=($id)
    fq1=${arr[1]}
    fq2=${arr[2]}
    sample=${arr[0]}

    if((i%$number1==$number2))
    then

#####################################################
################ Step 1 : Alignment #################
#####################################################
if [  ! -f  ok.step1-Alignment.$sample.status ]; then
    start=$(date +%s.%N)
    echo bwa  $sample `date` >> $sample.log
    bwa mem -t 5 -M  -R "@RG\tID:$sample\tSM:$sample\tLB:WES\tPL:Illumina" $INDEX $fq1 $fq2 1>>$sample.sam 2>>/dev/null
    if [ $? -eq 0 ]; then
         echo "bwa succeed" $sample  >> $sample.log
         touch ok.step1-Alignment.$sample.status
    else
         echo "failed" $sample  >> $sample.log
    fi
    echo bwa $sample `date` >> $sample.log 
    dur=$(echo "$(date +%s.%N) - $start" | bc)
    printf "Execution time for BWA : %.6f seconds" $dur >> $sample.log
    echo >> $sample.log
    
fi
 

    fi
    i=$((i+1))

done

批量提交的用法是:for i in {0..9};do (nohup bash step1-bwa.sh ./ config.fq 10 $i & );done 很简单:

可以看到全部的10个样本的bwa比对进程都已经开始啦:

拍照看看工作中的CPU:


输出的文件如下:

$ls -lh *sam
-rw-rw-r-- 1 vip1 vip1  33G 10月 23 19:36 NPC10F-N.sam
-rw-rw-r-- 1 vip1 vip1  30G 10月 23 19:33 NPC10F-T.sam
-rw-rw-r-- 1 vip1 vip1  26G 10月 23 19:30 NPC15F-N.sam
-rw-rw-r-- 1 vip1 vip1  26G 10月 23 19:25 NPC15F-T.sam
-rw-rw-r-- 1 vip1 vip1  27G 10月 23 19:20 NPC29F-N.sam
-rw-rw-r-- 1 vip1 vip1  25G 10月 23 19:15 NPC29F-T.sam
-rw-rw-r-- 1 vip1 vip1 2.3G 10月 23 18:43 NPC34F-N.sam
-rw-rw-r-- 1 vip1 vip1  23G 10月 23 19:15 NPC34F-T.sam
-rw-rw-r-- 1 vip1 vip1  21G 10月 23 19:11 NPC37F-N.sam
-rw-rw-r-- 1 vip1 vip1  22G 10月 23 19:12 NPC37F-T.sam

可以看到9个样本早就成功了,但是其中一个样本明显输出的sam文件小很多,因为我们前面脚本写的好,所以日志都在,简单检查一下:

$grep Execution *log
NPC10F-N.log:Execution time for BWA : 3506.270858 seconds
NPC10F-T.log:Execution time for BWA : 3247.848839 seconds
NPC15F-N.log:Execution time for BWA : 3101.098587 seconds
NPC15F-T.log:Execution time for BWA : 2815.466299 seconds
NPC29F-N.log:Execution time for BWA : 2473.056571 seconds
NPC29F-T.log:Execution time for BWA : 2183.428048 seconds
NPC34F-N.log:Execution time for BWA : 251.685388 seconds
NPC34F-T.log:Execution time for BWA : 2184.577157 seconds
NPC37F-N.log:Execution time for BWA : 1976.718491 seconds
NPC37F-T.log:Execution time for BWA : 2000.084872 seconds

可以看到,对样本NPC34F-N来说,运行了才251秒,也就是说仅仅是载入了bwa的参考基因组而已,简单推测,应该是该样本的fastq文件有问题,可能是拷贝过程损坏。

最简单的就是看看这些fastq文件走fastqc质控是否成功,代码如下:

 cut -f 3 ../config.fq |xargs fastqc -t 10 -O ./
 cut -f 2 ../config.fq |xargs fastqc -t 10 -O ./

有趣的是,样本都成功进行了fastqc质控啊!后来检查配置,才发现,是因为我们的CPU是36线程,但是我提交了10个任务,每个任务调用5个线程,导致资源分配不足,部分任务被kill了。

上一篇下一篇

猜你喜欢

热点阅读