我试图回答以下问题:“一位同事在每一行上生成了一个带有一个DNA序列的文件。下载该文件并使用numpy.loadtxt()加载到Python中。您需要使用可选的参数dtype=str告诉loadtxt()数据是由字符串组成的。
计算每个序列的GC含量。GC含量是指G或C(占总碱基对的百分比)的碱基百分比。将每个序列的结果打印为“序列的GC内容为XX.XX%”,其中XX.XX是实际的GC内容。使用“格式化字符串”执行此操作。“
导入dna序列文件并将它们连接在一起后,我现在想将字符串拆分为5个序列(对应于5行),然后开始计算。
注:这是文件来源:1.txt
这是我的密码:
import numpy
dna_data=numpy.loadtxt("dna_sequences",dtype=str)
",".join(dna_data)
seq1,seq2,seq3,seq4,seq5=dna_data.split(",",4)我收到以下错误消息: AttributeError:'numpy.ndarray‘对象没有属性'split’
救命啊!
发布于 2016-10-21 17:10:40
正如注释中所述:",".join(dna_data)不修改dna_data,它只返回一个字符串,您必须将该字符串存储在另一个变量中。就像这样:
s = ",".join(dna_data)
seq1,seq2,seq3,seq4,seq5=s.split(",",4)更进一步:
(请注意,对于numpy,您似乎还不熟悉:在下面的文章中,我假设dna_data有一个形状(5,),如果不是这样的话,您可以使用 slicing返回到那个形状)
尽管如此,使用该代码,您只需将数组转换为一个列表,然后放入5个不同的变量,因此,当您只需将数组->变量放在一个简单的行中时-->string-> list ->变量就是->。
我还会更进一步:不要做任何事情!如果您只需要使用dna_data[n]而不是任何seq*变量,那么拥有多个变量又有什么意义呢?前者更方便,并且可以无痛地做一些事情,例如用for-循环循环遍历所有序列。例:
for seq in dna_data:
print(seq)https://stackoverflow.com/questions/40008985
复制相似问题