GithubHelp home page GithubHelp logo

spectre-team / spectre Goto Github PK

View Code? Open in Web Editor NEW
2.0 10.0 1.0 128 MB

This project provides an Spectre's implementation of Data Mining Group's algorithms for processing mass spectrometry imaging (MSI) datasets.

Home Page: https://spectre-team.github.io/

License: Apache License 2.0

CSS 2.85% HTML 7.55% JavaScript 1.58% PowerShell 0.89% Batchfile 0.23% TypeScript 86.91%
msi gaussian-mixture-models proteomics classification clustering mass-spectrometry-imaging tumor-heterogeneity pattern-recognition

spectre's Introduction

Spectre

Spectre

Spectre is a versatile tool used for analysis of MALDI-MSI data sets.

For the sake of simplicity, the toolset provided is available to be used through web application interface, which is currently a work-in-progress.

In order to build and run the application, please refer to the installation section.

About

The project is currently in its early stage. However, it comprises the implementation of our own spectra modelling based on Gaussian Mixture Models, and Divisive IK-means algorithm for unsupervised segmentation, which can be used for efficient dataset compression, as well as for knowledge discovery. Aformentioned algorithms have already been published and refering links have been enclosed under references section.

Also, several classification and clusterization methods will be provided soon, along with supporting statistics.

Install

Spectre service & web application

The Web service is all the time available here. If you still would like to host it yourself, please contact us by e-mail. We will provide you with exhaustive explanation.

Exemplary usage

Spectre service & web application

The application is available online here.

Right now, our web application allows only for an interactive visualization of some of the data we were using in the research, along with Divisive Intelligent K-means algorithm results. More features will get documented when they appear.

How to contribute?

Please contact us by e-mail. We will answer you in details.

Short contribution guide is actively constructed on the project's wiki as the development progresses.

Angular

This project was generated with Angular CLI version 1.0.0-rc.2.

Installation

In order to install Angular CLI, please run scripts/InstallNodeDev.ps1 using Windows Powershell. If the script doesn't have permission to run, please execute Set-ExecutionPolicy Unrestricted command to enable running scripts from Powershell, run InstallNodeDev.ps1, and finish with Set-ExecutionPolicy Restricted (default value) if you will.

Troubleshooting:

  • If nodejs.msi couldn't have been successfully downloaded and installed, please install it manually and the rest of the script should run just fine.

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

If calling ng serve causes errors regarding uninstalled packages, please delete src\Spectre.Angular2Client\node_modules directory, enter src\Spectre.Angular2Client\ and run npm install.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive/pipe/service/class/module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the -prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor. Before running the tests make sure you are serving the app via ng serve.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

References

This software is part of contribution made by Data Mining Group of Silesian University of Technology, rest of which is published here.

spectre's People

Contributors

danielbabiak avatar daroslaw avatar freexd avatar gmrukwa avatar kaprom avatar mg6 avatar regis128 avatar sand3r- avatar sebaxp95 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

mg6

spectre's Issues

Provide interface to list all preparations available

The task is to provide API functionality of listing all preparations which were uploaded to database yet.

Preparations in the list should be restricted to only those available to a particular authenticated user.

Summary of statistical libraries

The task is to prepare an article in wiki, which explains pros and cons of different statistical libraries for C++ or .NET.

Important aspects are:

  • documentation
  • support
  • community
  • coverage of our needs
  • integration with our data structures and standard C++ / .NET structures

Testing rules

The task is to create rules for automatic testing of the solution.

Add license headers

Add appropriate license header to all files missing, using following guidelines (copied from the bottom of LICENSE file):

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.```

Docker

Prepare Docker configuration and quick tutorial for the rest of the team.

C++ Outlier detection

Adaptive outlier detection algorithm. In the case of skewed distribution works with Tukey criterion, medcouple otherwise.

Create simple WPF client for DiviK

The task is to create simple WPF standalone application which just runs DiviK algorithm on a data format we provide.

Main functionality should cover:

  • selection of input dataset
  • selection of output destination
  • specification of DiviK parameters
  • running analysis, as already implemented

Add usage manual

The task is to add usage manual to Readme file and to create a simple pdf file with a description.

Database schema

The task is to design a database schema allowing to store:

  • users; their permission levels; information, whether a user has been activated by an admin; recent login
  • preparations already uploaded to the server; their location on disk; comments; metadata (should be similar to those provided in imzml); dependencies describing derived datasets; users allowed to view a dataset (some may be shared among all users, some may be private and some shared to selected friends)
  • job log entries (i.e. scheduler log)

C++ Resampling implementation

This task is to create an efficient implementation of spectra resampling across investigated data.

Functions selecting common m/z range (truncating range) and common m/z values (through interpolation) should be provided.

Move dependencies to git LFS

The task is to move .dll files of the dependencies that need to be referenced to Git LFS and separate, dedicated directory of our repo.

Summary of machine learning libraries

The task is to prepare an article in wiki, which explains pros and cons of different machine learning libraries for C++ or .NET.

Important aspects are:

  • documentation
  • support
  • community
  • coverage of our needs
  • integration with our data structures and standard C++ / .NET structures

Please remember, that some algorithms will be implemented by us regardless their availability in those libs.

Upload initial MATLAB code-base

This task concerns upload of a code-base implemented in MATLAB, covering algorythmic problems of the project.

Also, a MATLAB project should be created in order to be able to compile .dll library, along with short manual, how to use it.

Doxygen

Investiagate, if Doxygen is able to create wiki-like documentation to push it on GitHub.

Data format

The task is to define format of the data which will be optimal for us.

Main aspects considered should be:

  • disk storage
  • RAM memory occupation
  • calculations efficiency

Log in functionality

The task is to provide simple log-in functionality for authentication purposes.

Introduction to MVC

The task is to prepare concise and easy introduction to MVC architectural pattern in any form - find yt video, short article, prepare quick tutorial.

Result of this task will be presented to the rest of the team.

Add release

The task is to tag final version of WPF client after whole work on it has been done and it was tested; it should be built in Release mode and binaries should be placed in the GitHub release.

MATALAB TIC normalization

TIC global normalization of spectra. It is partially implemented in MATLAB, so a check has to be made, whether we can work something out of this.

Coding convention

The task is to create coding convetion used in this project.

It should be placed in repository's Wiki and concern all used languages: C#, C++, JS.

Implement DivikResult

The task is to implement DivikResult class corresponding 1:1 with its MATLAB counterpart (if possible).

@Sand3r- - you are the man to consult MATLAB interfaces with.
@Sebaxp95 - in case of any trouble, feel free to ask

Sample overview - heatmap

The task is to provide a possibility to view a heatmap of peptide intensity across preparation for selected m/z value.

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.