You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多链氨基酸序列中特定位置关系的R与D/E字符定位需求

解决蛋白质链R与D/E位置关联匹配问题

需求明确

需要从包含Chain A、Chain B、Chain C三条蛋白质链的文本文件中,定位满足以下位置关系的R-D/E字符对:

  • Chain A第i位为R时,Chain B第i+2位为D或E
  • Chain B第i位为R时,Chain C第i+2位为D或E
  • Chain C第i位为R时,Chain A第i+5位为D或E

当前脚本仅能单独提取各链中R的位置,无法实现跨链关联匹配,以下是基于awk的解决方案。

解决方案脚本

假设输入文件中每条链的格式为Chain X单独一行(或带>前缀的FASTA格式),下一行对应序列,可使用以下awk脚本实现批量匹配:

#!/usr/bin/awk -f

# 读取三条链的序列,兼容普通文本和FASTA格式
/Chain A/ { 
    if ($0 ~ /^>/) getline; 
    else if (NF>1) { seqA = $NF; next }
    getline; seqA = $0; next 
}
/Chain B/ { 
    if ($0 ~ /^>/) getline; 
    else if (NF>1) { seqB = $NF; next }
    getline; seqB = $0; next 
}
/Chain C/ { 
    if ($0 ~ /^>/) getline; 
    else if (NF>1) { seqC = $NF; next }
    getline; seqC = $0; next 
}

END {
    lenA = length(seqA)
    lenB = length(seqB)
    lenC = length(seqC)

    print "=== 匹配结果 ==="

    # 检查条件1:A[i]=R → B[i+2]为D/E
    for (i=1; i <= lenA; i++) {
        if (substr(seqA, i, 1) == "R") {
            posB = i + 2
            if (posB <= lenB) {
                char = substr(seqB, posB, 1)
                if (char == "D" || char == "E") {
                    printf "条件1: A第%d位(R) → B第%d位(%s)\n", i, posB, char
                }
            }
        }
    }

    # 检查条件2:B[i]=R → C[i+2]为D/E
    for (i=1; i <= lenB; i++) {
        if (substr(seqB, i, 1) == "R") {
            posC = i + 2
            if (posC <= lenC) {
                char = substr(seqC, posC, 1)
                if (char == "D" || char == "E") {
                    printf "条件2: B第%d位(R) → C第%d位(%s)\n", i, posC, char
                }
            }
        }
    }

    # 检查条件3:C[i]=R → A[i+5]为D/E
    for (i=1; i <= lenC; i++) {
        if (substr(seqC, i, 1) == "R") {
            posA = i + 5
            if (posA <= lenA) {
                char = substr(seqA, posA, 1)
                if (char == "D" || char == "E") {
                    printf "条件3: C第%d位(R) → A第%d位(%s)\n", i, posA, char
                }
            }
        }
    }
}

使用步骤

  1. 将脚本保存为match_rd_pairs.awk
  2. 赋予执行权限:chmod +x match_rd_pairs.awk
  3. 执行脚本并传入目标文件:./match_rd_pairs.awk your_protein_sequences.txt

脚本说明

  • 兼容两种常见的蛋白质序列格式:普通文本(链名+序列分行)和FASTA格式(带>前缀)
  • 遍历每条链的每个位置,对每个R的位置计算对应目标链的位置,先判断是否超出序列长度(避免越界错误),再检查目标字符是否为D或E
  • 输出所有符合条件的位置对,清晰标注匹配的条件类型

内容的提问来源于stack exchange,提问作者Jalan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:35:21