-
Notifications
You must be signed in to change notification settings - Fork 56
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
'Reset Key' and 'Recommended next step' buttons for Guide tags #47
Comments
I'd prefer "Reset filters" and maybe just automatically show the recommended next step instead of adding yet another button. What's the algorithm for determining the recommended next filter? |
Yes, reset filters sounds fine, and OK to just go to recommended next step, but I think the user needs to have a way to 'pass' if they don't have enough info to answer the recommended next step question or/and revert back to the last step and pick a feature that they can answer. There is some documentation from Lucid (key software) about how it works, see link below, page 7. Basically, a 'next best' character/feature is one that if used, would cause the list of remaining entities/taxa to be halved. I'm trying to find out if this has been documented in more detail somewhere else... |
You can "pass" by just scrolling down. I don't think there's any need for additional UI. My impression is that the intent is to make this a little more like a key, but not replicate Lucid's functionality. They do have their own apps for that. |
Ken-ichi - so your solution would be for the tags would automatically sort to display in order of 'recommendedness'? If that were the case, I agree, the user could just scroll through from top to bottom |
Yes, sorry if that wasn't clear, Scott. Regarding the "recommended next couplet" algorithm, Lucid's docs are vague but roughly state they prioritize traits that divides the remaining taxa in half, which sort of makes sense from a computer scientist's perspective, but I actually prefer keys that exit quickly for obvious traits, so I might prefer the opposite: prioritize traits that divide the remaining taxa as unequally as possible, i.e. reject the outliers quickly before getting to the thorny, similar taxa. |
curious what @stevenpbachman thinks, but I agree that the choice of next step does seem to be pretty subjective. For me the main thing I can think an algorithm would do that would always be helpful is to show steps with at least some discriminating power. For example, if I chose color=red in the following example, I wouldn't want to see #wings since this can't discriminate the remaining choices A&B |
I think that leads nicely on to the 'prune redundant' feature that the Lucid keys and others also have. It does exactly what you've just described, takes away any characters that won't help you discriminate. This could happen at the same time as each 'best' feature is selected. But, back to the 'recommended next' algorithm, could we actually have both? KenIchi's outliers or the half/half approach. User could toggle. Feedback I'm getting from regular key users here is that in general they want to get down to a small set of choices very quickly and then browse through remaining taxa to get the final ID. |
the only problem with that is that Ken-ichi and I are trying to find a way that this UI could work without a button. For example, imagine you tap on color=red, then it reorders the remaining choices and scrolls you to the next one. That would be sweet, but it would mean going with an algorithm rather than adding buttons. I'm sure alot has been written about these algorithms by others so it would be useful to see what people recommend rather than come up with something that works from scratch |
Ok, I'm with you on trying to avoid complicating the UI. think my preference would be the half/half algorithm on the next best character, combined with the removal of redundant characters. If the next best characters are ordered in terms of equal ratio of taxa to unequal ratio, then you could still apply Kenichi's approach, but you'd be scrolling to the bottom of the list all the time, not ideal. I'll keep digging around to see what other regular key users think about these options. |
Here's the eMonocot code for the NextBest algorithm that Steve found https://github.com/RBGKew/eMonocot/blob/master/emonocot-static/src/main/js/jsKey/keys.js#L848 |
This looks like it could be implemented client-side only (no need for server side), is that right?
Let's say we have the following properties: no. of legs; color; size. |
Just wondering if the tag categories e.g. colour, size etc. can be minimised/maximised with a tap rather than having all tags visualised at once, this could save space. The sequence would then be 1) guide opens with all tag categories showing, and best discriminator category is at top, possibly highlighted as 'next best' 2) tap to open up tag options for that category and select one or more options, 3) tap category to close and that triggers then next 'nextbest' category to be highlighted. Would that work? I guess the user might check and uncheck the options in one tag category if they changed their mind, in which case it wouldn't move to the next best. |
Here are just a few UI recommendations based off @budowski's feedback:
|
That's ok because the highlight will indicate the recommended question |
I am not opposed to expandable collapsing features, but wanted to propose something that would allow us to work within our current model, thus saving some time on dev and design. I also like the idea of not having to first tap on a feature and then selecting an item. Many folks may not understand the feature/question without seeing the options as well. |
@joellebel - This looks good :-)
|
@budowski - I think @joellebel's designs just use scrolling to navigate the sidebar, no reordering. (which means auto-scrolling might scroll past a question) |
Awesome - another question - @joellebel - we should also account for the info icon in the design - when pressed it should show the representative photo (see original description of the issue by @loarie ) |
I think those are the little image icons she included on the leftmost mock above in between 'yes' and '3'. joelle thought those icons would be clearer than the (i)'s in my mock |
Got it - didn't notice (my bad). |
Just wondering if anyone has any further comments. If not, I will begin creating the visual assets for @budowski. Thanks. |
looks good to me :) |
OK, I'm working on the algorithm implementation now - please tell me what you think:
|
Note that this a simpler algorithm and not the same algorithm as in eMonocot, since they rely on types of information we do not have at the moment (correct me if I'm wrong) - for example, whether or not a trait is quantitative or categorical. |
If you have all the tags loaded you could probably test a predicate to see if it's quantitative or not by seeing if the first tag having that predicate has a value that's a number. Could you even do something simpler, like pre-generate counts for how many times each predicate is used, and instead of filtering an array of taxa by whether or not each taxon has a tag using the predicate, just choose the next predicate with the highest count? That way you iterate over all taxa once instead of each time you determine the next tag. |
@kueda - but if we use, there would be some cases in which the recommended next tag won't help out in filtering the taxa - for example (similar to @loarie's example):
Let's say we first choose color = red (we'll have taxa A+B remaining). According to the algorithm you suggested, we'll choose number of legs next (still remaining with A+B for results) - but that won't help us narrow down the result list (but choosing number of legs will). What do you think? |
@loarie - Awesome! This looks great :-) |
I got a nil when n=1 (where n is the number of values) because dividing by (n-1) = 0. But I guess it might be easier to just test if n>1 rather than if variance != nil I didn't use the "taxa counts with no value" in calculating mean and variance - sorry if including them in the table added confusion so for example for [1,1,1] n=3 and for [3,1] n=2 |
Awesome, got it :-) |
Looks like a sweet solution. Just wondering:
Thanks, Steve |
|
|
|
Currently the character/predicates are ordered by the way they appear in the guide's XML file. But of course we can sort them alphabetically, for example. |
Maybe this is a small piece of functionality missing from the guide builder? You can sort the species in the guide, but not the tag category (characters/predicates) order. I would say leave the app as is and let it pick up the order as per the XML file as you say. |
The first pass is looking really good. After playing around with it a bit, I came up with a few tweaks to help with usability. Screen 1: Next Step Highlight TweakThe next recommended filter would be clearer, if its header was the inat green and the options had an inat green tint of 10% opacity. This will really help distinguish it from other filters with selected options. See below mock up. In this mock up, the user has selected "no" for "Present in Noca", then tapped "Recommended Next Step" and was scrolled to "Capable of rolling up?" which is now the active filter that needs an option selected. Note the header of "Present in Noca" is still dark green and should remain dark green as long as it has an option selected. This will help the user to recognize which option is associated with its corresponding filter header. Screen 2: 2nd Filter selectedIn this mock up the second filter has been selected. Note the header (Capable of rolling up remains dark green) If the user deselects "yes", the header should go back to gray. Screen 3: Disabled Recommended ButtonWhenever there is no next recommended step or the user has deselected filters in the middle of the next step process which make it impossible for there to be a next step, the "Recommended Next Step" button should be disabled. See below mock up of the disabled button. @budowski feel free to use the standard Android disabled state for the button. Other Styling Tweaks
Current:Proposed:BugsI think I found a bug which I can certainly make a separate issue for, I just thought I'd bring it up here. I noticed if the first recommended next step is the last filter the list over scrolls and places the header of it under the "Recommended Next..." button |
@budowski, if you can address Joelle's issues in a day then I'd say go for it, but if it looks like longer than that let's table them for now. I think they're all good ideas, but also think what you've got currently meets the original requirements. |
I think I can make those changes within a day or so - will work on it and send you guys a new version to review. |
OK, I've implemented the changes suggested by @joellebel - added it as a beta release. |
@budowski thanks! Will do! |
Currently experiencing a bug in which after I click recommended next step,
|
Weird - I'll look into this and fix (placed in beta). @kueda - could you please re-check to make sure it's working properly for you? Thanks |
OK, fixed the issue |
Just tested on Android 4.0 and all is working for me. Will test on lollipop tomorrow when my Nexus 5 comes back from Colorado. (I accidentally left it there) Great stuff! |
Kew is interested in using Guide tags as keys and one of the things they've requested are tools for easily reseting the tags (e.g. turning off all filters) and for navigating the user to the 'Recommended next step'
The 'Recommended next step' is calculated based on the tag choice that would maximumly discriminate the remaining set of taxa. Proceeding through these tags using the recommended steps simulates navigating through a dichotomous key
I assume the logic for these would be implemented client side on Android?
![screen shot 2015-04-30 at 11 33 47 am](https://cloud.githubusercontent.com/assets/598026/7420059/3a9b24de-ef2e-11e4-9111-c7128817c342.png)
The text was updated successfully, but these errors were encountered: