标签: bioinformatics

获取匹配的 fasta 文件

list.txt

58759__len__2903
58759__len__2903
673957__len__1655
673957__len__1655
3566454__len__1744
Run Code Online (Sandbox Code Playgroud)

seq.fasta

>58759__len__2903
TTTTCCGTAGAGGAGATCCCTATTTTTAGGTTTGTAAGAGATCATTTT
>67777__len__2978
TTTTTAGGTTTGTAAGACCGTAGAG
>673957__len__1655
CCCTATTTTTAGGTTTGTAAGGTTTGTAAGACCGTAGAG
>3566454__len__1744
GGTTTGTAAGACCGTAGAGGGTTTGTAAGACCGTAGAG
Run Code Online (Sandbox Code Playgroud)

output.fasta

>58759__len__2903
TTTTCCGTAGAGGAGATCCCTATTTTTAGGTTTGTAAGAGATCATTTT
>673957__len__1655
CCCTATTTTTAGGTTTGTAAGGTTTGTAAGACCGTAGAG
>3566454__len__1744
GGTTTGTAAGACCGTAGAGGGTTTGTAAGACCGTAGAG
Run Code Online (Sandbox Code Playgroud)

匹配行list.txt(如果重复行,仅使用唯一行)到seq.fastaFASTA 文件并提取输出文件中所示的文件。

awk bioinformatics

2
推荐指数
1
解决办法
3816
查看次数

从fasta文件中提取子集

我有一个 fasta 文件,它看起来像这样:

>chr1
ACGGTGTAGTCG
>chr2
ACGTGTATAGCT
>chrUn
ACGTGGATATTT
>chr21
ACGTTGATGAAA
>chrX
GTACGGGGGTGG
>chrUn5
TGATAGCTGTTG
Run Code Online (Sandbox Code Playgroud)

我只想提取chr1, chr2, chr21,chrX以及它们的序列。所以我想要的输出是:

>chr1
ACGGTGTAGTCG
>chr2
ACGTGTATAGCT
>chr21
ACGTTGATGAAA
>chrX
GTACGGGGGTGG
Run Code Online (Sandbox Code Playgroud)

如何在 unix 命令行中执行此操作?

awk text-processing bioinformatics

2
推荐指数
1
解决办法
1万
查看次数

提取包含模式的行

我想提取包含以下模式的文件中的所有行:“#1:”和“tree length for”。

输入:

#1: nexus0002_Pseudomonas_10M     

 branch          t       N       S   dN/dS      dN      dS  N*dN  S*dS

   6..5      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   6..7      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2
   7..1      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   7..4      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   6..8      0.000   390.0   195.0  0.0668  0.0000  0.0000   0.0   0.0
   8..2      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2
   8..3      0.013   390.0   195.0  0.0668  0.0008  0.0114   0.3   2.2

tree length …
Run Code Online (Sandbox Code Playgroud)

sed text-processing bioinformatics

2
推荐指数
1
解决办法
8729
查看次数

awk 切字符串

当我运行以下命令时,它会打印整个字符串,例如 Note="Peptidase S59%2C nucleoporin"

awk '$3=="mRNA"'  Nitab-v4.5_gene_models_Chr_Edwards2017.gff | head 
Nt01    maker   mRNA    143295  155540  .   +   .   ID=Nitab4.5_0006317g0010.1;Parent=Nitab4.5_0006317g0010;Name=Nitab4.5_0006317g0010.1;_AED=0.08;_eAED=0.08;_QI=0|0.45|0.25|1|0.90|0.75|12|0|1011;Note="Peptidase S59%2C nucleoporin"
Nt01    maker   mRNA    170633  173860  .   +   .   ID=Nitab4.5_0006317g0020.1;Parent=Nitab4.5_0006317g0020;Name=Nitab4.5_0006317g0020.1;_AED=0.26;_eAED=0.26;_QI=15|0|0|0.83|0.6|0.33|6|0|424;Note="Putative S-adenosyl-L-methionine-dependent methyltransferase"
Nt01    maker   mRNA    156516  160996  .   -   .   ID=Nitab4.5_0006317g0030.1;Parent=Nitab4.5_0006317g0030;Name=Nitab4.5_0006317g0030.1;_AED=0.01;_eAED=0.01;_QI=161|1|1|1|0|0.5|2|358|141;Note="Unknown"
Nt01    maker   mRNA    78554   80638   .   -   .   ID=Nitab4.5_0006317g0040.1;Parent=Nitab4.5_0006317g0040;Name=Nitab4.5_0006317g0040.1;_AED=0.02;_eAED=0.02;_QI=0|0|0|1|1|1|3|0|187;Note="Heavy metal-associated domain%2C HMA"
Nt01    maker   mRNA    111288  129916  .   -   .   ID=Nitab4.5_0006317g0050.1;Parent=Nitab4.5_0006317g0050;Name=Nitab4.5_0006317g0050.1;_AED=0.24;_eAED=0.24;_QI=0|0|0|0.5|1|1|2|0|72;Note="Unknown"
Nt01    maker   mRNA    470560  474346  .   +   .   ID=Nitab4.5_0002367g0010.1;Parent=Nitab4.5_0002367g0010;Name=Nitab4.5_0002367g0010.1;_AED=0.11;_eAED=0.11;_QI=0|0|0|1|1|1|14|0|668;Note="Auxin response factor%2C B3 DNA binding domain%2C DNA-binding pseudobarrel domain%2C AUX/IAA …
Run Code Online (Sandbox Code Playgroud)

awk text-processing bioinformatics

2
推荐指数
2
解决办法
269
查看次数

从文件中提取数据并操作内容以写入新文件

我有一个 csv 文件,我从中提取了与我相关的数据。这些一方面是参考编号,另一方面是字母 G、A、T 和 C 形式的遗传信息。

内容.csv:

1,S188823,188823,,,,ACTCTCGA,,CTGTACCA,ID23,
1,S189843,189843,,,,ACCCTGGA,,CTTGTACA,ID23,
...
Run Code Online (Sandbox Code Playgroud)

与我相关的信息是188823,,,,ACCCTGGA,,CTTGTACA 来自每一行。在此过程中必须删除重复项。前两行也必须被截断。

这就是我目前所做的:

cat File.csv | cut -d "," -f 3,9,7 | uniq | sed -e '1d' -e '2d'
Run Code Online (Sandbox Code Playgroud)

结果如下所示:

188823,ACTCTCGA,CTGTACCA
189843,ACCCTGGA,CTTGTACA
...
Run Code Online (Sandbox Code Playgroud)

但现在有两件事必须做,我没有做到。字段 3 和字段 2 必须交换

188823,CTGTACCA,ACTCTCGA
189843,CTTGTACA,ACCCTGGA
...
Run Code Online (Sandbox Code Playgroud)

现在从 field2 开始,碱基必须“反向互补”。这意味着每个 A 变成 T,每个 C 变成 G,每个 G 变成 C,每个 T 变成 A,序列顺序颠倒。于是,CTGTACCA变成TGGTACAG

最终结果必须如下所示:

188823,TGGTACAG,ACTCTCGA
188823,TGTACAAG,ACCCTGGA
Run Code Online (Sandbox Code Playgroud)

我希望这是可以理解的,你可以帮助我。可以在此处找到有关反向补充构建的一些帮助: revcomp builder online

awk text-processing bioinformatics

2
推荐指数
1
解决办法
191
查看次数

使用 sed 捕获组

我有一个看起来像这样的文件:

chr1    3143567 3143568 .3-2704 1.000000|ENSMUSG00000102693.2
chr1    3143599 3143600 .3-2705 1.000000|ENSMUSG00000102693.2
chr1    3143631 3143632 .3-2706 1.000000|ENSMUSG00000102693.2
chr1    3143663 3143664 .3-2707 1.000000|ENSMUSG00000102693.2
chr1    3143695 3143696 .3-2708 1.000000|ENSMUSG00000102693.2
chr1    3143727 3143728 .3-2709 1.000000|ENSMUSG00000102693.2
Run Code Online (Sandbox Code Playgroud)

我正在编写 2 个 sed 表达式来过滤|第一个表达式之前的所有内容,并且对于结果文件,我会丢弃之后的所有内容,.如下所示:

sed -n -e 's/^.*|//p' original_file.txt > first_result.txt

sed -n -e 's/\..*//p' first_result.txt > final_result.txt

我怎样才能将所有这些写在一行中?

最终目标是捕获ENSMUSG00000102693

sed bioinformatics

2
推荐指数
1
解决办法
1367
查看次数

使用 awk 将新行替换为空格

我有一个由目录中所有文件生成的文本文件。我想使用此文件作为我拥有的脚本的输入,但我需要以特定方式格式化文本文件才能正确解析。

目前,文本文件(文件名列表)的格式如下:

A1_R1.fastq.gz
A1_R2.fastq.gz
A2_R1.fastq.gz
A2_R2.fastq.gz
A3_R1.fastq.gz
A3_R2.fastq.gz
Run Code Online (Sandbox Code Playgroud)

我需要每个样本的配对读取(具有相同名称但不同RN值的文件)位于同一行,并用制表符分隔:

A1_R1.fastq.gz A1_R2.fastq.gz
A2_R1.fastq.gz A2_R2.fastq.gz
A3_R1.fastq.gz A3_R2.fastq.gz
Run Code Online (Sandbox Code Playgroud)

由于我有 >1000 个条目,我希望有一种使用 awk 或类似方法来修改文件的方法,但我对 awk 没有太多经验。

awk text-processing bioinformatics

2
推荐指数
2
解决办法
843
查看次数

清理被除加减号以外的非数字字符污染的基因数据库

我有这个基因数据库,它被额外的非字母数字值完全搞砸了。这是对错误制作的数据进行的一种加密,我不知道如何清理它。我试过sedawk,但失败了。这是大量文档的数据示例:

chr2#@!!~/\/=\^%$74711&&*&127472363@Pos1%%0^^+
chr3#@!!~/\/=\^%$74723&&*&127473530@Pos2%%0^^+
chr1#@!!~/\/=\^%$73530&&*&127474697@Pos3%%0^^+
chr2#@!!~/\/=\^%$17469&&*&127475864@Pos4%%0^^+
chr3#@!!~/\/=\^%$12747&&*&127477031@Neg1%%0^^-
chr5#@!!~/\/=\^%$17477&&*&127478198@Neg2%%0^^-
chr7#@!!~/\/=\^%$74781&&*&127479365@Neg3%%0^^-
chr7#@!!~/\/=\^%$74795&&*&127480532@Pos5%%0^^+
chr1#@!!~/\/=\^%$12748&&*&127481699@Neg4%%0^^-
Run Code Online (Sandbox Code Playgroud)

清洗后的数据必须是这样的:

chr2 74711 127472363 Pos1 0 +
chr3 74723 127473530 Pos2 0 +
chr1 73530 127474697 Pos3 0 +
chr2 17469 127475864 Pos4 0 +
chr3 12747 127477031 Neg1 0 -
chr5 17477 127478198 Neg2 0 -
chr7 74781 127479365 Neg3 0 -
chr7 74795 127480532 Pos5 0 +
chr1 12748 127481699 Neg4 0 -
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

sed awk text-processing bioinformatics

1
推荐指数
2
解决办法
674
查看次数

sed命令的解释

我发现这个有趣的命令:

grep -v '^>' test.fasta | tr -d '\n' | sed -e 's/\(.\)/\1\n/g' | sort | uniq -c | sort -rn
Run Code Online (Sandbox Code Playgroud)

我对它的含义有所了解(它计算文本文件中的字母),但我的问题是这样的:

sed -e 's/\(.\)/\1\n/g'
Run Code Online (Sandbox Code Playgroud)

我知道它由三个替代命令组成。一种是替换换行符(\n),即匹配除换行符(\(.\))之外的任何字符,但我迷失了/\1\

sed bioinformatics

1
推荐指数
2
解决办法
987
查看次数

根据某些标准过滤行

我有一些.vcf文件,我想过滤掉一些变体。这只是我文件的一小部分:文件开头有一些标题行(以 ## 开头),然后是变体(每个变体一行)。

##fileformat=VCFv4.2
##source=combiSV-v2.2
##fileDate=Mon May  8 11:32:53 2023
##contig=<ID=chrM,length=16571>
##contig=<ID=chr1,length=249250621>    
##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the variant described in this record">
##INFO=<ID=SVCALLERS,Number=.,Type=String,Description="SV callers that support this SV">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=DR,Number=1,Type=Integer,Description="# High-quality reference reads">
##FORMAT=<ID=DV,Number=1,Type=Integer,Description="# High-quality variant reads">
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  Sample
1   10862   id.1    N   <INS>   .   PASS    SVTYPE=INS;SVLEN=101;END=10862;SVCALLERS=cutesv,SVIM    GT:DR:DV    1/1:0:26
1   90258   id.2    N   <INS>   .   PASS    SVTYPE=INS;SVLEN=118;END=90258;SVCALLERS=SVIM,NanoSV    GT:DR:DV    1/1:0:9
1   90259   id.3    N   <INS>   .   PASS    SVTYPE=INS;SVLEN=36;END=90259;SVCALLERS=Sniffles    GT:DR:DV    0/1:44:7
1   185824 …
Run Code Online (Sandbox Code Playgroud)

command-line text-processing bioinformatics

1
推荐指数
1
解决办法
82
查看次数

标签 统计

bioinformatics ×10

text-processing ×7

awk ×6

sed ×4

command-line ×1