3

您好我正在尝试在 Hadoop 和 Java 中实现一个新构建的生物信息学算法(我不确定是否可以完成)。我在互联网上搜索了很多关于在 Hadoop 上实现算法的信息。然而,我发现的只是“识别并行任务并通过 hadoop 执行它们”。如果你们能通过互联网指导我使用 Java 的 Hadoop 的正确资源,我将非常感激,在那里我可以找到一些可靠的例子,而不是字数。我很了解 Java,但 hadoop 是我的第一次。任何帮助,将不胜感激。

这就是我想做的

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

我必须执行以下任务

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

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

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

  4. 如果两个 '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
4

2 回答 2

1

首先,这个问题看起来像“设置相似性”问题。在 mapreduce 平台上有很多具有各种有效性的方法。开始在这里查看http://infolab.stanford.edu/~ullman/mmds.html第 3 章。但前提是你的首要任务是:学习 hadoop。如果不...

其次,100MB——对于hadoop来说是非常小的数据量。当然,你根本不需要 hadoop。甚至不会启动超过 2 个并行任务(默认情况下,hadoop 每 64MB 启动 1 个任务)。您可以在纯 Java 中实现任何相似性算法,并且它的运行速度会更快。

于 2012-10-30T07:38:06.027 回答
0

看起来像是在输入文件中查找模式。查看Grep.java和相关文件。它不能解决 OP 中的确切问题,但最接近。

于 2012-10-30T07:00:13.010 回答