Giter VIP home page Giter VIP logo

wildmeorg / wildbook Goto Github PK

View Code? Open in Web Editor NEW
103.0 17.0 64.0 868.13 MB

Wild Me's first product, Wildbook supports researchers by allowing collaboration across the globe and automation of photo ID matching

Home Page: https://www.wildme.org/wildbook.html

License: GNU General Public License v2.0

Java 61.95% HTML 5.06% Shell 0.13% CSS 1.54% JavaScript 29.18% Perl 0.12% Python 0.05% PLpgSQL 0.07% SCSS 0.04% Less 1.85%
cloud conservation java nonprofit tomcat

wildbook's Introduction

Wildbook

Wildbook is an open source software framework to support mark-recapture, molecular ecology, and social ecology studies. The biological and statistical communities already support a number of excellent tools, such as Program MARK,GenAlEx, and SOCPROG for use in analyzing wildlife data. Wildbook is a complementary software application that:

  • provides a scalable and collaborative platform for intelligent wildlife data storage and management, including advanced, consolidated searching

  • provides an easy-to-use software suite of functionality that can be extended to meet the needs of wildlife projects, especially where individual identification is used

  • provides an API to support the easy export of data to cross-disciplinary analysis applications (e.g., GenePop ) and other software (e.g., Google Earth)

  • provides a platform that supports the exposure of data in biodiversity databases (e.g., GBIF and OBIS)

  • provides a platform for animal biometrics that supports easy data access and facilitates matching application deployment for multiple species

Getting Started with Wildbook

Wildbook is a long-standing tool that support a wide variety of researchers and species. The Wild Me team is working on revamping the tool as a true open source project, so if you have ideas and are excited to help, reach out to us on the Wild Me Development Discord!

Pull Request Workflow

All contributions should be made from a fork off of the Wildbook repo. While there are a number of repositories for specific Wildbook communities, large scale development is driven from the main repository.

Fork Wildbook

To start, you will need to be signed in to your GitHub account, have admin access to your OS's terminal, and have Git installed.

  1. From your browser, in the top right corner of the Wildbook repo, click the Fork button. Confirm to be redirected to your own fork (check the url for your USERNAME in the namespace).
  2. In your terminal, enter the command git clone https://github.com/USERNAME/Wildbook
  3. Once the Wildbook directory becomes available in your working directory, move to it with the command cd Wildbook
  4. Add a reference to the original repo, denoting it as the upstream repo.
git remote add upstream https://github.com/WildMeOrg/Wildbook
git fetch upstream

Create Local Branch

You will want to work in a branch when doing any feature development you want to provide to the original project.

  1. Verify you are on the main branch. The branch you have checked out will be used as the base for your new branch, so you typically want to start from main. git checkout main
  2. Create your feature branch. It can be helpful to include the issue number (ISSUENUMBER) you are working to address. git branch ISSUENUMBER-FEATUREBRANCHNAME
  3. Change to your feature branch so your changes are grouped together. git checkout ISSUENUMBER-FEATUREBRANCHNAME
  4. Update your branch (this is not needed if you just created new branch, but is a good habit to get into). git pull upstream main

Set Up Development Environment with Docker

For easiest development, you will need to set up your development environment to work with Docker. See devops/README.md for detailed instructions.

Deploy frontend

To setup frontend, we need to deploy the React build to Wildbook, please follow the detailed instructions provided in the frontend/README.md file within the project directory.

Making Local Changes

Make the code changes necessary for the issue you're working on. The following git commands may prove useful.

  • git log: lastest commits of current branch
  • git status: current staged and unstaged modifications
  • git diff --staged: the differences between the staging area and the last commit
  • `git add : add files that have changes to staging in preparation for commit
  • git commit: commits the stagged files, opens a text editor for you to write a commit log

Submit PR

Up to this point, all changes have been done to your local copy of Wildbook. You need to push the new commits to a remote branch to start the PR process.

  1. Now's the time clean up your PR if you choose to squash commits, but this is not required. If you're looking for more information on these practices, see this pull request tutorial.
  2. Push to the remote version of your branch git push <remote> <local branch> git push origin ISSUENUMBER-FEATUREBRANCHNAME
  3. When prompted, provide your username and GitHub Personal Access Token. If you do not have a GitHub Personal Access Token, or do not have one with the correct permissions for your newly forked repository, you will need to create a Personal Access Token.
  4. Check the fork's page on GitHub to verify that you see a new branch with your added commits. You should see a line saying "This branch is X commits ahead" and a Pull request link.
  5. Click the Pull request link to open a form that says "Able to merge". (If it says there are merge conflicts, go the for help).
  6. Use an explicit title for the PR and provide details in the comment area. Details can include text, or images, and should provide details as to what was done and why design decisions were made.
  7. Click Create a pull request.

Respond to feedback

At this point, it's on us to get you feedback on your submission! Someone from the Wild Me team will review the project and provide any feedback that may be necessary. If changes are recommended, you'll need to checkout the branch you were working from, update the branch, and make these changes locally.

  1. git checkout ISSUENUMBER-FEATUREBRANCHNAME
  2. git pull upstream main
  3. Make required changes
  4. git add <filename> for all files impacted by changes
  5. Determine which method would be most appropriate for updating your PR
  • git commit --ammend if the changes are small stylistic changes
  • git commit if the changes involved significant rework and require additional details

Machine Learning in Wildbook

Wildbook leverages Wildbook IA (WBIA) as the machine learning engine, which pulls data from Wildbook servers to detect features in images and identify individual animals. WBIA brings massive-scale computer vision to wildlife research.

Need direct help?

Wild Me (wildme.org) engineering staff provide support for Wildbook. You can contact us at: [email protected]

We provide support during regular office hours on Mondays and Tuesdays.

Support resources

Contribution Guidelines

Variable naming conventions

  • Camel case
  • Don’t use single-letter variable names (no matter how temporary you think the code is)
  • Code should be clear enough to speak for itself without comments, but use your judgement on if a comment is necessary
  • Code for clarity rather than for efficiency (one-liners are cool, but not at the expense of future obfuscation)

Overall outline of code framework<

Spell out how .jsp files relate to servlet files relate to java files, etc. Someone new to the codebase should be able to orient themselves based on your notes.

Java/jsp style

Initialize variables and type signatures at the abstract/interface level when possible.

Instead of:

ArrayList encounters = new ArrayList<Encounter>();
...
public int getMax(ArrayList<int> numbers) {

Try:

List encounters = new ArrayList<Encounter>();
...
public int getMax(Collection<int> numbers) {

It’s easier to read and more intuitive for a function to take a Map or List than a HashMap or ArrayList.

The List interface defines how we want that variable to behave, and whether it’s an ArrayList or LinkedList is incidental. Keeping the variable and method signatures abstract means we can change the implementation later (eg swapping ArrayList->LinkedList) without changing the rest of our code. https://stackoverflow.com/questions/2279030/type-list-vs-type-arraylist-in-java

Related: when writing utility methods, making the input type as abstract as possible makes the method versatile. See Util.asSortedList in Wildbook: since the input is an abstract Collection, it can accept a List, Set, PriorityQueue, or Vector as input, and return a sorted List.

Runtime (not style): Use Sets (not Lists or arrays) if you’re only keeping track of collection membership / item uniqueness.

Instead of:

    	List<MarkedIndividual> uniqueIndividuals = new ArrayList<MarkedIndividual>();
    	for(Encounter currentEncounter: encounters){
		MarkedIndividual currentInd = enc.getIndividual();
		if !(uniqueIndividuals.contains(currentInd) {
			uniqueIndividuals.add(currentInd);
			doStuff();

Try:

Set<MarkedIndividual> uniqueIndividuals = new HashSet<MarkedIndividual>();	
    	for(Encounter currentEncounter: encounters){
		MarkedIndividual currentInd = enc.getIndividual();
		if !(uniqueIndividuals.contains(currentInd) {
			uniqueIndividuals.add(currentInd);
			doStuff();

The reason is a little deep in the data types. Sets are defined as unordered collections of unique elements; and Lists/arrays are ordered collections with no bearing on element-uniqueness. If the order of a collection doesn’t matter and you’re just checking membership, you’ll have faster runtime using a Set.

Sets implement contains, add, and remove methods much faster than lists [contains is O(log(n)) vs O(n) runtime]. A list has to iterate through the entire list every time it runs contains (it checks each item once at a time) while a set (especially a HashSet) keeps track of an item index for quick lookup.

Use for-each loops aka “enhanced for loops” to make loops more concise and readable.

Instead of:

for (int i=0; i<encounters.length(); i++) {
	Encounter enc = encounters.get(i)
	doStuff();

try:

for (Encounter enc: encounters) {
	doStuff();

Note that in both cases you might want to check if encounters == null if relevant, but you rarely need to check if encounters.length()>0 because the for-loops take care of that.

Also note that if you want access to the i variable for logging or otherwise, the classic for-loop is best.

Util.stringExists is shorthand for a common string check:

Instead of:

	if (str!=Null && !str.equals("")) {
		doStuff();

Try:

	if (Util.stringExists(str)) {
		doStuff();

This method also checks for the strings “none” and “unknown” which have given us trouble in displays in the past.

History

Wildbook started as a collaborative software platform for globally-coordinated whale shark (Rhincodon typus ) research as deployed in the Wildbook for Whale Sharks (now part of http://www.sharkbook.ai). After many requests to use our software outside of whale shark research, it is now an open source, community-maintained standard for mark-recapture studies.

Wildbook is a trademark of Conservation X Labs, a 501(c)(3) non-profit organization, and is supported by the Wild Me team.

wildbook's People

Contributors

annarbecker avatar atticus29 avatar colinwkingen avatar coverbeck avatar crowmagnumb avatar cwainner avatar dependabot[bot] avatar doinkythederp avatar drewblount avatar ecostats avatar erinz2020 avatar goddesswarship avatar gpoautomation avatar gwinstanley avatar holmbergius avatar jasonwildme avatar katacka avatar marcial21 avatar mattmcla avatar mbrecunier avatar naknomum avatar richardjune avatar schibel21 avatar seangillespie avatar starstew avatar sufwankhalid1 avatar tanyastere42 avatar tsubramanian avatar uturunku1 avatar veda-gogineni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wildbook's Issues

Duplicate individuals can be created when an encounter deleted from a project is assigned an already-existing individual name

(WB-1893) Not sure whether this is the entire problem that Maureen is reporting, but this represents at least one circumstance where duplicate individual creation is possible.

Likely related to confirming no match in projects. Wildbook suggests an ID for the individual that's already been assigned.

Community Link
https://community.wildme.org/t/2-identical-marked-individuals/641/5
https://community.wildme.org/t/missing-submitter-id-causing-duplicates-in-new-id-uploads/1091/4
https://community.wildme.org/t/confirm-no-match-assigning-incorrect-id-in-iot/2114
https://community.wildme.org/t/error-processing-both-sides/2142
https://community.wildme.org/t/project-id-prefix/2501

May be related to #285

Can't add assign orgs in GiraffeSpotter and issues creating new users.

Expected Behavior
Existing User

  1. go to user management, select user
  2. make changes to that user's organizations and click save
  3. Confirmation message; user's profile shows organization assignment

New User

  1. go to user management, select user
  2. make changes to that user's organizations and click save
  3. user is created with new organization assignment

Current Behavior
As an admin user, I'm not able to add org assignments.
Existing User

  1. go to user management, select user
  2. make changes to that user's organizations and click save
  3. it goes to this URL which only displays a blank page (https://giraffespotter.org/UserCreate?context=context0&isEdit=true)
  4. navigate away from and back to user manager; the changes are not saved.

New User

  1. go to user management and create new user, including adding an organization
  2. click save, it goes to this URL with a blank page (https://giraffespotter.org/UserCreate?context=context0).
  3. Navigate away and back and the user is ultimately created, but there's no confirmation message.

This is verified across different organizations and admin accounts. Editing other things in the user profile doesn't cause the blank page.

Technical Notes
Theory is that the code isn't generating a new row to save org assignments.

Support Team Workaround
manually update user via UUID. Not feasible as long-term solution

IOT matching and bounding box issues

Expected Behavior

Current Behavior
IoT initially loads but when I run a match I can see the numbers for the matches but no photos underneath like normal. Sometimes the numbers disappear as a scroll down the page. After trying a few matches the page stops responding completely and will no longer load or refresh.

Lately, our team (ORP) has also been having trouble with annotation boxes taking a long time to show up or not showing up at all (waiting for detection)

I have noticed this in some other wildbooks as well lately, so I'm convinced something is wrong in master and is propagating as we update.

Community Link
https://community.wildme.org/t/internet-of-turtles-website-crashing/921

Possibly-related community posts (strike-throughs have been addressed):

  • Amphibian/IOT/Giraffe (the lattermost since resolved?) : [https://community.wildme.org/t/stuck-on-attempting-to-fetch-results-when-matching/659/2]
  • Amphibian: [https://community.wildme.org/t/images-not-sent-to-ia/913/2]
  • Possibly ACW: [https://community.wildme.org/t/bulk-import-not-recognizing-send-to-identification/905/7).]
  • Grouper: [https://community.wildme.org/t/not-sure-when-idenfication-for-bulk-import-will-be-completed/899/6]

Buggy "Go to highlighted encounter" on Individual's view all images gallery page

Expected Behavior

  1. Go to Individual page (/individuals.jsp)
  2. Click View all images on animal's profile photo. This takes you to /encounters/thumbnailSearchResults.jsp
  3. Click on Click arrows to focus on a different annotation. A Go To Highlighted Encounter link will pop up as you cycle through the annotations on the image.

Current Behavior
Clicking on Click arrows to focus on a different annotation does not load Go To Highlighted Encounter link.

Community Link
https://community.wildme.org/t/missing-go-to-highlighted-encounter-on-individual-gallery-page/1277

all viewpoints available in manual annotation tool

Expected Behavior

  1. User is on an encounter looking at gallery
  2. User selects Add annotation from hamburger menu ( opens src/main/webapp/encounters/manualAnnotation.jsp)
  3. In Viewpoint dropdown, all viewpoints from src/main/webapp/encounters/Annotation.java are available. Dropdown also includes a value of ----- to support viewpoint-less algorithms

ex: If VALID_VIEWPOINTS lists the following:

    private static final String[][] VALID_VIEWPOINTS = new String[][] {
        {"up",        "up",            "up",        "up",            "up",       "up",           "up",        "up",          },
        {"upfront",   "upfrontright",  "upright",   "upbackright",   "upback",   "upbackleft",   "upleft",    "upfrontleft"  },
        {"front",     "frontright",    "right",     "backright",     "back",     "backleft",     "left",      "frontleft"    },
        {"downfront", "downfrontright","downright", "downbackright", "downback", "downbackleft", "downleft",  "downfrontleft"},
        {"down",      "down",          "down",      "down",          "down",     "down",         "down",      "down"         }
};

Then the list should contain:
Image

Note that no duplicates are included

Current Behavior

  1. User is on an encounter looking at gallery
  2. User selects Add annotation from hamburger menu ( opens src/main/webapp/encounters/manualAnnotation.jsp)
  3. In Viewpoint dropdown, only the viewpoints that have been previously seen for a species are listed

Community Link
https://community.wildme.org/t/missing-viewpoints-in-add-annotation-functionality/303/4

Keywords are not alphabetized

Expected Behavior
Keywords on the image should appear in alphabetical order both in display and in the selection list

Current Behavior
(WB-1873)

Only admins can confirm matches from results page of public encounters in IoT

Expected Behavior
Any user with the researcher role can confirm matches from user "public" from the match results page

Current Behavior
Users with the researcher role see an error message when they try to confirm a match from user "public": "Error updating encounter: User unauthorized for encounter [encounter ID]"

Image

Community Link
https://community.wildme.org/t/public-encounters-matching-and-editing-rights/2290

QA Notes
Users can work around this by manually updating the Identity section of the encounter. Testing confirmed that only users with the admin role can match public turtles from the results page.

Unable to upload additional image from encounter page of Wildbook for Lynx

Expected Behavior
User wants to add images to an existing encounter

Current Behavior
Uploading from the encounter's page hangs and the image is never uploaded successfully.

Investigation notes
Am able to successfully upload on Flukebook, but not on Lynx. Processing image progress bar hangs and provides little information about what could be going on; console shows a 500 error in the network call, and says a error is available in the stacktrace

Community Link
https://community.wildme.org/t/several-issues-i-have-with-wildbook-lynx/1943

Can we explain these IoT duplicate encounters?

Expected Behavior

Current Behavior
(WB-1806)
Digging I have done so far (from a slack post):
Are the following identical encounters?? These seem like almost identical media assets belonging to different encounters:
[https://iot.wildbook.org/obrowse.jsp?type=MediaAsset&id=580267|https://iot.wildbook.org/obrowse.jsp?type=MediaAsset&id=580267]
[https://iot.wildbook.org/obrowse.jsp?type=MediaAsset&id=580262|https://iot.wildbook.org/obrowse.jsp?type=MediaAsset&id=580262]
I'm noticing that the bounding boxes are drawn in one media asset but not the other.
However, in the two encounters to which these media assets belong:
[https://iot.wildbook.org/encounters/encounter.jsp?number=747a4658-fbb8-4bfa-af22-0dc086ee60c7|https://iot.wildbook.org/encounters/encounter.jsp?number=747a4658-fbb8-4bfa-af22-0dc086ee60c7]
and
[https://iot.wildbook.org/encounters/encounter.jsp?number=811fa097-8a9b-4aa7-b8ed-4ae57f1d8a94|https://iot.wildbook.org/encounters/encounter.jsp?number=811fa097-8a9b-4aa7-b8ed-4ae57f1d8a94]
, respectively, the bounding boxes are drawn in both encounters. I believe I have ruled out cloned encounters because of annotations of different animals.
They have different catalognumbers, occurrenceIDs, feature ids, annotation ids, media asset ids (but a few numbers apart, rather than, say, just one number apart), but the same acmids_. Is that bad/weird???
Also, different GUIDs (which I believe is an ancient thing for encounters) and ever-so-slightly different Modified timestamps. Could anyone help me make heads or tails of this? Thanks in advance!

Community Link
https://community.wildme.org/t/date-change-request/1002/18

Revoking edit level collaboration breaks individual for collaborating users

Current Behavior

  1. These users confirm Edit level collaborations with each other
  2. UserA submits EncA, UserB submits EncB, and UserC submits EncC
  3. EncA, EncB, and EncC are all found to be of the same animal, and are matched as IndividualOne
  4. One user revoked an Edit level collaboration with one other user
  5. Now no one can edit IndividualOne

Expected Behavior
we would expect to happen is everyone to maintain edit-access to the individual, and the two who still have Edit-level collaboration to be able to edit each other's encounters.

Community Link
https://community.wildme.org/t/question-re-collaborations/2166/2

Incorrect ID status from Project page in Flukebook

Expected Behavior
Accurate reporting of the Match Results state from Projects view (/projects/project.jsp)

Current Behavior
From the Project page in Flukebook (My data > View my projects), clicking on Match Results shows that the identification status is pending, even though the encounter has already had matches reviewed and confirmed.

Fix adding encounters to existing individuals in manta matcher

Expected Behavior

Current Behavior
(WB-1633) Javascript typeahead is being broken by a null Taxonomy in the JSP around here because Taxonomy was not set on the Encounter. The solution is to have better null and exception handling around this block of code (see comment for block of code referenced

{noformat} var optArray=[];

<%

IAJsonProperties iaConfig = IAJsonProperties.iaConfig();

Taxonomy taxy = enc.getTaxonomy(myShepherd);

Map<String,JSONObject> identConfigs = new HashMap<String,JSONObject>();

for (String iaClass : iaConfig.getValidIAClasses(taxy)) {

for (JSONObject idOpt: iaConfig.identOpts(taxy, iaClass)) {

String key = idOpt.toString();

if (identConfigs.containsKey(key)) {

identConfigs.get(key).getJSONArray("_iaClasses").put(iaClass);

} else {

JSONArray iac = new JSONArray();

iac.put(iaClass);

idOpt.put("_iaClasses", iac);

identConfigs.put(key, idOpt);

}

}

}{noformat}

Community Link
https://community.wildme.org/t/unable-to-manually-add-to-existing-mantas/798/3

more robust manual annotation

Expected Behavior
main/webapp/encounters/manualAnnotation.jsp

  1. Draw bounding box for annotation around animal
  2. save annotation
  3. Annotation to display as drawn

Current Behavior
Attempted to “add annotation” to encounter. When drawing annotation box, even when setting it to the entire image, you can only get up to half of the image within the annotation, after saving the new annotation
image

Investigation indicates that this is an issue with the dimensions saved from the manual annotation

Community Link
https://community.wildme.org/t/difficulty-adding-annotation/1575/2

restore deleted encounter

Expected Behavior
src/main/java/org/ecocean/servlet/ResurrectDeletedEncounter.java

  1. Access page
  2. Enter the UUID of an encounter that was on the platform
  3. Click enter
  4. Success message
  5. Can visit encounter at standard encounter url

Current Behavior
After success message, the encounter is not accessible. Initial investigations from previous tickets indicate that both Users arrays (submitters, photographers, othersToInform) and Annotations are blocking correct and complete restore.

Community Link
https://community.wildme.org/t/restore-deleted-encounter-not-working/1522
https://community.wildme.org/t/admin-restore-deleted-encounter-function-not-working/625/2

iaResults Individual list doubled #1 match

Expected Behavior
/src/main/webapp/iaResults.jsp
The best match displays once.

Current Behavior
(WB-1920) When looking at IA results organized by Individual, the top Individual is shown twice vs annotations from different encounters.

Investigation notes: The SQL query for the matching set looks normal, so it's likely this issue in in the javascript to display the score.

Community Link
https://community.wildme.org/t/whiskerbook-individual-score-match-list-contains-individual-twice/1316

ACW: delete bulk import doesn’t delete all encounters

Expected Behavior
Deleting a bulk import also deletes the encounters within it.

Current Behavior
Deleting a bulk import removes the bulk import from the user's bulk import list, but the encounters remain in ACW. Maureen is unsure if the animals being matched before the import was deleted is a factor. Here's a link to one of the Marked Individuals whose 11 encounters were all in that deleted bulk import and so each should have been deleted: https://africancarnivore.wildbook.org/individuals.jsp?id=eb9bce50-5e6e-4653-a525-abe0eedf744b

Investigation Notes
JH and Anastasia tried to replicate this in testing, but our ID’d encounters were still deleted when we deleted the bulk import they came from.

Community Link
https://community.wildme.org/t/acw-delete-bulk-import-doesnt-delete-all-encounters/2082

manualAnnotation has scale/math bug

Expected Behavior

Current Behavior
(WB-1586) the problem is the global( !) manta.css has {{img { max-width: 100%; }}} so all( !) our images have this constraint on it.

as a result, these very wide images are getting truncated. you can see the math problem originates with the fact that the displayed (browser) aspect ratio is different than the actual image-size aspect ratio.

{code:java}i.width / i.height

2.28

i.naturalWidth / i.naturalHeight

2.873284907183212{code}

Community Link
https://community.wildme.org/t/manual-annotations-not-recorded-correctly-reduced-in-size/365

IoT and SeadragonSearch - selecting a behavior from the encounter submit page does not persist a behavior

Expected Behavior
Encounter Behavior is updated when the encounter is created.

Current Behavior
During single submissions, behavior is not maintained in encounter creation.
(WB-1846)

Investigation notes
Confirmed in IOT and SeadragonSearch. Most platforms have behavior as a text input rather than a dropdown (flukebook, ACW, Whiskerbook), so this is in conflict. GiraffeSpotter also has a drop-down menu for reporting behavior, but it saves the entry upon submission.

Community Link
https://community.wildme.org/t/iot-uploads-not-recording-behaviour/1022
https://community.wildme.org/t/iot-behaviour-not-retained-on-encounter-submission/2968

Can't add comments to individuals.jsp page

Expected Behavior

  1. Go to any individual page
  2. scroll all the way down to researcher comments with text box beneath
  3. enter text into text box
  4. click add comment
  5. user stays on this page; comment is added to "researcher comments" log with correct time/date/username (following format of the other researcher comments)

Current Behavior

  1. Go to any individual page
  2. scroll all the way down to researcher comments with text box beneath
  3. enter text into text box
  4. click add comment (ln 2542 in /src/main/webapp/individuals.jsp)
  5. new page opens with text: "Failure: I do not have enough information to add your comments"

Investigation notes:
I saw this in the logs when I reproduced customer's issue:

17-Jun-2021 15:25:47.364 INFO [http-nio-8080-exec-5] org.datanucleus.store.rdbms.request.FetchRequest.execute Object with id "CH00021" not found!

Conclusion: that it's using the CH00021 individual name for something it should be using UUID for instead? (value="<%=sharky.getName()%>")

Community Link
https://community.wildme.org/t/error-message-on-adding-comments-to-marked-individual-page/878

Length data export doesn't always work

Expected Behavior

Current Behavior
(WB-1783) What I have learned so far:
searching for encounters assigned to user "crohner" yields encounter results with encounters such as 7db29b97-5b11-48ef-98a9-e6bfd1bb8a1e. When you export the standard format, you see metrics such as length.

HOWEVER, when you search for encounters with a location keyword, "Mafia", which also has the same encounter 7db29b97-5b11-48ef-98a9-e6bfd1bb8a1e, the length column is missing.

Community Link
https://community.wildme.org/t/length-data-not-exported-whale-sharks/942/15

Encounter confirmation emails are the same for registered users and the public

Expected Behavior
email template is updated to clarify that you needed to have an account to view the link
"To view this link, sign in to your Wildbook account"

Current Behavior
Citizen scientists receive a confirmation email with a link to the encounter they submitted. However, public encounters are only visible to logged-in users. Non-registered can view marked individual pages without logging in on some Wildbooks (such as IoT and Spot-a-Shark, but not Whiskerbook).

Community links:
https://community.wildme.org/t/submitters-can-not-see-their-encounters/2203
https://community.wildme.org/t/seeing-my-submission-without-having-an-account/2040
https://community.wildme.org/t/citizen-scientists-unable-to-view-encounter-submission-in-flukebook/2296

Simplify co-occurrence diagram on individuals.jsp

Desired Behavior
Make the co-occurrence diagram represent data as-shown in platform rather than attempting predictive calculations.

IMAGE BELOW IS APPROXIMATION. DO NOT DO PIXEL FOR PIXEL REPRESENTATION

Image

Requirements

  • remove time/space sliders
  • visualize the individual and any individuals that share a sighting. represent the shared sighting difference somehow
  • be able to filter by sighting

Current Behavior
The co-occurrence diagram's attempt to predict co-occurrence based on close time and space relationship is confusing, and most species don't have data to support it. Co-occurrence display should be simplified to only visualize explicit co-occurrence (e.g., individuals with Encounters under the same Occurrence) and remove the time/space sliders.

Community Link
https://community.wildme.org/t/co-occurrences-diagram-confusion/435

Users can't see viewpoint when hovering over annotation in Flukebook

IOT ORP - remove duplicate encounters

Expected Behavior
IOT stays clear of these duplicates

Current Behavior
(WB-1987)
ORP has requested support in bulk removing duplicate encounters. See attached for the query they use
the ones to be removed are the encounters that have an occurrence ID, but no contact information and no audit trail.

Potential additional information from Stephanie: if I see it correctly, all of them are from North Male

Image

Attempting to set ID on two annot matches from the same encounter throws trivial error

Expected Behavior
When confirming a match (/iaResults.jsp), clicking on the "set individual to..." button shows a Success message when the individual is set.

Current Behavior
(WB-1669) When confirming a match, clicking on the "set individual to..." button shows an error message: Error updating encounter: Please enter a different individual id. The match is saved correctly, but confuses users because of the unnecessary error message.

Users have reported this in ACW, Whiskerbook, and Flukebook

QA Notes
User provided a screen recording demonstrating the error: https://www.awesomescreenshot.com/video/20815954?key=8932e7a9c65bacf3ee567c5285b362b4

Community Link
https://community.wildme.org/t/whiskerbook-new-id-error/834/3
https://community.wildme.org/t/confirm-match-btw-idd-target-un-idd-encounter-error-msg-but-refresh-pg-shows-id-updated/688
https://community.wildme.org/t/error-updating-encounter-please-enter-different-id/1495
https://community.wildme.org/t/error-when-doing-a-match/2384

Fix Picturebook image cutoff

Expected Behavior
src/main/webapp/pictureBook.jsp?[searchquery]

  • 3 Pictures are all fully visible and grouped under a given individual in printed document, matching what is displayed in UI (image below)
    image

Current Behavior
Couple probably-CSS issues with picturebook formatting:

  • Second line of pictures for an Individual is cut at the bottom in printed document (image below)
    image

Reproduction steps

  1. Upload 3 images and assign to one individual
  2. Navigate to Individual Search
  3. Search for that individual
  4. On search results page, click Export Tab
  5. Click export link. Wait for page to generate
  6. Follow instructions at top of pictureBook.jsp to generate printed picture book

Community Link
https://community.wildme.org/t/missing-individuals-in-picture-book/804/11

Media assets from bulk imports with .jpg don't display in the encounterMediaGallery

Expected Behavior
all supported formats (.png, .jpg, .jpeg) display correctly in the encounter gallery.

Current Behavior
/src/main/webapp/encounters/encounterMediaGallery.jsp
.jpg that come from a bulk import do not display in the encounter gallery.

Investigation notes
src/main/webapp/import/photos.jsp is where the bulk import of images happens.

  • changing to .jpeg fixes the image.
  • .jpgs work in the rest of the platform.
  • uploading from a standard import displays correctly.

Conclusion: something with the bulk import processing

Community Link
https://community.wildme.org/t/encounter-mediaasset0-column-not-uploading/1238/6

Adoptions still being solicited in Wildbooks

Open questions
We need to preserve the adoption names that exist and credit those adopters, but remove the system charges. We should provide an alternative way for users to provide donations. One-time email alert is a good idea.

Context
Adoptions as they stand are not stable and have a negative impact on Wild Me image with citizen scientists in particular.

  • Wildbook sends confirmation emails that prompt users to adopt their identified animal. However, adoptions are supposed to be disabled due to some payment processing issues.

Image

bulk import log page has locked link interactions

Expected Behavior
All links on imports.jsp open new tabs to target=_self, middle click to target=_blank, and right click opens the standard menu

Current Behavior

  • Can't right-click or scroll wheel click to open links in a new tab from bulk import page (/imports.jsp) but you can ctrl+click or cmd+click

IoT: Inconsistent results in quick search bar

Expected Behavior
The quick search bar on the top of the website displays a list of matches when an individual's ID or nickname is entered

Current Behavior
The quick search bar doesn't show matches for an exact individual ID, but only intermittently. When results do display, they all show with the previous search name in the results.

  1. Search for "usv0184" yields no results
    Image

  2. Search for "usv" yields no results
    Image

  3. Search for "tuako" shows turtle nicknamed Tuako
    Image

  4. Now search "usv" again. There are match results, but they all have Tuako next to the ID
    Image

  5. Search for "platypus" shows turtle nicknamed Platypus
    Image

  6. Search "usv" again and there are now match results with Platypus next to the ID
    Image

Community Link
N/A. Reported during support call with user

QA Notes
Tested in Brave, Chrome, and Firefox. Could not reproduce in other Wildbooks (Flukebook, ACW, or Seadragon).

Non-standardized roles

Expected Behavior
Platforms have the standardize roles of

  • admin
  • orgadmin
  • researcher
  • and any regional roles if platform is leveraging region management

Current Behavior
Four wildbooks have non-standard roles and permissions, which impacts our ability to troubleshoot. Needs to adhere to the permissions set from the documentation

  • Sharkbook.ai
  • Spot-a-shark USA
  • Mantamatcher
  • SeadragonSearch

"Occuring with" columns don't populate on individuals.jsp page

Expected Behavior

  1. Navigate to individual page
  2. scroll down to encounter table or to co-occurrence table (tab next to co-occurrence diagram)
  3. See name of individual that are seen with the individual on the current page

Current Behavior

  1. Navigate to individual page
  2. scroll down to encounter table or to co-occurrence table (tab next to co-occurrence diagram)
  3. "occurring with" columns are empty

Technical investigation
/src/main/webapp/individuals.jsp

There is a co-occurrence diagram that does populate with the "occurring with" individuals.

live platform link to individual page

Community Link
https://community.wildme.org/t/occurring-with-column-on-encounter-list-on-marked-ind-page-not-populating/850

Show a warning when Encounter.submitterID field is invalid during bulk import

Expected behavior
When a user bulk imports a spreadsheet and there is an invalid entry in the Encounter.submitterID field (username doesn't exist or capital letters are used when it's all in lowercase in User Management), an error should appear in the bulk import preview.

Current behavior
When a user bulk imports a spreadsheet, the preview page shows Encounter.submitterID column in green whether or not the username is entered exactly as it appears in User Management (or even if the user exists in that Wildbook).

This leaves all of the uploaded encounters unassigned to a user.

This behavior was tested and observed in IoT and GiraffeSpotter.

Community link
https://community.wildme.org/t/unable-to-assign-encounters/2197

Multiple pages for the same individual in Flukebook and ACW

Expected Behavior
Each individual has a single page, regardless of where the individual was created. Any matching to an individual adds to the existing individual page.

Current Behavior
"A user uploaded 2 bulk imports with some of the same individual IDs across both spreadsheets. Flukebook now shows multiple pages with the same individual ID instead of merging the new IDs. Issue occurred for user when using Windows 10 Enterprise (version 21H2) and Chrome version 109.0.5414.210: https://www.flukebook.org/individualSearchResults.jsp?username=Sheila.Thornton

Investigation notes
Occuring in ACW as well: https://community.wildme.org/t/bulk-import-with-ids-creates-multiple-individual-records-with-the-same-id/1936 (resolved)
https://community.wildme.org/t/data-integrity-issue-duplicate-ids/2078/7

Community Link
https://community.wildme.org/t/questions-about-matching/1918/7 (resolved)
https://community.wildme.org/t/bulk-import-with-ids-creates-multiple-individual-records-with-the-same-id/1936 (resolved)
https://community.wildme.org/t/data-integrity-issue-duplicate-ids/2078/7 (resolved)
https://community.wildme.org/t/id-s-not-merged-upon-import/2488 (resolved)
https://community.wildme.org/t/whiskerbook-user-reports-duplicate-ids/2549 (resolved)

May be related to confirming no match in projects. Wildbook suggests a number for the individual that's already been assigned: #257

Whiskerbook bulk import error when adding new marked individuals

Expected Behavior:
When a user uploads a spreadsheet and adds a new marked individual via MarkedIndividual.individualID, Whiskerbook imports the data and creates a new marked individual page.

Current Behavior:
When a new marked individual (meaning it does not yet have its own page in Whiskerbook) is in the MarkedIndividual.individualIDfield, the bulk import preview page shows a long block of code on top of the import table. Past the code, the import table shows the MarkedIndividual.individualID column in blue. If you commit the import, an error message appears: Your bulk import may not be ready for viewing yet, or task ID 775945c3-0fed-4e99-b3eb-5d76834434ee may be invalid.

Whiskerbook preview pages:

Image

Image

I also tested this by putting an existing marked individual in the MarkedIndividual.individualID field. The code block still appeared above the table, but I was able to upload the spreadsheet without issue.

Removing the MarkedIndividual.individualID field loaded the preview normally with no upload issues, either.

While the community post mentions testing the same spreadsheet in ACW and Flukebook, adding new marked individuals in general did not reproduce the same results observed in Whiskerbook.

Community Link:
https://community.wildme.org/t/bizarre-problem-with-bulk-import/2158

manual annotation supports species without iaclass configured

Desired Behavior
src/main/webapp/encounters/manualAnnotation.jsp

  1. Navigate to encounter and click hamburger menu on gallery
  2. Click add annotation
  3. select viewpoint
  4. drodown for Species, select species
  5. dropdown for IAClass, displays all IAclasses configured for specified species. If none, displays "none configured"; select an IAclass (which includes none configured)
  6. draw annotation
  7. click Save

testing notes

  • iaclass should be none_configured for those that have "none configured" selected
  • always creates a new encounter UNLESS: species matches current encounter species AND annotation IAClass is a part AND annotation is only part associated with encounter.

Current Behavior

  1. Navigate to encounter and click hamburger menu on gallery
  2. Click Add annotation
  3. select viewpoint
  4. draw annotation
  5. dropdown only provides IAclasses that have ml configured to work

Spot-mapping platforms need standard export updated

Expected Behavior

Current Behavior
(WB-1883) Standard export diverges between spot mapping platforms (SAS USA, seabass) and IA-leveraging platforms. We need to get all of the new columns from the standard IA-leveraging export and add those to the spot mapping standard export.

Needs to go to at least sea bass and SAS USA. Should not go to master because not configurable and that's a bigger lift than we are committing to with this ticket.

SIGNIFICANT CORRECTION: the following field sets are missing from standard export on all platforms:

  • Encounter.informOther*
  • Encounter.photographer*
  • Encounter.submitter*

Community Link
https://community.wildme.org/t/add-columsn-to-data-exports/1128

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.