Create a version of the Year in Review for a project

Platform(s): Website

Description of need:
I have decided to start manually tracking a handful of yearly stats in a project that I’ve founded. I would love to see iNat implement a convenient yearly summary of a project’s progress, similar to the Year in Review for users. It could have stats like total observations added, new species observed, new users joined, etc over the course of the last year.

Feature request details:
This could have stats like total observations added, new species observed, new users joined, etc over the course of the last year with charts and graphs displaying these statistics.

I approved this becuase I think it would be cool, but I wanted to say that year in review is something we only work on for part of the year and it already takes up a good amount of time, as well as processing power and infrastructure. The odds are that implementing it for projects as is likely not in the offing anytime soon, so I wanted to temper expectations.

4 Likes

Fair enough :) Thanks for letting me know!

1 Like

Maybe to save processing power on this, there could be an opt-in to year-in-review statistics when creating a project? I have some projects where it would be fun to see this information, but others where it wouldn’t be that interesting.

4 Likes

The old type projects had some basic stats. Why cant newer collection and umbrella have something similar as an opt-in ?

There’s this old stats slideshow link, you can edit the URL to make it work for any project: https://www.inaturalist.org/projects/birds-underwater/stats_slideshow

I’m not sure when that feature was created, I got the link from someone else once. It’s slow and has some formatting weirdness but still captures a lot of the things you get in the Year in Review.

3 Likes

I have done a “year in review” type report for one project for a wildlife refuge for several years. You’d think this might be a simple process, but it’s fraught. “Number of observations” is more or less frozen in time each year, so a year-to-year comparison for that should be valid (some people do add observations for previous years, but that’s not common). But “Number of Species” or “Number of New Species” or “Number of RG Observations” all are changing through time, even for past years, based on the ID process (not to mention taxon revisions). At the very least, if you are interested in this type of statistic, you need to have a concerted effort to review observations and get as many as possible ID’d and RG’d before taking the snapshot for comparison, so an automatic tally made on January 1 for the previous year is going to be pretty sloppy. Just things to keep in mind if you use this approach.

3 Likes

Yes, I want to agree with the above comment. I maintain species lists for various properties. I keep a spreadsheet that is a compilation of what I’ve personally observed on the property supplemented by adding in new species from an iNaturalist project. Keeping the spreadsheet up to date is a surprising amount of work, because species IDs do change over time & if an observation’s ID changes you not only have to add in the new species, but also remember to remove the old species if necessary.

I have found that filtering by High Rank = genus makes things easier (by eliminating all the observations that are at a high level). Still it’s a lot and trying to keep track and make year over year comparisons would add another level of complexity to the whole process. The project curator’s engagement (e.g. persistence in trying to get observations IDed) will matter a lot and isn’t necessarily constant over time.

I was just wondering about this because I would quite like to see a graph of the number of IDs across the year for the UK Hoverflies project to answer a query from the national recording scheme. We have similar data for ourselves on the Year in review. Does anyone know how to get a graph of ‘No. of IDs each week added to UK hoverflies’ for 2023, or something similar? Hope it’s ok to tag you @pisum - I feel like you’re one of the most likely people to know if there’s a way.

1 Like

iNat’s API doesn’t have a way to return aggregated data for identifications (whereas you can return summarized counts of observations for various sets of time periods), but you can build your own set of data by getting total counts for each period of time that you’re interested in.

the range of filter parameters available for identifications is different from what is available for observations (for example, you can’t filter for identifications by project_id), but it is still possible to get the data for UK Hoverflies because that project has relatively simple filter criteria, using only ones that are also available as filter parameters for identifications.

so just as an example, to get the count of IDs for the first 7 days in 2023 (based on GMT / UTC), you can GET the total_count from the following API request URL: https://api.inaturalist.org/v1/identifications?&per_page=0&taxon_id=49995&place_id=6857&quality_grade=needs_id,research&d1=2023-01-01T00:00:00&d2=2023-01-07T23:59:59. for each of the remaining 7-day periods in the year, you could use a similar request, substituting the d1 (date from) and d2 (date to) parameter values.

just as a sanity check, here’s a page that will show you the observations in your project by week (where the start of each week is defined as Monday UTC): https://jumear.github.io/stirfry/iNatAPIv1_observation_histogram?project_id=uk-hoverflies-syrphidae&interval=week&d1=2023-01-01&d2=2023-12-31T23:59:59. you can compare the counts for observations vs the counts for identifications each period to make sure the scale and trend are similar.

4 Likes

That is very, very helpful! I shall have fun with this. Thanks for your time. I need to figure out using the API more generally really, so I shall have to use this as a starting point and study your API tutorial a bit more!

1 Like


Thanks again @pisum - this was what I was hoping to create, and it shows what I had hoped it would. The national recording scheme had noticed that the pattern of iNat records coming through to them (i.e. when made RG) this year was strange. This graph matches perfectly the pattern of records coming through to them. Since they are not iNat users I try to make sure they get a window onto how iNat works in practice. We kicked off the hoverfly project in July (green dot), so I think this demonstrates that the pattern is due to an increase in identifier activity due to the project rather than any change in observer behaviour (which shows a typical bell shaped curve).

This is really timely for me too, because I consulted the recording scheme before starting the project, and I’m just in the process of preparing a little report on how things are going. Some impacts are easy to assess, but I was quite flummoxed about how to assess the project’s impact on identifications… but now I know!

Thanks again.

8 Likes

Quick question… does this return all IDs (including the one uploaded) or just IDs by others?

assuming you’re talking about /v1/identifications, it returns all current (not withdrawn) observations by default. if you want just those identified by others, you can use the own_observation=false parameter. if you want to get withdrawn observations, too, you can use the current=any parameter.

Great, I suspected that. Thank you!

@pisum I wonder if could trouble you slightly more on this… Is there a way to show how many identifications have been added to observations created in a certain time frame? For example, It would be useful to see for each month how many identifications were added to the observations that were created that month, or how many identifications were added to older observations. I tried using the created_d1 etc but that didn’t seem to do anything.

I’m trying to understand how the size of our needs ID pile responds to the number of observations vs. IDs in a given time period.

i don’t think it is possible to filter directly for this on the server. you’d probably have to filter to for observations created during a certain time frame and then parse through the resulting observaiton details to count the number of identificaitons.

if you needed to get only identifications created during a particular time for observations created during a particular time, you’d have to do the above, except:

  1. probbaly also filtering for observations that were created prior to the end of your identification date range
  2. maybe ordering your observations by update date descending so that you can stop geting observations once you start getting observations updated only prior to the start of your identifcation date range
  3. counting only identifications created during a particular period

alterntatively, you could get identifications created during a particular time period, and then parse through those results to count only the ones associated with observations created during particular time period.

none of the above is particularly efficient, and if you are dealing with more than 10000 or so records to retrieve, then you have more hoops to jump through to get your answer, making ti more questionable whether you should even try to get this infromation.