Giter VIP home page Giter VIP logo

gbif.jl's People

Contributors

gabrieldansereau avatar github-actions[bot] avatar michielstock avatar mkborregaard avatar rafaqz avatar tpoisot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gbif.jl's Issues

Paging after applying filters causes a bug in the number of records

When calling qualitycontrol! followed by next!, the actual number of records is not counted correctly, which results in the wrong occurrences being returned. As the filters are not part of the GBIFRecords object (but this may be an improvement for a future version), the solution is most likely to call showall! when next! is called.

The dictionary when filtering occurrences must be typed `{Any,Any}`

Because the paging system uses Int for the number of pages, offset, etc., the Dict containing the query must be typed appropriately. One solution would be to use Pairs (as in mangal filtering), which can also be passed using ... (and this would remove two methods for `occurrences at the cost of breaking the current code (but I can probably still use the dict and give a deprecation warning).

Occurrences get slower for large queries

Paging through occurrences is done with push operations, and this gets progressively slower over time - need to benchmark how much.

The need to push can be removed through the pre-allocation of the arrays as we know the number of occurrences we will retrieve.

Query.jl

See if it is possible to use Query to filter occurrences.

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

Day of month out of range

Apparently GBIF does not validate the dates, so sometimes the date can have a day as 31 in a month with 30 days. This is an easy fix, the function to parse the date needs to be wrapped in a try/catch block, and return missing is the date is F'ed up.

Tests for filtering sometimes fail

My best guess as to why is: sometimes the most recent observations have no issues, and so the tests (which is testing the fact that the length before/after changes) are failing. This can be solved by putting a function which will remove some records e.g. at random, like f(g::GBIFRecord) = rand() < 0.5.

working on 1.0?

Hi, is this package not 1.0 compliant? If not, what would it take to make it? I'd really like to use this.

Use Base julia semantics

size and view currently don't use base semantics. Single-arg size(x) usually returns a Tuple, and view(x) normally returns a zero dimensional SubArray.

It might make sense if values added with occurances! are appended to an existing array that would start with zero length, so that none of these things are even needed. Then GBIFRecords <: AbstractVector would makes sense too, and all of these methods would have the normal semantics. length would just be the length of the parent Array.

@mkborregaard that also means usingcollect to get all the records might not make sense? as it should return an Array but we actually still want a GBIFRecords object, and if it collected all the records, it also ends up longer than what length returns for the GBIFRecords - which is also kind of confusing for how collect usually works.

I feel like this is more like reading a stream to an array, so it's possible we could use e.g. read!(oc) to mean read the whole stream?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.