我正致力于生物信息学序列研究,该研究涉及从多组序列(FASTA文件)中提取各种基于序列的特征。 我为序列生成各种功能,并单独处理每个序列(我将使用数万个序列)。我是编程和处理数据的新手。
存储和输出(即保存到csv文件中的矩阵)生成的功能的最佳方法是什么?
这些功能的名称对我来说很重要,所以除了需要输出的顺序与每个单独的序列保持一致之外,我还需要它们。
我计划用字典存储功能(每个序列),因为我知道scikit learn的“dictVectorizer”功能可能对此有用。 但是 - 一个字典是无组织的,我将逐个提取每个序列的特征,写出来,然后从下一个序列中提取 - 写出时它会保持相同的顺序吗? (所有的特征都是数字和连续的,但是许多特征的值可能为0,有些特征会有一个向量作为输出[E.G-400重叠双字母的频率计数]。
谢谢!
(我主要关注I / O而不是混合功能的输出。)
答案 0 :(得分:0)
因此,最好的方法是pandas
或dill
。我认为pandas
是您更好的选择,但您可以同时使用它们。
import pandas as pd
import dill
如果您尝试使用标签存储矩阵,则说明DataFrames
。您可以通过执行DataFrame
从数组或字典轻松地在pandas
DF = pd.DataFrame(array_object)
中创建DF.columns = ["label1","label2",etc.]
,您可以按DF.index = ["A","B",etc.]
设置列名,并使用相同的方法设置索引值{{1} }}。然后你可以通过执行DF.to_csv("filename.tsv",sep="\t")
(我通常使用制表符分隔的b / c逗号很奇怪)将它存储到csv / tsv中,然后将其写入spreadhseet格式,以后可以通过{{1}轻松检索}。另一种方法是使用pd.read_table("filename.tsv",sep="\t")
将您的环境变量存储到稍后可以加载的文件中(我为更复杂的对象执行此操作,但它适用于DataFrame或矩阵或任何您想要的)。如果您拥有dill
中的DataFrame
,则可以matrix/array
存储该对象,然后使用dill.dump(DF,open("DF.obj","wb"))
检索该对象。
我会使用dill.load(open("DF.obj","rb"))
方法,因为你可以在Excel中打开这些东西(生物学家喜欢excel)。如果它们只是矩阵,那么使用pandas.DataFrame.to_csv()
来存储对象是过度的。如果你为自己制作东西,但是将存储的dill
对象传递给其他人可能会变得很讨厌,这是一个很好的工具。