diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8a478907..182885b1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -73,7 +73,7 @@ jobs: needs: build-linux strategy: matrix: - python-version: ['3.7','3.8','3.9','3.10', '3.11'] + python-version: ['3.8','3.9','3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v3 - uses: actions/download-artifact@v3 diff --git a/.readthedocs.yaml b/.readthedocs.yaml index d87c2e6f..d95161e3 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,11 +3,13 @@ version: 2 build: os: ubuntu-22.04 tools: - python: "3.11" + python: "3.12" sphinx: configuration: docs/conf.py python: install: + - method: pip + path: . - requirements: docs/requirements.txt diff --git a/README.md b/README.md index 84d46be8..f3f614c2 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ [![install with bioconda](https://img.shields.io/badge/install%20with-bioconda-brightgreen.svg?style=flat)](http://bioconda.github.io/recipes/deeptools/README.html) [![European Galaxy server](https://img.shields.io/badge/usegalaxy-.eu-brightgreen?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAASCAYAAABB7B6eAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAACC2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KD0UqkwAAAn9JREFUOBGlVEuLE0EQruqZiftwDz4QYT1IYM8eFkHFw/4HYX+GB3/B4l/YP+CP8OBNTwpCwFMQXAQPKtnsg5nJZpKdni6/6kzHvAYDFtRUT71f3UwAEbkLch9ogQxcBwRKMfAnM1/CBwgrbxkgPAYqlBOy1jfovlaPsEiWPROZmqmZKKzOYCJb/AbdYLso9/9B6GppBRqCrjSYYaquZq20EUKAzVpjo1FzWRDVrNay6C/HDxT92wXrAVCH3ASqq5VqEtv1WZ13Mdwf8LFyyKECNbgHHAObWhScf4Wnj9CbQpPzWYU3UFoX3qkhlG8AY2BTQt5/EA7qaEPQsgGLWied0A8VKrHAsCC1eJ6EFoUd1v6GoPOaRAtDPViUr/wPzkIFV9AaAZGtYB568VyJfijV+ZBzlVZJ3W7XHB2RESGe4opXIGzRTdjcAupOK09RA6kzr1NTrTj7V1ugM4VgPGWEw+e39CxO6JUw5XhhKihmaDacU2GiR0Ohcc4cZ+Kq3AjlEnEeRSazLs6/9b/kh4eTC+hngE3QQD7Yyclxsrf3cpxsPXn+cFdenF9aqlBXMXaDiEyfyfawBz2RqC/O9WF1ysacOpytlUSoqNrtfbS642+4D4CS9V3xb4u8P/ACI4O810efRu6KsC0QnjHJGaq4IOGUjWTo/YDZDB3xSIxcGyNlWcTucb4T3in/3IaueNrZyX0lGOrWndstOr+w21UlVFokILjJLFhPukbVY8OmwNQ3nZgNJNmKDccusSb4UIe+gtkI+9/bSLJDjqn763f5CQ5TLApmICkqwR0QnUPKZFIUnoozWcQuRbC0Km02knj0tPYx63furGs3x/iPnz83zJDVNtdP3QAAAABJRU5ErkJggg==)](https://usegalaxy.eu/root?tool_id=deeptools_compute_matrix) ![test](https://github.com/deeptools/deepTools/actions/workflows/test.yml/badge.svg) -![planemo](https://github.com/deeptools/deepTools/actions/workflows/planemo.yml/badge.svg) ## User-friendly tools for exploring deep-sequencing data @@ -34,35 +33,26 @@ Our [Gallery](http://deeptools.readthedocs.org/en/latest/content/example_gallery deepTools are available for: -* Command line usage (via pip/anaconda/github) +* Command line usage (via pip / conda / github) * Integration into Galaxy servers (via toolshed/API/web-browser) -There are many easy ways to install deepTools. Details can be found [here](https://deeptools.readthedocs.io/en/latest/content/installation.html) +There are many easy ways to install deepTools. More details can be found [here](https://deeptools.readthedocs.io/en/latest/content/installation.html). -**Install by cloning this repository:** +In Brief: -You can install any one of the deepTools branches on command line (linux/mac) by cloning this git repository : +**Install through pypi** - $ git clone https://github.com/deeptools/deepTools - $ cd deepTools - $ python setup.py install - -By default, the script will install the python library and executable -codes globally, which means you need to be root or administrator of -the machine to complete the installation. If you need to -provide a nonstandard install prefix, or any other nonstandard -options, you can provide many command line options to the install -script. + $ pip install deeptools - $ python setup.py --help +**Install via conda** -For example, to install under a specific location use: + $ conda install -c bioconda deeptools - $ python setup.py install --prefix +**Install by cloning the repository** -To install into your home directory, use: - - $ python setup.py install --user + $ git clone https://github.com/deeptools/deepTools + $ cd deepTools + $ pip install . ### Galaxy Installation diff --git a/deeptools/alignmentSieve.py b/deeptools/alignmentSieve.py index 4f2aa187..73a24734 100644 --- a/deeptools/alignmentSieve.py +++ b/deeptools/alignmentSieve.py @@ -7,11 +7,8 @@ from deeptools import parserCommon from deeptools.bamHandler import openBam from deeptools.mapReduce import mapReduce -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version from deeptools.utilities import getTLen, smartLabels, getTempFileName +from importlib.metadata import version def parseArguments(): diff --git a/deeptools/bamPEFragmentSize.py b/deeptools/bamPEFragmentSize.py index ad63fa14..91380517 100755 --- a/deeptools/bamPEFragmentSize.py +++ b/deeptools/bamPEFragmentSize.py @@ -18,10 +18,7 @@ # own tools from deeptools.parserCommon import writableFile from deeptools.getFragmentAndReadSize import get_read_and_fragment_length -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version +from importlib.metadata import version def parse_arguments(): diff --git a/deeptools/computeMatrix.py b/deeptools/computeMatrix.py index 440358c9..2202c1d1 100644 --- a/deeptools/computeMatrix.py +++ b/deeptools/computeMatrix.py @@ -7,14 +7,11 @@ import multiprocessing from deeptools.parserCommon import writableFile, numberOfProcessors -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version from deeptools import parserCommon from deeptools import heatmapper import deeptools.computeMatrixOperations as cmo import deeptools.deepBlue as db +from importlib.metadata import version def parse_arguments(args=None): diff --git a/deeptools/computeMatrixOperations.py b/deeptools/computeMatrixOperations.py index b246b9ce..6b3272d4 100755 --- a/deeptools/computeMatrixOperations.py +++ b/deeptools/computeMatrixOperations.py @@ -6,10 +6,7 @@ import sys import os import csv -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version +from importlib.metadata import version def parse_arguments(): diff --git a/deeptools/deeptools_list_tools.py b/deeptools/deeptools_list_tools.py index 0e4b6a38..32dcf702 100644 --- a/deeptools/deeptools_list_tools.py +++ b/deeptools/deeptools_list_tools.py @@ -3,10 +3,7 @@ import argparse import sys -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version +from importlib.metadata import version def parse_arguments(args=None): diff --git a/deeptools/estimateReadFiltering.py b/deeptools/estimateReadFiltering.py index 52fded53..8c46a384 100644 --- a/deeptools/estimateReadFiltering.py +++ b/deeptools/estimateReadFiltering.py @@ -5,10 +5,7 @@ from deeptools import parserCommon, bamHandler, utilities from deeptools.mapReduce import mapReduce from deeptools.utilities import smartLabels -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version +from importlib.metadata import version def parseArguments(): diff --git a/deeptools/estimateScaleFactor.py b/deeptools/estimateScaleFactor.py index 31acea3f..549ecf78 100644 --- a/deeptools/estimateScaleFactor.py +++ b/deeptools/estimateScaleFactor.py @@ -6,11 +6,7 @@ from deeptools.SES_scaleFactor import estimateScaleFactor from deeptools.parserCommon import numberOfProcessors -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version - +from importlib.metadata import version debug = 0 diff --git a/deeptools/getFragmentAndReadSize.py b/deeptools/getFragmentAndReadSize.py index 427d5308..0cf2dc8e 100644 --- a/deeptools/getFragmentAndReadSize.py +++ b/deeptools/getFragmentAndReadSize.py @@ -76,7 +76,8 @@ def get_read_and_fragment_length(bamFile, return_lengths=False, blackListFileNam ------- d : dict tuple of two dictionaries, one for the fragment length and the other - for the read length. The dictionaries summarise the mean, median etc. values +for the read length. The dictionaries summarise the mean, median etc. values + """ bam_handle = bamHandler.openBam(bamFile) diff --git a/deeptools/multiBamSummary.py b/deeptools/multiBamSummary.py index b010001f..981a99e3 100644 --- a/deeptools/multiBamSummary.py +++ b/deeptools/multiBamSummary.py @@ -9,11 +9,7 @@ import deeptools.countReadsPerBin as countR from deeptools import parserCommon from deeptools.utilities import smartLabels -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version - +from importlib.metadata import version old_settings = np.seterr(all='ignore') diff --git a/deeptools/multiBigwigSummary.py b/deeptools/multiBigwigSummary.py index 50f40bee..22789647 100644 --- a/deeptools/multiBigwigSummary.py +++ b/deeptools/multiBigwigSummary.py @@ -10,10 +10,7 @@ from deeptools.utilities import smartLabels import deeptools.getScorePerBigWigBin as score_bw import deeptools.deepBlue as db -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version +from importlib.metadata import version old_settings = np.seterr(all='ignore') diff --git a/deeptools/parserCommon.py b/deeptools/parserCommon.py index 37e9f359..8e726ea0 100755 --- a/deeptools/parserCommon.py +++ b/deeptools/parserCommon.py @@ -1,9 +1,6 @@ import argparse import os -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version +from importlib.metadata import version def check_float_0_1(value): diff --git a/deeptools/plotCorrelation.py b/deeptools/plotCorrelation.py index 2b8d9f79..988cf559 100644 --- a/deeptools/plotCorrelation.py +++ b/deeptools/plotCorrelation.py @@ -10,13 +10,9 @@ matplotlib.rcParams['svg.fonttype'] = 'none' from deeptools import cm # noqa: F401 import matplotlib.pyplot as plt - +from importlib.metadata import version from deeptools.correlation import Correlation from deeptools.parserCommon import writableFile -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version old_settings = np.seterr(all='ignore') diff --git a/deeptools/plotCoverage.py b/deeptools/plotCoverage.py index e233dcb7..a3235955 100755 --- a/deeptools/plotCoverage.py +++ b/deeptools/plotCoverage.py @@ -14,14 +14,10 @@ import matplotlib.pyplot as plt import plotly.offline as py import plotly.graph_objs as go - +from importlib.metadata import version import deeptools.countReadsPerBin as countR from deeptools import parserCommon from deeptools.utilities import smartLabels -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version old_settings = np.seterr(all='ignore') diff --git a/deeptools/plotPCA.py b/deeptools/plotPCA.py index c43942b8..bc17ed32 100644 --- a/deeptools/plotPCA.py +++ b/deeptools/plotPCA.py @@ -8,13 +8,9 @@ matplotlib.rcParams['pdf.fonttype'] = 42 matplotlib.rcParams['svg.fonttype'] = 'none' from deeptools import cm # noqa: F401 - +from importlib.metadata import version from deeptools.correlation import Correlation from deeptools.parserCommon import writableFile -try: # keep python 3.7 support. - from importlib.metadata import version -except ModuleNotFoundError: - from importlib_metadata import version def parse_arguments(args=None): diff --git a/docs/content/installation.rst b/docs/content/installation.rst index a8fcaaad..f0ce0ef5 100644 --- a/docs/content/installation.rst +++ b/docs/content/installation.rst @@ -2,7 +2,7 @@ Installation ============= Remember -- deepTools are available for **command line usage** as well as for -**integration into Galaxy servers**! +**integration into Galaxy servers** ! .. contents:: :local: @@ -10,68 +10,53 @@ Remember -- deepTools are available for **command line usage** as well as for Command line installation using ``conda`` ----------------------------------------- -DeepTools (including the requirements) can be installed with conda: +The recommended way to install deepTools (including its requirements) is via `miniconda `_ or `anaconda `_. .. code:: bash $ conda install -c bioconda deeptools -Command line installation using ``pip`` from pypi --------------------------------------------------- +Command line installation using ``pip`` +--------------------------------------- -Install deepTools using the following command: -:: +deepTools can also be installed using `pip `_. +You can either install the latest release from `pypi `_: - $ pip install deeptools +.. code:: bash -All python requirements should be automatically installed. + $ pip install deeptools -If you need to specify a specific path for the installation of the tools, make use of `pip install`'s numerous options: +or a specific version with: .. code:: bash - $ pip install --install-option="--prefix=/MyPath/Tools/deepTools2.0" git+https://github.com/deeptools/deepTools.git - + $ pip install deeptools==3.5.3 -Command line installation using ``pip`` from source ---------------------------------------------------- +In case you would like to install an unreleased or development version, deepTools can also be installed from the repository: -You are highly recommended to use the 'pypi installation' rather than these more complicated steps. - -1. Download source code -:: +.. code:: bash $ git clone https://github.com/deeptools/deepTools.git - -or if you want a particular release, choose one from https://github.com/deeptools/deepTools/releases: -:: - - $ wget https://github.com/deeptools/deepTools/archive/1.5.12.tar.gz - $ tar -xzvf - -3. install the source code -:: - - $ python -m build - $ pip install dist/*whl + $ cd deepTools + $ pip install . Galaxy installation -------------------- -deepTools can be easily integrated into a local `Galaxy `_. +deepTools can be easily integrated into a local `Galaxy `_. All wrappers and dependencies are available in the `Galaxy Tool -Shed `_. +Shed `_. Installation via Galaxy API (recommended) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -First generate an `API Key `_ +First generate an `API Key `_ for your admin user and run the the installation script: :: $ python ./scripts/api/install_tool_shed_repositories.py \ --api YOUR_API_KEY -l http://localhost/ \ - --url http://toolshed.g2.bx.psu.edu/ \ + --url https://toolshed.g2.bx.psu.edu/ \ -o bgruening -r --name suite_deeptools \ --tool-deps --repository-deps --panel-section-name deepTools @@ -80,7 +65,7 @@ latest revision number from the test tool shed or with the following command: :: - $ hg identify http://toolshed.g2.bx.psu.edu/repos/bgruening/suite_deeptools + $ hg identify https://toolshed.g2.bx.psu.edu/repos/bgruening/suite_deeptools You can watch the installation status under: Top Panel --> Admin --> Manage installed tool shed repositories @@ -92,15 +77,3 @@ Installation via web browser - select *Search and browse tool sheds* - Galaxy tool shed --> Sequence Analysis --> deeptools - install deeptools - -Installation with Docker -^^^^^^^^^^^^^^^^^^^^^^^^ - -The deepTools Galaxy instance is also available as a docker container, for those wishing to use the Galaxy framework but who also prefer a virtualized solution. This container is quite simple to install: -:: - - $ sudo docker pull quay.io/bgruening/galaxy-deeptools - -To start and otherwise modify this container, please see the instructions on `the docker-galaxy-stable github repository `__. Note that you must use `bgruening/galaxy-deeptools` in place of `bgruening/galaxy-stable` in the examples, as the deepTools Galaxy container is built on top of the galaxy-stable container. - -.. tip:: For support or questions please make a post on `Biostars `__. For feature requests or bug reports please open an issue `on github `__. diff --git a/docs/content/list_of_tools.rst b/docs/content/list_of_tools.rst index 4a874099..2191f3c2 100644 --- a/docs/content/list_of_tools.rst +++ b/docs/content/list_of_tools.rst @@ -1,16 +1,6 @@ The tools ========= -.. note:: With the release of deepTools 2.0, we renamed a couple of tools: - - * **heatmapper** to :doc:`tools/plotHeatmap` - * **profiler** to :doc:`tools/plotProfile` - * **bamCorrelate** to :doc:`tools/multiBamSummary` - * **bigwigCorrelate** to :doc:`tools/multiBigwigSummary` - * **bamFingerprint** to :doc:`tools/plotFingerprint`. - - For more, see :doc:`changelog`. - .. contents:: :local: @@ -68,11 +58,18 @@ A typical deepTools command could look like this: --ignoreDuplicates \ --scaleFactor 0.5 -You can always see all available command-line options via --help: +You can always see all available command-line options via --help or -h: .. code:: bash $ bamCoverage --help + $ bamCoverage -h + +And a minimal usage example can be shown by running a command without any arguments: + +.. code:: bash + + $ bamCoverage - Output format of plots should be indicated by the file ending, e.g. ``MyPlot.pdf`` will return a pdf file, ``MyPlot.png`` a png-file - All tools that produce plots can also output the underlying data - this can be useful in cases where you don't like the deepTools visualization, as you can then use the data matrices produced by deepTools with your favorite plotting tool, such as R @@ -82,14 +79,15 @@ Parameters to decrease the run time """"""""""""""""""""""""""""""""""" - ``numberOfProcessors`` - Number of processors to be used - For example, setting ``--numberOfProcessors 10`` will split up the - workload internally into 10 chunks, which will be - processed in parallel. + +For example, setting ``--numberOfProcessors 10`` will split up the workload internally into 10 chunks, which will be processed in parallel. +Note that for highly fragmented assemblies (> 1000 contigs) the runtime increases drastically. Consider to include only canonical chromosomes in cases like this. + - ``region`` - Process only a single genomic region. - This is particularly useful when you're still trying to figure out the best parameter setting. You can focus on a certain genomic region by setting, e.g., ``--region chr2`` or - ``--region chr2:100000-200000`` -These parameters are optional and available throughout almost all deepTools. +This is particularly useful when you're still trying to figure out the best parameter setting. You can focus on a certain genomic region by setting, e.g., ``--region chr2`` or ``--region chr2:100000-200000`` + +Both parameters are optional and available throughout almost all deepTools. Filtering BAMs while processing """"""""""""""""""""""""""""""" @@ -103,7 +101,7 @@ We offer several ways to filter those BAM files on the fly so that you don't nee Only reads with a mapping quality score of at least this are considered - ``samFlagInclude`` Include reads based on the SAM flag, e.g. ``--samFlagInclude 64`` gets reads that are first in a pair. For translating SAM flags into English, go to: `https://broadinstitute.github.io/picard/explain-flags.html `_ -- ``samFlagExclude`` +- ` `samFlagExclude`` Exclude reads based on the SAM flags - see previous explanation. These parameters are optional and available throughout deepTools. diff --git a/docs/index.rst b/docs/index.rst index a512e8c1..1d739da7 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -56,7 +56,7 @@ that fulfills the following criteria: we can add more and more modules and make use of established methods) -.. tip:: For support or questions please post to `Biostars `__. For bug reports and feature requests please open an issue ``__. +.. tip:: For support or questions please post to `Biostars `__. For bug reports and feature requests please open an issue `on github `__. Please cite deepTools2 as follows: @@ -67,6 +67,6 @@ Steffen Heyne, Friederike Dündar, and Thomas Manke. .. image:: images/logo_mpi-ie.jpg -This tool suite is developed by the `Bioinformatics Facility `_ at the +This tool suite is developed by the `Bioinformatics Facility `_ at the `Max Planck Institute for Immunobiology and Epigenetics, -Freiburg `_. +Freiburg `_. diff --git a/docs/requirements.txt b/docs/requirements.txt index 0a9300aa..56d41a58 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,4 @@ -sphinx -mock -sphinx_rtd_theme -sphinx-argparse \ No newline at end of file +sphinx==7.2.6 +mock==5.1.0 +sphinx_rtd_theme==1.3.0 +sphinx-argparse==0.4.0 \ No newline at end of file diff --git a/galaxy/wrapper/deepTools_macros.xml b/galaxy/wrapper/deepTools_macros.xml index 85cbcb2a..49c8dd9e 100755 --- a/galaxy/wrapper/deepTools_macros.xml +++ b/galaxy/wrapper/deepTools_macros.xml @@ -1,7 +1,7 @@ --numberOfProcessors "\${GALAXY_SLOTS:-4}" - 3.5.4 + 3.5.5 22.05 diff --git a/pyproject.toml b/pyproject.toml index 3b877aa5..5a902d1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ requires = [ [project] name = "deepTools" -version = "3.5.4" +version = "3.5.5" authors = [ {name="Fidel Ramirez"}, {name="Devon P Ryan"}, @@ -19,7 +19,7 @@ authors = [ {name="Thomas Manke"}, {email="bioinfo-core@ie-freiburg.mpg.de"} ] -requires-python = ">=3.7" +requires-python = ">=3.8" dependencies = [ "numpy >= 1.9.0", "scipy >= 0.17.0", @@ -29,8 +29,7 @@ dependencies = [ "pyBigWig >= 0.2.1", "py2bit >= 0.2.0", "plotly >= 4.9", - "deeptoolsintervals >= 0.1.8", - "importlib-metadata" # python 3.7 support + "deeptoolsintervals >= 0.1.8" ] description = "Useful tools for exploring deep sequencing data." license = {file = "LICENSE.txt"}