Make changes to better detect pseudo genes frameshited and annotate them
correctly Former-commit-id: d827908d63149941538e686b48f60a132173cb80 Former-commit-id: 2841c75b415c6c8fa35a6a90e23cf82c3c84408b
This commit is contained in:
@ -150,7 +150,8 @@ endif
|
|||||||
#
|
#
|
||||||
|
|
||||||
Notify " running exonerate of $GenoName on $ProtName"
|
Notify " running exonerate of $GenoName on $ProtName"
|
||||||
exonerate --model protein2genome \
|
exonerate \
|
||||||
|
--model protein2genome \
|
||||||
--percent $PASS1_PERCENT \
|
--percent $PASS1_PERCENT \
|
||||||
--showalignment TRUE \
|
--showalignment TRUE \
|
||||||
--showvulgar TRUE \
|
--showvulgar TRUE \
|
||||||
@ -163,6 +164,10 @@ exonerate --model protein2genome \
|
|||||||
--proteinsubmat $PASS1_SUBMAT \
|
--proteinsubmat $PASS1_SUBMAT \
|
||||||
--splice3 $SPLICE3MODEL \
|
--splice3 $SPLICE3MODEL \
|
||||||
--splice5 $SPLICE5MODEL \
|
--splice5 $SPLICE5MODEL \
|
||||||
|
--refine region \
|
||||||
|
--refineboundary 5000 \
|
||||||
|
--singlepass FALSE \
|
||||||
|
--dpmemory 128 \
|
||||||
$DbFile $GenoFile > $base.exo.raw
|
$DbFile $GenoFile > $base.exo.raw
|
||||||
CheckAbort 20 "exonerate failure"
|
CheckAbort 20 "exonerate failure"
|
||||||
|
|
||||||
|
@ -105,12 +105,39 @@ function Unk(s) {
|
|||||||
Exon[Nexon]["from"] = $3
|
Exon[Nexon]["from"] = $3
|
||||||
Exon[Nexon]["to"] = $4
|
Exon[Nexon]["to"] = $4
|
||||||
Exon[Nexon]["strand"] = $6
|
Exon[Nexon]["strand"] = $6
|
||||||
Exon[Nexon]["indels"] = $9 "+" $12
|
|
||||||
modif = $15; gsub("\"", "", modif)
|
match($0, / insertions +([0-9]+) +/, arr)
|
||||||
|
if (arr[1])
|
||||||
|
insertions=arr[1]
|
||||||
|
else
|
||||||
|
insertions=0
|
||||||
|
|
||||||
|
match($0, / insertions +([0-9]+) +/, arr)
|
||||||
|
if (arr[1])
|
||||||
|
deletions=arr[1]
|
||||||
|
else
|
||||||
|
deletions=0
|
||||||
|
|
||||||
|
Exon[Nexon]["indels"] = insertions "+" $deletions
|
||||||
|
|
||||||
|
match($0, / modifier +"([^"]*)"/, arr)
|
||||||
|
if (arr[1])
|
||||||
|
modif=substr(arr[1],1,1)
|
||||||
|
else
|
||||||
|
modif=""
|
||||||
|
if (modif == "=")
|
||||||
|
modif=""
|
||||||
|
|
||||||
Exon[Nexon]["modif"] = modif
|
Exon[Nexon]["modif"] = modif
|
||||||
|
|
||||||
if ( $0 ~ /frameshifts +[0-9]+/)
|
match($0, / frameshifts +([-0-9]+)/, arr)
|
||||||
FrameShift=1
|
if (arr[1]) {
|
||||||
|
FrameShift=FrameShift+1
|
||||||
|
Exon[Nexon]["frameshift"] = arr[1]
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Exon[Nexon]["frameshift"] = 0
|
||||||
|
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,8 +171,13 @@ function Unk(s) {
|
|||||||
SQualifier("transl_table", 11)
|
SQualifier("transl_table", 11)
|
||||||
QQualifier("gene", gname)
|
QQualifier("gene", gname)
|
||||||
QQualifier("locus_tag", locus)
|
QQualifier("locus_tag", locus)
|
||||||
if (FrameShift)
|
if (FrameShift) {
|
||||||
QQualifier("pseudogene","unknown")
|
QQualifier("pseudogene","unknown")
|
||||||
|
if (FrameShift > 1)
|
||||||
|
QQualifier("note","nonfunctional due to frameshifts in "FrameShift" exons")
|
||||||
|
else
|
||||||
|
QQualifier("note","nonfunctional due to a frameshift")
|
||||||
|
}
|
||||||
QQualifier("product", Product)
|
QQualifier("product", Product)
|
||||||
QQualifier("inference", "similar to DNA sequence:" Simil)
|
QQualifier("inference", "similar to DNA sequence:" Simil)
|
||||||
QQualifier("inference", "org.annot -- detect pass:" PassType ":" PassInfo)
|
QQualifier("inference", "org.annot -- detect pass:" PassType ":" PassInfo)
|
||||||
@ -157,6 +189,15 @@ function Unk(s) {
|
|||||||
Feature("exon", ExonLocation(i))
|
Feature("exon", ExonLocation(i))
|
||||||
QQualifier("gene", gname)
|
QQualifier("gene", gname)
|
||||||
QQualifier("locus_tag", locus)
|
QQualifier("locus_tag", locus)
|
||||||
|
|
||||||
|
if (Exon[i]["frameshift"]) {
|
||||||
|
QQualifier("pseudogene","unknown")
|
||||||
|
if (Exon[i]["frameshift"] > 0)
|
||||||
|
QQualifier("note","frameshifted by insertion of " Exon[i]["frameshift"] " bp")
|
||||||
|
else
|
||||||
|
QQualifier("note","frameshifted by deletion of " -Exon[i]["frameshift"] " bp")
|
||||||
|
}
|
||||||
|
|
||||||
SQualifier("number", Exon[1]["strand"] == "+" ? i : Nexon-i+1)
|
SQualifier("number", Exon[1]["strand"] == "+" ? i : Nexon-i+1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user