stringvar - Función incorporada para la superposición de cómputo en Python
tkinter (3)
Echa un vistazo a 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])
¿hay una función incorporada para calcular la superposición entre dos intervalos discretos, por ejemplo, la superposición entre [10, 15] y [20, 38]? En ese caso, la superposición es 0. Si es [10, 20], [15, 20], la superposición es 5.
Esta es una buena función de chrom_sweep de Aaron Quinlan, modificada para su representación de intervalo. Devuelve el número de bp de superposición si se superponen, de lo contrario devuelve la distancia como un int negativo.
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])
Puedes usar max y min:
>>> 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