在Hadoop和java中实现算法

时间:2012-10-30 05:48:19

标签: java algorithm hadoop

您好我正在尝试在Hadoop和Java中实现新构建的生物信息学算法(我不确定是否可以这样做)。我在互联网上搜索了很多,以便在Hadoop上实现算法。但我发现的只是“识别并行任务并通过hadoop执行它们”。我真的很感激,如果你们可以通过互联网引导我使用Java的Hadoop的正确资源,我可以找到一些除了字数之外的一些可靠的例子。 我很熟悉Java,但hadoop是我的第一次。任何帮助将不胜感激。

这就是我想做的事情

我有一个非常大的文本文件(大约100 MB),其中随机化的字符行(A,G,T,C)。随机化的A,G,T,C的长序列可能形成一串重要的序列k例如(ATCGAGC)。我可能会在这个文本文件的许多行中找到这个序列k-mer,名为'r'。

我必须执行以下任务

  1. 确定R(整个集/文件)中所有文本行(r)中各种k-mer的位置

  2. 我必须跟踪特定r中k-mer的位置。

  3. 我有两个参数用于比较各种r中的k-mers。

  4. 如果两个'r'中的k-mers满足上述参数比较,我必须更新邻居集N

  5. 如果您感兴趣,这里是伪代码

    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 个答案:

答案 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中的确切问题,但是最接近的匹配。