def is_empty(bam_file):
    """Determine if a BAM file is empty
    """
    bam_file = objectstore.cl_input(bam_file)
    cmd = ("set -o pipefail; "
           "samtools view {bam_file} | head -1 | wc -l")
    p = subprocess.Popen(cmd.format(**locals()), shell=True,
                         executable=do.find_bash(),
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                         preexec_fn=lambda: signal.signal(signal.SIGPIPE, signal.SIG_DFL))
    stdout, stderr = p.communicate()
    stdout = stdout.decode()
    stderr = stderr.decode()
    if ((p.returncode == 0 or p.returncode == 141) and
         (stderr == "" or (stderr.startswith("gof3r") and stderr.endswith("broken pipe")))):
        return int(stdout) == 0
    else:
        raise ValueError("Failed to check empty status of BAM file: %s" % str(stderr))
def is_empty ( bam_file ) : bam_file = objectstore . cl_input ( bam_file ) cmd = ( "set -o pipefail; " "samtools view {bam_file} | head -1 | wc -l" ) p = subprocess . Popen ( cmd . format ( ** locals ( ) ) , shell = True , executable = do . find_bash ( ) , stdout = subprocess . PIPE , stderr = subprocess . PIPE , preexec_fn = lambda : signal . signal ( signal . SIGPIPE , signal . SIG_DFL ) ) stdout , stderr = p . communicate ( ) stdout = stdout . decode ( ) stderr = stderr . decode ( ) if ( ( p . returncode == 0 or p . returncode == 141 ) and ( stderr == "" or ( stderr . startswith ( "gof3r" ) and stderr . endswith ( "broken pipe" ) ) ) ) : return int ( stdout ) == 0 else : raise ValueError ( "Failed to check empty status of BAM file: %s" % str ( stderr ) )
Determine if a BAM file is empty