def do_chunk(coords,ecount,args):
  bf = BAMFile(args.input,blockStart=coords[0],innerStart=coords[1])
  results = []
  for i in range(0,ecount):
    e = bf.read_entry()
    if e.is_aligned():
      rng = e.get_target_range()
      results.append([rng.get_range_string(),e.get_aligned_bases_count()])
    else:
      results.append(['',0])
  return results
Example #2
0
def do_chunk(ilines, infile, args):
    ilines = [x.rstrip().split("\t") for x in ilines]
    coord = [int(x) for x in ilines[0][2:4]]
    bf = BAMFile(infile, blockStart=coord[0], innerStart=coord[1])
    results = []
    for i in range(0, len(ilines)):
        flag = int(ilines[i][5])
        e = bf.read_entry()
        #if not e: break
        #print {'qlen':e.get_original_query_length(),'alen':e.get_aligned_bases_count()}
        value = None
        if e.is_aligned():
            tx = e.get_target_transcript(args.minimum_intron_size)
            value = {
                'qrng': e.get_actual_original_query_range().get_range_string(),
                'tx': tx.get_gpd_line(),
                'flag': flag,
                'qlen': e.get_original_query_length(),
                'aligned_bases': e.get_aligned_bases_count()
            }
            results.append(
                e.value('qname') + "\t" +
                base64.b64encode(zlib.compress(pickle.dumps(value))))
            #results.append([e.value('qname'),zlib.compress(pickle.dumps(value))])
        else:
            value = {
                'qrng': '',
                'tx': '',
                'flag': flag,
                'qlen': e.get_original_query_length(),
                'aligned_bases': 0
            }
            results.append(
                e.value('qname') + "\t" +
                base64.b64encode(zlib.compress(pickle.dumps(value))))
            #results.append([e.value('qname'),zlib.compress(pickle.dumps(value))])
    return results