Package: peptdeep
AlphaPeptDeep (PeptDeep)AboutLicenseInstallationOne-click GUIPip installerUse GPUDeveloper installerUsageGUICLIPython and jupyter notebooksTroubleshootingCitationsHow to contributeChangelogAboutAlphaPeptDeep (peptdeepfor short) aims to easily build new deep
learning models for shotgun proteomics studies. Transfer learning is
also easy to apply using AlphaPeptDeep.It contains some built-in models such as retention time (RT), collision
cross section (CCS), and tandem mass spectrum (MS2) prediction for given
peptides. With these models, one can easily generate a predicted library
from fasta files.For details, check out ourpublications.For documentation, seereadthedocs.AlphaX repositories:alphabase: Infrastructure for AlphaX Ecosystemalphapept: DDA search
enginealphapeptdeep: Deep
learning for proteomicsalpharaw: Raw data
accessingalphaviz: MS data and
result visualizationalphatims: timsTOF data
accessingSubsequent projects of AlphaPeptDeeppeptdeep_hla: the DL model that predict if a peptide is presented by indivudual HLA or not.Other pre-trained MS2/RT/CCS modelsDimethyl: the MS2/RT/CCS models for Dimethyl-labeled peptides.CitationsWen-Feng Zeng, Xie-Xuan Zhou, Sander Willems, Constantin Ammar, Maria Wahle, Isabell Bludau, Eugenia Voytik, Maximillian T. Strauss & Matthias Mann. AlphaPeptDeep: a modular deep learning framework to predict peptide properties for proteomics. Nat Commun 13, 7238 (2022).https://doi.org/10.1038/s41467-022-34904-3LicenseAlphaPeptDeep was developed by theMann Labs at the Max Planck
Institute of Biochemistryand theUniversity of
Copenhagenand is
freely available with anApache License. External Python
packages (available in therequirementsfolder) have
their own licenses, which can be consulted on their respective websites.InstallationAlphaPeptDeep can be installed and used on all major operating systems
(Windows, macOS and Linux).There are three different types of installation possible:One-click GUI installer:Choose this
installation if you only want the GUI and/or keep things as simple as
possible.Pip installer:Choose this installation if you want to use peptdeep as a Python package in an existing Python (recommended Python 3.8 or 3.9) environment (e.g. a Jupyter notebook). If needed, the GUI and CLI
can be installed with pip as well.Developer installer:Choose this installation if you
are familiar with CLI tools,condaand Python. This installation allows access to all available features
of peptdeep and even allows to modify its source code directly.
Generally, the developer version of peptdeep outperforms the
precompiled versions which makes this the installation of choice for
high-throughput experiments.One-click GUIThe GUI of peptdeep is a completely stand-alone tool that requires no
knowledge of Python or CLI tools. Click on one of the links below to
download the latest release for:WindowsmacOSLinuxOlder releases remain available on therelease
page, but no
backwards compatibility is guaranteed.Note that, as GitHub does not allow large release files, these installers do not have GPU support. To create GPU version installers, clone the source code and install GPU-version pytorch (#use-gpu), and then userelease/one_click_xxx_gui/create_installer_xxx.shto build installer locally. For example in Windows, runcdrelease/one_click_windows_gui
../create_installer_windows.shPipPythonNET must be installed to access Thermo or Sciex raw data.Legacy, should be replaced by AlphaRaw in the near future.PythonNET in WindowsAutomatically installed for Windows.PythonNET in LinuxInstall Mono from mono-project websiteMono
Linux.
NOTE, the installed mono version should be at least 6.10, which
requires you to add the ppa to your trusted sources!Install PythonNET withpip install pythonnet.PythonNET in MacOSInstallbrewand pkg-config:brew install pkg-config3. Install Mono from mono-project
websiteMono MacRegister the Mono-Path to your system: For macOS Catalina, open
the configuration of zsh via the terminal:Typenano ~/.zshrcto open the configuration of the terminalAppend the mono path to yourPKG_CONFIG_PATH:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig:$PKG_CONFIG_PATH.Save everything and execute. ~/.zshrcInstall PythonNET withpip install pythonnet.peptdeep can be installed in an existing Python environment with a
singlebashcommand.Thisbashcommand can also be run directly
from within a Jupyter notebook by prepending it with a!:pipinstallpeptdeepInstalling peptdeep like this avoids conflicts when integrating it in
other tools, as this does not enforce strict versioning of dependancies.
However, if new versions of dependancies are released, they are not
guaranteed to be fully compatible with peptdeep. This should only occur
in rare cases where dependencies are not backwards compatible.TODOYou can always force peptdeep to use dependancy versions
which are known to be compatible with:pipinstall"peptdeep[stable]"NOTE: You might need to runpip install pipbefore installing
peptdeep like this. Also note the double quotes".For those who are really adventurous, it is also possible to directly
install any branch (e.g.@development) with any extras
(e.g.#egg=peptdeep[stable,development-stable]) from GitHub with e.g.pipinstall"git+https://github.com/MannLabs/alphapeptdeep.git@development#egg=peptdeep[stable,development-stable]"Use GPUTo enable GPU, GPU version of PyTorch is required, it can be installed
with:pipinstalltorch--extra-index-urlhttps://download.pytorch.org/whl/cu116--upgradeNote that this may depend on your NVIDIA driver version. Run the command
to check your NVIDIA driver:nvidia-smiFor latest pytorch version, seepytorch.org.Developerpeptdeep can also be installed in editable (i.e. developer) mode with a
fewbashcommands. This allows to fully customize the software and
even modify the source code to your specific needs. When an editable
Python package is installed, its source code is stored in a transparent
location of your choice. While optional, it is advised to first (create
and) navigate to e.g. a general software folder:mkdir~/alphapeptdeep/project/foldercd~/alphapeptdeep/project/folderThe following commands assume you do not perform any additionalcdcommands anymore.Next, download the peptdeep repository from GitHub either directly or
with agitcommand. This creates a new peptdeep subfolder in your
current directory.gitclonehttps://github.com/MannLabs/alphapeptdeep.gitFor any Python package, it is highly recommended to use a separateconda virtual environment, as
otherwisedependancy conflicts can occur with already existing
packages.condacreate--namepeptdeeppython=3.9-y
condaactivatepeptdeepFinally, peptdeep and all itsdependanciesneed to be
installed. To take advantage of all features and allow development (with
the-eflag), this is best done by also installing thedevelopment
dependenciesinstead of only
thecore dependencies:pipinstall-e".[development]"By default this installs loose dependancies (no explicit versioning),
although it is also possible to use stable dependencies
(e.g.pip install -e ".[stable,development-stable]").By using the editable flag-e, all modifications to thepeptdeep
source code folderare directly reflected when running
peptdeep. Note that the peptdeep folder cannot be moved and/or renamed
if an editable version is installed. In case of confusion, you can
always retrieve the location of any Python module with e.g. the commandimport modulefollowed bymodule.__file__.We usednbdev v2for developers to build
Python source code and docs smoothly from Python notebooks, so please do
not edit .py files directly, edit .ipynb innbdev_nbsfolder instead.
After installing nbdev, cd to alphapeptdeep project folder and run:nbdev_install_hooksto init gitconfig for nbdev. After editing the source code in .ipynb
files, usingnbdev_exportto build python source code andnbdev_testto run all .ipynb files innbdev_nbsfor testing. Checknbdev
docsfor more information.UsageThere are three ways to use peptdeep:GUICLIPythonNOTE: The first time you use a fresh installation of peptdeep, it is
often quite slow because some functions might still need compilation on
your local operating system and architecture. Subsequent use should be a
lot faster.GUIIf the GUI was not installed through a one-click GUI installer, it can
be launched with the followingbashcommand:peptdeepguiThis command will start a web server and automatically open the default
browser:There are several options in the GUI (left panel):Server: Start/stop the task server, check tasks in the task queueSettings: Configure common settings, load/save current settingsModel: Configure DL models for prediction or transfer learningTransfer: Refine the modelsLibrary: Predict a libraryRescore: Perform ML feature extraction and PercolatorCLIThe CLI can be run with the following command (after activating thecondaenvironment withconda activate peptdeepor if an alias was
set to the peptdeep executable):peptdeep-hIt is possible to get help about each function and their (required)
parameters by using the-hflag. AlphaPeptDeep provides several
commands for different tasks:export-settingscmd-flowlibrarytransferrescoreinstall-modelsguiRun a command to check usages:peptdeep$command-hFor example:peptdeeplibrary-hexport-settingspeptdeepexport-settingsC:/path/to/settings.yamlThis command will export the default settings into thesettings.yamlas a template, users can edit the yaml file to run other commands.Here is a section of the yaml file which controls global parameters for
different tasks:model_url: "https://github.com/MannLabs/alphapeptdeep/releases/download/pre-trained-models/pretrained_models.zip"

task_type: library
task_type_choices:
  - library
  - train
  - rescore
thread_num: 8
torch_device:
  device_type: gpu
  device_type_choices:
    - gpu
    - mps
    - cpu
  device_ids: []

log_level: info
log_level_choices:
  - debug
  - info
  - warning
  - error
  - critical

common:
  modloss_importance_level: 1.0
  user_defined_modifications: {}
  # For example,
  # user_defined_modifications:
  #   "Dimethyl2@Any N-term": 
  #     composition: "H(2)2H(2)C(2)"
  #     modloss_composition: "H(0)" # can be without if no modloss
  #   "Dimethyl2@K":
  #     composition: "H(2)2H(2)C(2)"
  #   "Dimethyl6@Any N-term":
  #     composition: "2H(4)13C(2)"
  #   "Dimethyl6@K":
  #     composition: "2H(4)13C(2)"

peak_matching:
  ms2_ppm: True
  ms2_tol_value: 20.0
  ms1_ppm: True
  ms1_tol_value: 20.0

model_mgr:
  default_nce: 30.0
  default_instrument: Lumos
  mask_modloss: True
  model_type: generic
  model_choices:
  - generic
  - phos
  - hla # same as generic
  - digly
  external_ms2_model: ''
  external_rt_model: ''
  external_ccs_model: ''
  instrument_group:
    ThermoTOF: ThermoTOF
    Astral: ThermoTOF
    Lumos: Lumos
    QE: QE
    timsTOF: timsTOF
    SciexTOF: SciexTOF
    Fusion: Lumos
    Eclipse: Lumos
    Velos: Lumos # not important
    Elite: Lumos # not important
    OrbitrapTribrid: Lumos
    ThermoTribrid: Lumos
    QE+: QE
    QEHF: QE
    QEHFX: QE
    Exploris: QE
    Exploris480: QE
  predict:
    batch_size_ms2: 512
    batch_size_rt_ccs: 1024
    verbose: True
    multiprocessing: TrueThemodel_mgrsection in the yaml defines the common settings for
MS2/RT/CCS prediction.cmd-flowpeptdeepcmd-flow...Support CLI parameters to controlglobal_settingsfor CLI users. It supports three workflows:train,libraryortrain library, controlled by CLI parameter--task_workflow, for example,--task_workflow train library. All settings inglobal_settingsare converted to CLI parameters using--as the dict level indicator, for example,global_settings["library"]["var_mods"]corresponds to--library--var_mods. Seetest_cmd_flow.shfor example.There are three kinds of parameter types:value type (int, float, bool, str): The CLI parameter only has a single value, for instance:--model_mgr--default_instrument 30.0.list type (list): The CLI parameter has a list of values seperated by a space, for instance--library--var_mods "Oxidation@M" "Acetyl@Protein_N-term".dict type (dict): Only three parameters aredict type,--library--labeling_channels,--model_mgr--transfer--psm_modification_mapping, and--common--user_defined_modifications. Here are the examples:
---library--labeling_channels: labeling channels for the library. Example:--library--labeling_channels "0:Dimethyl@Any_N-term;Dimethyl@K" "4:xx@Any_N-term;xx@K"---model_mgr--transfer--psm_modification_mapping: converting other search engines' modification names to alphabase modifications for transfer learning. Example:--model_mgr--transfer--psm_modification_mapping "Dimethyl@Any_N-term:_(Dimethyl-n-0);_(Dimethyl)" "Dimethyl@K:K(Dimethyl-K-0);K(Dimethyl)". Note thatX(UniMod:id)format can directly be recognized by alphabase.
---common--user_defined_modification: user defined modifications. Example:--common--user_defined_modification "NewMod1@Any_N-term:H(2)2H(2)C(2)" "NewMod2@K:H(100)O(2)C(2)"librarypeptdeeplibrarysettings_yamlThis command will predict a spectral library for given settings_yaml
file (exported byexport-settings). All the
essential settings are in thelibrarysection in the settings_yaml
file:library:
  infile_type: fasta
  infile_type_choices:
  - fasta
  - sequence_table
  - peptide_table # sequence with mods and mod_sites
  - precursor_table # peptide with charge state
  infiles: 
  - xxx.fasta
  fasta:
    protease: 'trypsin'
    protease_choices:
    - 'trypsin'
    - '([KR])'
    - 'trypsin_not_P'
    - '([KR](?=[^P]))'
    - 'lys-c'
    - 'K'
    - 'lys-n'
    - '\w(?=K)'
    - 'chymotrypsin'
    - 'asp-n'
    - 'glu-c'
    max_miss_cleave: 2
    add_contaminants: False
  fix_mods: 
  - Carbamidomethyl@C
  var_mods:
  - Acetyl@Protein N-term
  - Oxidation@M
  special_mods: [] # normally for Phospho or GlyGly@K
  special_mods_cannot_modify_pep_n_term: False
  special_mods_cannot_modify_pep_c_term: False
  labeling_channels: {}
  # For example,
  # labeling_channels:
  #   0: ['Dimethyl@Any N-term','Dimethyl@K']
  #   4: ['Dimethyl:2H(2)@Any N-term','Dimethyl:2H(2)@K']
  #   8: [...]
  min_var_mod_num: 0
  max_var_mod_num: 2
  min_special_mod_num: 0
  max_special_mod_num: 1
  min_precursor_charge: 2
  max_precursor_charge: 4
  min_peptide_len: 7
  max_peptide_len: 35
  min_precursor_mz: 200.0
  max_precursor_mz: 2000.0
  decoy: pseudo_reverse
  decoy_choices:
  - pseudo_reverse
  - diann
  - None
  max_frag_charge: 2
  frag_types:
  - b
  - y
  rt_to_irt: True
  generate_precursor_isotope: False
  output_folder: "{PEPTDEEP_HOME}/spec_libs"
  output_tsv:
    enabled: False
    min_fragment_mz: 200
    max_fragment_mz: 2000
    min_relative_intensity: 0.001
    keep_higest_k_peaks: 12
    translate_batch_size: 1000000
    translate_mod_to_unimod_id: Falsepeptdeep will load sequence data based onlibrary:infile_typeandlibrary:infilesfor library prediction.library:infilescontains the list of files withlibrary:infile_typedefined inlibrary:infile_type_choices:fasta: Protein fasta files, peptdeep will digest the protein sequences
into peptide sequences.sequence_table: Tab/comma-delimited txt/tsv/csv
(text) files which contain the columnsequencefor peptide
sequences.peptide_table: Tab/comma-delimited txt/tsv/csv
(text) files which contain the columnssequence,mods, andmod_sites. peptdeep will not add modifications for peptides of this
file type.precursor_table: Tab/comma-delimited txt/tsv/csv
(text) files which contain the columnssequence,mods,mod_sites, andcharge. peptdeep will not add modifications and
charge states for peptides of this file type.See examples:importpandasaspddf=pd.DataFrame({'sequence':['ACDEFGHIK','LMNPQRSTVK','WYVSTR'],'mods':['Carbamidomethyl@C','Acetyl@Protein N-term;Phospho@S',''],'mod_sites':['2','0;7',''],'charge':[2,3,1],})sequence_tabledf[['sequence']]sequence0ACDEFGHIK1LMNPQRSTVK2WYVSTRpeptide_tabledf[['sequence','mods','mod_sites']]sequencemodsmod_sites0ACDEFGHIKCarbamidomethyl@C21LMNPQRSTVKAcetyl@Protein N-term;Phospho@S0;72WYVSTRprecursor_tabledfsequencemodsmod_sitescharge0ACDEFGHIKCarbamidomethyl@C221LMNPQRSTVKAcetyl@Protein N-term;Phospho@S0;732WYVSTR1Columns ofproteinsandgenesare optional for these txt/tsv/csv
files.peptdeep supports multiple files for library prediction, for example (in
the yaml file):library:
  ...
  infile_type: fasta
  infiles:
  - /path/to/fasta/human.fasta
  - /path/to/fasta/yeast.fasta
  ...The library in HDF5 (.hdf) format will be saved intolibrary:output_folder. Iflibrary:output_tsv:enabledis True, a TSV
spectral library that can be processed by DIA-NN and Spectronaut will
also be saved intolibrary:output_folder.transferpeptdeeptransfersettings_yamlThis command will apply transfer learning to refine RT/CCS/MS2 models
based onmodel_mgr:transfer:psm_filesandmodel_mgr:transfer:psm_type. All yaml settings (exported byexport-settings) related to this command are:model_mgr:
  transfer:
    model_output_folder: "{PEPTDEEP_HOME}/refined_models"
    epoch_ms2: 20
    warmup_epoch_ms2: 10
    batch_size_ms2: 512
    lr_ms2: 0.0001
    epoch_rt_ccs: 40
    warmup_epoch_rt_ccs: 10
    batch_size_rt_ccs: 1024
    lr_rt_ccs: 0.0001
    verbose: False
    grid_nce_search: False
    grid_nce_first: 15.0
    grid_nce_last: 45.0
    grid_nce_step: 3.0
    grid_instrument: ['Lumos']
    psm_type: alphapept
    psm_type_choices:
      - alphapept
      - pfind
      - maxquant
      - diann
      - speclib_tsv
    psm_files: []
    ms_file_type: alphapept_hdf
    ms_file_type_choices:
      - alphapept_hdf
      - thermo_raw
      - mgf
      - mzml
    ms_files: []
    psm_num_to_train_ms2: 100000000
    psm_num_per_mod_to_train_ms2: 50
    psm_num_to_test_ms2: 0
    psm_num_to_train_rt_ccs: 100000000
    psm_num_per_mod_to_train_rt_ccs: 50
    psm_num_to_test_rt_ccs: 0
    top_n_mods_to_train: 10
    psm_modification_mapping: {} 
    # alphabase modification to modifications of other search engines
    # For example,
    # psm_modification_mapping:
    #   Dimethyl@Any N-term: 
    #     - _(Dimethyl-n-0)
    #     - _(Dimethyl)
    #   Dimethyl:2H(2)@K: 
    #     - K(Dimethyl-K-2)
    #   ...For DDA data, peptdeep can also extract MS2 intensities from the
spectrum files frommodel_mgr:transfer:ms_filesandmodel_mgr:transfer:ms_file_typefor all PSMs. This will enable the
transfer learning of the MS2 model.For DIA data, only RT and CCS (if timsTOF) models will be refined.For example of the settings yaml:model_mgr:
  transfer:
    ...
    psm_type: pfind
    psm_files:
    - /path/to/pFind.spectra
    - /path/to/other/pFind.spectra

    ms_file_type: thermo_raw
    ms_files:
    - /path/to/raw1.raw
    - /path/to/raw2.raw
    ...The refined models will be saved inmodel_mgr:transfer:model_output_folder. After transfer learning, users
can apply the new models by replacingmodel_mgr:external_ms2_model,model_mgr:external_rt_modelandmodel_mgr:external_ccs_modelwith
the savedms2.pth,rt.pthandccs.pthinmodel_mgr:transfer:model_output_folder. This is useful to perform
sample-specific library prediction.rescoreThis command will apply Percolator to rescore DDA PSMs inpercolator:input_files:psm_filesandpercolator:input_files:psm_type. All yaml settings (exported byexport-settings) related to this command are:percolator:
  require_model_tuning: True
  raw_num_to_tune: 8

  require_raw_specific_tuning: True
  raw_specific_ms2_tuning: False
  psm_num_per_raw_to_tune: 200
  epoch_per_raw_to_tune: 5

  multiprocessing: True

  top_k_frags_to_calc_spc: 10
  calibrate_frag_mass_error: False
  max_perc_train_sample: 1000000
  min_perc_train_sample: 100

  percolator_backend: sklearn
  percolator_backend_choices:
    - sklearn
    - pytorch
  percolator_model: linear
  percolator_model_choices:
    pytorch_as_backend:
      - linear # not fully tested, performance may be unstable
      - mlp # not implemented yet
    sklearn_as_backend:
      - linear # logistic regression
      - random_forest
  lr_percolator_torch_model: 0.1 # learning rate, only used when percolator_backend==pytorch 
  percolator_iter_num: 5 # percolator iteration number
  cv_fold: 1
  fdr: 0.01
  fdr_level: psm
  fdr_level_choices:
    - psm
    - precursor
    - peptide
    - sequence
  use_fdr_for_each_raw: False
  frag_types: ['b_z1','b_z2','y_z1','y_z2']
  input_files:
    psm_type: alphapept
    psm_type_choices:
      - alphapept
      - pfind
    psm_files: []
    ms_file_type: alphapept_hdf
    ms_file_type_choices:
      - alphapept_hdf
      - thermo_raw # if alpharaw is installed
      - mgf
      - mzml
    ms_files: []
    other_score_column_mapping:
      alphapept: {}
      pfind: 
        raw_score: Raw_Score
      msfragger:
        hyperscore: hyperscore
        nextscore: nextscore
      maxquant: {}
  output_folder: "{PEPTDEEP_HOME}/rescore"Transfer learning will be applied when rescoring ifpercolator:require_model_tuningis True.The corresponding MS files (percolator:input_files:ms_filesandpercolator:input_files:ms_file_type) must be provided to extract
experimental fragment intensities.install-modelspeptdeepinstall-models[--model-fileurl_or_local_model_zip]--overwriteTrueRunning peptdeep for the first time, it will download and install models
frommodels on githubdefined in ‘model_url’ in the default yaml settings. This command will
updatepretrained_models.zipfrom--model-file url_or_local_model_zip.It is also possible to use other models instead of the pretrained_models by providingmodel_mgr:external_ms2_model,model_mgr:external_rt_modelandmodel_mgr:external_ccs_model.Python and Jupyter notebooksUsing peptdeep from Python script or notebook provides the most flexible
way to access all features in peptdeep.We will introduce several usages of peptdeep via Python notebook:global_settingsPipeline APIsModelManagerLibrary PredictionDDA RescoringHLA Peptide Predictionglobal_settingsMost of the default parameters and attributes peptdeep functions and
classes are controlled bypeptdeep.settings.global_settingswhich is adict.frompeptdeep.settingsimportglobal_settingsThe default values ofglobal_settingsis defined indefault_settings.yaml.Pipeline APIsPipeline APIs provides the same functionalities withCLI,
includinglibrary prediction,transfer
learning, andrescoring.frompeptdeep.pipeline_apiimport(generate_library,transfer_learn,rescore,)All these functionalities take asettings_dictas the inputs, the dict
structure is the same as the settings yaml file. See the documatation ofgenerate_library,transfer_learn,rescoreinhttps://alphapeptdeep.readthedocs.io/en/latest/module_pipeline_api.html.ModelManagerfrompeptdeep.pretrained_modelsimportModelManagerModelManagerclass is the main entry to access MS2/RT/CCS models. It provides functionalities to train/refine the models and then use the new models to predict the data.Checktutorial_model_manager.ipynbfor details.Library Predictionfrompeptdeep.protein.fastaimportPredictSpecLibFastaPredictSpecLibFastaclass provides functionalities to deal with fasta files or protein
sequences and spectral libraries.Check outtutorial_speclib_from_fasta.ipynbfor details.DDA Rescoringfrompeptdeep.rescore.percolatorimportPercolatorPercolatorclass provides functionalities to rescore DDA PSMs search bypFindandAlphaPept, (andMaxQuantif output FDR=100%), …Check outtest_percolator.ipynbfor details.HLA Peptide Predictionfrompeptdeep.model.model_interfaceimportModelInterfaceimportpeptdeep.model.generic_property_prediction# model shopBuilding new DL models for peptide property prediction is one of the key features of AlphaPeptDeep. The key functionalities areModelInterfaceand the pre-designed models and model interfaces in the model shop (modulepeptdeep.model.generic_property_prediction).For example, we can built a HLA classifier that distinguishes HLA peptides from non-HLA peptides, seehttps://github.com/MannLabs/PeptDeep-HLAfor details.TroubleshootingIn case of issues, check out the following:Issues. Try a few
different search terms to find out if a similar problem has been
encountered before.Discussions.
Check if your problem or feature requests has been discussed before.How to contributeIf you like this software, you can give us astarto boost
our visibility! All direct contributions are also welcome. Feel free to
post a newissueor
clone the repository and create apull
requestwith a new
branch. For an even more interactive participation, check out thediscussionsand
thethe Contributors License Agreement.ChangelogSee theHISTORY.mdfor a full overview of the changes made
in each version.