def test_longer_locus_line(self): """Check that we can read and write files with longer locus lines.""" # Create example file from existing file with open(path.join("GenBank", "DS830848.gb"), 'r') as inhandle: data = inhandle.readlines() data[0] = "LOCUS AZZZAA021234567891234 2147483647 bp DNA linear PRI 15-OCT-2018\n" # Create memory file from modified genbank file in_tmp = StringIO() in_tmp.writelines(data) in_tmp.seek(0) with warnings.catch_warnings(): warnings.simplefilter("ignore") in_tmp.seek(0) record = SeqIO.read(in_tmp, 'genbank') # Create temporary output memory file out_tmp = StringIO() SeqIO.write(record, out_tmp, 'genbank') # Check that the written file can be read back in out_tmp.seek(0) record_in = SeqIO.read(out_tmp, 'genbank') self.assertEqual(record_in.id, "DS830848.1") self.assertEqual(record_in.name, "AZZZAA021234567891234") self.assertEqual(len(record_in.seq), 2147483647)
def read_longer_than_maxsize(): with open(path.join("GenBank", "DS830848.gb"), 'r') as inhandle: data2 = inhandle.readlines() data2[0] = "LOCUS AZZZAA02123456789 " + str(sys.maxsize + 1) + " bp DNA linear PRI 15-OCT-2018\n" long_in_tmp = StringIO() long_in_tmp.writelines(data2) long_in_tmp.seek(0) record = SeqIO.read(long_in_tmp, 'genbank')
def test_extremely_long_sequence(self): """Tests if extremely long sequences can be read. This is only run if sys.maxsize > 2147483647. """ # Create example file from existing file with open(path.join("GenBank", "DS830848.gb"), 'r') as inhandle: data = inhandle.readlines() data[0] = "LOCUS AZZZAA02123456789 10000000000 bp DNA linear PRI 15-OCT-2018\n" # Create memory file from modified genbank file in_tmp = StringIO() in_tmp.writelines(data) in_tmp.seek(0) with warnings.catch_warnings(): warnings.simplefilter("ignore") in_tmp.seek(0) record = SeqIO.read(in_tmp, 'genbank') # Create temporary output memory file out_tmp = StringIO() SeqIO.write(record, out_tmp, 'genbank') # Check that the written file can be read back in out_tmp.seek(0) record_in = SeqIO.read(out_tmp, 'genbank') self.assertEqual(record_in.id, "DS830848.1") self.assertEqual(record_in.name, "AZZZAA02123456789") self.assertEqual(len(record_in.seq), 10000000000) def read_longer_than_maxsize(): with open(path.join("GenBank", "DS830848.gb"), 'r') as inhandle: data2 = inhandle.readlines() data2[0] = "LOCUS AZZZAA02123456789 " + str(sys.maxsize + 1) + " bp DNA linear PRI 15-OCT-2018\n" long_in_tmp = StringIO() long_in_tmp.writelines(data2) long_in_tmp.seek(0) record = SeqIO.read(long_in_tmp, 'genbank') self.assertRaises(ValueError, read_longer_than_maxsize)