1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Hicops(CMakePackage):
"""HiCOPS is a software framework for accelerating database peptide search
workflows on supercomputers. HiCOPS provided algorithm-independent
parallelizations and optimizations can be extended into new HPC database search
algorithms or scalably accelerate the existing ones.
"""
homepage = "https://hicops.github.io/index"
git = "https://github.com/hicops/hicops.git"
maintainers = ['pcdslab', 'mhaseeb123', 'nessiecancode']
version('release', branch='release')
version('develop', branch='develop')
# Build Options
variant('mpi', default=True,
description='Enable MPI support.')
variant('timemory', default=False,
description='Enable timemory interface. Requires timemory '
'installation.')
variant('mpip', default=False,
description='Enables the MPIP data_tracker via Timemory. '
'Requires timemory installation.')
variant('tailfit', default=True,
description='Use the tailfit method instead of Gumbelfit '
'for e-value computation.')
variant('progress', default=True,
description='Display HiCOPS progress marks.')
variant('seqlen', default='60',
description='Allowed maximum peptide sequence length.',
values=int, multi=False)
variant('qalen', default='100',
description='Maximum number of top K peaks to keep when '
'spectrum preprocess.', values=int,
multi=False)
variant('qchunk', default='10000',
description='Max size of each batch extracted from the '
'dataset.', values=int, multi=False)
variant('hyperscore', default='100',
description='Maximum allowed hyperscore computed.',
values=int, multi=False)
variant('shdpeaks', default='80',
description='Maximum shared b- or y-ions allowed.',
values=int, multi=False)
variant('cxx_std', default='14',
description='C++ standard', values=('14', '17'),
multi=False)
depends_on('py-numpy')
depends_on('py-python-dateutil')
depends_on('py-setuptools')
depends_on('py-bottleneck')
depends_on('py-pyparsing')
depends_on('py-subprocess32')
depends_on('py-six')
depends_on('py-setuptools-scm')
depends_on('py-et-xmlfile')
depends_on('py-argparse')
depends_on('py-cython')
depends_on('py-cycler')
depends_on('py-pytz')
depends_on('py-kiwisolver')
depends_on('py-numexpr')
depends_on('py-matplotlib')
depends_on('py-jdcal')
depends_on('py-pandas')
depends_on('py-openpyxl')
depends_on('python@3.7:3.9')
depends_on('boost')
depends_on('mpich')
depends_on('git', type='build', when='@release')
depends_on('git', type='build', when='@develop')
depends_on('cmake@3.11:', type='build')
depends_on('pkgconfig', type='build')
# TODO: Add timemory and mpip depends_on()
conflicts('+timemory')
# Build failing when added. Creating a conflict as a workaround
conflicts('%gcc@:7.2.0')
conflicts('+mpip -timemory')
conflicts('+mpip -mpi')
def setup_run_environment(self, env):
env.prepend_path('PATH', self.prefix.tools)
env.prepend_path('PATH', self.prefix.bin.tools)
env.set('HICOPS_INSTALL', self.prefix)
env.prepend_path('INCLUDE', self.prefix.include)
def cmake_args(self):
args = [
self.define('USE_MPI', True),
self.define('CMAKE_INSTALL_PREFIX', self.prefix),
self.define_from_variant('USE_TIMEMORY', 'timemory'),
self.define_from_variant('USE_MPIP_LIBRARY', 'mpip'),
self.define_from_variant('TAILFIT', 'tailfit'),
self.define_from_variant('PROGRESS', 'progress'),
self.define_from_variant('MAX_SEQ_LEN', 'seqlen'),
self.define_from_variant('QALEN', 'qalen'),
self.define_from_variant('QCHUNK', 'qchunk'),
self.define_from_variant('MAX_HYPERSCORE', 'hyperscore'),
self.define_from_variant('MAX_SHDPEAKS', 'shdpeaks'),
self.define_from_variant('CMAKE_CXX_STANDARD', 'cxx_std')
]
return args
|