\chapter{Preface}

\label{chap:preface} 

%\enlargethispage*{\baselineskip}

This manual is about the \msXps\ mass spectrometric software suite, a
software environment that aims at:

\begin{itemize}

	\item Letting users predict/analyze mass
		spectrometric data on (bio)polymers (\massXp module);

	\item Letting user load, view and analyse and mine mass spectrometric data
		(\mineXp module).

\end{itemize}

As such, this manual is intended for people willing to learn how to install and
use the comprehensive \msXps software package.

Mass spectrometry has gained popularity across the past twenty years or so.
Indeed, developments in polymer mass spectrometry have made this technique
appropriate to accurately measure masses of polymers as heavy as many hundreds
of kDa, and of any chemical type.

There are a number of utilities---sold by mass spectrometer constructors with
their machines, usually as a marketing ``plus''---that allow
predicting/analyzing mass spectrometric data obtained on polymers.  These
programs are usually different from a constructor to another.  Also, there are
as many mass spectrometric data prediction/analysis computer programs as there
are different polymer types. You will get a program for oligonucleotides,
another one for proteins, maybe there is one program for saccharides, and so on.
Thus, the biochemist/massist, for example, who happens to work on different
biopolymer types will have to learn to use several different software packages.
Also, if the software user does not own a mass spectrometer, chances are he will
need to buy all these software packages.

The \msXps\ mass spectrometric software is designed to provide \emph{free}
solutions to all these problems by providing the following features:

\begin{itemize}

	\item \massXp:

		\begin{itemize} 

			\item Model \textit{ex nihilo} polymer chemistry definitions (in
				the \xpd\ module that is part of the \massXp\ program);

			\item Peform simple yet powerful mass computations to be made in a mass
				desktop calculator that is both polymer chemistry definition-aware and
				fully programmable (that's the \xpc\ module also part of the \massXp\
				program);

			\item Edit polymer sequences on a polymer chemistry definition-specific
				basis, along with chemical reaction simulations, finely configured mass
				spectrometric computations\dots (all taking place in the \xpe\ module
				that is the main module of the \massXp\ program);

			\item Customize the way each monomer will show up graphically during the
				program operation (in the \xpe\ module);

			\item Edit polymer sequences with immediate visualization of the mass
				changes elicited by the editing activity (in the \xpe\ module);

			\item Open an unlimited number of polymer sequences at any given time and
				of any given polymer chemistry definition type (in the \xpe\ module).

		\end{itemize} 

	\item \mineXp:

		\begin{itemize}

			\item Load mass spectometry data files of the main known open formats
				(\fileformat{mzML, mzXML, txt, xy}, thanks to the excellent
				\libname{libpwiz} library of
				ProteoWizard\footnote{\url{http://proteowizard.sourceforge.net/}} fame);

			\item Display the data in powerful ways in a unified graphical user
				interface. The interface was designed to integrate all the most useful
				characteristics of the various proprietary environments known by the
				author (thanks to the excellent \libname{libqcustomplot}
				library\footnote{\url{http://qcustomplot.com/}.};

			\item Perform data mining by performing data integrations in various ways;

			\item Ion mobility mass spectrometry data are handled;

			\item Data integration allows easy quantitation of spectral data at any
				level (TIC chromatogram, mass spectrum, drift spectrum);

			\item Innovative data analysis recording allows to store the features
				mined during the data mining sessions in flexible ways that allow
				further data processing, like injection in databases;

			\item Convert data from mzML to the private (albeit open) database file
				format that allows to load data much faster. \mineXp can slice big data
				files into smaller chunks retaining all the data selected by the user in
				the most flexible ways.

		\end{itemize}

\end{itemize}


\renewcommand{\sectitle}{Project History}
\section*{\textcolor{sectioningcolor}{\sectitle}}
\addcontentsline{toc}{section}{\numberline{}\sectitle}

This is a brief history of \msXps.

\begin{itemize}

	\item \textbf{1998--2000} The name \massXp\ comes from a project I
		started while I was a post-doctoral fellow at the \'Ecole
		Polytechnique\index{\'Ecole Polytechnique} (Institut Européen de
		Chimie et Biologie, Université~Bordeaux~1, Pessac, France).

		The \massXp\ program was published in \textit{Bioinformatics} (Rusconi,
		F.\index{Rusconi, F.} and Belghazi, M.\index{Belghazi, M.}
		\textsl{Desktop prediction/analysis of mass spectrometric data in
		proteomic projects by using \massXp\.}
		\textit{Bioinformatics}\index{Bioinformatics}, 2002, 644--655).

		At that time, \OSname{MS-Windows} was at the \OSname{Windows NT~4.0}
		version and the next big release was going to be ``you'll see what
		you'll see'' : \OSname{MS-Windows 2000}.

		When I tried \massXp\ on that new version (one colleague had it with a
		new machine), I discovered that my software would not run normally
		(the editor was broken). The Microsoft technical staff' would advise
		to "buy a new version of the compiler environment and rebuild". This
		was a no-go: I did not want to continue paying for using something I
		had produced.

	\item \textbf{2001--2006}

		During fall 1999, I decided that I would stop using Microsoft
		products for my development. At the beginning of 2000 I started as a
		CNRS\index{CNRS} research staff in a new laboratory and decided to
		start fresh: I switched to GNU/Linux (I never looked back). After
		some months of learning, I felt mature to start a new development
		project that would eventually become an official GNU package: GNU
		polyxmass\index{GNU polyxmass}.

		The GNU polyxmass software, much more powerful than what the initial
		\massXp\ software used to be, was published in \textit{BMC
		Bioinformatics} in 2006 (Rusconi, F., \textsl{GNU polyxmass: a
			software framework for mass spectrometric simulations of linear
		(bio-)polymeric analytes.}  \textit{BMC Bioinformatics}\index{BMC
		Bioinformatics}, 2006,226).

		Following that publication I got a lot of feedback (very positive,
		in a way) along the lines: ---\textsl{``Hey, your software looks
			very interesting; only it's a pity we cannot use it because it
			runs on GNU/Linux, and we only use \OSname{MS-Windows} and
			\OSname{MacOSX}!''}

		\item \textbf{2007--2016}

			In december~2006, I decided to make a full rewrite of GNU polyxmass.
			The software of which you are reading the user manual is the result
			of that rewrite. I decided to ``recycle'' the \massXp\ name because
			this software is written in C++, as was the first \massXp\ software.
			Also, because the first \OSname{MS-Windows}-based \massXp\ project is
			not developped anymore, taking that name was kind of a ``revival''
			which I enjoyed.  However, the toolkit I used this time is not the
			Microsoft Foundation Classes (first \massXp\ version) but the
			Trolltech\index{Trolltech} Qt\index{Qt libraries} framework (see the
			``About Qt'' help menu in \massXp).

			Coding with Qt libraries has one big advantage: it allows the
			developer to code once and to compile on the three main platforms
			available today: \OSname{GNU/Linux}, \OSname{MacOSX},
			\OSname{MS-Windows}.  Another advantage is that Qt libraries are
			wonderful software, technically and philosophically (Free
			Software\index{Free Software}).

		\item \textbf{2016--}

			In 2016, I started a new project about visualization of mass spectrometric
			data. The project developed pretty quickly, as we needed at the mass
			spectrometry facility a software that would allow to cope efficiently with
			ion mobility mass spectrometric experimental data. \mineXp was thus
			started. 

			To bundle both \massXp and \mineXp in a single software suite, I bought
			the \msXps website \url{http://msxpertsuite.org} and created that new
			name.

	\end{itemize}



	\renewcommand{\sectitle}{Typographical Conventions}
	\section*{\textcolor{sectioningcolor}{\sectitle}}
	\addcontentsline{toc}{section}{\numberline{}\sectitle}


	Throughout the book the following typographical
	conventions are used:
	\begin{itemize} 
		\item \emph{emphasized text} {\footnotesize is used each time a new
			term or concept is introduced} 
		\item \prompt\ {\footnotesize shows the prompt at which a command
			should be entered as non-root} 
		\item \promptsu\ {\footnotesize shows the prompt at which a command
			should be entered as root} 
		\item \command{this typography} {\footnotesize applies to commands
			that the user enters at the shell prompt along with eventual options} 
		\item \kbdEnterKey\ symbolizes pressing the \kbdKey{Enter} key
		\item \verb#this typography# {\footnotesize applies to an output
			resulting from entering a command at the shell prompt} 
		\item \progname{emacs} or \filename{libQtCore} {\footnotesize names of
			a program or of a library}
		\item \progname{KDE}, \progname{The Gimp} {\footnotesize is the name
			of a generic software (not a specific executable file)}
		\item \filename{/usr/local/share/massxpert}, \filename{/usr/bin/massxpert}
			{\footnotesize are names of a directory or of a file} 
		\item \url{http://www.gnu.org} {\footnotesize is an URL (Uniform
			Resource Locator)}
	\end{itemize}

	\renewcommand{\sectitle}{Program Availability, Technicalities}
	\section*{\textcolor{sectioningcolor}{\sectitle}}
	\addcontentsline{toc}{section}{\numberline{}\sectitle}

	\label{sect:prog-availability-technicalities}

	The ancestor of \massXp, GNU polyxmass\index{GNU polyxmass}, was initially
	developed on a \OSname{GNU/Linux} system (RedHat distribution versions
	successively 6.0, 7.0, 7.2, 7.3, 8.0, 9.0) using software from the Free
	Software Foundation\index{Free Software Foundation} (FSF\footnote{For an
		in-depth coverage of the philosophy behind the FSF, specifically creating a
		\emph{free operating system}, you might desire to visit
		\url{http://www.gnu.org}.}).  The main libraries used were
		\filename{libglib}, \filename{libgobject}, \filename{libxml2} and
		\filename{libgtk+}.  Since mid-2002, the development was performed on a
		\OSname{Debian GNU/Linux} system (\url{http://www.debian.org}), which I find
		to be the ultimate highly-configurable easy-to-use distribution.
		\massXp\ is still developed using the \OSname{Debian GNU/Linux} system,
		using Free Software libraries that allow cross-platform computer program
		development with unprecedented ease (Qt libraries\footnote{Originally from the
			Trolltech company (\url{http://www.trolltech.com}); now The Qt Company Ltd
			(\url{doc.qt.io}).}).  Developing for \OSname{GNU/Linux} has been utterly
			exciting and extremely efficient.


			\renewcommand{\sectitle}{\msXps' Licensing}
			\section*{\textcolor{sectioningcolor}{\sectitle}}
			\addcontentsline{toc}{section}{\numberline{}\sectitle}

			The front matter of this manual contains a Copyright statement. I
			retain the copyright to \msXps\ and all related writings (source and
			configuration files, programmer's documentation, user manual\dots) I
			encourage others to make copies of the work, to distribute it freely,
			to modify the work and redistribute that derivative work according to
			the GNU General Public License version~3\index{General Public
			License}. The aim of this licensing is to favor spread of knowledge
			to the widest public possible. Also, it encourages interested
			hackers\footnote{\emph{Hacker}\index{hacker} is a specialized term to
			design the programmer who codes programs; this term should
			\emph{not} be mistaken with \emph{cracker}\index{cracker} who is a
			person who uses computer science knowledge to break information
		systems' security barriers.}  to change the code, to improve it and
		to send patches to the author so that their improvements get into the
		program to the benefit of the widest public possible. For an in-depth
		study of the \textsc{free software}\index{free software} philosphy I
		kindly urge the reader to visit \url{http://www.gnu.org/philosophy}.

		\newpage 

		\renewcommand{\sectitle}{Contacting The Author}\index{author}
		\section*{\textcolor{sectioningcolor}{\sectitle}}
		\addcontentsline{toc}{section}{\numberline{}\sectitle}

		\msXps\ is the fruit of years of work on my part.\footnote{As said earlier,
			\msXps\ is the successor to the \massXp\ project of which it inherits all
		the original features, while still integrating new interesting developments.}
		While I've put a lot of energy into making this program as stable and reliable
		a piece of software as possible, \msXps\ comes with no warranty of any kind.

		\medskip

		The public home page is at \url{http://www.msxpertsuite.org}. 

		\medskip

		The code
		repository is at
		\url{https://sourcesup.renater.fr/projects/msxpertsuite}.

		\medskip

		The Git repos page is at
		\url{https://sourcesup.renater.fr/scm/browser.php?group_id=3534}

		Interaction with the developer(s) and the user(s) is according to two modes:

		\begin{itemize}

			\item \textbf{Forum}
				\url{https://sourcesup.renater.fr/forum/forum.php?forum_id=4987}

			\item \textbf{Mailing lists}

				\begin{itemize}

					\item \verb[msxpertsuite-commits@groupes.renater.fr[ (subscribe at
							msxpertsuite-commits-request@groupes.renater.fr);

					\item \verb[msxpertsuite-discussion@groupes.renater.fr[ (subscribe at
							msxpertsuite-discussion-request@groupes.renater.fr);

				\end{itemize}

		\end{itemize}

		\noindent To direct any comment(s) to the author through snail mail,
		use the following address\index{author address}:

		\begin{center}
			\noindent D$\mathrm{^r}$~Filippo \textsc{Rusconi}\\
			\vspace{2mm}%

			{
				\footnotesize

				\begin{verbatim}
				Génétique Quantitative et Évolution & Plateforme PAPPSO
				UMR CNRS 8120 - INRA - Université Paris-Sud - AgroParisTech - Université Paris-Saclay
				http://moulon.inra.fr/ & http://pappso.inra.fr/
				Ferme du Moulon
				91190 Gif-sur-Yvette
				France
				Fax : +33 (0)1 69 33 23 40
				\end{verbatim}
			}

		\end{center}

		\cleardoublepage

