# MacSyFinder implementation overview

MacSyFinder is implemented with an object-oriented architecture. Below a short glossary to fix the vocabulary used in MacSyFinder

Cluster

  Is a “contiguous” set of hits. two hits are considered contiguous if the number of genes between the 2 genes matching the 2 hits in the replicon is lesser than inter-genes-max-space.

Model

  Is a formal description of a macromolecular system. Is composed of a definition and a list of profiles. at each gene of the Model must correspond a profile

Model family

  A set of models, on the same topic. It is composed of several definitions which can be sorted in hierachical structure and profiles. A profile is a hmm profile file.

ModelDefinition

  Is a definition of model, it’s serialize as a xml file

Solution

  It’s a systems combination for one replicon. The best solution for a replicon, is the combination of all systems found in this replicon which maximize the score.

System

  It’s an occurrence of a specific Model on a replicon. Basically, it’s a cluster or set of clusters which satisfy the Model quorum.

## MacSyFinder project structure

A brief overview of the files and directory constituting the MacSyFinder project

doc

  The project is documented using sphinx. All sources files needed to generate this documentation is in the directory doc

macsyfinder

  This the MacSyFinder python library. Inside macsyfinder there is a subdirectory scripts which are the entry points for macsyfinder, msf_data, msf_profile, …

tests

  The code is tested using unittests. In tests the directory data contains all data needed to perform the tests.

utils

  Contains a binary setsid needed macsyfinder to parallelize some steps. Usually setsid is provides by the system, but some macOS version does not provide it.

CITATION.yml

  A file indicating how to cite macsyfinder in yaml format.

CONTRIBUTORS

  A file containing the list of code contributors.

CONTRIBUTING

  A guide on how to contribute to the project.

COPYRIGHT

  The macsyfinder copyrights.

COPYING

  The licencing. MacSyFinder is released under GPLv3.

README.md

  Brief information about the project.

setup.py

  The installation recipe specific to embeded doc in distrib.

pyproject.toml

  a configuration file for packaging-related tools (as well as other tools).

## MacSyFinder architecture overview

Starting with 2.1.5 version MacSyFinder is build on top of MacSyLib for the internal read MacSyLib documentation