pinellolab/crispr_selfedit_mappingCRISPR - Correct 是由 Pinello Lab 开发的 Python 工具包,主要用于从原始 FASTQ 文件和向导 RNA(guide RNA)库数据框中进行向导 RNA 映射。其核心功能是通过计算汉明距离将观测到的原型间隔区(protospacer)序列映射到最接近的向导 RNA,特别适用于处理因 SpRY 碱基编辑器自编辑或测序错误导致的非完美映射。此外,该工具支持向导 RNA 传感器构建体和 UMI(唯一分子标识符)的解析,可通过正则表达式从测序读段中提取原型间隔区、替代序列(surrogate)、条形码(barcode)等序列。需注意的是,CRISPR - Correct 无法处理原型间隔区中的插入缺失(indel),此类情况建议使用 Pinello Lab 的另一工具 CRISPR BEAN;若未预期自编辑或测序错误,可选择更简单快速的 CRISPR SURF 工具。
通过 PyPI 安装,命令如下:
bashpip install crispr - ambiguous - mapping == 0.0.177
需提供解复用后的 R1(单端或双端)和 R2(双端时)FASTQ 文件。若需处理读段内索引(in - read index),建议先用 UMITools 解析目标序列和索引,再用 BBMap 的 demuxbyname.sh 工具根据头部信息解复用。大规模样本可参考 Terra Firecloud 的预处理流程(pinellolab/CrisprMillipedeGuideDemultiplex)。
若从 FASTQ 头部解析条形码或 UMI,需提供正则表达式。示例如下:
@lh00134:140:225VLGLT3:7:1101:1028:1080_ANGC_GGCA 1:N:0:GAAATAAG+ACGTCCTGBARCODE_REGEX = r"_([^_ ]+)[\s+]"UMI_REGEX = r":([^+:]{6})(.{2})\+"需提供 TSV 格式的向导 RNA 库文件,包含以下列:
protospacer(必需):原型间隔区序列。surrogate(可选):替代序列。barcode(可选):条形码序列。要求:同一列的所有序列长度必须一致。示例表格:
tsvprotospacer surrogate barcode TGTCGTGAGGTAGCTACGAC CAGCAATGTCGTGAGGTAGCTACGACTTGTCA GCTC AGTCGTAGCTACCTCACGAC ATGACAAGTCGTAGCTACCTCACGACATTGCT GTTG CCTAGTGGTTATTCGATGTC AGGTTACCTAGTGGTTATTCGATGTCTCAGAA CGAA
建议根据序列长度设定阈值,例如:
主要映射函数为 crispr_ambiguous_mapping.mapping.get_whitelist_reporter_counts_from_fastq,参数说明如下(关键参数):
| 参数类别 | 核心参数 | 说明 |
|---|---|---|
| 输入文件 | whitelist_guide_reporter_df | 向导 RNA 库数据框(pandas DataFrame) |
fastq_r1_fn | R1 FASTQ 文件路径 | |
fastq_r2_fn | R2 FASTQ 文件路径(双端时) | |
| 序列解析(正则) | {sequence_type}_pattern_regex | 提取条形码/UMI 等的正则表达式(如 barcode_pattern_regex) |
| 序列解析(位置) | {sequence_type}_start_position/_length | 按位置提取序列(如 protospacer_start_position=0, protospacer_length=20) |
| 序列来源 | is_{sequence_type}_r1/_header | 指定序列来自 R1/R2 读段或头部(如 is_protospacer_r1=True) |
| 序列校正 | revcomp_{sequence_type} | 是否对序列进行反向互补(如 revcomp_surrogate=True) |
| 映射阈值 | {sequence_type}_hamming_threshold_strict | 汉明距离阈值(如 protospacer_hamming_threshold_strict=7) |
| 性能 | cores | 并行计算核心数 |
pythonimport crispr_ambiguous_mapping import pandas as pd # 加载向导 RNA 库 whitelist_guide_reporter_df = pd.read_table("guide_library.tsv") # 定义条形码和 UMI 正则表达式 barcode_pattern = r"_([^_ ]+)[\s+]" # 提取条形码 umi_pattern = r":([^+:]{6})(.{2})\+" # 提取 UMI # 执行映射 result = crispr_ambiguous_mapping.mapping.get_whitelist_reporter_counts_from_fastq( whitelist_guide_reporter_df=whitelist_guide_reporter_df, fastq_r1_fn="read1.fastq.gz", fastq_r2_fn="read2.fastq.gz", # 条形码和 UMI 解析 barcode_pattern_regex=barcode_pattern, umi_pattern_regex=umi_pattern, # 原型间隔区解析(R1 读段前 20 个碱基) protospacer_start_position=0, protospacer_length=20, is_protospacer_r1=True, revcomp_protospacer=False, # 替代序列解析(R2 读段前 32 个碱基,反向互补) surrogate_start_position=0, surrogate_length=32, is_surrogate_r1=False, revcomp_surrogate=True, # 汉明距离阈值 protospacer_hamming_threshold_strict=7, surrogate_hamming_threshold_strict=10, barcode_hamming_threshold_strict=2, # 并行核心数 cores=8 )
映射结果可通过以下方式处理和可视化:
python# 提取突变谱 mutations_results = crispr_ambiguous_mapping.processing.get_mutation_profile( match_set_whitelist_reporter_observed_sequence_counter_series_results, whitelist_reporter_df=whitelist_guide_reporter_df ) # 绘制突变计数直方图 crispr_ambiguous_mapping.visualization.plot_mutation_count_histogram( linked_mutation_counters.protospacer_total_mutation_counter, filename="protospacer_mutation_histogram.png" ) # 绘制三核苷酸突变特征 crispr_ambiguous_mapping.visualization.plot_trinucleotide_mutational_signature( mutations_results=mutations_results, count_attribute_name="ambiguous_accepted_umi_noncollapsed_mutations", filename="trinucleotide_signature.png" ) # 保存结果(pickle 格式) crispr_ambiguous_mapping.utility.save_or_load_pickle( "./", "mapping_result", py_object=result, date_string="" )
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务