#time #bioinformatics #fastq #nanopore #format-time #file-input #date-format

bin+lib ontime

根据时间提取 ONT(纳米孔)读取子集

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

Rust 748 SLoC // 0.0% comments Shell 371 SLoC // 0.1% comments

ONTime

Rust CI Crates.io License: MIT github release version DOI

根据时间提取 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 (channel only) bioconda version Conda

$ conda install -c bioconda ontime

Cargo

Crates.io

$ 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 Repository on Quay

先决条件: 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