HX2 Hexicon 2
  Current Release: 20 May 2016


Hexicon 2 is an automated pipeline for analysis and visualization of Hydrogen-Deuterium exchange (HDX) data analyzed by mass spectrometry (MS) based on the previously published Hexicon package (Lou et al., Bioinformatics 2010). Hexicon 2 employs the sensitive NITPICK peak detection algorithm of its predecessor and adds new features such as chromatogram alignment and improved peptide sequence assignment.

Details of the algorithmic strategy and new features of Hexicon 2 are described in the accompanying paper cf. Lindner et al., JASMS 2014. Additional instructions on how to use the HDX analysis program and the data browser can be found in the user manual.

Hexicon 2 is free of charge for non-commercial applications and available upon request. Please direct inquiries to hx2 (at) mpimf-heidelberg.mpg.de.

A test dataset is available for downloading, which includes instructions for processing and examples of data visualization example.



Hexicon 2 - Automated analysis of High Resolution H/D-Exchange Mass Spectrometry Data.

Productive Windows (32 bit) build as of 20 May 2016. The core workflow and HXViewer
are productive.

Things to do (ordered by priority):

* Come up with a new and simple format for MS/MS reports.
-- should include only needed information and retention time for mapping to MS1 data.

* Better extraction procedure for deuterated peaks
-- estimate attainable precision from data
-- handle overlaps by competitive unmixing rather than single model deconvolution

* Support for lower-resolution (10 k and below) profile spectra
-- mainly carry out feasibility analysis

* Computational enhancement of resolution
-- find appropriate regularization methods for linear model of amides


- 20 May 2016 - 
* Fixed bug in B-Factor export which would export an empty set if reference and target construct
have a non-zero offset. This becomes apparent when comparing single domains to longer protein

- 06 Aug 2015 - 
* Several usability enhancements around the HXWrapper main routine. It now lives in a 
safe thread and does not kill the entire program when something unexpected happens. 
There should be less crashes upon unexptected user input.
* Changed default parameters to run smoothly with test dataset
* Last release had logging disabled. Re-enabled.

- 10 Jun 2015 -
* HXViewer: Time series export was not handled properly when distributions were
shown and the exported plot size did not match the displayed plot size. Fixed.
* HXViewer: Peptide map color assignment was wrong in single-dataset view. Color values
were previously overestimated as compared to the color bar legend (i.e. more red than they should be).
* HXViewer: CSV Export exported also disabled peptides. Fixed.
Thanks to Udo Heintz for bringing this up.
* Reverted 15 Oct 2014 peak extraction tolerance change. Better handling of extraction  
NOTE: Maximum deuteration is saved in the result data set, hence if the maximum deuteration policy should
ever change in the future, old results will not be updated automatically.

-15 Oct 2014-
* Reverted change to Vigra 1.10 because it did not include the minRelGain premature
stopping criterion which (as it seems) speeds up peak picking significantly in our case.
* Minor change to peak extraction tolerance when looking for deuterated isotopes to
handle highly deuterated peptides better. This is a preliminary hot fix and will need
a smarter solution in the long run.

-22 Jul 2014-
Features and fixes:
* Fixed -1 offset bug in B-factor export
* "Save All" and "Processing > Set all Peptides" did not work on Windows. Fixed.
* Changed criteria for time series creation such that the time series widget will now
attempt to build time series for any two proteins with common peptides. Useful if a
single domain is to be compared to full length protein.
Under the hood:
* HXBFactorExporter was split up into modules such that different peptide selection
and condensation strategies for B-factor mapping can be implemented more easily.
* Updated to most recent VIGRA version which brought about some changes
to the NITPICK engine. Also cleaned up a bit such that only VIGRA headers
are required.
* Relocated HXBFactorExporter and HXResultModel to core library.

-12 Jun 2014-
* Applied the fix to yaml-cpp issue 152 (18 Sep 2012) as advertised here:
yaml-cpp seems to build and link fine as shared library now.

-25 Apr 2014-
* Fixed cosmetic bug introduced on 04 Apr 2014 when redirecting Hexicon version to log file.
Version was only written multiple times into the RunTab textLog window but never into the file.
* Fixed further reference/construct position issues in HXResultList CSV export and HXPeptideMapWidget
PDF multi page export. Both was done by introducing proper use of HXSequenceManager.

-07 Apr 2014-
* Fixed bug in which datasets with unequal availability of 100% control would kill
* Removed a debug cout from HXResultData.
NOTE: This release is from a development branch with many additions under
the hood which were not extensively tested.

-02 Apr 2014-
Lots of changes under the hood. Most notably, introduced HXSequenceManager which manages the 
alignment between reference and construct protein sequence. All calculations are now done on the
construct sequence and HXSequenceManager is used in various places to alter the display (i.e. numbering)
of the sequence such that positions match the reference. No more hacking of sequence positions.
NOTE: Yaml files generated with previous versions of Hexicon 2 will load without error but the sequence offset
will be added twice (because peptide positions were hacked in previous versions).

-26 Jan 2014-
* Switched from SVN to GIT and cleaned up a lot. Builds in naive Linux and Windows environments.
* New items "Processing" menu of HXViewer to enable/disable all peptides conveniently.
* Refactored dataset saving to separate it from GUI class (invisible).
* Fixed likely source of rare mutithreading-related crashes occurring when loading/unloading/saving

-16 Jan 2014-
* Fixed a bug in reference to construct sequence alignment which would not shift the construct
sequence past its length. Todo: Make peptide maps not start at 0 but at the lowest peptide position.
* "Use last time point as 100% D reference" checkbox was ignored. Fixed.

-09 Jan 2014-
* Improved HXCleavageScore file reader to read mixed line endings, as long as they contain \n.
Should allow cross-compatibility of cleavage score files across Windows/Unix systems.
* Improved logic of MS2 record parsing. Fully supports identification of multiple charge states and
keeps the highest scoring record instead of the first encountered one.
* Clean built had not set the RUNTIME_LOG build flag, therefore no log file was written in Windows.
It probably worked in the Linux builds since I hadn't cleared the build cache for that one.

-04 Dec 2013-
* Stupid bug in ms::FBIAligner caused it to segfault in 100% of cases. Sorry about that. Fixed this
and some other bad assumptions in FBIAligner.
* Getting close to having a useful manual.
* Minor change to behavior of HXViewerMainWindow

-24 Nov 2013-
* Stupid bug in ms::FBIAligner caused way too low deltaM tolerance.
* FBIAligner used invalid scan distance intervals (introduced in 06sep13 release)
* HXResultViewer coverage histogram truncated 1 residue from the N AND the C terminus for
back exchange...
* Figure export in hxviewer::HXResultStats now uses the common export dialog.

-06 Sep 2013-
* HXPeptideIdentifier now uses a histogram-based estimation of peak offset and location which is 
much more accurate, more device-independent (previous failed on Orbitrap data) and requires no 
magic number of iterations.
* Removed some embarrassing hard-coded constants in HXPeptideIdentifier or FBIAligner.
* Switched from mean centroid and mean distributions to median centroid and median distributions
as this performed better in our benchmark. It may happen that the displayed distribution centroid
is not the deltaM value displayed in the time series plot.
* Dirty fix of the peptide tree out of sync problem. It seems to have originated due to bad communication
between HXResultTreeModel (derived from QAbstractItemModel),
HXSortFilterProxyModel (derived from QSortFilterproxyModel) and QTreeView because row inactivation is quite
a hack in which disabled rows remain in the display. Now fixed through explicit handling of each layer's
activation and inactivation actions - spaghetti code :(
* HXResult now has a boolean member isActive which indicates its Result Browser display status. This allows
the user to save and restore disabled peptides rather then losing them upon saving to YAML.

-06 Mar 2013-
"As good as it gets" - release.
Known problems:
* Peptide tree view (left side of HXViewer) gets empty extra rows when restoring peptides after
they have been (a) disabled by a filter or (b) disabled manually (right click) and the model has
been reset in the mean time. As I understand model/view architecture, this is inherent to the
way that enabled/disabled peptides are treated and would require a larger rearrangement to fix.
Should not compromise stability of the program.
* 100% control was used in all cases - fixed.
* Deuteration can now be exported into a table compatible with color_b.py. Computation
of "B-Factors" follows the rule applied for AW NSMB paper (one peptide's value per amide,
MS/MS has precedence, prefer longer peptides). Other methods should be easy to add.
* Color legend for peptide map plots.
* Sequence assignment is more strict again ;-)
In the middle between 28 Feb and earlier releases.
* 100% control now slightly more elegant as centroid calculation was largely centralized
into HXDeuterationWorker.

-28 Feb 2013-
* Drag&Drop into HXViewer's time series widget (dataset indexes were wrong) restored
* 100% D control implemented. This was done in a non-invasive, non-elegant fashion
by adding the option to declare the last time point as 100% control. All mass computations
shown to the user then apply the correcting transformation on the fly.
* Sequence assignment is less strict now
WARNING: Generated YAML Files from previous versions are no longer supported by HXViewer!!

-22 Feb 2013-
Large number of fixes and new features:
* No more incomplete extractions are exported. There were two bugs related to this, one of which
affected the "inconsistent replicates: filter.
* Implemented two new alignment algorithms: QuickSeedAligner (slow) and FBIAligner. Both follow the
rationale of intersecting predicted models with significant peaks in the LC-MS maps and creating a 
LOESS interpolation to get (for the first time) a nonlinear time mapping. FBIAligner relies on 
Marc Kirchner's libFBI and Boost headers (Windows, Variadic Templates are not yet supported in MSVC 2012)
and is currently used as default aligner.
* Custom protein modifications can now be loaded from a YAML file and applied through the GUI
* A reference protein sequence can now be loaded. The construct sequence is aligned in a gap-free manner
and position outputs are with respect to the reference.
* HXViewer has gone through quite some evolution and supports all features and GUI manipulations except
for B-Factor table generation. Documentation will follow.

-12 Dec 2012-
Unexpected behavior: deuteration distribution files were exported also for peptides
which did not appear in the exported result csv. Fixed.
Many undocumented additions to HXViewer, not very useful but stable.

-07 Dec 2012-
Peptide set modifications are now supported and serializable in YAML format
using ms::CustomModification. GUI manipulations of the sequence are not
yet implemented such that modifications need to be hard-coded at the moment.
Final HX Results are now exported into a correctly named YAML file instead of
test.yaml in the binary directory. I feel that the contents of this file are 
still subject to change.
Many undocumented additions to HXViewer, not very useful but stable.

-20 Nov 2012-
Convenience Feature: Behavior for all file open and save dialogs was fixed to "start
in the directory where the last file was loaded". Change in mass calibration:
Sample scans until 1000 aligned features for mass calibration are found or sample
the entire map if less than 1000 are found.
Many undocumented additions to HXViewer - not stable!

-11 Oct 2012-
Serialization completed, decided not to export HXPeakListSet in YAML for severe 
performance issues. Started implmentation of Result Viewer which now parses
YAML to create the necessary objects.

-18 Sep 2012-
Added serialization of most important HX core objects using yaml-cpp and
exported the core components into hxcore.dll for shared usage. yaml-cpp needs
static linkage into ms++.dll, hxcore.dll and hexicon.exe with MSVC2010. See yaml-cpp
issue 152: http://code.google.com/p/yaml-cpp/issues/detail?id=152