Giter Club home page Giter Club logo

swipesforscience's Introduction

Swipes for Science

Build Status

Welcome!

First and foremost, Welcome! πŸŽ‰ Willkommen! 🎊 Bienvenue! 🎈🎈🎈

Thank you for visiting the SwipesForScience app project repository.

This document (the README file) is a hub to give you some information about the project. Jump straight to one of the sections below, or just scroll down to find out more.

What are we doing?

The problem

  • Big data in biomedical research needs individual inspection, but this doesn’t scale for large datasets.
  • For example, some researchers analyze MRI images to study the brain. But before they start the analysis, they have to visually inspect each image to make sure it is good quality. And at various stages in data processing, researchers have to check images to make sure the analysis is correct. This can get really unweildy when we have large datasets, which are needed to really understand the brain.
  • Citizen science games like EyeWire have been really successful for brain analysis, but it is built for one specific type of data, and its really hard to adapt for a different use-case.
  • Researchers need a way to easily spin up a citizen science game for their own large datasets, ideally without needing to know web-development (so they can focus on research!)

The solution

The SwipesForScience game template will:

  • Generate a game from a configuration file provided by a researcher
  • The game should be easy to deploy online, and require very little knowledge of web technologies/cloud technologies
  • Be fun and easy for citizen scientists to use

Who are we?

The founders of the SwipesForScience game template - Anisha and Andreea - met at the eLife Innovation Sprint in 2018.

The development of this app is supported by eLife Innovation

What do we need?

You! In whatever way you can help.

We need expertise in app development, user experience design, database maintenance, software sustainability, documentation, technical writing, and project management.

Our primary goal is to make it extremely easy for researchers to set up their own data-annotation game. This means that we need to simplify the dev-ops parts of setup, and we need very clear documentation. We also want to design annotation widgets that are easy and fun to use, so that citizen scientists enjoy playing these games.

Get involved

If you think you can help in any of the areas listed above (and we bet you can) or in any of the many areas that we haven't yet thought of (and here we're sure you can) then please check out our contributors' guidelines and our roadmap.

Please note that it's very important to us that we maintain a positive and supportive environment for everyone who wants to participate. When you join us we ask that you follow our code of conduct in all interactions both on and offline.

Contact us

If you want to report a problem or suggest an enhancement we'd love for you to open an issue at this github repository because then we can get right on it. But you can also contact Anisha by email (anishakeshavan AT gmail DOT com) or on twitter.

Find out more

Thank you

Thank you so much for visiting the project and we do hope that you'll join us.

* Also thanks to Kirstie Whitaker for providing this README template

Glossary

  • README file: a document that introduces an open project to the public and any potential contributors
  • repository or repo: a collection of documents related to your project, in which you create and save new code or content
  • Roadmap: a document outlining the schedule of work to be done on a project
  • Milestone: an event or state marking a specific stage in development on the project
  • Issue: the GitHub term for tasks, enhancements, and bugs for your projects

Quickstart

First you should git clone https://github.com/SwipesForScience/SwipesForScience. This app was built with the vue-cli webpack template, so we've included their instructions on how to build below:

# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build

# build for production and view the bundle analyzer report
npm run build --report

# run unit tests
./node_modules/.bin/firebase-server -p 5000 -f test/testDB.json &
npm run unit

# run e2e tests (we don't have these yet)
npm run e2e

# run all tests (we don't have these yet)
npm test

For a detailed explanation on how things work, check out the guide and docs for vue-loader.

Structure

The app structure looks like:

diagram

swipesforscience's People

Contributors

akeshavan avatar wjbarng avatar hjw9673 avatar okamille avatar wiadev avatar otoomet avatar ibhandari10 avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

aniruddhnathani

swipesforscience's Issues

refresh sample counts

Right now, the sampleCounts is loaded on the client when the /Play component is mounted. Since sampleCounts is changing on the backend, we need to periodically check to see if there is a change and re-fetch this from the client.

Here is the method that grabs the data:
https://github.com/evictions/SwipesForScience/blob/master/src/components/Play.vue#L336

We could do something like this:

  1. create a variable called "sessionSamples" -- this will represent the samples that you've seen in a given session. Whenever the Play component is mounted, we should reset this to [].

  2. update the sessionSamples variable when the widget has sent a response: https://github.com/evictions/SwipesForScience/blob/master/src/components/Play.vue#L438

  3. in that same function, if the number of samples seen in a given session is over a threshold number (maybe something defined in the config file), then run the method to grab and set the sampleCounts data

& (ampersand) in file name

Currently if file name contains &, the app sends a wrong request, cropped at the ampersand sign. For instance, the firekey 05a72f458ad9a6a6adb551ca7f605d40 (Washington King 2006 06-2-24953-4) contains file SummonsandComplaint-SUMMONS&COMPLAINT.pdf. In the API logs I can see request for SummonsandComplaint-SUMMONS. My reading is the & is not converted to http-safe (e.g. %26) and hence considered as end of the file name.

quotes in file names

ensure the file names w/quotes work.
In particular "summons.tif" seems to be broken.
Develop a test that checks that.

landing page

clean it up -- background image, title & tagline

New keys + remove frontend parsing

These keys are sent to an endpoint to get a PDF & guessed address. Right now the endpoint requires multiple sources of information (case number, county, state, etc), but since each PDF has its own "key" attribute, we need to:

  1. create endpoints that return a PDF & guessed address with a key
  2. an endpoint that returns a list of keys on the server
  3. update the AddressWidget to call the endpoint with the key (e.g. remove parsing)

Browser PDF Download

If browser is configured to download PDFs, it downloads the summons instead of showing it on the app screen.

Select a different file

If the address is not found in the first (summons) file, provide an option to select different files

Timeout handling

Some files take extra minute or so to be converted.
Need to figure out a way to handle this.
Make it wait longer? i.e. 1min?

UI change on Play

  • instead of mouseover on field names, use small, gray text underneath
  • optimize space on screen (remove side margins so that PDF actually takes half)
  • left side and right side independent scrolling

Certain pdf-s not visible

Summons-SUMMONS.pdf from King 2010 10-2-33955-8 (fb id 5617d34b8341eb14dbf71cb7e708011b) does not display. It seems to be a valid pdf, and is visible in firefox when looked separately (file://...). Log files suggest all well.

Note: this happened in firefox.

Add current file name under additional information

Before adding the file name of where the address is extracted I assumed that the page displayed is "summons". However, I can several times that address is pulled from a file where I am not sure if this is the one that is displayed. So a name of the currently displayed file would be useful.

requesting _null_ file

Sometimes the backend fails with 400, leading to failed to load data message on screen. It is related requesting file named null. Not sure why this happens as the preceding /files request returns a valid file name (apparently). This happens with

  • Whatcom 2004 04-2-00591-1
  • Whatcom 2004 04-2-01479-1 (e9e96c70e4fbbea0e3e67c551dae77ba)
  • Whatcom 2004 04-2-02934-2 (firebase key 6a6bbdbe1732f2bca91a2a82a4199071)
  • Whatcom 2004 04-2-02958-5 (firebase key b10e7b18204f4b8b4b064bbd9027f38a)

In all these cases the file name list contains just one name, Public.TIF.

ASAP

fix those weird LF errors!! and then lint the code

Make tutorial

it can be a video, or text, and you can clobber Tutorial.vue with your tutorial

A way to enter/view additional information

The current webpage is fairly good for the basic info but there should be an option like additional fields for things like court, building, county and such.

There should also be an option to see additional information, in particular

  • file name where the address is coming from
  • list of all files.
  • case number
  • the estimated goodness measure

These are not needed for laymen but I occasionally feel the need to understand better what's going on there.

Configure button

Is there anyway that we can remove the 'configure' button displayed on the bottom left of the main page?

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.