您好我正在尝试在Hadoop和Java中实现新构建的生物信息学算法(我不确定是否可以这样做)。我在互联网上搜索了很多,以便在Hadoop上实现算法。但我发现的只是“识别并行任务并通过hadoop执行它们”。我真的很感激,如果你们可以通过互联网引导我使用Java的Hadoop的正确资源,我可以找到一些除了字数之外的一些可靠的例子。 我很熟悉Java,但hadoop是我的第一次。任何帮助将不胜感激。
这就是我想做的事情
我有一个非常大的文本文件(大约100 MB),其中随机化的字符行(A,G,T,C)。随机化的A,G,T,C的长序列可能形成一串重要的序列k例如(ATCGAGC)。我可能会在这个文本文件的许多行中找到这个序列k-mer,名为'r'。
我必须执行以下任务
确定R(整个集/文件)中所有文本行(r)中各种k-mer的位置
我必须跟踪特定r中k-mer的位置。
我有两个参数用于比较各种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
答案 0 :(得分:1)
首先,这个问题看起来像'设置相似性'问题。在mapreduce平台上有许多具有各种有效性的它们。从这里开始http://infolab.stanford.edu/~ullman/mmds.html第3章。但只有你的主要任务:学习hadoop。如果不是......
其次,100MB - 是hadoop的非常少量的数据。当然,你根本不需要hadoop。即使不超过2个并行任务也将启动(默认情况下,hadoop每64MB启动1个任务)。你可以在纯java中实现任何相似性算法,它的工作速度会快得多。
答案 1 :(得分:0)
看起来像在输入文件中查找模式。查看Grep.java和相关文件。它没有解决OP中的确切问题,但是最接近的匹配。