conda安装的star-fusion流程内部软件版本不兼容

2022-03-03 14:06:15 浏览数 (1)

star-fusion流程需要调用star这个非常出名的转录组比对工具,然后是star-fusion流程内部的一个perl脚本去解析star比对过程中输出的Chimeric.out.junction文件。

其中star比对过程已经是超级简单了,但是perl脚本就比较麻烦,因为perl本身是上古语言,STAR-Fusion 这个perl脚本依赖的环境会难倒很多人,如下所示的代码架构:

代码语言:javascript复制
$ head STAR-Fusion
#!/usr/bin/env perl

use strict;
use warnings;
use Carp;
use Cwd;
use FindBin;
use lib ("$FindBin::Bin/PerlLib");
use Pipeliner;
use File::Basename;

这个时候,使用conda来管理是一个比较简单的解决方案,安装自己的conda,每个用户独立操作,安装方法代码如下:

代码语言:javascript复制
# 首先下载文件,20M/S的话需要几秒钟即可
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 接下来使用bash命令来运行我们下载的文件,记得是一路yes下去
bash Miniconda3-latest-Linux-x86_64.sh 
#  安装成功后需要更新系统环境变量文件
source ~/.bashrc

使用安装好的conda来 安装软件的代码如下所示:

代码语言:javascript复制
# trim,star 两个软件即可
conda create -n starFusion 
conda activate starFusion 

conda install -c bioconda trim-galore
conda install -c bioconda star-fusion

可以看到目前两个软件版本是:

代码语言:javascript复制
STAR --version
2.7.10a

STAR-Fusion --version
STAR-Fusion version: 1.6.0 

 perl --version 
This is perl 5, version 26, subversion 2 (v5.26.2) built for x86_64-linux-thread-multi

然后运行star-fusion流程需要需要下载配套数据库:

代码语言:javascript复制
 nohup wget https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/__genome_libs_StarFv1.10/GRCh38_gencode_v37_CTAT_lib_Mar012021.plug-n-play.tar.gz &
 # 这个文件有点大,
#   32G 3月   6  2021 GRCh38_gencode_v37_CTAT_lib_Mar012021.plug-n-play.tar.gz

有了软件和配套数据库,运行star-fusion流程就很容易了。

STAR的比对过程非常顺利

每个样品的比对日志如下所示:

代码语言:javascript复制
 STAR version: 2.7.10a   compiled: 2022-01-14 
Jan 31 11:56:48 ..... started STAR run
Jan 31 11:56:48 ..... loading genome
Jan 31 11:57:58 ..... started 1st pass mapping
Jan 31 12:10:13 ..... finished 1st pass mapping
Jan 31 12:10:14 ..... inserting junctions into the genome indices
Jan 31 12:12:12 ..... started mapping
Jan 31 12:26:04 ..... finished mapping
Jan 31 12:26:07 ..... finished successfully

队列里面的所有样品都有bam文件输出, 如下所示

代码语言:javascript复制
 ls -lh */Aligned.out.bam|cut -d" " -f 5- |head
 2.3G 1月  31 12:26 K001391N_HLMGGDSXY-L2_outdir/Aligned.out.bam
 2.7G 1月  31 12:32 K001392N_HLMGGDSXY-L2_outdir/Aligned.out.bam
 2.2G 1月  31 12:24 K001394N_HLMGGDSXY-L2_outdir/Aligned.out.bam
  18G 1月  31 15:09 K001450T_HLMGGDSXY-L4_outdir/Aligned.out.bam
  17G 1月  31 14:56 K001451T_HLMGGDSXY-L4_outdir/Aligned.out.bam
  11G 1月  31 14:20 K002029T_HJWC7DSXY-L2_outdir/Aligned.out.bam
 8.8G 1月  31 14:13 K002380T_HLWKVDSXY-L4_outdir/Aligned.out.bam
 8.8G 1月  31 13:55 K003021N_HLW7YDSXY-L4_outdir/Aligned.out.bam
  26G 1月  31 19:11 K003038T_HLW7YDSXY-L4_outdir/Aligned.out.bam
  11G 1月  31 16:50 K003450N_HLWHCDSXY-L3_outdir/Aligned.out.bam

而且每个样品也有Chimeric.out.junction文件输出,如下所示:

代码语言:javascript复制
ls -lh */Chimeric.out.junction |cut -d" " -f 5- |head
 78M 1月  31 12:26 K001391N_HLMGGDSXY-L2_outdir/Chimeric.out.junction
106M 1月  31 12:32 K001392N_HLMGGDSXY-L2_outdir/Chimeric.out.junction
 68M 1月  31 12:24 K001394N_HLMGGDSXY-L2_outdir/Chimeric.out.junction
270M 1月  31 15:09 K001450T_HLMGGDSXY-L4_outdir/Chimeric.out.junction
342M 1月  31 14:56 K001451T_HLMGGDSXY-L4_outdir/Chimeric.out.junction
151M 1月  31 14:20 K002029T_HJWC7DSXY-L2_outdir/Chimeric.out.junction
157M 1月  31 14:13 K002380T_HLWKVDSXY-L4_outdir/Chimeric.out.junction
191M 1月  31 13:55 K003021N_HLW7YDSXY-L4_outdir/Chimeric.out.junction
378M 1月  31 19:11 K003038T_HLW7YDSXY-L4_outdir/Chimeric.out.junction
378M 1月  31 16:50 K003450N_HLWHCDSXY-L3_outdir/Chimeric.out.junction

最耗时的步骤已经是过去了,理论上这个时候star-fusion流程内部的一个perl脚本去解析star比对过程中输出的Chimeric.out.junction文件就可以完成融合基因的搜索啦。

但是STAR-Fusion流程就报错

我看了看这个运行日志,以及对应的报错信息:

代码语言:javascript复制
Running CMD: /home/data/fusion/miniconda3/envs/starFusion/lib/STAR-Fusion/util/STAR-Fusion.map_chimeric_reads_to_genes  --genome_lib_dir /home/fusion/GRCh38_gencode_v37_CTAT_lib_Mar012021.plug-n-play/ctat_genome_lib_build_dir  -J Chimeric.out.junction  > /home/data/fusion/fusion_results/K001391N_HLMGGDSXY-L2_outdir/star-fusion.preliminary/star-fusion.junction_breakpts_to_genes.txt


-building interval tree based on /home/fusion/GRCh38_gencode_v37_CTAT_lib_Mar012021.plug-n-play/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu
-done building interval tree (0.07 min).
-parsing fusion evidence: Chimeric.out.junction
-mapping reads to genes

# 接下来开始报错
Argument "brkpt_donorA" isn't numeric in preincrement (  ) at /home/data/fusion/miniconda3/envs/starFusion/lib/STAR-Fusion/util/STAR-Fusion.map_chimeric_reads_to_genes line 379, <$fh> line 1.
Can't use an undefined value as an ARRAY reference at /home/data/fusion/miniconda3/envs/starFusion/lib/STAR-Fusion/util/STAR-Fusion.map_chimeric_reads_to_genes line 511, <$fh> line 1.

确实是这个perl脚本报错了,简单谷歌这个关键词,就可以解决。

需要 重新下载star-fusion-1.9.0软件

在官网可以看到,https://anaconda.org/bioconda/star-fusion,确实是 linux-64 v1.6.0 ,所以conda默认是没办法下载star-fusion-1.9.0软件 。

我看了看 star-fusion 的版本还是蛮多的 :

代码语言:javascript复制
conda search star-fusion  -c bioconda
Loading channels: done
# Name                       Version           Build  Channel
star-fusion                    0.4.0      pl5.18.2_0  bioconda
star-fusion                    0.5.3      pl5.18.2_0  bioconda
star-fusion                    0.5.3      pl5.22.0_0  bioconda
star-fusion                    0.5.4               1  bioconda 
star-fusion                    1.6.0               1  bioconda
star-fusion                    1.7.0               0  bioconda 
star-fusion                    1.9.1      hdfd78af_1  bioconda
star-fusion                   1.10.0      hdfd78af_0  bioconda
star-fusion                   1.10.0      hdfd78af_1  bioconda

担心这个软件跟其它软件冲突,我给它一个独立的环境:

代码语言:javascript复制
conda create -n starFusion1.9.0 
conda activate starFusion1.9.0  
conda install -c bioconda/label/cf201901 star-fusion=1.9.0 

conda search  star-fusion -c bioconda 
conda install -c conda-forge mamba
mamba search  star-fusion -c bioconda 

mamba install -c conda-forge perl-carp-assert
mamba search   *python_abi*    -c conda-forge
mamba install -c conda-forge python_abi=2.7
mamba install -c bioconda star-fusion=1.9.0

git clone --recursive https://github.com/STAR-Fusion/STAR-Fusion.git

但是我尝试了很多方法,都没办法成功安装独立的star-fusion-1.9.0软件 ,还是蛮奇怪的。

但是我git下载了它源代码,发现其压缩包里面的STAR-Fusion命令本来就是可以直接使用的,无需conda来管理了。可以看到, 其实1.9的star-fusion的这个STAR-Fusion.map_chimeric_reads_to_genes 脚本内容跟前面conda自己配置的1.6版本内容不一样:

代码语言:javascript复制
  531   /home/data/fusion/STAR-Fusion-master/util/STAR-Fusion.map_chimeric_reads_to_genes 
  586  /home/data/fusion/miniconda3/envs/starFusion/lib/STAR-Fusion/util/STAR-Fusion.map_chimeric_reads_to_genes 

主要是因为它们虽然是都解析的是Chimeric.out.junction文件,但是star这个比对软件本身就修改了Chimeric.out.junction文件的格式,导致后面的解析Chimeric.out.junction文件的perl脚本也不得不与时俱进。

如果你确实觉得我的教程对你的科研课题有帮助,让你茅塞顿开,或者说你的课题大量使用我的技能,烦请日后在发表自己的成果的时候,加上一个简短的致谢,如下所示:

代码语言:javascript复制
We thank Dr.Jianming Zeng(University of Macau), and all the members of his bioinformatics team, biotrainee, for generously sharing their experience and codes.

十年后我环游世界各地的高校以及科研院所(当然包括中国大陆)的时候,如果有这样的情谊,我会优先见你。

0 人点赞