Python 3.x 返回并存储从Perl脚本运行的python脚本中计算的变量
我从Perl脚本运行一个简单的.py脚本。 下面是python代码(TmRD.py): 我想返回在python脚本中计算的tm参数,并将其存储在Perl脚本中。 下面是Perl脚本(test.pl) 我从控制台运行它,如下所示:Python 3.x 返回并存储从Perl脚本运行的python脚本中计算的变量,python-3.x,perl,Python 3.x,Perl,我从Perl脚本运行一个简单的.py脚本。 下面是python代码(TmRD.py): 我想返回在python脚本中计算的tm参数,并将其存储在Perl脚本中。 下面是Perl脚本(test.pl) 我从控制台运行它,如下所示: perl /home/tmp/test.pl auucuucgcgga 因此,预期产出应为: ret 30.014854619578273 然而,我得到的结果是: ret 您需要将print(tm)添加到python文件的末尾 import sys from Bi
perl /home/tmp/test.pl auucuucgcgga
因此,预期产出应为:
ret 30.014854619578273
然而,我得到的结果是:
ret
您需要将print(tm)添加到python文件的末尾
import sys
from Bio.Seq import Seq
from Bio.SeqUtils import MeltingTemp as mt
def calculate_tm (seq):
seq_Tm = mt.Tm_NN(seq, nn_table = mt.R_DNA_NN1)
return seq_Tm
if __name__ == '__main__':
s = str(sys.argv[1])
myseq = Seq(s)
tm = calculate_tm(myseq)
print(tm)
实现这一目标的另一种方法是使用cpan中的inline::python模块,这样您就不必从perl调用python,而是让perl直接调用python并以这种方式传递变量。 在你的情况下(我没有尝试过这个),它会是这样的:
#!/usr/bin/perl -w
use strict;
use warnings;
use Inline Python => <<END;
import sys
from Bio.Seq import Seq
from Bio.SeqUtils import MeltingTemp as mt
def calculate_tm (seq):
seq_Tm = mt.Tm_NN(seq, nn_table = mt.R_DNA_NN1)
return seq_Tm
END
my $arg1 = $ARGV[0];
print "ARG 1: $arg1\n";
my $ret = calculate_tm($arg1);
print "ret $ret\n";
#/usr/bin/perl-w
严格使用;
使用警告;
使用内联Python=>如果从shell运行会得到什么:/home/tmp/TmRD.py auucuucgcggga
?重新发布。为什么不改进一下,让它重新打开呢?哦,还有我在评论中提到的问题。
import sys
from Bio.Seq import Seq
from Bio.SeqUtils import MeltingTemp as mt
def calculate_tm (seq):
seq_Tm = mt.Tm_NN(seq, nn_table = mt.R_DNA_NN1)
return seq_Tm
if __name__ == '__main__':
s = str(sys.argv[1])
myseq = Seq(s)
tm = calculate_tm(myseq)
print(tm)
#!/usr/bin/perl -w
use strict;
use warnings;
use Inline Python => <<END;
import sys
from Bio.Seq import Seq
from Bio.SeqUtils import MeltingTemp as mt
def calculate_tm (seq):
seq_Tm = mt.Tm_NN(seq, nn_table = mt.R_DNA_NN1)
return seq_Tm
END
my $arg1 = $ARGV[0];
print "ARG 1: $arg1\n";
my $ret = calculate_tm($arg1);
print "ret $ret\n";