如果你的数据量太大,尝试一下本地运行psRNATarget吧
试了下其他的软件都不好使,还得是psRNATarget,但是没有本地版,在issue中看到有人手工复现了代码,让我们来跑下试试。
原始网址
https://github.com/jtremblay/MiRNATarget
运行环境依然是 wsl ubuntu2204,代码实际要求python >3.9,其他好像没啥了
克隆MiRNATarget后,将文件夹添加到环境变量。其中data是测试用数据。
救命啊原始文件有BUG(已经提交issue)
在提供的miRNA数目超过100时,程序出现错误,问题在于100之后的ssearch输出不包含开头的空格
修改parse_ssearch.py原始代码:
应将line 67 的
match = re.match(r"\s+\d+>>>(\S+) - (\d+) nt", line)
更改为
match = re.match(r"\s*\d+>>>(\S+) - (\d+) nt", line)
然后你还需要一个ssearch36,他实际在fasta36中,所以我们需要安装fasta_v36.3.8i_Nov2022(https://github.com/wrpearson/fasta36/releases/tag/v36.3.8i_14-Nov-2020)
你可以直接wget下载二进制文件到一个单独的文件夹:
wget https://github.com/wrpearson/fasta36/releases/download/v36.3.8i_14-Nov-2020/fasta-36.3.8i-linux64.tar.gz
tar -xvzf fasta-36.3.8i-linux64.tar.gz
解压后你应该将fasta-36.3.8i/bin 加入到你的环境变量中。
然后回到MiRNATarget文件夹,这里我们可以看到有一个data 文件,把里面的2545824690.fna、test.fna、test_rc.fna拷贝到一个新的test文件夹中可以用来测试。
ssearch36 -f -8 -g -3 -E 10000 -T 8 -b 200 -r +4/-3 -n -U -W 10 -N 20000 ./test/test_rc.fna ./test/2545824690.fna > ssearch_output.txt
parse_ssearch.py -i ./test/ssearch_output.txt > ./test/ssearch_output.tsv
parse_mirna_targets.py -i ./test/ssearch_output.tsv > ./test/ssearch_output_parsed.tsv
这里会发现生成的ssearch_output.txt和2545824690.txt大小不一样,结果ssearch_output_parsed.tsv似乎也不一样,没有详细对比,可能是使用的fasta36版本不一样?
特别注意
这里提到了你的miRNA文件应该是test.fna,对其反向互补(Reverse complementarity)生成test_rc.fna。这是因为比对时实际计算机进行的是查找而不是互补,所以你在作图时候需要用原始数据哦
因此对于你的数据,应该用seqkit将miRNA反向互补后再用于预测
seqkit seq miRNA.fasta -r -p > miRNA.RC.fasta
最后依然是一行命令简化:
需要两个文件 miRNA.dna.fasta或者miRNA.fasta 以及 target.fasta
#不生成中间文件
#如果你的miRNA输出实际上是DNA文件则需要取消下面这一行的注释
#seqkit seq --dna2rna miRNA.dna.fasta >miRNA.fasta
mkdir MiRNATarget_output
seqkit seq -t RNA miRNA.fasta -r -p > miRNA.RC.fasta
ssearch36 -f -8 -g -3 -E 10000 -T 8 -b 200 -r +4/-3 -n -U -W 10 -N 20000 miRNA.RC.fasta target.fasta | parse_ssearch.py | parse_mirna_targets.py > ./MiRNATarget_output/ssearch_output_parsed.tsv
#生成中间文件
#如果你的miRNA输出实际上是DNA文件则需要取消下面这一行的注释
#seqkit seq --dna2rna miRNA.dna.fasta >miRNA.fasta
mkdir MiRNATarget_output
seqkit seq -t RNA miRNA.fasta -r -p > miRNA.RC.fasta
ssearch36 -f -24 -g -3 -E 10000 -T 8 -b 200 -r +4/-3 -n -U -W 10 -N 20000 miRNA.RC.fasta target.fasta > ./MiRNATarget_output/ssearch_output.txt
parse_ssearch.py -i ./MiRNATarget_output/ssearch_output.txt > ./MiRNATarget_output/ssearch_output.tsv
parse_mirna_targets.py -i ./MiRNATarget_output/ssearch_output.tsv > ./MiRNATarget_output/ssearch_output_parsed.tsv
其他提醒
ssearch36设置中,
-T 用于调节线程数
只可以设置 -f -9 -g -2 或者 -f -8 -g -3