从文件中提取与第n个模式相对应的子序列

MO12

我下面有数据块(多个)

chr1.trna4 (17188416-17188486)  Length: 71 bp
Type: Gly   Anticodon: CCC at 33-35 (17188448-17188450) Score: 78.3
HMM Sc=56.60    Sec struct Sc=21.70
         *    |    *    |    *    |    *    |    *    |    *    |    *    |
Seq: GCATTGGTGGTTCAGTGGTAGAATTCTCGCCTCCCACGCGGGAGaCCCGGGTTCAATTCCCGGCCAATGCA
Str: >>>>>>>..>>>>.......<<<<.>>>>>.......<<<<<....>>>>>.......<<<<<<<<<<<<.

对于每个块,我需要在以开头的块的最后一行中找到第8个模式Str在上述情况下,第8个模式为.......(7个周期)。这是因为第一组>符号构成一个模式,第二组周期构成第二个模式,依此类推。

现在,我需要从Seq图案线正上方的那一行中提取这7个字符在该示例中,这对应于子序列CTCCCAC

输出应为 Seq is CTCCCAC and Anticodon: CCC

这在bash或任何壳中都可能吗?

数据块的更多示例

chr19.trna11 (4724719-4724647)  Length: 73 bp
Type: Val   Anticodon: CAC at 34-36 (4724686-4724684)   Score: 79.2
HMM Sc=49.10    Sec struct Sc=30.10
         *    |    *    |    *    |    *    |    *    |    *    |    *    |  
Seq: GTTTCCGTAGTGTAGCGGTtATCACATTCGCCTCACACGCGAAAGGtCCCCGGTTCGATCCCGGGCGGAAACA
Str: >>>>>>>..>>>..........<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.


chr19.trna12 (1383433-1383361)  Length: 73 bp
Type: Phe   Anticodon: GAA at 34-36 (1383400-1383398)   Score: 88.9
HMM Sc=68.40    Sec struct Sc=20.50
         *    |    *    |    *    |    *    |    *    |    *    |    *    |  
Seq: GCCGAAATAGCTCAGTTGGGAGAGCGTTAGACTGAAGATCTAAAGGtCCCTGGTTCGATCCCGGGTTTCGGCA
Str: >>>>>>>..>>>>........<<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.


chr21.trna1 (18827177-18827107) Length: 71 bp
Type: Gly   Anticodon: GCC at 33-35 (18827145-18827143) Score: 80.9
HMM Sc=60.10    Sec struct Sc=20.80
         *    |    *    |    *    |    *    |    *    |    *    |    *    |
Seq: GCATGGGTGGTTCAGTGGTAGAATTCTCGCCTGCCACGCGGGAGGCCCGGGTTCGATTCCCGGCCCATGCA
Str: >>>>>>>..>>>>.......<<<<.>>>>>.......<<<<<....>>>>>.......<<<<<<<<<<<<.



chrX.trna4 (18693101-18693029)  Length: 73 bp
Type: Val   Anticodon: TAC at 34-36 (18693068-18693066) Score: 82.9
HMM Sc=54.70    Sec struct Sc=28.20
         *    |    *    |    *    |    *    |    *    |    *    |    *    |  
Seq: GGTTCCATAGTGTAGTGGTtATCACGTCTGCTTTACACGCAGAAGGtCCTGGGTTCGAGCCCCAGTGGAACCA
Str: >>>>>>>..>>>..........<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.


chrX.trna6 (3833344-3833271)    Length: 74 bp
Type: Ile   Anticodon: GAT at 35-37 (3833310-3833308)   Score: 75.5
HMM Sc=50.20    Sec struct Sc=25.30
         *    |    *    |    *    |    *    |    *    |    *    |    *    |   
Seq: GGCCGGTTAGCTCAGTTGGTaAGAGCGTGGTGCTGATAACACCAAGGtCGCGGGCTCGACTCCCGCACCGGCCA
Str: >>>>>>>..>>>>.........<<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.


chrX.trna8 (3794915-3794842)    Length: 74 bp
Type: Ile   Anticodon: GAT at 35-37 (3794881-3794879)   Score: 75.5
HMM Sc=50.20    Sec struct Sc=25.30
         *    |    *    |    *    |    *    |    *    |    *    |    *    |   
Seq: GGCCGGTTAGCTCAGTTGGTaAGAGCGTGGTGCTGATAACACCAAGGtCGCGGGCTCGACTCCCGCACCGGCCA
Str: >>>>>>>..>>>>.........<<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.



chrX.trna10 (3756491-3756418)   Length: 74 bp
Type: Ile   Anticodon: GAT at 35-37 (3756457-3756455)   Score: 75.5
HMM Sc=50.20    Sec struct Sc=25.30
         *    |    *    |    *    |    *    |    *    |    *    |    *    |   
Seq: GGCCGGTTAGCTCAGTTGGTaAGAGCGTGGTGCTGATAACACCAAGGtCGCGGGCTCGACTCCCGCACCGGCCA
Str: >>>>>>>..>>>>.........<<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.

chr19.trna8 (45981945-45981859) Length: 87 bp
Type: SeC   Anticodon: TCA at 36-38 (45981910-45981908) Score: 146.9
HMM Sc=0.00 Sec struct Sc=0.00
         *    |    *    |    *    |    *    |    *    |    *    |    *    |    *    |    * 
Seq: GCCCGGATGATCCTCAGTGGTCTGGGGTGCAGGCTTCAAACCTGTAGCTGTCTAGCGACAGAGTGGTTCAATTCCACCTTTCGGGCG
Str: >>>>>>>.>..>>>>>>....<<<<<<<<<<<<.......<<<<<<.>>>>>....<<<<<.>>>>.......<<<<<.<<<<<<<.
格伦·杰克曼

鉴于我们可以将起始索引与反密码子一起提取:

len=7
prior=2

while IFS= read  -r line; do
    if [[ $line =~ Anticodon:" "([[:alpha:]]+)" at "([0-9]+) ]]; then
        anticodon=${BASH_REMATCH[1]}
        start=$(( BASH_REMATCH[2] - 1))  # string indexing is zero-based
    elif [[ $line == "Seq: "* ]]; then
        seq=${line#Seq: }
        printf "Seq: %s, Anticodon: %s\n" "${seq:start-prior:len}" "$anticodon"
    fi
done < file

一个更复杂的解决方案,它每次都解析“ Str:”行,但是不将长度硬编码为7(它确实对“ nth”模式进行硬编码):

8thSeq() {
    local seq=$1 str=$2
    local last=${str:0:1}
    local nth=8 n=1 start

    for (( i=1; i < ${#str}; i++)); do
        if [[ "${str:i:1}" != "$last" ]]; then
            ((n++))
            if ((n == nth)); then
                start=$i
            elif ((n == nth+1)); then
                echo "${seq:start:i-start}"
                break
            fi
        fi
        last=${str:i:1}
    done
}

while IFS= read  -r line; do
    if [[ $line =~ Anticodon:" "([[:alpha:]]+) ]]; then
        anticodon=${BASH_REMATCH[1]}
    elif [[ $line == "Seq: "* ]]; then
        seq=${line#Seq: }
    elif [[ $line == "Str: "* ]]; then
        str=${line#Str: }
        printf "Seq: %s, Anticodon: %s\n" "$(8thSeq "$seq" "$str")" "$anticodon"
    fi
done < file

使用“更多”数据,两个解决方案均输出

Seq: CTCACAC, Anticodon: CAC
Seq: CTGAAGA, Anticodon: GAA
Seq: CTGCCAC, Anticodon: GCC
Seq: TTTACAC, Anticodon: TAC
Seq: CTGATAA, Anticodon: GAT
Seq: CTGATAA, Anticodon: GAT
Seq: CTGATAA, Anticodon: GAT
Seq: CTTCAAA, Anticodon: TCA

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OpenCV从多个文件中提取第n个帧

来自分类Dev

从一个文件中提取与另一个文件中的行相对应的数据

来自分类Dev

从列表的子列表中提取第n个元素,并将它们组合到一个新列表中?

来自分类Dev

从列表的列表中提取第 n 个元素

来自分类Dev

在bash循环中从文件中提取第n行

来自分类Dev

在SQL中找到与每个组相对应的第N个值和平均值

来自分类Dev

在SQL中找到与每个组相对应的第N个值和平均值

来自分类Dev

从两个匹配模式之间的文件中提取内容(仅从文件中提取HTML)

来自分类Dev

从文件中提取两个模式之间的线

来自分类Dev

linux:从文件中提取模式

来自分类Dev

在某个序列的第n个和第m个发生之间获取子字符串

来自分类Dev

从变量中提取第 n 列

来自分类Dev

从文件开头删除到第n个模式出现

来自分类Dev

第n个模式匹配的就地文件替换

来自分类Dev

如何从Hadoop序列文件中提取数据?

来自分类Dev

从日志文件中提取具有特定模式的2个日期并比较2个日期

来自分类Dev

在strsplit之后从嵌套列表中提取第n个元素-R

来自分类Dev

从Knockout observableArray对象的第n个索引中提取特定字段

来自分类Dev

我可以从这些数据中提取第 n 个“块”吗?

来自分类Dev

从 Pandas Python 中的命名元组列表中提取第 n 个元素?

来自分类Dev

是否存在一个过滤器函数,当找到与谓词相对应的第n个第一个元素时,该函数会停止

来自分类Dev

从多个CSV文件中提取几种模式

来自分类Dev

从文件中提取一种模式

来自分类Dev

从 .cpp 文件中提取与模式匹配的“if”块

来自分类Dev

仅从fasta文件中提取第一个序列

来自分类Dev

根据序列 ID 从文件中提取 FASTA 序列

来自分类Dev

从文件中提取子字符串

来自分类Dev

正则表达式模式 - 如何从一行中提取 N 个元素?

来自分类Dev

使用unix命令从csv文件中提取第4列

Related 相关文章

  1. 1

    OpenCV从多个文件中提取第n个帧

  2. 2

    从一个文件中提取与另一个文件中的行相对应的数据

  3. 3

    从列表的子列表中提取第n个元素,并将它们组合到一个新列表中?

  4. 4

    从列表的列表中提取第 n 个元素

  5. 5

    在bash循环中从文件中提取第n行

  6. 6

    在SQL中找到与每个组相对应的第N个值和平均值

  7. 7

    在SQL中找到与每个组相对应的第N个值和平均值

  8. 8

    从两个匹配模式之间的文件中提取内容(仅从文件中提取HTML)

  9. 9

    从文件中提取两个模式之间的线

  10. 10

    linux:从文件中提取模式

  11. 11

    在某个序列的第n个和第m个发生之间获取子字符串

  12. 12

    从变量中提取第 n 列

  13. 13

    从文件开头删除到第n个模式出现

  14. 14

    第n个模式匹配的就地文件替换

  15. 15

    如何从Hadoop序列文件中提取数据?

  16. 16

    从日志文件中提取具有特定模式的2个日期并比较2个日期

  17. 17

    在strsplit之后从嵌套列表中提取第n个元素-R

  18. 18

    从Knockout observableArray对象的第n个索引中提取特定字段

  19. 19

    我可以从这些数据中提取第 n 个“块”吗?

  20. 20

    从 Pandas Python 中的命名元组列表中提取第 n 个元素?

  21. 21

    是否存在一个过滤器函数,当找到与谓词相对应的第n个第一个元素时,该函数会停止

  22. 22

    从多个CSV文件中提取几种模式

  23. 23

    从文件中提取一种模式

  24. 24

    从 .cpp 文件中提取与模式匹配的“if”块

  25. 25

    仅从fasta文件中提取第一个序列

  26. 26

    根据序列 ID 从文件中提取 FASTA 序列

  27. 27

    从文件中提取子字符串

  28. 28

    正则表达式模式 - 如何从一行中提取 N 个元素?

  29. 29

    使用unix命令从csv文件中提取第4列

热门标签

归档