복붙노트

[PYTHON] 파이썬에서 오버랩 컴퓨팅을위한 내장 함수

PYTHON

파이썬에서 오버랩 컴퓨팅을위한 내장 함수

두 개의 개별 간격 사이의 중첩을 계산하는 함수가 내장되어 있습니다. [10, 15]와 [20,38] 사이의 중첩? 이 경우 겹침은 0입니다. [10, 20], [15, 20] 인 경우 겹침은 5입니다.

해결법

  1. ==============================

    1.최대 및 최소값을 사용할 수 있습니다.

    최대 및 최소값을 사용할 수 있습니다.

    >>> def getOverlap(a, b):
    ...     return max(0, min(a[1], b[1]) - max(a[0], b[0]))
    
    >>> getOverlap([10, 25], [20, 38])
    5
    >>> getOverlap([10, 15], [20, 38])
    0
    
  2. ==============================

    2.pyinterval http://code.google.com/p/pyinterval/을 확인하십시오.

    pyinterval http://code.google.com/p/pyinterval/을 확인하십시오.

    import interval
    x=interval.interval[10, 15]
    y=interval.interval[20, 38]
    z=interval.interval[12,18]
    
    print(x & y)
    # interval()
    print(x & z)
    # interval([12.0, 15.0])
    
  3. ==============================

    3.다음은 Aaron Quinlan의 chrom_sweep의 좋은 기능입니다. 간격 표시를 위해 수정되었습니다. 겹치는 경우 겹치는 bp 수를 반환하고, 그렇지 않으면 거리를 음수 int로 반환합니다.

    다음은 Aaron Quinlan의 chrom_sweep의 좋은 기능입니다. 간격 표시를 위해 수정되었습니다. 겹치는 경우 겹치는 bp 수를 반환하고, 그렇지 않으면 거리를 음수 int로 반환합니다.

    def overlaps(a, b):
        """
        Return the amount of overlap, in bp
        between a and b.
        If >0, the number of bp of overlap
        If 0,  they are book-ended.
        If <0, the distance in bp between them
        """
    
        return min(a[1], b[1]) - max(a[0], b[0])
    
  4. from https://stackoverflow.com/questions/2953967/built-in-function-for-computing-overlap-in-python by cc-by-sa and MIT license