|
6 | 6 | [](https://www.gnu.org/licenses/gpl-3.0) |
7 | 7 |
|
8 | 8 | DNMTools is a set of tools for analyzing DNA methylation data from |
9 | | -high-throughput sequencing experiments, especially whole genome |
10 | | -bisulfite sequencing (WGBS), but also reduced representation bisulfite |
11 | | -sequencing (RRBS). These tools focus on overcoming the computing |
12 | | -challenges imposed by the scale of genome-wide DNA methylation data, |
13 | | -which is usually the early parts of data analysis. |
| 9 | +high-throughput sequencing experiments, especially whole genome bisulfite |
| 10 | +sequencing (WGBS), but also reduced representation bisulfite sequencing |
| 11 | +(RRBS). These tools focus on overcoming the computing challenges imposed by |
| 12 | +the scale of genome-wide DNA methylation data, which is usually the early |
| 13 | +parts of data analysis. |
14 | 14 |
|
15 | | -## Installing release 1.4.4 |
16 | | - |
17 | | -The documentation for DNMTools can be found |
18 | | -[here](https://dnmtools.readthedocs.io). But if you want to install |
19 | | -from source and you are reading this on GitHub or in a source tree you |
20 | | -unpacked, then keep reading. And if you are in a terminal, sorry for |
21 | | -all the formatting. |
22 | | - |
23 | | -### Required libraries |
24 | | - |
25 | | -* A recent compiler. Most users will be building and installing this |
26 | | - software with GCC. We require a compiler that fully supports C++17, |
27 | | - so we recommend using at least GCC 9 (released in 2019). There are |
28 | | - still many systems that install a very old version of GCC by |
29 | | - default, so if you have problems with building this software, that |
30 | | - might be the first thing to check. The clang LLVM compiler can |
31 | | - also be used with a recent enough version. |
32 | | -* The GNU Scientific Library. It can be installed using apt on Linux |
33 | | - (Ubuntu, Debian), using brew on macOS, or from source available |
34 | | - [here](http://www.gnu.org/software/gsl). |
35 | | -* The HTSlib library. This can be installed through brew on macOS, |
36 | | - through apt on Linux (Ubuntu, Debian), or from source downloadable |
37 | | - [here](https://github.com/samtools/htslib). |
38 | | - |
39 | | -All the above can also be installed using conda. If you use conda for |
40 | | -these dependencies, even if you are building dnmtools from the source |
41 | | -repo, it is easiest if all dependencies are available through conda. |
42 | | - |
43 | | -### Configuration |
44 | | - |
45 | | -* Download [dnmtools-1.4.4.tar.gz](https://github.com/smithlabcode/dnmtools/releases/download/v1.4.4/dnmtools-1.4.4.tar.gz). |
46 | | -* Unpack the archive: |
47 | | -```console |
48 | | -tar -zxvf dnmtools-1.4.4.tar.gz |
49 | | -``` |
50 | | -* Move into the dnmtools directory and create a build directory: |
51 | | -```console |
52 | | -cd dnmtools-1.4.4 && mkdir build && cd build |
53 | | -``` |
54 | | -* Run the configuration script: |
55 | | -```console |
56 | | -../configure |
57 | | -``` |
58 | | -If you do not want to install DNMTools system-wide, or if you do |
59 | | -not have admin privileges, specify a prefix directory: |
60 | | -```console |
61 | | -../configure --prefix=/some/reasonable/place |
62 | | -``` |
63 | | -If you installed HTSlib yourself in some non-standard directory, |
64 | | -you must specify the location like this: |
65 | | -```console |
66 | | -../configure CPPFLAGS='-I /path/to/htslib/headers' \ |
67 | | - LDFLAGS='-L/path/to/htslib/lib' |
68 | | -``` |
69 | | -Depending on how you obtained HTSlib, the headers may not be |
70 | | -in a directory at the same depth as the library file. |
71 | | - |
72 | | -### Building and installing the tools |
73 | | - |
74 | | -If you are still in the `build` directory, run `make` to compile the |
75 | | -tools, and then `make install` to install them: |
76 | | -```console |
77 | | -make && make install |
78 | | -``` |
79 | | -If your HTSlib (or some other library) is not installed system-wide, |
80 | | -then you might need to udpate your library path: |
81 | | -```console |
82 | | -export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/htslib/lib |
83 | | -``` |
84 | | - |
85 | | -### Testing the program |
86 | | - |
87 | | -To test if everything was successful, simply run `dnmtools` without |
88 | | -any arguments and you should see the list of available commands: |
89 | | -```console |
90 | | -dnmtools |
91 | | -``` |
92 | | -There is a test suite for `dnmtools` and these test can be performed |
93 | | -as follows: |
94 | | -```console |
95 | | -make check |
96 | | -``` |
97 | | -This must be done from the build directory. Note that the tests |
98 | | -performed with `make check` are mostly regression tests that cover |
99 | | -prior issues rather than coverage tests to test all the functionality |
100 | | -of `dnmtools`. |
101 | | - |
102 | | -### Using a clone of the repo |
103 | | - |
104 | | -We strongly recommend using DNMTools through the latest stable release |
105 | | -under the releases section on GitHub or through a package as with |
106 | | -conda/mamba. Developers who wish to work on the latest commits, which |
107 | | -are unstable, can compile the source using `autogen.sh` which just |
108 | | -wraps `autoreconf`. |
| 15 | +**Nanopore** As of v1.5.0, DNMTools has funcionality to start analysis with a |
| 16 | +BAM file from Nanopore sequencing with 5mC and 5hmC calls at CpG sites. |
109 | 17 |
|
110 | 18 | ## Usage |
111 | 19 |
|
112 | | -Read the [documentation](https://dnmtools.readthedocs.io) for usage of |
113 | | -individual tools within DNMTools. |
114 | | - |
115 | | -## Installing and running `dnmtools` docker images |
116 | | - |
117 | | -The docker images of `dnmtools` are accessible through GitHub Container |
118 | | -registry. These are light-weight (~30 MB) images that let you run `dnmtools` |
119 | | -without worrying about the dependencies. |
120 | | - |
121 | | -### Installation |
122 | | - |
123 | | -To pull the image for the latest version, run: |
124 | | -```console |
125 | | -docker pull ghcr.io/smithlabcode/dnmtools |
126 | | -``` |
127 | | -To test the image installation, run: |
128 | | -```console |
129 | | -docker run ghcr.io/smithlabcode/dnmtools |
130 | | -``` |
131 | | -You should see the help page of `dnmtools`. |
132 | | - |
133 | | -For simpler reference, you can |
134 | | -re-tag the installed image as follows, but note that you would have to re-tag |
135 | | -the image whenever you pull an image for a new version. |
136 | | -```console |
137 | | -docker tag ghcr.io/smithlabcode/dnmtools:latest dnmtools:latest |
138 | | -``` |
139 | | - |
140 | | -You can also install the image for a particular vertion by running |
141 | | -```console |
142 | | -docker pull ghcr.io/smithlabcode/dnmtools:v[VERSION NUMBER] #(e.g. v1.4.4) |
143 | | -``` |
144 | | -Not all versions have corresponding images; you can find available images |
145 | | -[here](https://github.com/smithlabcode/dnmtools/pkgs/container/dnmtools). |
146 | | - |
147 | | -### Running the docker image |
148 | | - |
149 | | -To run the image, you can run (assuming you tagged the image as above) |
150 | | -```console |
151 | | -docker run -v /path/to/data:/data -w /data \ |
152 | | - dnmtools [DNMTOOLS COMMAND] [OPTIONS] [ARGUMENTS] |
153 | | -``` |
154 | | -In the above command, replace `/path/to/data` with the path to the directory you |
155 | | -want to mount, and it will be mounted as the `/data` directory in the container. |
156 | | -For example, if your genome data `genome.fa` is located in `./genome_data`, you |
157 | | -can execute `abismalidx` by running: |
158 | | -```console |
159 | | -docker run -v ./genome_data:/data -w /data \ |
160 | | - dnmtools abismalidx -v -t 4 genome.fa genome.idx |
161 | | -``` |
162 | | -In the above command, `-w /data` specifies the working directory in the |
163 | | -container, so the output `genome.idx` is saved in the `/data` directory, |
164 | | -which corresponds to the `./genome_data` directory in the host |
165 | | -machine. If you want to specify the output directory, use a command like below. |
166 | | -```console |
167 | | -docker run -v ./genome_data:/data -w /data \ |
168 | | - -v ./genome_index:/output \ |
169 | | - dnmtools abismalidx -v -t 4 genome.fa /output/genome.idx |
170 | | -``` |
171 | | -When you need to access multiple directories, it might be useful to use the |
172 | | -option `-v ./:/app -w /app`, which mounts the current directory |
173 | | -to the `/app` directory in the container, which is alo set as the working |
174 | | -directory. You can specify the paths in the same way you would from the |
175 | | -working directory in the host machine. For example: |
176 | | -```console |
177 | | -docker run -v ./:/app -w /app \ |
178 | | - dnmtools abismal -i genome_index/genome.idx -v -t 4 \ |
179 | | - -o mapped_reads/output.sam \ |
180 | | - reads/reads_1.fq reads/reads_1.fq |
181 | | -``` |
182 | | - |
183 | | -### Testing the install and use of docker image |
184 | | - |
185 | | -Run the following commands to test the installation and usage of the docker |
186 | | -image of `dnmtools`. |
187 | | -```console |
188 | | -docker pull ghcr.io/smithlabcode/dnmtools:latest |
189 | | -docker tag ghcr.io/smithlabcode/dnmtools:latest dnmtools:latest |
190 | | - |
191 | | -# Clone the repo to access test data |
192 | | -git clone git@github.com:smithlabcode/dnmtools.git |
193 | | -cd dnmtools |
194 | | - |
195 | | -# Run containers and save outputs in artifacts directory |
196 | | - |
197 | | -mkdir artifacts |
198 | | - |
199 | | -docker run -v ./:/app -w /app \ |
200 | | - dnmtools abismalidx -v -t 1 data/tRex1.fa artifacts/tRex1.idx |
201 | | - |
202 | | -docker run -v ./:/app -w /app \ |
203 | | - dnmtools simreads -seed 1 -o artifacts/simreads -n 10000 \ |
204 | | - -m 0.01 -b 0.98 data/tRex1.fa |
205 | | - |
206 | | -docker run -v ./:/app -w /app \ |
207 | | - dnmtools abismal -v -t 1 -i artifacts/tRex1.idx artifacts/simreads_{1,2}.fq |
208 | | -``` |
209 | | - |
210 | | -## Contacts and bug reports |
| 20 | +The documentation for DNMTools can be found |
| 21 | +[here](https://dnmtools.readthedocs.io). |
| 22 | + |
| 23 | +## Installation |
| 24 | + |
| 25 | +- **Linux** |
| 26 | + The binary should work on almost any Linux system as recent as 2017: Ubuntu |
| 27 | + 16.04+, Debian 9+, Fedora 24+, openSUSE Leap 42.3+, and RHEL/CentOS 8+. |
| 28 | + [Download](https://github.com/smithlabcode/dnmtools/releases/download/v1.5.0/dnmtools-1.5.0-Linux.tar.gz). |
| 29 | + |
| 30 | +- **Mac** |
| 31 | + The Mac binary should work on any Mac hardware and macOS-13 (Ventura) or |
| 32 | + newer. |
| 33 | + [Download](https://github.com/smithlabcode/dnmtools/releases/download/v1.5.0/dnmtools-1.5.0-macOS.tar.gz). |
| 34 | + |
| 35 | +- **Conda** |
| 36 | + ```console |
| 37 | + conda install -c bioconda dnmtools |
| 38 | + ``` |
| 39 | + |
| 40 | +- **Build from source** |
| 41 | + Get the source here: |
| 42 | + [dnmtools-1.5.0.tar.gz](https://github.com/smithlabcode/dnmtools/releases/download/v1.5.0/dnmtools-1.5.0.tar.gz). Dependencies: |
| 43 | + [GSL](http://www.gnu.org/software/gsl), |
| 44 | + [HTSlib](https://github.com/samtools/htslib), |
| 45 | + [libdeflate](https://github.com/ebiggers/libdeflate) and |
| 46 | + [ZLib](https://github.com/madler/zlib). Installing GSL and HTSlib is usually enough. |
| 47 | + See below for system-specific details. |
| 48 | + |
| 49 | + Build DNMTools like this: |
| 50 | + ```console |
| 51 | + tar -xf dnmtools-1.5.0.tar.gz |
| 52 | + cd dnmtools-1.5.0 |
| 53 | + ./configure --prefix=$HOME |
| 54 | + make |
| 55 | + make install |
| 56 | + ``` |
| 57 | + |
| 58 | + Get dependencies and a compiler on (these might change): |
| 59 | + |
| 60 | + Ubuntu/Debian |
| 61 | + ```console |
| 62 | + apt-get install build-essential htslib-dev libgsl-dev |
| 63 | + ``` |
| 64 | + |
| 65 | + RedHat/Fedora |
| 66 | + ```console |
| 67 | + dnf install @c-development @development-tools htslib-devel gsl-devel awk |
| 68 | + ``` |
| 69 | + |
| 70 | + Homebrew (see below) |
| 71 | + ```console |
| 72 | + brew install gcc htslib gsl |
| 73 | + ``` |
| 74 | + |
| 75 | + Conda (see below) |
| 76 | + ```console |
| 77 | + conda create -n build-env -c conda-forge -c bioconda gcc gxx make autoconf automake htslib gsl && \ |
| 78 | + conda activate build-env |
| 79 | + ``` |
| 80 | + |
| 81 | + If you used Homebrew or Conda, you might need to set additional environment |
| 82 | + variables or run configure differently. For example with Homebrew: |
| 83 | + ```console |
| 84 | + ./configure CPPFLAGS="-I$(brew --prefix)/include" LDFLAGS="-L$(brew --prefix)/lib" |
| 85 | + ``` |
| 86 | + |
| 87 | +## Contact |
211 | 88 |
|
212 | 89 | Andrew D. Smith |
213 | 90 | andrewds@usc.edu |
214 | 91 |
|
215 | 92 | ## Copyright and License Information |
216 | 93 |
|
217 | | -Copyright (C) 2022-2024 |
| 94 | +Copyright (C) 2022-2025 |
| 95 | + |
218 | 96 | Andrew D. Smith and Guilherme de Sena Brandine |
219 | 97 |
|
220 | 98 | Authors of DNMTools: Andrew D. Smith and Guilherme de Sena Brandine |
221 | 99 |
|
222 | | -Essential contributors: Ben Decato, Meng Zhou, Liz Ji, Terence Li, |
223 | | -Jenny Qu, Qiang Song, Fang Fang and Masaru Nakajima |
| 100 | +Essential contributors: Ben Decato, Meng Zhou, Liz Ji, Terence Li, Jenny Qu, |
| 101 | +Qiang Song, Fang Fang and Masaru Nakajima |
224 | 102 |
|
225 | | -This is free software: you can redistribute it and/or modify it under |
226 | | -the terms of the GNU General Public License as published by the Free |
227 | | -Software Foundation, either version 3 of the License, or (at your |
228 | | -option) any later version. |
| 103 | +This is free software: you can redistribute it and/or modify it under the |
| 104 | +terms of the GNU General Public License as published by the Free Software |
| 105 | +Foundation, either version 3 of the License, or (at your option) any later |
| 106 | +version. |
229 | 107 |
|
230 | | -This software is distributed in the hope that it will be useful, but |
231 | | -WITHOUT ANY WARRANTY; without even the implied warranty of |
232 | | -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
233 | | -General Public License for more details. |
| 108 | +This software is distributed in the hope that it will be useful, but WITHOUT |
| 109 | +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| 110 | +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
| 111 | +details. |
0 commit comments