Skip to content

Commit 790e21f

Browse files
authored
Update README.md
Some updates to the readme to reflect changes to the code, commit policy, etc.
1 parent 2ef1796 commit 790e21f

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# What is RapMap?
22

3-
RapMap is a testing ground for ideas in lightweight / quasi / pseudo transcriptome alignment. That means that, at this point, it is somewhat experimental and there are no guarantees on stability / compatibility between commits. Currently, RapMap is a stand-alone quasi-mapper that can be used with other tools. It is also being used as part of [Sailfish](https://github.com/kingsfordgroup/sailfish) and [Salmon](https://github.com/COMBINE-lab/salmon). Eventually, the hope is to create and stabilize an API so that it can be used as a library from other tools.
3+
RapMap is a testing ground for ideas in quasi-mapping / (lightweight / pseudo) transcriptome alignment. That means that, at this point, it is somewhat experimental. The `develop` branch will have the latest improvements and additions, but is not guaranteed to be stable between commits. Breaking changes to the master branch will be accompanied by a tag to the version before the breaking change. Currently, RapMap is a stand-alone quasi-mapper that can be used with other tools. It is also being used as part of [Sailfish](https://github.com/kingsfordgroup/sailfish) and [Salmon](https://github.com/COMBINE-lab/salmon). Eventually, the hope is to create and stabilize an API so that it can be used as a library from other tools.
44

5-
Lightweight / quasi / pseudo-alignment is the term I'm using here for the type of information required for certain tasks (e.g.
5+
Quasi-mapping / (lightweight / pseudo)-alignment is the term we are using here for the type of information required for certain tasks (e.g.
66
transcript quantification) that is less "heavyweight" than what is provided by traditional alignment. For example, one may
77
only need to know the transcripts / contigs to which a read aligns and, perhaps, the position within those transcripts rather
8-
than the optimal alignment and base-for-base `CIGAR` string that aligns the read and substring of the transcript. For details on RapMap (quasi-mapping in particular), please check out the [latest pre-print on bioRxiv](http://biorxiv.org/content/early/2016/01/16/029652). Note: while RapMap implements both quasi-mapping and pseudo-alignment, these two are **not** the same thing --- quasi-mapping is not pseudo-alignment, or an algorithm for obtaining pseudo-alignments. Quasi-mapping and pseudo-alignment are distinct concepts, and RapMap simply happens to implement both.
8+
than the optimal alignment and base-for-base `CIGAR` string that aligns the read and substring of the transcript. For details on RapMap (quasi-mapping in particular), please check out the [associated paper](http://bioinformatics.oxfordjournals.org/content/32/12/i192.full.pdf). Note: RapMap implements both quasi-mapping and pseudo-alignment (originally introduced in [kallisto](https://github.com/pachterlab/kallisto)), these two are not the same thing. They are distinct concepts, and RapMap simply happens to implement algorithms for computing both.
99

10-
There are a number of different ways to collect such information, and the idea of RapMap (as the repository grows) will be to explore multiple different strategies in how to most rapidly determine all *feasible* / *compatible* locations for a read within the transcriptome. In this sense, it is like an *all-mapper*; the alignments it outputs are intended to be (eventually) disambiguated (*Really, it's more like an "all-best" mapper, since it returns all hits in the top "stratum" of lightweight/pseudo/quasi alignments*). If there is a need for it, *best-mapper* functionality may be added in the future.
10+
There are a number of different ways to collect such information, and the idea of RapMap (as the repository grows) will be to explore multiple different strategies in how to most rapidly determine all *feasible* / *compatible* locations for a read within the transcriptome. In this sense, it is like an *all-mapper*; the mappings it outputs are intended to be (eventually) disambiguated (*Really, it's more like an "all-best" mapper, since it returns all hits in the top "stratum" of quasi-mapping / (lightweight / pseudo)-alignments*). If there is a need for it, *best-mapper* functionality may be added in the future.
1111

1212
# Building RapMap
1313

@@ -30,24 +30,24 @@ this functionality is not currently suppored (and is not a high priority right n
3030

3131
# How fast is RapMap?
3232

33-
It's currently too early in development for a comprehensive benchmark suite, but, on a synthetic test dataset comprised of
34-
75 million 76bp paired-end reads, mapping to a human transcriptome with ~213,000 transcripts, RapMap takes ~ 10 minutes to
35-
align all of the reads *on a single core* (on an Intel Xeon E5-2690 @ 3.00 GHz) --- if you actually want to write out the alignments --- it depends on you disk speed, but for us it's ~15 minutes. Again, these mapping times are *on a single core*, and before any significant optimizations (the code is only about a week and a half old) --- but RapMap is trivially parallelizable and can already be run with multiple threads.
33+
Speed is relative, but we think it's very fast: On a synthetic test dataset comprised of 75 million 76bp paired-end reads, mapping to a human transcriptome with ~213,000 transcripts, RapMap takes ~ 10 minutes to align all of the reads *on a single core* (on an Intel Xeon E5-2690 @ 3.00 GHz) --- if you actually want to write out the alignments --- it depends on you disk speed, but for us it's ~15 minutes. Again, these mapping times are *on a single core* --- but RapMap is trivially parallelizable and can be run with multiple threads. Additionally, there are other optimizations we are currently exploring.
3634

3735
# OK, that's fast, but is it accurate?
3836

39-
Again, we're too early in development for a comprehensive benchmark or answer to this question. However, in the above mentioned synthetic dataset (generated *with* sequencing errors), the true location of origin of the read appears in the hits returned by RapMap > 97% of the time. For significantly more details on the accuracy and the quasi-mapping algorithm, see [this](http://robpatro.com/blog/?p=260) blog post.
37+
Yes; quasi-mapping seems to provide accurate mapping results. In the above mentioned synthetic dataset (generated *with* sequencing errors), the true location of origin of the read appears in the hits returned by RapMap > 97% of the time. For more details, please refer to [the paper](http://bioinformatics.oxfordjournals.org/content/32/12/i192.full.pdf).
4038

4139
# Caveats
4240

43-
RapMap is experimental, and the code, at this point, is subject to me testing out new ideas. This also means that little effort has been put into size or speed optimizaiton (but it's already *very* fast --- see above). There are numerous ways that the code can be sped up and the memory footprint reduced, but that hasn't been the focus yet --- it will be eventualy. All of this being said --- RapMap is open to the community because I'd like feedback / help / thoughts. So, if you're not scared off by any of the above, *dig in*!
41+
RapMap is experimental, and the code, at this point, is subject to me testing out new ideas (see the description above about the master vs. develop branch). This also means that limited effort has been put into size or speed optimizaiton. There are numerous ways that the code can be sped up and the memory footprint reduced, but that hasn't been the focus yet --- it will be eventualy. All of this being said --- RapMap is open to the community because I'd like feedback / help / thoughts. A contribution policy is forthcoming. So, if you're not scared off by any of the above, please *dig in*!
4442

4543
# External dependencies
4644

4745
[tclap](http://tclap.sourceforge.net/)
4846

4947
[cereal](https://github.com/USCiLab/cereal)
5048

49+
[jellyfish](https://github.com/gmarcais/Jellyfish)
50+
5151
# License
5252

5353
Since RapMap uses Jellyfish, it must be released under the GPL. However, this is currently the only GPL dependency. If it can be replaced, I'd like to re-license RapMap under the BSD license. I'd be happy to accept pull-requests that replace the Jellyfish components with a library released under a more liberal license (BSD-compatible), but note that I will *not* accept such pull requests if they reduce the speed or increase the memory consumption over the Jellyfish-based version.

0 commit comments

Comments
 (0)