天天看点

python 数组反向输出_Python位数组反向完成符

我使用Python的bitarray module将写在二进制文件中的DNA序列转换为它的反向补码。每个核苷酸由两个位表示,格式如下:

A - 00, C - 01, G - 10, T - 11。在

例如,

AGCTACGG (00 10 01 11 00 01 10 10)的反补码是CCGTAGCT (01 01 10 11 00 10 01 11)。

这个序列正好占用16位(2字节),但是长度9的序列需要18位,并且它被填充为占用24位(3字节)。在

目前我使用for循环进行转换,但是这个解决方案非常慢。def reverse_complement( my_bitarray, seq_length ):

for i in range(0, 2 * seq_length - 1, 2):

if my_bitarray[i] == my_bitarray[i + 1]:

if my_bitarray[i] == 0:

my_bitarray[i], my_bitarray[i + 1] = 1, 1

else:

my_bitarray[i], my_bitarray[i + 1] = 0, 0

#padding if the bitarray is not a multiple of 8 bits in length

if seq_length / 4 != int():

my_bitarray.reverse()

my_bitarray.fill()

my_bitarray.reverse()

return my_bitarray

a = bitarray()

a.frombytes(seq[::-1])

b = a[int(seq_start)::] # seq without padding

b.reverse()

reverse_complement(b, seq_length)

关于如何加快这个过程有什么建议吗?在