diff --git a/pkg/obiformats/ncbitaxdump/read.go b/pkg/obiformats/ncbitaxdump/read.go index 0df57d2..2e9d5a7 100644 --- a/pkg/obiformats/ncbitaxdump/read.go +++ b/pkg/obiformats/ncbitaxdump/read.go @@ -22,9 +22,22 @@ func loadNodeTable(reader io.Reader, taxonomy *obitax.Taxonomy) { file.TrimLeadingSpace = true file.ReuseRecord = true + n := 0 + for record, err := file.Read(); err == nil; record, err = file.Read() { - taxid, _ := strconv.Atoi(strings.TrimSpace(record[0])) - parent, _ := strconv.Atoi(strings.TrimSpace(record[1])) + n++ + 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]) taxonomy.AddNewTaxa(taxid, parent, rank, true, true) diff --git a/pkg/obitax/lca.go b/pkg/obitax/lca.go index f7439e9..7060203 100644 --- a/pkg/obitax/lca.go +++ b/pkg/obitax/lca.go @@ -11,6 +11,14 @@ import ( ) 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() if err1 != nil { diff --git a/pkg/obitools/obirefidx/obirefidx.go b/pkg/obitools/obirefidx/obirefidx.go index 64e1541..2f897b6 100644 --- a/pkg/obitools/obirefidx/obirefidx.go +++ b/pkg/obitools/obirefidx/obirefidx.go @@ -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(), nali) log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nok) - */return obitag_index + */ + return obitag_index } func IndexReferenceDB(iterator obiiter.IBioSequence) obiiter.IBioSequence {