Dictionary Julia中的词典帮助-从文本文件创建词典

Dictionary Julia中的词典帮助-从文本文件创建词典,dictionary,julia,Dictionary,Julia,我试图从Julia中的文本文件内容创建一个库,用于生物信息学问题。文件的格式如下所示: UUU F CUU L AUU I GUU V UUC F CUC L AUC I GUC V ... 我想制作一本字典,其中键是三个字母的部分(密码子),条目是一个字母的部分(氨基酸)。我能够使用grep拉出正确的组件: for m in eachmatch(r"([AUGC]{3,3})\s([A-Z])", file) codon,

我试图从Julia中的文本文件内容创建一个库,用于生物信息学问题。文件的格式如下所示:

UUU F      CUU L      AUU I      GUU V
UUC F      CUC L      AUC I      GUC V
...
我想制作一本字典,其中键是三个字母的部分(密码子),条目是一个字母的部分(氨基酸)。我能够使用grep拉出正确的组件:

for m in eachmatch(r"([AUGC]{3,3})\s([A-Z])", file)
    codon, aa = m.captures
如果我在这个循环中打印
codon
aa
,我会得到正确的输出(所有的密码子,所有的aa),但我不知道如何将其放入字典中。如果我这样做:
codons={codon=>aa}
在循环的末尾,我会得到一个只包含最后一个条目的字典

我确信语法是非常明显的,但我是生物学家,不是程序员,所以我对语法的阅读并没有任何帮助。它说:

给定字典D,语法D[x]返回键x的值(如果存在)或抛出错误,D[x]=y将键值对x=>y存储在D中(替换键x的任何现有值)

但是我在循环结束时尝试了
codons[codon]=aa
(我在循环之前用
codons={}
启动了字典),但是我得到了错误:

no method setindex!(Array{Any,1},SubString{UTF8String},SubString{UTF8String})
at In[35]:5
 in anonymous at no file:4
任何帮助都将不胜感激

编辑:显然,我没有正确启动字典。如果我在开始时使用
codons={“blah”=>“blahblah”}
,循环将正常工作并正确填充。所以有一个修改后的问题:如何启动空库

EDIT2:最小不工作示例:

file = open(readall, "rna_codons.txt")
codons = {}
for m in eachmatch(r"([AUGC]{3,3})\s([A-Z])", file)
    codon, aa = m.capture
    codons[codon] = aa
end

只是为了总结一个最小工作示例(MWE),用于将格式化文本文件读入Julia

注意:如果文件非常大,可能有一种更快的方法生成您的
Dict

编辑

鉴于您明显的文本文件格式,这里有另一种方法来创建您的
Dict
。我没有进行任何测试来确定任何性能损失/增益

condon_array = open(readdlm, "rna_codons.txt")
condons = Dict{ASCIIString,ASCIIString}(condon_array[:,1:2:end][:],condon_array[:,2:2:end][:])

注意:如果你使用它,最好检查它的正确性。

你会编辑你的原始帖子并包括一个最小的(非)工作示例吗?另外,您使用的是什么版本/平台?在我的0.3版本之前的Linux机器上有一个小例子似乎可以很好地工作。也许你只是需要
密码子[codon]=aa
在你的循环中?。。。循环之前的
codons=Dict()
?是的,我缺少的是
codons=Dict()
——我想我是在尝试使用python语法启动字典。谢谢这个文件不是很大,但我想听听建议。由于我只是在学习编程(而解决这些问题的全部目的就是学习),我不如学习最佳实践,而不是养成坏习惯。如果您的文本文件只有由一致分隔符分隔的有效文本,您可能需要查看以下内容。您可能还想阅读和玩一些游戏
condon_array = open(readdlm, "rna_codons.txt")
condons = Dict{ASCIIString,ASCIIString}(condon_array[:,1:2:end][:],condon_array[:,2:2:end][:])