diff --git a/install_obitools.sh b/install_obitools.sh index f96705e..1984ef6 100755 --- a/install_obitools.sh +++ b/install_obitools.sh @@ -68,11 +68,11 @@ if [[ ! -d "${INSTALL_DIR}/bin" ]]; then exit 1 fi -INSTALL_DIR="$(cd $INSTALL_DIR && pwd)" +INSTALL_DIR="$(cd ${INSTALL_DIR} && pwd)" -echo WORK_DIR=$WORK_DIR 1>&2 -echo INSTALL_DIR=$INSTALL_DIR 1>&2 -echo OBITOOLS_PREFIX=$OBITOOLS_PREFIX 1>&2 +echo "WORK_DIR=$WORK_DIR" 1>&2 +echo "INSTALL_DIR=$INSTALL_DIR" 1>&2 +echo "OBITOOLS_PREFIX=$OBITOOLS_PREFIX" 1>&2 pushd "$WORK_DIR"|| exit diff --git a/pkg/obioptions/version.go b/pkg/obioptions/version.go index 9ae19f5..2bc46de 100644 --- a/pkg/obioptions/version.go +++ b/pkg/obioptions/version.go @@ -8,7 +8,7 @@ import ( // corresponds to the last commit, and not the one when the file will be // commited -var _Commit = "fd80249" +var _Commit = "2d52322" var _Version = "Release 4.4.0" // Version returns the version of the obitools package. diff --git a/pkg/obitax/taxon.go b/pkg/obitax/taxon.go index e58ef26..92bf478 100644 --- a/pkg/obitax/taxon.go +++ b/pkg/obitax/taxon.go @@ -27,7 +27,7 @@ type Taxon struct { // Returns: // - A formatted string representing the Taxon in the form "taxonomy_code:taxon_id [scientific_name]". func (taxon *Taxon) String() string { - if taxon == nil { + if taxon == nil || taxon.Node == nil { return "NA" } return taxon.Node.String(taxon.Taxonomy.code) diff --git a/pkg/obitax/taxonslice.go b/pkg/obitax/taxonslice.go index f5a956d..cc897d2 100644 --- a/pkg/obitax/taxonslice.go +++ b/pkg/obitax/taxonslice.go @@ -145,3 +145,18 @@ func (slice *TaxonSlice) Set(index int, taxon *Taxon) *TaxonSlice { return slice } + +func (slice *TaxonSlice) Push(taxon *Taxon) *TaxonSlice { + if slice.taxonomy != taxon.Taxonomy { + log.Panic("Cannot add taxon from a different taxonomy") + } + + slice.slice = append(slice.slice, taxon.Node) + + return slice +} + +func (slice *TaxonSlice) ReduceToSize(size int) *TaxonSlice { + slice.slice = slice.slice[:size] + return slice +} diff --git a/pkg/obitools/obitag/obitag.go b/pkg/obitools/obitag/obitag.go index aee10dd..887fb08 100644 --- a/pkg/obitools/obitag/obitag.go +++ b/pkg/obitools/obitag/obitag.go @@ -249,16 +249,16 @@ func CLIAssignTaxonomy(iterator obiiter.IBioSequence, []*obikmer.Table4mer, len(references)) - taxa := taxo.NewTaxonSlice(references.Len(), references.Len()) + taxa := taxo.NewTaxonSlice(0, references.Len()) buffer := make([]byte, 0, 1000) j := 0 for _, seq := range references { - references[j] = seq - refcounts[j] = obikmer.Count4Mer(seq, &buffer, nil) taxon := seq.Taxon(taxo) - if taxon != nil { - taxa.Set(j, taxon) + if taxon != nil && taxon.Node != nil { + references[j] = seq + refcounts[j] = obikmer.Count4Mer(seq, &buffer, nil) + taxa.Push(taxon) j++ } else { obilog.Warnf("Taxid %s is not described in the taxonomy %s."+ @@ -267,6 +267,7 @@ func CLIAssignTaxonomy(iterator obiiter.IBioSequence, } } + log.Infof("%d reference sequences conserved on %d", j, len(references)) references = references[:j] refcounts = refcounts[:j]