0

我想在 Python 中存储 DNA 的字符数组,每个单词作为每个元素。

例如,我想改变

 1. cctgatagacgctatctggctatccaggtacttaggtcctctgtgcgaatctatgcgtttccaaccat
 2. agtactggtgtacatttgatccatacgtacaccggcaacctgaaacaaacgctcagaaccagaagtgc
 3. aaacgttagtgcaccctctttcttcgtggctctggccaacgagggctgatgtataagacgaaaatttt
 4. agcctccgatgtaagtcatagctgtaactattacctgccacccctattacatcttacgtccatataca
 5. ctgttatacaacgcgtcatggcggggtatgcgttttggtcgtcgtacgctcgatcgttaccgtacggc

成二维矩阵形式,每个元素存储一个字符。我想过numpy,但我认为它可能不适合这些字符串。

Python中最好的方法是什么?

4

2 回答 2

3

简单明显的答案是使用列表列表:

a = "cctgatagacgctatctggctatccaggtacttaggtcctctgtgcgaatctatgcgtttccaaccat"
b = "agtactggtgtacatttgatccatacgtacaccggcaacctgaaacaaacgctcagaaccagaagtgc"
matrix = [list(a), list(b)]
print(matrix)

[
  ['c', 'c', 't', 'g', 'a', 't', 'a', 'g', 'a', 'c', 'g', 'c', 't', 'a', 't', 'c', 't', 'g', 'g', 'c', 't', 'a', 't', 'c', 'c', 'a', 'g', 'g', 't', 'a', 'c', 't', 't', 'a', 'g', 'g', 't', 'c', 'c', 't', 'c', 't', 'g', 't', 'g', 'c', 'g', 'a', 'a', 't', 'c', 't', 'a', 't', 'g', 'c', 'g', 't', 't', 't', 'c', 'c', 'a', 'a', 'c', 'c', 'a', 't'], 
  ['a', 'g', 't', 'a', 'c', 't', 'g', 'g', 't', 'g', 't', 'a', 'c', 'a', 't', 't', 't', 'g', 'a', 't', 'c', 'c', 'a', 't', 'a', 'c', 'g', 't', 'a', 'c', 'a', 'c', 'c', 'g', 'g', 'c', 'a', 'a', 'c', 'c', 't', 'g', 'a', 'a', 'a', 'c', 'a', 'a', 'a', 'c', 'g', 'c', 't', 'c', 'a', 'g', 'a', 'a', 'c', 'c', 'a', 'g', 'a', 'a', 'g', 't', 'g', 'c']
]

现在它是否适合您的解决方案取决于您打算如何使用它,您的数据集有多大,性能和内存使用限制等,您的问题中都没有提到...

于 2018-10-11T08:20:24.693 回答
1

您可以将其存储为BiopythonSeq库中的对象列表,该库专门用于处理 DNA 或氨基酸链等生物序列。该库有一些专门为 DNA 序列设计的很棒的方法,例如或. 生物信息学家的天堂!reverse_complement()transcribe()

from Bio.Seq import Seq
my_seq1 = Seq("AGTACACTGGT")
my_seq2 = Seq("GATTAGCTGAT")

list = [my_seq1, my_seq2]
于 2018-10-11T08:28:43.403 回答