Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 返回并存储从Perl脚本运行的python脚本中计算的变量_Python 3.x_Perl - Fatal编程技术网

Python 3.x 返回并存储从Perl脚本运行的python脚本中计算的变量

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脚本运行一个简单的.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 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";