<s> import argparse <EOL> import os <EOL> import subprocess <EOL> def getsegs ( bam , mindepth , minlength ) : <EOL> seglist = [ ] <EOL> cmd = [ '<STR_LIT>' , '<STR_LIT>' , bam ] <EOL> p = subprocess . Popen ( cmd , stdout = subprocess . PIPE ) <EOL> seg = { '<STR_LIT>' : None , '<STR_LIT:start>' : None , '<STR_LIT:end>' : None } <EOL> for line in p . stdout : <EOL> chrom , pos , base , depth = line . strip ( ) . split ( ) [ : <NUM_LIT:4> ] <EOL> depth = int ( depth ) <EOL> pos = int ( pos ) <EOL> if seg [ '<STR_LIT>' ] != chrom : <EOL> if seg [ '<STR_LIT>' ] is not None : <EOL> if seg [ '<STR_LIT:end>' ] - seg [ '<STR_LIT:start>' ] >= minlength : <EOL> seglist . append ( seg ) <EOL> seg = { '<STR_LIT>' : chrom , '<STR_LIT:start>' : pos , '<STR_LIT:end>' : pos } <EOL> else : <EOL> if pos == seg [ '<STR_LIT:end>' ] + <NUM_LIT:1> and depth > mindepth : <EOL> seg [ '<STR_LIT:end>' ] = pos <EOL> else : <EOL> if seg [ '<STR_LIT:end>' ] - seg [ '<STR_LIT:start>' ] >= minlength : <EOL> seglist . append ( seg ) <EOL> seg = { '<STR_LIT>' : chrom , '<STR_LIT:start>' : pos , '<STR_LIT:end>' : pos } <EOL> return seglist <EOL> def main ( args ) : <EOL> assert os . path . exists ( args . bam + '<STR_LIT>' ) , "<STR_LIT>" + args . bam <EOL> seglist = getsegs ( args . bam , int ( args . depth ) , int ( args . length ) ) <EOL> for seg in seglist : <EOL> print '<STR_LIT:\t>' . join ( ( seg [ '<STR_LIT>' ] , str ( seg [ '<STR_LIT:start>' ] ) , str ( seg [ '<STR_LIT:end>' ] ) ) ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> parser = argparse . ArgumentParser ( description = "<STR_LIT>" ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , required = True , help = "<STR_LIT>" ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , default = <NUM_LIT:10> , help = "<STR_LIT>" ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , default = <NUM_LIT:1000> , help = "<STR_LIT>" ) <EOL> args = parser . parse_args ( ) <EOL> main ( args ) </s>
