#str #repeat #tandem #interruption #short #genome #tool

app strif

一个用于识别基因组中短串联重复序列中断的工具

2个版本

0.2.1 2023年6月7日
0.2.0 2023年6月7日

#148生物学

MIT/Apache

62KB
1K SLoC

Python 632 SLoC // 0.1% comments Rust 581 SLoC // 0.0% comments

strif

Crates.io CI

安装

下载二进制文件

该工具的二进制文件可以在 "发行版" 标签下找到。

Cargo

  • 按照此指南安装rust工具链,以安装cargo。
  • 运行 cargo install strif

用法

序列图对齐

要生成样本与STR位点的序列图对齐,请使用ExpansionHunter。该工具将为每个样本生成一个.realigned.bam文件。运行ExpansionHunter的说明可在此找到。

提取重复序列

要从ExpansionHunter BAMlet (.realigned.bam)中提取重复序列,请运行以下命令。如果未指定输出,则输出将保存为与BAMlet相同的目录,并以.repeat_seqs.tsv后缀。

strif extract <BAMLET> [OUTPUT] 

分析STR中断

要从提取的重复序列(strif extract的输出)分析STR中断,请运行以下命令。STR目录需要与这些目录相同格式。如果未指定输出路径,则输出将保存为与重复序列文件相同的目录,并以.strif_profile.tsv后缀。

strif profile [OPTIONS] <REPEAT_SEQS> <STR_CATALOG> [OUTPUT] [OUTPUT_ALIGNMENTS]

选项

  -z                           Output visual alignments. Default is false
  -f, --filter <FILTER>        Filter locus IDs using a regular expression. Defaults to None. This is useful for filtering out loci that are not of interest
  -A <MATCH_SCORE>             [default: 1]
  -B <MISMATCH_PENALTY>        [default: 8]
  -O <GAP_OPEN_PENALTY>        [default: 10]
  -E <GAP_EXTEND_PENALTY>      [default: 1]

合并STR中断配置文件

要合并多个样本的STR中断配置文件,请运行以下命令。如果未指定输出路径,输出将被保存在与清单文件相同的目录中,文件名以.merged_profiles.tsv后缀。

strif merge [OPTIONS] <MANIFEST> <READ_DEPTHS> [OUTPUT]
  • 清单
    • 以下列的制表符分隔文件
      • 样本ID,样本状态(病例或对照),STRIF配置文件路径
    • 不要包含标题行
    • 示例
      • DO45195_case	case	output/DO45195_case.strif_profile.tsv
        DO45195_control	control	output/DO45195_control.strif_profile.tsv
        DO45231_case	case	output/DO45231_case.strif_profile.tsv
        DO45231_control	control	output/DO45231_control.strif_profile.tsv
        
  • 读取深度
    • 以下列的制表符分隔文件
      • 样本ID,读取深度
    • 不要包含标题行
    • 示例
      • DO219580_case	73.15
        DO219580_control	34.47
        DO22836_case	69.76
        DO22836_control	35.62
        

选项

  -f, --filter <FILTER>
          Filter locus IDs using a regular expression. Defaults to None. This is useful for filtering out loci that are not of interest
  -m, --min-read-count <MIN_READ_COUNT>
          Minimum read count to include in the merged profile. Defaults to 1. This is useful for filtering out loci with low coverage [default: 1]
  -l, --read-length <READ_LENGTH>
          The sequencing read length. Used for normalizing the interruption counts [default: 150]
  -h, --help

优先处理中断

要找到在病例和对照样本之间存在显著差异的中断,您可以使用位于scripts目录中的prioritize.py

优先化脚本期望样本ID按以下格式格式化:<INDIVIDUAL>_<case/control>。如果使用-t选项运行配对测试,则预期每个个体恰好有一个病例和一个对照文件。

python prioritize.py <merged_profile> <output_file> <sig_output_file>
  • 输出文件
    • 包含所有测试中断信息的文件,包括p值和效应大小
    • 不包括中断计数
  • 显著性输出文件
    • 包含p值低于阈值的所有中断信息的文件
    • 包括中断计数(有助于绘图)

注意:当前,该脚本不执行多假设检验校正。强烈建议独立执行此步骤。

选项

  -n MIN_SAMPLES, --min-samples MIN_SAMPLES
                        Minimum number of samples per group (case or control)
  -p P_VALUE_CUTOFF, --p-value-cutoff P_VALUE_CUTOFF
                        P-value cutoff
  -t, --paired-test     Enable paired test
  -c CHUNK_SIZE, --chunk-size CHUNK_SIZE
                        Chunk size for reading merged profile
  --no-progress         Disable progress bars

生成验证数据集

您可以使用generate_validation_sets.pyscripts目录中生成模拟重复序列以验证和测试STRIF。唯一的参数是目录路径,例如datasets/,生成数据集将在此处创建。

python generate_validation_sets.py <DATASET_DIR>
  • 生成数据集
    • 简单
      • 小型数据集,有助于调试
    • no_interruption
      • 不包含中断的重复序列
    • basic_<1-6>
      • 小型数据集,有助于开发
    • comprehensive_<test, train, valid>
      • 综合数据集,有助于优化参数、验证和测试
    • disjoint_<1-6>
      • 不包含重复序列中任何碱基的中断序列的不相交数据集
    • intersect_<1-6>
      • 包含至少一个重复序列碱基的中断序列的相交数据集
    • insert_<1-6>
      • 已插入重复序列的中断数据集
    • substitute_<1-6>
      • 替换一个或多个重复序列碱基的中断数据集

计算性能指标

您可以使用metrics.pyscripts目录中对生成数据集进行指标计算。唯一的参数是创建生成数据集的目录路径,例如datasets/

python metrics.py <DATASET_DIR>

脚本将在数据集目录中输出一个文件overall_stats.tsv,其中包含每个数据集的指标摘要。

优化对齐参数

您可以通过在scripts目录中运行optimize.py来找到strif profile的最佳对齐参数。唯一的参数是数据集路径。这将是数据集目录内的任何目录。建议在datasets/comprehensive_train上运行此操作。

python optimize.py <DATASET_DIR>/<NAME_OF_DATASET>

许可

根据您的选择许可

贡献

除非您明确声明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,将按上述方式双授权,不附加任何额外条款或条件。

请参阅CONTRIBUTING.md

依赖项

~23–34MB
~564K SLoC