GithubHelp home page GithubHelp logo

uab-cgds-worthey / rosalution Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 1.0 12 MB

Rosalution assists researchers study genetic variation 🧬 in patients πŸ§‘πŸΎβ€πŸ€β€πŸ§‘πŸΌ by helping select candidate animal models πŸ€πŸπŸ πŸͺ± to replicate the variation to further research to derive, diagnose, and provide therapies for ultra-rare diseases. Developed by the UAB Center for Computational Genomics and Data Science (CGDS).

License: GNU General Public License v3.0

Dockerfile 0.21% Shell 3.53% Python 31.84% JavaScript 40.58% HTML 0.06% Vue 18.75% CSS 2.06% TeX 2.96%

rosalution's Introduction

Rosalution

Rosalution Logo and Title

license-badge status example Contributor Covenant

Getting Started β€’ Deployment and Usageβ€’ Testing & Static Analysis β€’ Contributing β€’ Maintainers β€’ Credits and Acknowledgements β€’ License

Rosalution assists researchers and physicians collaborating on studying genetic variation 🧬 in patients πŸ§‘πŸΎβ€πŸ€β€πŸ§‘πŸΌ to generate definitive diagnoses and aid in the understanding of pathogenic mechanisms. It also guides the development of accurate predictive models and refine existing or suggest new therapeutic approaches. The application facilitates researchers streamlining the selection of candidate animal models πŸ€πŸπŸ :worm: to replicate the patient variation to further research to derive, diagnose, and provide therapies for ultra-rare diseases.

Rosalution is the open-source web application maintained and developed by the University of Alabama at Birmingham (UAB) Center for Computational Genomics and Data Science (CGDS) to support not only the current UAB Center for Precision Animal Modeling (C-PAM) process, but also data collection, quality control, standardization, and integration. It enriches the analysis, guiding and collecting the decisions made during case and variant consideration. This effort to consolidate both the process and the data is critical; this shift is needed to reduce the costs and increase the throughput of precision modeling projects in general.

Rosalution facilitates three aspects of the collaborative case review process.

  • ⌨️ augmenting and standardizing case and variant/gene intake and annotation with configurable automated annotation from publicly available data sources
  • ✨ supporting expert curation by clinical and research experts via a web-based interface
  • 🌐 supporting synchronous and asynchronous collaborative review by interdisciplinary teams via a web-based interface

First UI screenshot of the Rosalution web application

Second UI screenshot of the Rosalution web application

Watch Rosalution's demonstration video here!


Getting Started

Prerequisites

The following pre-requisites are required to be installed in the target *NIX environment for deploying and testing Rosalution. Install environment dependencies below using the respective installation instructions for your target environment.

  • Node.JS 20.8+ & Classic Yarn
    • Node.JS recommends managing Node.JS installations with nvm - install
    • Yarn is not included with Node.JS with nvm. Run npm install --global yarn once Node.JS is installed. - install
  • Python 3.11+ - Install
    • pip3 to install the required packages for development within a virtual environment
    • python venv Some system installations of Python 3+ do not include python virtual environments that were added in Python 3.3+. Additional installation and setup may be necessary if using Python packaged with an OS (such as Ubuntu).
  • Git
    • Setup with your favorite git client. Here is a GitHub Guide for different platforms.
  • Docker 17.12.0+ with docker-compose CLI or docker compose from Docker Desktop - Install
    • Docker Compose is used for local deployments of the application. The docker-compose tool is fully integrated within the Docker Desktop suite now. For new users of Docker it is easier to get started with Docker Desktop. From the official Docker documentation, "[docker compose] is expected to be a drop-in replacement for docker-compose".
    • Installing and running Docker requires sudo/admin privileges in the target environment
  • sudo/Admin environment privileges and write privileges to the /etc/hosts file
    • The setup.sh script requires sudo/admin privileges in the target development environment to update the /etc/hosts file to setup localhost redirection for a Rosalution deployment to redirect localhost to local.rosalution.cgds
  • mkcert
    • Tool to generate and install self-signed locally-trusted development certificates
    • Used to make certificates for Traefik to manage HTTPS enabled services
    • The setup.sh script requires sudo/admin privileges in the target development envrionment to install the generated certificates in the respective browser trusts so browsers know they're valid and won't throw an insecure warning
      • Default certificate location: ./etc/certificates
    • Note: Local deployment will still work without self-signed certificates. The browser will just throw an insecure warning, the application can still be used.

Browser Support

Chrome Firefox
64+ 86+

Local Development Setup

Clone the Git repository from GitHub locally.

Clone Repository

git clone https://github.com/uab-cgds-worthey/rosalution.git
cd rosalution

Environment Setup

setup.sh provisions your local environment for developing Rosalution. The script will

  • yarn install within each subdirectory
  • Updates your local /etc/hosts to support the local DNS redirect of localhost to 'local.rosalution.cgds'.
  • Creates a Python virtual environment for called "rosalution_env" within the backend directory
  • Installs Python dependencies within the virtual environment
  • Checks if mkcert is installed, if so generates self-signed certificates in ./etc/certificates
    • Generates two files, one .pem key file and one .pem cert file
./setup.sh

For Windows Subsystem Linux users updating their /etc/hosts in WSL2

The /etc/hosts file must manually update on the Windows side located in C:\Windows\System32\drivers\etc as an administrator. Then restart the Linux Subsystem by running the following in PowerShell as an administrator

Restart-Service LxssManager*

Deployment and Usage

Deploying With Docker Compose

Deploy Rosalution from the project's root directory using docker compose in your terminal. Be sure that ./setup.sh has been run recently for any recent dependency updates to be installed in all of the subdirectories.

After following one the deployment commands in the below in the terminal,

For deployment troubleshooting, visit Common Deployment Troubleshooting.

# deploy rosalution services within this session
docker compose up

# deploy services in the background using the `-d` option
docker compose up --build -d

# force docker images to re-build using the `--build` option
docker compose up --build

Login and Access

To log in to the system once it has been locally deployed, enter a username in the designated field and click the "Login" button as seen in the figure below.

Authentication

The method of authentication for the Rosalution system may vary depending on the deployment environment. In a local development environment, the system utilizes OAuth2 for issuing login tokens. This allows for a streamlined development experience and faster iteration.

In contrast, in a production environment, the system utilizes CAS (Central Authentication Service) for authentication. This means that in order to log in to the production environment, a valid username must be provided, and an OAuth2 token will be issued if the username is valid in the system.

Users and User Types

A list of all users in the system is available in etc/fixtures/initial-seed/users.json. User permissions according to a type of user is planned to become available in an upcoming update.

πŸ‘©β€πŸ’» The following table lists some of the usernames and their corresponding user types:

Username Scope Type of User
developer write Developer user
researcher read Researcher user
vrr-prep write Researcher who prepares analyses

Rosalution logins

Adding New Analyses

Users can create new cases on Rosalution by clicking on the '+' card to add a new case, as shown in the below figures. Doing so prompts an upload dialog to import files to create a new Rosalution case. These files must be in .json format. Once uploaded, a 'Successful import' dialog displays. Refresh the page to see the newly imported case on the Rosalution dashboard.

To refer how to format your .json files to upload as new cases, refer to the example cases .json files in ./etc/fixtures/import/.

Uploading New Case

Adding Users

To add a new user to the system, you must first define the user in the same format as the users in the example-adding-users.json file in the etc/fixtures directory.

Then, you must run the following command from the root directory of the project:

docker-compose exec -T rosalution-db mongosh /tmp/fixtures/add-user.js

Usage information on optional arguments for the add-user.js script is available by running the following command:

docker-compose exec -T rosalution-db mongosh --eval "var help=true;" /tmp/fixtures/add-user.js

Database

Rosalution uses MongoDB to store the state of the application.

Fixtures

MongoDB database fixtures are located in the <project-root>/etc/fixtures directory. The initial-db-seed.sh script and ./etc/fixtures/ directory are mounted as volumes into the database container for use to seed the database.

rosalution-db:
image: mongo:5.0.9
volumes:
    - ./etc/fixtures/initial-seed/initial-db-seed.sh:/docker-entrypoint-initdb.d/initial-db-seed.sh
    - ./etc/fixtures/:/tmp/fixtures

Seeding the Database

The MongoDB DB is initially seeded at the time of container startup using the /docker-entrypoint-initdb.d/initial-db-seed.sh script.

Visit MongoDB Initializing a fresh instance for more information on /docker-entrypoint-initdb.d executing scripts at the time of startup.

When automated testing, Cypress re-seeds the database using the ./etc/fixtures/seed.js script to reset Rosalution's state. The script is executed within the MongoDB database container with docker compose exec.

docker compose exec rosalution-db  mongosh /tmp/fixtures/seed.js

Interacting with the Database

Use the following command to view the database within the MongoDB container.

docker exec -it rosalution_rosalution-db_1 mongosh rosalution_db

Production

Production Builds

Each Rosalution service prepares docker images for production deployments. Both docker-compose.production.yml and docker-compose.local-production.yml compose yml files allow you to build those production images locally.

These images ensure that each service builds and bundles each one for production that strips development code that streamlines development of Rosalution.

The frontend uses a rollup plugin configured to be used during bundling to strip a developer login to Rosalution. The backend utilizes the environment variable ROSALUTION_ENV set to production when deploying using the entrypoint-init.sh to startup the backend service. This alters how the application behaves in certain ways, one of which is that the backend service will run Python with the -O flag which will strip code conditional on the value of __debug__.

Using the Build Script

When deploying the Rosalution system in a production environment, it is important to ensure that the build is optimized for security. This can be achieved by using the build.sh script.

The build.sh script is a command-line tool that can be used to build the Rosalution system for a production environment. The script accepts various command-line arguments that can be used to customize the build process.

The script also includes several functions that are used to parse the build configuration file, construct build arguments, and build the necessary images. It also includes a function to push the built images to their respective repositories.

Note: The Docker images built by the build.sh script can only be published by Rosalution maintainers to our private registry.

For additional information on the build.sh script, refer to the build.sh script documentation within the script itself.

The local production docker compose yaml must be updated if you would like to test the docker images created from the build.sh script. Modify the docker-compose.local-production.yml by:

  • Commenting out the build configuration designated within the compose yaml.
  #build:
    #context: ./frontend/
    #target: production-stage
    #dockerfile: Dockerfile
    #args:
      #VERSION_BUILD_TAG: "local-production@latest"
  • Uncommenting the docker image tags for the frontend and backend services
image: ghcr.io/uab-cgds-worthey/rosalution/frontend:${ROSALUTION_VERSION}
  • Setting the ROSALUTION_VERSION environment variable to be the 'build tag' used with the build.sh script.
export ROSALUTION_VERSION=0.6.0
  • Deploy the Rosalution Build as indicated in the following section
docker-compose -f docker-compose.local-production.yml up --build

Local deployment of a Production Build

To deploy a production build locally, the following command can be uses.

docker-compose -f docker-compose.local-production.yml up --build

This command uses the docker-compose tool to build and run the necessary containers for the production environment, as specified in the docker-compose.local-production.yml file. The -f flag is used to specify the compose file to use, in this case docker-compose.local-production.yml and --build flag is used to force Docker Compose to rebuild the images.

Accessing A Locally Deployed Rosalution

To access the locally deployed Rosalution application after running docker compose up, visit the http://local.rosalution.cgds/rosalution/ URL in your browser.

Common Deployment Troubleshooting

When I navigate to localhost:80 in the browser I see a 404 error page.

The local application deployment relies on the reverse proxy routing localhost requests from the base URL http://local.rosalution.cgds/rosalution. ./setup.sh must also have been run in advance to properly setup the routing.

When I navigate to local.rosalution.cgds/rosalution in the browser I see a 404 error page.

There could be two issues when this is happening. First, verify the frontend and reverse proxy docker containers by running docker ps in your terminal. If both containers are running, then re-run the .setup.sh script in the project's root directory to verify no errors are occur while running.


Testing and Static Analysis

Unit and Integration Testing

Rosalution's entire stack is supported with thorough testing. Review the following important notes below before getting started with running and developing tests.

  • βœ”οΈ Dependencies in your environment must be installed as listed in #Getting Started##Prerequisites
  • βœ”οΈ Your local environment must successfully setup with setup.sh in order to run testing
  • πŸ“ Tests must be executed within their respective sub-directories
  • 🐍 Python unit tests and linting must run within the activated python virtual environment. (For details, refer Backend Local Development)
    • source backend/rosalution_env/bin/activate

Refer to the following READMEs for details on running tests and code coverage for the Rosalution's backend and frontend.

System Testing

System testing requires the entire stack of the application to be successfully deployed to your local development environment. The environment must be setup and the application deployed with docker compose. Refer to the following for a quick start with System Testing done by Cypress.

Our system testing requires that Chrome is available as a browser on the system. This makes it extremely difficult to setup/run within Windows Subsystem Linux, so running system testing in WSL2 is not supported.

# Run System Testing with report displayed in terminal
cd system-tests
yarn test:e2e
# Run System Testing with Cypress UI to visualize and run system testing
cd system-tests
yarn test:e2e:open

Static Analysis

We use linting tools for JavaScript, Python, Docker, Markdown, and Shell scripts for static analysis.

To see the commands and how to run linting, refer to Linting and Static Analysis in the Contributing Guidelines.


Contributing

Contributing Guidelines

We welcome contributions from the community! Please read our πŸŽ‡Contributing Guidelines to learn how you can help improve the project.

Code of Conduct

We expect all contributors to adhere to our πŸ“‹code of conduct. Please read it before contributing to the project.

How to Report a Bug

To report a bug, refer to 🐞Reporting Issues in the πŸŽ‡Contributing Guidelines.


Maintainers


Credits and Acknowledgements

Elizabeth Worthey, Ph.D.
Principal Investigator, Director, Center for Computational Genomics and Data Science (CGDS)
Co-Director, Center for Precision Animal Modeling - Bioinformatics Section
Heersink School of Medicine, The University of Alabama at Birmingham, Birmingham, AL

Center for Computational Genomics and Data Science (CGDS)
Department of Genetics
Heersink School of Medicine, The University of Alabama at Birmingham, Birmingham, AL

Center for Precision Animal Modeling (C-PAM)
The University of Alabama at Birmingham, Birmingham, AL

Bioinformatics Section(BIS) in the Center for Precision Animal Modeling (C-PAM)
The University of Alabama at Birmingham, Birmingham, AL

Scientific Collaborators

Donna Brown 🌐 β€’ Aleksandra Foksinska 🌐 β€’ Manavalan Gajapathy, Ph.D. :octocat: 🌐 β€’ Elizabeth J. Wilk 🌐 β€’ Brittany Lasseigne, Ph.D. 🌐Lasseigne Lab


License

Rosalution is licensed under the GNU General Public License v3.0.

rosalution's People

Contributors

jmscherer avatar serioushorncat avatar fatimarabab avatar kuthedk avatar jbarkley256 avatar dependabot[bot] avatar

Stargazers

 avatar William Warriner avatar Shaurita Hutchins avatar Shinichi Uno avatar Brandon M Wilk avatar  avatar  avatar Tracy avatar  avatar

Watchers

 avatar Liz Worthey avatar Kostas Georgiou avatar

Forkers

jbarkley256

rosalution's Issues

Icon Dataset Linkouts for Gene and Variant annotations within the header

First Check

Description

As a user, I would like linkouts to the Decipher, Geno2MP, and SMART to have easy access to deep dive into those datasets for insight into the genes and variants.

  • Update the Genomic Unit Annotation Configuration that is in the database to create linkout annotations for each of the datasets.

    • Once the fixtures have been updated in etc/fixtures/initial-seed/annotations-config.json, if you are not doing a clean deploy, the collection in the MongoDB database needs to be updated. I created a shell script alias locally to run the command easily
    seed_db () {
      docker compose exec rosalution-db  mongosh /tmp/fixtures/seed.js
    }
    • To update the existing annotations in the test database for a deploying Rosalution, a script needs to be run using the API auth credentials. These crednetials can get generated from the user's account page after logging in. The account page can be accessed by clicking the username in the top right of the header. Then you can run the bash shell script /etc/api/annotate-all-existing-analyses.sh with client id and secret.
  • Update the Annotation Rendering Configuration to include IconLinkoutDatasets within the frontend (this is hardcoded, and will be migrated to the MongoDB database really soon)

    • This will require you locating and saving the Dataset's Logo as an image in the frontend/src/assets directory. We have used svg's or png's for these.

Suggested Solution below will have instructions on how to implement this.

Suggested solution

Genomic Unit Annotation Configuration

A new entry in JSON with the following schema in this file etc/fixtures/initial-seed/annotations-config.json

Example

{
  "data_set": "Decipher_Gene_url",
  "data_source": "Rosalution",
  "genomic_unit_type": "gene",
  "annotation_source_type": "forge", 
  "base_string": "https://www.deciphergenomics.org/gene/{gene}/overview/clinical-info",
  "attribute": "{ \"Decipher_Gene_url\": .Decipher_Gene_url }"
}

data_set: the name that the dataset is identified in rosalution, this will also be used to match what is in the Annotation Rendering Configuration for the frontend and within the "attribute" field below when forming the JSON for the annotation to be saved.

data_source: where the dataset is sourced from, for the linkout datasets, these are generated within Rosalution, so will say Rosalution.

genomic_unit_type: Either "hgvs_variant" or "gene" right now.
Note: We are only annotating variants that are using the HGVS nomenclature and with a RefSeq transcript.

base_string: The base string that will be used as a base to replace the notated items to create the new string.

attribute: The jq query that will be used to extract the data from the REST API call JSON returned, sometimes there needs to be some filtering and restructuring and the final part of the jq query is forming it to save into the resulting annotation entry for the genomic unit.

** data_set** data_source genomic_unit_type annotation_source_type base_string attribute ****
Decipher_Gene_url Rosalution gene forge https://www.deciphergenomics.org/gene/{gene}/overview/clinical-info {"Decipher_Gene_url": .Decipher_Gene_url}
Geno2MP_Gene_url Rosalution gene forge https://geno2mp.gs.washington.edu/Geno2MP/#/gene/{gene}/gene/0/0/0 {"Geno2MP_Gene_url": .Geno2MP_Gene_url}
UniProt_SwissProt_Gene_url Rosalution gene forge https://www.uniprot.org/uniprotkb/{gene}_HUMAN/entry {"UniProt_SwissProt_Gene_url": .UniProt_SwissProt_Gene_url}
SMART_Gene_url Rosalution gene forge https://smart.embl.de/smart/show_motifs.pl?ID={gene}_HUMAN {"SMART_Gene_url": .SMART_Gene_url}
Decipher_variant_clinical_info_url Rosalution hgvs_variant forge https://www.deciphergenomics.org/search?q={hgvs_variant} {"Decipher_variant_clinical_info_url": .Decipher_variant_clinical_info_url}

Annotation Rendering Configuration

Two Steps

  1. Update the annotation rendering configuration in the frontend/src/models/analyses.js in the frontend service.
  2. Save the logo image in the following frontend directory ./frontend/src/assets , you will see lots of other examples in there

Rendering Configuration example for an individual IconLinkoutDataset

{
  "dataset": "gnomAD_gene_url",
  "type": "icon-linkout-dataset",
  "props": {
    "imageFilename": "gnomad-logo.png",
    "altText": "Genome Aggregation Database (gnomAD) from Broad Institute"
}

dataset: this will directly map to the annotation saved for that genomic unit in the database, it will be the value that was indicated in the "data_set" name
type:the name of the VueJS component that will be rendered
props: the VueJS props that will be passed into the component, these will change according to the type of component.
For the icon linkout datasets props
imageFilename: The name of the logo of the icon within the ./frontend/src/assets directory
altText: the alternate text image that can be used for accessibility readers or if images are not loading

New Icons in the section with the header 'gene'

  • Ordering in the configuration (ClinGen, NCBI, gnomAD, Decipher(new), Geno2MP(new), UniProt(new), SMART(new))

Datasets:

  • Decipher_Gene_url
  • Geno2MP_Gene_url
  • UniProt_SwissProt_Gene_url
  • SMART_SwissProt_Gene_url

New Icons in the section with the header 'variant'

  • Ordering in the configuration (Decipher (new))

Datasets

  • Decipher_variant_clinical_info_url

Alternative

No response

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Enable Users to update an analysis' status to Ready or Active

First Check

Description

As a user, I need to update an analysis' status that is either Ready or Active so that collaborators know when cases are ready for review or begun an active review.

Suggested solution

There is an action drop menu available in the top right of the header within the a Rosalution analysis to add these two actions.

Screen Shot 2023-03-07 at 2 18 52 PM

  • Menu actions for the Analysis View are stored in ./frontend/src/views/AnalysisView.vue in the data value menuActions
  • The icons used to represent "Mark Ready" is 'clipboard-check' and "Mark Active" is 'book-open.' The *Mark Active action, should contain the divider: true instead of the "Edit" action now.
  • There will need to be new Analysis model methods in ./frontend/src/models/analyses.js to call the API endpoints that exist to update an analysis' status. See the api/docs when Rosalution is deployed to find these endpoints to use
  • These new methods added the model can be used in new methods within the view to call the API. A prompt ought to be provided to the user that the operation was a success. The existing 'notificationDialog' within that view can be used for this.

Alternative

No response

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

State of the field section missing in paper

According to the JOSS review guidelines, the authors should provide a section titled 'State of the field' which describes how this software compares to other commonly-used packages. This section is currently missing from the paper.

Create Informative 404 Missing Page Message

First Check

Description

As a user, I would like an informative 404 Error Page Message to inform me that what I am trying to visit is unavailable and provide a convenient button that I can click to return to the home page.

Suggested solution

Replicate the following design using Rosalution assets.

Screen Shot 2023-03-04 at 1 12 23 PM

  • For the top header, use the existing './frontend/src/components/RosalutionHeader.vue'
  • The primary button styling already exists as the css class '.primary-button"
  • See the /./frontend/src/views/LoginView.vue' for how to include the logo
  • Try to level existing text styling that is in the css
  • For login actions in the header, reference './frontend/src/views/AccountView.vue'

Alternative

No response

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

HTTPS setup for local development deployments

First Check

Description

As a developer, I need the local development deployment to utilize HTTPS so that it can behave as much as possible like our production deployments.

Suggested solution

This will require updates to the local Traefik configuration and the backend options.

Some article references on how to approach.

Alternative

No response

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Broken links for navigating to different sections of the repo's Contributing Guidelines, Code of Conduct, and other documentation

First Check

Describe the bug

The Code of Conduct link on both the Contributing Guidelines, the links in the Bug Report and New feature proposal do not properly link to the Code of Conduct. (within the template for the issues)

The Contributing Guidelines link on the Bug Report and New feature proposal do not properly link to the Contribuiting Guidelines. (within the template for the issues)

The local environment was setup successfuly link on the Bug Report does not properly link to the local environment was setup successfuly link within the template for the issue.

What browsers are you seeing the problem on if accessed via the browser?

Firefox

Version

Version 108.0.1 (64-bit)

Steps to reproduce

Contributing Guidelines:

Issue Bug report:

Issue New feature proposal:

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

[Bug]: Documentation for debugging deployment issues and improved instructions for visiting the application

First Check

Describe the bug

I am using the main README.md to deploy Rosalution and am encountering several deployment issues. I could utilize additional insight into how best to resolve these deployment issues.

What browsers are you seeing the problem on if accessed via the browser?

No response

Version

Chrome Version 114.0.5735.199 (Official Build) (64-bit)

Steps to reproduce

No response

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

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.