sckott / pytaxize

python port of taxize (taxonomy toolbelt) for R
https://sckott.github.io/pytaxize/
MIT License
34 stars 13 forks source link

Ids class design #59

Open sckott opened 4 years ago

sckott commented 4 years ago

moving discussion from email... ping @Daniel-Davies

I'm open to changing how the Ids class is designed. Since taxonomic ids are the input to the higher level tasks (e.g., #53 #52 ) I wonder if there's any way to architect Ids to be used in other classes/methods within the package, e.g., (using current configuration)

x = Ids("name")
x.itis()
# then use to get taxonomic classification
Classification(x) 
# or maybe Ids has a classification method that internally uses the Classification class?
x.classification()

I don't know which of the above is more pythonic. OR should it even work that way at all. That is, maybe Ids does not interact with other methods/classes, and methods/classes that take in taxonomic ids simply require user to pass in an ID or list of IDs (see also #58)

As for how Ids is structured, I'm okay with moving to a functional approach where the call to get data from a remote source returns the data rather than storing in the class. I do prefer to keep the names terse, so i'd prefer .itis over .get_itis_ids given that they're methods on a class so there's no conflict with other methods/etc as there could be in R, so something like

Ids.itis("Panthera tigris")
Ids.ncbi("Panthera tigris")
Ids.gbif("Panthera tigris")