URL Parameter to exclude taxa by identification

Platform(s), such as mobile, website, API, other: web

URLs (aka web addresses) of any pages, if relevant: https://www.inaturalist.org/observations/identify

Description of need: When identifying observations that have been stuck at family, I see both observations with only family identifications, and observations with disagreeing identifications at lower levels. I want to be able to choose to only see the latter.

Feature request details: To be able to exclude the observations that have identifications of a certain taxon.

The functionality would be a new URL parameter: without_direct_ident_taxon_id= which would have the same effect as without_direct_taxon_id= but instead of checking the community ID, it checks the identifications, like ident_taxon_id= does.

just to clarify…

suppose an observation has 2 identifications: horse, goat. suppose you filter for observations?without_direct_ident_taxon_id=horse. should this return the observation?

1 Like

Yes, because the identifications are disagreeing, so the community ID would be the next common taxon up. without_direct_taxon_id= excludes observations of a taxon where the community ID is lower than the level of the taxon, and without_ident_direct_taxon_id= would also exclude observations at the level of the taxon that have at least one identification for that taxon. Is that a helpful explanation?

i’m a little confused. i asked whether my filter should return the observation, and you said:

your explanation was:

but if we apply this logic to my example case, my observation does have at lease one identification for the taxon horse. so according to your stated logic, my observation should be excluded. so if i query for without_direct_ident_taxon_id=horse, i should not get my observation, right?

Okay, I’m not sure I can provide a satisfactory explanation, so here’s my example:

Search for Tabanidae, stuck at family level, but without observations that have an identification of Tabanidae, only of Tabaninae, Chrysopsinae, Pangoniinae, or Scepsidinae: www.inaturalist.org/observations/identify?taxon_id=47821&without_ident_direct_taxon_id=47821&lrank=family

Currently, there is no parameter to exclude identifications of the taxon within observations with the community ID as the taxon, which is what is searched above. I think this might be the only use case of this parameter.

if your observation of Tabanidae includes identifications of Tabanidae (improving), Tabaninae (leading), and Chrysopsinae (leading), will applying your new filter parameter return this observation?

No, because there is an identification of the excluded taxon. I think if it was withdrawn it should return the observation.

okay. so then you are proposing something according to your earlier stated logic:


if conceptually it would have been fine to return the the Tabanid record from my example above, even though it had an improving Tabanid ID, then you could accomplish that using existing parameters: https://www.inaturalist.org/observations/identify?ident_taxon_id=332389,952237,465915,319370&exact_taxon_id=47821. however, within Tabanidae observations, an ID at Tabanidae is just as likely to be a branch disagreement as it is an improving ID. so i can understand why you might want to exclude IDs at that level.

if you were to use my page for viewing GET /observations API results, you could look for cases where the ID Count @ Obs = 0 to manually select just the records without a Tabanidae ID: https://jumear.github.io/stirfry/iNatAPIv1_observations.html?options=idextra&ident_taxon_id=332389,952237,465915,319370&exact_taxon_id=47821. (you could also check records where ID Taxa @ Desc > 1, since some of those might be cases where the Tabanidae ID was an improving ID as opposed to a branch disagreement.)

here’s a version of the above which excludes observations you have already reviewed: https://jumear.github.io/stirfry/iNatAPIv1_observations.html?options=idextra&ident_taxon_id=332389,952237,465915,319370&exact_taxon_id=47821&reviewed=false&viewer_id=305683

The problem with this is that it includes, and is mostly, observations where the original ID is species or genus and someone disagreed all the way back to family.

This returns almost the exact same observations as the identify link, so still not doing what it should…

Do you think this parameter is even possible?

but look at the column labeled “ID Count @ Obs”. based on the value there, you’ll know whether the record has a Tabanidae ID.

if you’re referring to your proposed parameter, yes, it’s possible as long as someone wants to implement it. it probably would not be the most performant filter, since it would effectively need to do something like a NOT EXISTS, but it’s not terrible in terms of these kinds of parameters.

Ah, I see, so can you just make that show only obs without any “IDs @ Obs”?

Either way, it requires manual opening of observations… which, of course, isn’t as efficient as the Identify modal.

i could, but i’m not going to change this page, since every workflow is different, and different things are important to different people, and i can’t possibly handle every potential workflow. just for example, i mentioned earlier that cases where ID Taxa @ Desc(endant) > 1 (even where ID Count @ Obs > 0) could be a sign that there’s not a branch disagreement here. so for me, i would tend to open up those observations, too, to see what’s going on.

(you could also adapt my page or else code your own thing to do the additional filtering in a more automated way. even just extracting the results of my page into Excel so that you can sort records based on the various ID statistics might be enough to help you handle the manual filtering a little more efficiently.)

this may be true, but i kind of feel like when you try to find the last few percent of cases that might be interesting, you often end up jumping through hoops anyway. for example, even if your proposed parameter was implemented, you still wouldn’t be able to automatically filter for that case that i mentioned just above, where there is an improving Tabanidae ID that is not a branch disagreement. but scanning through the ID statistics on my page, you’ll be able to find those cases relatively quickly.

(if you extracted the observation IDs of interest from the results, you could always still use the Identify screen view that set of observations. for example, if you saw that obs IDs 104597268, 104028794, and 101923664 might be interesting, you could view them in Identify using this URL: https://www.inaturalist.org/observations/identify?id=104597268,104028794,101923664 .)

1 Like

Does this help at all? To find disagreements


No, that’s not really related.