问题标签 [burrows-wheeler-transform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
577 浏览

java - 使用 BWT 进行文本压缩和解压缩

我想问一下,我们可以结合 BWT MTF 和 Huffman 算法在 java 中获得更高的压缩率吗?过程是什么?MTF 文件写入错误?

0 投票
1 回答
1008 浏览

compression - 为什么 bzip2 的最大块大小是 900k?

bzip2(即Julian Seward 的这个程序)列出了 100k 到 900k 之间的可用块大小:

这个数字对应于hundred_k_blocksize写入压缩文件头的值。

文档中,内存要求如下:

在编写原始程序时(1996 年),我想 7.6M(400k + 8 * 900k)在计算机上可能是一个巨大的内存量,但对于今天的机器来说,它什么都不是。

我的问题分为两部分:

1) 使用更大的块大小会实现更好的压缩吗?(我天真地假设是的)。有什么理由不使用更大的块吗?压缩的 cpu 时间如何随着块的大小而变化?

2) 实际上,是否存在允许更大块大小的 bzip2 代码分支(或替代实现)?这是否需要对源代码进行重大修改?

文件格式似乎足够灵活来处理这个问题。例如...由于hundred_k_blocksize包含一个指示块大小的 8 位字符,因此可以向下扩展ASCII 表以指示更大的块大小(例如':'= x3A=> 1000k';'= x3B=> 1100k'<'= x3C=> 1200k、...) .

0 投票
1 回答
79 浏览

bash - bwa 示例的 bash 循环中的多个变量

我正在尝试在 bwa 程序(bwa sampe)中处理具有匹配前缀和不同文件类型的多个输入文件,这是一般结构:

我在当前目录中有所有 .sai 和 fastq.gz 文件,我正在尝试制作一个循环,如:

有人对我缺少的东西有建议吗?就像我可能需要创建一个前缀文件名列表?我将不胜感激任何建议。谢谢!

ETA:我尝试​​制作每个前缀文件的读取列表并运行:

但这基本上只是制作完整文件标题前缀的文件。

0 投票
2 回答
736 浏览

python - Burrows-Wheeler 变换 (BWT) 重复字符串

我正在用 Python 编写 Burrows-Wheeler 变换及其反向函数。它适用于小弦,但当我测试更大的弦时它就崩溃了。在某些时候,字符串似乎循环了。我确信它一定与解码器的最终循环有关,但我正在遵循在多个网站上找到的步骤。我的实现如下:

原始字符串:

罗斯托夫不愿对公主出言不逊,没有回屋子,而是留在村子里等她离开。当她的马车驶出房子时,他骑马陪她从博古赫罗沃出发八英里,到达我们部队占领的道路。在扬克沃的客栈里,他恭敬地告别了她,这是他第一次允许自己亲吻她的手。

你怎么可以这样说话!他红着脸回答玛丽公主对她的解脱表示感谢,正如她所说的那样。任何警察都会这样做!“如果我们只有农民打,我们就不应该让敌人走这么远,”他羞愧地说道,并希望转移话题。我很高兴有机会结识你。再见,公主。祝你幸福和安慰,并希望在更幸福的情况下再次见到你。如果你不想让我脸红,请不要感谢我!

解码字符串:

罗斯托夫不愿对公主出言不逊,没有回屋子,而是留在村子里等她离开。当她的马车驶出房子时,他骑马陪她从博古赫罗沃出发八英里,到达我们部队占领的道路。在扬克沃的客栈里,他恭敬地告别了她,这是他第一次允许自己亲吻她的手。

你怎么能这样说话!罗斯托夫不愿在公主面前出言不逊,没有回屋子,而是留在村子里等着她离开。当她的马车驶出房子时,他骑马陪她从博古赫罗沃出发八英里,到达我们部队占领的道路。在扬克沃的客栈里,他恭敬地告别了她,这是他第一次允许自己亲吻她的手。

你怎么能这样说话!罗斯托夫不愿在公主面前出言不逊,没有回屋子,而是留在村子里等着她离开。什么时候

奇怪的是,我在网上找到并测试过的其他实现似乎也会发生这种情况,比如this onethis one。到底是怎么回事?我是否误解了转换的工作原理?或者这个实现不正确?

0 投票
0 回答
65 浏览

c++ - 如何优化用于对 Burrows Wheeler 变换的 Class 对象进行排序的堆排序?

我正在尝试实现 burrows Wheeler 的变换。我有一个包含索引(int)和数据(字符串)的 Dictionary 类。Dictionary 类用于构建后缀数组。我正在通过堆排序对 Dictionary 对象的后缀数组进行排序。当我有 < 10KiB 的短文本时,BWT 可以很好地使用堆排序,但是当我提供大于 100KiB 的较大文本文件时,程序会中断。我有一种感觉,我在堆排序实现中做错了。这是我在 Dictionary 类中实现的堆排序代码,其中包含两个数据成员(int 索引和字符串数据):

节点:如果需要,我将提供 BWT 类代码。

编辑:这是 BWT 类代码:

0 投票
1 回答
63 浏览

c++ - 尝试将反向字符串模式存储到键值对中不起作用(Burrows Wheeler Rotation)

在此处输入图像描述

所以我试图将这个索引(int)和数据(字符串)实现到一个 Dictionary 类中,该类采用上述类型的索引和数据。这是我的代码:

此代码适用于 <10KiB 的小文本文件,但当我输入大文本文件时,循环似乎永远运行。它一直运行,直到用完整个内存,然后使 IDE 崩溃。我在这里做错了什么/或者有没有办法优化这个过程?

编辑:这里的大小变量是指 input.length()。

0 投票
0 回答
62 浏览

c - 伯罗斯惠勒变换

对于一个项目,我需要使用 bwt 对通用文件进行编码和解码。唯一的问题是我在编码不同于 txt 文件的文件时遇到问题。我真的不知道为什么,所以我希望你能帮助我,这里是代码:

主要课程是:

同样,我不知道为什么,但编码和解码适用于 txt 文件,而它不适用于其他扩展。你知道为什么吗?另外,我是这个世界的新手,所以请原谅我的愚蠢错误,这不是完整的代码。显然,这只是一个简单的实现,我避免使用后缀数组。

0 投票
1 回答
90 浏览

bash - 如何在 linux 的 windows 子系统上运行 burrows-wheeler aligner?

完全是新手,不知道我在做什么。我已经在 windows 上安装了 ubuntu,现在可以从 windows 打开 bash。

我还从 Sourceforge 下载了 burrow-wheeler 对准器:https ://sourceforge.net/projects/bio-bwa/files/

从那里我尝试提取 bz2 文件。我将提取的文件夹添加到 PATH

但是当我在 bash 上输入 bwa 时,它显示 bwa: command not found

我是一个完全的初学者,想开始使用生物信息学。我执行了上述步骤,因为这就是我将 conda 设置为在 windows cmd 上工作的方式。

我究竟做错了什么?