生信-蛋白信号肽预测-signalp5的安装与使用

环境:
centos8,miniconda3,python 3.9.13

参考:
signal5 本地版安装及使用(Linux系统)_signalp-5.0-CSDN博客
https://blog.csdn.net/2201_75882736/article/details/140506644

SignalP 6.0 - DTU Health Tech - Bioinformatic Services
https://services.healthtech.dtu.dk/services/SignalP-6.0/


前言

SignalP可以预测来自古菌(arch)、革兰氏阳性菌(gram+)、革兰氏阴性菌(gram-)和真核生物(euk)的蛋白质中信号肽的存在及其切割位点的位置,是生物信息领域常用的工具。(引用自参考2)

由于同事要求同时安装signalp5(5.0b)和signalp6(fast版),对于前者,我下载的是预编译版;对于后者,我是从源码编译安装的,正好可以展示两种安装方式。5和6在使用上有一点点区别,后文会详细说明。本文的使用方法主要是:1)命令行;2)在Python脚本里通过subprocess调用。

安装

首先去官网下载。我是直接拿到同事分享的预编译包signalp-5.0b.tar.gz。
在这里插入图片描述
解压:

tar -vxf signalp-5.0b.tar.gz

使用

命令行使用

解压后使用bin下的二进制文件运行即可,如:

./signalp -h

也可以加入环境变量:

vi ~/.bashrc

在结尾处添加:

export PATH=/home/software/signalp-5.0b/bin:$PATH

然后source一下。

subprocess调用

import subprocess

# 这句的意思是不要额外的输出文件,预测结果直接放入标准输出
cmdStr = "source ~/.bashrc && signalp -fasta " + name + ".fa -stdout"
#print("Running command:", cmdStr)

try:
    output = subprocess.check_output(cmdStr, shell=True, stderr=subprocess.STDOUT, universal_newlines=True)
    lines = output.split("\n")
    for line in lines:
        # parse stdout information

except subprocess.CalledProcessError as spe:
    print("signalp5-subprocess.CalledProcessError;")
    print("Command failed with return code:", spe.returncode)
    print("Error output:", spe.output)
except Exception as e2:
    print(e2)

为什么要做异常处理?为什么要在命令里再source一遍?

答:因为我在执行命令的时候发现报错:

Command failed with return code: 127
Error output: /bin/sh: signalp: command not found

但实际上,signalp的路径已经加入到~/.bashrc了,当前路径下使用signalp -h也是可以正确输出的,不清楚为什么subprocess不行。解法就是再source一遍。

命令的参数说明

  • -batch int:同时运行的序列数量。根据系统内存调整大小,默认为 10000
  • -fasta string:输入的 FASTA 格式文件。
  • -format string:输出格式。long 生成包含图表的预测结果,short 生成不包含图表的预测结果(默认)。
  • -gff3:生成处理序列的 GFF3 文件。
  • -mature:生成包含成熟序列的 FASTA 文件。
  • -org string:指定生物体类型。可选值为 arch(古菌)、gram+(革兰氏阳性菌)、gram-(革兰氏阴性菌)或 euk(真核生物,默认)。
  • -plot string:图表输出格式。当选择long输出时,可以选择 png(默认)、epsnone(仅生成表格文件)。
  • -prefix string:输出文件的前缀,默认为输入文件的前缀。
  • -stdout:将预测摘要写入标准输出。
  • -tmp string:指定临时文件目录,默认为系统默认临时目录。
  • -verbose:详细输出。指定 -verbose=false 可以避免打印详细信息,默认为 true。
  • -version:打印版本信息。

注意

批量是比较快的,尽量使用批量的方式。10条vs1条速度对比:

(base) [root@localhost batch]# time signalp -fasta euk10.fsa -stdout
# SignalP-5.0	Organism: euk	Timestamp: 20250324022524
# ID	Prediction	SP(Sec/SPI)	OTHER	CS Position
IPI00000001.2	OTHER	0.000323	0.999677	
IPI00000005.1	OTHER	0.002509	0.997491	
IPI00000006.1	OTHER	0.002509	0.997491	
IPI00000012.4	SP(Sec/SPI)	0.770085	0.229915	CS pos: 29-30. VSG-YL. Pr: 0.6528
IPI00000013.1	SP(Sec/SPI)	0.997215	0.002785	CS pos: 17-18. ASA-VP. Pr: 0.9443
IPI00000015.2	OTHER	0.000883	0.999117	
IPI00000017.1	OTHER	0.020566	0.979434	
IPI00000020.1	OTHER	0.010424	0.989576	
IPI00000021.5	OTHER	0.018032	0.981968	
IPI00000023.4	SP(Sec/SPI)	0.542231	0.457769	CS pos: 38-39. GFT-SQ. Pr: 0.2519

real	0m9.240s
user	0m10.880s
sys	0m1.059s
(base) [root@localhost batch]# time signalp -fasta test.fa -stdout
# SignalP-5.0	Organism: euk	Timestamp: 20250324022608
# ID	Prediction	SP(Sec/SPI)	OTHER	CS Position
test	OTHER	0.000323	0.999677	

real	0m8.231s
user	0m8.635s
sys	0m0.698s

结果解析

直接看上面的输出。第一列是名字(就是fasta格式中每一条的header),第二列是是否有信号肽的预测结果(OTHER表示没有,SP(Sec/SPI)表示有),第三列是预测有信号肽的概率,第四列是预测没有信号肽的概率,最后一列是切割位点信息(为空表示没有信号肽和切割位点):以CS pos: 38-39. GFT-SQ. Pr: 0.2519为例,38-39表示是在第38个与第39个残基之间切割,GFT的T就是第38个残基,SQ的S就是第39个残基;Pr: 0.2519表示这个预测的概率。

signalp6的安装和使用方法见:生信-蛋白信号肽预测-signalp6的安装与使用-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值