Coder Social home page Coder Social logo

frontend's Introduction

Project Cognoma

Putting machine learning in the hands of cancer biologists.

Project Cognoma is an open source project to create a webapp for analyzing cancer data. We're a community-driven philanthropic project that began as a collaboration between the Greene Lab, DataPhilly, and Code for Philly. Our contributors are primarily based in the Philadelphia area, but anyone anywhere is welcome. This GitHub repository is the administrative and informational home of Cognoma.

The Meetup phase of Cognoma is now complete! The Childhood Cancer Data Lab of Alex's Lemonade Stand Foundation will be providing longterm maintenance. Public contributions are still welcome through GitHub. The main priority is enhancements and bug fixes to improve http://cognoma.org. For a nice overview of the project, see its coverage by The Philadelphia Citizen.

Teams and Repositories

The project is composed of four teams with their own corresponding repositories:

Team Name Repositories Description
Cancer Data cancer-data, genes, figshare processing the underlying cancer data to the formats required for this project.
Machine Learning machine-learning, cognoml building classifiers to predict mutation status from gene expression data.
Backend core-service, task-service, ml-workers, infrastructure creating the infrastructure to power the webapp and glue the components together.
Frontend frontend, uiux building the webapp that users interact with.

New Here?

If you are a new user and would like to get involved, please introduce yourself. Contributions are made through GitHub, so if you are unfamiliar with git or GitHub, check out the sandbox for a place to learn by doing.

Meetup Schedule

We hold project meetups. Our usual meeting spot is at Industrious (where CandiDate is located). The address is 230 S Broad St, Floor 17, Philadelphia.

📅 Date ⌚ Time 🗺 Location ℹ️ Meetup Details 💰 Sponsor
Wednesday, October 11, 2017 6:00 PM MilkBoy DataPhilly Alex’s Lemonade Stand Foundation
Tuesday, August 15, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, July 11, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, June 27, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, May 30, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, April 25, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, April 4, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, February 28, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Monday, February 13, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, January 31, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Monday, January 16, 2017 9:00 AM Philly Think Space Frontend Only MLK Day Volunteers from Think Company
Tuesday, January 10, 2017 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, December 20, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, December 6, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, November 15, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, November 1, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, October 18, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, October 4, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Monday, September 19, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, September 6, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, August 23, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, August 9, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, July 26, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, July 19, 2016 6:00 PM CandiDate DataPhilly Penn Institute for Biomedical Informatics
Tuesday, July 12, 2016 6:00 PM CandiDate DataPhilly MilkBoy
Tuesday, July 5, 2016 6:00 PM CandiDate DataPhilly Neo Technology
Tuesday, June 28, 2016 6:00 PM MilkBoy DataPhilly / Code for Philly MilkBoy

Contributing

Community contributions are the driving force behind Cognoma. The heatmap below shows which users have contributed to which repositories:

Contribution Heatmap

See the guidelines for contributing for more information.

Maintainers

Cognoma relies on our generous community maintainers to assist with contributions. Thanks to the following maintainers for their help:

frontend's People

Contributors

arielsvn avatar bdolly avatar bobmiller avatar cgreene avatar dcgoss avatar dhimmel avatar gwaybio avatar keenleo avatar kurtwheeler avatar pezfish avatar ramenhog avatar rdvelazquez avatar txnnxr avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

frontend's Issues

Results Viewer View/App

A view needs to be created to show the results of a given classifier/query and offer data visualizations.

@dhimmel can you please provide some functional as well as layout requirements for this view, specifically those that pertain to the data visualization(s) needed?

Component Creation: Mutations Overview

@txnnxr welcome aboard! When you have a chance to familiarize yourself with the front-end scaffolding in the develop branch could you please start on the basic markup for the Mutations Overview component in the Query sidebar. This can be created in the develop branch of frontend repo app/js/components/MutationsOverview/mutations_overview.tpl.html

Once you have created the basic markup for the component we will work on integrating it into Angular and hooking it up with the different data/states it needs to communicate with the rest of the application logic.

You can view the exported jpgs of the MVP at https://github.com/cognoma/uiux/tree/master/wireframes/exports/invision_app_prototype going through these should give you an idea of the layout for component. You can also view the MVP prototype and click through to give you an idea of the functionality.

Negative sample count not appearing when there are 0 positives

// simple math for the number of samples without a mutated gene
// matching the user selected genes
DiseaseModel.prototype._setNegatives = function(){
this.negatives = this.positives ? (this.samples - this.positives) : null;
$log.log(`_setNegatives:${this.negatives}`);
}

Negative count is currently set to null when there are 0 positives, meaning there is no negatives shown in the negative box.
The solution is to fix these calculations by setting negatives to just this.samples - this.positives

Switch default branch to develop

@bdolly what do you think of switching the default branch on GitHub from develop to master? I'd like to address two things:

  1. cognoma/frontend contributions getting counted in our contribution analysis, which only looks at default branches of repos.
  2. when someone comes across this repository, they are likely to miss the extent of activity, since it's all taking place on an out-of-view branch.

Another solution would be syncing master with develop more often. @bdolly and @awm33 what do you think is best? cognoma/core-service also has similar issues.

User(s) Implementation

Users do not want to have to register to use the application therefore the solution is to create a user slug (random string generated from core-service /Users api). One requirement is that the user slug should not be in the url at any point. However the user slug is required for a user to be able to POST a classifier to the core-service and to be able to save classifiers (queries from the query builder) before sending them to ML tasks.

It would be preferable to have some sort of "getUserLink" functionality so that an authenticated user would have reference to return to their account.

Layout and Documentation for the User Profile view can be found in the UI/UX wireframes.

Component Creation: Query Set - Mutations

Create in develop branch basic HTML5 markup and styling for the Gene/Mutations Set Component with static data in the template. This can be created inside app/js/components/queryBuilder/querySets/querySetMutations/ , there maybe the need to create additional child components which should be nested inside this directior have their own directories and templates.

The design for the populated state of this component can be found at https://github.com/cognoma/uiux/blob/master/wireframes/exports/invision_app_prototype/1.3-Cognoma-GeneSelection-GENE-ADDED.jpg

Defining a custom elastic search query for mygene.info

Based on our feedback, @cyrus0824 and @newgene have added a new custom user query feature to mygene.info, as described in https://github.com/SuLab/mygene.info/issues/4#issuecomment-273294532. So I think we will have to submit a pull request adding our custom query to SuLab/biothings.userqueries/mygene -- unless the prefix query is already what we need.

Anyone interested in tackling this issue? Tagging @awm33 and @cgreene in case they otherwise wouldn't get notified.

Visualizing pre-classifier data

At the meetup last night (9/6) we discussed already existing services that provide a way of visualizing the input data to cognoma. @mike19106 had the idea that we may be able to query into the API of these services and use their visualization of the same data.

The main point is that we should not try to reinvent the wheel visualizing these data since other services already do this very well. I mentioned similar services in passing in cognoma/cancer-data#10 but I will list them here as well:

CBioPortal
COSMIC
NCI GDC
Broad Firehose

Someone from the frontend team could look into these service APIs (I know at least CBioPortal has one) to see if we can repurpose some of their visualizations.

Feature idea - Previous Similar Query Finder

During the meeting between the Backend and Frontend groups, Joel had a good idea for a feature.

Once a user selects genes and samples of interest, our software could let the user know if a similar query has previously been run. The user could then see which ML algorithms other users selected for this data set, and the results they got. The user could then decide to use the results already obtained, or try the running the data set with a different algorithm.

I do not know if we want to include this feature, in our first release, or implement it later when we have more accumulated run data.

post-classification visualizations

Opening this as an offshoot of the #13, at the suggestion of Dan ( @dhimmel ).

Basically we need to come up with a minimal list of visualizations for our initial release. Later we can add more bells and whistles. Hopefully Dan ( @dhimmel ), Greg ( @gwaygenomics ) and Casey ( @cgreene ) as well as anyone else can weigh in.

Initially our release is going to have one algorithm - Logistical Regression. So we need to determine what kinds of outputs (graphs, charts, tables, etc.) will best help cancer researchers.

I am thinking a

  1. a heat map to show which gene tissues combo's have the most effect (this could also be useful in the pre-classifier phase)

  2. a Table showing the top predictors

  3. ROC Charts

  4. Box and whisker chart

What do you guys think?

Update and expand on Unit Tests for all Query Builder components

Since much of the Query Builder has been re-factored there is a need to update and expand upon the unit tests for each components. The test should include any functional concerns as well component attribute binding and pass when $npm run unit is executed.

More Design

Here are a few more potential screen layouts. The are in HTML, just unzip the files, everything you need to run them is included(hopefully?). Theyn use bootstrap, so you need to view then when you have a web connection.

I was going for function over style, so it pretty rough.

It nowhere near complete, so START BY OPENING THE WELCOME SCREEN, click on anonymous login, and on the main screen, click on the results menu, and the choose menu click
Results for Current Classifier. Check out the tabs on this screen.

CognomaMain.zip

Discussion between the Data and Front-end teams. 9/6/2016 Meetup Notes.

Discussion between the Data and Front-end teams. 9/6/2016 Meetup Notes.

Summary

The data and front-end teams meet and discussed how the a researcher might interact with the application.

We asked our selves the question. As a scientist/researcher how do I select the genes and parameters to be submitted to machine learning?

The data team shared an example ML that started with a pathway. A heat map showing the percentage of mutation across different cancer types, In [16], was used to show tissues that did not demonstrate aberrations. This was used to discuss a possible first case. In this use case ntroducing these summary statistics and visualizations during the selection and input process could improve UX in the gognoma application.

We then discussed what dimensions might be used during the input process and other ways data visualizations might be used during the input process.

First Use Case

Question to answer

  • How can we expose summary statistics during the gene selection process?

Step one make selections on the possible dimensions below

  • Tissue type (aka cancer type)
    • 33 different options
  • Age
    • Range box free form
  • Gender
    • All/Male/Female
  • Genes
    • Pathway, single gene, ad-hoc group of genes
      • enable add or remove
      • auto complete
      • on add or remove

Step two

  • "pre classification" before the gene's and tissues are submitted to machine learning.
  • expose summary statistics to the user so that the input parameters can be adjusted

Action Items/Next steps

  • Storyboards for use cases
  • Compile list of pathways
  • Compile list of sites or services that provide the functionality required in gognoma app selection process.
    • can they be leveraged?
    • can the user experience be improved?

Questions

  • Should UX/UI be separate from Front-end? - Ben will submit an issue
  • What software should we use to story boarding and wire-framing.
    • Adobe xD
    • invisionapp.com
    • pen and paper
    • git issues
    • other
  • Should we store parameters chosen by the researcher
    • How much do we store?

Other Notes and Learning

We also learned that Data sets in their initial state have gene symbol. Users will likely know the gene symbols; they may not know the gene ID's. There is a one to many relationship between the gene symbols and the IDs. The machine learning group has a method to map gene symbols to IDs

Create a separate UX repo. in the project

At the meetup on Sept. 6 the front-end group decided that it would be beneficial to have a separate User Experience repo. inside the project so that User Experience specific issues can be tracked and evolve separately from the technology stack and development on the frontend

Deploy to GitHub pages

This issue is for deploying the webapp to http://cognoma.org. From my understanding, the static webapp files are created in the build directory by running:

npm install
npm run build

As per #73 (comment), we will use ghp-import to overwrite the gh-pages branch with the contents of the build (after building the app locally).

We will need to make sure the build directory contains CNAME file whose contents are:

cognoma.org

@bdolly, should we just track build/CNAME in git, or do we have to do something special so npm run build doesn't overwrite it?

npm run build: events.js unhandled error event

On Ubuntu 16.10 I'm getting an error when running npm run build. Here's the terminal output:

> [email protected] build /home/dhimmel/Documents/greene/cognoma/frontend
> cross-env NODE_ENV=production ./node_modules/.bin/gulp prod

[15:14:10] Requiring external module babel-register
[15:14:12] Using gulpfile ~/Documents/greene/cognoma/frontend/gulpfile.babel.js
[15:14:12] Starting 'clean'...
[15:14:12] Finished 'clean' after 5.93 ms
[15:14:12] Starting 'prod'...
[15:14:12] Starting 'styles'...
[15:14:12] Starting 'images'...
[15:14:12] Starting 'fonts'...
[15:14:12] Starting 'views'...
[15:14:12] Finished 'views' after 593 μs
[15:14:12] Finished 'fonts' after 13 ms

events.js:163
      throw er; // Unhandled 'error' event
      ^
Error: spawn /home/dhimmel/Documents/greene/cognoma/frontend/node_modules/optipng-bin/vendor/optipng ENOENT
    at exports._errnoException (util.js:1034:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
    at onErrorNT (internal/child_process.js:367:16)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)

npm ERR! Linux 4.8.0-39-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "build"
npm ERR! node v7.8.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: `cross-env NODE_ENV=production ./node_modules/.bin/gulp prod`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] build script 'cross-env NODE_ENV=production ./node_modules/.bin/gulp prod'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the Cognoma package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     cross-env NODE_ENV=production ./node_modules/.bin/gulp prod
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs Cognoma
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls Cognoma
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/dhimmel/.npm/_logs/2017-04-04T19_14_12_238Z-debug.log

Here's the error log npm suggested I include in this issue: 2017-04-04T19_14_12_238Z-debug.log.txt.

Creating the mutation frequency heatmap for the query review screen

For the query review screen, we'd like to have a heatmap showing the frequency of each mutation for each disease type. You can see what these heatmaps will look like in this notebook.

@bdolly so you can get started implementing this, you will need the following two things:

  1. the vega-lite specification here. You will override the data attribute for the query specific data.
  2. the input data for vega-lite. You can see an example here. This data should must be passed to the vega-lite spec. Ultimately the frontend will compute these mutation frequencies based on the selected mutations and disease types.

This example here corresponds to many genes and disease types. I'd expect most heatmaps to be smaller (have fewer rows & columns).

Continuous Integration

The backend repos have been set up to use CIrcleCI for Continuous Integration. I think we should set that up on the frontend. Right not this is just for testing CI, so on a change to master, that would run tests in a container on CircleCI. CircleCI is enabled for this Github org, so anyone who is a maintainer can add it to the repo.

We'll also need to pick some test runners, usually a runner like karma and a headless browser like phantom is used.

Component Creation: Query Builder Wizard Bar

Create in develop branch basic HTML5 markup and styling for the queryBuilderWizard component in app/js/components/queryBuilder/queryBuilderWizard. The functionality for this can be seen in the clickable prototype at https://invis.io/5P8PM61R8 and the flat design files can be found in uiux repo if graphic assets are needed please let me know and I can export them into the app/images directory

This should ideally function using the angular ui router to change and update the application state.

Status Chooser - Options

There was a lot of discussion last night about different screens a user will interact with (See cognoma/core-service#13). One component of the screens we call Status Chooser. We can think of this option really as Mutation Status Chooser for the biologists, or the Y matrix for the machine learning enthusiasts. See cognoma/core-service#3 for some additional comments.

Essentially, the user will select a subset of genes that the backend will need to take in and process into a vector of 1's and 0's corresponding to the mutation status of samples (1 = mutation, 0 = wild-type).

For the front end people, we need to view the Status Chooser as three possible types of user interactions:

  1. Text - User will type gene identifiers directly into the screen
  2. Import Text - User will upload a text file directly into the browser
  3. Neo4J Query - this is where we will need to be creative!
    1. Compound
    2. Drug
    3. Biological Pathway
    4. Side Effect
    5. ...

For example, the Neo4J query interaction would be something like a dropdown menu with the compound, drug, pathway, etc. options listed above followed by a text box with auto-complete text options. This option will need to translate a user query into the Cypher Language to communicate with @dhimmel's network hetionet to ultimately retrieve a list of genes that are associated with the user query (e.g. all genes associated with a specific drug)

Typo: "alogrithm"

Jobs/Classifier View

As per discussion at the Jan 31, 2017 meetup between Front-end and Back-end working groups there is a need to add a Jobs/Classifier view that will accessible from the global navigation side-bar.

This view will display lists of queries/classifiers (sent from the query builder to the backend) by status (Completed, In Progress, Saved ).

Layout and requirements for this view can be found in the UI/UX repo wireframes folder.

Design

I think it's easier to discuss frontend design using real drawings / wireframes.

Here's my first crack at it. I am not a designer haha.

The styles are based on bootstrap.

cognoma desktop hd

The tabbed Genes input section is incomplete. But that would contain text, file upload, and "Assisted" neo4j powered gene input. The text input could possibly be a type ahead input like tissues. The algorithm and submission summary pages also need to be done. I feel like I don't know enough about what the algorithm page needs to obtain or would look like.

I can iterate based on feedback, or if someone else would like to contribute I can share the source file. It's in Sketch app format.

Angular Service creation: Query Param Selector/Gene Search

A mock angular backend service needs to be created that will provide Gene/Mutation search result json to the queryParamSelectorGenes component search functionality.

@awm33 @dhimmel this service will provide the data to front-end for the gene search results. That data has been discussed somewhat in #30 with a mention of using https://mygene.info/v3/ queries, is that the endpoint that the service should implement queries with or should we roll-up a custom mock httpBackend that will be swapped out for use with the core-service /genes api endpoint eventually?

MLK DAY - Re-org Component Directory Structure

Organize components into two top-level directories: components/common and components/queryBuilder. diseaseCard and geneCard will be placed inside queryBuilder; all others will be placed in common.

Component Creation: Query Set - Disease Type

Create in develop branch basic HTML5 markup and styling for the Gene/Mutations Set Component with static data in the template. This can be created inside app/js/components/queryBuilder/querySets/querySetDiseaseType/ , there maybe the need to create additional child components which should be nested inside this directior have their own directories and templates.

The design for the populated state of this component can be found at https://github.com/cognoma/uiux/blob/master/wireframes/exports/invision_app_prototype/2.3-Cognoma-SampleSelection-DISEASE-ADDED.jpg

Frontend Production Environment

cognoma.org

Requirements

  • S3 / CloudFront site
  • Needs CORS access to api.cognoma.org
  • Continuous Deployment - on the master (production) - should be able to do this in CircleCI

Creation of base application dashboard html5 markup

@BobMiller can you please create the base HTML5 markup for the application dashboard in the developbranch inside of app/js/components/app/app.tpl.html using the Twitter Bootstrap framework.

The jpgs for the MVP can be found in cognoma/uiux repo at https://github.com/cognoma/uiux/blob/master/wireframes/exports/invision_app_prototype/
Those should allow you to use the bootstrap grid to create the sidebar and the column. If you need individual graphic assets exported from the design please let me know and I can provide them. The color scheme in the design is mostly arbitrary at this point.

Application Start/Intro Screen

An Introduction to Cognoma screen needs to be created that would access by the main application route. Layout, documentation and requirements for this screen can be found in the UI/UX wireframes.

The layout should follow the content given in the wireframe but the header and sidebar should be ignored as those need to match the existing build until further design updates are implemented.

MLK DAY - Replace $templateCache with imported inline templates

Currently, the Angular $templateCache service is being used to compile all component templates into the js/template.js file. This is good for performance, because it prevents Angular from having to make a separate request for every template it encounters. The $templateCache service can be buggy at times, though, and adds extra complexity to the build process. You can achieve the same benefit with less complexity by simply using inline templates within your Angular components. And with Browserify, you can keep the template files nicely separated from the component JS and import them, as if they were inline, using require(). Browserify requires the "stringify" middleware package in order to do this.

Query Review Screen

assigned to @w0lya

@dhimmel can you please provide some functional as well as layout requirements for this view, specifically those that pertain to the data visualization(s) needed?

npm run unit times out on CircleCI

Our tests for commits on the develop branch are timing out (since it prints no output for 10 minutes). You can see the CircleCI build:

timeout

This doesn't seem to occur for pull requests.

Perhaps some additional tests which rely on encrypted variables occur in develop and these time out?

JavaScript/Web Designers

Just to let you know, the Philly JavaScript meetup is scheduled for next Wed (July 27th) at 6:00PM. The location is

Quorum at the Science Center
3711 Market Street, Floor 8
Philadelphia, PA 19104

I have put in a formal request to do a lightning talk (about 5 minutes) on Project Cognoma. Hopefully a few members of the group will volunteer to join our front end group. If anyone else wants to join me, let me know.

If for some reason, we can not get on the schedule, I intend to show up, make a general announcement about our need for help, and beat the bushes for some volunteers.

Unit Test: basic unit tests for existing application components

Need to write base unit tests for existing components:

  • constants
  • app on_config block/routing
  • app on_run block
  • app
  • navGlobal
  • queryBuilder
  • queryOverview
  • queryOverviewControl
  • diseaseListing
  • mutationListing
  • queryParamSelector
  • querySetMutation
  • querySetDiseaseType

Also need to integrate unit test runner into npm run dev task so that unit tests are ran on each save while developing

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.