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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值