1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#!/usr/bin/python3
"""
Read a MAF from standard input and determine the mean length of ungapped pieces
in each block.
usage: %prog < maf > out
"""
import sys
import bx.align.maf
def main():
for m in bx.align.maf.Reader(sys.stdin):
ungapped_columns = 0
ungapped_runs = 0
in_ungapped = False
for col in m.column_iter():
is_gap = "-" in col
if not is_gap:
ungapped_columns += 1
if in_ungapped and is_gap:
ungapped_runs += 1
in_ungapped = not is_gap
if in_ungapped:
ungapped_runs += 1
print(ungapped_columns / ungapped_runs)
if __name__ == "__main__":
main()
|