- line += r[0:n]
- start += len(r)
- return line
-
-def splitfastq(p):
- for i in xrange(0, len(p)):
- p[i]["start"] = 0
- p[i]["end"] = 0
-
- while True:
- recordsize = [0, 0]
-
- # read 4 lines starting at "start"
- for ln in xrange(0, 4):
- for i in xrange(0, len(p)):
- r = readline(p[i]["reader"], p[i]["start"])
- if r == '':
- return
- recordsize[i] += len(r)
-
- splitnow = False
- for i in xrange(0, len(p)):
- if ((p[i]["end"] - p[i]["start"]) + recordsize[i]) >= arvados.BLOCKSIZE:
- splitnow = True
-
- if splitnow:
- for i in xrange(0, len(p)):
- global piece
- global manifest_text
- manifest = []
- manifest.extend("./_" + str(piece))
- manifest.extend([d[LOCATOR] for d in p["reader"]._stream._data_locators])
- manifest.extend(["{}:{}:{}".format(seg[LOCATOR], seg[BLOCKSIZE], self.name().replace(' ', '\\040')) for seg in arvados.locators_and_ranges(p[i]["reader"].segments, p[i]["start"], p[i]["end"] - p[i]["start"])])
- manifest_text += manifest.join(" ") + "\n"
- p[i]["start"] = p[i]["end"]