def get_params(softVersion):
    """Parse and analyse command line parameters."""
    sensList = []
    for i in range(1, 9):
        sensList.append(float(i))
        for j in range(1, 10):
            fval = float(i + float(j / 10.0))
            if fval <= 7.5:
                sensList.append(fval)
    import argparse
    parser = argparse.ArgumentParser(description='SonicParanoid %s' %
        softVersion, usage=
        '%(prog)s -i <INPUT_DIRECTORY> -o <OUTPUT_DIRECTORY>[options]',
        prog='sonicparanoid')
    parser.add_argument('-i', '--input-directory', type=str, required=True,
        help=
        'Directory containing the proteomes (in FASTA format) of the species to be analyzed.'
        , default=None)
    parser.add_argument('-o', '--output-directory', type=str, required=True,
        help='The directory in which the results will be stored.', default=None
        )
    parser.add_argument('-p', '--project-id', type=str, required=False,
        help=
        'Name for the project reflecting the run. If not specified it will be automatically generated using the current date and time.'
        , default='')
    parser.add_argument('-sh', '--shared-directory', type=str, required=
        False, help=
        'The directory in which the alignment files are stored. If not specified it will be created inside the main output directory.'
        , default=None)
    parser.add_argument('-t', '--threads', type=int, required=False, help=
        'Number of parallel 1-CPU jobs to be used. Default=4', default=4)
    parser.add_argument('-at', '--force-all-threads', required=False, help=
        'Force using all the requested threads.', action='store_true')
    parser.add_argument('-sm', '--skip-multi-species', required=False, help
        ='Skip the creation of multi-species ortholog groups.', default=
        False, action='store_true')
    parser.add_argument('-d', '--debug', required=False, help=
        'Output debug information. (WARNING: extremely verbose)', default=
        False, action='store_true')
    parser.add_argument('-m', '--mode', required=False, help=
        'SonicParanoid execution mode. The default mode is suitable for most studies. Use sensitive or most-sensitive if the input proteomes are not closely related.'
        , choices=['fast', 'default', 'sensitive', 'most-sensitive'],
        default='default')
    parser.add_argument('-se', '--sensitivity', type=float, required=False,
        help=
        'Sensitivity for MMseqs2. This will overwrite the --mode option.',
        default=None)
    parser.add_argument('-ml', '--max-len-diff', type=float, required=False,
        help=
        """Maximum allowed length-difference-ratio between main orthologs and canditate inparalogs.
Example: 0.5 means one of the two sequences could be two times longer than the other
 0 means no length difference allowed; 1 means any length difference allowed. Default=0.5"""
        , default=0.5)
    parser.add_argument('-db', '--mmseqs-dbs', type=str, required=False,
        help=
        'The directory in which the database files for MMseqs2 will be stored. If not specified it will be created inside the main output directory.'
        , default=None)
    parser.add_argument('-noidx', '--no-indexing', required=False, help=
        """Avoid the creation of indexes for MMseqs2 databases. IMPORTANT: while this saves starting storage space it makes MMseqs2 slightly slower.
The results might also be sligthy different."""
        , default=False, action='store_true')
    parser.add_argument('-op', '--output-pairs', required=False, help=
        'Output a text file with all the orthologous relations.', default=
        False, action='store_true')
    parser.add_argument('-qfo11', '--qfo-2011', required=False, help=
        """Output a text file with all the orthologous relations formatted to be uploaded to the QfO benchmark service.
NOTE: implies --output-pairs"""
        , default=False, action='store_true')
    parser.add_argument('-ka', '--keep-raw-alignments', required=False,
        help=
        'Do not delete raw MMseqs2 alignment files. NOTE: this will triple the space required for storing the results.'
        , default=False, action='store_true')
    parser.add_argument('-ca', '--complete-aln', required=False, help=
        """Perform complete alignments.
""", default=False, action='store_true'
        )
    parser.add_argument('-I', '--inflation', type=float, required=False,
        help=
        'Affects the granularity of ortholog groups. This value should be between 1.2 (very coarse) and 5 (fine grained clustering). Default=1.5'
        , default=1.5)
    parser.add_argument('-slc', '--single-linkage', required=False, help=
        'Use single-linkage-clustering (MultiParanoid-like). NOTE: by default MCL clustering is used.'
        , default=False, action='store_true')
    parser.add_argument('-mgs', '--max-gene-per-sp', type=int, required=
        False, help=
        'Limits the maximum number of genes per species in the multi-species output table. This option reduces the verbosity of the multi-species output and only affects single-linkage-clustering. Default=30'
        , default=30)
    parser.add_argument('-ot', '--overwrite-tables', required=False, help=
        'This will force the re-computation of the ortholog tables. Only missing alignment files will be re-computed.'
        , default=False, action='store_true')
    parser.add_argument('-ow', '--overwrite', required=False, help=
        'Overwrite previous runs and execute it again. This can be useful to update a subset of the computed tables.'
        , default=False, action='store_true')
    parser.add_argument('-rs', '--remove-old-species', required=False, help
        =
        'Remove alignments and pairwise ortholog tables related to species used in a previous run. This option should be used when updating a run in which some input proteomes were modified or removed.'
        , default=False, action='store_true')
    parser.add_argument('-un', '--update-input-names', required=False, help
        =
        'Remove alignments and pairwise ortholog tables for an input proteome used in a previous which file name conflicts with a newly added species. This option should be used when updating a run in which some input proteomes or their file names were modified.'
        , default=False, action='store_true')
    args = parser.parse_args()
    return args, parser
