Add more error checks on taxonomy reading

Former-commit-id: 30c848d8e61214afcc7d92f0d3a3f5a1474fc720
This commit is contained in:
2023-12-14 08:09:06 +01:00
parent 2caaa62485
commit b9a7961c91
3 changed files with 25 additions and 3 deletions

View File

@ -22,9 +22,22 @@ func loadNodeTable(reader io.Reader, taxonomy *obitax.Taxonomy) {
file.TrimLeadingSpace = true file.TrimLeadingSpace = true
file.ReuseRecord = true file.ReuseRecord = true
n := 0
for record, err := file.Read(); err == nil; record, err = file.Read() { for record, err := file.Read(); err == nil; record, err = file.Read() {
taxid, _ := strconv.Atoi(strings.TrimSpace(record[0])) n++
parent, _ := strconv.Atoi(strings.TrimSpace(record[1])) taxid, err := strconv.Atoi(strings.TrimSpace(record[0]))
if err != nil {
log.Panicf("Cannot read taxid at line %d: %v", n, err)
}
parent, err := strconv.Atoi(strings.TrimSpace(record[1]))
if err != nil {
log.Panicf("Cannot read parent taxid at line %d: %v", n, err)
}
rank := strings.TrimSpace(record[2]) rank := strings.TrimSpace(record[2])
taxonomy.AddNewTaxa(taxid, parent, rank, true, true) taxonomy.AddNewTaxa(taxid, parent, rank, true, true)

View File

@ -11,6 +11,14 @@ import (
) )
func (t1 *TaxNode) LCA(t2 *TaxNode) (*TaxNode, error) { func (t1 *TaxNode) LCA(t2 *TaxNode) (*TaxNode, error) {
if t1 == nil {
log.Fatalf("Try to get LCA of nil taxon")
}
if t2 == nil {
log.Fatalf("Try to get LCA of nil taxon")
}
p1, err1 := t1.Path() p1, err1 := t1.Path()
if err1 != nil { if err1 != nil {

View File

@ -118,7 +118,8 @@ func IndexSequence(seqidx int,
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nfastok) log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nfastok)
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nali) log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nali)
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nok) log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nok)
*/return obitag_index */
return obitag_index
} }
func IndexReferenceDB(iterator obiiter.IBioSequence) obiiter.IBioSequence { func IndexReferenceDB(iterator obiiter.IBioSequence) obiiter.IBioSequence {