def convert_Ti_to_FLX(sff_fp, output_fp, use_sfftools=False): """Converts Titanium SFF to FLX length reads.""" if use_sfftools: check_sfffile() _check_call(['sfffile', '-flx', '-o', output_fp, sff_fp], stdout=open(os.devnull, 'w')) else: header, reads = adjust_sff_cycles(parse_binary_sff(open(sff_fp), True), 100) write_binary_sff(open(output_fp, 'w'), header, reads)
def convert_Ti_to_FLX(sff_fp, output_fp, use_sfftools=False): """Converts Titanium SFF to FLX length reads.""" if use_sfftools: check_sfffile() _check_call( ['sfffile', '-flx', '-o', output_fp, sff_fp], stdout=open(os.devnull, 'w')) else: header, reads = adjust_sff_cycles(parse_binary_sff(open(sff_fp), True), 100) write_binary_sff(open(output_fp, 'w'), header, reads)
def make_per_library_sff(sff_fps, id_list_fp, debug=False): id_list_basepath, _ = os.path.splitext(id_list_fp) output_fp = id_list_basepath + '.sff' sff_datasets = [parse_binary_sff(open(fp), True) for fp in sff_fps] sff_data = combine_sff_data(*sff_datasets) ids = parse_id_list(open(id_list_fp)) filtered_sff_data = filter_sff_reads(sff_data, ids_to_keep=ids) if debug: print 'Creating SFF file for %s' % id_list_fp write_binary_sff(open(output_fp, 'w'), *filtered_sff_data)
def make_per_library_sff(sff_fps, id_list_fp, debug=False): id_list_basepath, _ = os.path.splitext(id_list_fp) output_fp = id_list_basepath + '.sff' sff_datasets = [parse_binary_sff(open(fp), True) for fp in sff_fps] sff_data = combine_sff_data(*sff_datasets) ids = parse_id_list(open(id_list_fp)) filtered_sff_data = filter_sff_reads(sff_data, ids_to_keep=ids) if debug: print 'Creating SFF file for %s' % id_list_fp write_binary_sff(open(output_fp, 'w'), *filtered_sff_data)
def set_sff_trimpoints(sff_dir, technical_lengths): """Set trimpoints to end of technical read for all SFF files in directory. """ for lib_id, sff_fp in get_per_lib_sff_fps(sff_dir): try: readlength = technical_lengths[lib_id] except KeyError: continue sff_data = parse_binary_sff(open(sff_fp), True) clipped_header, clipped_reads = set_clip_qual_left(sff_data, readlength) _, temp_fp = tempfile.mkstemp(dir=sff_dir) with open(temp_fp, "w") as f: write_binary_sff(f, clipped_header, clipped_reads) shutil.move(temp_fp, sff_fp)
def set_sff_trimpoints(sff_dir, technical_lengths): """Set trimpoints to end of technical read for all SFF files in directory. """ for lib_id, sff_fp in get_per_lib_sff_fps(sff_dir): try: readlength = technical_lengths[lib_id] except KeyError: continue sff_data = parse_binary_sff(open(sff_fp), True) clipped_header, clipped_reads = set_clip_qual_left(sff_data, readlength) _, temp_fp = tempfile.mkstemp(dir=sff_dir) with open(temp_fp, 'w') as f: write_binary_sff(f, clipped_header, clipped_reads) shutil.move(temp_fp, sff_fp)
def test_write_binary_sff(self): read = READ_HEADER.copy() read.update(READ_DATA) header = COMMON_HEADER.copy() header['number_of_reads'] = 1 write_binary_sff(self.output_file, header, [read]) file_pos = self.output_file.tell() self.assertTrue(file_pos % 8 == 0) self.output_file.seek(0) observed_header, observed_reads = parse_binary_sff( self.output_file, native_flowgram_values=True) observed_reads = list(observed_reads) self.assertEqual(observed_header, header) self.assertEqual(observed_reads[0], read) self.assertEqual(len(observed_reads), 1) file_pos = self.output_file.tell() self.assertTrue(file_pos % 8 == 0)
def test_write_binary_sff(self): read = READ_HEADER.copy() read.update(READ_DATA) header = COMMON_HEADER.copy() header['number_of_reads'] = 1 write_binary_sff(self.output_file, header, [read]) file_pos = self.output_file.tell() self.assertTrue(file_pos % 8 == 0) self.output_file.seek(0) observed_header, observed_reads = parse_binary_sff( self.output_file, native_flowgram_values=True) observed_reads = list(observed_reads) self.assertEqual(observed_header, header) self.assertEqual(observed_reads[0], read) self.assertEqual(len(observed_reads), 1) file_pos = self.output_file.tell() self.assertTrue(file_pos % 8 == 0)