Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

occs endpoint: ageolder and ageyounger parameters are non-functional #50

Open
jpjenk opened this issue Feb 8, 2018 · 3 comments
Open

Comments

@jpjenk
Copy link
Collaborator

jpjenk commented Feb 8, 2018

  1. One, the other or both have no effect if a taxon is specified

  2. Only returns a random Pinus record with ages=Null if ageolder/ageyounger specified alone with no taxa in order to retrieve all taxa in a bracketed time period.

Both of these functionalities are ELC requirements

@jpjenk
Copy link
Collaborator Author

jpjenk commented Feb 9, 2018

I've written a module for ELC that will resolve geologic ages so any of the following would be possible in the ELC payload:

Specify an age range in the units specified by the ageunits parameter (ma, ka, or yr).
If the order of these are reversed, it figures that out.

age=145,252

Specify a particular named interval.

age=jusassic

Specify a range through named interval
If the order of these are reversed, it figures that out. Everything is case insensitive.

age=jurassic,triassic

Named ages are resolved to year numbers so ultimately all that is passed in the subquery is, in the case of Neotoma, an ageyounger and an ageolder. It would be ideal if Neotoma could then employ at a minimum a 50% overlap time rule (aka major) as diagrammed below. It would be possible to parse this within ELC but performance, especially if a taxon was not provided, would be pretty poor because of the potential subquery response size.

Major time bound rule:

Requested
age range
---------
    |
    |       Occ/Dst age
    |       ---------
    |           |
    |           |
---------       |
                |
            ---------

>50% of record age range within requested age bound so this record is picked

Other time bound rules that would be nice to implement would be the very strict 'contain' rule which specifies that the entire age range of the record must be 100% within the bound and conversely a 'permissive' rule would allow any overlap or bound touch. But we can start with 'major'.

SimonGoring added a commit that referenced this issue Feb 26, 2018
… as indicated in issue #50.  Currently does not use the rule established for ELC given the issues with dating.  Will raise as an issue.
@SimonGoring
Copy link
Contributor

When Neotoma has an age with only age:

ageyounger: null
age: 1020
ageolder: null

Every method is going to be (effectively) contain, right?

@jpjenk
Copy link
Collaborator Author

jpjenk commented Feb 27, 2018

Yes, a point age would be selected only if it falls within a prescribed bound and thus, I believe, would be the very definition of the contain rule. In order to the keep all return objects the same, I return the same value (max_age=age and min_age=age) for both age parameters when it all comes out the other end of ELC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants