如何使用朱莉娅

问题描述:

我基本上是试图解决这个问题,以替换字符串中的几个字符:http://rosalind.info/problems/revc/如何使用朱莉娅

我想替换A,C,G,T所有出现的他们的赞美T,G,C ,A ..换句话说,所有的A将被替换为T,所有的C都带有G's等。

我以前用replace()函数用'U'替换所有出现的'T',并且希望替换函数会将字符列表替换为另一个字符列表,但我无法使其工作,因此它可能不具备该功能。

我知道我可以很容易地解决这个使用BioJulia包,这样做是使用以下:

# creating complementary strand of DNA 
# reverse the string 
# find the complementary nucleotide 
using Bio.Seq 
s = dna"AAAACCCGGT" 

t = reverse(complement(s)) 

println("$t") 

但我想不必靠包。

下面是我到目前为止的代码,如果有人能够引导我走向正确的方向,那将是伟大的。

# creating complementary strand of DNA 
# reverse the string 
# find the complementary nucleotide 

s = open("nt.txt") # open file containing sequence 

t = reverse(s) # reverse the sequence 

final = replace(t, r'[ACGT]', '[TGCA]') # this is probably incorrect 
# replace characters ACGT with TGCA 

println("$final") 

似乎replace目前还不做翻译很喜欢,比方说,在猛砸tr。因此,相反,这里有几个使用字典映射代替的办法(在BioJulia包也似乎使类似用途词典):

compliments = Dict('A' => 'T', 'C' => 'G', 'G' => 'C', 'T' => 'A') 

那么如果str = "AAAACCCGGT",你可以使用join这样的:

julia> join([compliments[c] for c in str]) 
"TTTTGGGCCA" 

另一种方法可以是使用功能和map

function translate(c) 
    compliments[c] 
end 

然后:

julia> map(translate, str) 
"TTTTGGGCCA" 

字符串是Julia中的可迭代对象;这些方法中的每一个依次读取一个字符,c,并将其传递给字典以获取免费角色。 A 字符串是由这些免费字符构建的。

Julia的字符串也是不可变的:你不能在适当的位置交换字符,而是需要建立一个新的字符串。

+0

当我提供str =“AAACCCGGT”时,此功能完美无缺,但如果我尝试打开文件并以这种方式获取字符串,我会在'dict'中找到getindex中未找到的错误。 另外,你能否详细介绍底部的功能如何解决我的问题?索引字典如何改变我的字符串?我现在正在读Mastering Julia,但只有几章,并且昨天刚刚拿起了Julia,所以虽然我明白了一点,但我仍然对一些机制很陌生,这是一个。 – System

+1

Regaridng错误,这可能是你从文件中读取换行符。这些不是由字典映射,所以出现错误。你可以尝试'map(translate,readchomp(s))'。 –

+1

'map(translate,str)'将基于str返回一个新的翻译后的字符串,同样'replace(str,match,replacement)'也会返回一个新的字符串,即:'x =“test”; y = replace(x,'e','E'); x,y'返回'(“test”,“tEst”)'。他们将**不**更新你原来的字符串! – SalchiPapa