7 个版本
0.3.1 | 2024年2月12日 |
---|---|
0.3.0 | 2024年2月6日 |
0.2.3 | 2023年10月30日 |
0.1.3 | 2023年1月13日 |
在 生物学 中排名第 99
每月下载量 31 次
105KB
1K SLoC
ONTime
根据时间提取 ONT(纳米孔)读取子集
动机
一些合作者想知道他们需要多长时间在纳米孔设备上执行测序才能获得“足够”的数据(“足够”显然取决于应用)。
他们本来打算进行多次不同时间段的运行。所以,我创建了 ontime
,可以轻松地抓取第一小时、前两小时、前三小时等的读取数据,并将这些子集通过分析管道运行,这正是预期的应用。这样他们只需要进行一次(更长)的运行。
安装
tl;dr: 预编译的二进制文件
curl -sSL ontime.mbh.sh | sh
# or with wget
wget -nv -O - ontime.mbh.sh | sh
您还可以像这样向脚本传递选项
$ curl -sSL ontime.mbh.sh | sh -s -- --help
install.sh [option]
Fetch and install the latest version of ontime, if ontime is already
installed it will be updated to the latest version.
Options
-V, --verbose
Enable verbose output for the installer
-f, -y, --force, --yes
Skip the confirmation prompt during installation
-p, --platform
Override the platform identified by the installer [default: apple-darwin]
-b, --bin-dir
Override the bin installation directory [default: /usr/local/bin]
-a, --arch
Override the architecture identified by the installer [default: x86_64]
-B, --base-url
Override the base URL used for downloading releases [default: https://github.com/mbhall88/ssubmit/releases]
-h, --help
Display this help message
Conda
$ conda install -c bioconda ontime
Cargo
$ cargo install ontime
容器
Docker 镜像托管在 quay.io。
singularity
先决条件: singularity
$ URI="docker://quay.io/mbhall88/ontime"
$ singularity exec "$URI" ontime --help
上面的命令将使用最新版本。如果您想指定版本,请使用 标签(或提交)如下。
$ VERSION="0.1.0"
$ URI="docker://quay.io/mbhall88/ontime:${VERSION}"
docker
先决条件: docker
$ docker pull quay.io/mbhall88/ontime
$ docker run quay.io/mbhall88/ontime ontime --help
您可以在 quay.io 仓库 中找到所有可用的标签。
从源代码构建
$ git clone https://github.com/mbhall88/ontime.git
$ cd ontime
$ cargo build --release
$ target/release/ontime -h
示例
我想获取 前一小时 内测序的读取数据
$ ontime --to 1h in.fq
与上面相同,但使用 BAM 文件作为输入
$ ontime --to 1h in.bam
我想获取 第一小时之后 测序的读取数据
$ ontime --from 1h in.fq
我想获取 除了最后一小时测序的读取数据之外的所有读取数据
$ ontime --to -1h in.fq
我想获取 第三小时和第四小时之间 测序的读取数据
$ ontime --from 3h --to 4h in.fq
检查 fastq 中的最早和最晚开始时间
$ ontime --show in.fq
Earliest: 2022-12-12T15:17:01.0Z
Latest : 2022-12-13T01:16:27.0Z
我喜欢具体,给我 在我吃晚饭时 测序的读取数据(见 时间格式说明)
$ ontime --from 2022-12-12T20:45:00Z --to 2022-12-12T21:17:01.5Z in.fq
我想将输出保存到 Gzip 压缩文件中
$ ontime --to 2h -o out.fq.gz in.fq
用法
Extract subsets of ONT (Nanopore) reads based on time
Usage: ontime [OPTIONS] <FILE>
Arguments:
<FILE> Input fastq/fasta/BAM/SAM file
Options:
-o, --output <FILE> Output file name [default: stdout]
-O, --output-type <u|b|g|l> (fastq/a output only) u: uncompressed; b: Bzip2; g: Gzip; l: Lzma
-L, --compress-level <1-21> Compression level to use if compressing fastq output [default: 6]
-f, --from <DATE/DURATION> Earliest start time; otherwise the earliest time is used
-t, --to <DATE/DURATION> Latest start time; otherwise the latest time is used
-s, --show Show the earliest and latest start times in the input and exit
-h, --help Print help (see more with '--help')
-V, --version Print version
指定时间范围
选项 --from
和 --to
用于限制读取的时间范围。这些选项接受两种不同的格式:持续时间和时间戳。
持续时间:提供时间范围最人性化的方式是使用持续时间。例如,1h
表示 1 小时。传递 --from 1h
表示 "我希望读取在测序开始后 1 小时或更长时间生成的读取" - 即文件中最早开始时间加上 1 小时。同样,传递 --to 2h
表示 "我只希望读取在测序的第二小时内生成的读取"。使用 --from
和 --to
结合使用可以给出一个范围。
我们支持一系列的时间/持续时间单位,并且可以组合使用。例如,3h45m
表示 3 小时和 45 分钟。有关支持的持续时间单位的完整列表,请参阅 duration-str
文档。
也允许使用负持续时间。负持续时间从文件中的 最新 开始时间减去该持续时间。因此,--to -1h
将排除在运行最后小时内测序的读取。负范围也是有效的 - 即 --from -2h --to -1h
将给出在运行倒数第二小时测序的读取。
时间戳:如果您想为您的范围提供日期和时间,这在 --from/--to
中也是可以接受的。有关更多信息,请参阅 格式化指南。
为了使使用时间戳更容易一些,您可以首先运行 ontime --show <in.fq>
以获取文件中的最早和最新时间戳。
时间格式
ontime
提取的时间是每个 fastq 读取描述中包含的 start_time=<time>
或 st:Z:<time>
部分。这种时间格式的变化已经几次,所以如果您遇到 ontime
无法解析的文件,请提出问题,以便我可以让它正常工作。
一般情况下,ontime
打印的时间和由 --from/--to
选项接受的时间都是 UTC 时间。Guppy 更新版本也具有 UTC 偏移量,它们的 start_time
;为了简化,这些偏移量被 ontime
忽略。因此,如果您想根据您当地的时区为 --from/--to
提供时间戳,请首先 将其转换为 UTC 时间。
一般来说,ontime
接受任何符合 RFC339 的格式。
基本(推荐)的格式是 <YEAR>-<MONTH>-<DAY>T<HOUR>:<MINUTE>:<SECONDS>Z
- 例如 2022-12-12T18:39:09Z
. 如果愿意,也可以精确到微秒...
完整用法
Extract subsets of ONT (Nanopore) reads based on time
Usage: ontime [OPTIONS] <FILE>
Arguments:
<FILE>
Input fastq/fasta/BAM/SAM file
Options:
-o, --output <FILE>
Output file name [default: stdout]
Note: you cannot output a fastq if a BAM/SAM input is given and vice versa. Use samtools for post-processing. However, you can output SAM if the input is BAM and vice versa.
-O, --output-type <u|b|g|l>
(fastq/a output only) u: uncompressed; b: Bzip2; g: Gzip; l: Lzma
ontime will attempt to infer the output compression format automatically from the output extension. If writing to stdout, the default is uncompressed (u)
-L, --compress-level <1-21>
Compression level to use if compressing fastq output
[default: 6]
-f, --from <DATE/DURATION>
Earliest start time; otherwise the earliest time is used
This can be a timestamp - e.g. 2022-11-20T18:00:00 - or a duration from the start - e.g. 2h30m (2 hours and 30 minutes from the start). See the docs for more examples
-t, --to <DATE/DURATION>
Latest start time; otherwise the latest time is used
See --from (and docs) for examples
-s, --show
Show the earliest and latest start times in the input and exit
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
引用
ontime
已存档在 Zenodo.
@software{ontime,
author = {Michael Hall},
title = {mbhall88/ontime: 0.1.3},
month = jan,
year = 2023,
publisher = {Zenodo},
version = {0.1.3},
doi = {10.5281/zenodo.7533053},
url = {https://doi.org/10.5281/zenodo.7533053}
}
并将版本号替换为您使用的版本。
依赖项
~20MB
~368K SLoC