Coder Social home page Coder Social logo

intermine / intermine-registry Goto Github PK

View Code? Open in Web Editor NEW
7.0 8.0 24.0 12.15 MB

Registry to store and browse all known instances of InterMine. Developed during GSoC 2017 by Leonardo Kuffo

Home Page: http://registry.intermine.org

License: GNU Lesser General Public License v2.1

JavaScript 48.37% CSS 37.54% HTML 14.09%
heroku mongodb intermine swagger-api swagger-docs open-source webservices google-summer-of-code node-js genomics

intermine-registry's Introduction

InterMine Registry

InterMine Registry is a place where all the up-to-date instances information is stored and can be consumed by applications like Blue Genes, iOS, InterMine R, the friendly mine tool or available to everyone who needs it. The core of InterMine Registry is its RESTful API. Running over Node.js integrated with MongoDB, it contains methods (endpoints) to administer the instances on the registry (add, update & delete) and search among them. Furthermore, InterMine Registry also includes a nice fully responsive front-end web application, from which everyone can see all the InterMine instances and search among them.

GSoC 2017

InterMine registry was entirely implemented and developed as a GSoC 2017 program project by the student Leonardo Kuffo. Click here to find all of Leonardo's contributions for the project as evidence of his work.

Registry API

The core of the InterMine Registry App is the restFUL API. It contains endpoints to search and administer instances. These endpoints can be reached through the following base path: http://intermine.org/registry/service/

  • POST /instances Add an instance to the registry.
  • GET /instances Get all the instances from the registry.
  • GET /instances/{instanceIdOrName} Get an instance by its ID or Name.
  • PUT /instances/{instanceId} Update an instance.
  • DELETE /instances/{instanceId} Deletes an instance.
  • PUT /synchronize Update the branding & version information of every instance.
  • PUT /synchronize/{instanceIdOrName} Update the branding & version information of the specified instance.

You can check the detailed API documentation for more information and testing.

Installation

Please visit getting started

Troubleshooting tips - The installation might fail because of the bcrypt dependency if you're not running on a stable version of node. Bcrypt doesn't support unstable version of node, so switch to the current stable version of the node , you can use nvm to manage your node version.

Configure the API Docs

The API-DOCS are generated based on the swagger.json file in the repository. In order for the API-DOCS to work correctly, on this file you have to specify the "HOST" and the "SCHEME" of the app (http or https).

Detailed Documentation

For more in-deep information about the code, and detailed guidelines on the project, please, visit the following link.

intermine-registry's People

Contributors

akshatbhargava123 avatar amand1996 avatar arunans23 avatar bistaastha avatar cadenceprestissimo avatar corywritescode avatar dependabot[bot] avatar dmahajan980 avatar flaredragon avatar himanshukumar660 avatar itolimaesther avatar jgo613 avatar josephbadua avatar lakshsingla avatar raghav4 avatar yochannah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intermine-registry's Issues

Versions should not being expected as input during the instance creation

These 3 endpoints should be used instead
service/version (the oldest implemented endpoint)
service/version/intermine
service/version/release
TO NOTE
Some instances might use an old version of intermine. In that case, the most recent endpoints (service/version/intermine and service/version/release) return wrong info, in particular, they return the same value of service/version.
If service/version=service/version/intermine we shouldn’t set the intermine_version field. Same for release_version.

Clear .idea files

This repo contains a .idea folder which does not look good. Removing it would be better.

Add sync to FE

Add sync functionality on the webapp. Sync all (maybe next to Add instance) and Sync instance (maybe next to Update)

Ambiguous entries in the service instance of registry API

In the service instance of registry API (https://registry.intermine.org/service/instances), we have certain ambiguous entries. For example,

  1. We can find that in the entries for mines namely ThaleMine, WormMine, YeastMine and ZebrafishMine, we have twitter key field values start with '@' while in all other mines, the twitter key field start without '@'.
  2. We can also find the ambiguities in the neighborhood lists. In MaizeMine, the neighborhood list contains Plants but starts with space, while all other entries start without space.
    There could possibly be other ambiguities, but till now I found just these two.

Add print stylesheet with aim to fit everything on one A4 page

The InterMine Registry is pretty awesome. When we go to conferences it would be nice to print out a few sheets containing a list of all the InterMines, straight from the registry.

We'd need to show the following fields:

  • top of page:
  • Once per intermine:
    • mine name (e.g. "BovineMine")
    • organisms found in each mine
    • ideally URL of each mine if it fits?

The end goal of this exercise is to make this a nice, compact sheet that people interested in InterMine can visually scan to see if their favourite organism is present, and if so, where to go to find it.

More info on print stylesheets: https://www.smashingmagazine.com/2015/01/designing-for-print-with-css/

Grid View: reduce preview box

reduce the size of the preview box. Title + description + buttons on the left side, fields on the right side.
Logo close to title

Buttons order

Always same order for the buttons: Update, Synchronize, Delete, Close

Registry URL

Problem when missing the last / in the url webapp

Add a link to github repo

I would like the registry to include a github (or wherever) link to the repository linked to the mine.

Optional of course! but useful for me.

Dev Mine checkbox doesn't work

When you add an instance and check the flag "Dev Mine", the instance is created with the attribute isProduction set to true

Error with installation

On following the instructions as given in the README.md of the repo, I faced the following MongoDB error when I did npm start
screenshot 2018-02-14 18 54 55

Can someone help me?
Did I get something wrong?

Error returned when number of instances returned by the query is zero

While searching for mines in the registry, if query returns an empty set, the status code is set to 404 which gives an error in chrome console.

For example if you click on the following link, it returns a status code of 404.
http://registry.intermine.org/service/instances/?q=abc

Returning an empty query is not an error and it should be returned with a 200 status code.

Here, the if condition, checking for empty set should be removed.

if (instances.length === 0){
            api_response.statusCode = 404;
}

Mandatory fields

Not all the filed are mandatory when a new instance is created via POST /instances

Add custom fields to registry - maintainer name and url

We'd like to add the option to include the maintainer organisation of any given intermine and a link to their site, eg. the json properties for flymine or humanmine might look like this:

maintainerOrgName : "InterMine core team, Micklem Lab",
maintainerUrl : "http://intermine.org/"

(from intermine/intermine#1751)

See also the registry docs here: https://docs.google.com/document/d/1ODWOBPA0XePfXmpKN75GQoBPjvFH9Rnp5yIooD1szXw/edit#

cc @danielabutano @amand1996

Text suggestion

Do you agree that when the registry says

    All InterMine instances up-to-date information in one place.

it should probably say something like

    Information on all registered InterMine instances in one place.

There are other mines out there that are private or haven't been registered. Also the grammar of the exiting phrase might not be quite right ;-)

Request: add a new parameter to mine to indicate if it's a dev or production intermine

We have apps using the registry now. Yay! Great job!

We've just realised something though, we need to differentiate between live InterMines and dev InterMines.

  1. New apps are using the live mines and knocking them over. Need to use dev mines ONLY until the app is thoroughly tested!
  2. End users (of the iOS app for example) do not want to see the dev mines.

So the registry needs to differentiate between live InterMines, meant for public consumption and development mines, meant for testing only.

Can you do this:

  • Add new parameter to a mine, a boolean named isProduction
  • Mark as true except for beta humanmine and beta flymine and yeastmine dev
  • /instances Only return production mines by default
  • /instances Add optional parameter to specify which InterMines to retrieve.
RequestAction
`/instances`Returns production mines ONLY, isProduction=TRUE
`/instances?mines=all`Returns all mines
`/instances?mines=dev`Returns only non-production mines, isProduction=FALSE
`/instances?mines=prod`Returns all production mines, isProduction=TRUE

Overlapping buttons in mobile

Description

The "Visit website" button is overlapping with the "Organisms" in mobile at a few places.

Screenshot

intermine 3

@yochannah, shall I work on this if it is an appropriate issue?

Search case sensitive

GET /instances/{instanceIdOrName} should not be case sensitive
/instances/flymine should return the FlyMine instance

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.