通过ncbi blastn进行靶基因搜索加速
BlastFilterMiRNATargets
00 Remarks
============ 第一轮:BLASTN 快速预筛 ============
blastn -task blastn-short \ -query miRNA.fa \ -subject plant_cDNA.fasta \ -evalue 10000 -word_size 7 \ -gapopen 4 -gapextend 2 \ -reward 1 -penalty -1 \ -outfmt "6 qseqid sseqid sstart send qstart qend sstrand qseq sseq length evalue bitscore" \ -num_threads 32 -max_target_seqs 5000 \
round1_hits.tsv
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| ScoreAlignment | 1 | psRNATarget 打分函数 |
| BlastnFilter | 1 | 对 blastn 第一轮预筛的 HSP 集合做 psRNATarget 风格的打分过滤。 |
| ParseHit | 1 | 对单条 HSP 施加过滤与打分,不通过时返回 Nothing。 |
| HasCenterMismatch | 1 | 切割位点(miRNA 第 10–11 位)存在严格错配 → 翻译抑制候选。 |
03 Members
String, String, Int32, Int32, Double, Int32)---------- psRNATarget 打分函数 ----------
关键点:BLASTN 的 qseq/sseq 是同向一致(identity)框架而非互补框架。 实测数据显示 minus 链 qseq 与 sseq 的逐位一致率约 90%,若按互补规则 (A-U / G-C)判定会把几乎每个位点都算成错配,直接导致过滤结果为空。 配对判定统一委托给 RNASeqHelper.ClassifyBlastPair()。
| Name | Type | Description |
|---|---|---|
qseq | String | BLASTN HSP 的 qseq。minus 链命中时 query 恒为 plus 链, 因此它就是 miRNA 的 5'->3' 片段。 |
sseq | String | BLASTN HSP 的 sseq。minus 链命中时 BLAST 输出的是 mRNA 片段的反向互补, 因此它与 qseq 同向 5'->3'——匹配位点是相同字母。 |
seedStart | Int32 | 种子区起始(miRNA 5'->3' 1-based,psRNATarget V2 = 2)。 |
seedEnd | Int32 | 种子区结束(miRNA 5'->3' 1-based,psRNATarget V2 = 13)。 |
penaltyMultiplier | Double | 种子区错配的罚分倍数。 |
qstart | Int32 | HSP 在 query(miRNA)上的起始坐标(BLAST 的 qstart,1-based)。 用于将比对列号换算成 miRNA 真实坐标;局部比对只覆盖 miRNA 一部分时必须传入。 |
IEnumerable(Of BlastnMapTable), Double, Double, Int32, Int32, Int32, Int32, Int32, Int32, Boolean)对 blastn 第一轮预筛的 HSP 集合做 psRNATarget 风格的打分过滤。
| Name | Type | Description |
|---|---|---|
hits | IEnumerable(Of BlastnMapTable) | 由 BlastnMapTable.Parse() 解析出的 HSP 集合。 |
evalueCutoff | Double | BLAST e-value 预筛阈值。注意它与 maxExpectation 是两种完全不同的量纲: 前者是 BLAST 的统计显著性(命令行 -evalue 用的就是它,故这里取同量级的 1000), 后者是本函数按 psRNATarget 打分体系算出的期望分。二者不可混用。 |
maxExpectation | Double | psRNATarget 期望分上限(越低越好)。 |
minHitLength | Int32 | 最小 HSP 长度,避免极短随机命中(对齐 psRNATarget.MinHitLength)。 |
seedStart | Int32 | 种子区起始(miRNA 坐标)。 |
seedEnd | Int32 | 种子区结束(miRNA 坐标)。 |
maxSeedMm | Int32 | 种子区内允许的最大非 G:U 错配数。 |
maxTotalMm | Int32 | 全比对区允许的最大非 G:U 错配数。 |
maxGu | Int32 | 允许的最大 G:U wobble 数。 |
verbose | Boolean | 是否把每条命中打印到控制台(数据量大时请保持 False)。 |
对单条 HSP 施加过滤与打分,不通过时返回 Nothing。
过滤顺序刻意把廉价条件(链方向 / e-value / 长度 / 种子区覆盖)放在 逐字符打分之前:实测 44 万行 HSP 经廉价过滤后仅约 8 千行需要进入 O(n) 打分循环。
切割位点(miRNA 第 10–11 位)存在严格错配 → 翻译抑制候选。
判定必须用 miRNA 坐标而非比对列号:局部比对的 qstart 通常大于 1。