Summary of identifications by users

Is it possible to get a summary of species identified by user. Something like:
https://www.inaturalist.org/observations?place_id=any&subview=grid&user_id=tonyrebelo&verifiable=any&view=species
but for identifications.
(oh, and for a place too, not just the total).

I need to check the credentials of an identifier (no profile interests listed) in a genus/family outside of their continent.

The closest I can get is this:
https://www.inaturalist.org/identifications?place_id=any&subview=grid&user_id=tonyrebelo&verifiable=any&taxon_id=49360
but I would like a summary by species in the taxon, without having to count dozens of observations.

Not important enough for a feature request, but interested enough to know if their is a way of doing it via the urls.

5 Likes

Was going to post the same question myself, would love ID summaries for each user

1 Like

I was also just about to post this request. I’d love to know the ID data of myself and others. This can be useful information to determine whether a user might have any experience in a particular taxon. And I think it’d be interesting to know the total number of species I’ve identified and which groups I identify most often or least often.

1 Like

You can add ?ident_user_id=[username] and look at the species grid view to see a summary of IDs made by a user for each species. You can use the search to narrow by taxa or location.

For example, here is a summary of your South African frog and toad IDs:

https://www.inaturalist.org/observations?ident_user_id=tonyrebelo&place_id=6986&subview=grid&taxon_id=20979&view=species

At least for me, it can take awhile to load the next set of species when you scroll down. Most ID’ed taxa are at the top.

4 Likes

i think hanly’s answer probably gets you what you want in most cases, but i do also want to mention that there is this: https://api.inaturalist.org/v1/docs/#!/Identifications/get_identifications_species_counts. this will accept a taxon_of parameter which will allow you to specify whether you want the taxon of the identification or of the observation, and it also provides a few other identification-related parameters/filters that might be useful. it doesn’t have a nice user interface that i know of (though it wouldn’t be too hard to write something to display the results in a user-friendly format, i think).

3 Likes

That’s great. Is any way to do something similar but for where a person made the leading ID, and exclude IDs where they are just agreeing?

You would have to use the above API link from pisum with category=leading. If it’s a one time thing you can convert the JSON output for a single request to an HTML table with an online tool if you just want the info and not an interface.

For example, this is your leading IDs of bees:

https://api.inaturalist.org/v1/identifications/species_counts?user_id=vynbos&current=true&category=leading&taxon_id=630955&order=desc&order_by=created_at&taxon_of=iden

Which you can plug into Option 2 at a site like http://convertjson.com/json-to-html-table.htm to make a table (with lots of superfluous information). Not super elegant but a way to get the info without accessing the API more traditionally.

3 Likes

It’s a shame that this feature is so deeply hidden. It’s potentially very useful for someone like myself who contributes a large number of identifications. For instance, I can tweak the view so that I see all the observations of a particular group that I’ve identified to Order or Family. It allows me to easily see which identifications I might be able to diagnose to a lower taxonomic level. This seems like something that could easily be incorporated into the user identifications page.

MS Excel actually does a respectable job of putting JSON data into a relatively friendly format, if you don’t care about seeing pictures. see https://support.office.com/en-us/article/Connect-to-a-JSON-file-f65207ab-d957-4bf0-bec3-a08bb53cd4c0.

below, i’ve adapted some code that i wrote earlier (https://forum.inaturalist.org/t/how-to-find-the-top-improving-identifiers-for-a-taxon/5478/2) to help display the results of this API endpoint in a slightly more user-friendly format, along with a screenshot of what the results look like for my id below the code. one day i will put my code into something like GitHub so that it’s easier to use, but today is not that day. to use the code, copy it, and paste it into a text or code editor. then save as an .html or .htm file, and open the saved file with your browser.

<!DOCTYPE html>
<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="iNaturalist API Get Identification Leaf Taxa Counts" />
<title>iNaturalist API Get Identification Leaf Taxa Counts</title>
<style>
   body { font:10pt Sans-Serif; }
   .tar { text-align:right; }
   #main { width:100%; }
   table, thead, tbody, tr, td { margin:0px; padding:3px; border-width:1px 0px;border-style:solid; border-color:lightgray; border-spacing:0px; border-collapse:collapse; }
   thead tr { font-weight:600; background:green; color:white; }
   tr { background:whitesmoke; }
   tr:nth-child(even) {background-color:white }
   .icon { height:48px; width:48px; border-radius:50%; }
   img { margin:0px; padding:0px; border:0px; }
   a { text-decoration:none; }
</style>
</head>

<body>
<script>
function furl(url,txt=url) { return '<a href="'+url+'">'+txt+'</a>'; };
function famp(str) { return str.replace(/&/g,'&amp;'); };
function faddelem(etype,eparent,eclass=null,eid=null,ehtml=null) {
   var eobj = document.createElement(etype);
   if (eclass!==null) { eobj.classList = eclass };
   if (eid!==null) { eobj.id = eid };
   if (ehtml!==null) { eobj.innerHTML = ehtml };
   eparent.appendChild(eobj);
   return eobj;
};
function fresults(xobj) {
   faddelem('p',document.body,null,null,furl(famp(apiurl)));
   var results = xobj.results;
   if (results) {
      faddelem('p',document.body,null,null,'total leaf taxa: '+xobj.total_results);
      var table = faddelem('table',document.body,null,'main');
      var thead = faddelem('thead',table);
      var hrow = faddelem('tr',thead);
      faddelem('td',hrow,null,null,'#');
      faddelem('td',hrow,null,null,'id');
      faddelem('td',hrow,null,null,'photo');
      faddelem('td',hrow,null,null,'name');
      faddelem('td',hrow,null,null,'common name');
      faddelem('td',hrow,null,null,'rank');
      faddelem('td',hrow,'tar',null,'taxon obs/id count');
      faddelem('td',hrow,'tar',null,'taxon ttl obs count');
      var tbody = faddelem('tbody',table);
      for (var i=0; i<results.length; i++) {
         var brow = faddelem('tr',tbody);
         faddelem('td',brow,null,null,i+1);
         faddelem('td',brow,null,null,furl('https://www.inaturalist.org/taxa/'+results[i].taxon.id,results[i].taxon.id));
         faddelem('td',brow,null,null,'<img class="icon" src="'+results[i].taxon.default_photo.square_url+'" />');
         faddelem('td',brow,null,null,results[i].taxon.name);
         faddelem('td',brow,null,null,results[i].taxon.preferred_common_name);
         faddelem('td',brow,null,null,results[i].taxon.rank);
         faddelem('td',brow,'tar',null,results[i].count);
         faddelem('td',brow,'tar',null,results[i].taxon.observations_count);
      };
   }
   else { faddelem('p',document.body,null,null,'No results returned.'); };
};
var apiurl = 'https://api.inaturalist.org/v1/identifications/species_counts'+window.location.search;
if (window.location.search==='') {
   faddelem('p',document.body,null,null,'This page displays the results of a request to the iNaturalist Identification Species Counts API in a user-friendly format. To use this page, add at least one query parameter to the URL. See '+furl('https://api.inaturalist.org/v1/docs/#!/Identifications/get_identifications_species_counts')+' for available query parameters.');
   faddelem('p',document.body,null,null,'Suppose this page is saved locally as C:\\example.html, <br />and you want to see the results of '+furl(famp('https://api.inaturalist.org/v1/identifications/species_counts?user_id=bob&current=true&order=desc&order_by=created_at&taxon_of=identification'))+' in a friendly format, <br />then you would open '+furl(famp('file:///C:/example.html?user_id=bob&current=true&order=desc&order_by=created_at&taxon_of=identification'))+' in your browser.');
}
else {
   fetch(apiurl)
      .then((response) => {
         if (!response.ok) { throw Error(response.statusText); };
         return response.json();
      })
      .then((data) => { fresults(data); })
      .catch((err) => { console.log('Error: '+err); });
}
</script>
</body>
</html>

2 Likes

Cool thanks. I did get the answer elsewhere, but dont remember where.
The api is superb.

https://www.inaturalist.org/observations?ident_user_id=rangertreaty50
Replace the username and your good to go!

here’s my code above hosted as a GitHub page so that you don’t have to save it locally to use it:
https://jumear.github.io/stirfry/iNatAPIv1_identifications_species_counts.html

and this is the code saved in GitHub:
https://github.com/jumear/stirfry/blob/gh-pages/iNatAPIv1_identifications_species_counts.html

while i’m at it here is the same thing for this (https://forum.inaturalist.org/t/how-to-find-the-top-improving-identifiers-for-a-taxon/5478/3):
https://jumear.github.io/stirfry/iNatAPIv1_identifications_identifiers.html
https://github.com/jumear/stirfry/blob/gh-pages/iNatAPIv1_identifications_identifiers.html

5 Likes

I was using that for our Illinois Botanists Big Year identifiers, but it doesn’t work anymore. :\

https://jumear.github.io/stirfry/iNatAPIv1_identifications_identifiers.html?taxon_id=47126&category=improving,leading&place_id=35&observed_d1=2019-01-01&own_observation=false did I accidentally change something?

Edit: Looks like it’s the observed_d1 that triggers it to fail. But it worked before…
https://jumear.github.io/stirfry/iNatAPIv1_identifications_identifiers.html?taxon_id=47126&category=improving,leading&place_id=35&own_observation=false

And since the API shows no results with observed_d1 is included doesn’t look like something changed on your end. will file a bug report.

Edit edit: here https://forum.inaturalist.org/t/api-identifications-identifers-including-observed-d1-or-observed-d2-returns-no-results/8748

@tonyrebelo I think you should turn this into a feature request.

1 Like

(to follow up on my last post, the issue with the observed date parameters was fixed)

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.