Giter Club home page Giter Club logo

knox's Introduction

Knox - A Genetic Design Space Repository

Quickstart

Docker Instructions

  1. Install Docker Compose
  2. Clone this repository
  3. Run docker-compose up --build in the root directory of this repo
  4. Open Knox web interface at http://localhost:8080

Non-Docker Instructions

  1. Install Neo4J
  2. Open the Desktop app and add a new project
  3. Within the project, click "Add Graph", then create a local graph using "kn0x" as password
  4. Click "Start"
  5. Download and Install Maven
  6. Clone this repository
  7. Run mvn spring-boot:run in the root directory of this repo
  8. Open Knox web interface at http://localhost:8080

knox's People

Contributors

dany-fu avatar erschwartz avatar evanbowman avatar jamesr787 avatar mgarcia7 avatar nroehner avatar vidyaap avatar

Stargazers

 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

knox's Issues

Combinatorial SBOL Export - RESTful API

Extend Knox's RESTful API with an endpoint for exporting combinatorial SBOL ("/sbol/exportCombinatorial"). The input parameters for this endpoint should be the spaceID of the design space graph to be exported as SBOL and a namespace (for example, "http://example.org") to prefix the URIs of all SBOL objects generated during the export process. The generated objects should include CombinatorialDerivations and their template ComponentDefinitions. The variants properties of a CombinatorialDerivation's VariableComponents should contain the component IDs labeling the edges of the exported design space graph. These component IDs are ideally SBOL compliant URIs consisting of a namespace followed by a displayId and a version (for example, "http://examples.org/pTet/1").

Java heap space - out of memory

To replicate, checkout the version_control branch

  1. Join two design spaces (each with a small amount of version history)
  2. Checkout a different branch from the new design space

Cypher error when making a commit

Error is thrown when calling the/branch/commitTo endpoint. This can be reproduced on the current version_control branch

2019-03-01 15:28:20.025  WARN 26182 --- [nio-8080-exec-7] o.n.o.drivers.http.request.HttpRequest   : Thread: 54, response: Unrecognized transaction id. Transaction may have timed out and been rolled back.
2019-03-01 15:28:20.027  WARN 26182 --- [nio-8080-exec-7] o.n.ogm.drivers.http.driver.HttpDriver   : http://localhost:7474/db/data/transaction/87
2019-03-01 15:28:20.046 ERROR 26182 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: Error executing Cypher "Neo.TransientError.Network.CommunicationError"; Code: Neo.TransientError.Network.CommunicationError; Description: Can not start an object, expecting field name; nested exception is org.neo4j.ogm.exception.CypherException: Error executing Cypher "Neo.TransientError.Network.CommunicationError"; Code: Neo.TransientError.Network.CommunicationError; Description: Can not start an object, expecting field name] with root cause

org.neo4j.ogm.exception.CypherException: Error executing Cypher "Neo.TransientError.Network.CommunicationError"; Code: Neo.TransientError.Network.CommunicationError; Description: Can not start an object, expecting field name

Combinatorial SBOL Export - Web GUI

Once a new endpoint for exporting combinatorial SBOL has been added to Knox's RESTful API (see #3), its web GUI should also be extended with an Export tab that includes appropriate input controls linked to the new endpoint.

Missing edge when getting all Node edges

The method getEdges() from the Node class returns a set of edges, so it removes duplicate edges that are important. For example, the "option" case (dotted line) uses two edges with the same source and destination to represent it, but only one is returned in the edge set.

Distinguish Edges with Same Source and Sink

Enhance Knox's visualization of edges with the same source and sink nodes. Any ordered pair of nodes can have up to three edges from the first node to the second: an edge with an orientation of "inline", an edge with an orientation of "reverseComplement", and a blank edge (which would have orientation "none"). The link below shows some examples of how one might condense the visualization of design space graphs as they are stored by Knox. These include:

  1. Replacing a labeled edge and blank edge that have the same sink and source with a dashed edge.
  2. Replacing labeled edges with different orientations but the same sink and source with an edge that is labeled with two symbols having different orientations (instead of just one symbol as usual).

This would entail modifying the d3GraphDesignSpace endpoint ("designSpace/graph/d3") of Knox's RESTful API so that it returns the appropriate D3 representation. In addition, there may need to be modifications to how Knox's web GUI uses the D3 representation returned by a call to d3GraphDesignSpace.

https://docs.google.com/presentation/d/1BBF3KeHLVOipeEAWHTSoSlFU6eVy-r4n_Y6oT1DF7Nc/edit?usp=sharing

Typo in image filename

The file blunt_end_restriction_enzyme_clevage_site.svg is misspelt and therefore shows a user_defined.svg symbol instead.
File is at knox/src/main/resources/static/img/sbol/blunt_end_restriction_enzyme_clevage_site.svg

Demo Fails - "No enum constant knox.spring.data.neo4j.domain.Edge.Orientation.inline"

Windows 10
Steps to reproduce

  1. Download & Install Neo4j Browser
  2. Follow the same steps in README - Quickstart (except running KnoxApplication.java from IntelliJ)
  3. Run step 10 in Quickstart and it fails on joining test 1 with test 2, outputting the following errors in the console

`2019-07-05 13:59:50.619 ERROR 21664 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Error mapping GraphModel to instance of knox.spring.data.neo4j.domain.DesignSpace; nested exception is org.neo4j.ogm.exception.MappingException: Error mapping GraphModel to instance of knox.spring.data.neo4j.domain.DesignSpace] with root cause

java.lang.IllegalArgumentException: No enum constant knox.spring.data.neo4j.domain.Edge.Orientation.inline`

On the webpage:
image

Make Commit After Design Space Operation with Same Input and Output Optional

Add a Boolean argument "isCommit" to the JoinDesignSpace, orDesignSpaces, repeatDesignSpaces, andDesignSpaces, and mergeDesignSpaces methods in DesignSpaceService with a default value of true.

If "isCommit" is true, then a merge commit should be created by calling the mergeVersionHistories method as normal. If "isCommit" is false and the arguments of the operator are such that the output design space is also one of the input design spaces, then no merge commit should be created (do not call mergeVersionHistories).

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.