BGCの数を計算するために、アンチスマッシュ出力を解析しようとしています。私は私が全く知らないPythonでスクリプトを書く人を見つけました。だから私はこの問題を解決するためにbashスクリプトを使用しようとしました。
予測クラスターを含む遺伝子銀行フォーマットファイルは次のとおりです。
head -30 sca_11_chr8_3_0.region001.gbk
LOCUS sca_11_chr8_3_0 45390 bp DNA linear UNK 01-JAN-1980
DEFINITION sca_11_chr8_3_0.
ACCESSION sca_11_chr8_3_0
VERSION sca_11_chr8_3_0
KEYWORDS .
SOURCE
ORGANISM
.
COMMENT ##antiSMASH-Data-START##
Version :: 6.0.1-a859617(changed)
Run date :: 2021-10-31 18:00:02
NOTE: This is a single cluster extracted from a larger record!
Orig. start :: 169481
Orig. end :: 214871
##antiSMASH-Data-END##
FEATURES Location/Qualifiers
protocluster 1..45390
/aStool="rule-based-clusters"
/contig_edge="False"
/core_location="join{[194767:194871](-),
[194650:194652](-), [191596:194619](-),
[189481:191503](-)}"
/cutoff="20000"
/detection_rule="cds(Condensation and (AMP-binding or
A-OX))"
/neighbourhood="20000"
/product="NRPS"
/protocluster_number="1"
/tool="antismash"
proto_core complement(join(20001..22022,22116..25138,25170..25171,
tailsca_11_chr8_3_0.region001.gbk
44881 ggagcttgtg gagagaagtg agacgtatcg cacgaatgct cttcagcaga tgctgggcag
44941 ttagaggatt tgcactttag tttcatagag ttgatgtgtc gaggagataa tttgagatac
45001 cagtatatgt aatttaccta cctacctagt cgagattgga cattgtacaa gagaaataac
45061 aactaactat acgagacaag cctgatgtgt tgatagtttc attcatgtct ggtgtttgtg
45121 gcatgtttat gttggagtag ctgtacagaa gataccgcgc tattcccagt gatcatggcc
45181 cccacgcctc caactcggca cctgaccttg atcccctttg ggaagcatgt ctcagtgtct
45241 cagccgtgag ccgtagaggc tgcacagcat ggagaagctg tcctgtcaat tcaggggatt
45301 tgcccacggg ggctatcata tgatgaatct cggacaccct acacgttgtt accgcctttc
45361 ttagctcctg ctggtagccg tcccctgaac
//
まず、gbkファイルを1つに連結して予測されたすべてのクラスタを含め、次に軌跡ID、クラスタの開始と終了、クラスタの種類を提供する文字をgrepしました。
cat sca_*.gbk > Necha2_SMclusters.gbk
grep "DEFINITION\|Orig\|product=" Necha2_SMclusters.gbk > Necha2_SMclusters_filtered.txt
これは私に次のファイルを提供します
DEFINITION sca_32_chr11_3_0.
Orig. start :: 381231
Orig. end :: 428233
/product="T1PKS"
/product="T1PKS"
/product="T1PKS"
/product="T1PKS"
DEFINITION sca_32_chr11_3_0.
Orig. start :: 464307
Orig. end :: 486217
/product="terpene"
/product="terpene"
/product="terpene"
/product="terpene"
DEFINITION sca_33_chr6_1_0.
Orig. start :: 140267
Orig. end :: 227928
/product="NRPS-like"
/product="T1PKS"
/product="NRPS-like"
/product="T1PKS"
/product="NRPS-like"
/product="NRPS-like"
/product="NRPS-like"
/product="T1PKS"
/product="T1PKS"
/product="T1PKS"
DEFINITION sca_39_chr11_5_0.
Orig. start :: 270154
Orig. end :: 324310
/product="NRPS"
/product="NRPS"
/product="NRPS"
/product="NRPS"
このファイルから以下のようなファイルを取得したいと思います。
Locus name start end ClusterType
sca_9_chr7_10_0. 369577 421460 T1PKS,NRPS
sca_33_chr6_1_0. 140267 227928 NRPS-like, T1PKS
sca_32_chr11_3_0 381231 428233 T1PKS
これで、予測されたすべてのクラスタを含むファイルが必要です。
とても感謝しています! !
答え1
次の入力例を考えると、次のようになります。
$ cat file1.gbk
DEFINITION sca_32_chr11_3_0.
foo
Orig. start :: 381231
Orig. end :: 428233
/product="T1PKS"
/product="T1PKS"
bar
/product="T1PKS"
/product="T1PKS"
//
stuff
DEFINITION sca_32_chr11_3_0.
Orig. start :: 464307
Orig. end :: 486217
/product="terpene"
nonsense
/product="terpene"
/product="terpene"
/product="terpene"
//
DEFINITION sca_33_chr6_1_0.
Orig. start :: 140267
Orig. end :: 227928
/product="NRPS-like"
/product="T1PKS"
whatever
/product="NRPS-like"
/product="T1PKS"
/product="NRPS-like"
/product="NRPS-like"
/product="NRPS-like"
/product="T1PKS"
/product="T1PKS"
/product="T1PKS"
$ cat file2.gbk
here we go
DEFINITION sca_39_chr11_5_0.
Orig. start :: 270154
more irrelevant text
Orig. end :: 324310
/product="NRPS"
/product="NRPS"
/product="NRPS"
/product="NRPS"
このスクリプトは次のとおりです。
$ cat tst.awk
BEGIN { OFS="\t" }
$1 == "DEFINITION" {
if ( ++cnt == 1 ) {
print "Locus name", "start", "end", "ClusterType"
}
prt()
locus = $2
}
/Orig\. start/ { start = $NF }
/Orig\. end/ { end = $NF }
sub(".*/product=","") { gsub(/"/,""); types[$NF] }
END { prt() }
function prt( ct, type) {
if ( locus != "" ) {
for (type in types) {
ct = (ct=="" ? "" : ct ",") type
}
print locus, start, end, ct
}
delete types
locus = ""
}
次の出力が生成されます。
$ awk -f tst.awk *.gbk
Locus name start end ClusterType
sca_32_chr11_3_0. 381231 428233 T1PKS
sca_32_chr11_3_0. 464307 486217 terpene
sca_33_chr6_1_0. 140267 227928 T1PKS,NRPS-like
sca_39_chr11_5_0. 270154 324310 NRPS