def write(self, f): dg = Datagram() dg.appendData(self.HEADER) if self.version >= (6, 27): header_size = 6 elif self.version >= (5, 0): header_size = 5 else: header_size = 4 bam_major_ver, bam_minor_ver = self.version dg.add_uint32(header_size) dg.add_uint16(bam_major_ver) dg.add_uint16(bam_minor_ver) if header_size >= 5: dg.add_uint8(self.file_endian) if header_size >= 6: dg.add_bool(self.stdfloat_double) self.written_handles = [] self.write_long_pointers = False if self.objects: objects = list(self.objects.values()) self.write_object(dg, BamGlobals.BOC_push, objects[0], self.written_handles) for obj in objects[1:]: self.write_object(dg, BamGlobals.BOC_adjunct, obj, self.written_handles) for data in self.file_datas: self.write_file_data(dg, data) if self.version >= (6, 21): self.write_object(dg, BamGlobals.BOC_pop) f.write(dg.getMessage())
def write(self, f, target_version): dg = Datagram() dg.appendData(self.HEADER) if target_version >= (6, 27): header_size = 6 elif target_version >= (5, 0): header_size = 5 else: header_size = 4 bam_major_ver, bam_minor_ver = target_version dg.add_uint32(header_size) dg.add_uint16(bam_major_ver) dg.add_uint16(bam_minor_ver) if header_size >= 5: dg.add_uint8(self.file_endian) if header_size >= 6: dg.add_bool(self.stdfloat_double) written_handles = [] if self.objects: self.write_object(dg, BOC_push, self.objects[0], written_handles) for obj in self.objects[1:]: self.write_object(dg, BOC_adjunct, obj, written_handles) for data in self.file_datas: self.write_file_data(dg, data) if self.version >= (6, 21): self.write_object(dg, BOC_pop) f.write(dg.getMessage())