如何使用带有awk语句的fasta头提取两种类型的序列

时间:2018-03-07 00:34:02

标签: awk

我一直在运行一个名为genewise的程序,将核苷酸序列翻译成基因的蛋白质序列。输入包括来自许多样品的组装的核苷酸序列。为了解析genewise输出,我一直在使用以下命令选择fasta标题:

do
 err.clear
 Set xclwbk = xclApp.Workbooks.Item(SAP_Workbook)
 If Err.Number = 0 Then exit do
 wscript.sleep 2000
loop

我被要求对每个基因重新运行,以便输出包括翻译的蛋白质序列和所有样品的cDNA序列。我无法创建两个awk语句来解析输出。

对于基因的基因输出中的每个样品,蛋白质fasta标题末端具有.sp.tr,核苷酸末端具有.sp,可以区分两种类型的序列。

以下是其中一个序列的示例。

for i in `ls`; do (cd "$i" && awk '/^>*/{flag=1;} /\/\// {flag=0}flag' out_genewise > out_genewise_prot.fa);done

我尝试了下面的命令来解析数据,但没有创建任何文件。有人可以帮我修理命令吗?

 >303.1_assembled_PF3D7_1477500.[1:1643].sp.tr
 MNLRLSNYSLFQNILDKTNKSNCIYSTHSSYEEYHDEKVRTGSFFYSKKFRRYMLPIMGI
 LYIIILNLLHLKGILSTEVQRSYTFSRNLSDNEKEKEKEKENKEFYKCYKKKGIKKLTIE
 EEDLYPRHPGLYNSYYDYERPYLLTPEMLEYIEKAVEENVEKEVERRAIESFENRMLKQF
 VDEIRDKRLRKGTI
 //
 >303.1_assembled_PF3D7_1477500.[1:1643].sp
 ATGAATTTAAGGCTATCAAACTATAGTTTGTTTCAAAATATTCTTGATAAAACGAATAAA
 TCGAATTGTATTTATTCTACACACAGTTCTTACGAAGAATATCATGATGAAAAAGTAAGA
 GAAAAAGAAGTTGAAAGGAGAGCTATAGAATCATTTGAAAATAGAATGCTAAAACAGTTT
 GTAGATGAAATAAGAGATAAAAGATTAAGAAAAGGTACCATT
 //

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你的正则表达式没有正确设置,这应该在一次传递中工作以创建两个文件

$ awk '/^>.*sp\.tr$/ {suf="prot"} 
       /^>.*sp$/     {suf="nt"} 
       /\/\//        {suf=""} 
       suf           {print > FILENAME"_"suf".na"}' file

.表示任何char *表示0次或更多次。 /^>*.sp/将匹配“> xsp”或“xsp”但不匹配“> xxsp”,其中x是任何字符(除了>)