标签: bioinformatics

从字段中提取长度为 n 的数字并返回字符串

我有一个由文本和数字组合而成的制表符分隔文件。我想保留每一行,但我只想保留第 5 列中的六位数字(如果存在)。例如:

gene1   NM_033629   598G>A  P912    syndrome  1, 192315 syndrome 2,  225750 syndrome 3 610448   score   AD  hom user    123456  Source
gene2   NM_000459   613G>A  V115I   syndrome 1 600195   score   AD  rec user    234567  Source
Run Code Online (Sandbox Code Playgroud)

(以 Syndrome # 为例,这可以是任何文本,因此不是我可以搜索和删除的模式)

我希望输出是:

gene1   NM_033629   598G>A  P912    192315 225750 610448    score   AD  hom user    123456  Source
gene2   NM_000459   613G>A  V115I   600195  score   AD  rec user    234567  Source
Run Code Online (Sandbox Code Playgroud)

我有 4 种方法来提取 6 位数字,但是,我不能

一种。输出它起源的行中的数字

湾 使用一个编辑过的字段成功打印整行。我用来提取数字的选项是:

cat inputfile | cut -f 5 |grep -P …
Run Code Online (Sandbox Code Playgroud)

grep text-processing bioinformatics

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

提取与另一个文件中的单词列表匹配的行

我有文件 1,其中包含以下几行:

ATM 1434.972183
BMPR2 10762.78192
BMPR2 10762.78192
BMPR2 1469.14535
BMPR2 1469.14535
BMPR2 1738.479639
BMS1 4907.841667
BMS1 4907.841667
BMS1 880.4532628
BMS1 880.4532628
BMS1P17 1249.75
BMS1P17 1249.75
BMS1P17 1606.821429
BMS1P17 1606.821429
BMS1P17 1666.333333
BMS1P17 1666.333333
BMS1P17 2108.460317
BMS1P17 2108
Run Code Online (Sandbox Code Playgroud)

文件 2 有一个单词列表:

ATM
BMS1
Run Code Online (Sandbox Code Playgroud)

所以,输出将是这样的:

ATM 1434.972183
BMS1 4907.841667
BMS1 4907.841667
BMS1 880.4532628
BMS1 880.4532628
Run Code Online (Sandbox Code Playgroud)

我知道这是一个真正的重复问题,但我尝试了所有类型的grepsedawk,也许它会与你们这个小小的例子的作品,但我有一个非常巨大的文件> 1M lines和所有以前的方式不利于

它返回包含这些单词的部分行,尽管其中还有其他单词file 2与来自的行匹配file 1

grep sed awk bioinformatics

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

Unix 折叠命令行为异常

所以我有这个 fasta(生物学)文件,看起来像这样:

>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCAGAACACCTGGTTTCACGACC
ATAAATAATTTACCAGTGAATCGAGGCTCAATTATAGATCCTCGGACGCGAGTTCTCGGTTGACGAGTGG
GATTCGAATTATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAATTTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCAATGAATTTTAAATAATCATCGGACATACCA
ATTTTTGGAACAATAATGTTCCGAACATCCCGAAAATATAGGAAGAGCCCGGATAGATAAAAATAAACAC
Run Code Online (Sandbox Code Playgroud)

每行最多 70 个字符长。通常,如果我想将其格式化为最多 50 个字符长,我使用:

fold -50 input.fasta > output.fasta # 也试过 -b 和 -w args

但不知何故,这是行不通的。该文件看起来与我见过的许多其他文件完全相同。输出现在看起来像这样:

>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCA
GAACACCTGGTTTCACGACC
ATAAATAATTTACCAGTGAATCGAGGCTCAATTATAGATCCTCGGACGCG
AGTTCTCGGTTGACGAGTGG
GATTCGAATTATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAAT
TTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCAATGAATTTTA
AATAATCATCGGACATACCA
ATTTTTGGAACAATAATGTTCCGAACATCCCGAAAATATAGGAAGAGCCC
Run Code Online (Sandbox Code Playgroud)

它剪切了悬垂的 20 个字符并正确地将它们放置在下面,但是它没有加入下一行并将其剪切到最多 50 个字符上。

我回到了我之前创建的 fasta 文件,fold 命令仍然正常工作。如果我复制新文件的一段并将其传递到另一个文件中,问题仍然存在。

我认为可能存在我不知道的编码问题。任何人都可以帮忙吗?

干杯,

编辑:很好的答案,谢谢!!

bioinformatics fold

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

删除列组织数据文件中包含“_XX”的所有子字段

我有这种类型的文件

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO
chr1    69511   rs2691305       A       G       .       PASS    AC=70482;AN=83312;AF=0.846001;popmax=eas;faf95_popmax=0.975176;AC_non_v2_XX=28734;AN_non_v2_XX=33774;AF_non_v2_XX=0.850773;nhomalt_non_v2_XX=13253;AC_non_cancer_fin_XX=1080;AN_non_cancer_fin_XX=1090;AF_non_cancer_fin_XX=0.990826;nhomalt_non_cancer_fin_XX=537;AC_non_neuro_nfe=32992;AN_non_neuro_nfe=34106;AF_non_neuro_nfe=0.967337;nhomalt_non_neuro_nfe=16243;AC_non_neuro_afr_XY=5275;AN_non_neuro_afr_XY=8862;AF_non_neuro_afr_XY=0.595238;nhomalt_non_neuro_afr_XY=1908;AC_non_neuro_nfe_XY=13529;AN_non_neuro_nfe_XY=13954;AF_non_neuro_nfe_XY=0.969543;nhomalt_non_neuro_nfe_XY=6668;AC_controls_and_biobanks_eas_XY=1209;AN_controls_and_biobanks_eas_XY=1210;AF_controls_and_biobanks_eas_XY=0.999174;nhomalt_controls_and_biobanks_eas_XY=604;AC_non_neuro_sas_XX=623;AN_non_neuro_sas_XX=646;AF_non_neuro_sas_XX=0.964396;nhomalt_non_neuro_sas_XX=304;AC_non_v2=53211;AN_non_v2=62346;AF_non_v2=0.853479;nhomalt_non_v2=24615;AC_non_topmed_nfe_XX=4123;AN_non_topmed_nfe_XX=4274;AF_non_topmed_nfe_XX=0.96467;nhomalt_non_topmed_nfe_XX=2022;AC_non_v2_mid=132;AN_non_v2_mid=146;AF_non_v2_mid=0.90411;nhomalt_non_v2_mid=63;AC_non_topmed_sas=2561;AN_non_topmed_sas=2620;AF_non_topmed_sas=0.977481;nhomalt_non_topmed_sas=1262;AC_non_cancer_eas_XX=1882;AN_non_cancer_eas_XX=1882;AC_nfe=34637;AN_nfe=35806;AF_nfe=0.967352;nhomalt_nfe=17050;AC_popmax=4423;AN_popmax=4424;AF_popmax=0.999774;nhomalt_popmax=2211;faf95_sas=0.945756;faf99_sas=0.93297;faf95_eas=0.975176;faf99_eas=0.965135;faf95_amr=0.876957;faf99_amr=0.869526;faf95_afr=0.586993;faf99_afr=0.583779;faf95=0.840765;faf99=0.838605;faf95_nfe=0.958818;faf99_nfe=0.955301;age_hist_het_bin_freq=123|146|149|217|287|242|200|187|124|72;age_hist_het_n_smaller=460;age_hist_het_n_larger=24;age_hist_hom_bin_freq=569|655|765|1405|2028|1746|1691|1518|1005|654;age_hist_hom_n_smaller=1206;age_hist_hom_n_larger=215;FS=0;MQ=41.6849;MQRankSum=-3.98;QD=26.0414;ReadPosRankSum=0.51;VarDP=1761397;QUALapprox=45869299;AS_FS=0;AS_MQ=41.6847;AS_MQRankSum=-3.972;AS_pab_max=1;AS_QD=26.0413;AS_ReadPosRankSum=0.51;AS_SOR=0.865485;InbreedingCoeff=0.521183;AS_SB_TABLE=99037,96244|856526,709549;AS_VQSLOD=0.4266;AS_culprit=AS_MQRankSum;NEGATIVE_TRAIN_SITE;allele_type=snv;n_alt_alleles=2;variant_type=multi-snv;segdup;gq_hist_alt_bin_freq=0|0|0|0|39|89|5016|5173|2494|4247|3343|1353|2059|1764|858|1286|1197|599|785|7691;gq_hist_all_bin_freq=0|0|0|0|2833|660|5232|5237|2506|4249|3343|1354|2060|1764|859|1287|1197|599|785|7691;dp_hist_alt_bin_freq=0|0|12706|9449|5594|4053|2707|1532|828|486|262|166|89|45|36|12|6|7|2|3;dp_hist_alt_n_larger=10;dp_hist_all_bin_freq=0|0|13838|11344|6042|4209|2735|1535|828|487|262|166|89|45|36|12|6|7|2|3;dp_hist_all_n_smaller=0;dp_hist_all_n_larger=10;ab_hist_alt_bin_freq=0|0|0|0|193|367|513|688|876|676|772|504|439|263|124|56|25|8|0|0;cadd_raw_score=0.112916;cadd_phred=2.209;revel_score=0.053;splice_ai_max_ds=0.02;splice_ai_consequence=donor_gain;primate_ai_score=0.632586;vep=G|missense_variant|MODERATE|OR4F5|ENSG00000186092|Transcript|ENST00000335137|protein_coding|1/1||ENST00000335137.4:c.421A>G|ENSP00000334393.3:p.Thr141Ala|457|421|141|T/A|Aca/Gca|1||1|SNV||HGNC|HGNC:14825|YES||P1|CCDS30547.1|ENSP00000334393|||||tolerated(0.820)|benign(0.000)|Gene3D:1&Pfam:PF13853&PROSITE_profiles:PS50262&Superfamily:SSF81321&Transmembrane_helices:TMhelix&CDD:cd15226|||||||||,G|missense_variant|MODERATE|OR4F5|ENSG00000186092|Transcript|ENST00000641515|protein_coding|3/3||ENST00000641515.2:c.484A>G|ENSP00000493376.2:p.Thr162Ala|544|484|162|T/A|Aca/Gca|1||1|SNV||HGNC|HGNC:14825|||||ENSP00000493376|||||tolerated(0.850)|benign(0.000)|Transmembrane_helices:TMhelix&CDD:cd15226&PANTHER:PTHR26451&PANTHER:PTHR26451&Pfam:PF13853&PROSITE_profiles:PS50262&Gene3D:1&Superfamily:SSF81321|||||||||,G|missense_variant|MODERATE|OR4F5|79501|Transcript|NM_001005484.1|protein_coding|1/1||NM_001005484.1:c.421A>G|NP_001005484.1:p.Thr141Ala|421|421|141|T/A|Aca/Gca|1||1|SNV||EntrezGene|HGNC:14825|YES||||NP_001005484.1|||||tolerated(0.820)|benign(0.000)||||||||||
Run Code Online (Sandbox Code Playgroud)

并且_XX应删除分号之间包含的所有字符串,以便从

AF_controls_and_biobanks_eas_XY=0.999174;nhomalt_controls_and_biobanks_eas_XY=604;AC_non_neuro_sas_XX=623;AN_non_neuro_sas_XX=646;
Run Code Online (Sandbox Code Playgroud)

只要

AF_controls_and_biobanks_eas_XY=0.999174;nhomalt_controls_and_biobanks_eas_XY=604;
Run Code Online (Sandbox Code Playgroud)

停留。

我尝试使用sed,但没有成功:

s/[^ ]*_XX[^ ]*//ig

sed -e 's/[^ ]*_XX[^ ]*//ig'

sed '/^_XX/s//'
   
sed 's/*XX//' 

sed 's/^[0-9]*_XX|//'

sed 's/;.*_XX//'
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,以挽救我的生命。

谢谢!

sed text-processing bioinformatics

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

awk 将一个文件分割成多个文件,并在另一个索引文件中指定名称

我有一个集群 fasta 文件(称为 file),如下所示:

>1AB2
>1AB2 AA
NWWIEUNJRNIBGOWNGIOWGRBIGBRGRIOWGI
NCIDHFR8EHGBVPIWOBGIGRI
>1AB3 AA
WNIOREHUEBRGOUERGHBERGIORBGREUGEGO
NWFWRUBGREOUEREOBRIOBNERIOBN
>1SC4 AA
WNIOREHUEBRGOUERGHBERGIORBGREUGEGO
NWFWRUBGREOUEREOBRIOBNERIOBN
>2CD5 AA
WNIOREHUEBRGOUERGHBERGIORBGREUGEGO
NWFWRUBGREOUEREOBRIOBNERIOBN
>2AC6
>2AC6 AA
NFIGEURHGEIROHEGHTUTJGENLJBBEOWRIU
NFIROUHBOERVERUGBERUOVREOIBROEBVUE
NVHIRE
>2ONM AA
BUCIEHBUORBREOBWQVURVELLAJFLHIEBGR
NHEIBVEURIGBVNRIHEOEAJVSJDNHVUGBVR
NEBIBVVBRU
>2POD AA
BUFEWIBOEUWBWOREBRIUBGUERIGBVOSRIP
BUEIBVEO
>7KZL
>7KZL AA
BUIREBVAUREVBREOIRGPNJBFDVERUBVROR
>6GH3
>6GH3 AA
NBVUIREVOIAWRHRUGRTYUVDNJKDFHUGSEI
FHUIERBLUUIREB
>6GH4 AA
BDFUIGEVUERERHOBERIHBSDLKFJBNIERIH
NFHILRUGAURHG
Run Code Online (Sandbox Code Playgroud)

该文件有 4 组:1AB2, 2AC6, 7KZL, and 6GH3. >1AB2第一个和第一个期间的内容>2AC6属于该簇1AB2>2AC6第一个和第一个期间的内容>7KZL属于该簇2AC6

我想在第二个文件中将文件分成 4 个文件,>XXXX并在此索引文件(ind.txt)中使用特定名称:

HG001 1AB2
HG010 2AC6
HG023 …
Run Code Online (Sandbox Code Playgroud)

awk text-processing bioinformatics

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

使用 awk/sed 从特定字段中删除字符串

我有一个看起来像这样的文件(> 80,000 行):

chr1    GTF2GFF chromosome  1   249213345   .   .   .   ID=chr1;Name=chr1
chr1    GTF2GFF gene    11874   14408   .   +   .   ID=DDX11L1;Note=unknown;Name=DDX11L1
chr1    GTF2GFF exon    11874   12227   .   +   .   Parent=NR_046018_1
chr1    GTF2GFF exon    12613   12721   .   +   .   Parent=NR_046018_1
chr1    GTF2GFF exon    13221   14408   .   +   .   Parent=NR_046018_1
chr1    GTF2GFF gene    14362   29370   .   -   .   ID=WASH7P;Note=unknown;Name=WASH7P
chr1    GTF2GFF exon    14362   14829   .   -   .   Parent=NR_024540
chr1    GTF2GFF exon    14970   15038   .   -   .   Parent=NR_024540
chr1    GTF2GFF exon    15796   15947 …
Run Code Online (Sandbox Code Playgroud)

sed awk regular-expression bioinformatics

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

使用grep在一次通过中计算多个模式?

我已经编写了一个 grep 循环来迭代计算包含 DNA 序列的 gzip 压缩 DNA fasta 文件中的 DNA 三核苷酸,例如

declare -a tri=(AAA AAC AAG AAT CAA .. etc)

for i in ${tri[@]}
do
   gzip -cd gencode.v18.pc_transcripts.fa.gz | grep -v "^>" | grep -o $i | wc -l
done
Run Code Online (Sandbox Code Playgroud)

fasta 文件采用这种格式的位置(虽然要大得多)

head test.fa
>id1
TTTTTAAAAA
>id2
GGGGGCCCCC
etc..
Run Code Online (Sandbox Code Playgroud)

虽然这有效(即计算每个三核苷酸的出现次数),但在我看来效率很低,因为它必须通过数据 64 次(每个可能的三核苷酸一次)。

我的问题是如何使用bash或者grep有没有一种方法可以在一次通过文件时计算每个三核苷酸(因为文件非常大)?

谢谢

grep bash shell-script text-processing bioinformatics

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

替换两个字符之间的模式

Staphylococcus_sp_HMSC14C01-KV792037.1:0.00371647154267842634,Staphylococcus_hominis_VCU122-AHLD01000058.1:0.00124439639436691308)69:0.00227646100249620856,(Staphylococcus_sp_HMSC072E01-KV814990.1:0.00288325234399461859,(((Staphylococcus_hominis_793_SHAE-JUSR01000051.1:0.00594391769091206796,Staphylococcus_pettenkoferi_1286_SHAE-JVVL01000037.1:0.00594050248317441135)
Run Code Online (Sandbox Code Playgroud)

逗号分隔不同的项目,在每个项目中,我想删除之间-:包括-但保留的所有内容:

我怎样才能做到这一点?所以它应该看起来像:

Staphylococcus_sp_HMSC14C01:0.00371647154267842634,Staphylococcus_hominis_VCU122:0.00124439639436691308)69:0.00227646100249620856
Run Code Online (Sandbox Code Playgroud)

我使用sed 's/-.*://' 1.file > 2.file但最终删除了整个文件,只保留了第一个和最后一个值。

sed text-processing bioinformatics

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

AWK 替换不以“>”开头的行的字符

我正在处理序列数据,但我愚蠢地找不到使用 awk 将不以“ ”开头的行中.的“ X”替换为“ ”的正确方法>。我真的需要使用 awk 而不是 sed。

我已经到了这一步,但只是所有的“。” 以这种方式替换:

awk '/^>/ {next} {gsub(/\./,"X")}1' Sfr.pep > Sfr2.pep
Run Code Online (Sandbox Code Playgroud)

示例子数据:

>sequence.1
GTCAGTCAGTCA.GTCAGTCA
Run Code Online (Sandbox Code Playgroud)

我想得到的结果:

>sequence.1
GTCAGTCAGTCAXGTCAGTCA
Run Code Online (Sandbox Code Playgroud)

awk text-processing bioinformatics

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

如何将csv文件中除“0”和前两个字段之外的所有文本转换为1?

我有几个大的 .csv 文件,我想将它们转换为二进制(1 和 0)格式。其中,除前两个字段外,所有包含文本的单元格都将变为 1,0 将保持为 0。

head Test.csv
Iss1,1,0,0,Hsapiens-I34,0,0,0,Mmusculus-H01,0,0
Iss1,11,0,Scerevisiae-U09,Hsapiens-I05,0,0,0,0,0,0
Iss1,21,0,0,Hsapiens-I05,0,0,0,Hsapiens-I31,0,0
Iss1,31,0,0,Mmusculus-H13,0,0,0,0,0,Hsapiens-I31
Iss1,41,0,Scerevisiae-U09,0,0,0,0,0,0,Hsapiens-I21
Iss1,51,0,0,0,0,0,0,Scerevisiae-U25,0,Hsapiens-I21
Iss1,61,0,0,Hsapiens-I34,0,0,0,Mmusculus-H13,0,0
Run Code Online (Sandbox Code Playgroud)

预期结果是

head Test.csv
Iss1,1,0,0,1,0,0,0,1,0,0
Iss1,11,0,1,1,0,0,0,0,0,0
Iss1,21,0,0,1,0,0,0,1,0,0
Iss1,31,0,0,1,0,0,0,0,0,1
Iss1,41,0,1,0,0,0,0,0,0,1
Iss1,51,0,0,0,0,0,0,1,0,1
Iss1,61,0,0,1,0,0,0,1,0,0
Run Code Online (Sandbox Code Playgroud)

其中文件中的所有文本都转换为 1。

如果有人能给我一些关于如何克服这个问题的建议,我将不胜感激。

谢谢

command-line awk text-processing bioinformatics

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