嗨,我正在尝试用hadoop和java实现一个新构建的生物信息学算法(我不确定是否可以实现)。为了在hadoop上实现这个算法,我在互联网上搜索了很多。然而,我发现的只是“识别并行任务并通过hadoop执行它们”。我真的很感激,如果你们能指导我正确的资源hadoop与java在互联网上,我可以找到一些坚实的例子以外的字数。我很懂java,但hadoop是我第一次。任何帮助都将不胜感激。
这就是我想做的
我有一个非常大的文本文件(大约100 mb),其中有一行随机的字符(a,g,t,c)。随机的a,g,t,c的长序列可能会形成一个重要的序列k字符串(atcgagc)。我可能会在这个名为“r”的文本文件的许多行中找到这个序列k-mer。
我必须执行以下任务
确定各种k-mer在r(整套/文件)中所有文本行(r)中的位置
我必须跟踪k-mer在特定r的位置。
我有两个参数用来比较不同r中的k-mers。
如果两个'r'中的k-mers满足上述参数比较,我必须更新邻居集n
如果你感兴趣,这是这里的伪代码
Given k, ĥ, ȇ
1. Make K by extracting all possible kmers from Reads
2. for all reads r belongs R do
construct Gk[r] by scanning through r
end for
3. for all k ε K do
for all read pairs (r,s) ε Gk × GK
if h(r,s) ≥ ĥ and dk < ȇ h(r,s) then
update the N
end if
end for
end for
k is k-mer
K is set of all k
ĥ minimum overlap distance
ȇ maximum mismatch tolerance
N neighbor set
h(r,s) overlap length of r and s wrt k
d(r,s) distance between r and s
2条答案
按热度按时间vc6uscn91#
看起来像是在输入文件中查找模式。查看grep.java和相关文件。它不能解决op中的确切问题,但它是最接近的匹配。
xj3cbfub2#
首先,这个问题看起来像“集合相似性”问题。在mapreduce平台上,有许多具有不同有效性的方法。开始看这里http://infolab.stanford.edu/~ullman/mmds.html 第三章。但前提是你的首要任务是:学习hadoop。如果不是。。。
其次,100mb—对于hadoop来说是非常小的数据量。当然,你根本不需要hadoop。甚至不会启动超过2个并行任务(默认情况下,hadoop每64mb启动1个任务)。您可以在纯java中实现任何相似性算法,它的运行速度会更快。