2016-11-15 72 views
0

我是Python新手,但真的很想在Linux服务器命令行上执行以下功能。请帮忙找出当我执行下面的脚本(test.py)时为什么没有打印出来?执行我键入python test.py。谢谢。在Linux上执行python函数

##!/usr/bin/python 

def get_minimal_representation(pos, ref, alt): 
    """ 
    Get the minimal representation of a variant, based on the ref + alt alleles in a VCF 
    This is used to make sure that multiallelic variants in different datasets, 
    with different combinations of alternate alleles, can always be matched directly. 
    Note that chromosome is ignored here - in xbrowse, we'll probably be dealing with 1D coordinates 
    Args: 
     pos (int): genomic position in a chromosome (1-based) 
     ref (str): ref allele string 
     alt (str): alt allele string 
    Returns: 
     tuple: (pos, ref, alt) of remapped coordinate 
    """ 
    pos = int(pos) 
    # If it's a simple SNV, don't remap anything 
    if len(ref) == 1 and len(alt) == 1: 
     return pos, ref, alt 
    else: 
     # strip off identical suffixes 
     while(alt[-1] == ref[-1] and min(len(alt),len(ref)) > 1): 
      alt = alt[:-1] 
      ref = ref[:-1] 
     # strip off identical prefixes and increment position 
     while(alt[0] == ref[0] and min(len(alt),len(ref)) > 1): 
      alt = alt[1:] 
      print "Alt: ", alt 
      ref = ref[1:] 
      print "Ref: ", ref 
      pos += 1 
      print "Pos: ", pos 
     return pos, ref, alt 

     print "the result is: ", get_minimal_representation(pos = 1001, ref = "CTCC", alt = "CCC,C,CCCC") 
+2

所有你正在做的是定义一个函数。你不叫它。 –

+0

我想我在这里调用它:'print'结果是:“,get_minimal_representation(pos = 1001,ref =”CTCC“,alt =”CCC,C,CCCC“)'否? – user3781528

+0

你想执行它什么?除了定义它之外,你必须调用函数,为了达到这个目的,你需要3个值传递给函数。 – chepner

回答

1

你有一个问题,最后一个print语句的缩进。它应该在功能之外。

def get_minimal_representation(pos, ref, alt): 
    """ 
    Get the minimal representation of a variant, based on the ref + alt alleles in a VCF 
    This is used to make sure that multiallelic variants in different datasets, 
    with different combinations of alternate alleles, can always be matched directly. 
    Note that chromosome is ignored here - in xbrowse, we'll probably be dealing with 1D coordinates 
    Args: 
     pos (int): genomic position in a chromosome (1-based) 
     ref (str): ref allele string 
     alt (str): alt allele string 
    Returns: 
     tuple: (pos, ref, alt) of remapped coordinate 
    """ 
    pos = int(pos) 
    # If it's a simple SNV, don't remap anything 
    if len(ref) == 1 and len(alt) == 1: 
     return pos, ref, alt 
    else: 
     # strip off identical suffixes 
     while(alt[-1] == ref[-1] and min(len(alt),len(ref)) > 1): 
      alt = alt[:-1] 
      ref = ref[:-1] 
     # strip off identical prefixes and increment position 
     while(alt[0] == ref[0] and min(len(alt),len(ref)) > 1): 
      alt = alt[1:] 
      print "Alt: ", alt 
      ref = ref[1:] 
      print "Ref: ", ref 
      pos += 1 
      print "Pos: ", pos 
     return pos, ref, alt 



    print "the result is: ", get_minimal_representation(pos = 1001, ref = "CTCC", alt = "CCC,C,CCCC") 
+0

这绝不会发生在Perl中。 :) 我有很多要学习的。谢谢 – user3781528

+0

不是问题。有问题。只要确保缩进是正确的。 :) – Inconnu

4

您没有调用该函数。

尝试

if __name__ == '__main__': 
    print "the result is: ", get_minimal_representation(pos = 1001, ref = "CTCC", alt = "CCC,C,CCCC") 

在你的文件的底部。

它应该是这样的:

##!/usr/bin/python 

def get_minimal_representation(pos, ref, alt): 
    """ 
    Get the minimal representation of a variant, based on the ref + alt alleles in a VCF 
    This is used to make sure that multiallelic variants in different datasets, 
    with different combinations of alternate alleles, can always be matched directly. 
    Note that chromosome is ignored here - in xbrowse, we'll probably be dealing with 1D coordinates 
    Args: 
     pos (int): genomic position in a chromosome (1-based) 
     ref (str): ref allele string 
     alt (str): alt allele string 
    Returns: 
     tuple: (pos, ref, alt) of remapped coordinate 
    """ 
    pos = int(pos) 
    # If it's a simple SNV, don't remap anything 
    if len(ref) == 1 and len(alt) == 1: 
     return pos, ref, alt 
    else: 
     # strip off identical suffixes 
     while(alt[-1] == ref[-1] and min(len(alt),len(ref)) > 1): 
      alt = alt[:-1] 
      ref = ref[:-1] 
     # strip off identical prefixes and increment position 
     while(alt[0] == ref[0] and min(len(alt),len(ref)) > 1): 
      alt = alt[1:] 
      print "Alt: ", alt 
      ref = ref[1:] 
      print "Ref: ", ref 
      pos += 1 
      print "Pos: ", pos 
     return pos, ref, alt 

if __name__ == '__main__': 
    print "the result is: ", get_minimal_representation(pos = 1001, ref = "CTCC", alt = "CCC,C,CCCC")