Giter Club home page Giter Club logo

consenscia's Introduction

consenscia

A webapp for capturing, understanding, and collaboratively building scientific consensus. Motivated by the replication crisis.

Motivation

It's currently difficult to understand the state of scientific consensus. For a given study, it's hard to know whether to believe its conclusions. Basic things like replications, peer review, author credibility, retractions, etc...are useful for determining this, but are difficult or sometimes impossible to find.

Platforms like Wikipedia and StackExchange have managed to motivate users to collaboratively create large stores of structured, useful knowledge. Perhaps similar approaches could be used to create structured stores of knowledge about scientific research.

For example, let's say we want to figure out whether to believe the conclusions of a study, but we don't have the skills necessary to analyze the methodology or reasoning used within the paper. This is the situation that most people, including journalists, find themselves in. Here are just a few useful signals we can use to try to determine what to believe:

  • It's currently difficult to determine if a study has been replicated unless you are a researcher who is staying on top of a given field. A successful replication, however (given the right circumstances) can be a VERY useful signal that a study's conclusions are to be trusted.
  • Some journals are more trustworthy than other journals. This is hard to determine unless you know how to do it.
  • Peer review. This is either difficult or impossible to find, as peer review is an internal part of journals. We can, however, look at post-publication peer review. PubPeer is one place we can do this, but few seem to be aware of this and participation here seems to be hit and miss. Also, pubpeer leaves it up to the reader to read through the comments on a paper and decide what to make of them. Given the technical nature of these discussions, most readers would be unable to do this.

So, what if we had a place where we could quickly see this information and perhaps calculate some sort of "score" for the quality of the research? What if we could see post-publication peer review, but with information from the scientific community on what to think about this commentary? What if we could see whether the study has been replicated?

For example, something that might be useful is if scientific peers can "rate" a paper based on their evaluation of its validity. Similarly, being able to "rate" peer review feedback could help us understand what feedback is or isn't valid. By looking at scientists publications and participation on such a platform, we can get an idea of how trustworthy their ratings are (we probably wouldn't want to let a biologist's rating heavily influence the score for a paper on social psychology). We may also want to pay attention to non-academic participants' feedback, if we can determine that they are capable of making useful judgements.

In order to create something like this, we would need to incentivize participation. This has been solved before on platforms like Wikipedia and StackExchange. It ought to be solvable in this domain, as well. One of the benefits (and difficulties) of this domain is that scientists have a reputation to uphold - this can be a useful incentive by itself.

This project aims to create something that can help us do this - to be able to determine the quality / trustworthiness of a published paper.

Dev Instructions

Configuring and Initializing Database

You must have a running MariaDB to point to where you want the data to be stored. It will be stored in a new database called consensus. To configure for your environment, simply make a copy of template.gradle.properties and rename it gradle.properties, then fill in the blanks.

Once that has been configured, run the "initializeDB" gradle task. Once you have done this, whenever you want to make sure your database is up-to-date with what has been checked in, you can run the "updateDB" task.

This app consists of a frontend server (using gulp-connect) and a separate webservice server using spring boot. By default, the frontend runs on port 8080 and the webservice runs on port 3000. You can change those by modifying the ports in gulpfile.js and application.properties, respectively.

Running and Developing

For development, this app consists of a frontend server (using gulp-connect) and a separate webservice server using spring boot. It also consists of a MariaDB.

To initialize your database from scratch (or re-initialize it from scratch), run the "initializeDB" task. To make sure your database is up to date, simply run the "updateDB" task.

Running servers

To start the webservice, run the "webserviceRun" task. To start the frontend, run the "frontendRun" task. Run the "frontendWatch" task so that frontend files will be automatically built and deployed when they are changed.

Making changes

As long as you are running "frontendWatch", any frontend changes you make will cause the frontend to be compiled and deployed.

Whenever you make webservice changes, running the "buildWebservice" task should cause the server to restart and the changes to be applied.

Whenever you make changes to the database, you should make them in liquibaseDatabaseChangelog.xml. You can then apply them using the updateDB task

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.