提取矩阵中的特定字段

提取矩阵中的特定字段

我正在尝试从.txt文件中提取一些字段以生成另一个表。它是一个矩阵(大小随时间变化),用 ; 分隔(进一步在标题中用 \ 分隔),每个字段可以有 >= 1 个数值,这些数值也对应于标题 ; 位置的字符串。

如果该字段确实包含值,我想复制相同 ; 分隔字段的标题字段并得到如下所示的内容。我尝试逐一处理每个列,但我甚至不知道如何 awk/grep 正确的字段并将其作为新列。

如果您查看原始图片(我为了方便查看而将其作为制表符分隔文件在 Excel 中打开),则每个列标题都包含一个由“ \ ”分隔的非常长的字符串,该字符串代表三种类型的信息:名称 \ HGVSc \ HGVSp。名称始终是每列一个,但 HGVSc \ HGVSp 进一步通过“ ; ”分隔为可变数量的字段,但“;”字段的数量对于沿其行向下的列标题始终相同。

对于每个仅由“;”分隔的“单元格”,它可以具有数字或仅“。”作为空值,并且数字的位置告诉单元格引用的标题中的 HGVSc 和 HGVSp 字段的子位置。

例如,在行 CLAM19_S18 的第一个单元格中,两个数字位于其自身的第 1 和第 2 个位置,分别指的是 HGVSc 和 HGVSp 的第 1 和第 2 个子字符串.... iec646_647insTGCTCCGTGGGC;c.457_458insGG 和 .;p.Val153fs

因此,最终的表格将为每个原始列添加三个新列,包含:基因名称,该列始终相同,但 HGVSc 和 HGVSp 可能不同或为空,具体取决于包含数值的单元格的位置

有人能给我一些建议或方法吗?我是 bash 和 perl 脚本的新手,但欢迎任何评论。谢谢

  • 例子

    \   ACD\c.646_647insTGCTCCGTGGGC;c.457_458insGG\.;p.Val153fs    ANKRD26\c.3270_3271insTTCTAGGCTATTGAGTTTACTTTCAGTTTTAAAT;c.2251_2252delTGinsCA;c.1683+1408_1683+1409insTTGTG;c.741-709G>A\p.Ser1091fs;p.Cys751His;.;.   BCOR\c.1260T>C\p.Asp420Asp  CBL\c.298T>A;c.1223_1227+1delGGCAGG;c.1223G>T;c.1536T>A\p.Ser100Thr;p.Trp408fs;p.Trp408Leu;p.Ser512Arg  
    CLAM10_S10  .;. .;.;.;. .   .;.;.;.  
    CLAM11_S11  .;. .;.;0.102;. .   .;.;.;.  
    CLAM12_S12  .;. .;.;.;. .   .;.;.;.  
    CLAM13_S13  .;. .;.;.;. .   .;.;.;.  
    CLAM14_S14  .;. .;.;.;. .   .;.;.;0.038  
    CLAM15_S15  .;. .;.;.;. .   .;.;.;.  
    CLAM16_S16  .;. .;.;.;. .   .;.;.;.  
    CLAM18_S17  .;. .;.;.;. .   .;.;.;.  
    CLAM19_S18  0.073;0.088 .;.;.;. .   .;.;.;.  
    CLAM1_S1    .;. .;.;.;. .   .;.;.;.  
    CLAM20_S19  .;. .;.;.;. .   .;.;0.233;.  
    CLAM21_S20  .;. .;.;.;. .   .;.;.;.  
    CLAM23_S21  .;. .;.;.;. .   .;.;.;.  
    CLAM24_S22  .;. .;.;.;. .   .;.;.;.  
    CLAM25_S23  .;. .;.;.;. .   .;.;.;.  
    CLAM26_S24  .;. .;.;.;. .   .;.;.;.  
    CLAM27_S1   .;. .;.;.;. .   .;.;.;.  
    CLAM28_S2   .;. .;.;.;. .   .;.;.;.  
    CLAM29_S3   .;. .;.;.;. .   .;.;.;.  
    
  • 所需的制表符分隔结果

    \   ACD ACD_HGVSc   ACD_HGVSp   ACD_VAF ANKRD26 ANKRD26_HGVSc   ANKRD26_HGVSp   ANKRD26_VAF BCOR    BCOR_HGVSc  BCOR_HGVSp  BCOR_VAF    CBL CBL_HGVSc   CBL_HGVSp   CBL_VAF
    CLAM10_S10                                                              
    CLAM11_S11                      c.1683+1408_1683+1409insTTGTG   .   0.102                               
    CLAM12_S12                                                              
    CLAM13_S13                                                              
    CLAM14_S14                                                      c.1536T>A   p.Ser512Arg 0.038
    CLAM15_S15                                                              
    CLAM16_S16                                                              
    CLAM18_S17                                                              
    CLAM19_S18  ACD c.646_647insTGCTCCGTGGGC;c.457_458insGG .;p.Val153fs    0.073;0.088                                             
    CLAM1_S1                                                                
    CLAM20_S19                                                      c.1223G>T   p.Trp408Leu 0.233
    CLAM21_S20                                                              
    CLAM23_S21 
    

原始来源

期望结果

相关内容