Skip to content
This repository has been archived by the owner on Sep 18, 2020. It is now read-only.

Commit

Permalink
Release v1.0 (#75)
Browse files Browse the repository at this point in the history
* Migration to NUnit (#39)

* Added NUnit & Selenium packages to test project
* Changed test annotations to target NUnit framework
* Removed unused reference to MSTest
* Enabled nuget packages caching
* Removed strange reference to System.Drawing

* .NET interfaces (#40)

* Created project, added base for main file

* updated project and solution

* Extracted algorithms tests to separate test project

* Added exclusion of tests into test running script

* Enforced all projects to compile in x64

* Resolved ambiguities of MATLAB functions

* Changed MATLAB project includes

* Added NUnit & Selenium packages to test project

* Changed test annotations to target NUnit framework

* added algorithm tests to nunit

* Excluded algorithm tests

* Removed unused MSTest references

* Added IDisposable to Algorithms class

* Extracted nuget restore to external script

* Fixed MATLAB functions to remove ambiguities

* Updated MATLAB assembly to new version

* Added license headers

* Established Spectre.Algorithms.Results namespace
DivikResult moved to new namespace
GmmModel is new type to maintain EstimateGmm and ApplyGmm functions input and output

* Code formatting
Added docstrings
Renamed private variables
Enclosed parts of class into regions
Added checks, whether the class have been disposed

* Fixed using

* Updated DiviK call
Updated test
Returning some output data

* Extracted divik options to external structure

* Algorithms class split into 3 with respect to their purpose

* Removed direct paths in MATLAB project file

* Removed unnecessary files

* Added missing exception docstring

* Added new minor version number

* Added new minor version number (in patching)

* Feature/data format (#49)

* Initial class layout

* Moved spatial coordinates to DataPoint, added GetSize(), added test project, additional fixes.

* Reworks, raw data getters, changed format of TXT file.
DataPoint getters, documentation, tests yet to come.

* DataPoint getters, small bugfixes

* Small refactoring, fixes and tweaks.
SpaTial coordinates, TryParse instead of Parse, etc.
Todo: dataset factory

* Starting testing

* Ongoing test creation

* Continued testing

* Added documentation.

* Fixed TryParse for parsing doubles.

* Small fix for spatial coordinates parsing.

* Tests for file creation and appending added

* Changed build target, added missing using, enhanced exceptions.
Also miscellaneous fixes.

* Hotfix for DataPoint and BaseTextDataset methods.

* SaveToFile method added to IDataset and BasicTextDataset

* Removed Any CPU build target

* Finally fixing the platform issue.
hopefully

* Increase minor version number

Increses minor version number to 2, since this branch gets merged

* Angular2 project added (#50)

* Add Angular2 project

Initial Angular2 project has been added to allow us to start work on
frontend.
A script which installs proper Node.js version on AppVeyor has been added,
but not enabled yet, since no tests are present, nor IIS mapping.
Second script which helps you set-up your machines has also been added,
to provide common environment.

* Add automatic Angular2 build on CI

Adds and changes scripts necessary to run Angular2 project on AppVeyor.

* Fixes scripts naviagtion on AppVeyor

Fixed navigation between scripts in CI, to make it find next ones.
Removed unnecessary output to improve readibility.

* Remove printout, add direct call

Removes not working directory printout, adds direct call to script to bind
page to IIS:
'
* Fix e2e tests

Fixes e2e tests as a beginning of migration to Protractor testing

* Fill information in package.json

* Adds JS e2e testing

Purpose of this commit is to check, wheter CI will run NUnit and JS e2e
tests.

* Adds dotnet testing script

Allows to test both dotnet and JS.

* Fixes test discovery

Disables unnecessary warnings when omitting optional dependencies
in npm. Moreover allows to automatically discover tests on CI.

* Fixes dotnet testing script

Allows CI call NUnit3 tests after last erroneous call.

* Add e2e fail and error message to CI

Purposeful e2e test failure will check whether scripts work
properly.:

* Set frontend test to single run

Resolves the issue which freezed build on CI.

* Stop mute npm test output

Allows to find out source of freeze on CI.

* Change npm test to ng test

Hopefully will exit at tests end.

* Extend node installation script

This turns off warnings, installs project node modules to improve
developer experience.

* Fix Win7 powershell issue

Should allow to install angular-cli on Windows 7.

* Fix Win7 issue through .NET

Workarounds missing cmdlet.

* Updated Readme.md - added troubleshooting info

* MVVM framework (#55)

* Add simple MVVM framework

Allows to create simple WPF application in MVVM pattern.
Increments minor version number.

* Enforce version of angular-cli

This will resolve dependencies problem.

* Link to ZAED repo (#56)

* Add information about ZAED

Requested by prof. Polanska.

* Update Readme.md - restructured the sentence

* Integration of dataset in algorithms. (#64)

New coordinate getters in IDataset.
New "grab all" intensity getter.
Addition of MWArray library into Algorithms project directory (!)

* Get basic fields

* DivikResult structure not tested

* Handled case with no intensities after coordinates at end of file.

* Add save to DivikResult (#66)

Extends DivikResult interface through Save function without
implementation, to allow working in WPF client with full
interface available.
Makes DivikResult sealed so there is no possibility to create
an object of this class outside DiviK algorithm implementation.

* added test for bigger data

* Done all except subregions

* Update comments

Comments provide now simple description of the content of fields.

* DivikResult done

* Fix DivikResult

.NET-ified convention of properties, removed duplicate failing
code, to make project compile. Paths in tests are adjusted to
target project root directory.
DivikBigData test renamed and annotated to mark the test
running very long.

* Fix-better named variables

* fix - Comments UpperCase

* Add Equal to DivikResult (#71)

* Add Equal to DivikResult

Simple DivikResult instances comparison is introduced and
takes into account values of fields. Operators == and !=
are also implemented.

This will allow to use simple comparisons outside this
class to check integrity.

Note: GetHashCode has NOT been overriden.

* Add missing tests

Tests whether the convention is held.

* JSON serialization for DivikResult implemented (#69)

* JSON serialization for DivikResult implemented

* DivikResult's empty constructor changed from public to private

* StreamWirter replaced with File.WriteAllText

* Added identation option to DivikResult.Save(2)

* Updated JSON saving test to use DivikResult.Equals(1)

* Fixed SetupFixture at DivikResultsTests

Changed the for levels from 2 down to 1

* Fix DivikResult.Equals

Fixes the case where NaN was different from NaN.

* WPF client (#72)

* Add simple MVVM framework

Allows to create simple WPF application in MVVM pattern.

* Add WPF project for DiviK

Creates project with sample VM and referenced framework for MVVM.

* Reference lower version of failing dep

append-transform@^0.4.3 was failing npm to install dependencies.
It is included in package.json now, to workaround this problem.

* Enforce version of angular-cli

This will resolve dependencies problem.

* demo main window added, viewmodel filled in

* add combo for metrics, add progressbar, add double range validation rule

* add txt file picker for input path

* add percenage converter, percentage validation rules, move code behind logic to viewModel

* add missing prompt for input path

* Add integer validation rule

* display validation messages in tooltips

* fix validation message for percentage rule

* bind start divik label

* add missing else in SetBusyState :)

* add docstrings and license headers to created files

* Add button selector for output dir

Improves user experience, simplifying directory selection.

* Remove verbosity selection

User cannot set verbosity either way, so removing unnecessary option.

* Add sliders for percents

Allows user to enter percents without keyboard.
Adds some comments to improve navigation over XAML.

* Add cache directory selection

Improves UX by simplifying cache directory selection.

* add services and services tests projects

* add start button handling

* add filename for divikresult save

* divik cancellation

* add unittest for service project

* cancellation token behaviour fix

* Add directory create on decomposition

Fixes the bug where an exception was thrown if directory was not present.

* feature/wpf-client fixes

* feature/wpf-client csproj save

* Add log window

Adds log window to show matlab progress. Fixes a problem
where matlab did not create directory for images.
Removes unnecessary duplication of DataContext initialization.

* Fix max components wrapper

Max components used in decomposition during filtration were
not mapping correctly and always a single component has been used.
Now, some components are found, and adaptive feature filtration
works.

* add unittests for PercentageConverter

* add validation rules tests

* try to fix appveyor tests

* Add unhandled exception handler

Prevents app from closing when exception occurs. Logs the exception in
main window.

* Add ConsoleCaptureService tests

Allows to check, whether console was captured properly.

* Tidy configs and files (#73)

* Move .dlls to single place

Allows to keep src directory clean and switching between library versions
for Debug and Release.

* Add artifact packaging to CI

Should allow to autmatically schedule releases to GitHub on every
tagged version. Packages all .dlls, single .exe and manual for
specified project.

* Remove garbage and AnyCPU target

There was a lot of strange files in src directory - they got removed now.
Also, every project file has been investigated and default target has
been set to x64.

* Move test files to single directory

Test files are moved to single place, which is used in all test projects.
Avoids duplication of datasets and allows to check datasets in one spot.

* Rename manual file

Resolves an issue with packaging, where 7z could not find manual.

* Decrease verbosity of packaging

Removes unnecessary reports from 7z during build.

* Fix algorithm tests

Changes test file to make tests possible.

* Change default max components number

It fits used in research articles now.

* Add HNC1 tumor data

Adds smaller, but real data set for test purposes.

* Switch tests to use smaller data

Allows to test the project using data contained in the repo, with smaller
amount of computations.

* Assign test data directory to const

Removes magic strings and assign them meaning.

* Fix typo in test

Resolves the problem that made solution not compilable.

* Fill DiviK manual (#74)

* Fill DiviK manual

Simple manual of DiviK WPF client has been introduced, to help user apply
our software.
A script has been prepared for automated rendering of manual files from
markdown to pdf. It requires LaTeX and pandoc. It should however help keeping
manuals up-to-date in simple command. Only for local usage.

* Link manual to Readme

Redirects user to manual.

* Add readme to docs directory

Should make users less confused when looking into docs.

* Missing docstrings added (#76)
  • Loading branch information
gmrukwa authored Apr 4, 2017
1 parent 71cef38 commit ff80cf6
Show file tree
Hide file tree
Showing 166 changed files with 17,080 additions and 524 deletions.
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

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
For the sake of simplicity, the toolset provided is available to be used
through interfacing with web application, which is currently a work-in-progress.

In order to build and run the application, please refer to the
[installation](#install) 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.
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 links refering
have been enclosed under [references](#references) section.

Expand All @@ -22,11 +22,11 @@ along with supporting statistics.

## Install

Details will be added soon.
Please refer to [docs](docs/Spectre.DivikWpfClient.pdf).

## Exemplary usage

Details will be added soon.
Please refer to [docs](docs/Spectre.DivikWpfClient.pdf).

## How to contribute?

Expand All @@ -35,10 +35,12 @@ answer you in details.

## Environment

Details will be added soon.
Please refer to [docs](docs/Spectre.DivikWpfClient.pdf).

## References

This software is part of contribution made by [Data Mining Group of Silesian University of Technology](http://www.zaed.polsl.pl/), rest of which is published [here](https://github.com/ZAEDPolSl).

+ [Marczyk M, Polanska J, Polanski A: Comparison of Algorithms for Profile-Based
Alignment of Low Resolution MALDI-ToF Spectra. In Advances in Intelligent
Systems and Computing, Vol. 242 of Man-Machine Interactions 3, Gruca A,
Expand Down
50 changes: 41 additions & 9 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,43 @@
version: 0.0.{build}
version: 1.0.{build}
# enable patching of AssemblyInfo.* files
assembly_info:
patch: true
file: AssemblyInfo.*
assembly_version: "1.0.{build}"
assembly_file_version: "{version}"
assembly_informational_version: "{version}"
platform: x64
configuration:
- Debug
- Release
services: iis

install:
- ps: C:\projects\spectre\scripts\InstallNode.ps1

before_build:
- cmd: >-
cd src
nuget restore
build:
project: ./src/Spectre.sln
parallel: true
verbosity: normal
- cmd: C:\projects\spectre\scripts\restore_nugets.bat
build_script:
- cmd: msbuild "C:\projects\spectre\src\Spectre.sln" /m /verbosity:quiet /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
- cmd: C:\projects\spectre\scripts\build_ng2_client.bat
after_build:
- cmd: C:\projects\spectre\scripts\package_project.bat "DiviK.zip" Spectre.DivikWpfClient

test_script:
- cmd: C:\projects\spectre\scripts\test_dotnet.bat --except Algorithm
- cmd: C:\projects\spectre\scripts\test_frontend.bat
- cmd: C:\projects\spectre\scripts\test_frontend_e2e.bat

artifacts:
- path: DiviK.zip
name: DivikExecutables

deploy:
- provider: GitHub
release: Spectre-v$(appveyor_build_version)
auth_token:
secure: dQadz+smqtuxpigZ/LmrUKyA0uVZ5kgljKntyoHEdobTycbeMywbfmiJtZPNcOQ2
artifact: DivikExecutables
draft: true
on:
CONFIGURATION: Release
7 changes: 7 additions & 0 deletions docs/Readme.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Documents

This directory contains manuals for different projects in **Spectre**
initiative.

Please refer to `.pdf` versions of manuals - `.md` files are prepared for
pandoc rendering.
257 changes: 257 additions & 0 deletions docs/Spectre.DivikWpfClient.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
---
title: "DiviK Software Manual"
date: "03.04.2017"
author:
- Dariusz Kuchta [email protected]
- Grzegorz Mrukwa [email protected]
- Michal Gallus [email protected]
- Michal Wolny [email protected]
- Sebastian Pustelnik [email protected]
- Wojciech Wilgierz [email protected]
institute: |
The Spectre Team, Data Mining Group, Silesian University of Technology
toc: true
tags: [divik, maldi, msi, mass spectrometry, compression, clustering]
abstract: |
DiviK software is a tool for unsupervised segmentation of MALDI IMS data
sets. It allows to either find molecularly diverse regions, or to compress
such data with preservation of intra-sample heterogeneities. Achieved
compression factors reach 99.87% of size reduction, while such
representation can still be used for classifier training or inter-sample
comparison.
colorlinks: true
---

# Installation

## MATLAB MCR

In order to make DiviK software fully operational, a MCR (MATLAB Compiler
Runtime) has to be installed *(in current release - this will be removed soon)*.

However, due to the [licensing by MathWorks](https://www.mathworks.com/matlabcentral/answers/25863-mcr-installer-is-there-a-license-file-whic#comment_57242),
it is not available through project website. Nevertheless, we are still eligible
to share it with you personally, so feel free to contact us by
[mail](mailto:[email protected]?subject=[Spectre] MCR installer).

Please note, that it can be also downloaded through
[MathWorks website](https://www.mathworks.com/products/compiler/mcr.html) for
free, but this way has not been tested yet.

## DiviK software

DiviK software itself needs no installation. Once the files are unpacked from
the `.zip ` archive, it can be used without further delay.

# Usage

Interface of the application allows to provide all the options that are
*available* to be used with DiviK. Default settings comprise configuration
representing pipeline used for MALDI IMS data processing that can potentially
serve as a starting point for performing initial experiments.

Default settings provided on application start are adjusted for clustering
purposes. User can easily switch to compression mode: it is enough to
disable *Using Levels* checkbox (explained in section **Parameters**).

After setting all the parameters (or at least required ones) it is enough to
press *Start DiviK* button.

# Input specification

Input file is a text file constructed as follows:

1. Row with global metadata - it can contain anything (unused for now).
2. Row with global *m/z* axis - data has to be resampled before usage.
3. Data of each spectra, each consisting of two lines:
1. Spatial coordinates of a spectrum (X, Y, and Z, separated with spaces).
*Please note, that Z coordinate is currently not used. Therefore each Z
value can be safely set to zero.*
2. Intensity values for each *m/z* value specified above, separated with
spaces. Their number **must** be equal to the number of elements in *m/z*
axis. This is similar to *imzML* format in *processed* form.

Artificial test data (*only for demonstration of this structure*):
```
in this line are global metadata, which is discarded for now
899.99 902.58 912.04
1 1 0
12 20 0
2 1 0
9 18 13
1 2 0
5 10 20
2 2 0
14 2 19
```
*This data cannot be used for testing the program itself; it is just a
reference, how to format data file.*

Sample **real** data file is available
[here](https://1drv.ms/t/s!AvaKDFGHXrvClvcMHkK-3X_W7osr6g).
The same data set was used in
[G. Mrukwa, G. Drazek, M. Pietrowska, P. Widlak and J. Polanska, "A Novel
Divisive iK-Means Algorithm with Region-Driven Feature Selection as a Tool for
Automated Detection of Tumour Heterogeneity in MALDI IMS Experiments," in
International Conference on Bioinformatics and Biomedical Engineering, 2016](http://link.springer.com/chapter/10.1007/978-3-319-31744-1_11), so anyone
can compare results.

# Output specification

Result of this hierarchical segmentation/compression is stored in the form of
the tree, illustrating consecutive splits.

This tree keeps all of the information present at each division, in following
fields:

1. **QualityIndex** - quality index of best division at particular level (for
now it is Dunn's index)
2. **Centroids** - collection of centroids for each sebregion found
3. **Partition** - assignment to subregions at particular level
4. **AmplitudeThreshold** - threshold of log2 of feature amplitude used to
remove low-abundance features
5. **AmplitudeFilter** - collection with boolean value of *true*/*false* for
each feature. *True* means, that a feature was used in split.
6. **VarianceThreshold** - exactly the same as **4**, but variance of each
feature is considered
7. **VarianceFilter** - exactly the same as **5**, but with respect to variance.
Please **note**: all features marked *false* in **AmplitudeFilter** have been
excluded from this filter.
8. **Merged** - this collection contains information about cluster assignment
after all stages of clustering. Cluster indices are the same for spectra in the
same cluster, and different from those from another. However, no assumption can
be made, that they are consecutive integers.
9. **Subregions** - Collection with results of recursive segmenting of
subregions, in the exactly same form, as this tree.

Such a tree is serialized to [JSON](https://en.wikipedia.org/wiki/JSON) format,
which is supported by a variety of tools and environments.

Sample output is presented below:

```
{
"QualityIndex": 3.8840405390582151,
"Centroids": [ ... ],
"Partition": [ ... ],
"AmplitudeThreshold": 9.6377174422348748,
"AmplitudeFilter": [ ... ],
"VarianceThreshold": 26.383680633770286,
"VarianceFilter": [ ... ],
"Merged": [ ... ],
"Subregions": [
{
"QualityIndex": 1.0056280394007902,
"Centroids": [ ... ],
"Partition": [ ... ],
"AmplitudeThreshold": "NaN",
"AmplitudeFilter": null,
"VarianceThreshold": 26.450276742883155,
"VarianceFilter": [ ... ],
"Merged": null,
"Subregions": null
},
{
"QualityIndex": 2.6253359243037786,
"Centroids": [ ... ],
"Partition": [ ... ],
"AmplitudeThreshold": "NaN",
"AmplitudeFilter": null,
"VarianceThreshold": 26.585733127398438,
"VarianceFilter": [ ... ],
"Merged": null,
"Subregions": null
}
]
}
```

Dots '`...`' represent contents of an array; the array is closed with '`]`' sign
and each entry is separated by a comma '`,`'. Instances of tree are enclosed
into curly braces '`{...}`'.

Full sample output file is present
[here](https://1drv.ms/u/s!AvaKDFGHXrvClvcP9SmAuDq9TUITkA).

# Parameters

1. **Input path** - must point to the file with properly formatted data.
2. **Output path** - directory, where result will be stored.
3. **MaxK** - limit of number of clusters checked by k-means algorithm.
4. **Level** - limit of recursion nesting, when using level criterion as stop
condition.
5. **Using Levels** - specifies whether to stop recursive splitting of data
at particular level (specified above), or to use minimal subregion size ratio.
6. **Amplitude** - if checked, amplitude-based global filtration of features is
performed at top level. This removes low-abundance features which are noisy.
7. **Variance** - if checked, variance-based local filtration of features is
performed at each stage of splitting. This selects most informative features
for every division.
8. **Percent size limit** - specifies, what is the lowest rate of subregion size
to starting size of whole preparation, below which no segmentation is performed.
Applicable only when not using levels as stop condition for recursion.
9. **Feature preservation limit** - specifies, how much features *must* be
preserved regardless of filtration applied (to prevent leaving e.g. single
feature)
10. **Metric** - method to measure dissimilarity between spectra.
11. **Plotting partitions** - when true, dumps plots regarding top-level and
merged split, into output directory.
12. **Plotting recursively** - when true, dumps above plots for each of the
subregions, too.
13. **Plotting decomposition** - when true, dumps plots regarding amplitude and
variance filtering at the topmost level.
14. **Plotting decomposition recursively** - as above, but for decomposition
plots.
15. **Max decomposition components** - the maximal number of components used to
decompose amplitude/variance and create filter.
16. **Cache path** - path to directory where partial results may be stored. This
speeds up repeated calculations if trying to chech several variants of nesting,
etc. It can grow large. Should be specified the same for all analyses, to be
able to resolve already computed results. Applicable only if **Caching** is
enabled.
17. **Caching** - if true, partial results are saved to disk to avoid
unnecessary computational overhead in case of repeated calculations.
18. **Max iterations for K-means** - maximal number of iterations, after which
k-means algorithm stops.
19. **Pretty print** - if true, output JSON file is printed with visually
indented rows. Otherwise no additional white characters are introduced, reducing
the number of characters.

# Final notes

In case of any questions, do not hesitate to contact us by
[mail](mailto:[email protected]?subject=[Spectre] Help request).

# References

This software is part of contribution made by
[Data Mining Group of Silesian University of Technology](http://www.zaed.polsl.pl/),
rest of which is published [here](https://github.com/ZAEDPolSl).

+ [Marczyk M, Polanska J, Polanski A: Comparison of Algorithms for Profile-Based
Alignment of Low Resolution MALDI-ToF Spectra. In Advances in Intelligent
Systems and Computing, Vol. 242 of Man-Machine Interactions 3, Gruca A,
Czachorski T, Kozielski S, editors. Springer Berlin Heidelberg 2014, p. 193-201
(ISBN: 978-3-319-02308-3), ICMMI 2013, 22-25.10.2013 Brenna,
Poland](http://link.springer.com/chapter/10.1007/978-3-319-02309-0_20)
+ [P. Widlak, G. Mrukwa, M. Kalinowska, M. Pietrowska, M. Chekan, J. Wierzgon, M.
Gawin, G. Drazek and J. Polanska, "Detection of molecular signatures of oral
squamous cell carcinoma and normal epithelium - application of a novel
methodology for unsupervised segmentation of imaging mass spectrometry data,"
Proteomics, vol. 16, no. 11-12, pp. 1613-21,
2016](http://onlinelibrary.wiley.com/doi/10.1002/pmic.201500458/pdf)
+ [M. Pietrowska, H. C. Diehl, G. Mrukwa, M. Kalinowska-Herok, M. Gawin, M.
Chekan, J. Elm, G. Drazek, A. Krawczyk, D. Lange, H. E. Meyer, J. Polanska, C.
Henkel, P. Widlak, "Molecular profiles of thyroid cancer subtypes:
Classification based on features of tissue revealed by mass spectrometry
imaging," Biochimica et Biophysica Acta (BBA)-Proteins and Proteomics,
2016](http://www.sciencedirect.com/science/article/pii/S1570963916302175)
+ [G. Mrukwa, G. Drazek, M. Pietrowska, P. Widlak and J. Polanska, "A Novel
Divisive iK-Means Algorithm with Region-Driven Feature Selection as a Tool for
Automated Detection of Tumour Heterogeneity in MALDI IMS Experiments," in
International Conference on Bioinformatics and Biomedical Engineering,
2016](http://link.springer.com/chapter/10.1007/978-3-319-31744-1_11)
+ [A. Polanski, M. Marczyk, M. Pietrowska, P. Widlak and J. Polanska, "Signal
partitioning algorithm for highly efficient Gaussian mixture modeling in mass
spectrometry," PloS one, vol. 10, no. 7, p. e0134256,
2015](http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0134256)
Binary file added docs/Spectre.DivikWpfClient.pdf
Binary file not shown.
Binary file added libs/Common/MWArray.dll
Binary file not shown.
Loading

0 comments on commit ff80cf6

Please sign in to comment.