wuxing0105 commited on
Commit
b7b760f
·
verified ·
1 Parent(s): 62d3300

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. data/README.md +14 -0
  2. flax_model/alphafold3/_tools/hmmer/bin/esl-selectn +0 -0
  3. flax_model/alphafold3/_tools/hmmer/share/man/man1/alimask.1 +362 -0
  4. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-afetch.1 +133 -0
  5. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alimanip.1 +383 -0
  6. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alimap.1 +211 -0
  7. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alimerge.1 +184 -0
  8. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alipid.1 +137 -0
  9. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alirev.1 +153 -0
  10. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alistat.1 +259 -0
  11. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-compalign.1 +166 -0
  12. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-histplot.1 +87 -0
  13. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-mask.1 +198 -0
  14. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-mixdchlet.1 +212 -0
  15. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-reformat.1 +271 -0
  16. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-selectn.1 +81 -0
  17. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-seqstat.1 +117 -0
  18. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-sfetch.1 +278 -0
  19. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-shuffle.1 +234 -0
  20. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-ssdraw.1 +882 -0
  21. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-translate.1 +314 -0
  22. flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-weight.1 +105 -0
  23. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmbuild.1 +556 -0
  24. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmconvert.1 +106 -0
  25. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmemit.1 +250 -0
  26. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmer.1 +199 -0
  27. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmfetch.1 +213 -0
  28. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmlogo.1 +99 -0
  29. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmpgmd.1 +219 -0
  30. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmpress.1 +106 -0
  31. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmscan.1 +470 -0
  32. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmsearch.1 +444 -0
  33. flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmsim.1 +515 -0
  34. flax_model/alphafold3/_tools/hmmer/share/man/man1/jackhmmer.1 +808 -0
  35. flax_model/alphafold3/_tools/hmmer/share/man/man1/phmmer.1 +523 -0
  36. flax_model/alphafold3/data/__init__.py +0 -0
  37. flax_model/alphafold3/data/cpp/msa_profile_pybind.h +24 -0
  38. flax_model/alphafold3/data/featurisation.py +96 -0
  39. flax_model/alphafold3/data/msa_config.py +203 -0
  40. flax_model/alphafold3/data/msa_features.py +194 -0
  41. flax_model/alphafold3/data/msa_identifiers.py +77 -0
  42. flax_model/alphafold3/data/parsers.py +261 -0
  43. flax_model/alphafold3/data/pipeline.py +677 -0
  44. flax_model/alphafold3/data/structure_stores.py +92 -0
  45. flax_model/alphafold3/data/template_store.py +38 -0
  46. flax_model/alphafold3/data/tools/msa_tool.py +31 -0
  47. flax_model/alphafold3/data/tools/nhmmer.py +351 -0
  48. flax_model/alphafold3/jax/attention/attention_call_arg_specs.py +54 -0
  49. flax_model/alphafold3/model/components/__init__.py +0 -0
  50. flax_model/alphafold3/model/merging_features.py +84 -0
data/README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This model repository does not upload the AlphaFold3 dataset payload.
2
+
3
+ Download the required dataset separately:
4
+
5
+ ```bash
6
+ modelscope download --dataset OneScience/AlphaFold3_dataset
7
+ ```
8
+
9
+ Then link the dataset package data directory into this model package:
10
+
11
+ ```bash
12
+ mkdir -p data
13
+ ln -s /path/to/AlphaFold3_dataset/data data/alphafold3_dataset
14
+ ```
flax_model/alphafold3/_tools/hmmer/bin/esl-selectn ADDED
Binary file (76.8 kB). View file
 
flax_model/alphafold3/_tools/hmmer/share/man/man1/alimask.1 ADDED
@@ -0,0 +1,362 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "alimask" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ alimask \- calculate and add column mask to a multiple sequence alignment
5
+
6
+ .SH SYNOPSIS
7
+ .B alimask
8
+ [\fIoptions\fR]
9
+ .I msafile
10
+ .I postmsafile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ .B alimask
17
+ is used to apply a mask line to a multiple sequence
18
+ alignment, based on provided alignment or model coordinates.
19
+ When
20
+ .B hmmbuild
21
+ receives a masked alignment as input, it produces a profile
22
+ model in which the emission probabilities at masked positions
23
+ are set to match the background frequency, rather than being
24
+ set based on observed frequencies in the alignment.
25
+ Position-specific insertion and deletion rates are not
26
+ altered, even in masked regions.
27
+ .B alimask
28
+ autodetects input format, and produces masked alignments
29
+ in Stockholm format.
30
+ .I msafile
31
+ may contain only one sequence alignment.
32
+
33
+ .PP
34
+ A common motivation for masking a region in an alignment is
35
+ that the region contains a simple tandem repeat that is
36
+ observed to cause an unacceptably high rate of false positive
37
+ hits.
38
+
39
+ .PP
40
+ In the simplest case, a mask range is given in coordinates
41
+ relative to the input alignment, using
42
+ .BI \-\-alirange " <s>".
43
+ However it is more often the case that the region to be
44
+ masked has been identified in coordinates relative to
45
+ the profile model (e.g. based on recognizing a simple
46
+ repeat pattern in false hit alignments or in the HMM logo).
47
+ Not all alignment columns are converted to match state
48
+ positions in the profile (see the
49
+ .B \-\-symfrac
50
+ flag for
51
+ .B hmmbuild
52
+ for discussion), so model positions do not necessarily match
53
+ up to alignment column positions.
54
+ To remove the burden of converting model positions to
55
+ alignment positions,
56
+ .B alimask
57
+ accepts the mask range input in model coordinates as well,
58
+ using
59
+ .BI \-\-modelrange " <s>".
60
+ When using this flag,
61
+ .I alimask
62
+ determines which alignment positions would be identified by
63
+ .B hmmbuild
64
+ as match states, a process that requires that all
65
+ .B hmmbuild
66
+ flags impacting that decision be supplied to
67
+ .BR alimask .
68
+ It is for this reason that many of the
69
+ .B hmmbuild
70
+ flags are also used by
71
+ .BR alimask .
72
+
73
+
74
+
75
+ .SH OPTIONS
76
+
77
+ .TP
78
+ .B \-h
79
+ Help; print a brief reminder of command line usage and all available
80
+ options.
81
+
82
+ .TP
83
+ .BI \-o " <f>"
84
+ Direct the summary output to file
85
+ .IR <f> ,
86
+ rather than to stdout.
87
+
88
+
89
+ .SH OPTIONS FOR SPECIFYING MASK RANGE
90
+
91
+ A single mask range is given as a dash-separated pair, like
92
+ .B "\-\-modelrange 10\-20"
93
+ and multiple ranges may be submitted as a comma-separated list,
94
+ .BR "\-\-modelrange 10\-20,30\-42" .
95
+
96
+
97
+ .TP
98
+ .BI \-\-modelrange " <s>"
99
+ Supply the given range(s) in model coordinates.
100
+
101
+ .TP
102
+ .BI \-\-alirange " <s>"
103
+ Supply the given range(s) in alignment coordinates.
104
+
105
+ .TP
106
+ .B \-\-appendmask
107
+ Add to the existing mask found with the alignment.
108
+ The default is to overwrite any existing mask.
109
+
110
+ .TP
111
+ .BI \-\-model2ali " <s>"
112
+ Print model range(s) and the corresponding alignment range(s).
113
+ No masked alignment is produced.
114
+ The output is a single line for each input range, of the form
115
+ .nf
116
+ i..j -> m..n
117
+ .fi
118
+ with i & j representing model range values, and m & n
119
+ representing alignment range values.
120
+
121
+ .TP
122
+ .BI \-\-ali2model " <s>"
123
+ Print alignment range(s) and the corresponding model range(s).
124
+ No masked alignment is produced.
125
+ Because some alignment positions may not map to model positions,
126
+ the range(s) produced will begin with the first alignment
127
+ position between <from> and <to> (inclusive) that maps to a
128
+ model position, and end with the final alignment position in
129
+ that range that maps to a model position.
130
+ The output is a single line for each input range, of
131
+ the form
132
+ .nf
133
+ i..j -> m..n
134
+ .fi
135
+ with i & j representing alignment range values, and m & n
136
+ representing model range values.
137
+ If no alignment positions in the range <from>..<to> map
138
+ to a model position, the output prints the input <from>
139
+ and <to> mapping to nothing, with the format:
140
+ .nf
141
+ i..j -> \-..\- (no map) .
142
+ .fi
143
+
144
+
145
+ .SH OPTIONS FOR SPECIFYING THE ALPHABET
146
+
147
+ .TP
148
+ .B \-\-amino
149
+ Assert that sequences in
150
+ .I msafile
151
+ are protein, bypassing alphabet autodetection.
152
+
153
+ .TP
154
+ .B \-\-dna
155
+ Assert that sequences in
156
+ .I msafile
157
+ are DNA, bypassing alphabet autodetection.
158
+
159
+ .TP
160
+ .B \-\-rna
161
+ Assert that sequences in
162
+ .I msafile
163
+ are RNA, bypassing alphabet autodetection.
164
+
165
+
166
+
167
+ .SH OPTIONS CONTROLLING PROFILE CONSTRUCTION
168
+
169
+ These options control how consensus columns are defined in an alignment.
170
+
171
+ .TP
172
+ .B \-\-fast
173
+ Define consensus columns as those that have a fraction >=
174
+ .B symfrac
175
+ of residues as opposed to gaps. (See below for the
176
+ .B \-\-symfrac
177
+ option.) This is the default.
178
+
179
+ .TP
180
+ .B \-\-hand
181
+ Define consensus columns in next profile using reference annotation to
182
+ the multiple alignment.
183
+ This allows you to define any consensus columns you like.
184
+
185
+ .TP
186
+ .BI \-\-symfrac " <x>"
187
+ Define the residue fraction threshold necessary to define a
188
+ consensus column when using the
189
+ .B \-\-fast
190
+ option. The default is 0.5. The symbol fraction in each column
191
+ is calculated after taking relative sequence weighting into account,
192
+ and ignoring gap characters corresponding to ends of sequence
193
+ fragments
194
+ (as opposed to internal insertions/deletions).
195
+ Setting this to 0.0 means that every alignment column will be assigned
196
+ as consensus, which may be useful in some cases. Setting it to 1.0
197
+ means that only columns that include 0 gaps (internal
198
+ insertions/deletions) will be assigned as consensus.
199
+
200
+ .TP
201
+ .BI \-\-fragthresh " <x>"
202
+ We only want to count terminal gaps as deletions if the aligned
203
+ sequence is known to be full-length, not if it is a fragment (for
204
+ instance, because only part of it was sequenced). HMMER uses a simple
205
+ rule to infer fragments: if the sequence length L is less than
206
+ or equal to a fraction
207
+ .I <x>
208
+ times the alignment length in columns,
209
+ then the sequence is handled as a fragment. The default is 0.5.
210
+ Setting
211
+ .B \-\-fragthresh 0
212
+ will define no (nonempty) sequence as a fragment; you might want to do
213
+ this if you know you've got a carefully curated alignment of full-length
214
+ sequences.
215
+ Setting
216
+ .B \-\-fragthresh 1
217
+ will define all sequences as fragments; you might want to do this if
218
+ you know your alignment is entirely composed of fragments, such as
219
+ translated short reads in metagenomic shotgun data.
220
+
221
+
222
+ .SH OPTIONS CONTROLLING RELATIVE WEIGHTS
223
+
224
+ HMMER uses an ad hoc sequence weighting algorithm to downweight
225
+ closely related sequences and upweight distantly related ones. This
226
+ has the effect of making models less biased by uneven phylogenetic
227
+ representation. For example, two identical sequences would typically
228
+ each receive half the weight that one sequence would. These options
229
+ control which algorithm gets used.
230
+
231
+ .TP
232
+ .B \-\-wpb
233
+ Use the Henikoff position-based sequence weighting scheme [Henikoff
234
+ and Henikoff, J. Mol. Biol. 243:574, 1994]. This is the default.
235
+
236
+ .TP
237
+ .B \-\-wgsc
238
+ Use the Gerstein/Sonnhammer/Chothia weighting algorithm [Gerstein et
239
+ al, J. Mol. Biol. 235:1067, 1994].
240
+
241
+ .TP
242
+ .B \-\-wblosum
243
+ Use the same clustering scheme that was used to weight data in
244
+ calculating BLOSUM substitution matrices [Henikoff and Henikoff,
245
+ Proc. Natl. Acad. Sci 89:10915, 1992]. Sequences are single-linkage
246
+ clustered at an identity threshold (default 0.62; see
247
+ .BR \-\-wid )
248
+ and within each cluster of c sequences, each sequence gets relative
249
+ weight 1/c.
250
+
251
+ .TP
252
+ .B \-\-wnone
253
+ No relative weights. All sequences are assigned uniform weight.
254
+
255
+ .TP
256
+ .BI \-\-wid " <x>"
257
+ Sets the identity threshold used by single-linkage clustering when
258
+ using
259
+ .BR \-\-wblosum .
260
+ Invalid with any other weighting scheme. Default is 0.62.
261
+
262
+
263
+
264
+
265
+
266
+ .SH OTHER OPTIONS
267
+
268
+ .TP
269
+ .BI \-\-informat " <s>"
270
+ Assert that input
271
+ .I msafile
272
+ is in alignment format
273
+ .IR <s> ,
274
+ bypassing format autodetection.
275
+ Common choices for
276
+ .I <s>
277
+ include:
278
+ .BR stockholm ,
279
+ .BR a2m ,
280
+ .BR afa ,
281
+ .BR psiblast ,
282
+ .BR clustal ,
283
+ .BR phylip .
284
+ For more information, and for codes for some less common formats,
285
+ see main documentation.
286
+ The string
287
+ .I <s>
288
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
289
+
290
+
291
+ .TP
292
+ .BI \-\-outformat " <s>"
293
+ Write the output
294
+ .I postmsafile
295
+ in alignment format
296
+ .IR <s> .
297
+ Common choices for
298
+ .I <s>
299
+ include:
300
+ .BR stockholm ,
301
+ .BR a2m ,
302
+ .BR afa ,
303
+ .BR psiblast ,
304
+ .BR clustal ,
305
+ .BR phylip .
306
+ The string
307
+ .I <s>
308
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
309
+ Default is
310
+ .BR stockholm .
311
+
312
+
313
+ .TP
314
+ .BI \-\-seed " <n>"
315
+ Seed the random number generator with
316
+ .IR <n> ,
317
+ an integer >= 0.
318
+ If
319
+ .I <n>
320
+ is nonzero, any stochastic simulations will be reproducible; the same
321
+ command will give the same results.
322
+ If
323
+ .I <n>
324
+ is 0, the random number generator is seeded arbitrarily, and
325
+ stochastic simulations will vary from run to run of the same command.
326
+ The default seed is 42.
327
+
328
+
329
+
330
+ .SH SEE ALSO
331
+
332
+ See
333
+ .BR hmmer (1)
334
+ for a master man page with a list of all the individual man pages
335
+ for programs in the HMMER package.
336
+
337
+ .PP
338
+ For complete documentation, see the user guide that came with your
339
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
340
+ (http://hmmer.org/).
341
+
342
+
343
+
344
+ .SH COPYRIGHT
345
+
346
+ .nf
347
+ Copyright (C) 2023 Howard Hughes Medical Institute.
348
+ Freely distributed under the BSD open source license.
349
+ .fi
350
+
351
+ For additional information on copyright and licensing, see the file
352
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
353
+ web page
354
+ (http://hmmer.org/).
355
+
356
+
357
+ .SH AUTHOR
358
+
359
+ .nf
360
+ http://eddylab.org
361
+ .fi
362
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-afetch.1 ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-afetch" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-afetch \- retrieve alignments from a multi-MSA database
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .nf
9
+ \fBesl\-afetch\fR [\fIoptions\fR] \fImsafile key\fR
10
+ (single MSA retrieval)
11
+
12
+ \fBesl\-afetch \-f\fR [\fIoptions\fR] \fImsafile keyfile\fR
13
+ (multiple MSA retrieval, from a file of keys)
14
+
15
+ \fBesl\-afetch \-\-index \fR\fImsafile\fR
16
+ (index an MSA file for retrieval)
17
+
18
+ .SH DESCRIPTION
19
+
20
+ .B esl\-afetch
21
+ retrieves the alignment named
22
+ .I key
23
+ from an alignment database in file
24
+ .I msafile.
25
+ The
26
+ .I msafile
27
+ is a "multiple multiple alignment" file in Stockholm (e.g. native
28
+ Pfam or Rfam) format.
29
+ The
30
+ .I key
31
+ is either the name (ID) of the alignment, or its accession
32
+ number (AC).
33
+
34
+ .PP
35
+ Alternatively,
36
+ .B esl\-afetch \-f
37
+ provides the ability to fetch many alignments at once.
38
+ The
39
+ .B \-f
40
+ option has it interpret the second argument as a
41
+ .IR keyfile ,
42
+ a file consisting of one name or accession per line.
43
+
44
+ .PP
45
+ The
46
+ .I msafile
47
+ should first be SSI indexed with
48
+ .B esl\-afetch \-\-index
49
+ for efficient retrieval. An SSI index is
50
+ not required, but without one alignment retrieval may
51
+ be painfully slow.
52
+
53
+ .SH OPTIONS
54
+
55
+ .TP
56
+ .B \-h
57
+ Print brief help; includes version number and summary of
58
+ all options, including expert options.
59
+
60
+ .TP
61
+ .B \-f
62
+ Interpret the second argument as a
63
+ .I keyfile
64
+ instead of as just one
65
+ .IR key .
66
+ The
67
+ .I keyfile
68
+ contains one name or accession per line.
69
+ This option doesn't work with the
70
+ .B \-\-index
71
+ option.
72
+
73
+
74
+ .TP
75
+ .BI \-o " <f>"
76
+ Output retrieved alignments to a file
77
+ .I <f>
78
+ instead of to stdout.
79
+
80
+ .TP
81
+ .BI \-O
82
+ Output retrieved alignment to a file named
83
+ .IR key .
84
+ This is a convenience for saving some typing:
85
+ instead of
86
+ .nf
87
+ \fB% esl\-afetch \-o RRM_1 msafile RRM_1\fR
88
+ .fi
89
+ you can just type
90
+ .nf
91
+ \fB% esl\-afetch \-O msafile RRM_1\fR
92
+ .fi
93
+ The
94
+ .B \-O
95
+ option only works if you're retrieving a
96
+ single alignment; it is incompatible with
97
+ .B \-f.
98
+
99
+ .TP
100
+ .B \-\-index
101
+ Instead of retrieving a
102
+ .I key,
103
+ the special command
104
+ .B esl\-afetch \-\-index
105
+ .I msafile
106
+ produces an SSI index of the names and accessions
107
+ of the alignments in
108
+ the
109
+ .I msafile.
110
+ Indexing should be done once on the
111
+ .I msafile
112
+ to prepare it for all future fetches.
113
+
114
+
115
+ .SH SEE ALSO
116
+
117
+ .nf
118
+ http://bioeasel.org/
119
+ .fi
120
+
121
+ .SH COPYRIGHT
122
+
123
+ .nf
124
+ Copyright (C) 2023 Howard Hughes Medical Institute.
125
+ Freely distributed under the BSD open source license.
126
+ .fi
127
+
128
+ .SH AUTHOR
129
+
130
+ .nf
131
+ http://eddylab.org
132
+ .fi
133
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alimanip.1 ADDED
@@ -0,0 +1,383 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-alimanip" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-alimanip \- manipulate a multiple sequence alignment
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .B esl\-alimanip
9
+ [\fIoptions\fR]
10
+ .I msafile
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .B esl\-alimanip
15
+ can manipulate the multiple sequence alignment(s) in
16
+ .I msafile
17
+ in various ways. Options exist to remove
18
+ specific sequences, reorder sequences, designate reference columns
19
+ using Stockholm "#=GC RF" markup, and add annotation that numbers
20
+ columns.
21
+
22
+ .PP
23
+ The alignments can be of protein or DNA/RNA sequences. All alignments
24
+ in the same
25
+ .I msafile
26
+ must be either protein or DNA/RNA. The alphabet will be autodetected
27
+ unless one of the options
28
+ .B \-\-amino,
29
+ .B \-\-dna,
30
+ or
31
+ .B \-\-rna
32
+ are given.
33
+
34
+
35
+
36
+ .SH OPTIONS
37
+
38
+ .TP
39
+ .B \-h
40
+ Print brief help; includes version number and summary of
41
+ all options, including expert options.
42
+
43
+ .TP
44
+ .BI \-o " <f>"
45
+ Save the resulting, modified alignment in Stockholm format to a file
46
+ .I <f>.
47
+ The default is to write it to standard output.
48
+
49
+ .TP
50
+ .BI \-\-informat " <s>"
51
+ Assert that
52
+ .I msafile
53
+ is in alignment format
54
+ .IR <s> ,
55
+ bypassing format autodetection.
56
+ Common choices for
57
+ .I <s>
58
+ include:
59
+ .BR stockholm ,
60
+ .BR a2m ,
61
+ .BR afa ,
62
+ .BR psiblast ,
63
+ .BR clustal ,
64
+ .BR phylip .
65
+ For more information, and for codes for some less common formats,
66
+ see main documentation.
67
+ The string
68
+ .I <s>
69
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
70
+
71
+
72
+ .TP
73
+ .BI \-\-outformat " <s>"
74
+ Write the output in alignment format
75
+ .IR <s> .
76
+ Common choices for
77
+ .I <s>
78
+ include:
79
+ .BR stockholm ,
80
+ .BR a2m ,
81
+ .BR afa ,
82
+ .BR psiblast ,
83
+ .BR clustal ,
84
+ .BR phylip .
85
+ The string
86
+ .I <s>
87
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
88
+ Default is
89
+ .BR stockholm .
90
+
91
+ .TP
92
+ .B \-\-devhelp
93
+ Print help, as with
94
+ .B \-h,
95
+ but also include undocumented developer options. These options are not
96
+ listed below, are under development or experimental, and are not
97
+ guaranteed to even work correctly. Use developer options at your own
98
+ risk. The only resources for understanding what they actually do are
99
+ the brief one-line description printed when
100
+ .B \-\-devhelp
101
+ is enabled, and the source code.
102
+
103
+ .SH EXPERT OPTIONS
104
+
105
+ .TP
106
+ .BI \-\-lnfract " <x>"
107
+ Remove any sequences with length less than
108
+ .I <x>
109
+ fraction the length of the median length sequence in the alignment.
110
+
111
+ .TP
112
+ .BI \-\-lxfract " <x>"
113
+ Remove any sequences with length more than
114
+ .I <x>
115
+ fraction the length of the median length sequence in the alignment.
116
+
117
+ .TP
118
+ .BI \-\-lmin " <n>"
119
+ Remove any sequences with length less than
120
+ .I <n>
121
+ residues.
122
+
123
+ .TP
124
+ .BI \-\-lmax " <n>"
125
+ Remove any sequences with length more than
126
+ .I <n>
127
+ residues.
128
+
129
+ .TP
130
+ .BI \-\-rfnfract " <x>"
131
+ Remove any sequences with nongap RF length less than
132
+ .I <x>
133
+ fraction the nongap RF length of the alignment.
134
+
135
+ .TP
136
+ .BI \-\-detrunc " <n>"
137
+ Remove any sequences that have all gaps in the first
138
+ .I <n>
139
+ non-gap #=GC RF columns or the last
140
+ .I <n>
141
+ non-gap #=GC RF columns.
142
+
143
+ .TP
144
+ .BI \-\-xambig " <n>"
145
+ Remove any sequences that has more than
146
+ .I <n>
147
+ ambiguous (degenerate) residues.
148
+
149
+ .TP
150
+ .BI \-\-seq\-r " <f>"
151
+ Remove any sequences with names listed in file
152
+ .I <f>.
153
+ Sequence names listed in
154
+ .I <f>
155
+ can be separated by tabs, new lines, or spaces.
156
+ The file must be in Stockholm format for this option to work.
157
+
158
+ .TP
159
+ .BI \-\-seq\-k " <f>"
160
+ Keep only sequences with names listed in file
161
+ .I <f>.
162
+ Sequence names listed in
163
+ .I <f>
164
+ can be separated by tabs, new lines, or spaces.
165
+ By default, the kept sequences will remain in the original order
166
+ they appeared in
167
+ .I msafile,
168
+ but the order from
169
+ .I <f>
170
+ will be used if the
171
+ .B \-\-k\-reorder
172
+ option is enabled.
173
+ The file must be in Stockholm format for this option to work.
174
+
175
+ .TP
176
+ .B \-\-small
177
+ With
178
+ .B \-\-seq\-k
179
+ or
180
+ .B \-\-seq\-r,
181
+ operate in small memory mode.
182
+ The alignment(s) will not be stored in memory, thus
183
+ .B \-\-seq\-k
184
+ and
185
+ .B \-\-seq\-r
186
+ will be able to work on very large alignments regardless
187
+ of the amount of available RAM.
188
+ The alignment file must be in Pfam
189
+ format and
190
+ .B \-\-informat pfam
191
+ and one of
192
+ .B \-\-amino,
193
+ .B \-\-dna,
194
+ or
195
+ .B \-\-rna
196
+ must be given as well.
197
+
198
+ .TP
199
+ .B \-\-k\-reorder
200
+ With
201
+ .BI \-\-seq\-k " <f>",
202
+ reorder the kept sequences in the output alignment to the order
203
+ from the list file
204
+ .I <f>.
205
+
206
+ .TP
207
+ .BI \-\-seq\-ins " <n>"
208
+ Keep only sequences that have at least 1 inserted residue after
209
+ nongap RF position
210
+ .I <n>.
211
+
212
+ .TP
213
+ .BI \-\-seq\-ni " <n>"
214
+ With
215
+ .B \-\-seq\-ins
216
+ require at least
217
+ .I <n>
218
+ inserted residues in a sequence for it to be kept.
219
+
220
+ .TP
221
+ .BI \-\-seq\-xi " <n>"
222
+ With
223
+ .B \-\-seq\-ins
224
+ allow at most
225
+ .I <n>
226
+ inserted residues in a sequence for it to be kept.
227
+
228
+ .TP
229
+ .BI \-\-trim " <f>"
230
+ File
231
+ .I <f>
232
+ is an unaligned FASTA file containing truncated versions of each
233
+ sequence in the
234
+ .I msafile.
235
+ Trim the sequences in the alignment to match their truncated versions
236
+ in
237
+ .I <f>.
238
+ If the alignment output format is Stockholm (the default output
239
+ format), all per-column (GC) and per-residue (GR) annotation will be
240
+ removed from the alignment when
241
+ .B \-\-trim
242
+ is used. However, if
243
+ .B \-\-t\-keeprf
244
+ is also used, the reference annotation (GC RF) will be kept.
245
+
246
+ .TP
247
+ .B \-\-t\-keeprf
248
+ Specify that the 'trimmed' alignment maintain the original
249
+ reference (GC RF) annotation. Only works in combination with
250
+ .B \-\-trim.
251
+
252
+ .TP
253
+ .BI \-\-minpp " <x>"
254
+ Replace all residues in the alignments for which the posterior
255
+ probability annotation (#=GR PP) is less than
256
+ .I <x>
257
+ with gaps. The PP annotation for these residues is also converted to
258
+ gaps.
259
+ .I <x>
260
+ must be greater than 0.0 and less than or equal to 0.95.
261
+
262
+ .TP
263
+ .BI \-\-tree " <f>"
264
+ Reorder sequences by tree order.
265
+ Perform single linkage clustering on the sequences in the alignment
266
+ based on sequence identity given the alignment to define a 'tree'
267
+ of the sequences. The sequences in the alignment are reordered
268
+ according to the tree, which groups similar sequences together. The
269
+ tree is output in Newick format to
270
+ .I <f>.
271
+
272
+ .TP
273
+ .BI \-\-reorder " <f>"
274
+ Reorder sequences to the order listed in file
275
+ .I <f>.
276
+ Each sequence in the alignment must be listed in
277
+ .I <f>.
278
+ Use
279
+ .B \-\-k\-reorder
280
+ to reorder only a subset of sequences to a subset alignment file.
281
+ The file must be in Stockholm format for this option to work.
282
+
283
+ .TP
284
+ .BI \-\-mask2rf " <f>"
285
+ Read in the 'mask' file
286
+ .I <f>
287
+ and use it to define new #=GC RF annotation for the
288
+ alignment.
289
+ .I <f>
290
+ must be a single line, with exactly
291
+ .I <alen>
292
+ or
293
+ .I <rflen>
294
+ characters, either the full alignment length or the number of nongap #=GC RF characters, respectively.
295
+ Each character must be either a '1'
296
+ or a '0'. The new #=GC RF markup will contain an 'x' for each column
297
+ that is a '1' in lane mask file, and a '.' for each column that is a '0'.
298
+ If the mask is of length
299
+ .I <rflen>
300
+ then it is interpreted as applying to only nongap RF characters in the
301
+ existing RF annotation, all gap RF characters will remain gaps and
302
+ nongap RF characters will be redefined as above.
303
+
304
+ .TP
305
+ .BI \-\-m\-keeprf
306
+ With
307
+ .B \-\-mask2rf,
308
+ do not overwrite existing nongap RF characters that are included by
309
+ the input mask as 'x', leave them as the character they are.
310
+
311
+ .TP
312
+ .BI \-\-num\-all
313
+ Add annotation to the alignment numbering all of the columns in the
314
+ alignment.
315
+
316
+ .TP
317
+ .BI \-\-num\-rf
318
+ Add annotation to the alignment numbering the non-gap (non '.') #=GC
319
+ RF columns of the alignment.
320
+
321
+ .TP
322
+ .BI \-\-rm\-gc " <s>"
323
+ Remove certain types of #=GC annotation from the alignment.
324
+ .I "<s>"
325
+ must be one of:
326
+ .BR RF ,
327
+ .BR SS_cons ,
328
+ .BR SA_cons ,
329
+ .BR PP_cons .
330
+
331
+ .TP
332
+ .BI \-\-sindi
333
+ Annotate individual secondary structures for each sequence by imposing
334
+ the consensus secondary structure defined by the #=GC SS_cons
335
+ annotation.
336
+
337
+ .TP
338
+ .BI \-\-post2pp
339
+ Update Infernal's cmalign 0.72-1.0.2 posterior probability "POST"
340
+ annotation to "PP" annotation, which is read by other miniapps,
341
+ including
342
+ .B esl\-alimask
343
+ and
344
+ .B esl\-alistat.
345
+
346
+ .TP
347
+ .B \-\-amino
348
+ Assert that the
349
+ .I msafile
350
+ contains protein sequences.
351
+
352
+ .TP
353
+ .B \-\-dna
354
+ Assert that the
355
+ .I msafile
356
+ contains DNA sequences.
357
+
358
+ .TP
359
+ .B \-\-rna
360
+ Assert that the
361
+ .I msafile
362
+ contains RNA sequences.
363
+
364
+
365
+
366
+ .SH SEE ALSO
367
+
368
+ .nf
369
+ http://bioeasel.org/
370
+ .fi
371
+
372
+ .SH COPYRIGHT
373
+
374
+ .nf
375
+ Copyright (C) 2023 Howard Hughes Medical Institute.
376
+ Freely distributed under the BSD open source license.
377
+ .fi
378
+
379
+ .SH AUTHOR
380
+
381
+ .nf
382
+ http://eddylab.org
383
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alimap.1 ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-alimap" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-alimap \- map two alignments to each other
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-alimap
8
+ [\fIoptions\fR]
9
+ .I msafile1
10
+ .I msafile2
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .B esl\-alimap
15
+ is a highly specialized application that determines the optimal
16
+ alignment mapping of columns between two alignments of the same
17
+ sequences. An alignment mapping defines for each column in alignment 1
18
+ a matching column in alignment 2. The number of residues in the
19
+ aligned sequences that are in common between the two matched columns
20
+ are considered 'shared' by those two columns.
21
+
22
+ .PP
23
+ For example, if the nth residue of sequence i occurs in alignment 1
24
+ column x and alignment 2 column y, then only a mapping of alignment
25
+ 1 and 2 that includes column x mapping to column y would correctly map
26
+ and share the residue.
27
+
28
+ .PP
29
+ The optimal mapping of the two alignments is the mapping which
30
+ maximizes the sum of shared residues between all pairs of matching
31
+ columns. The fraction of total residues that are shared is reported as
32
+ the coverage in the
33
+ .B esl\-alimap
34
+ output.
35
+
36
+ .PP
37
+ Only the first alignments in
38
+ .I msafile1
39
+ and
40
+ .I msafile2
41
+ will be mapped to each other. If the files contain more than one
42
+ alignment, all alignments after the first will be ignored.
43
+
44
+ .PP
45
+ The two alignments (one from each file) must contain exactly the same
46
+ sequences (if they were unaligned, they'd be identical) in precisely
47
+ the same order. They must also be in Stockholm format.
48
+
49
+ .PP
50
+ The output of
51
+ .B esl\-alimap
52
+ differs depending on whether one or both of the alignments
53
+ contain reference (#=GC RF) annotation. If so, the
54
+ coverage for residues from nongap RF positions will be reported
55
+ separately from the total coverage.
56
+
57
+ .PP
58
+ .B esl\-alimap
59
+ uses a dynamic programming algorithm to compute the optimal
60
+ mapping. The algorithm is similar to the Needleman-Wunsch-Sellers
61
+ algorithm but the scores used at each step of the recursion are not
62
+ residue-residue comparison scores but rather the number of residues
63
+ shared between two columns.
64
+
65
+ The
66
+ .BI \-\-mask\-a2a " <f>",
67
+ .BI \-\-mask\-a2rf " <f>",
68
+ .BI \-\-mask\-rf2a " <f>",
69
+ and
70
+ .BI \-\-mask\-rf2rf " <f>"
71
+ options create 'mask' files that pertain to the optimal mapping in
72
+ slightly different ways. A mask file consists of a single line, of
73
+ only '0' and '1' characters. These denote which positions of the
74
+ alignment from
75
+ .I msafile1
76
+ map to positions of the alignment from
77
+ .I msafile2
78
+ as described below for each of the four respective masking options.
79
+ These masks can be used to extract only those columns of the
80
+ .I msafile1
81
+ alignment
82
+ that optimally map to columns of the
83
+ .I msafile2
84
+ alignment
85
+ using the
86
+ .B esl\-alimask
87
+ miniapp. To extract the corresponding set of columns
88
+ from
89
+ .I msafile2
90
+ (that optimally map to columns of the alignment from
91
+ .IR msafile1 ),
92
+ it is necessary to rerun the program with the order of the two
93
+ msafiles reversed, save new masks, and use
94
+ .B esl\-alimask
95
+ again.
96
+
97
+ .SH OPTIONS
98
+
99
+ .TP
100
+ .B \-h
101
+ Print brief help; includes version number and summary of
102
+ all options.
103
+
104
+ .TP
105
+ .B \-q
106
+ Be quiet; don't print information the optimal mapping of each column,
107
+ only report coverage and potentially save masks to optional output files.
108
+
109
+ .TP
110
+ .BI \-\-mask\-a2a " <f>"
111
+ Save a mask of '0's and '1's to file
112
+ .I <f>.
113
+ A '1' at position x means that position x of the alignment from
114
+ .I msafile1
115
+ maps to an alignment position in the alignment from
116
+ .I msafile2
117
+ in the optimal map.
118
+
119
+ .TP
120
+ .BI \-\-mask\-a2rf " <f>"
121
+ Save a mask of '0's and '1's to file
122
+ .I <f>.
123
+ A '1' at position x means that position x of the alignment from
124
+ .I msafile1
125
+ maps to a nongap RF position in the alignment from
126
+ .I msafile2
127
+ in the optimal map.
128
+
129
+ .TP
130
+ .BI \-\-mask\-rf2a " <f>"
131
+ Save a mask of '0's and '1's to file
132
+ .I <f>.
133
+ A '1' at position x means that nongap RF position x of the alignment from
134
+ .I msafile1
135
+ maps to an alignment position in the alignment from
136
+ .I msafile2
137
+ in the optimal map.
138
+
139
+ .TP
140
+ .BI \-\-mask\-rf2rf " <f>"
141
+ Save a mask of '0's and '1's to file
142
+ .I <f>.
143
+ A '1' at position x means that nongap RF position x of the alignment from
144
+ .I msafile1
145
+ maps to a nongap RF position in the alignment from
146
+ .I msafile2
147
+ in the optimal map.
148
+
149
+ .TP
150
+ .BI \-\-submap " <f>"
151
+ Specify that all of the columns from the alignment from
152
+ .I msafile1
153
+ exist identically (contain the same residues from all sequences) in
154
+ the alignment from
155
+ .I msafile2.
156
+ This makes the task of mapping trivial.
157
+ However, not all columns of
158
+ .I msafile1
159
+ must exist in
160
+ .I msafile2.
161
+ Save the mask to file
162
+ .I <f>.
163
+ A '1' at position x of the mask means that position x of the alignment from
164
+ .I msafile1
165
+ is the same as position y of
166
+ .I msafile2,
167
+ where y is the number of '1's that occur at positions <= x in the mask.
168
+
169
+ .TP
170
+ .B \-\-amino
171
+ Assert that
172
+ .I msafile1
173
+ and
174
+ .I msafile2
175
+ contain protein sequences.
176
+
177
+ .TP
178
+ .B \-\-dna
179
+ Assert that
180
+ .I msafile1
181
+ and
182
+ .I msafile2
183
+ contain DNA sequences.
184
+
185
+ .TP
186
+ .B \-\-rna
187
+ Assert that the
188
+ .I msafile1
189
+ and
190
+ .I msafile2
191
+ contain RNA sequences.
192
+
193
+
194
+ .SH SEE ALSO
195
+
196
+ .nf
197
+ http://bioeasel.org/
198
+ .fi
199
+
200
+ .SH COPYRIGHT
201
+
202
+ .nf
203
+ Copyright (C) 2023 Howard Hughes Medical Institute.
204
+ Freely distributed under the BSD open source license.
205
+ .fi
206
+
207
+ .SH AUTHOR
208
+
209
+ .nf
210
+ http://eddylab.org
211
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alimerge.1 ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-alimerge" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-alimerge \- merge alignments based on their reference (RF) annotation
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .nf
9
+ \fBesl\-alimerge \fR[\fIoptions\fR] \fIalifile1 alifile2\fR
10
+ (merge two alignment files)
11
+
12
+ \fBesl\-alimerge \-\-list \fR[\fIoptions\fR] \fIlistfile\fR
13
+ (merge many alignment files listed in a file)
14
+
15
+
16
+ .SH DESCRIPTION
17
+
18
+ .PP
19
+ .B esl\-alimerge
20
+ reads more than one input alignments, merges them into a single
21
+ alignment and outputs it.
22
+
23
+ .PP
24
+ The input alignments must all be in Stockholm format. All alignments
25
+ must have reference ('#=GC RF') annotation. Further, the RF annotation
26
+ must be identical in all alignments once gap characters in the RF
27
+ annotation ('.','\-','_') have been removed. This requirement allows
28
+ alignments with different numbers of total columns to be merged
29
+ together based on consistent RF annotation, such as alignments created
30
+ by successive runs of the
31
+ .B cmalign
32
+ program of the INFERNAL package using the same CM. Columns which have
33
+ a gap character in the RF annotation are called 'insert' columns.
34
+
35
+ .PP
36
+ All sequence data in all input alignments will be included in the
37
+ output alignment regardless of the output format (see
38
+ .B \-\-outformat
39
+ option below). However, sequences in the merged alignment will usually
40
+ contain more gaps ('.') than they did in their respective input
41
+ alignments. This is because
42
+ .B esl\-alimerge
43
+ must add 100% gap columns to each individual input alignment so that
44
+ insert columns in the other input alignments can be accomodated in the
45
+ merged alignment.
46
+
47
+ .PP
48
+ If the output format is Stockholm or Pfam, annotation will be
49
+ transferred from the input alignments to the merged alignment as
50
+ follows. All per-sequence ('#=GS') and per-residue ('#=GR') annotation
51
+ is transferred. Per-file ('#=GF') annotation is transferred if it is
52
+ present and identical in all alignments. Per-column ('#=GC') annotation is
53
+ transferred if it is present and identical in all alignments once all
54
+ insert positions have been removed and
55
+ the '#=GC' annotation includes zero non-gap characters in insert
56
+ columns.
57
+
58
+ .PP
59
+ With the
60
+ .BI \-\-list " <f>"
61
+ option,
62
+ .I <f>
63
+ is a file listing alignment files to merge. In the list file, blank
64
+ lines and lines that start with '#' (comments) are ignored. Each data
65
+ line contains a single word: the name of an alignment file to be
66
+ merged. All alignments in each file will be merged.
67
+
68
+ .PP
69
+ With the
70
+ .B \-\-small
71
+ option,
72
+ .B esl\-alimerge
73
+ will operate in memory saving mode and the required RAM for the merge
74
+ will be minimal (should be only a few Mb) and independent of the
75
+ alignment sizes. To use
76
+ .BR \-\-small ,
77
+ all alignments must be in Pfam format (non-interleaved, 1
78
+ line/sequence Stockholm format). You can reformat alignments to Pfam
79
+ using the
80
+ .B esl\-reformat
81
+ Easel miniapp. Without
82
+ .B \-\-small
83
+ the required RAM will be equal to roughly the size of the final merged
84
+ alignment file which will necessarily be at least the summed size of
85
+ all of the input alignment files to be merged and sometimes several
86
+ times larger. If you're merging large alignments or you're
87
+ experiencing very slow performance of
88
+ .BR esl\-alimerge ,
89
+ try reformatting to Pfam and using
90
+ .BR \-\-small .
91
+
92
+
93
+
94
+ .SH OPTIONS
95
+
96
+ .TP
97
+ .B \-h
98
+ Print brief help; includes version number and summary of
99
+ all options, including expert options.
100
+
101
+ .TP
102
+ .BI \-o " <f>"
103
+ Output merged alignment to file
104
+ .I <f>
105
+ instead of to stdout.
106
+
107
+ .TP
108
+ .B \-v
109
+ Be verbose; print information on the size of the alignments being merged,
110
+ and the annotation transferred to the merged alignment to stdout.
111
+ This option can only be used in combination with the
112
+ .B \-o
113
+ option (so that the printed info doesn't corrupt the output alignment
114
+ file).
115
+
116
+ .TP
117
+ .B \-\-small
118
+ Operate in memory saving mode. Required RAM will be independent of the
119
+ sizes of the alignments to merge, instead of roughly the size of the
120
+ eventual merged alignment. When enabled, all alignments must be in
121
+ Pfam Stockholm (non-interleaved 1 line/seq) format; see
122
+ .BR esl\-reformat (1).
123
+ The output alignment will be in Pfam format.
124
+
125
+ .TP
126
+ .B \-\-rfonly
127
+ Only include columns that are not gaps in the GC RF annotation in the
128
+ merged alignment.
129
+
130
+ .TP
131
+ .BI \-\-outformat " <s>"
132
+ Write the output alignment in format
133
+ .IR <s> .
134
+ Common choices for
135
+ .I <s>
136
+ include:
137
+ .BR stockholm ,
138
+ .BR a2m ,
139
+ .BR afa ,
140
+ .BR psiblast ,
141
+ .BR clustal ,
142
+ .BR phylip .
143
+ The string
144
+ .I <s>
145
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
146
+ Default is
147
+ .BR stockholm .
148
+
149
+
150
+ .TP
151
+ .B \-\-rna
152
+ Specify that the input alignments are RNA alignments. By default
153
+ .B esl\-alimerge
154
+ will try to autodetect the alphabet, but if the alignment is sufficiently
155
+ small it may be ambiguous. This option defines the alphabet as RNA.
156
+
157
+ .TP
158
+ .B \-\-dna
159
+ Specify that the input alignments are DNA alignments.
160
+
161
+ .TP
162
+ .B \-\-amino
163
+ Specify that the input alignments are protein alignments.
164
+
165
+
166
+
167
+ .SH SEE ALSO
168
+
169
+ .nf
170
+ http://bioeasel.org/
171
+ .fi
172
+
173
+ .SH COPYRIGHT
174
+
175
+ .nf
176
+ Copyright (C) 2023 Howard Hughes Medical Institute.
177
+ Freely distributed under the BSD open source license.
178
+ .fi
179
+
180
+ .SH AUTHOR
181
+
182
+ .nf
183
+ http://eddylab.org
184
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alipid.1 ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-alipid" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-alipid \- calculate pairwise percent identities for all sequence pairs in an MSA
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-alipid
8
+ [\fIoptions\fR]
9
+ .I msafile
10
+
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .PP
15
+ .B esl\-alistat
16
+ calculates the pairwise percent identity of each sequence pair in
17
+ in the MSA(s) in
18
+ .I msafile.
19
+ For each sequence pair, it outputs a line of
20
+ .I <seqname1> <seqname2> <%id> <nid> <denomid> <%match> <nmatch> <denommatch>
21
+ where
22
+ .I <%id>
23
+ is the percent identity,
24
+ .I <nid>
25
+ is the number of identical aligned pairs,
26
+ and
27
+ .I <denomid>
28
+ is the denominator used for the calculation: the
29
+ shorter of the two (unaligned) sequence lengths.
30
+ The %identity is defined as 100*nid/denomid.
31
+
32
+ .PP
33
+ The last three fields are the pairwise percent match calculation, in
34
+ the pair\-HMM sense of a "match state" that aligns two residues XY
35
+ (whether identical or different) versus delete \-Y and insert X\- states
36
+ that have a residue in one sequence and a gap character in the other.
37
+ That is, the %match is the percentage of the alignment that
38
+ consists of aligned residues as opposed to insertions or deletions in
39
+ either sequence. The %match is defined as 100*nmatch/denommatch.
40
+
41
+ .PP
42
+ There are many ways that one could choose a denominator for these
43
+ percentages. We always define %id using MIN(len1,len2) as the
44
+ denominator. In multiple sequence alignments, you will often have short
45
+ sequence fragments which may have very little overlap, or even none at
46
+ all. Several ways to calculate %identity, such as ignoring columns
47
+ with gaps (100* n_identities / (n_identities + n_mismatches)) , or
48
+ dividing by the total alignment length (100 * n_identities / ali_len),
49
+ are not robust to having overlapping fragments or long indels, because
50
+ you can get spuriously high or low %id's.
51
+
52
+ .PP
53
+ For both %identity and %match calculations, alignments of a gap
54
+ character in both sequences, \-\-, aren't counted. Also, if the denominator
55
+ is zero (which can happen, when two sequence fragments in the same MSA
56
+ don't overlap each other), the resulting % is defined to be 0.
57
+
58
+ .PP
59
+ If
60
+ .I msafile
61
+ is \- (a single dash), alignment input is read from
62
+ stdin.
63
+
64
+ .PP
65
+ Only canonical residues are counted toward
66
+ .I <nid>
67
+ and
68
+ .I <n>.
69
+ Degenerate residue codes are not counted.
70
+
71
+ .SH OPTIONS
72
+
73
+ .TP
74
+ .B \-h
75
+ Print brief help; includes version number and summary of
76
+ all options, including expert options.
77
+
78
+ .TP
79
+ .BI \-\-informat " <s>"
80
+ Assert that input
81
+ .I msafile
82
+ is in alignment format
83
+ .IR <s> ,
84
+ bypassing format autodetection.
85
+ Common choices for
86
+ .I <s>
87
+ include:
88
+ .BR stockholm ,
89
+ .BR a2m ,
90
+ .BR afa ,
91
+ .BR psiblast ,
92
+ .BR clustal ,
93
+ .BR phylip .
94
+ For more information, and for codes for some less common formats,
95
+ see main documentation.
96
+ The string
97
+ .I <s>
98
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
99
+
100
+ .TP
101
+ .B \-\-amino
102
+ Assert that the
103
+ .I msafile
104
+ contains protein sequences.
105
+
106
+ .TP
107
+ .B \-\-dna
108
+ Assert that the
109
+ .I msafile
110
+ contains DNA sequences.
111
+
112
+ .TP
113
+ .B \-\-rna
114
+ Assert that the
115
+ .I msafile
116
+ contains RNA sequences.
117
+
118
+
119
+
120
+ .SH SEE ALSO
121
+
122
+ .nf
123
+ http://bioeasel.org/
124
+ .fi
125
+
126
+ .SH COPYRIGHT
127
+
128
+ .nf
129
+ Copyright (C) 2023 Howard Hughes Medical Institute.
130
+ Freely distributed under the BSD open source license.
131
+ .fi
132
+
133
+ .SH AUTHOR
134
+
135
+ .nf
136
+ http://eddylab.org
137
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alirev.1 ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-alirev" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-alirev \- reverse complement a multiple alignment
5
+
6
+
7
+ .SH SYNOPSIS
8
+ .B esl\-alirev
9
+ [\fIoptions\fR]
10
+ .I msafile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ .B esl\-alirev
17
+ reads the multiple alignment in
18
+ .I msafile
19
+ and outputs its reverse complement to stdout.
20
+
21
+ .PP
22
+ An example of where you might need to do this is when you've
23
+ downloaded a chunk of multiway genomic alignment from one of the
24
+ genome browsers, but your RNA of interest is on the opposite strand.
25
+
26
+ .PP
27
+ Any per-column and per-residue annotation lines are reversed as well,
28
+ including Stockholm format and old SELEX format annotations.
29
+ Annotations that Easel recognizes as secondary structure annotation (a
30
+ consensus structure line, individual secondary structure lines) will
31
+ be "reverse complemented" to preserve proper bracketing orders: for
32
+ example, ...<<<...>>> is reverse complemented to <<<...>>>..., not
33
+ simply reversed to >>>...<<<..., which would be wrong.
34
+
35
+ .PP
36
+ If
37
+ .I msafile
38
+ is \- (a single dash), alignment input is read from stdin.
39
+
40
+
41
+ .PP
42
+ By default the output alignment is written in the same format as the
43
+ input alignment. See the
44
+ .B \-\-outformat
45
+ option to use a different output format.
46
+
47
+ .PP
48
+ Because the alignment is parsed into Easel's digital internal
49
+ representation, the output alignment may differ in certain details
50
+ from the original alignment; these details should be inconsequential
51
+ but may catch your eye. One is that if you have a reference annotation
52
+ line, Easel's output will put consensus residues in upper case,
53
+ nonconsensus (inserted) residues in lower case. Another is that the
54
+ headers for some formats, such as Clustal format, are written with an
55
+ arbitrary version number - so you may find yourself revcomping an
56
+ alignment in "MUSCLE (3.7) multiple sequence alignment" format and it
57
+ could come out claiming to be a "CLUSTAL 2.1 multiple sequence
58
+ alignment", just because Easel writes all of its Clustal format
59
+ alignment files with that header.
60
+
61
+ .PP
62
+ The
63
+ .I msafile
64
+ must contain nucleic acid sequences (DNA or RNA).
65
+ The alphabet will be autodetected by default.
66
+ See the
67
+ .B \-\-dna
68
+ or
69
+ .B \-\-rna
70
+ options to assert an alphabet.
71
+
72
+
73
+
74
+ .SH OPTIONS
75
+
76
+ .TP
77
+ .B \-h
78
+ Print brief help; includes version number and summary of
79
+ all options, including expert options.
80
+
81
+ .TP
82
+ .BI \-\-informat " <s>"
83
+ Assert that input
84
+ .I msafile
85
+ is in alignment format
86
+ .IR <s> ,
87
+ bypassing format autodetection.
88
+ Common choices for
89
+ .I <s>
90
+ include:
91
+ .BR stockholm ,
92
+ .BR a2m ,
93
+ .BR afa ,
94
+ .BR psiblast ,
95
+ .BR clustal ,
96
+ .BR phylip .
97
+ For more information, and for codes for some less common formats,
98
+ see main documentation.
99
+ The string
100
+ .I <s>
101
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
102
+
103
+ .TP
104
+ .BI \-\-outformat " <s>"
105
+ Write the output alignment in alignment format
106
+ .IR <s> .
107
+ Common choices for
108
+ .I <s>
109
+ include:
110
+ .BR stockholm ,
111
+ .BR a2m ,
112
+ .BR afa ,
113
+ .BR psiblast ,
114
+ .BR clustal ,
115
+ .BR phylip .
116
+ The string
117
+ .I <s>
118
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
119
+ Default is to use same format as the input
120
+ .IR msafile .
121
+
122
+ .TP
123
+ .B \-\-dna
124
+ Assert that the
125
+ .I msafile
126
+ contains DNA sequences.
127
+
128
+ .TP
129
+ .B \-\-rna
130
+ Assert that the
131
+ .I msafile
132
+ contains RNA sequences.
133
+
134
+
135
+ .SH SEE ALSO
136
+
137
+ .nf
138
+ http://bioeasel.org/
139
+ .fi
140
+
141
+ .SH COPYRIGHT
142
+
143
+ .nf
144
+ Copyright (C) 2023 Howard Hughes Medical Institute.
145
+ Freely distributed under the BSD open source license.
146
+ .fi
147
+
148
+ .SH AUTHOR
149
+
150
+ .nf
151
+ http://eddylab.org
152
+ .fi
153
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-alistat.1 ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-alistat" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-alistat \- summarize a multiple sequence alignment file
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-alistat
8
+ [\fIoptions\fR]
9
+ .I msafile
10
+
11
+ .SH DESCRIPTION
12
+
13
+ .PP
14
+ .B esl\-alistat
15
+ summarizes the contents of the multiple sequence alignment(s) in
16
+ .I msafile,
17
+ such as the alignment name, format, alignment length (number of
18
+ aligned columns), number of sequences, average pairwise % identity,
19
+ and mean, smallest, and largest raw (unaligned) lengths of the
20
+ sequences.
21
+
22
+ .PP
23
+ If
24
+ .I msafile
25
+ is \- (a single dash),
26
+ multiple alignment input is read from stdin.
27
+
28
+
29
+
30
+ .PP
31
+ The
32
+ .BR \-\-list ,
33
+ .BR \-\-icinfo ,
34
+ .BR \-\-rinfo ,
35
+ .BR \-\-pcinfo ,
36
+ .BR \-\-psinfo ,
37
+ .BR \-\-cinfo ,
38
+ .BR \-\-bpinfo ,
39
+ and
40
+ .B \-\-iinfo
41
+ options allow dumping various statistics on the alignment to optional
42
+ output files as described for each of those options below.
43
+
44
+ .PP
45
+ The
46
+ .B \-\-small
47
+ option allows summarizing alignments without storing them in memory
48
+ and can be useful for large alignment files with sizes that approach
49
+ or exceed the amount of available RAM. When
50
+ .B \-\-small
51
+ is used,
52
+ .B esl\-alistat
53
+ will print fewer statistics on the alignment, omitting data on the
54
+ smallest and largest sequences and the average identity of the
55
+ alignment.
56
+ .B \-\-small
57
+ only works on Pfam formatted alignments (a special type of
58
+ non-interleaved Stockholm alignment in which each sequence occurs on a
59
+ single line) and
60
+ .B \-\-informat pfam
61
+ must be given with
62
+ .BR \-\-small .
63
+ Further, when
64
+ .B \-\-small
65
+ is used, the alphabet must be specified with
66
+ .BR \-\-amino ,
67
+ .BR \-\-dna ,
68
+ or
69
+ .BR \-\-rna .
70
+
71
+
72
+
73
+ .SH OPTIONS
74
+
75
+ .TP
76
+ .B \-h
77
+ Print brief help; includes version number and summary of
78
+ all options, including expert options.
79
+
80
+ .TP
81
+ .B \-1
82
+ Use a tabular output format with one line of statistics per alignment
83
+ in
84
+ .I msafile.
85
+ This is most useful when
86
+ .I msafile
87
+ contains many different alignments (such as a Pfam database in
88
+ Stockholm format).
89
+
90
+
91
+ .SH EXPERT OPTIONS
92
+
93
+ .TP
94
+ .BI \-\-informat " <s>"
95
+ Assert that input
96
+ .I msafile
97
+ is in alignment format
98
+ .IR <s> ,
99
+ bypassing format autodetection.
100
+ Common choices for
101
+ .I <s>
102
+ include:
103
+ .BR stockholm ,
104
+ .BR a2m ,
105
+ .BR afa ,
106
+ .BR psiblast ,
107
+ .BR clustal ,
108
+ .BR phylip .
109
+ For more information, and for codes for some less common formats,
110
+ see main documentation.
111
+ The string
112
+ .I <s>
113
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
114
+
115
+
116
+ .TP
117
+ .B \-\-amino
118
+ Assert that the
119
+ .I msafile
120
+ contains protein sequences.
121
+
122
+ .TP
123
+ .B \-\-dna
124
+ Assert that the
125
+ .I msafile
126
+ contains DNA sequences.
127
+
128
+ .TP
129
+ .B \-\-rna
130
+ Assert that the
131
+ .I msafile
132
+ contains RNA sequences.
133
+
134
+ .TP
135
+ .B \-\-small
136
+ Operate in small memory mode for Pfam formatted alignments.
137
+ .B \-\-informat pfam
138
+ and one of
139
+ .BR \-\-amino ,
140
+ .BR \-\-dna ,
141
+ or
142
+ .B \-\-rna
143
+ must be given as well.
144
+
145
+ .TP
146
+ .BI \-\-list " <f>"
147
+ List the names of all sequences in all alignments in
148
+ .B msafile
149
+ to file
150
+ .IR <f> .
151
+ Each sequence name is written on its own line.
152
+
153
+ .TP
154
+ .BI \-\-icinfo " <f>"
155
+ Dump the information content per position in tabular format to file
156
+ .IR <f> .
157
+ Lines prefixed with "#" are comment lines, which explain the
158
+ meanings of each of the tab-delimited fields.
159
+
160
+ .TP
161
+ .BI \-\-rinfo " <f>"
162
+ Dump information on the frequency of gaps versus nongap residues per position in tabular format to file
163
+ .IR <f> .
164
+ Lines prefixed with "#" are comment lines, which explain the
165
+ meanings of each of the tab-delimited fields.
166
+
167
+ .TP
168
+ .BI \-\-pcinfo " <f>"
169
+ Dump per column information on posterior probabilities in tabular format to file
170
+ .IR <f> .
171
+ Lines prefixed with "#" are comment lines, which explain the
172
+ meanings of each of the tab-delimited fields.
173
+
174
+ .TP
175
+ .BI \-\-psinfo " <f>"
176
+ Dump per sequence information on posterior probabilities in tabular format to file
177
+ .IR <f> .
178
+ Lines prefixed with "#" are comment lines, which explain the
179
+ meanings of each of the tab-delimited fields.
180
+
181
+ .TP
182
+ .BI \-\-iinfo " <f>"
183
+ Dump information on inserted residues in tabular format to file
184
+ .IR <f> .
185
+ Insert columns of the alignment are those that are gaps in the
186
+ reference (#=GC RF) annotation. This option only works if the input
187
+ file is in Stockholm format with reference annotation.
188
+ Lines prefixed with "#" are comment lines, which explain the
189
+ meanings of each of the tab-delimited fields.
190
+
191
+ .TP
192
+ .BI \-\-cinfo " <f>"
193
+ Dump per-column residue counts to file
194
+ .IR <f> .
195
+ If used in combination with
196
+ .B \-\-noambig
197
+ ambiguous (degenerate) residues will be ignored and not
198
+ counted. Otherwise, they will be marginalized. For example, in an RNA
199
+ sequence file, a 'N' will be counted as 0.25 'A', 0.25 'C', 0.25 'G',
200
+ and 0.25 'U'.
201
+
202
+ .TP
203
+ .B \-\-noambig
204
+ With
205
+ .BR \-\-cinfo ,
206
+ do not count ambiguous (degenerate) residues.
207
+
208
+ .TP
209
+ .B \-\-bpinfo
210
+ Dump per-column basepair counts to file
211
+ .IR <f> .
212
+ Counts appear for each basepair in the consensus secondary structure (annotated as
213
+ "#=GC SS_cons"). Only basepairs from sequences for which both paired positions are
214
+ canonical residues will be counted. That is, any basepair that is a gap
215
+ or an ambiguous (degenerate) residue at either position of the pair is
216
+ ignored and not counted.
217
+
218
+
219
+ .TP
220
+ .B \-\-weight
221
+ With
222
+ .BR \-\-icinfo ,
223
+ .BR \-\-rinfo ,
224
+ .BR \-\-pcinfo ,
225
+ .BR \-\-iinfo ,
226
+ .BR \-\-cinfo ,
227
+ and
228
+ .BR \-\-bpinfo ,
229
+ weight counts based on #=GS WT annotation in the input
230
+ .IR msafile .
231
+ A residue or basepair from a sequence with a weight of
232
+ .I <x>
233
+ will be considered
234
+ .I <x>
235
+ counts.
236
+ By default, raw, unweighted counts are reported; corresponding to each
237
+ sequence having an equal weight of 1.
238
+
239
+
240
+
241
+
242
+ .SH SEE ALSO
243
+
244
+ .nf
245
+ http://bioeasel.org/
246
+ .fi
247
+
248
+ .SH COPYRIGHT
249
+
250
+ .nf
251
+ Copyright (C) 2023 Howard Hughes Medical Institute.
252
+ Freely distributed under the BSD open source license.
253
+ .fi
254
+
255
+ .SH AUTHOR
256
+
257
+ .nf
258
+ http://eddylab.org
259
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-compalign.1 ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-compalign" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-compalign \- compare two multiple sequence alignments
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-compalign
8
+ [\fIoptions\fR]
9
+ .I trusted_file
10
+ .I test_file
11
+
12
+
13
+
14
+ .SH DESCRIPTION
15
+
16
+ .PP
17
+ .B esl\-compalign
18
+ evaluates the accuracy of a predicted multiple sequence alignment with
19
+ respect to a trusted alignment of the same sequences.
20
+
21
+ .PP
22
+ The
23
+ .I trusted_file
24
+ and
25
+ .I test_file
26
+ must contain the same number of alignments. Each predicted alignment in the
27
+ .I test_file
28
+ will be compared against a single trusted alignment from the
29
+ .I trusted_file.
30
+ The first alignments in each file correspond to each other and will be
31
+ compared, the second alignment in each file correspond to each other
32
+ and will be compared, and so on. Each corresponding pair of
33
+ alignments must contain the same sequences (i.e. if they were
34
+ unaligned they would be identical) in the same order in both
35
+ files. Further, both alignment files must be in Stockholm format and
36
+ contain 'reference' annotation, which appears as "#=GC RF" per-column
37
+ markup for each alignment. The number of nongap (non '.' characters)
38
+ in the reference (RF) annotation must be identical between all
39
+ corresponding alignments in the two files.
40
+
41
+ .PP
42
+ .B esl\-compalign
43
+ reads an alignment from each file, and compares them based on
44
+ their 'reference' annotation. The number of correctly predicted
45
+ residues for each sequence is computed as follows. A residue that is
46
+ in the Nth nongap RF column in the trusted alignment must also appear
47
+ in the Nth nongap RF column in the predicted alignment to be counted
48
+ as 'correct', otherwise it is 'incorrect'. A residue that appears in a
49
+ gap RF column in the trusted alignment between nongap RF columns N and
50
+ N+1 must also appear in a nongap RF column in the predicted alignment
51
+ between nongap RF columns N and N+1 to be counted as 'correct',
52
+ otherwise it is incorrect.
53
+
54
+ .PP
55
+ The default output of
56
+ .B esl\-compalign
57
+ lists each sequence and the number of correctly and incorrectly
58
+ predicted residues for that sequence. These counts are broken down
59
+ into counts for residues in the predicted alignments that occur
60
+ in 'match' columns and 'insert' columns. A 'match' column is one for
61
+ which the RF annotation does not contain a gap. An 'insert' column is
62
+ one for which the RF annotation does contain a gap.
63
+
64
+
65
+
66
+ .SH OPTIONS
67
+
68
+ .TP
69
+ .B \-h
70
+ Print brief help; includes version number and summary of
71
+ all options.
72
+
73
+ .TP
74
+ .B \-c
75
+ Print per-column statistics instead of per-sequence statistics.
76
+
77
+ .TP
78
+ .B \-p
79
+ Print statistics on accuracy versus posterior probability values. The
80
+ .I test_file
81
+ must be annotated with posterior probabilities (#=GR PP) for this
82
+ option to work.
83
+
84
+
85
+ .SH EXPERT OPTIONS
86
+
87
+ .TP
88
+ .BI \-\-p\-mask " <f>"
89
+ This option may only be used in combination with the
90
+ .B \-p
91
+ option. Read a "mask" from file
92
+ .IR <f> .
93
+ The mask file must consist of a single line, of only '0' and '1'
94
+ characters. There must be exactly RFLEN characters where RFLEN is the
95
+ number of nongap characters in the RF annotation of all alignments in
96
+ both
97
+ .I trusted_file
98
+ and
99
+ .IR test_file .
100
+ Positions of the mask that are '1' characters indicate that the
101
+ corresponding nongap RF position is included by the mask. The
102
+ posterior probability accuracy statistics for match columns will only
103
+ pertain to positions that are included by the mask, those that are
104
+ excluded will be ignored from the accuracy calculation.
105
+
106
+ .BI \-\-c2dfile " <f>"
107
+ Save a 'draw file' to file
108
+ .I <f>
109
+ which can be read into the
110
+ .B esl\-ssdraw
111
+ miniapp. This draw file will define two postscript pages for
112
+ .BR esl\-ssdraw .
113
+ The first page will depict the frequency of errors per match position and
114
+ frequency of gaps per match position, indicated by magenta and yellow,
115
+ respectively. The darker magenta, the more errors and the darker
116
+ yellow, the more gaps. The second page will depict the frequency of
117
+ errors in insert positions in shades of magenta, the darker the
118
+ magenta the more errors in inserts after each position. See
119
+ .B esl\-ssdraw
120
+ documentation for more information on these diagrams.
121
+
122
+ .TP
123
+ .B \-\-amino
124
+ Assert that
125
+ .I trusted_file
126
+ and
127
+ .I test_file
128
+ contain protein sequences.
129
+
130
+ .TP
131
+ .B \-\-dna
132
+ Assert that
133
+ .I trusted_file
134
+ and
135
+ .I test_file
136
+ contain DNA sequences.
137
+
138
+ .TP
139
+ .B \-\-rna
140
+ Assert that the
141
+ .I trusted_file
142
+ and
143
+ .I test_file
144
+ contain RNA sequences.
145
+
146
+
147
+
148
+ .SH SEE ALSO
149
+
150
+ .nf
151
+ http://bioeasel.org/
152
+ .fi
153
+
154
+ .SH COPYRIGHT
155
+
156
+ .nf
157
+ Copyright (C) 2023 Howard Hughes Medical Institute.
158
+ Freely distributed under the BSD open source license.
159
+ .fi
160
+
161
+ .SH AUTHOR
162
+
163
+ .nf
164
+ http://eddylab.org
165
+ .fi
166
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-histplot.1 ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-histplot" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-histplot \- collate data histogram, output xmgrace datafile
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-histplot
8
+ [\fIoptions\fR]
9
+ .I datafile
10
+
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .PP
15
+ .B esl\-histplot
16
+ summarizes numerical data in the input file
17
+ .I datafile.
18
+
19
+ .PP
20
+ One real-numbered value is taken from each line of the input file.
21
+ Each line is split into whitespace-delimited fields, and one field
22
+ is converted to data. By default this is the first field; this can be
23
+ changed by the
24
+ .B \-f
25
+ option.
26
+
27
+ .PP
28
+ Default output is a survival plot (Prob(value > x)) in xmgrace XY data
29
+ format, to stdout.
30
+ Output may be directed to a file with the
31
+ .B \-o
32
+ option.
33
+
34
+ .PP
35
+ If
36
+ .I datafile
37
+ is \- (a single dash), input lines are read from stdin
38
+ instead of opening a file.
39
+
40
+
41
+
42
+
43
+ .SH OPTIONS
44
+
45
+ .TP
46
+ .BI \-f " <n>"
47
+ Read data from whitespace-delimited field
48
+ .I <n>
49
+ on each line, instead of the first field.
50
+ Fields are numbered starting from 1.
51
+
52
+ .TP
53
+ .B \-h
54
+ Print brief help; includes version number and summary of
55
+ all options, including expert options.
56
+
57
+ .TP
58
+ .BI \-o " <f>"
59
+ Send output to file
60
+ .I <f>
61
+ instead of stdout.
62
+
63
+
64
+
65
+ .SH SEE ALSO
66
+
67
+ .nf
68
+ http://bioeasel.org/
69
+ .fi
70
+
71
+ .SH COPYRIGHT
72
+
73
+ .nf
74
+ Copyright (C) 2023 Howard Hughes Medical Institute.
75
+ Freely distributed under the BSD open source license.
76
+ .fi
77
+
78
+ .SH AUTHOR
79
+
80
+ .nf
81
+ http://eddylab.org
82
+ .fi
83
+
84
+
85
+
86
+
87
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-mask.1 ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-mask" 1 "Aug 2023" "Easel @EASELVERSION@" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-mask \- mask sequence residues with X's (or other characters)
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-mask
8
+ [\fIoptions\fR]
9
+ .I seqfile
10
+ .I maskfile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ .B esl\-mask
17
+ reads lines from
18
+ .I maskfile
19
+ that give start/end coordinates for
20
+ regions in each sequence in
21
+ .IR seqfile ,
22
+ masks these residues (changes
23
+ them to X's), and outputs the masked sequence.
24
+
25
+ .PP
26
+ The
27
+ .I maskfile
28
+ is a space-delimited file. Blank lines and lines that start with '#'
29
+ (comments) are ignored. Each data line contains at least three
30
+ fields:
31
+ .IR seqname ,
32
+ .IR start ,
33
+ and
34
+ .IR end .
35
+ The
36
+ .I seqname
37
+ is the name of a sequence in the
38
+ .IR seqfile ,
39
+ and
40
+ .I start
41
+ and
42
+ .I end
43
+ are coordinates defining a region in that sequence.
44
+ The coordinates are indexed <1..L> with respect to a
45
+ sequence of length <L>.
46
+
47
+ .PP
48
+ By default, the sequence names must appear in exactly the same order
49
+ and number as the sequences in the
50
+ .IR seqfile.
51
+ This is easy to enforce, because the format of
52
+ .I maskfile
53
+ is also legal as a list of names for
54
+ .BR esl\-sfetch ,
55
+ so you can always fetch a temporary sequence file with
56
+ .B esl\-sfetch
57
+ and pipe that to
58
+ .BR esl\-mask .
59
+ (Alternatively, see the
60
+ .B \-R
61
+ option for fetching from an SSI-indexed
62
+ .IR seqfile .)
63
+
64
+ .PP
65
+ The default is to mask the region indicated by
66
+ \fI<start>\fR..\fI<end>\fR.
67
+ Alternatively, everything but this region can be masked;
68
+ see the
69
+ .B \-r
70
+ reverse masking option.
71
+
72
+ .PP
73
+ The default is to mask residues by converting them to X's.
74
+ Any other masking character can be chosen (see
75
+ .B \-m
76
+ option), or alternatively, masked residues can be lowercased (see
77
+ .B \-l
78
+ option).
79
+
80
+
81
+
82
+ .SH OPTIONS
83
+
84
+ .TP
85
+ .B \-h
86
+ Print brief help; includes version number and summary of
87
+ all options, including expert options.
88
+
89
+ .TP
90
+ .B \-l
91
+ Lowercase; mask by converting masked characters to lower case and
92
+ unmasked characters to upper case.
93
+
94
+ .TP
95
+ .BI \-m " <c>"
96
+ Mask by converting masked residues to
97
+ .I <c>
98
+ instead of the default X.
99
+
100
+ .TP
101
+ .BI \-o " <f>"
102
+ Send output to file
103
+ .I <f>
104
+ instead of stdout.
105
+
106
+ .TP
107
+ .B \-r
108
+ Reverse mask; mask everything outside the region
109
+ .I start..end,
110
+ as opposed to the default of masking that region.
111
+
112
+ .TP
113
+ .B \-R
114
+ Random access;
115
+ fetch sequences from
116
+ .I seqfile
117
+ rather than requiring that sequence names in
118
+ .I maskfile
119
+ and
120
+ .I seqfile
121
+ come in exactly the same order and number. The
122
+ .I seqfile
123
+ must be SSI indexed (see \fBesl\-sfetch \-\-index\fR.)
124
+
125
+ .TP
126
+ .BI \-x " <n>"
127
+ Extend all masked regions by up to <n> residues on each side.
128
+ For normal masking, this means masking
129
+ \fI<start>\fR\-\fI<n>\fR..\fI<end>\fR+\fI<n>\fR.
130
+ For reverse masking, this means masking
131
+ 1..\fI<start>\fR\-1+\fI<n>\fR
132
+ and
133
+ \fI<end>\fR+1\-\fI<n>\fR..L
134
+ in a sequence of length L.
135
+
136
+
137
+ .TP
138
+ .BI \-\-informat " <s>"
139
+ Assert that input
140
+ .I seqfile
141
+ is in format
142
+ .IR <s> ,
143
+ bypassing format autodetection.
144
+ Common choices for
145
+ .I <s>
146
+ include:
147
+ .BR fasta ,
148
+ .BR embl ,
149
+ .BR genbank.
150
+ Alignment formats also work;
151
+ common choices include:
152
+ .BR stockholm ,
153
+ .BR a2m ,
154
+ .BR afa ,
155
+ .BR psiblast ,
156
+ .BR clustal ,
157
+ .BR phylip .
158
+ For more information, and for codes for some less common formats,
159
+ see main documentation.
160
+ The string
161
+ .I <s>
162
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
163
+
164
+
165
+
166
+
167
+ .SH SEE ALSO
168
+
169
+ .nf
170
+ http://bioeasel.org/
171
+ .fi
172
+
173
+ .SH COPYRIGHT
174
+
175
+ .nf
176
+ Copyright (C) 2023 Howard Hughes Medical Institute.
177
+ Freely distributed under the BSD open source license.
178
+ .fi
179
+
180
+ .SH AUTHOR
181
+
182
+ .nf
183
+ http://eddylab.org
184
+ .fi
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-mixdchlet.1 ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-mixdchlet" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-mixdchlet \- fitting mixture Dirichlets to count data
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .nf
9
+ \fBesl\-mixdchlet fit\fR [\fIoptions\fR] \fIQ K in_countfile out_mixchlet\fR
10
+ (train a new mixture Dirichlet)
11
+
12
+ \fBesl\-mixdchlet score\fR [\fIoptions\fR] \fImixdchlet_file counts_file\fR
13
+ (calculate log likelihood of count data, given mixture Dirichlet)
14
+
15
+ \fBesl\-mixdchlet gen \fR[\fIoptions\fR] \fImixdchlet_file\fR
16
+ (generate synthetic count data from mixture Dirichlet)
17
+
18
+ \fBesl\-mixdchlet sample \fR[\fIoptions\fR]
19
+ (sample a random mixture Dirichlet for testing)
20
+ .fi
21
+
22
+
23
+ .SH DESCRIPTION
24
+
25
+ .PP
26
+ The
27
+ .B esl\-mixdchlet
28
+ miniapp is for training mixture Dirichlet priors, such as the priors
29
+ used in HMMER and Infernal. It has four subcommands:
30
+ .B fit,
31
+ .B score,
32
+ .B gen,
33
+ and
34
+ .B sample.
35
+ The most important subcommand is
36
+ .B fit,
37
+ which is the subcommand for fitting a new mixture Dirichlet
38
+ distribution to a collection of count vectors (for example,
39
+ emission or transition count vectors from Pfam or Rfam training
40
+ sets).
41
+
42
+ .PP
43
+ Specifically,
44
+ .B esl\-mixdchlet fit
45
+ fits a new mixture Dirichlet distribution with
46
+ .I Q
47
+ mixture components to the count vectors (of alphabet size
48
+ .I K
49
+ ) in input file
50
+ .I in_countfile,
51
+ and saves the mixture Dirichlet into output file
52
+ .I out_mixdchlet.
53
+
54
+ .PP
55
+ The input count vector file
56
+ .I in_countfile
57
+ contains one count vector of length
58
+ .I K
59
+ fields per line, for any number of lines.
60
+ Blank lines and lines starting in # (comments) are ignored.
61
+ Fields are nonnegative real values; they do not have to be integers,
62
+ because they can be weighted counts.
63
+
64
+ .PP
65
+ The format of a mixture Dirichlet file
66
+ .I out_mixdchlet
67
+ is as follows. The first line has two fields,
68
+ .I K Q,
69
+ where
70
+ .I K
71
+ is the alphabet size and
72
+ .I Q
73
+ is the number of mixture components.
74
+ The next
75
+ .I Q
76
+ lines consist of
77
+ .I K+1
78
+ fields. The first field is the mixture coefficient
79
+ .I q_k,
80
+ followed by
81
+ .I K
82
+ fields with the Dirichlet alpha[k][a] parameters
83
+ for this component.
84
+
85
+ .PP
86
+ The
87
+ .B esl\-mixdchlet score
88
+ subcommand calculates the log likelihood of the count vector data in
89
+ .I counts_file,
90
+ given the mixture Dirichlet in
91
+ .I mixdchlet_file.
92
+
93
+ .PP
94
+ The
95
+ .B esl\-mixdchlet gen
96
+ subcommand generates synthetic count data, given
97
+ a mixture Dirichlet.
98
+
99
+ .PP
100
+ The
101
+ .B esl\-mixdchlet sample
102
+ subcommand creates a random mixture Dirichlet distribution
103
+ and outputs it to standard output.
104
+
105
+
106
+ .SH OPTIONS FOR FIT SUBCOMMAND
107
+
108
+ .TP
109
+ .B \-h
110
+ Print brief help specific to the
111
+ .B fit
112
+ subcommand.
113
+
114
+ .TP
115
+ .BI \-s " <seed>"
116
+ Set random number generator seed to nonnegative integer
117
+ .I <seed>.
118
+ Default is 0, which means to use a quasirandom arbitrary seed.
119
+ Values >0 give reproducible results.
120
+
121
+
122
+
123
+
124
+ .SH OPTIONS FOR SCORE SUBCOMMAND
125
+
126
+ .TP
127
+ .B \-h
128
+ Print brief help specific to the
129
+ .B score
130
+ subcommand.
131
+
132
+
133
+
134
+ .SH OPTIONS FOR GEN SUBCOMMAND
135
+
136
+ .TP
137
+ .B \-h
138
+ Print brief help specific to the
139
+ .B gen
140
+ subcommand.
141
+
142
+ .TP
143
+ .BI \-s " <seed>"
144
+ Set random number generator seed to nonnegative integer
145
+ .I <seed>.
146
+ Default is 0, which means to use a quasirandom arbitrary seed.
147
+ Values >0 give reproducible results.
148
+
149
+
150
+ .TP
151
+ .BI \-M " <M>"
152
+ Generate
153
+ .I <M>
154
+ counts per sampled vector. (Default 100.)
155
+
156
+ .TP
157
+ .BI \-N " <N>"
158
+ Generate
159
+ .I <N>
160
+ count vectors. (Default 1000.)
161
+
162
+
163
+ .SH OPTIONS FOR SAMPLE SUBCOMMAND
164
+
165
+ .TP
166
+ .B \-h
167
+ Print brief help specific to the
168
+ .B sample
169
+ subcommand.
170
+
171
+ .TP
172
+ .BI \-s " <seed>"
173
+ Set random number generator seed to nonnegative integer
174
+ .I <seed>.
175
+ Default is 0, which means to use a quasirandom arbitrary seed.
176
+ Values >0 give reproducible results.
177
+
178
+
179
+ .TP
180
+ .BI \-K " <K>"
181
+ Set the alphabet size to
182
+ .I <K>.
183
+ (Default is 20, for amino acids.)
184
+
185
+ .TP
186
+ .BI \-Q " <Q>"
187
+ Set the number of mixture components to
188
+ .I <Q>.
189
+ (Default is 9.)
190
+
191
+
192
+
193
+
194
+ .SH SEE ALSO
195
+
196
+ .nf
197
+ http://bioeasel.org/
198
+ .fi
199
+
200
+ .SH COPYRIGHT
201
+
202
+ .nf
203
+ Copyright (C) 2023 Howard Hughes Medical Institute.
204
+ Freely distributed under the BSD open source license.
205
+ .fi
206
+
207
+ .SH AUTHOR
208
+
209
+ .nf
210
+ http://eddylab.org
211
+ .fi
212
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-reformat.1 ADDED
@@ -0,0 +1,271 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-reformat" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-reformat \- convert sequence file formats
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-reformat
8
+ [\fIoptions\fR]
9
+ .I format
10
+ .I seqfile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ .B esl\-reformat
17
+ reads the sequence file
18
+ .I seqfile
19
+ in any supported format, reformats it
20
+ into a new format specified by
21
+ .IR format ,
22
+ then outputs the reformatted text.
23
+
24
+ .PP
25
+ The
26
+ .I format
27
+ argument must (case-insensitively) match a supported sequence file format.
28
+ Common choices for
29
+ .I format
30
+ include:
31
+ .BR fasta ,
32
+ .BR embl ,
33
+ .BR genbank.
34
+ If
35
+ .I seqfile
36
+ is an alignment file,
37
+ alignment output formats also work.
38
+ Common choices include:
39
+ .BR stockholm ,
40
+ .BR a2m ,
41
+ .BR afa ,
42
+ .BR psiblast ,
43
+ .BR clustal ,
44
+ .BR phylip .
45
+ For more information, and for codes for some less common formats,
46
+ see main documentation.
47
+ The string
48
+ .I <s>
49
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
50
+
51
+ .PP
52
+ Unaligned format files cannot be reformatted to
53
+ aligned formats.
54
+ However, aligned formats can be reformatted
55
+ to unaligned formats, in which case gap characters are
56
+ simply stripped out.
57
+
58
+ .SH OPTIONS
59
+
60
+ .TP
61
+ .B \-d
62
+ DNA; convert U's to T's, to make sure a nucleic acid
63
+ sequence is shown as DNA not RNA. See
64
+ .B \-r.
65
+
66
+
67
+ .TP
68
+ .B \-h
69
+ Print brief help; includes version number and summary of
70
+ all options, including expert options.
71
+
72
+
73
+ .TP
74
+ .B \-l
75
+ Lowercase; convert all sequence residues to lower case.
76
+ See
77
+ .BR \-u .
78
+
79
+
80
+ .TP
81
+ .B \-n
82
+ For DNA/RNA sequences, converts any character that's not unambiguous
83
+ RNA/DNA (e.g. ACGTU/acgtu) to an N. Used to convert IUPAC ambiguity
84
+ codes to N's, for software that can't handle all IUPAC codes (some
85
+ public RNA folding codes, for example). If the file is an alignment,
86
+ gap characters are also left unchanged. If sequences are not
87
+ nucleic acid sequences, this option will corrupt the data in
88
+ a predictable fashion.
89
+
90
+
91
+ .TP
92
+ .BI \-o " <f>"
93
+ Send output to file
94
+ .I <f>
95
+ instead of stdout.
96
+
97
+
98
+ .TP
99
+ .B \-r
100
+ RNA; convert T's to U's, to make sure a nucleic acid
101
+ sequence is shown as RNA not DNA. See
102
+ .BR \-d .
103
+
104
+
105
+ .TP
106
+ .B \-u
107
+ Uppercase; convert all sequence residues to upper case.
108
+ See
109
+ .BR \-l .
110
+
111
+
112
+ .TP
113
+ .B \-x
114
+ For DNA sequences, convert non-IUPAC characters (such as X's) to N's.
115
+ This is for compatibility with benighted people who insist on using X
116
+ instead of the IUPAC ambiguity character N. (X is for ambiguity
117
+ in an amino acid residue).
118
+ .IP
119
+ Warning: like the
120
+ .B \-n
121
+ option, the code doesn't check that you are actually giving it DNA. It
122
+ simply literally just converts non-IUPAC DNA symbols to N. So if you
123
+ accidentally give it protein sequence, it will happily convert most
124
+ every amino acid residue to an N.
125
+
126
+
127
+
128
+
129
+ .SH EXPERT OPTIONS
130
+
131
+
132
+ .TP
133
+ .BI \-\-gapsym " <c>"
134
+ Convert all gap characters to
135
+ .IR <c> .
136
+ Used to prepare alignment files for programs with strict
137
+ requirements for gap symbols. Only makes sense if
138
+ the input
139
+ .I seqfile
140
+ is an alignment.
141
+
142
+ .TP
143
+ .BI \-\-informat " <s>"
144
+ Assert that input
145
+ .I seqfile
146
+ is in format
147
+ .IR <s> ,
148
+ bypassing format autodetection.
149
+ Common choices for
150
+ .I <s>
151
+ include:
152
+ .BR fasta ,
153
+ .BR embl ,
154
+ .BR genbank.
155
+ Alignment formats also work;
156
+ common choices include:
157
+ .BR stockholm ,
158
+ .BR a2m ,
159
+ .BR afa ,
160
+ .BR psiblast ,
161
+ .BR clustal ,
162
+ .BR phylip .
163
+ For more information, and for codes for some less common formats,
164
+ see main documentation.
165
+ The string
166
+ .I <s>
167
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
168
+
169
+ .TP
170
+ .B \-\-mingap
171
+ If
172
+ .I seqfile
173
+ is an alignment, remove any columns that contain 100% gap or missing
174
+ data characters, minimizing the overall length of the alignment.
175
+ (Often useful if you've extracted a subset of aligned sequences from a
176
+ larger alignment.)
177
+
178
+ .TP
179
+ .B \-\-keeprf
180
+ When used in combination with
181
+ .BR \-\-mingap ,
182
+ never remove a column that is not a gap in the reference (#=GC RF)
183
+ annotation, even if the column contains 100% gap characters in
184
+ all aligned sequences. By default with
185
+ .BR \-\-mingap ,
186
+ nongap RF columns that are 100% gaps in all sequences are removed.
187
+
188
+ .TP
189
+ .B \-\-nogap
190
+ Remove any aligned columns that contain any gap or missing data
191
+ symbols at all. Useful as a prelude to phylogenetic analyses, where
192
+ you only want to analyze columns containing 100% residues, so you want
193
+ to strip out any columns with gaps in them. Only makes sense if the
194
+ file is an alignment file.
195
+
196
+ .TP
197
+ .B \-\-wussify
198
+ Convert RNA secondary structure annotation strings (both consensus
199
+ and individual) from old "KHS" format, ><, to the new WUSS notation,
200
+ <>. If the notation is already in WUSS format, this option will screw it
201
+ up, without warning. Only SELEX and Stockholm format files have
202
+ secondary structure markup at present.
203
+
204
+ .TP
205
+ .B \-\-dewuss
206
+ Convert RNA secondary structure annotation strings from the new
207
+ WUSS notation, <>, back to the old KHS format, ><. If the annotation
208
+ is already in KHS, this option will corrupt it, without warning.
209
+ Only SELEX and Stockholm format files have secondary structure
210
+ markup.
211
+
212
+ .TP
213
+ .B \-\-fullwuss
214
+ Convert RNA secondary structure annotation strings from simple
215
+ (input) WUSS notation to full (output) WUSS notation.
216
+
217
+ .TP
218
+ .BI \-\-replace " <s>"
219
+ .I <s>
220
+ must be in the format
221
+ .I <s1>:<s2>
222
+ with equal numbers of characters in
223
+ .I <s1>
224
+ and
225
+ .I <s2>
226
+ separated by a ":" symbol. Each character from
227
+ .I <s1>
228
+ in the input file will be replaced by its counterpart (at the same
229
+ position) from
230
+ .IR <s2> .
231
+ Note that special characters in
232
+ .I <s>
233
+ (such as "~") may need to be prefixed by
234
+ a "\\" character.
235
+
236
+ .TP
237
+ .B \-\-small
238
+ Operate in small memory mode for input alignment files in
239
+ Pfam format. If not used, each alignment is stored in memory so the
240
+ required memory will be roughly the size of the largest alignment
241
+ in the input file. With
242
+ .BR \-\-small ,
243
+ input alignments are not stored in memory.
244
+ This option only works in combination with
245
+ .B \-\-informat pfam
246
+ and output format
247
+ .I pfam
248
+ or
249
+ .IR afa .
250
+
251
+
252
+
253
+ .SH SEE ALSO
254
+
255
+ .nf
256
+ http://bioeasel.org/
257
+ .fi
258
+
259
+ .SH COPYRIGHT
260
+
261
+ .nf
262
+ Copyright (C) 2023 Howard Hughes Medical Institute.
263
+ Freely distributed under the BSD open source license.
264
+ .fi
265
+
266
+ .SH AUTHOR
267
+
268
+ .nf
269
+ http://eddylab.org
270
+ .fi
271
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-selectn.1 ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-selectn" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-selectn \- select random subset of lines from file
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-selectn
8
+ [\fIoptions\fR]
9
+ .I nlines
10
+ .I filename
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ .B esl\-selectn
17
+ selects
18
+ .I nlines
19
+ lines at random from file
20
+ .I filename
21
+ and outputs them on
22
+ .I stdout.
23
+
24
+ .PP
25
+ If
26
+ .I filename
27
+ is \- (a single dash),
28
+ input is read from stdin.
29
+
30
+
31
+ .PP
32
+ Uses an efficient reservoir sampling algorithm that only requires only a single pass through
33
+ .I filename,
34
+ and memory storage proportional to
35
+ .I nlines
36
+ (and importantly, not to the size of the file
37
+ .I filename
38
+ itself).
39
+ .B esl\-selectn
40
+ can therefore be used to create large scale statistical sampling
41
+ experiments, especially in combination with other Easel
42
+ miniapplications.
43
+
44
+
45
+ .SH OPTIONS
46
+
47
+ .TP
48
+ .B \-h
49
+ Print brief help; includes version number and summary of
50
+ all options, including expert options.
51
+
52
+
53
+ .TP
54
+ .BI \-\-seed " <d>"
55
+ Set the random number seed to
56
+ .I <d>,
57
+ an integer >= 0.
58
+ The default is 0, which means to use a randomly selected seed.
59
+ A seed > 0 results
60
+ in reproducible identical samples from different runs of the same
61
+ command.
62
+
63
+
64
+ .SH SEE ALSO
65
+
66
+ .nf
67
+ http://bioeasel.org/
68
+ .fi
69
+
70
+ .SH COPYRIGHT
71
+
72
+ .nf
73
+ Copyright (C) 2023 Howard Hughes Medical Institute.
74
+ Freely distributed under the BSD open source license.
75
+ .fi
76
+
77
+ .SH AUTHOR
78
+
79
+ .nf
80
+ http://eddylab.org
81
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-seqstat.1 ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-seqstat" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-seqstat \- summarize contents of a sequence file
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-seqstat
8
+ [\fIoptions\fR]
9
+ .I seqfile
10
+
11
+ .SH DESCRIPTION
12
+
13
+ .PP
14
+ .B esl\-seqstat
15
+ summarizes the contents of the
16
+ .IR seqfile .
17
+ It prints the format, alphabet type, number of sequences, total number
18
+ of residues, and the mean, smallest, and largest sequence length.
19
+
20
+ .PP
21
+ If
22
+ .I seqfile
23
+ is \- (a single dash),
24
+ sequence input is read from stdin.
25
+
26
+
27
+
28
+
29
+ .SH OPTIONS
30
+
31
+ .TP
32
+ .B \-h
33
+ Print brief help; includes version number and summary of
34
+ all options, including expert options.
35
+
36
+ .TP
37
+ .B \-a
38
+ Additionally show a summary statistic line showing the name, length,
39
+ and description of each individual sequence. Each of these lines is
40
+ prefixed by an = character, in order to allow these lines to be easily
41
+ grepped out of the output.
42
+
43
+ .TP
44
+ .B \-c
45
+ Additionally print the residue composition of the sequence file.
46
+
47
+
48
+
49
+ .SH EXPERT OPTIONS
50
+
51
+ .TP
52
+ .BI \-\-informat " <s>"
53
+ Assert that input
54
+ .I seqfile
55
+ is in format
56
+ .IR <s> ,
57
+ bypassing format autodetection.
58
+ Common choices for
59
+ .I <s>
60
+ include:
61
+ .BR fasta ,
62
+ .BR embl ,
63
+ .BR genbank.
64
+ Alignment formats also work;
65
+ common choices include:
66
+ .BR stockholm ,
67
+ .BR a2m ,
68
+ .BR afa ,
69
+ .BR psiblast ,
70
+ .BR clustal ,
71
+ .BR phylip .
72
+ For more information, and for codes for some less common formats,
73
+ see main documentation.
74
+ The string
75
+ .I <s>
76
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
77
+
78
+
79
+ .TP
80
+ .B \-\-amino
81
+ Assert that the
82
+ .I seqfile
83
+ contains protein sequences.
84
+
85
+ .TP
86
+ .B \-\-dna
87
+ Assert that the
88
+ .I seqfile
89
+ contains DNA sequences.
90
+
91
+ .TP
92
+ .B \-\-rna
93
+ Assert that the
94
+ .I seqfile
95
+ contains RNA sequences.
96
+
97
+
98
+
99
+ .SH SEE ALSO
100
+
101
+ .nf
102
+ http://bioeasel.org/
103
+ .fi
104
+
105
+ .SH COPYRIGHT
106
+
107
+ .nf
108
+ Copyright (C) 2023 Howard Hughes Medical Institute.
109
+ Freely distributed under the BSD open source license.
110
+ .fi
111
+
112
+ .SH AUTHOR
113
+
114
+ .nf
115
+ http://eddylab.org
116
+ .fi
117
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-sfetch.1 ADDED
@@ -0,0 +1,278 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-sfetch" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-sfetch \- retrieve (sub-)sequences from a sequence file
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .nf
9
+ \fBesl\-sfetch\fR [\fIoptions\fR] \fIseqfile key\fR
10
+ (retrieve a single sequence by key)
11
+
12
+ \fBesl\-sfetch \-c \fR\fIfrom\fR\fB..\fR\fIto \fR[\fIoptions\fR]\fI seqfile key\fR
13
+ (retrieve a single subsequence by key and coords)
14
+
15
+ \fBesl\-sfetch \-f \fR[\fIoptions\fR] \fIseqfile keyfile\fR
16
+ (retrieve multiple sequences using a file of keys)
17
+
18
+ \fBesl\-sfetch \-Cf \fR[\fIoptions\fR] \fIseqfile subseq\-coord\-file\fR
19
+ (retrieve multiple subsequences using file of keys and coords)
20
+
21
+ \fBesl\-sfetch \-\-index\fR\fI msafile\fR
22
+ (index a sequence file for retrievals)
23
+ .fi
24
+
25
+
26
+ .SH DESCRIPTION
27
+
28
+ .PP
29
+ .B esl\-sfetch
30
+ retrieves one or more sequences or subsequences from
31
+ .IR seqfile .
32
+
33
+ .PP
34
+ The
35
+ .I seqfile
36
+ must be indexed using
37
+ \fBesl\-sfetch \-\-index\fR\fI seqfile\fR.
38
+ This creates an SSI index file
39
+ .IR seqfile .ssi.
40
+
41
+ .PP
42
+ To retrieve a single complete sequence, do
43
+ \fBesl\-sfetch\fR\fI seqfile key\fR,
44
+ where
45
+ .I key
46
+ is the name or accession of the desired sequence.
47
+
48
+ .PP
49
+ To retrieve a single subsequence rather than a complete
50
+ sequence, use the
51
+ \fB\-c \fR\fIstart\fR..\fIend\fR
52
+ option to provide
53
+ .I start
54
+ and
55
+ .I end
56
+ coordinates. The
57
+ .I start
58
+ and
59
+ .I end
60
+ coordinates are provided as one string, separated
61
+ by any nonnumeric, nonwhitespace character or characters you like;
62
+ see the
63
+ .B \-c
64
+ option below for more details.
65
+
66
+ .PP
67
+ To retrieve more than one complete sequence at once, you may use the
68
+ .B \-f
69
+ option, and the second command line argument will specify the
70
+ name of a
71
+ .I keyfile
72
+ that contains a list of names or accessions, one per line; the first
73
+ whitespace-delimited field on each line of this file is parsed as the
74
+ name/accession.
75
+
76
+ .PP
77
+ To retrieve more than one subsequence at once, use the
78
+ .B \-C
79
+ option in addition to
80
+ .BR \-f ,
81
+ and now the second argument is parsed as a list of subsequence
82
+ coordinate lines. See the
83
+ .B \-C
84
+ option below for more details, including the format of these lines.
85
+
86
+
87
+ .PP
88
+ In DNA/RNA files, you may extract (sub-)sequences in reverse complement
89
+ orientation in two different ways: either by providing a
90
+ .I from
91
+ coordinate that is greater than
92
+ .IR to ,
93
+ or by providing the
94
+ .I \-r
95
+ option.
96
+
97
+ .PP
98
+ When the
99
+ .B \-f
100
+ option is used to do multiple (sub-)sequence retrieval, the file
101
+ argument may be \- (a single dash), in which case the list of
102
+ names/accessions (or subsequence coordinate lines) is read from
103
+ standard input. However, because a standard input stream can't be SSI indexed,
104
+ (sub-)sequence retrieval from stdin may be slow.
105
+
106
+
107
+ .SH OPTIONS
108
+
109
+ .TP
110
+ .B \-h
111
+ Print brief help; includes version number and summary of
112
+ all options, including expert options.
113
+
114
+ .TP
115
+ .BI \-c " coords"
116
+ Retrieve a subsequence with start and end coordinates specified by the
117
+ .I coords
118
+ string. This string consists of start
119
+ and end coordinates separated
120
+ by any nonnumeric, nonwhitespace character or characters you like;
121
+ for example,
122
+ \fB\-c 23..100\fR,
123
+ \fB\-c 23/100\fR, or
124
+ \fB\-c 23\-100\fR
125
+ all work. To retrieve a suffix of a subsequence, you
126
+ can omit the
127
+ .I end
128
+ ; for example,
129
+ .B \-c 23:
130
+ would work.
131
+ To specify reverse complement (for DNA/RNA sequence),
132
+ you can specify
133
+ .I from
134
+ greater than
135
+ .IR to ;
136
+ for example,
137
+ .B \-c 100..23
138
+ retrieves the reverse complement strand from 100 to 23.
139
+
140
+ .TP
141
+ .B \-f
142
+ Interpret the second argument as a
143
+ .I keyfile
144
+ instead of as just one
145
+ .I key.
146
+ The first whitespace-limited field on each line of
147
+ .I keyfile
148
+ is interpreted as a name or accession to be fetched.
149
+ This option doesn't work with the
150
+ .B \-\-index
151
+ option. Any other fields on a line after the first one are
152
+ ignored. Blank lines and lines beginning with # are ignored.
153
+
154
+ .TP
155
+ .BI \-o " <f>"
156
+ Output retrieved sequences to a file
157
+ .I <f>
158
+ instead of to stdout.
159
+
160
+
161
+ .TP
162
+ .BI \-n " <s>"
163
+ Rename the retrieved (sub-)sequence
164
+ .IR <s> .
165
+ Incompatible with
166
+ .BR \-f .
167
+
168
+ .TP
169
+ .B \-r
170
+ Reverse complement the retrieved (sub-)sequence. Only accepted for
171
+ DNA/RNA sequences.
172
+
173
+ .TP
174
+ .B \-C
175
+ Multiple subsequence retrieval mode, with
176
+ .B \-f
177
+ option (required). Specifies that the second command line argument
178
+ is to be parsed as a subsequence coordinate file, consisting of
179
+ lines containing four whitespace-delimited fields:
180
+ .IR new_name ,
181
+ .IR from ,
182
+ .IR to ,
183
+ .IR name/accession .
184
+ For each such line, sequence
185
+ .I name/accession
186
+ is found, a subsequence
187
+ \fIfrom\fR..\fIto\fR is extracted,
188
+ and the subsequence is renamed
189
+ .I new_name
190
+ before being output.
191
+ Any other fields after the first four are ignored. Blank lines
192
+ and lines beginning with # are ignored.
193
+
194
+
195
+ .TP
196
+ .B \-O
197
+ Output retrieved sequence to a file named
198
+ .IR key .
199
+ This is a convenience for saving some typing:
200
+ instead of
201
+ .nf
202
+ \fB% esl\-sfetch \-o SRPA_HUMAN swissprot SRPA_HUMAN
203
+ .fi
204
+ you can just type
205
+ .nf
206
+ \fB% esl\-sfetch \-O swissprot SRPA_HUMAN
207
+ .fi
208
+ The
209
+ .B \-O
210
+ option only works if you're retrieving a
211
+ single alignment; it is incompatible with
212
+ .BR \-f .
213
+
214
+ .TP
215
+ .B \-\-index
216
+ Instead of retrieving a
217
+ .I key,
218
+ the special command
219
+ .B esl\-sfetch \-\-index
220
+ .I seqfile
221
+ produces an SSI index of the names and accessions
222
+ of the alignments in
223
+ the
224
+ .I seqfile.
225
+ Indexing should be done once on the
226
+ .I seqfile
227
+ to prepare it for all future fetches.
228
+
229
+
230
+ .SH EXPERT OPTIONS
231
+
232
+ .TP
233
+ .BI \-\-informat " <s>"
234
+ Assert that
235
+ .I seqfile
236
+ is in format
237
+ .IR <s> ,
238
+ bypassing format autodetection.
239
+ Common choices for
240
+ .I <s>
241
+ include:
242
+ .BR fasta ,
243
+ .BR embl ,
244
+ .BR genbank.
245
+ Alignment formats also work;
246
+ common choices include:
247
+ .BR stockholm ,
248
+ .BR a2m ,
249
+ .BR afa ,
250
+ .BR psiblast ,
251
+ .BR clustal ,
252
+ .BR phylip .
253
+ For more information, and for codes for some less common formats,
254
+ see main documentation.
255
+ The string
256
+ .I <s>
257
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
258
+
259
+
260
+
261
+ .SH SEE ALSO
262
+
263
+ .nf
264
+ http://bioeasel.org/
265
+ .fi
266
+
267
+ .SH COPYRIGHT
268
+
269
+ .nf
270
+ Copyright (C) 2023 Howard Hughes Medical Institute.
271
+ Freely distributed under the BSD open source license.
272
+ .fi
273
+
274
+ .SH AUTHOR
275
+
276
+ .nf
277
+ http://eddylab.org
278
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-shuffle.1 ADDED
@@ -0,0 +1,234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-shuffle" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-shuffle \- shuffling sequences or generating random ones
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .nf
9
+ \fBesl\-shuffle \fR[\fIoptions\fR] \fIseqfile\fR
10
+ (shuffle sequences)
11
+
12
+ \fBesl\-shuffle \-G \fR[\fIoptions\fR]
13
+ (generate random sequences)
14
+
15
+ \fBesl\-shuffle \-A \fR[\fIoptions\fR] \fImsafile\fR
16
+ (shuffle multiple sequence alignments)
17
+ .fi
18
+
19
+ .SH DESCRIPTION
20
+
21
+ .PP
22
+ .B esl\-shuffle
23
+ has three different modes of operation.
24
+
25
+ .PP
26
+ By default,
27
+ .B esl\-shuffle
28
+ reads individual sequences from
29
+ .IR seqfile ,
30
+ shuffles them, and outputs the shuffled sequences.
31
+ By default, shuffling is done by preserving monoresidue
32
+ composition; other options are listed below.
33
+
34
+ .PP
35
+ With the
36
+ .B \-G
37
+ option,
38
+ .B esl\-shuffle
39
+ generates some number of random sequences of some length in
40
+ some alphabet. The
41
+ .B \-N
42
+ option controls the number (default is 1), the
43
+ .B \-L
44
+ option controls the length (default is 0),
45
+ and the
46
+ .BR \-\-amino ,
47
+ .BR \-\-dna ,
48
+ and
49
+ .B \-\-rna
50
+ options control the alphabet.
51
+
52
+ .PP
53
+ With the
54
+ .B \-A
55
+ option,
56
+ .B esl\-shuffle
57
+ reads one or more multiple alignments from
58
+ .I msafile
59
+ shuffles them, and outputs the shuffled alignments.
60
+ By default, the alignment is shuffled columnwise
61
+ (i.e. column order is permuted).
62
+ Other options are listed below.
63
+
64
+
65
+ .SH GENERAL OPTIONS
66
+
67
+ .TP
68
+ .B \-h
69
+ Print brief help; includes version number and summary of
70
+ all options, including expert options.
71
+
72
+ .TP
73
+ .BI \-o " <f>"
74
+ Direct output to a file named
75
+ .I <f>
76
+ rather than to stdout.
77
+
78
+ .TP
79
+ .BI \-N " <n>"
80
+ Generate
81
+ .I <n>
82
+ sequences, or
83
+ .I <n>
84
+ perform independent shuffles per input sequence or alignment.
85
+
86
+ .TP
87
+ .BI \-L " <n>"
88
+ Generate sequences of length
89
+ .IR <n> ,
90
+ or truncate output shuffled sequences or alignments to a length of
91
+ .IR <n> .
92
+
93
+
94
+
95
+
96
+ .SH SEQUENCE SHUFFLING OPTIONS
97
+
98
+ These options only apply in default (sequence shuffling) mode. They
99
+ are mutually exclusive.
100
+
101
+ .TP
102
+ .B \-m
103
+ Monoresidue shuffling (the default): preserve monoresidue composition exactly.
104
+ Uses the Fisher/Yates algorithm (aka Knuth's "Algorithm P").
105
+
106
+ .TP
107
+ .B \-d
108
+ Diresidue shuffling; preserve diresidue composition exactly. Uses the
109
+ Altschul/Erickson algorithm (Altschul and Erickson, 1986). A more
110
+ efficient algorithm (Kandel and Winkler 1996) is known but has not yet
111
+ been implemented in Easel.
112
+
113
+ .TP
114
+ .B \-0
115
+ 0th order Markov generation: generate a sequence of the same length
116
+ with the same 0th order Markov frequencies. Such a sequence will
117
+ approximately preserve the monoresidue composition of the input.
118
+
119
+ .TP
120
+ .B \-1
121
+ 1st order Markov generation: generate a sequence of the same length
122
+ with the same 1st order Markov frequencies. Such a sequence will
123
+ approximately preserve the diresidue composition of the input.
124
+
125
+ .TP
126
+ .B \-r
127
+ Reversal; reverse each input.
128
+
129
+ .TP
130
+ .BI \-w " <n>"
131
+ Regionally shuffle the input in nonoverlapping windows of size
132
+ .I <n>
133
+ residues, preserving exact monoresidue composition in each window.
134
+
135
+
136
+
137
+ .SH MULTIPLE ALIGNMENT SHUFFLING OPTIONS
138
+
139
+ .TP
140
+ .B \-b
141
+ Sample columns with replacement, in order to generate a
142
+ bootstrap-resampled alignment dataset.
143
+
144
+ .TP
145
+ .B \-v
146
+ Shuffle residues with each column independently; i.e., permute residue
147
+ order in each column ("vertical" shuffling).
148
+
149
+
150
+ .SH SEQUENCE GENERATION OPTIONS
151
+
152
+ One of these must be selected, if
153
+ .B \-G
154
+ is used.
155
+
156
+ .TP
157
+ .B \-\-amino
158
+ Generate amino acid sequences.
159
+
160
+ .TP
161
+ .B \-\-dna
162
+ Generate DNA sequences.
163
+
164
+ .TP
165
+ .B \-\-rna
166
+ Generate RNA sequences.
167
+
168
+
169
+
170
+ .SH EXPERT OPTIONS
171
+
172
+ .TP
173
+ .BI \-\-informat " <s>"
174
+ Assert that input
175
+ .I seqfile
176
+ is in format
177
+ .IR <s> ,
178
+ bypassing format autodetection.
179
+ Common choices for
180
+ .I <s>
181
+ include:
182
+ .BR fasta ,
183
+ .BR embl ,
184
+ .BR genbank.
185
+ Alignment formats also work;
186
+ common choices include:
187
+ .BR stockholm ,
188
+ .BR a2m ,
189
+ .BR afa ,
190
+ .BR psiblast ,
191
+ .BR clustal ,
192
+ .BR phylip .
193
+ For more information, and for codes for some less common formats,
194
+ see main documentation.
195
+ The string
196
+ .I <s>
197
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
198
+
199
+
200
+ .TP
201
+ .BI \-\-seed " <n>"
202
+ Specify the seed for the random number generator, where the seed
203
+ .I <n>
204
+ is an integer greater than zero. This can be used to make the results of
205
+ .B esl\-shuffle
206
+ reproducible.
207
+ If
208
+ .I <n>
209
+ is 0, the random number generator is seeded arbitrarily and
210
+ stochastic simulations will vary from run to run.
211
+ Arbitrary seeding (0) is the default.
212
+
213
+
214
+
215
+
216
+ .SH SEE ALSO
217
+
218
+ .nf
219
+ http://bioeasel.org/
220
+ .fi
221
+
222
+ .SH COPYRIGHT
223
+
224
+ .nf
225
+ Copyright (C) 2023 Howard Hughes Medical Institute.
226
+ Freely distributed under the BSD open source license.
227
+ .fi
228
+
229
+ .SH AUTHOR
230
+
231
+ .nf
232
+ http://eddylab.org
233
+ .fi
234
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-ssdraw.1 ADDED
@@ -0,0 +1,882 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-ssdraw" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-ssdraw \- create postscript secondary structure diagrams
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-ssdraw
8
+ [\fIoptions\fR]
9
+ .I msafile
10
+ .I postscript_template
11
+ .I postscript_output_file
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ .B esl\-ssdraw
17
+ reads an existing template consensus secondary structure diagram from
18
+ .I postscript_template
19
+ and creates new postscript diagrams including the template structure
20
+ but with positions colored differently based on alignment statistics
21
+ such as frequency of gaps per position, average posterior probability
22
+ per position or information content per position. Additionally, all
23
+ or some of the aligned sequences can be drawn separately, with
24
+ nucleotides or posterior probabilities mapped onto the corresponding
25
+ positions of the consensus structure.
26
+
27
+ .PP
28
+ The alignment must be in Stockholm format with per-column reference
29
+ annotation (#=GC RF). The sequences in the alignment must be RNA or
30
+ DNA sequences. The
31
+ .I postscript_template
32
+ file must contain one page that includes <rflen> consensus nucleotides
33
+ (positions), where <rflen> is the number of nongap characters in the
34
+ reference (RF) annotation of the first alignment in
35
+ .IR msafile .
36
+ The specific format required in the
37
+ .I postscript_template
38
+ is described below in the INPUT section.
39
+ Postscript diagrams will only be created for the first alignment in
40
+ .IR msafile .
41
+
42
+
43
+ .SH OUTPUT
44
+
45
+ .PP
46
+ By default (if run with zero command line options),
47
+ .B esl\-ssdraw
48
+ will create a six or seven page
49
+ .IR postscript_output_file ,
50
+ with each page displaying a different alignment statistic. These pages display
51
+ the alignment consensus sequence, information content per position,
52
+ mutual information per position, frequency of inserts per position,
53
+ average length of inserts per position, frequency of
54
+ deletions (gaps) per position, and average posterior probability per
55
+ position (if posterior probabilites exist in the alignment)
56
+ If
57
+ .B \-d
58
+ is enabled, all of these pages plus additional ones, such as
59
+ individual sequences (see discussion of
60
+ .B \-\-indi
61
+ below) will be drawn.
62
+ These pages can be selected to be drawn individually by using
63
+ the command line options
64
+ .BR \-\-cons ,
65
+ .BR \-\-info ,
66
+ .BR \-\-mutinfo ,
67
+ .BR \-\-ifreq ,
68
+ .BR \-\-iavglen ,
69
+ .BR \-\-dall ,
70
+ and
71
+ .BR \-\-prob .
72
+ The calculation of the statistics for each of these options is
73
+ discussed below in the description for each option.
74
+ Importantly, only so-called 'consensus' positions of the alignment
75
+ will be drawn. A consensus position is one that is a nongap nucleotide in
76
+ the 'reference' annotation of the Stockholm alignment (#=GC RF) read
77
+ from
78
+ .IR msafile .
79
+
80
+ .PP
81
+ By default, a consensus sequence for the input alignment will be
82
+ calculated and displayed on the alignment statistic diagrams. The
83
+ consensus sequence is defined as the most common nucleotide at each
84
+ consensus position of the alignment. The consensus sequence will not
85
+ be displayed if the
86
+ .B \-\-no\-cnt
87
+ option is used. The
88
+ .BR \-\-cthresh ,
89
+ .BR \-\-cambig ,
90
+ and
91
+ .B \-\-athresh
92
+ options affect the definition of the consensus sequence as
93
+ explained below in the descriptions for those options.
94
+
95
+ .PP
96
+ If the
97
+ .BI \-\-tabfile " <f>"
98
+ option is used, a tab-delimited text file
99
+ .I <f>
100
+ will be created that includes per-position lists of the numerical
101
+ values for each of the calculated statistics that were drawn to
102
+ .IR postscript_output_file .
103
+ Comment lines in
104
+ .I <f>
105
+ are prefixed with a '#' character and explain the meaning of
106
+ each of the tab-delimited columns and how each of the statistics was
107
+ calculated.
108
+
109
+ If
110
+ .B \-\-indi
111
+ is used,
112
+ .B esl\-ssdraw
113
+ will create diagrams showing each sequence in the alignment on a
114
+ separate page, with aligned nucleotides in their corresponding
115
+ position in the structure diagram. By default, basepaired nucleotides
116
+ will be colored based on their basepair type: either Watson-Crick
117
+ (A:U, U:A, C:G, or G:C), G:U or U:G, or non-canonical (the other ten
118
+ possible basepairs). This coloring can be turned off with the
119
+ .B \-\-no\-bp
120
+ option.
121
+ Also by default, nucleotides that differ from the most common
122
+ nucleotide at each aligned consensus position will be outlined. If
123
+ the most common nucleotide occurs in more than 75% of sequences that
124
+ do not have a gap at that position, the outline will be
125
+ bold. Outlining can be turned off with the
126
+ .B \-\-no\-ol
127
+ option.
128
+
129
+ .PP
130
+ With
131
+ .BR \-\-indi ,
132
+ if the alignment
133
+ contains posterior probability annotation (#=GR PP), the
134
+ .I postscript_output_file
135
+ will contain an additional page for each sequence drawn with positions
136
+ colored by the posterior probability of each aligned nucleotide.
137
+ No posterior probability pages will be drawn if the
138
+ .B \-\-no\-pp
139
+ option is used.
140
+
141
+ .PP
142
+ .B esl\-ssdraw
143
+ can also be used to draw 'mask' diagrams which color positions of the
144
+ structure one of two colors depending on if they are included or
145
+ excluded by a mask. This is enabled with the
146
+ .BI \-\-mask\-col " <f>"
147
+ option.
148
+ .I <f>
149
+ must contain a single line of <rflen> characters, where <rflen> is the
150
+ the number of nongap RF characters in the alignment. The line must
151
+ contain only '0' and '1' characters. A '0' at position <x> of the
152
+ string indicates position <x> is excluded from the mask, and a '1'
153
+ indicates position <x> is included by the mask.
154
+ A page comparing the overlap of the
155
+ .I <f>
156
+ mask from
157
+ .B \-\-mask\-col
158
+ and another mask in
159
+ .I <f2>
160
+ will be created if the
161
+ .BI \-\-mask\-diff " <f2>"
162
+ option is used.
163
+
164
+ .PP
165
+ If the
166
+ .BI \-\-mask " <f>"
167
+ option is used, positions excluded by the mask in
168
+ .I <f>
169
+ will be drawn differently (as open circles by default) than positions
170
+ included by the mask. The style of the masked positions can be
171
+ modified with the
172
+ .BR \-\-mask\-u ,
173
+ .BR \-\-mask\-x ,
174
+ and
175
+ .B \-\-mask\-a
176
+ options.
177
+
178
+ .PP
179
+ Finally, two different types of input files can be used to customize
180
+ output diagrams using the
181
+ .B \-\-dfile
182
+ and
183
+ .B \-\-efile
184
+ options, as described below.
185
+
186
+
187
+
188
+ .SH INPUT
189
+
190
+ .PP
191
+ The
192
+ .I postscript_template_file
193
+ is a postscript file that must be in a very specific format in order for
194
+ .B esl\-ssdraw
195
+ to work. The specifics of the format, described below, are likely to change in future
196
+ versions of
197
+ .BR esl\-ssdraw .
198
+ The
199
+ .I postscript_output_file
200
+ files generated by
201
+ .B esl\-ssdraw
202
+ will not be valid
203
+ .I postscript_template_file
204
+ format (i.e. an output file from
205
+ .B esl\-ssdraw
206
+ cannot be used as an
207
+ .I postscript_template_file
208
+ in a subsequent run of the program).
209
+
210
+ .PP
211
+ An example
212
+ .I postscript_template_file
213
+ ('trna\-ssdraw.ps') is included with the Easel distribution in
214
+ the 'testsuite/' subdirectory of the top-level 'easel' directory.
215
+
216
+ .PP
217
+ The
218
+ .I postscript_template_file
219
+ is a valid postscript file. It includes postscript commands for
220
+ drawing a secondary structure. The commands specify x and y
221
+ coordinates for placing each nucleotide on the page. The
222
+ .I postscript_template_file
223
+ might also contain commands for drawing lines connecting basepaired
224
+ positions and tick marks indicating every tenth position, though these
225
+ are not required, as explained below.
226
+
227
+ .PP
228
+ If you are unfamiliar with the postscript language, it may be useful
229
+ for you to know that a postscript page is, by default, 612 points wide
230
+ and 792 points tall.
231
+ The (0,0) coordinate of a postscript
232
+ file is at the bottom left corner of the page, (0,792) is the top left,
233
+ (612,0) is the bottom right, and (612,792) is the top right.
234
+ .B esl\-ssdraw
235
+ uses 8 point by 8 point cells for drawing positions of the consensus
236
+ secondary structure. The 'scale' section of the
237
+ .I postscript_template_file
238
+ allows for different 'zoom levels', as described below.
239
+ Also, it is important to know that postscript lines beginning with '%'
240
+ are considered comments and do not include postscript commands.
241
+
242
+ .PP
243
+ An
244
+ .B esl\-ssdraw
245
+ .I postscript_template_file
246
+ contains n >= 1 pages, each specifying a consensus secondary structure
247
+ diagram. Each page is delimited by a 'showpage' line in an 'ignore'
248
+ section (as described below).
249
+ .B esl\-ssdraw
250
+ will read all pages of the
251
+ .I postscript_template_file
252
+ and then choose the appropriate one that corresponds with the
253
+ alignment in
254
+ .I msafile
255
+ based on the consensus (nongap RF) length of the alignment.
256
+ For an alignment of consensus length <rflen>, the first
257
+ page of
258
+ .I postscript_template_file
259
+ that has a structure diagram with consensus length <rflen> will be used
260
+ as the template structure for the alignment.
261
+
262
+ .PP
263
+ Each page of
264
+ .I postscript_template_file
265
+ contains blocks of text organized into seven different possible
266
+ sections. Each section must begin with a single line '% begin
267
+ <sectionname>' and end with a single line '% end <sectionname>' and
268
+ have n >= 1 lines in between. On the begin and end lines, there must
269
+ be at least one space between the '%' and the 'begin'
270
+ or 'end'. <sectionname> must be one of the
271
+ following: 'modelname', 'legend', 'scale', 'regurgitate', 'ignore', 'text
272
+ positiontext', 'text nucleotides', 'lines positionticks', or 'lines
273
+ bpconnects'. The n >=1 lines in between the begin and end lines of
274
+ each section must be in a specific format that differs for each
275
+ section as described below.
276
+
277
+ .PP
278
+ Importantly, each page must end with an 'ignore' section that includes
279
+ a single line 'showpage' between the begin and end lines. This
280
+ lets
281
+ .B esl\-ssdraw
282
+ know that a page has ended and another might follow.
283
+
284
+ .PP
285
+ Each page of a
286
+ .I postscript_template_file
287
+ must include a single 'modelname' section.
288
+ This section must include exactly one line in between its
289
+ begin and end lines. This line must begin with a '%' character
290
+ followed by a single space. The remainder of the line will be parsed
291
+ as the model name and will appear on each page of
292
+ .B postscript_output_file
293
+ in the header section. If the name is more than 16 characters, it will
294
+ be truncated in the output.
295
+
296
+ .PP
297
+ Each page of a
298
+ .I postscript_template_file
299
+ must include a single 'legend' section. This section must include
300
+ exactly one line in between its begin and end lines. This line must be
301
+ formatted as '% <d1> <f1> <f2> <d2> <f3>', where <d1> is an integer
302
+ specifying the consensus position with relation to which the legend
303
+ will be placed; <f1> and <f2> specify the x and y axis offsets for the
304
+ top left corner of the legend relative to the x and y position of
305
+ consensus position <d1>; <d2> specifies the size of a cell in the
306
+ legend and <f3> specifies how many extra points should be between the
307
+ right hand edge of the legend and the end of the page. the offset of
308
+ the right hand end of the legend . For example, the line '% 34
309
+ \-40. \-30. 12 0.' specfies that the legend be placed 40 points to the left
310
+ and 30 points below the 34th consensus position, that cells
311
+ appearing in the legend be squares of size 12 points by 12 points, and
312
+ that the right hand side of the legend flush against the right hand
313
+ edge of the printable page.
314
+
315
+ .PP
316
+ Each page of a
317
+ .I postscript_template_file
318
+ must include a single 'scale' section. This section must include
319
+ exactly one line in between its begin and end lines. This line must be
320
+ formatted as '<f1> <f2> scale', where <f1> and <f2> are both positive
321
+ real numbers that are identical, for example '1.7 1.7 scale' is valid,
322
+ but '1.7 2.7 scale' is not. This line is a valid postscript command
323
+ which specifies the scale or zoom level on the pages in the output. If
324
+ <f1> and <f2> are '1.0' the default scale is used for which the total
325
+ size of the page is 612 points wide and 792 points tall. A scale of
326
+ 2.0 will reduce this to 306 points wide by 396 points tall. A scale of
327
+ 0.5 will increase it to 1224 points wide by 1584 points tall. A single
328
+ cell corresponding to one position of the secondary structure is 8
329
+ points by 8 points. For larger RNAs, a scale of less than 1.0 is
330
+ appropriate (for example, SSU rRNA models (about 1500 nt) use a scale
331
+ of about 0.6), and for smaller RNAs, a scale of more than 1.0 might be
332
+ desirable (tRNA (about 70 nt) uses a scale of 1.7). The best way to
333
+ determine the exact scale to use is trial and error.
334
+
335
+ .PP
336
+ Each page of a
337
+ .I postscript_template_file
338
+ can include n >= 0 'regurgitate' sections.
339
+ These sections can include any number of lines.
340
+ The text in this section will not be parsed by
341
+ .B esl\-ssdraw
342
+ but will be included in each page of
343
+ .I postscript_output_file.
344
+ The format of the lines in this section must therefore be valid
345
+ postscript commands. An example of content that might be in a
346
+ regurgitate section are commands to draw lines and text annotating the
347
+ anticodon on a tRNA secondary structure diagram.
348
+
349
+ .PP
350
+ Each page of a
351
+ .I postscript_template_file
352
+ must include at least 1 'ignore' section.
353
+ One of these sections must include a single line that
354
+ reads 'showpage'. This section should be placed at the end of each
355
+ page of the template file.
356
+ Other ignore sections can include any number of lines.
357
+ The text in these section will not be parsed by
358
+ .B esl\-ssdraw
359
+ nor will it be included in each page of
360
+ .IR postscript_output_file .
361
+ An ignore section can contain comments or postscript commands that
362
+ draw features of the
363
+ .I postscript_template_file
364
+ that are
365
+ unwanted in the
366
+ .IR postscript_output_file .
367
+
368
+ .PP
369
+ Each page of a
370
+ .I postscript_template_file
371
+ must include a single 'text nucleotides' section. This section must
372
+ include exactly <rflen> lines, indicating that the consensus secondary
373
+ structure has exactly <rflen> nucleotide positions. Each line must be of
374
+ the format '(<c>) <x> <y> moveto show' where <c> is a nucleotide (this
375
+ can be any character actually), and <x> and <y> are the coordinates
376
+ specifying the location of the nucleotide on the page, they should be
377
+ positive real numbers. The best way to determine what these
378
+ coordinates should be is manually by trial and error, by inspecting
379
+ the resulting structure as you add each nucleotide. Note that
380
+ .B esl\-ssdraw
381
+ will color an 8 point by 8 point cell for each position, so nucleotides
382
+ should be placed about 8 points apart from each other.
383
+
384
+ .PP
385
+ Each page of a
386
+ .I postscript_template_file
387
+ may or may not include a single 'text positiontext' section. This section
388
+ can include n >= 1 lines, each specifying text to be placed next to
389
+ specific positions of the structure, for example, to number them.
390
+ Each line must be of
391
+ the format '(<s>) <x> <y> moveto show' where <s> is a string of text
392
+ to place at coordinates (<x>,<y>) of the postscript page.
393
+ Currently, the best way to determine what these coordinates is
394
+ manually by trial
395
+ and error, by inspecting the resulting diagram as you add
396
+ each line.
397
+
398
+ .PP
399
+ Each page of a
400
+ .I postscript_template_file
401
+ may or may not include a single 'lines positionticks' section. This section
402
+ can include n >= 1 lines, each specifying the location of a tick mark
403
+ on the diagram. Each line must be of
404
+ the format '<x1> <y1> <x2> <y2> moveto show'. A tick mark (line of
405
+ width 2.0) will be drawn from point (<x1>,<y1>) to point (<x2>,<y2>)
406
+ on each page of
407
+ .I postscript_output_file.
408
+ Currently, the best way to determine what these coordinates should be
409
+ is manually by trial and error, by inspecting the resulting diagram as
410
+ you add each line.
411
+
412
+ .PP
413
+ Each page of a
414
+ .I postscript_template_file
415
+ may or may not include a single 'lines bpconnects' section. This section
416
+ must include <nbp> lines, where <nbp> is the number of basepairs in
417
+ the consensus structure of the input
418
+ .I msafile
419
+ annotated as #=GC SS_cons. Each line should connect two basepaired
420
+ positions in the consensus structure diagram.
421
+ Each line must be of
422
+ the format '<x1> <y1> <x2> <y2> moveto show'. A line
423
+ will be drawn from point (<x1>,<y1>) to point (<x2>,<y2>)
424
+ on each page of
425
+ .I postscript_output_file.
426
+ Currently, the best way to determine what these coordinates should be
427
+ is manually by trial and error, by inspecting the resulting diagram as
428
+ you add each line.
429
+
430
+
431
+
432
+ .SH REQUIRED MEMORY
433
+
434
+ .PP
435
+ The memory required by
436
+ .B esl\-ssdraw
437
+ will be equal to roughly the larger of 2 Mb and
438
+ the size of the first alignment in
439
+ .IR msafile .
440
+ If the
441
+ .B \-\-small
442
+ option is used, the memory required will be independent of the
443
+ alignment size. To use
444
+ .B \-\-small
445
+ the alignment must be in Pfam format, a non-interleaved (1 line/seq)
446
+ version of Stockholm format.
447
+
448
+ If the
449
+ .B \-\-indi
450
+ option is used,
451
+ the required memory may exceed the
452
+ size of the alignment by up to ten-fold, and the output
453
+ .B postscript_output_file
454
+ may be up to 50 times larger than the
455
+ .B msafile.
456
+
457
+ .SH OPTIONS
458
+
459
+ .TP
460
+ .B \-h
461
+ Print brief help; includes version number and summary of
462
+ all options, including expert options.
463
+
464
+ .TP
465
+ .B \-d
466
+ Draw the default set of alignment summary diagrams: consensus
467
+ sequence, information content, mutual information, insert frequency,
468
+ average insert length, deletion frequency, and average posterior
469
+ probability (if posterior probability annotation exists in the
470
+ alignment). These diagrams are also drawn by default (if zero command line
471
+ options are used), but using the
472
+ .B \-d
473
+ option allows the user to add additional pages, such as individual
474
+ aligned sequences with
475
+ .BR \-\-indi .
476
+
477
+ .TP
478
+ .BI \-\-mask " <f>"
479
+ Read the mask from file
480
+ .IR <f> ,
481
+ and draw positions differently in
482
+ .I postscript_output_file
483
+ depending on whether they are included or excluded by the mask.
484
+ .I <f>
485
+ must contain a single line of length <rflen> with only '0' and '1'
486
+ characters. <rflen> is the number of nongap characters in the
487
+ reference (#=GC RF) annotation of the first alignment in
488
+ .I msafile
489
+ A '0' at position <x> of the mask indicates position <x> is excluded
490
+ by the mask, and a '1' indicates that position <x> is included by the mask.
491
+
492
+ .TP
493
+ .B \-\-small
494
+ Operate in memory saving mode. Without
495
+ .BR \-\-indi ,
496
+ required RAM will be independent of the
497
+ size of the alignment in
498
+ .IR msafile .
499
+ With
500
+ .BR \-\-indi ,
501
+ the required RAM will be roughly ten times the size of the alignment
502
+ in
503
+ .IR msafile .
504
+ For
505
+ .B \-\-small
506
+ to work, the alignment must be in
507
+ Pfam Stockholm (non-interleaved 1 line/seq) format.
508
+
509
+ .TP
510
+ .B \-\-rf
511
+ Add a page to
512
+ .I postscript_output_file
513
+ showing the reference sequence from the #=GC RF annotation in
514
+ .I msafile.
515
+ By default, basepaired nucleotides will be colored based on what type of
516
+ basepair they are. To turn this off, use
517
+ .B \-\-no\-bp.
518
+ This page is drawn by default (if zero command-line options are used).
519
+
520
+ .TP
521
+ .B \-\-info
522
+ Add a page to
523
+ .I postscript_output_file
524
+ with consensus (nongap RF) positions colored based on their
525
+ information content from the alignment.
526
+ Information content is calculated as 2.0 \- H, where H = sum_x p_x
527
+ log_2 p_x for x in {A,C,G,U}.
528
+ This page is drawn by default (if zero command-line options are used).
529
+
530
+ .TP
531
+ .B \-\-mutinfo
532
+ Add a page to
533
+ .I postscript_output_file
534
+ with basepaired consensus (nongap RF) positions colored based on the
535
+ amount of mutual information they have in the alignment. Mutual
536
+ information is sum_{x,y} p_{x,y} log_2 ((p_x * p_y) / p_{x,y}, where x
537
+ and y are the four possible bases A,C,G,U. p_x is the fractions of
538
+ aligned sequences that have nucleotide x of in the left half (5' half) of
539
+ the basepair. p_y is the fraction of aligned sequences that have
540
+ nucleotide y in the position corresponding to the right half (3' half) of
541
+ the basepair. And p_{x,y} is the fraction of aligned sequences that
542
+ have basepair x:y. For all p_x, p_y and p{x,y} only sequences that
543
+ that have a nongap nucleotide at both the left and right half of the
544
+ basepair are counted.
545
+ This page is drawn by default (if zero command-line options are used).
546
+
547
+ .TP
548
+ .B \-\-ifreq
549
+ Add a page to
550
+ .I postscript_output_file
551
+ with each consensus (nongap RF) position colored based on the fraction of
552
+ sequences that span each position that have at least 1 inserted
553
+ nucleotide after the position.
554
+ A sequence s spans consensus position x that is actual alignment
555
+ position a if s has at least one nongap nucleotide aligned to a position
556
+ b <= a and at least one nongap nucleotide aligned to a consensus position
557
+ c >= a. This page is drawn by default (if zero command-line options
558
+ are used).
559
+
560
+ .TP
561
+ .B \-\-iavglen
562
+ Add a page to
563
+ .I postscript_output_file
564
+ with each consensus (nongap RF) position colored based on average
565
+ length of insertions that occur after it. The average is calculated as
566
+ the total number of inserted nucleotides after position x, divided by the
567
+ number of sequences that have at least 1 inserted nucleotide after
568
+ position x (so the minimum possible average insert length is 1.0).
569
+
570
+ .TP
571
+ .B \-\-dall
572
+ Add a page to
573
+ .I postscript_output_file
574
+ with each consensus (nongap RF) position colored based on the fraction of
575
+ sequences that have a gap (delete) at the position.
576
+ This page is drawn by default (if zero command-line options are used).
577
+
578
+ .TP
579
+ .B \-\-dint
580
+ Add a page to
581
+ .I postscript_output_file
582
+ with each consensus (nongap RF) position colored based on the fraction of
583
+ sequences that have an internal gap (delete) at the position. An
584
+ internal gap in a sequence is one that occurs after (5' of) the
585
+ sequence's first aligned nucleotide and after
586
+ (3' of) the sequence's final aligned nucleotide.
587
+ This page is drawn by default (if zero command-line options are used).
588
+
589
+ .TP
590
+ .B \-\-prob
591
+ Add a page to
592
+ .I postscript_output_file
593
+ with positions colored based on average posterior probability (PP). The alignment
594
+ must contain #=GR PP annotation for all sequences. PP annotation is
595
+ converted to numerical PP values as follows: '*' = 0.975, '9' =
596
+ 0.90, '8' = 0.80, '7' = 0.70, '6' = 0.60, '5' = 0.50, '4' = 0.40, '3'
597
+ = 0.30, '2' = 0.20, '1' = 0.10, '0' = 0.025.
598
+ This page is drawn by default (if zero command-line options are used).
599
+
600
+ .TP
601
+ .B \-\-span
602
+ Add a page to
603
+ .I postscript_output_file
604
+ with consensus (nongap RF) positions colored based on the
605
+ fraction of sequences that 'span' the position.
606
+ A sequence s spans consensus position x that is actual alignment
607
+ position a if s has at least one nongap nucleotide aligned to a position
608
+ b <= a and at least one nongap nucleotide aligned to a consensus position
609
+ c >= a. This page is drawn by default (if zero command-line options
610
+ are used).
611
+
612
+
613
+ .SH OPTIONS FOR DRAWING INDIVIDUAL ALIGNED SEQUENCES
614
+
615
+ .TP
616
+ .B \-\-indi
617
+ Add a page displaying the aligned nucleotides in their corresponding
618
+ consensus positions of the structure diagram for each aligned
619
+ sequence in the alignment.
620
+ By default, basepaired nucleotides will be colored based on what type of
621
+ basepair they are. To turn this off, use
622
+ .B \-\-no\-bp.
623
+ If posterior probability information (#=GR
624
+ PP) exists in the alignment, one additional page per sequence will be
625
+ drawn displaying the posterior probabilities.
626
+
627
+ .TP
628
+ .B \-f
629
+ With
630
+ .BR \-\-indi ,
631
+ force
632
+ .B esl\-ssdraw
633
+ to create a diagram, even if it is predicted to be large (> 100 Mb).
634
+ By default, if the predicted size exceeds 100 Mb,
635
+ .B esl\-ssdraw
636
+ will fail with a warning.
637
+
638
+
639
+ .SH OPTIONS FOR OMITTING PARTS OF THE DIAGRAMS
640
+
641
+ .TP
642
+ .B \-\-no\-leg
643
+ Omit the legend on all pages of
644
+ .IR postscript_output_file .
645
+
646
+ .TP
647
+ .B \-\-no\-head
648
+ Omit the header on all pages of
649
+ .IR postscript_output_file .
650
+
651
+ .TP
652
+ .B \-\-no\-foot
653
+ Omit the footer on all pages of
654
+ .IR postscript_output_file .
655
+
656
+
657
+
658
+ .SH OPTIONS FOR SIMPLE TWO-COLOR MASK DIAGRAMS
659
+
660
+ .TP
661
+ .B \-\-mask\-col
662
+ With
663
+ .BR \-\-mask ,
664
+ .I postscript_output_file
665
+ will contain exactly 1 page showing positions included by the mask as
666
+ black squares, and positions excluded as pink squares.
667
+
668
+ .TP
669
+ .BI \-\-mask\-diff " <f>"
670
+ With
671
+ .BI \-\-mask " <f2>"
672
+ and
673
+ .BR mask\-col ,
674
+ .I postscript_output_file
675
+ will contain one additional page comparing the mask from
676
+ .I <f>
677
+ and the mask from
678
+ .IR <f2> .
679
+ Positions will be colored based on whether they are included by one
680
+ mask and not the other, excluded by both masks, and included by both
681
+ masks.
682
+
683
+
684
+ .SH EXPERT OPTIONS FOR CONTROLLING INDIVIDUAL SEQUENCE DIAGRAMS
685
+
686
+ .TP
687
+ .B \-\-no\-pp
688
+ When used in combination with
689
+ .BR \-\-indi ,
690
+ do not draw posterior probability structure diagrams for each
691
+ sequence, even if the alignment has PP annotation.
692
+
693
+ .TP
694
+ .B \-\-no\-bp
695
+ Do not color basepaired nucleotides based on their basepair type.
696
+
697
+ .TP
698
+ .B \-\-no\-ol
699
+ When used in combination with
700
+ .BR \-\-indi ,
701
+ do not outline nucleotides that differ from the majority rule
702
+ consensus nucleotide given the alignment.
703
+
704
+ .TP
705
+ .B \-\-no\-ntpp
706
+ When used in combination with
707
+ .BR \-\-indi ,
708
+ do not draw nucleotides on the individual sequence posterior
709
+ probability diagrams.
710
+
711
+
712
+ .SH EXPERT OPTIONS RELATED TO CONSENSUS SEQUENCE DEFINITION
713
+
714
+ .TP
715
+ .B \-\-no\-cnt
716
+ Do not draw consensus nucleotides on alignment statistic diagrams (such as
717
+ information content diagrams). By default, the consensus nucleotide is
718
+ defined as the most frequent nucleotide in the alignment at the
719
+ corresponding position. Consensus nucleotides that occur in at least
720
+ .I <x>
721
+ fraction of the aligned sequences (that do not contain a gap at the
722
+ position) are capitalized. By default
723
+ .I <x>
724
+ is 0.75, but can be changed with the
725
+ .BI \-\-cthresh " <x>"
726
+ option.
727
+
728
+ .TP
729
+ .BI \-\-cthresh " <x>"
730
+ Specify the threshold for capitalizing consensus nucleotides defined by
731
+ the majority rule (i.e. when
732
+ .B \-\-cambig
733
+ is not enabled) as
734
+ .IR <x> .
735
+
736
+ .TP
737
+ .B \-\-cambig
738
+ Change how consensus nucleotides are calculated from majority rule to
739
+ the least ambiguous IUPAC nucleotide that represents at least
740
+ .I <x>
741
+ fraction of the nongap nucleotides at each consensus position.
742
+ By default
743
+ .I <x>
744
+ is 0.9, but can be changed with the
745
+ .BI \-\-athresh " <x>"
746
+ option.
747
+
748
+ .TP
749
+ .BI \-\-athresh " <x>"
750
+ With
751
+ .BR \-\-cambig ,
752
+ specify the threshold for defining consensus nucleotides
753
+ is the least ambiguous IUPAC nucleotide that represents at least
754
+ .I <x>
755
+ fraction of the nongap nucleotides at each position.
756
+
757
+
758
+ .SH EXPERT OPTIONS CONTROLLING STYLE OF MASKING POSITIONS
759
+
760
+ .TP
761
+ .B \-\-mask\-u
762
+ With
763
+ .BR \-\-mask ,
764
+ change the style of masked columns to squares.
765
+
766
+ .TP
767
+ .B \-\-mask\-x
768
+ With
769
+ .BR \-\-mask ,
770
+ change the style of masked columns to x's.
771
+
772
+ .TP
773
+ .B \-\-mask\-a
774
+ With
775
+ .B \-\-mask
776
+ and
777
+ .B \-\-mask\-u
778
+ or
779
+ .B \-\-mask\-x
780
+ draw the alternative style of square or 'x' masks.
781
+
782
+
783
+ .SH EXPERT OPTIONS RELATED TO INPUT FILES
784
+
785
+ .TP
786
+ .BI \-\-dfile " <f>"
787
+ Read the 'draw file'
788
+ .I <f>
789
+ which specifies numerical values for each consensus position in one or
790
+ more postscript pages. For each page, the draw file must include
791
+ <rflen>+3 lines (<rflen> is defined in the DESCRIPTION section). The first three lines are special. The following
792
+ <rflen> 'value lines' each must contain a single number, the numerical
793
+ value for the corresponding position. The first of the three special
794
+ lines defines the 'description' for the page. This should be text that
795
+ describes what the numerical values refer to for the page. The maximum
796
+ allowable length is roughly 50 characters (the exact maximum
797
+ length depends on the template file and the program will report an
798
+ informative error message upon execution if it is exceeded). The
799
+ second special line defines the 'legend header' line that which will
800
+ appear immediately above the legend. It has a maximum allowable length
801
+ of about 30 characters. The third special line per page must contain
802
+ exactly 7 numbers, which must be in increasing order, each separated
803
+ by a space.
804
+ These numbers
805
+ define the numerical ranges for the six different colors used to draw
806
+ the consensus positions on the page.
807
+ The first number defines the minimum value for the first color
808
+ (blue) and must be less than or equal to the minimum
809
+ value from the value lines. The second number defines the minimum
810
+ value for the second color (turquoise). The third, fourth, fifth and
811
+ sixth numbers define the minimum values for the third, fourth, fifth
812
+ and sixth colors (light green, yellow, orange, red), and the seventh
813
+ final number defines the maximum value for red and must be equal to
814
+ or greater than the maximum value from the value lines.
815
+ After the <rflen> value lines, there must exist a special line with
816
+ only '//', signifying the end of a page.
817
+ The draw file
818
+ .I <f>
819
+ must end with this special '//' line, even if it only includes a
820
+ single page. A draw file specifying <n> pages should include exactly
821
+ <n> * (<rflen> + 4) lines.
822
+
823
+ .TP
824
+ .BI \-\-efile " <f>"
825
+ Read the 'expert draw file'
826
+ .I <f>
827
+ which specifies the colors and nucleotides to draw on each consensus
828
+ position in one or more postscript pages. Unlike with the
829
+ .B \-\-dfile
830
+ option, no legend will be drawn when
831
+ .B \-\-efile
832
+ is used.
833
+ For each page, the draw file must include <rflen> lines, each with four
834
+ or five tab-delimited tokens. The first four tokens on line <x>
835
+ specify the color to paint position <x> and must be real numbers
836
+ between 0 and 1. The four numbers specify the cyan, magenta, yellow
837
+ and black values, respectively, in the CMYK color scheme for the
838
+ postscript file. The fifth token on line <x> specifies which nucleotide
839
+ to write on position <x> (on top of the colored background). If the
840
+ fifth token does not exist, no nucleotide will be written.
841
+ After the <rflen> lines, there must exist a special line with
842
+ only '//', signifying the end of a page.
843
+ The expert draw file
844
+ .I <f>
845
+ must end with this special '//' line, even if it only includes a
846
+ single page. A expert draw file specifying <n> pages should include exactly
847
+ <n> * (<rflen> + 1) lines.
848
+
849
+ .TP
850
+ .BI \-\-ifile " <f>"
851
+ Read insert information from the file
852
+ .IR <f> ,
853
+ which may have been created with INFERNAL's
854
+ .BR cmalign (1)
855
+ program. The insert information in
856
+ .I msafile
857
+ will be ignored and the information from
858
+ .I <f>
859
+ will supersede it. Inserts are columns that are gaps in the reference
860
+ (#=GC RF) annotation.
861
+
862
+
863
+
864
+
865
+ .SH SEE ALSO
866
+
867
+ .nf
868
+ http://bioeasel.org/
869
+ .fi
870
+
871
+ .SH COPYRIGHT
872
+
873
+ .nf
874
+ Copyright (C) 2023 Howard Hughes Medical Institute.
875
+ Freely distributed under the BSD open source license.
876
+ .fi
877
+
878
+ .SH AUTHOR
879
+
880
+ .nf
881
+ http://eddylab.org
882
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-translate.1 ADDED
@@ -0,0 +1,314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-translate" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-translate \- translate DNA sequence in six frames into individual ORFs
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-translate
8
+ [\fIoptions\fR]
9
+ .I seqfile
10
+
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .PP
15
+ Given a
16
+ .I seqfile
17
+ containing DNA or RNA sequences,
18
+ .B esl\-translate
19
+ outputs a six-frame translation of them as individual open reading
20
+ frames in FASTA format.
21
+
22
+ .PP
23
+ By default, only open reading frames greater than 20aa are reported.
24
+ This minimum ORF length can be changed with the
25
+ .B \-l
26
+ option.
27
+
28
+ .PP
29
+ By default, no specific initiation codon is required, and any amino acid can start an open reading frame.
30
+ This is so
31
+ .B esl\-translate
32
+ may be used on sequence fragments, eukaryotic genes with introns, or other
33
+ cases where we
34
+ do not want to assume that ORFs are complete coding regions.
35
+ This behavior can be changed. With the
36
+ .B \-m
37
+ option, ORFs start with an initiator AUG Met. With the
38
+ .B \-M
39
+ option, ORFs start with any of the initiation codons allowed by the
40
+ genetic code. For example, the "standard" code (NCBI transl_table 1)
41
+ allows AUG, CUG, and UUG as initiators. When
42
+ .B \-m
43
+ or
44
+ .B \-M
45
+ are used, an initiator is always translated to Met (even if the initiator
46
+ is something like UUG or CUG that doesn't encode Met as an elongator).
47
+
48
+ .PP
49
+ If
50
+ .I seqfile
51
+ is \- (a single dash), input is read from the stdin pipe. This
52
+ (combined
53
+ with the output being a standard FASTA file) allows
54
+ .B esl\-translate
55
+ to be used in command line incantations.
56
+ If
57
+ .I seqfile
58
+ ends in .gz, it is assumed to be a gzip-compressed file, and
59
+ Easel will try to read it as a stream from
60
+ \fBgunzip \-c\fR.
61
+
62
+
63
+
64
+ .SH OUTPUT FORMAT
65
+
66
+ .PP
67
+ The output FASTA name/description line contains information about the
68
+ source and coordinates of each ORF. Each ORF is named
69
+ .B orf1,
70
+ etc., with numbering starting from 1, in order of their start position
71
+ on the top strand followed by the bottom strand. The rest of the
72
+ FASTA name/desc line contains 4 additional fields, followed by the
73
+ description of the source sequence:
74
+
75
+ .TP
76
+ \fBsource\fR=\fI<s>\fR
77
+ .I <s>
78
+ is the name of the source DNA/RNA sequence.
79
+
80
+ .TP
81
+ \fBcoords\fR=\fIstart\fR..\fIend\fR
82
+ Coords, 1..L, for the translated ORF in a source DNA sequence of
83
+ length L. If start is greater than end, the ORF is on the bottom
84
+ (reverse complement) strand. The start is the first nucleotide of the
85
+ first codon; the end is the last nucleotide of the last codon. The
86
+ stop codon is not included in the coordinates (unlike in CDS
87
+ annotation in GenBank, for example.)
88
+
89
+ .TP
90
+ \fBlength\fR=\fI<n>\fR
91
+ Length of the ORF in amino acids.
92
+
93
+ .TP
94
+ \fBframe\fR=\fI<n>\fR
95
+ Which frame the ORF is in. Frames 1..3 are the top strand; 4..6 are the
96
+ bottom strand. Frame 1 starts at nucleotide 1. Frame 4 starts at
97
+ nucleotide L.
98
+
99
+
100
+
101
+ .SH ALTERNATIVE GENETIC CODES
102
+
103
+ .PP
104
+ By default, the "standard" genetic code is used (NCBI transl_table 1).
105
+ Any NCBI genetic code transl_table can be selected with the
106
+ .B \-c
107
+ option, as follows:
108
+
109
+ .TP
110
+ .B 1
111
+ Standard
112
+ .TP
113
+ .B 2
114
+ Vertebrate mitochondrial
115
+ .TP
116
+ .B 3
117
+ Yeast mitochondrial
118
+ .TP
119
+ .B 4
120
+ Mold, protozoan, coelenterate mitochondrial; Mycoplasma/Spiroplasma
121
+ .TP
122
+ .B 5
123
+ Invertebrate mitochondrial
124
+ .TP
125
+ .B 6
126
+ Ciliate, dasycladacean, Hexamita nuclear
127
+ .TP
128
+ .B 9
129
+ Echinoderm and flatworm mitochondrial
130
+ .TP
131
+ .B 10
132
+ Euplotid nuclear
133
+ .TP
134
+ .B 11
135
+ Bacterial, archaeal; and plant plastid
136
+ .TP
137
+ .B 12
138
+ Alternative yeast
139
+ .TP
140
+ .B 13
141
+ Ascidian mitochondrial
142
+ .TP
143
+ .B 14
144
+ Alternative flatworm mitochondrial
145
+ .TP
146
+ .B 16
147
+ Chlorophycean mitochondrial
148
+ .TP
149
+ .B 21
150
+ Trematode mitochondrial
151
+ .TP
152
+ .B 22
153
+ Scenedesmus obliquus mitochondrial
154
+ .TP
155
+ .B 23
156
+ Thraustochytrium mitochondrial
157
+ .TP
158
+ .B 24
159
+ Pterobranchia mitochondrial
160
+ .TP
161
+ .B 25
162
+ Candidate Division SR1 and Gracilibacteria
163
+
164
+
165
+ .PP
166
+ As of this writing, more information about the genetic codes in the
167
+ NCBI translation tables is at
168
+ .I http://www.ncbi.nlm.nih.gov/Taxonomy/
169
+ at a link titled
170
+ .I Genetic codes.
171
+
172
+ .SH IUPAC DEGENERACY CODES IN DNA
173
+
174
+ .PP
175
+ DNA sequences may contain IUPAC degeneracy codes, such as N, R, Y,
176
+ etc. If all codons consistent with a degenerate codon translate to the
177
+ same amino acid (or to a stop), that translation is done; otherwise,
178
+ the codon is translated as X (even if one or more compatible codons
179
+ are stops). For example, in the standard code, UAR translates to *
180
+ (stop), GGN translates to G (glycine), NNN translates to X, and UGR
181
+ translates to X (it could be either a UGA stop or a UGG Trp).
182
+
183
+ .PP
184
+ Degenerate initiation codons are handled essentially the same. If all
185
+ codons consistent with the degenerate codon are legal initiators, then
186
+ the codon is allowed to initiate a new ORF. Stop codons are never
187
+ a legal initiator (not only with
188
+ .B \-m
189
+ or
190
+ .B \-M
191
+ but also with the default of allowing any amino acid to initiate),
192
+ so degenerate codons consistent with a stop cannot be initiators.
193
+ For example, NNN cannot initiate an ORF, nor can UGR -- even
194
+ though they translate to X. This means that we don't translate
195
+ long stretches of N's as long ORFs of X's, which is probably a
196
+ feature, given the prevalence of artificial runs of N's in genome
197
+ sequence assemblies.
198
+
199
+ .PP
200
+ Degenerate DNA codons are not translated to degenerate amino acids
201
+ other than X, even when that is possible. For example, SAR and MUH
202
+ are decoded as X, not Z (Q|E) and J (I|L). The extra complexity
203
+ needed for a degenerate to degenerate translation doesn't seem worthwhile.
204
+
205
+
206
+ .SH OPTIONS
207
+
208
+ .TP
209
+ .B \-h
210
+ Print brief help. Includes version number and summary of all options.
211
+ Also includes a list of the available
212
+ NCBI transl_tables and their numerical codes, for the
213
+ .B \-c
214
+ option.
215
+
216
+ .TP
217
+ .BI \-c " <id>"
218
+ Choose alternative genetic code
219
+ .I <id>
220
+ where
221
+ .I <id>
222
+ is the numerical code of one of the NCBI transl_tables.
223
+
224
+ .TP
225
+ .BI \-l " <n>"
226
+ Set the minimum reported ORF length to
227
+ .I <n>
228
+ aa.
229
+
230
+ .TP
231
+ .B \-m
232
+ Require ORFs to start with an initiator codon AUG (Met).
233
+
234
+ .TP
235
+ .B \-M
236
+ Require ORFs to start with an initiator codon, as specified by the
237
+ allowed initiator codons in the NCBI transl_table. In the default
238
+ Standard code, AUG, CUG, and UUG are allowed as initiators. An
239
+ initiation codon is always translated as Met, even if it does not
240
+ normally encode Met as an elongator.
241
+
242
+ .TP
243
+ .B \-W
244
+ Use a memory-efficient windowed sequence reader.
245
+ The default is to read entire DNA sequences into memory, which
246
+ may become memory limited for some very large eukaryotic chromosomes.
247
+ The windowed reader cannot
248
+ reverse complement a nonrewindable input stream, so
249
+ either
250
+ .I seqfile
251
+ must be a file,
252
+ or you must use
253
+ .I \-\-watson
254
+ to limit translation to the top strand.
255
+
256
+
257
+ .TP
258
+ .BI \-\-informat " <s>"
259
+ Assert that input
260
+ .I seqfile
261
+ is in format
262
+ .IR <s> ,
263
+ bypassing format autodetection.
264
+ Common choices for
265
+ .I <s>
266
+ include:
267
+ .BR fasta ,
268
+ .BR embl ,
269
+ .BR genbank.
270
+ Alignment formats also work;
271
+ common choices include:
272
+ .BR stockholm ,
273
+ .BR a2m ,
274
+ .BR afa ,
275
+ .BR psiblast ,
276
+ .BR clustal ,
277
+ .BR phylip .
278
+ For more information, and for codes for some less common formats,
279
+ see main documentation.
280
+ The string
281
+ .I <s>
282
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
283
+
284
+
285
+ .TP
286
+ .B \-\-watson
287
+ Only translate the top strand.
288
+
289
+ .TP
290
+ .B \-\-crick
291
+ Only translate the bottom strand.
292
+
293
+
294
+
295
+
296
+
297
+ .SH SEE ALSO
298
+
299
+ .nf
300
+ http://bioeasel.org/
301
+ .fi
302
+
303
+ .SH COPYRIGHT
304
+
305
+ .nf
306
+ Copyright (C) 2023 Howard Hughes Medical Institute.
307
+ Freely distributed under the BSD open source license.
308
+ .fi
309
+
310
+ .SH AUTHOR
311
+
312
+ .nf
313
+ http://eddylab.org
314
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/esl-weight.1 ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "esl\-weight" 1 "Aug 2023" "Easel 0.49" "Easel Manual"
2
+
3
+ .SH NAME
4
+ esl\-weight \- calculate sequence weights in MSA(s)
5
+
6
+ .SH SYNOPSIS
7
+ .B esl\-weight
8
+ [\fIoptions\fR]
9
+ .I msafile
10
+
11
+ .SH DESCRIPTION
12
+
13
+ .PP
14
+ .B esl\-weight
15
+ calculates individual sequence weights for each alignment in
16
+ .I msafile
17
+ and outputs a new
18
+ multiple sequence alignment file in Stockholm format with
19
+ the weights annotated in Stockholm-format
20
+ \fB#=GS \fR\fIseqname\fR\fB WT \fR\fIweight\fR
21
+ lines.
22
+ The default weighting algorithm is the Gerstein/Sonnhammer/Chothia
23
+ algorithm.
24
+
25
+ .PP
26
+ If
27
+ .I msafile
28
+ is \- (a single dash),
29
+ MSA input is read from stdin.
30
+
31
+
32
+
33
+
34
+ .SH OPTIONS
35
+
36
+ .TP
37
+ .B \-h
38
+ Print brief help; includes version number and summary of
39
+ all options, including expert options.
40
+
41
+ .TP
42
+ .B \-g
43
+ Use the Gerstein/Sonnhammer/Chothia weighting algorithm; this is the
44
+ default.
45
+
46
+ .TP
47
+ .B \-p
48
+ Use the Henikoff position-based weighting algorithm. This is faster
49
+ and more memory efficient than the default.
50
+
51
+ .TP
52
+ .B \-b
53
+ "BLOSUM weights": use approximately the same rule used in constructing
54
+ the BLOSUM score matrices. This involves single-linkage clustering at
55
+ some fractional identity threshold (default 0.62; see
56
+ .B \-\-id
57
+ option), then for each cluster, splitting a total weight of one
58
+ uniformly amongst all sequences in the cluster.
59
+
60
+
61
+ .SH EXPERT OPTIONS
62
+
63
+ .TP
64
+ .BI \-\-id " <x>"
65
+ Sets the fractional identity threshold used by the BLOSUM weighting
66
+ rule (option
67
+ .BR \-b ;
68
+ required), to a number 0<=x<=1. Default is 0.62.
69
+
70
+ .TP
71
+ .B \-\-amino
72
+ Assert that the
73
+ .I msafile
74
+ contains protein sequences.
75
+
76
+ .TP
77
+ .B \-\-dna
78
+ Assert that the
79
+ .I msafile
80
+ contains DNA sequences.
81
+
82
+ .TP
83
+ .B \-\-rna
84
+ Assert that the
85
+ .I msafile
86
+ contains RNA sequences.
87
+
88
+ .SH SEE ALSO
89
+
90
+ .nf
91
+ http://bioeasel.org/
92
+ .fi
93
+
94
+ .SH COPYRIGHT
95
+
96
+ .nf
97
+ Copyright (C) 2023 Howard Hughes Medical Institute.
98
+ Freely distributed under the BSD open source license.
99
+ .fi
100
+
101
+ .SH AUTHOR
102
+
103
+ .nf
104
+ http://eddylab.org
105
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmbuild.1 ADDED
@@ -0,0 +1,556 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmbuild" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmbuild \- construct profiles from multiple sequence alignments
5
+
6
+ .SH SYNOPSIS
7
+ .B hmmbuild
8
+ [\fIoptions\fR]
9
+ .I hmmfile
10
+ .I msafile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ For each multiple sequence alignment in
16
+ .I msafile
17
+ build a profile HMM
18
+ and save it to a new file
19
+ .IR hmmfile .
20
+
21
+
22
+ .PP
23
+ .I msafile
24
+ may be '\-' (dash), which means
25
+ reading this input from stdin rather than a file.
26
+
27
+
28
+ .PP
29
+ .I hmmfile
30
+ may not be '\-' (stdout), because sending the HMM file to stdout would
31
+ conflict with the other text output of the program.
32
+
33
+
34
+
35
+
36
+ .SH OPTIONS
37
+
38
+ .TP
39
+ .B \-h
40
+ Help; print a brief reminder of command line usage and all available
41
+ options.
42
+
43
+ .TP
44
+ .BI \-n " <s>"
45
+ Name the new profile
46
+ .IR <s> .
47
+ The default is to use the name of the alignment (if one is present in
48
+ the
49
+ .IR msafile ,
50
+ or, failing that, the name of the
51
+ .IR hmmfile .
52
+ If
53
+ .I msafile
54
+ contains more than one alignment,
55
+ .B \-n
56
+ doesn't work, and every alignment must have a name
57
+ annotated in the
58
+ .I msafile
59
+ (as in Stockholm #=GF ID annotation).
60
+
61
+
62
+ .TP
63
+ .BI \-o " <f>"
64
+ Direct the summary output to file
65
+ .IR <f> ,
66
+ rather than to stdout.
67
+
68
+ .TP
69
+ .BI \-O " <f>"
70
+ After each model is constructed, resave annotated, possibly modified
71
+ source alignments to a file
72
+ .I <f>
73
+ in Stockholm format.
74
+ The alignments are annotated with a reference annotation line
75
+ indicating which columns were assigned as consensus, and sequences are
76
+ annotated with what relative sequence weights were assigned. Some
77
+ residues of the alignment may have been shifted to accommodate
78
+ restrictions of the Plan7 profile architecture, which disallows
79
+ transitions between insert and delete states.
80
+
81
+
82
+ .SH OPTIONS FOR SPECIFYING THE ALPHABET
83
+
84
+ .TP
85
+ .B \-\-amino
86
+ Assert that sequences in
87
+ .I msafile
88
+ are protein, bypassing alphabet autodetection.
89
+
90
+ .TP
91
+ .B \-\-dna
92
+ Assert that sequences in
93
+ .I msafile
94
+ are DNA, bypassing alphabet autodetection.
95
+
96
+ .TP
97
+ .B \-\-rna
98
+ Assert that sequences in
99
+ .I msafile
100
+ are RNA, bypassing alphabet autodetection.
101
+
102
+ .SH OPTIONS CONTROLLING PROFILE CONSTRUCTION
103
+
104
+ These options control how consensus columns are defined in an alignment.
105
+
106
+ .TP
107
+ .B \-\-fast
108
+ Define consensus columns as those that have a fraction >=
109
+ .B symfrac
110
+ of residues as opposed to gaps. (See below for the
111
+ .B \-\-symfrac
112
+ option.) This is the default.
113
+
114
+ .TP
115
+ .B \-\-hand
116
+ Define consensus columns in next profile using reference annotation to
117
+ the multiple alignment.
118
+ This allows you to define any consensus columns you like.
119
+
120
+ .TP
121
+ .BI \-\-symfrac " <x>"
122
+ Define the residue fraction threshold necessary to define a
123
+ consensus column when using the
124
+ .B \-\-fast
125
+ option. The default is 0.5. The symbol fraction in each column
126
+ is calculated after taking relative sequence weighting into account,
127
+ and ignoring gap characters corresponding to ends of sequence
128
+ fragments
129
+ (as opposed to internal insertions/deletions).
130
+ Setting this to 0.0 means that every alignment column will be assigned
131
+ as consensus, which may be useful in some cases. Setting it to 1.0
132
+ means that only columns that include 0 gaps (internal
133
+ insertions/deletions) will be assigned as consensus.
134
+
135
+ .TP
136
+ .BI \-\-fragthresh " <x>"
137
+ We only want to count terminal gaps as deletions if the aligned
138
+ sequence is known to be full-length, not if it is a fragment (for
139
+ instance, because only part of it was sequenced). HMMER uses a simple
140
+ rule to infer fragments: if the range of a sequence in the alignment
141
+ (the number of alignment columns between the first and last positions
142
+ of the sequence) is less than or equal to a fraction
143
+ .I <x>
144
+ times the alignment length in columns,
145
+ then the sequence is handled as a fragment. The default is 0.5.
146
+ Setting
147
+ .B \-\-fragthresh 0
148
+ will define no (nonempty) sequence as a fragment; you might want to do
149
+ this if you know you've got a carefully curated alignment of full\-length
150
+ sequences.
151
+ Setting
152
+ .B \-\-fragthresh 1
153
+ will define all sequences as fragments; you might want to do this if
154
+ you know your alignment is entirely composed of fragments, such as
155
+ translated short reads in metagenomic shotgun data.
156
+
157
+
158
+ .SH OPTIONS CONTROLLING RELATIVE WEIGHTS
159
+
160
+ HMMER uses an ad hoc sequence weighting algorithm to downweight
161
+ closely related sequences and upweight distantly related ones. This
162
+ has the effect of making models less biased by uneven phylogenetic
163
+ representation. For example, two identical sequences would typically
164
+ each receive half the weight that one sequence would. These options
165
+ control which algorithm gets used.
166
+
167
+ .TP
168
+ .B \-\-wpb
169
+ Use the Henikoff position-based sequence weighting scheme [Henikoff
170
+ and Henikoff, J. Mol. Biol. 243:574, 1994]. This is the default.
171
+
172
+ .TP
173
+ .B \-\-wgsc
174
+ Use the Gerstein/Sonnhammer/Chothia weighting algorithm [Gerstein et
175
+ al, J. Mol. Biol. 235:1067, 1994].
176
+
177
+ .TP
178
+ .B \-\-wblosum
179
+ Use the same clustering scheme that was used to weight data in
180
+ calculating BLOSUM substitution matrices [Henikoff and Henikoff,
181
+ Proc. Natl. Acad. Sci 89:10915, 1992]. Sequences are single-linkage
182
+ clustered at an identity threshold (default 0.62; see
183
+ .BR \-\-wid )
184
+ and within each cluster of c sequences, each sequence gets relative
185
+ weight 1/c.
186
+
187
+ .TP
188
+ .B \-\-wnone
189
+ No relative weights. All sequences are assigned uniform weight.
190
+
191
+ .TP
192
+ .BI \-\-wid " <x>"
193
+ Sets the identity threshold used by single-linkage clustering when
194
+ using
195
+ .BR \-\-wblosum .
196
+ Invalid with any other weighting scheme. Default is 0.62.
197
+
198
+
199
+
200
+
201
+ .SH OPTIONS CONTROLLING EFFECTIVE SEQUENCE NUMBER
202
+
203
+ After relative weights are determined, they are normalized to sum to a
204
+ total effective sequence number,
205
+ .IR eff_nseq .
206
+ This number may be the actual number of sequences in the alignment,
207
+ but it is almost always smaller than that.
208
+ The default entropy weighting method
209
+ (\fB\-\-eent\fR)
210
+ reduces the effective sequence
211
+ number to reduce the information content (relative entropy, or average
212
+ expected score on true homologs) per consensus position. The target
213
+ relative entropy is controlled by a two-parameter function, where the
214
+ two parameters are settable with
215
+ .B \-\-ere
216
+ and
217
+ .BR \-\-esigma .
218
+
219
+ .TP
220
+ .B \-\-eent
221
+ Adjust effective sequence number to achieve a specific relative entropy
222
+ per position (see
223
+ .BR \-\-ere ).
224
+ This is the default.
225
+
226
+ .TP
227
+ .B \-\-eclust
228
+ Set effective sequence number to the number of single-linkage clusters
229
+ at a specific identity threshold (see
230
+ .BR \-\-eid ).
231
+ This option is not recommended; it's for experiments evaluating
232
+ how much better
233
+ .B \-\-eent
234
+ is.
235
+
236
+ .TP
237
+ .B \-\-enone
238
+ Turn off effective sequence number determination and just use the
239
+ actual number of sequences. One reason you might want to do this is
240
+ to try to maximize the relative entropy/position of your model, which
241
+ may be useful for short models.
242
+
243
+ .TP
244
+ .BI \-\-eset " <x>"
245
+ Explicitly set the effective sequence number for all models to
246
+ .IR <x> .
247
+
248
+ .TP
249
+ .BI \-\-ere " <x>"
250
+ Set the minimum relative entropy/position target to
251
+ .IR <x> .
252
+ Requires
253
+ .BR \-\-eent .
254
+ Default depends on the sequence alphabet. For protein
255
+ sequences, it is 0.59 bits/position; for nucleotide
256
+ sequences, it is 0.45 bits/position.
257
+
258
+ .TP
259
+ .BI \-\-esigma " <x>"
260
+ Sets the minimum relative entropy contributed by an entire
261
+ model alignment, over its whole length. This has the effect
262
+ of making short models have
263
+ higher relative entropy per position than
264
+ .B \-\-ere
265
+ alone would give. The default is 45.0 bits.
266
+
267
+ .TP
268
+ .BI \-\-eid " <x>"
269
+ Sets the fractional pairwise identity cutoff used by
270
+ single linkage clustering with the
271
+ .B \-\-eclust
272
+ option. The default is 0.62.
273
+
274
+
275
+ .SH OPTIONS CONTROLLING PRIORS
276
+
277
+ By default, weighted counts are converted to mean posterior
278
+ probability parameter estimates using mixture Dirichlet priors.
279
+ Default mixture Dirichlet prior parameters for protein models and for
280
+ nucleic acid (RNA and DNA) models are built in. The following options
281
+ allow you to override the default priors.
282
+
283
+ .TP
284
+ .B \-\-pnone
285
+ Don't use any priors. Probability parameters will simply be the
286
+ observed frequencies, after relative sequence weighting.
287
+
288
+ .TP
289
+ .B \-\-plaplace
290
+ Use a Laplace +1 prior in place of the default mixture Dirichlet
291
+ prior.
292
+
293
+
294
+
295
+
296
+ .SH OPTIONS CONTROLLING SINGLE SEQUENCE SCORING
297
+
298
+ By default, if a query is a single sequence from a file in
299
+ .IR fasta
300
+ format,
301
+ .B hmmbuild
302
+ constructs a search model from that sequence and a standard
303
+ 20x20 substitution matrix for residue probabilities, along with two
304
+ additional parameters for position-independent gap open and gap extend
305
+ probabilities. These options allow the default single-sequence scoring
306
+ parameters to be changed, and for single-sequence scoring options to
307
+ be applied to a single sequence coming from an aligned format.
308
+
309
+ .TP
310
+ .BI \-\-singlemx
311
+ If a single sequence query comes from a multiple sequence alignment file,
312
+ such as in
313
+ .IR stockholm
314
+ format, the search model is by default constructed as is typically done
315
+ for multiple sequence alignments. This option forces
316
+ .B hmmbuild
317
+ to use the single-sequence method with substitution score matrix.
318
+
319
+ .TP
320
+ .BI \-\-mx " <s>"
321
+ Obtain residue alignment probabilities from the built-in
322
+ substitution matrix named
323
+ .IR <s> .
324
+ Several standard matrices are built-in, and do not need to be
325
+ read from files.
326
+ The matrix name
327
+ .I <s>
328
+ can be
329
+ PAM30, PAM70, PAM120, PAM240, BLOSUM45, BLOSUM50, BLOSUM62, BLOSUM80,
330
+ BLOSUM90, or DNA1.
331
+ Only one of the
332
+ .B \-\-mx
333
+ and
334
+ .B \-\-mxfile
335
+ options may be used.
336
+
337
+ .TP
338
+ .BI \-\-mxfile " <mxfile>"
339
+ Obtain residue alignment probabilities from the substitution matrix
340
+ in file
341
+ .IR <mxfile> .
342
+ The default score matrix is BLOSUM62 for protein sequences, and
343
+ DNA1 for nucleotide sequences (these matrices are internal to
344
+ HMMER and do not need to be available as a file).
345
+ The format of a substitution matrix
346
+ .I <mxfile>
347
+ is the standard format accepted by BLAST, FASTA, and other sequence
348
+ analysis software.
349
+ See ftp.ncbi.nlm.nih.gov/blast/matrices/ for example files. (The only
350
+ exception: we require matrices to be square, so for DNA, use files
351
+ like NCBI's NUC.4.4, not NUC.4.2.)
352
+
353
+ .TP
354
+ .BI \-\-popen " <x>"
355
+ Set the gap open probability for a single sequence query model to
356
+ .IR <x> .
357
+ The default is 0.02.
358
+ .I <x>
359
+ must be >= 0 and < 0.5.
360
+
361
+ .TP
362
+ .BI \-\-pextend " <x>"
363
+ Set the gap extend probability for a single sequence query model to
364
+ .IR <x> .
365
+ The default is 0.4.
366
+ .I <x>
367
+ must be >= 0 and < 1.0.
368
+
369
+
370
+ .SH OPTIONS CONTROLLING E-VALUE CALIBRATION
371
+
372
+ The location parameters for the expected score distributions for MSV
373
+ filter scores, Viterbi filter scores, and Forward scores require three
374
+ short random sequence simulations.
375
+
376
+ .TP
377
+ .BI \-\-EmL " <n>"
378
+ Sets the sequence length in simulation that estimates the location
379
+ parameter mu for MSV filter E-values. Default is 200.
380
+
381
+ .TP
382
+ .BI \-\-EmN " <n>"
383
+ Sets the number of sequences in simulation that estimates the location
384
+ parameter mu for MSV filter E-values. Default is 200.
385
+
386
+ .TP
387
+ .BI \-\-EvL " <n>"
388
+ Sets the sequence length in simulation that estimates the location
389
+ parameter mu for Viterbi filter E-values. Default is 200.
390
+
391
+ .TP
392
+ .BI \-\-EvN " <n>"
393
+ Sets the number of sequences in simulation that estimates the location
394
+ parameter mu for Viterbi filter E-values. Default is 200.
395
+
396
+ .TP
397
+ .BI \-\-EfL " <n>"
398
+ Sets the sequence length in simulation that estimates the location
399
+ parameter tau for Forward E-values. Default is 100.
400
+
401
+ .TP
402
+ .BI \-\-EfN " <n>"
403
+ Sets the number of sequences in simulation that estimates the location
404
+ parameter tau for Forward E-values. Default is 200.
405
+
406
+ .TP
407
+ .BI \-\-Eft " <x>"
408
+ Sets the tail mass fraction to fit in the simulation that estimates
409
+ the location parameter tau for Forward evalues. Default is 0.04.
410
+
411
+
412
+ .SH OTHER OPTIONS
413
+
414
+ .TP
415
+ .BI \-\-cpu " <n>"
416
+ Set the number of parallel worker threads to
417
+ .IR <n> .
418
+ On multicore machines, the default is 2.
419
+ You can also control this number by setting an environment variable,
420
+ .IR HMMER_NCPU .
421
+ There is also a master thread, so the actual number of threads that
422
+ HMMER spawns is
423
+ .IR <n> +1.
424
+
425
+ This option is not available if HMMER was compiled with POSIX threads
426
+ support turned off.
427
+
428
+
429
+
430
+ .TP
431
+ .BI \-\-informat " <s>"
432
+ Assert that input
433
+ .I msafile
434
+ is in alignment format
435
+ .IR <s> ,
436
+ bypassing format autodetection.
437
+ Common choices for
438
+ .I <s>
439
+ include:
440
+ .BR stockholm ,
441
+ .BR a2m ,
442
+ .BR afa ,
443
+ .BR psiblast ,
444
+ .BR clustal ,
445
+ .BR phylip .
446
+ For more information, and for codes for some less common formats,
447
+ see main documentation.
448
+ The string
449
+ .I <s>
450
+ is case-insensitive (\fBa2m\fR or \fBA2M\fR both work).
451
+
452
+
453
+ .TP
454
+ .BI \-\-seed " <n>"
455
+ Seed the random number generator with
456
+ .IR <n> ,
457
+ an integer >= 0.
458
+ If
459
+ .I <n>
460
+ is nonzero, any stochastic simulations will be reproducible; the same
461
+ command will give the same results.
462
+ If
463
+ .I <n>
464
+ is 0, the random number generator is seeded arbitrarily, and
465
+ stochastic simulations will vary from run to run of the same command.
466
+ The default seed is 42.
467
+
468
+
469
+ .TP
470
+ .BI \-\-w_beta " <x>"
471
+ Window length tail mass.
472
+ The upper bound,
473
+ .IR W ,
474
+ on the length at which nhmmer expects to find an instance of the
475
+ model is set such that the fraction of all sequences generated
476
+ by the model with length
477
+ .I ">= W"
478
+ is less than
479
+ .IR <x> .
480
+ The default is 1e-7.
481
+
482
+
483
+
484
+ .TP
485
+ .BI \-\-w_length " <n>"
486
+ Override the model instance length upper bound,
487
+ .IR W ,
488
+ which is otherwise controlled by
489
+ .BR \-\-w_beta .
490
+ It should be larger than the model length. The value of
491
+ .I W
492
+ is used deep in the acceleration pipeline, and modest changes
493
+ are not expected to impact results (though larger values of
494
+ .I W
495
+ do lead to longer run time).
496
+
497
+
498
+ .TP
499
+ .B \-\-mpi
500
+ Run as a parallel MPI program. Each alignment is assigned to a MPI
501
+ worker node for construction. (Therefore, the maximum parallelization
502
+ cannot exceed the number of alignments in the input
503
+ .IR msafile .)
504
+ This is useful when building large profile libraries. This option is
505
+ only available if optional MPI capability was enabled at compile-time.
506
+
507
+
508
+ .TP
509
+ .B \-\-stall
510
+ For debugging MPI parallelization: arrest program execution
511
+ immediately after start, and wait for a debugger to attach to the
512
+ running process and release the arrest.
513
+
514
+
515
+ .TP
516
+ .BI \-\-maxinsertlen " <n>"
517
+ Restrict insert length parameterization such that the expected
518
+ insert length at each position of the model is no more than
519
+ .IR <n> .
520
+
521
+
522
+
523
+
524
+ .SH SEE ALSO
525
+
526
+ See
527
+ .BR hmmer (1)
528
+ for a master man page with a list of all the individual man pages
529
+ for programs in the HMMER package.
530
+
531
+ .PP
532
+ For complete documentation, see the user guide that came with your
533
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
534
+ (http://hmmer.org/).
535
+
536
+
537
+
538
+ .SH COPYRIGHT
539
+
540
+ .nf
541
+ Copyright (C) 2023 Howard Hughes Medical Institute.
542
+ Freely distributed under the BSD open source license.
543
+ .fi
544
+
545
+ For additional information on copyright and licensing, see the file
546
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
547
+ web page
548
+ (http://hmmer.org/).
549
+
550
+
551
+ .SH AUTHOR
552
+
553
+ .nf
554
+ http://eddylab.org
555
+ .fi
556
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmconvert.1 ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmconvert" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmconvert \- convert profile file to various formats
5
+
6
+
7
+ .SH SYNOPSIS
8
+ .B hmmconvert
9
+ [\fIoptions\fR]
10
+ .I hmmfile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ The
17
+ .B hmmconvert
18
+ utility
19
+ converts an input profile file to different HMMER formats.
20
+
21
+ .PP
22
+ By default, the input profile can be in any HMMER format, including
23
+ old/obsolete formats from HMMER2, ASCII or binary; the output profile
24
+ is a current HMMER3 ASCII format.
25
+
26
+ .PP
27
+ .I hmmfile
28
+ may be '\-' (dash), which means reading this input from stdin rather
29
+ than a file.
30
+
31
+
32
+ .SH OPTIONS
33
+
34
+ .TP
35
+ .B \-h
36
+ Help; print a brief reminder of command line usage and all available
37
+ options.
38
+
39
+ .TP
40
+ .B \-a
41
+ Output profiles in ASCII text format. This is the default.
42
+
43
+ .TP
44
+ .B \-b
45
+ Output profiles in binary format.
46
+
47
+ .TP
48
+ .B \-2
49
+ Output in legacy HMMER2 ASCII text format, in ls (glocal) mode. This
50
+ allows HMMER3 models to be converted back to a close approximation of
51
+ HMMER2, for comparative studies.
52
+
53
+ .TP
54
+ .BI \-\-outfmt " <s>"
55
+ Output in a HMMER3 ASCII text format other then the most current one.
56
+ Valid choices for
57
+ .I <s>
58
+ are
59
+ .B "3/a"
60
+ through
61
+ .BR "3/f" .
62
+ The current format is
63
+ .BR 3/f ,
64
+ and this is the default. The format
65
+ .B 3/b
66
+ was used in the official HMMER3 release, and the others were used in
67
+ the various testing versions.
68
+
69
+
70
+ .SH SEE ALSO
71
+
72
+ See
73
+ .BR hmmer (1)
74
+ for a master man page with a list of all the individual man pages
75
+ for programs in the HMMER package.
76
+
77
+ .PP
78
+ For complete documentation, see the user guide that came with your
79
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
80
+ (http://hmmer.org/).
81
+
82
+
83
+
84
+ .SH COPYRIGHT
85
+
86
+ .nf
87
+ Copyright (C) 2023 Howard Hughes Medical Institute.
88
+ Freely distributed under the BSD open source license.
89
+ .fi
90
+
91
+ For additional information on copyright and licensing, see the file
92
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
93
+ web page
94
+ (http://hmmer.org/).
95
+
96
+
97
+ .SH AUTHOR
98
+
99
+ .nf
100
+ http://eddylab.org
101
+ .fi
102
+
103
+
104
+
105
+ "
106
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmemit.1 ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmemit" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmemit \- sample sequences from a profile
5
+
6
+ .SH SYNOPSIS
7
+ .B hmmemit
8
+ [\fIoptions\fR]
9
+ .I hmmfile
10
+
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .PP
15
+ The
16
+ .B hmmemit
17
+ program
18
+ samples (emits) sequences from the profile HMM(s) in
19
+ .IR hmmfile ,
20
+ and writes them to output.
21
+ Sampling sequences may be useful for a variety of purposes, including
22
+ creating synthetic true positives for benchmarks or tests.
23
+
24
+ .PP
25
+ The default is to sample one unaligned sequence from the core
26
+ probability model, which means that each sequence consists of one
27
+ full-length domain. Alternatively, with the
28
+ .B \-c
29
+ option, you can emit a simple majority-rule consensus sequence;
30
+ or with the
31
+ .B \-a
32
+ option, you can emit an alignment (in which case, you probably
33
+ also want to set
34
+ .B \-N
35
+ to something other than its default of 1 sequence per model).
36
+
37
+ .PP
38
+ As another option, with the
39
+ .B \-p
40
+ option you can sample a sequence from a fully configured HMMER search
41
+ profile. This means sampling a `homologous sequence' by HMMER's
42
+ definition, including nonhomologous flanking sequences, local
43
+ alignments, and multiple domains per sequence, depending on the length
44
+ model and alignment mode chosen for the profile.
45
+
46
+ .PP
47
+ The
48
+ .I hmmfile
49
+ may contain a library of HMMs, in which case
50
+ each HMM will be used in turn.
51
+
52
+ .PP
53
+ .I hmmfile
54
+ may be '\-' (dash), which
55
+ means reading this input from stdin rather than a file.
56
+
57
+
58
+ .SH COMMON OPTIONS
59
+
60
+ .TP
61
+ .B \-h
62
+ Help; print a brief reminder of command line usage and all available
63
+ options.
64
+
65
+
66
+ .TP
67
+ .BI \-o " <f>"
68
+ Direct the output sequences to file
69
+ .IR <f> ,
70
+ rather than to stdout.
71
+
72
+ .TP
73
+ .BI \-N " <n>"
74
+ Sample
75
+ .I <n>
76
+ sequences per model, rather than just one.
77
+
78
+
79
+
80
+ .SH OPTIONS CONTROLLING WHAT TO EMIT
81
+
82
+ The default is to sample
83
+ .B N
84
+ sequences from the core model. Alternatively,
85
+ you may choose one (and only one) of the following alternatives.
86
+
87
+
88
+ .TP
89
+ .B \-a
90
+ Emit an alignment for each HMM in the
91
+ .I hmmfile
92
+ rather than sampling unaligned sequences one at a time.
93
+
94
+ .TP
95
+ .B \-c
96
+ Emit a plurality-rule consensus sequence, instead of sampling a
97
+ sequence from the profile HMM's probability distribution. The
98
+ consensus sequence is formed by selecting the maximum probability
99
+ residue at each match state.
100
+
101
+ .TP
102
+ .B \-C
103
+ Emit a fancier plurality-rule consensus sequence than the
104
+ .B \-c
105
+ option. If the maximum probability residue has p <
106
+ .B minl
107
+ show it as a lower case 'any' residue (n or x); if p >=
108
+ .B minl
109
+ and <
110
+ .B minu
111
+ show it as a lower case residue; and if p >=
112
+ .B minu
113
+ show it as an upper case residue.
114
+ The default settings of
115
+ .B minu
116
+ and
117
+ .B minl
118
+ are both 0.0, which means
119
+ .B \-C
120
+ gives the same output as
121
+ .B \-c
122
+ unless you also set
123
+ .B minu
124
+ and
125
+ .B minl
126
+ to what you want.
127
+
128
+ .TP
129
+ .B \-p
130
+ Sample unaligned sequences from the implicit search profile, not from
131
+ the core model. The core model consists only of the homologous states
132
+ (between the begin and end states of a HMMER Plan7 model). The profile
133
+ includes the nonhomologous N, C, and J states, local/glocal and
134
+ uni/multihit algorithm configuration, and the target length model.
135
+ Therefore sequences sampled from a profile may include nonhomologous
136
+ as well as homologous sequences, and may contain more than one
137
+ homologous sequence segment. By default, the profile is in multihit
138
+ local mode, and the target sequence length is configured for L=400.
139
+
140
+
141
+
142
+
143
+ .SH OPTIONS CONTROLLING EMISSION FROM PROFILES
144
+
145
+ These options require that you have set the
146
+ .B \-p
147
+ option.
148
+
149
+ .TP
150
+ .BI \-L " <n>"
151
+ Configure the profile's target sequence length model to generate a
152
+ mean length of approximately <n> rather than the default of 400.
153
+
154
+ .TP
155
+ .B \-\-local
156
+ Configure the profile for multihit local alignment.
157
+
158
+ .TP
159
+ .B \-\-unilocal
160
+ Configure the profile for unihit local alignment (Smith/Waterman).
161
+
162
+ .TP
163
+ .B \-\-glocal
164
+ Configure the profile for multihit glocal alignment.
165
+
166
+ .TP
167
+ .B \-\-uniglocal
168
+ Configure the profile for unihit glocal alignment.
169
+
170
+
171
+ .SH OPTIONS CONTROLLING FANCY CONSENSUS EMISSION
172
+
173
+ These options require that you have set the
174
+ .B \-C
175
+ option.
176
+
177
+ .TP
178
+ .BI \-\-minl " <x>"
179
+ Sets the
180
+ .B minl
181
+ threshold for showing weakly conserved residues as lower case.
182
+ (0 <= x <= 1)
183
+
184
+ .TP
185
+ .BI \-\-minu " <x>"
186
+ Sets the
187
+ .B minu
188
+ threshold for showing strongly conserved residues as upper case.
189
+ (0 <= x <= 1)
190
+
191
+
192
+
193
+ .SH OTHER OPTIONS
194
+
195
+ .TP
196
+ .BI \-\-seed " <n>"
197
+ Seed the random number generator with
198
+ .IR <n> ,
199
+ an integer >= 0.
200
+ If
201
+ .I <n>
202
+ is nonzero, any stochastic simulations will be reproducible; the same
203
+ command will give the same results.
204
+ If
205
+ .I <n>
206
+ is 0, the random number generator is seeded arbitrarily, and
207
+ stochastic simulations will vary from run to run of the same command.
208
+ The default is 0: use an arbitrary seed, so different
209
+ .B hmmemit
210
+ runs will generate different samples.
211
+
212
+
213
+
214
+
215
+
216
+ .SH SEE ALSO
217
+
218
+ See
219
+ .BR hmmer (1)
220
+ for a master man page with a list of all the individual man pages
221
+ for programs in the HMMER package.
222
+
223
+ .PP
224
+ For complete documentation, see the user guide that came with your
225
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
226
+ (http://hmmer.org/).
227
+
228
+
229
+
230
+ .SH COPYRIGHT
231
+
232
+ .nf
233
+ Copyright (C) 2023 Howard Hughes Medical Institute.
234
+ Freely distributed under the BSD open source license.
235
+ .fi
236
+
237
+ For additional information on copyright and licensing, see the file
238
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
239
+ web page
240
+ (http://hmmer.org/).
241
+
242
+
243
+ .SH AUTHOR
244
+
245
+ .nf
246
+ http://eddylab.org
247
+ .fi
248
+
249
+
250
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmer.1 ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "HMMER" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+
5
+ HMMER \- profile HMMs for biological sequence analysis
6
+
7
+ .SH SYNOPSIS
8
+
9
+ .nf
10
+ .B hmmalign
11
+ Align sequences to a profile
12
+
13
+ .B hmmbuild
14
+ Construct profiles from multiple sequence alignments
15
+
16
+ .B hmmconvert
17
+ Convert profile file to various formats
18
+
19
+ .B hmmemit
20
+ Sample sequences from a profile
21
+
22
+ .B hmmfetch
23
+ Retrieve profiles from a file
24
+
25
+ .B hmmlogo
26
+ Produce a conservation logo graphic from a profile
27
+
28
+ .B hmmpgmd
29
+ Daemon for database search web services
30
+
31
+ .B hmmpress
32
+ Prepare a profile database for hmmscan
33
+
34
+ .B hmmscan
35
+ Search sequence(s) against a profile database
36
+
37
+ .B hmmsearch
38
+ Search profile(s) against a sequence database
39
+
40
+ .B hmmsim
41
+ Collect profile score distributions on random sequences
42
+
43
+ .B hmmstat
44
+ Summary statistics for a profile file
45
+
46
+ .B jackhmmer
47
+ Iteratively search sequence(s) against a sequence database
48
+
49
+ .B makehmmerdb
50
+ build nhmmer database from a sequence file
51
+
52
+ .B nhmmer
53
+ Search DNA/RNA queries against a DNA/RNA sequence database
54
+
55
+ .B nhmmscan
56
+ Search DNA/RNA sequence(s) against a DNA/RNA profile database
57
+
58
+ .B phmmer
59
+ Search protein sequence(s) against a protein sequence database
60
+
61
+ .B alimask
62
+ Calculate and add column mask to a multiple sequence alignment
63
+ .fi
64
+
65
+ .SH DESCRIPTION
66
+
67
+ HMMER is a suite of several programs for biological sequence alignment
68
+ and database homology search. It uses probabilistic models called
69
+ "profile hidden Markov models" (profile HMMs) to represent the likely
70
+ evolutionary homologs of a single sequence or a multiple alignment of
71
+ a sequence family. A main avenue of research is to improve the
72
+ evolutionary predictive models in HMMER to be able to recognize and
73
+ accurately align increasingly remote homologs, distant in time.
74
+
75
+ HMMER is also used as an organizational tool, to group the
76
+ exponentially growing number of biological sequences into a vastly
77
+ smaller set of well-annotated sequence families. New sequences can be
78
+ annotated by comparison against curated sequence family databases of
79
+ prebuilt HMMER profiles, in addition or instead of comparison to the
80
+ entire sequence database. Databases such as Pfam, SMART, and
81
+ TIGRfams, among others, are based on this principle.
82
+
83
+ HMMER is used in three main modes: to search a sequence database for
84
+ new homologs of a sequence or a sequence family; to search a profile
85
+ database (like Pfam) to find what known family a query sequence
86
+ belongs to, or what domains it has; and to automatically construct
87
+ large multiple alignments (i.e. with an effectively unlimited number
88
+ of sequences) using a profile representative of a sequence family.
89
+
90
+
91
+ Suppose you have a multiple sequence alignment of a sequence family of
92
+ interest, and you want to search a sequence database for additional
93
+ homologs. The
94
+ .B hmmbuild
95
+ program builds profile(s) from multiple alignment(s).
96
+ The
97
+ .B hmmsearch
98
+ program searches protein profile(s) against a protein sequence database,
99
+ and
100
+ .B nhmmer
101
+ searches nucleotide profile(s) against a nucleotide sequence database.
102
+
103
+ Suppose you have a single sequence of interest, and you want to search
104
+ a sequence database for additional homologs. The
105
+ .B phmmer
106
+ program searches a single protein sequence against a protein sequence
107
+ database. The
108
+ .B jackhmmer
109
+ program does the same thing but iteratively -- homologs detected in a
110
+ previous round are incorporated into a new profile, and the new
111
+ profile is searched again.
112
+ .B phmmer
113
+ is used like BLASTP, and
114
+ .B jackhmmer
115
+ is used like a protein PSI-BLAST. The
116
+ .B nhmmer
117
+ program searches a single nucleotide sequence against a nucleotide sequence.
118
+
119
+ Suppose you have sequence(s) that you want to analyze using a
120
+ HMMER-based profile HMM database like Pfam (http://pfam.sanger.ac.uk).
121
+ The
122
+ .B hmmpress
123
+ program formats a profile HMM flatfile (such as the file you
124
+ would download from Pfam) into a HMMER binary database.
125
+ The
126
+ .B hmmscan
127
+ program searches protein sequence(s) against that database.
128
+ The
129
+ .B nhmmscan
130
+ program can similarly search nucleotide sequence(s) against
131
+ a pressed database of nucleotide profiles, such as from
132
+ Dfam (http://dfam.janelia.org).
133
+
134
+
135
+ Suppose you want to align lots of sequences. You can construct a
136
+ manageably small alignment of a representative set of sequences,
137
+ build a profile with
138
+ .BR hmmbuild ,
139
+ and use the
140
+ .B hmmalign
141
+ program to align any number of sequences to that profile.
142
+
143
+ HMMER also includes some auxiliary tools for working with large
144
+ profile databases.
145
+ .B hmmfetch
146
+ fetches one or more profiles from a database.
147
+ .B hmmstat
148
+ prints summary statistics about a profile file.
149
+
150
+ For compatibility with other profile software and previous versions of
151
+ HMMER, the
152
+ .B hmmconvert
153
+ program converts profiles to a few other formats. We intend to add
154
+ more support for other formats over time.
155
+
156
+ The
157
+ .B hmmemit
158
+ program generates (simulates) "homologous" sequences by sampling from
159
+ a profile. It can also generate a "consensus" sequence.
160
+
161
+ The
162
+ .B hmmsim
163
+ program is a simulator used for collecting statistics about score
164
+ distributions on random sequences.
165
+
166
+ Each program has its own man page.
167
+
168
+
169
+ .SH SEE ALSO
170
+
171
+ This is a summary man page for the entire HMMER3 package.
172
+ See individual man pages
173
+ [\fBhmmbuild\fR(1),
174
+ for example] for usage, options, and description of each program in the package.
175
+
176
+ .PP
177
+ For complete documentation, see the user guide that came with your
178
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
179
+ (http://hmmer.org/).
180
+
181
+
182
+ .SH COPYRIGHT
183
+
184
+ .nf
185
+ Copyright (C) 2023 Howard Hughes Medical Institute.
186
+ Freely distributed under the BSD open source license.
187
+ .fi
188
+
189
+ For additional information on copyright and licensing, see the file
190
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
191
+ web page
192
+ (http://hmmer.org/).
193
+
194
+
195
+ .SH AUTHOR
196
+
197
+ .nf
198
+ http://eddylab.org
199
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmfetch.1 ADDED
@@ -0,0 +1,213 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmfetch" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmfetch \- retrieve profiles from a file
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .nf
9
+ \fBhmmfetch\fR [\fIoptions\fR] \fIhmmfile key\fR
10
+ (retrieve HMM named \fIkey\fR)
11
+
12
+ \fBhmmfetch \-f \fR[\fIoptions\fR] \fIhmmfile keyfile\fR
13
+ (retrieve all HMMs listed in \fIkeyfile\fR)
14
+
15
+ \fBhmmfetch \-\-index \fR[\fIoptions\fR] \fIhmmfile\fR
16
+ (index \fIhmmfile\fR for fetching)
17
+ .fi
18
+
19
+ .SH DESCRIPTION
20
+
21
+ .PP
22
+ Quickly retrieves one or more profile HMMs from an
23
+ .I hmmfile
24
+ (a large Pfam database, for example).
25
+
26
+ .PP
27
+ For maximum speed, the
28
+ .I hmmfile
29
+ should be indexed first, using
30
+ .BR "hmmfetch \-\-index" .
31
+ The index is a binary file named
32
+ .IR hmmfile .ssi.
33
+ However, this is optional, and retrieval will still
34
+ work from unindexed files, albeit much more slowly.
35
+
36
+ .PP
37
+ The default mode is to retrieve a single profile by name or
38
+ accession, called the
39
+ .IR key .
40
+ For example:
41
+
42
+ .nf
43
+ \fB% hmmfetch Pfam-A.hmm Caudal_act\fR
44
+ \fB% hmmfetch Pfam-A.hmm PF00045\fR
45
+ .fi
46
+
47
+ .PP
48
+ With the
49
+ .B \-f
50
+ option, a
51
+ .I keyfile
52
+ containing a list of one or more keys is read instead.
53
+ The first whitespace-delimited field on each non-blank non-comment
54
+ line of the
55
+ .I keyfile
56
+ is used as a
57
+ .IR key ,
58
+ and any remaining data on the line is ignored. This allows
59
+ a variety of whitespace delimited datafiles to be used
60
+ as a
61
+ .IR keyfile .
62
+
63
+ .PP
64
+ When using
65
+ .B \-f
66
+ and a
67
+ .IR keyfile ,
68
+ if
69
+ .B hmmfile
70
+ has been indexed, the keys are retrieved in the order
71
+ they occur in the
72
+ .IR keyfile ,
73
+ but if
74
+ .B hmmfile
75
+ isn't indexed, keys are retrieved in the order they occur
76
+ in the
77
+ .BR hmmfile .
78
+ This is a side effect of an implementation that allows
79
+ multiple keys to be retrieved even if the
80
+ .B hmmfile
81
+ is a nonrewindable stream, like a standard input pipe.
82
+
83
+ .PP
84
+ In normal use
85
+ (without
86
+ .B \-\-index
87
+ or
88
+ .B \-f
89
+ options),
90
+ .I hmmfile
91
+ may be '\-' (dash), which
92
+ means reading input from stdin rather than a file.
93
+ With the
94
+ .B \-\-index
95
+ option,
96
+ .I hmmfile
97
+ may not be '\-'; it does not make sense
98
+ to index a standard input stream.
99
+ With the
100
+ .B \-f
101
+ option,
102
+ either
103
+ .I hmmfile
104
+ or
105
+ .I keyfile
106
+ (but not both) may be '\-'.
107
+ It is often particularly useful to read
108
+ .I keyfile
109
+ from standard input, because this allows
110
+ use to use arbitrary command line invocations to
111
+ create a list of HMM names or accessions, then fetch them all
112
+ to a new file, just with one command.
113
+
114
+ .PP
115
+ By default, fetched HMMs are printed to standard output in HMMER3 format.
116
+
117
+
118
+ .SH OPTIONS
119
+
120
+ .TP
121
+ .B \-h
122
+ Help; print a brief reminder of command line usage and all available
123
+ options.
124
+
125
+ .TP
126
+ .B \-f
127
+ The second commandline argument is a
128
+ .I keyfile
129
+ instead of a single
130
+ .IR key .
131
+ The first field on each line of the
132
+ .I keyfile
133
+ is used as a retrieval
134
+ .I key
135
+ (an HMM name or accession).
136
+ Blank lines and comment lines (that start with
137
+ a # character) are ignored.
138
+
139
+ .TP
140
+ .BI \-o " <f>"
141
+ Output HMM(s) to file
142
+ .I <f>
143
+ instead of to standard output.
144
+
145
+ .TP
146
+ .B \-O
147
+ Output one retrieved HMM (by
148
+ .IR key )
149
+ to a file named
150
+ .IR key .
151
+ This is a convenience for saving some typing:
152
+ instead of
153
+ .nf
154
+ \fB% hmmfetch \-o RRM_1 hmmfile RRM_1\fR
155
+ .fi
156
+ you can just type
157
+ .nf
158
+ \fB% hmmfetch \-O hmmfile RRM_1\fR
159
+ .fi
160
+ The
161
+ .B \-O
162
+ option only works if you're retrieving a
163
+ single profile; it is incompatible with
164
+ .B \-f.
165
+
166
+
167
+
168
+
169
+ .TP
170
+ .B \-\-index
171
+ Instead of retrieving one or more profiles from
172
+ .IR hmmfile ,
173
+ index the
174
+ .I hmmfile
175
+ for future retrievals.
176
+ This creates a
177
+ .IR hmmfile .ssi
178
+ binary index file.
179
+
180
+
181
+
182
+ .SH SEE ALSO
183
+
184
+ See
185
+ .BR hmmer (1)
186
+ for a master man page with a list of all the individual man pages
187
+ for programs in the HMMER package.
188
+
189
+ .PP
190
+ For complete documentation, see the user guide that came with your
191
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
192
+ (http://hmmer.org/).
193
+
194
+
195
+
196
+ .SH COPYRIGHT
197
+
198
+ .nf
199
+ Copyright (C) 2023 Howard Hughes Medical Institute.
200
+ Freely distributed under the BSD open source license.
201
+ .fi
202
+
203
+ For additional information on copyright and licensing, see the file
204
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
205
+ web page
206
+ (http://hmmer.org/).
207
+
208
+
209
+ .SH AUTHOR
210
+
211
+ .nf
212
+ http://eddylab.org
213
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmlogo.1 ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmlogo" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmlogo \- produce a conservation logo graphic from a profile
5
+
6
+
7
+ .SH SYNOPSIS
8
+ .B hmmlogo
9
+ [\fIoptions\fR]
10
+ .I hmmfile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ .B hmmlogo
17
+ computes letter height and indel parameters that can be used to
18
+ produce a profile HMM logo. This tool is essentially a
19
+ command-line interface for much of the data underlying the Skylign
20
+ logo server (skylign.org).
21
+
22
+ By default,
23
+ .B hmmlogo
24
+ prints out a table of per-position letter heights (dependent on the
25
+ requested height method), then prints a table of per-position gap
26
+ probabilities.
27
+
28
+ In a typical logo, the total height of a stack of letters for one
29
+ position depends on the information content of the position, and
30
+ that stack height is subdivided according to the emission
31
+ probabilities of the letters of the alphabet.
32
+
33
+
34
+ .SH OPTIONS
35
+
36
+ .TP
37
+ .B \-h
38
+ Help; print a brief reminder of command line usage and all available
39
+ options.
40
+
41
+
42
+ .TP
43
+ .B \-\-height_relent_all
44
+ Total height = relative entropy (aka information content); all letters
45
+ are given a positive height. (default)
46
+
47
+ .TP
48
+ .B \-\-height_relent_abovebg
49
+ Total height = relative entropy (aka information content); only letters
50
+ with above-background probability are given positive height.
51
+
52
+ .TP
53
+ .B \-\-height_score
54
+ Total height = sums of scores of positive-scoring letters; letter
55
+ height depends on the score of that letter at that position. Only
56
+ letters with above-background probability (positive score) are
57
+ given positive height. (Note that only letter height is meaningful -
58
+ stack height has no inherent meaning).
59
+
60
+ .TP
61
+ .B \-\-no_indel
62
+ Don't print out the indel probability table.
63
+
64
+
65
+ .SH SEE ALSO
66
+
67
+ See
68
+ .BR hmmer (1)
69
+ for a master man page with a list of all the individual man pages
70
+ for programs in the HMMER package.
71
+
72
+ .PP
73
+ For complete documentation, see the user guide that came with your
74
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
75
+ (http://hmmer.org/).
76
+
77
+
78
+
79
+ .SH COPYRIGHT
80
+
81
+ .nf
82
+ Copyright (C) 2023 Howard Hughes Medical Institute.
83
+ Freely distributed under the BSD open source license.
84
+ .fi
85
+
86
+ For additional information on copyright and licensing, see the file
87
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
88
+ web page
89
+ (http://hmmer.org/).
90
+
91
+
92
+ .SH AUTHOR
93
+
94
+ .nf
95
+ http://eddylab.org
96
+ .fi
97
+
98
+
99
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmpgmd.1 ADDED
@@ -0,0 +1,219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmpgmd" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmpgmd \- daemon for database search web services
5
+
6
+
7
+ .SH SYNOPSIS
8
+ .B hmmpgmd
9
+ [\fIoptions\fR]
10
+
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .PP
15
+ The
16
+ .B hmmpgmd
17
+ program is the daemon that we use internally for the hmmer.org web server.
18
+ It essentially stands in front of the search programs
19
+ .BR phmmer ,
20
+ .BR hmmsearch ,
21
+ and
22
+ .BR hmmscan .
23
+
24
+ .PP
25
+ To use
26
+ .BR hmmpgmd ,
27
+ first an instance must be started up as a
28
+ master
29
+ server, and provided with at least one
30
+ sequence database
31
+ (using the
32
+ .B \-\-seqdb
33
+ flag)
34
+ and/or an
35
+ HMM database
36
+ (using the
37
+ .B \-\-hmmdb
38
+ flag).
39
+ A sequence database must be in hmmpgmd format, which may be
40
+ produced using
41
+ .BR esl-reformat .
42
+ An HMM database is of the form produced by
43
+ .BR hmmbuild .
44
+ The input database(s) will be loaded into memory by the
45
+ master. When the master has finished loading the database(s), it
46
+ prints the line:
47
+ "Data loaded into memory. Master is ready."
48
+
49
+
50
+ .PP
51
+ After the master is ready, one or more instances of hmmpgmd may
52
+ be started as workers. These workers may be (and typically are) on
53
+ different machines from the master, but must have access to the
54
+ same database file(s) provided to the master, with the same path. As
55
+ with the master, each worker loads the database(s) into memory, and
56
+ indicates completion by printing: "Data loaded into memory. Worker is ready."
57
+
58
+
59
+ .PP
60
+ The master process and workers are expected to remain running.
61
+ One or more clients then connect to the master and submit possibly
62
+ many queries. The master distributes the work of a query among the
63
+ workers, collects results, and merges them before responding to the
64
+ client. Two example client programs are included in the HMMER src
65
+ directory - the C program
66
+ .B hmmc2
67
+ and the perl script
68
+ .BR hmmpgmd_client_example.pl .
69
+ These are intended as examples only, and should be extended as
70
+ necessary to meet your needs.
71
+
72
+ .PP
73
+ A query is submitted to the master from the client as a character
74
+ string. Queries may be the sort that would normally be handled
75
+ by
76
+ .B phmmer
77
+ (protein sequence vs protein database),
78
+ .B hmmsearch
79
+ (protein HMM query vs protein database), or
80
+ .B hmmscan
81
+ (protein query vs protein HMM database).
82
+
83
+
84
+ The general form of a client query is to start with a single line
85
+ of the form
86
+ .BR "@[options]" ,
87
+ followed by multiple lines of text representing either the query HMM
88
+ or fasta-formatted sequence. The final line of each query is the separator
89
+ .BR "//" .
90
+
91
+
92
+ .PP
93
+ For example, to perform a
94
+ .B phmmer
95
+ type search of a sequence against a sequence database
96
+ file, the first line is of the form
97
+ .BR "@\-\-seqdb 1" ,
98
+ then the fasta-formatted query sequence starting with the header line
99
+ .BR >sequence-name ,
100
+ followed by one or more lines of sequence, and finally the closing
101
+ .BR "//" .
102
+
103
+ .PP
104
+ To perform an
105
+ .B hmmsearch
106
+ type search, the query sequence is replaced by the full
107
+ text of a HMMER-format query HMM.
108
+
109
+ .PP
110
+ To perform an
111
+ .B hmmscan
112
+ type search, the text matches that of the
113
+ .B phmmer
114
+ type search, except that the first line changes to
115
+ .BR "@\-\-hmmdb 1" .
116
+
117
+ .PP
118
+ In the hmmpgmd-formatted sequence database file, each sequence
119
+ can be associated with one or more sub-databases. The
120
+ .B \-\-seqdb
121
+ flag indicates which of these sub-databases will be queried.
122
+ The HMM database format does not support sub-databases.
123
+
124
+
125
+
126
+
127
+ .SH OPTIONS
128
+
129
+ .TP
130
+ .B \-h
131
+ Help; print a brief reminder of command line usage and all available
132
+ options.
133
+
134
+ .TP
135
+ .BI \-\-master
136
+ Run as the master server.
137
+
138
+ .TP
139
+ .BI \-\-worker " <s>"
140
+ Run as a worker, connecting to the master server that is running on IP
141
+ address
142
+ .IR <s> .
143
+
144
+ .TP
145
+ .BI \-\-cport " <n>"
146
+ Port to use for communication between clients and the master server.
147
+ The default is 51371.
148
+
149
+ .TP
150
+ .BI \-\-wport " <n>"
151
+ Port to use for communication between workers and the master server.
152
+ The default is 51372.
153
+
154
+ .TP
155
+ .BI \-\-ccncts " <n>"
156
+ Maximum number of client connections to accept. The default is 16.
157
+
158
+ .TP
159
+ .BI \-\-wcncts " <n>"
160
+ Maximum number of worker connections to accept. The default is 32.
161
+
162
+ .TP
163
+ .BI \-\-pid " <f>"
164
+ Name of file into which the process id will be written.
165
+
166
+ .TP
167
+ .BI \-\-seqdb " <f>"
168
+ Name of the file (in
169
+ .B hmmpgmd
170
+ format) containing protein sequences.
171
+ The contents of this file will be cached for searches.
172
+
173
+ .TP
174
+ .BI \-\-hmmdb " <f>"
175
+ Name of the file containing protein HMMs. The contents of this file
176
+ will be cached for searches.
177
+
178
+ .TP
179
+ .BI \-\-cpu " <n>"
180
+ Number of parallel threads to use (for
181
+ .B \-\-worker
182
+ ).
183
+
184
+
185
+ .SH SEE ALSO
186
+
187
+ See
188
+ .BR hmmer (1)
189
+ for a master man page with a list of all the individual man pages
190
+ for programs in the HMMER package.
191
+
192
+ .PP
193
+ For complete documentation, see the user guide that came with your
194
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
195
+ (http://hmmer.org/).
196
+
197
+
198
+
199
+ .SH COPYRIGHT
200
+
201
+ .nf
202
+ Copyright (C) 2023 Howard Hughes Medical Institute.
203
+ Freely distributed under the BSD open source license.
204
+ .fi
205
+
206
+ For additional information on copyright and licensing, see the file
207
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
208
+ web page
209
+ (http://hmmer.org/).
210
+
211
+
212
+ .SH AUTHOR
213
+
214
+ .nf
215
+ http://eddylab.org
216
+ .fi
217
+
218
+
219
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmpress.1 ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmpress" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmpress \- prepare a profile database for hmmscan
5
+
6
+ .SH SYNOPSIS
7
+
8
+ .B hmmpress
9
+ [\fIoptions\fR]
10
+ .I hmmfile
11
+
12
+
13
+ .SH DESCRIPTION
14
+
15
+ .PP
16
+ Constructs binary compressed datafiles for
17
+ .BR hmmscan ,
18
+ starting from a profile database
19
+ .I hmmfile
20
+ in standard HMMER3 format.
21
+ The
22
+ .B hmmpress
23
+ step is required for
24
+ .B hmmscan
25
+ to work.
26
+
27
+ .PP
28
+ Four files are created:
29
+ .IB hmmfile .h3m,
30
+ .IB hmmfile .h3i,
31
+ .IB hmmfile .h3f,
32
+ and
33
+ .IB hmmfile .h3p.
34
+ The
35
+ .IB hmmfile .h3m
36
+ file contains the profile HMMs and their annotation in a binary
37
+ format.
38
+ The
39
+ .IB hmmfile .h3i
40
+ file is an SSI index for the
41
+ .IB hmmfile .h3m
42
+ file.
43
+ The
44
+ .IB hmmfile .h3f
45
+ file contains precomputed data structures
46
+ for the fast heuristic filter (the MSV filter).
47
+ The
48
+ .IB hmmfile .h3p
49
+ file contains precomputed data structures
50
+ for the rest of each profile.
51
+
52
+ .PP
53
+ .I hmmfile
54
+ may not be '\-' (dash); running
55
+ .B hmmpress
56
+ on a standard input stream rather than a file
57
+ is not allowed.
58
+
59
+
60
+ .SH OPTIONS
61
+
62
+ .TP
63
+ .B \-h
64
+ Help; print a brief reminder of command line usage and all available
65
+ options.
66
+
67
+ .TP
68
+ .B \-f
69
+ Force; overwrites any previous hmmpress'ed datafiles. The default is
70
+ to bitch about any existing files and ask you to delete them first.
71
+
72
+
73
+
74
+
75
+ .SH SEE ALSO
76
+
77
+ See
78
+ .BR hmmer (1)
79
+ for a master man page with a list of all the individual man pages
80
+ for programs in the HMMER package.
81
+
82
+ .PP
83
+ For complete documentation, see the user guide that came with your
84
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
85
+ (http://hmmer.org/).
86
+
87
+
88
+
89
+ .SH COPYRIGHT
90
+
91
+ .nf
92
+ Copyright (C) 2023 Howard Hughes Medical Institute.
93
+ Freely distributed under the BSD open source license.
94
+ .fi
95
+
96
+ For additional information on copyright and licensing, see the file
97
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
98
+ web page
99
+ (http://hmmer.org/).
100
+
101
+
102
+ .SH AUTHOR
103
+
104
+ .nf
105
+ http://eddylab.org
106
+ .fi
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmscan.1 ADDED
@@ -0,0 +1,470 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmscan" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmscan \- search sequence(s) against a profile database
5
+
6
+
7
+ .SH SYNOPSIS
8
+ .B hmmscan
9
+ [\fIoptions\fR]
10
+ .I hmmdb
11
+ .I seqfile
12
+
13
+
14
+
15
+ .SH DESCRIPTION
16
+
17
+ .PP
18
+ .B hmmscan
19
+ is used to search protein sequences against collections
20
+ of protein profiles. For each sequence in
21
+ .IR seqfile ,
22
+ use that query sequence to search the target database of
23
+ profiles in
24
+ .IR hmmdb ,
25
+ and output ranked lists of the profiles with the
26
+ most significant matches to the sequence.
27
+
28
+ .PP
29
+ The
30
+ .I seqfile
31
+ may contain more than one query sequence. Each will be searched
32
+ in turn against
33
+ .I hmmdb.
34
+
35
+ .PP
36
+ The
37
+ .I hmmdb
38
+ needs to be press'ed using
39
+ .B hmmpress
40
+ before it can be searched with
41
+ .BR hmmscan .
42
+ This creates four binary files,
43
+ suffixed
44
+ .BR .h3{fimp} .
45
+
46
+ .PP
47
+ The query
48
+ .I seqfile
49
+ may be '\-' (a dash character), in which case
50
+ the query sequences are read from a
51
+ stdin
52
+ pipe instead of from a file.
53
+ The
54
+ .I hmmdb
55
+ cannot be read from a
56
+ stdin
57
+ stream, because it needs to have
58
+ those four auxiliary binary files generated by
59
+ .BR hmmpress .
60
+
61
+ .PP
62
+ The output format is designed to be human-readable, but is often so
63
+ voluminous that reading it is impractical, and parsing it is a pain. The
64
+ .B \-\-tblout
65
+ and
66
+ .B \-\-domtblout
67
+ options save output in simple tabular formats that are concise and
68
+ easier to parse.
69
+ The
70
+ .B \-o
71
+ option allows redirecting the main output, including throwing it away
72
+ in /dev/null.
73
+
74
+
75
+
76
+ .SH OPTIONS
77
+
78
+ .TP
79
+ .B \-h
80
+ Help; print a brief reminder of command line usage and all available
81
+ options.
82
+
83
+
84
+
85
+ .SH OPTIONS FOR CONTROLLING OUTPUT
86
+
87
+ .TP
88
+ .BI \-o " <f>"
89
+ Direct the main human-readable output to a file
90
+ .I <f>
91
+ instead of the default stdout.
92
+
93
+ .TP
94
+ .BI \-\-tblout " <f>"
95
+ Save a simple tabular (space-delimited) file summarizing the
96
+ per-target output, with one data line per homologous target model
97
+ found.
98
+
99
+ .TP
100
+ .BI \-\-domtblout " <f>"
101
+ Save a simple tabular (space-delimited) file summarizing the
102
+ per-domain output, with one data line per homologous domain
103
+ detected in a query sequence for each homologous model.
104
+
105
+ .TP
106
+ .BI \-\-pfamtblout " <f>"
107
+ Save an especially succinct tabular (space-delimited) file
108
+ summarizing the per-target output, with one data line per
109
+ homologous target model found.
110
+
111
+
112
+ .TP
113
+ .B \-\-acc
114
+ Use accessions instead of names in the main output, where available
115
+ for profiles and/or sequences.
116
+
117
+ .TP
118
+ .B \-\-noali
119
+ Omit the alignment section from the main output. This can greatly
120
+ reduce the output volume.
121
+
122
+ .TP
123
+ .B \-\-notextw
124
+ Unlimit the length of each line in the main output. The default
125
+ is a limit of 120 characters per line, which helps in displaying
126
+ the output cleanly on terminals and in editors, but can truncate
127
+ target profile description lines.
128
+
129
+ .TP
130
+ .BI \-\-textw " <n>"
131
+ Set the main output's line length limit to
132
+ .I <n>
133
+ characters per line. The default is 120.
134
+
135
+
136
+
137
+ .SH OPTIONS FOR REPORTING THRESHOLDS
138
+
139
+ Reporting thresholds control which hits are reported in output files
140
+ (the main output,
141
+ .BR \-\-tblout ,
142
+ and
143
+ .BR \-\-domtblout ).
144
+
145
+ .TP
146
+ .BI \-E " <x>"
147
+ In the per-target output, report target profiles with an E-value of <=
148
+ .IR <x> .
149
+ The default is 10.0, meaning that on average, about 10 false positives
150
+ will be reported per query, so you can see the top of the noise
151
+ and decide for yourself if it's really noise.
152
+
153
+ .TP
154
+ .BI \-T " <x>"
155
+ Instead of thresholding per-profile output on E-value, instead
156
+ report target profiles with a bit score of >=
157
+ .IR <x> .
158
+
159
+ .TP
160
+ .BI \-\-domE " <x>"
161
+ In the per-domain output, for target profiles that have already satisfied
162
+ the per-profile reporting threshold, report individual domains
163
+ with a conditional E-value of <=
164
+ .IR <x> .
165
+ The default is 10.0.
166
+ A conditional E-value means the expected number of additional false
167
+ positive domains in the smaller search space of those comparisons that
168
+ already satisfied the per-profile reporting threshold (and thus must
169
+ have at least one homologous domain already).
170
+
171
+
172
+ .TP
173
+ .BI \-\-domT " <x>"
174
+ Instead of thresholding per-domain output on E-value, instead
175
+ report domains with a bit score of >=
176
+ .IR <x> .
177
+
178
+
179
+
180
+
181
+ .SH OPTIONS FOR INCLUSION THRESHOLDS
182
+
183
+ Inclusion thresholds are stricter than reporting thresholds.
184
+ Inclusion thresholds control which hits are considered to be
185
+ reliable enough
186
+ to be included in an output alignment or a subsequent search round.
187
+ In
188
+ .BR hmmscan ,
189
+ which does not have any alignment output (like
190
+ .B hmmsearch
191
+ or
192
+ .BR phmmer )
193
+ nor any iterative search steps (like
194
+ .BR jackhmmer ),
195
+ inclusion thresholds have little effect. They only affect what domains
196
+ get marked as significant (!) or questionable (?) in domain
197
+ output.
198
+
199
+ .TP
200
+ .BI \-\-incE " <x>"
201
+ Use an E-value of <=
202
+ .I <x>
203
+ as the per-target inclusion threshold.
204
+ The default is 0.01, meaning that on average, about 1 false positive
205
+ would be expected in every 100 searches with different query
206
+ sequences.
207
+
208
+ .TP
209
+ .BI \-\-incT " <x>"
210
+ Instead of using E-values for setting the inclusion threshold, instead
211
+ use a bit score of >=
212
+ .I <x>
213
+ as the per-target inclusion threshold.
214
+ It would be unusual to use bit score thresholds with
215
+ .IR hmmscan ,
216
+ because you don't expect a single score threshold to work for
217
+ different profiles; different profiles have slightly different
218
+ expected score distributions.
219
+
220
+ .TP
221
+ .BI \-\-incdomE " <x>"
222
+ Use a conditional E-value of <=
223
+ .I <x>
224
+ as the per-domain inclusion threshold, in targets that have already
225
+ satisfied the overall per-target inclusion threshold.
226
+ The default is 0.01.
227
+
228
+ .TP
229
+ .BI \-\-incdomT " <x>"
230
+ Instead of using E-values,
231
+ instead use a bit score of >=
232
+ .I <x>
233
+ as the per-domain inclusion threshold.
234
+ As with
235
+ .B \-\-incT
236
+ above,
237
+ it would be unusual to use a single bit score threshold in
238
+ .BR hmmscan .
239
+
240
+
241
+
242
+ .SH OPTIONS FOR MODEL-SPECIFIC SCORE THRESHOLDING
243
+
244
+ Curated profile databases may define specific bit score thresholds for
245
+ each profile, superseding any thresholding based on statistical
246
+ significance alone.
247
+
248
+ To use these options, the profile must contain the appropriate (GA,
249
+ TC, and/or NC) optional score threshold annotation; this is picked up
250
+ by
251
+ .B hmmbuild
252
+ from Stockholm format alignment files. Each thresholding option has
253
+ two scores: the per-sequence threshold
254
+ .I <x1>
255
+ and the per-domain threshold
256
+ .IR <x2> .
257
+ These act as if
258
+ .BI \-T " <x1>"
259
+ .BI \-\-incT " <x1>"
260
+ .BI \-\-domT " <x2>"
261
+ .BI \-\-incdomT " <x2>"
262
+ has been applied specifically using each model's curated thresholds.
263
+
264
+ .TP
265
+ .B \-\-cut_ga
266
+ Use the GA (gathering) bit scores in the model to set
267
+ per-sequence (GA1) and per-domain (GA2) reporting and inclusion
268
+ thresholds. GA thresholds are generally considered to be the
269
+ reliable curated thresholds defining family membership; for example,
270
+ in Pfam, these thresholds define what gets included in Pfam Full
271
+ alignments based on searches with Pfam Seed models.
272
+
273
+ .TP
274
+ .B \-\-cut_nc
275
+ Use the NC (noise cutoff) bit score thresholds in the model to set
276
+ per-sequence (NC1) and per-domain (NC2) reporting and inclusion
277
+ thresholds. NC thresholds are generally considered to be the score of
278
+ the highest-scoring known false positive.
279
+
280
+ .TP
281
+ .B \-\-cut_tc
282
+ Use the NC (trusted cutoff) bit score thresholds in the model to set
283
+ per-sequence (TC1) and per-domain (TC2) reporting and inclusion
284
+ thresholds. TC thresholds are generally considered to be the score of
285
+ the lowest-scoring known true positive that is above all known false
286
+ positives.
287
+
288
+
289
+
290
+
291
+ .SH CONTROL OF THE ACCELERATION PIPELINE
292
+
293
+ HMMER3 searches are accelerated in a three-step filter pipeline: the
294
+ MSV filter, the Viterbi filter, and the Forward filter. The first
295
+ filter is the fastest and most approximate; the last is the full
296
+ Forward scoring algorithm. There is also a bias filter step between
297
+ MSV and Viterbi. Targets that pass all the steps in the acceleration
298
+ pipeline are then subjected to postprocessing -- domain
299
+ identification and scoring using the Forward/Backward algorithm.
300
+
301
+ Changing filter thresholds only removes or includes targets from
302
+ consideration; changing filter thresholds does not alter bit scores,
303
+ E-values, or alignments, all of which are determined solely in
304
+ postprocessing.
305
+
306
+ .TP
307
+ .B \-\-max
308
+ Turn off all filters, including the bias filter, and run full
309
+ Forward/Backward postprocessing on every target. This increases
310
+ sensitivity somewhat, at a large cost in speed.
311
+
312
+ .TP
313
+ .BI \-\-F1 " <x>"
314
+ Set the P-value threshold for the MSV filter step. The default is
315
+ 0.02, meaning that roughly 2% of the highest scoring nonhomologous
316
+ targets are expected to pass the filter.
317
+
318
+ .TP
319
+ .BI \-\-F2 " <x>"
320
+ Set the P-value threshold for the Viterbi filter step.
321
+ The default is 0.001.
322
+
323
+ .TP
324
+ .BI \-\-F3 " <x>"
325
+ Set the P-value threshold for the Forward filter step.
326
+ The default is 1e-5.
327
+
328
+ .TP
329
+ .B \-\-nobias
330
+ Turn off the bias filter. This increases sensitivity somewhat, but can
331
+ come at a high cost in speed, especially if the query has biased
332
+ residue composition (such as a repetitive sequence region, or if it is
333
+ a membrane protein with large regions of hydrophobicity). Without the
334
+ bias filter, too many sequences may pass the filter with biased
335
+ queries, leading to slower than expected performance as the
336
+ computationally intensive Forward/Backward algorithms shoulder an
337
+ abnormally heavy load.
338
+
339
+
340
+
341
+ .SH OTHER OPTIONS
342
+
343
+ .TP
344
+ .B \-\-nonull2
345
+ Turn off the null2 score corrections for biased composition.
346
+
347
+ .TP
348
+ .BI \-Z " <x>"
349
+ Assert that the total number of targets in your searches is
350
+ .IR <x> ,
351
+ for the purposes of per-sequence E-value calculations,
352
+ rather than the actual number of targets seen.
353
+
354
+ .TP
355
+ .BI \-\-domZ " <x>"
356
+ Assert that the total number of targets in your searches is
357
+ .IR <x> ,
358
+ for the purposes of per-domain conditional E-value calculations,
359
+ rather than the number of targets that passed the reporting thresholds.
360
+
361
+ .TP
362
+ .BI \-\-seed " <n>"
363
+ Set the random number seed to
364
+ .IR <n> .
365
+ Some steps in postprocessing require Monte Carlo simulation. The
366
+ default is to use a fixed seed (42), so that results are exactly
367
+ reproducible. Any other positive integer will give different (but also
368
+ reproducible) results. A choice of 0 uses an arbitrarily chosen seed.
369
+
370
+ .TP
371
+ .BI \-\-qformat " <s>"
372
+ Assert that input
373
+ .I seqfile
374
+ is in format
375
+ .IR <s> ,
376
+ bypassing format autodetection.
377
+ Common choices for
378
+ .I <s>
379
+ include:
380
+ .BR fasta ,
381
+ .BR embl ,
382
+ .BR genbank.
383
+ Alignment formats also work;
384
+ common choices include:
385
+ .BR stockholm ,
386
+ .BR a2m ,
387
+ .BR afa ,
388
+ .BR psiblast ,
389
+ .BR clustal ,
390
+ .BR phylip .
391
+ For more information, and for codes for some less common formats,
392
+ see main documentation.
393
+ The string
394
+ .I <s>
395
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
396
+
397
+
398
+
399
+ .TP
400
+ .BI \-\-cpu " <n>"
401
+ Set the number of parallel worker threads to
402
+ .IR <n> .
403
+ The default is 0, meaning off (no thread-level parallelization), because
404
+ .B hmmscan
405
+ is typically i/o bound and the extra overhead of our current
406
+ multithreaded
407
+ implementation isn't worthwhile.
408
+ You can also control this number by setting an environment variable,
409
+ .IR HMMER_NCPU .
410
+ There is also a master thread, so the actual number of threads that
411
+ HMMER spawns is at least
412
+ .IR <n> +1.
413
+
414
+ This option is not available if HMMER was compiled with POSIX threads
415
+ support turned off.
416
+
417
+
418
+ .TP
419
+ .BI \-\-stall
420
+ For debugging the MPI master/worker version: pause after start, to
421
+ enable the developer to attach debuggers to the running master and
422
+ worker(s) processes. Send SIGCONT signal to release the pause.
423
+ (Under gdb:
424
+ .BR "(gdb) signal SIGCONT" )
425
+
426
+ (Only available if optional MPI support was enabled at compile-time.)
427
+
428
+ .TP
429
+ .B \-\-mpi
430
+ Run under MPI control with master/worker parallelization (using
431
+ .BR mpirun ,
432
+ for example, or equivalent). Only available if optional MPI support
433
+ was enabled at compile-time.
434
+
435
+
436
+
437
+
438
+ .SH SEE ALSO
439
+
440
+ See
441
+ .BR hmmer (1)
442
+ for a master man page with a list of all the individual man pages
443
+ for programs in the HMMER package.
444
+
445
+ .PP
446
+ For complete documentation, see the user guide that came with your
447
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
448
+ (http://hmmer.org/).
449
+
450
+
451
+
452
+ .SH COPYRIGHT
453
+
454
+ .nf
455
+ Copyright (C) 2023 Howard Hughes Medical Institute.
456
+ Freely distributed under the BSD open source license.
457
+ .fi
458
+
459
+ For additional information on copyright and licensing, see the file
460
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
461
+ web page
462
+ (http://hmmer.org/).
463
+
464
+
465
+ .SH AUTHOR
466
+
467
+ .nf
468
+ http://eddylab.org
469
+ .fi
470
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmsearch.1 ADDED
@@ -0,0 +1,444 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmsearch" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmsearch \- search profile(s) against a sequence database
5
+
6
+
7
+ .SH SYNOPSIS
8
+ .B hmmsearch
9
+ [\fIoptions\fR]
10
+ .I hmmfile
11
+ .I seqdb
12
+
13
+
14
+ .SH DESCRIPTION
15
+
16
+ .PP
17
+ .B hmmsearch
18
+ is used to search one or more profiles against a sequence database.
19
+ For each profile in
20
+ .IR hmmfile ,
21
+ use that query profile to search the target database of sequences in
22
+ .IR seqdb ,
23
+ and output ranked lists of the sequences with the most significant
24
+ matches to the profile.
25
+ To build profiles from multiple alignments, see
26
+ .BR hmmbuild .
27
+
28
+ .PP
29
+ Either the query
30
+ .I hmmfile
31
+ or the target
32
+ .I seqdb
33
+ may be '\-' (a dash character), in which case
34
+ the query profile or target database input will be read from a
35
+ stdin
36
+ pipe instead of from a
37
+ file. Only one input source can come through
38
+ stdin,
39
+ not both.
40
+ An exception is that if the
41
+ .I hmmfile
42
+ contains more than one profile query, then
43
+ .I seqdb
44
+ cannot come from stdin, because we can't rewind the
45
+ streaming target database to search it with another profile.
46
+
47
+ .PP
48
+ The output format is designed to be human-readable, but is often so
49
+ voluminous that reading it is impractical, and parsing it is a pain. The
50
+ .B \-\-tblout
51
+ and
52
+ .B \-\-domtblout
53
+ options save output in simple tabular formats that are concise and
54
+ easier to parse.
55
+ The
56
+ .B \-o
57
+ option allows redirecting the main output, including throwing it away
58
+ in /dev/null.
59
+
60
+
61
+
62
+ .SH OPTIONS
63
+
64
+ .TP
65
+ .B \-h
66
+ Help; print a brief reminder of command line usage and all available
67
+ options.
68
+
69
+
70
+
71
+ .SH OPTIONS FOR CONTROLLING OUTPUT
72
+
73
+ .TP
74
+ .BI \-o " <f>"
75
+ Direct the main human-readable output to a file
76
+ .I <f>
77
+ instead of the default stdout.
78
+
79
+ .TP
80
+ .BI \-A " <f>"
81
+ Save a multiple alignment of all significant hits (those satisfying
82
+ .IR "inclusion thresholds" )
83
+ to the file
84
+ .IR <f> .
85
+
86
+ .TP
87
+ .BI \-\-tblout " <f>"
88
+ Save a simple tabular (space-delimited) file summarizing the
89
+ per-target output, with one data line per homologous target sequence
90
+ found.
91
+
92
+ .TP
93
+ .BI \-\-domtblout " <f>"
94
+ Save a simple tabular (space-delimited) file summarizing the
95
+ per-domain output, with one data line per homologous domain
96
+ detected in a query sequence for each homologous model.
97
+
98
+ .TP
99
+ .B \-\-acc
100
+ Use accessions instead of names in the main output, where available
101
+ for profiles and/or sequences.
102
+
103
+ .TP
104
+ .B \-\-noali
105
+ Omit the alignment section from the main output. This can greatly
106
+ reduce the output volume.
107
+
108
+ .TP
109
+ .B \-\-notextw
110
+ Unlimit the length of each line in the main output. The default
111
+ is a limit of 120 characters per line, which helps in displaying
112
+ the output cleanly on terminals and in editors, but can truncate
113
+ target profile description lines.
114
+
115
+ .TP
116
+ .BI \-\-textw " <n>"
117
+ Set the main output's line length limit to
118
+ .I <n>
119
+ characters per line. The default is 120.
120
+
121
+
122
+
123
+ .SH OPTIONS CONTROLLING REPORTING THRESHOLDS
124
+
125
+ Reporting thresholds control which hits are reported in output files
126
+ (the main output,
127
+ .BR \-\-tblout ,
128
+ and
129
+ .BR \-\-domtblout ).
130
+ Sequence hits and domain hits are ranked by statistical significance
131
+ (E-value) and output is generated in two sections called per-target
132
+ and per-domain output. In per-target output, by default, all
133
+ sequence hits with an E-value <= 10 are reported. In the per-domain
134
+ output, for each target that has passed per-target reporting
135
+ thresholds, all domains satisfying per-domain reporting thresholds are
136
+ reported. By default, these are domains with conditional E-values of
137
+ <= 10. The following options allow you to change the default
138
+ E-value reporting thresholds, or to use bit score thresholds instead.
139
+
140
+
141
+ .TP
142
+ .BI \-E " <x>"
143
+ In the per-target output, report target sequences with an E-value of <=
144
+ .IR <x> .
145
+ The default is 10.0, meaning that on average, about 10 false positives
146
+ will be reported per query, so you can see the top of the noise
147
+ and decide for yourself if it's really noise.
148
+
149
+ .TP
150
+ .BI \-T " <x>"
151
+ Instead of thresholding per-profile output on E-value, instead
152
+ report target sequences with a bit score of >=
153
+ .IR <x> .
154
+
155
+ .TP
156
+ .BI \-\-domE " <x>"
157
+ In the per-domain output, for target sequences that have already satisfied
158
+ the per-profile reporting threshold, report individual domains
159
+ with a conditional E-value of <=
160
+ .IR <x> .
161
+ The default is 10.0.
162
+ A conditional E-value means the expected number of additional false
163
+ positive domains in the smaller search space of those comparisons that
164
+ already satisfied the per-target reporting threshold (and thus must
165
+ have at least one homologous domain already).
166
+
167
+
168
+ .TP
169
+ .BI \-\-domT " <x>"
170
+ Instead of thresholding per-domain output on E-value, instead
171
+ report domains with a bit score of >=
172
+ .IR <x> .
173
+
174
+
175
+
176
+
177
+ .SH OPTIONS FOR INCLUSION THRESHOLDS
178
+
179
+ Inclusion thresholds are stricter than reporting thresholds.
180
+ Inclusion thresholds control which hits are considered to be reliable
181
+ enough to be included in an output alignment or a subsequent search
182
+ round, or marked as significant ("!") as opposed to questionable ("?")
183
+ in domain output.
184
+
185
+ .TP
186
+ .BI \-\-incE " <x>"
187
+ Use an E-value of <=
188
+ .I <x>
189
+ as the per-target inclusion threshold.
190
+ The default is 0.01, meaning that on average, about 1 false positive
191
+ would be expected in every 100 searches with different query
192
+ sequences.
193
+
194
+ .TP
195
+ .BI \-\-incT " <x>"
196
+ Instead of using E-values for setting the inclusion threshold, instead
197
+ use a bit score of >=
198
+ .I <x>
199
+ as the per-target inclusion threshold.
200
+ By default this option is unset.
201
+
202
+ .TP
203
+ .BI \-\-incdomE " <x>"
204
+ Use a conditional E-value of <=
205
+ .I <x>
206
+ as the per-domain inclusion threshold, in targets that have already
207
+ satisfied the overall per-target inclusion threshold.
208
+ The default is 0.01.
209
+
210
+ .TP
211
+ .BI \-\-incdomT " <x>"
212
+ Instead of using E-values,
213
+ use a bit score of >=
214
+ .I <x>
215
+ as the per-domain inclusion threshold.
216
+
217
+
218
+
219
+ .SH OPTIONS FOR MODEL-SPECIFIC SCORE THRESHOLDING
220
+
221
+ Curated profile databases may define specific bit score thresholds for
222
+ each profile, superseding any thresholding based on statistical
223
+ significance alone.
224
+
225
+ To use these options, the profile must contain the appropriate (GA,
226
+ TC, and/or NC) optional score threshold annotation; this is picked up
227
+ by
228
+ .B hmmbuild
229
+ from Stockholm format alignment files. Each thresholding option has
230
+ two scores: the per-sequence threshold <x1> and the per-domain
231
+ threshold <x2>
232
+ These act as if
233
+ .BI \-T " <x1>"
234
+ .BI \-\-incT " <x1>"
235
+ .BI \-\-domT " <x2>"
236
+ .BI \-\-incdomT " <x2>"
237
+ has been applied specifically using each model's curated thresholds.
238
+
239
+ .TP
240
+ .B \-\-cut_ga
241
+ Use the GA (gathering) bit scores in the model to set
242
+ per-sequence (GA1) and per-domain (GA2) reporting and inclusion
243
+ thresholds. GA thresholds are generally considered to be the
244
+ reliable curated thresholds defining family membership; for example,
245
+ in Pfam, these thresholds define what gets included in Pfam Full
246
+ alignments based on searches with Pfam Seed models.
247
+
248
+ .TP
249
+ .B \-\-cut_nc
250
+ Use the NC (noise cutoff) bit score thresholds in the model to set
251
+ per-sequence (NC1) and per-domain (NC2) reporting and inclusion
252
+ thresholds. NC thresholds are generally considered to be the score of
253
+ the highest-scoring known false positive.
254
+
255
+ .TP
256
+ .B \-\-cut_tc
257
+ Use the TC (trusted cutoff) bit score thresholds in the model to set
258
+ per-sequence (TC1) and per-domain (TC2) reporting and inclusion
259
+ thresholds. TC thresholds are generally considered to be the score of
260
+ the lowest-scoring known true positive that is above all known false
261
+ positives.
262
+
263
+
264
+
265
+
266
+ .SH OPTIONS CONTROLLING THE ACCELERATION PIPELINE
267
+
268
+ HMMER3 searches are accelerated in a three-step filter pipeline: the
269
+ MSV filter, the Viterbi filter, and the Forward filter. The first
270
+ filter is the fastest and most approximate; the last is the full
271
+ Forward scoring algorithm. There is also a bias filter step between
272
+ MSV and Viterbi. Targets that pass all the steps in the acceleration
273
+ pipeline are then subjected to postprocessing -- domain
274
+ identification and scoring using the Forward/Backward algorithm.
275
+
276
+ Changing filter thresholds only removes or includes targets from
277
+ consideration; changing filter thresholds does not alter bit scores,
278
+ E-values, or alignments, all of which are determined solely in
279
+ postprocessing.
280
+
281
+ .TP
282
+ .B \-\-max
283
+ Turn off all filters, including the bias filter, and run full
284
+ Forward/Backward postprocessing on every target. This increases
285
+ sensitivity somewhat, at a large cost in speed.
286
+
287
+ .TP
288
+ .BI \-\-F1 " <x>"
289
+ Set the P-value threshold for the MSV filter step. The default is
290
+ 0.02, meaning that roughly 2% of the highest scoring nonhomologous
291
+ targets are expected to pass the filter.
292
+
293
+ .TP
294
+ .BI \-\-F2 " <x>"
295
+ Set the P-value threshold for the Viterbi filter step.
296
+ The default is 0.001.
297
+
298
+ .TP
299
+ .BI \-\-F3 " <x>"
300
+ Set the P-value threshold for the Forward filter step.
301
+ The default is 1e-5.
302
+
303
+ .TP
304
+ .B \-\-nobias
305
+ Turn off the bias filter. This increases sensitivity somewhat, but can
306
+ come at a high cost in speed, especially if the query has biased
307
+ residue composition (such as a repetitive sequence region, or if it is
308
+ a membrane protein with large regions of hydrophobicity). Without the
309
+ bias filter, too many sequences may pass the filter with biased
310
+ queries, leading to slower than expected performance as the
311
+ computationally intensive Forward/Backward algorithms shoulder an
312
+ abnormally heavy load.
313
+
314
+
315
+
316
+ .SH OTHER OPTIONS
317
+
318
+ .TP
319
+ .B \-\-nonull2
320
+ Turn off the null2 score corrections for biased composition.
321
+
322
+ .TP
323
+ .BI \-Z " <x>"
324
+ Assert that the total number of targets in your searches is
325
+ .IR <x> ,
326
+ for the purposes of per-sequence E-value calculations,
327
+ rather than the actual number of targets seen.
328
+
329
+ .TP
330
+ .BI \-\-domZ " <x>"
331
+ Assert that the total number of targets in your searches is
332
+ .IR <x> ,
333
+ for the purposes of per-domain conditional E-value calculations,
334
+ rather than the number of targets that passed the reporting thresholds.
335
+
336
+ .TP
337
+ .BI \-\-seed " <n>"
338
+ Set the random number seed to
339
+ .IR <n> .
340
+ Some steps in postprocessing require Monte Carlo simulation. The
341
+ default is to use a fixed seed (42), so that results are exactly
342
+ reproducible. Any other positive integer will give different (but also
343
+ reproducible) results. A choice of 0 uses a randomly chosen seed.
344
+
345
+ .TP
346
+ .BI \-\-tformat " <s>"
347
+ Assert that target sequence file
348
+ .I seqfile
349
+ is in format
350
+ .IR <s> ,
351
+ bypassing format autodetection.
352
+ Common choices for
353
+ .I <s>
354
+ include:
355
+ .BR fasta ,
356
+ .BR embl ,
357
+ .BR genbank.
358
+ Alignment formats also work;
359
+ common choices include:
360
+ .BR stockholm ,
361
+ .BR a2m ,
362
+ .BR afa ,
363
+ .BR psiblast ,
364
+ .BR clustal ,
365
+ .BR phylip .
366
+ For more information, and for codes for some less common formats,
367
+ see main documentation.
368
+ The string
369
+ .I <s>
370
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
371
+
372
+ .TP
373
+ .BI \-\-cpu " <n>"
374
+ Set the number of parallel worker threads to
375
+ .IR <n> .
376
+ On multicore machines, the default is 2.
377
+ You can also control this number by setting an environment variable,
378
+ .IR HMMER_NCPU .
379
+ There is also a master thread, so the actual number of threads that
380
+ HMMER spawns is
381
+ .IR <n> +1.
382
+
383
+ This option is not available if HMMER was compiled with POSIX threads
384
+ support turned off.
385
+
386
+
387
+ .TP
388
+ .BI \-\-stall
389
+ For debugging the MPI master/worker version: pause after start, to
390
+ enable the developer to attach debuggers to the running master and
391
+ worker(s) processes. Send SIGCONT signal to release the pause.
392
+ (Under gdb:
393
+ .BR "(gdb) signal SIGCONT" )
394
+ (Only available if optional MPI support was enabled at compile-time.)
395
+
396
+
397
+
398
+ .TP
399
+ .B \-\-mpi
400
+ Run under MPI control with master/worker parallelization (using
401
+ .BR mpirun ,
402
+ for example, or equivalent). Only available if optional MPI support
403
+ was enabled at compile-time.
404
+
405
+
406
+
407
+
408
+
409
+
410
+ .SH SEE ALSO
411
+
412
+ See
413
+ .BR hmmer (1)
414
+ for a master man page with a list of all the individual man pages
415
+ for programs in the HMMER package.
416
+
417
+ .PP
418
+ For complete documentation, see the user guide that came with your
419
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
420
+ (http://hmmer.org/).
421
+
422
+
423
+
424
+ .SH COPYRIGHT
425
+
426
+ .nf
427
+ Copyright (C) 2023 Howard Hughes Medical Institute.
428
+ Freely distributed under the BSD open source license.
429
+ .fi
430
+
431
+ For additional information on copyright and licensing, see the file
432
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
433
+ web page
434
+ (http://hmmer.org/).
435
+
436
+
437
+ .SH AUTHOR
438
+
439
+ .nf
440
+ http://eddylab.org
441
+ .fi
442
+
443
+
444
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/hmmsim.1 ADDED
@@ -0,0 +1,515 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "hmmsim" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ hmmsim \- collect profile score distributions on random sequences
5
+
6
+ .SH SYNOPSIS
7
+ .B hmmsim
8
+ [\fIoptions\fR]
9
+ .I hmmfile
10
+
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .PP
15
+ The
16
+ .B hmmsim
17
+ program generates random sequences, scores them with the model(s) in
18
+ .IR hmmfile ,
19
+ and outputs various sorts of histograms, plots, and fitted
20
+ distributions for the resulting scores.
21
+
22
+ .PP
23
+ .B hmmsim
24
+ is not a mainstream part of the HMMER package and most users would have
25
+ no reason to use it. It is used to develop and test the statistical
26
+ methods used to determine P-values and E-values in HMMER3. For
27
+ example, it was used to generate most of the results in a 2008 paper
28
+ on H3's local alignment statistics (PLoS Comp Bio 4:e1000069, 2008;
29
+ http://www.ploscompbiol.org/doi/pcbi.1000069).
30
+
31
+ .PP
32
+ Because it is a research testbed, you should not expect it to be as
33
+ robust as other programs in the package. For example, options may
34
+ interact in weird ways; we haven't tested nor tried to anticipate all
35
+ different possible combinations.
36
+
37
+ .PP
38
+ The main task is to fit a maximum likelihood Gumbel distribution to
39
+ Viterbi scores or an maximum likelihood exponential tail to
40
+ high-scoring Forward scores, and to test that these fitted
41
+ distributions obey the conjecture that lambda ~ log_2 for both the
42
+ Viterbi Gumbel and the Forward exponential tail.
43
+
44
+ .PP
45
+ The output is a table of numbers, one row for each model. Four
46
+ different parametric fits to the score data are tested: (1) maximum
47
+ likelihood fits to both location (mu/tau) and slope (lambda)
48
+ parameters; (2) assuming lambda=log_2, maximum likelihood fit to the
49
+ location parameter only; (3) same but assuming an edge-corrected
50
+ lambda, using current procedures in H3 [Eddy, 2008]; and (4) using
51
+ both parameters determined by H3's current procedures. The standard
52
+ simple, quick and dirty statistic for goodness-of-fit is 'E@10', the
53
+ calculated E-value of the 10th ranked top hit, which we expect to be
54
+ about 10.
55
+
56
+ .PP
57
+ In detail, the columns of the output are:
58
+
59
+ .TP
60
+ .B name
61
+ Name of the model.
62
+
63
+ .TP
64
+ .B tailp
65
+ Fraction of the highest scores used to fit the distribution. For
66
+ Viterbi, MSV, and Hybrid scores, this defaults to 1.0 (a Gumbel
67
+ distribution is fitted to all the data). For Forward scores, this
68
+ defaults to 0.02 (an exponential tail is fitted to the highest 2%
69
+ scores).
70
+
71
+ .TP
72
+ .B mu/tau
73
+ Location parameter for the maximum likelihood fit to the data.
74
+
75
+ .TP
76
+ .B lambda
77
+ Slope parameter for the maximum likelihood fit to the data.
78
+
79
+ .TP
80
+ .B E@10
81
+ The E-value calculated for the 10th ranked high score ('E@10') using the ML
82
+ mu/tau and lambda. By definition, this expected to be about 10, if
83
+ E-value estimation were accurate.
84
+
85
+ .TP
86
+ .B mufix
87
+ Location parameter, for a maximum likelihood fit with a known (fixed)
88
+ slope parameter lambda of log_2 (0.693).
89
+
90
+ .TP
91
+ .B E@10fix
92
+ The E-value calculated for the 10th ranked score using mufix and the
93
+ expected lambda = log_2 = 0.693.
94
+
95
+
96
+ .TP
97
+ .B mufix2
98
+ Location parameter, for a maximum likelihood fit with an
99
+ edge-effect-corrected lambda.
100
+
101
+ .TP
102
+ .B E@10fix2
103
+ The E-value calculated for the 10th ranked score using mufix2 and the
104
+ edge-effect-corrected lambda.
105
+
106
+ .TP
107
+ .B pmu
108
+ Location parameter as determined by H3's estimation procedures.
109
+
110
+ .TP
111
+ .B plambda
112
+ Slope parameter as determined by H3's estimation procedures.
113
+
114
+ .TP
115
+ .B pE@10
116
+ The E-value calculated for the 10th ranked score using pmu, plambda.
117
+
118
+
119
+ .PP
120
+ At the end of this table, one more line is printed, starting with #
121
+ and summarizing the overall CPU time used by the simulations.
122
+
123
+ .PP
124
+ Some of the optional output files are in xmgrace xy format. xmgrace is
125
+ powerful and freely available graph-plotting software.
126
+
127
+
128
+ .SH OPTIONS
129
+
130
+ .TP
131
+ .B \-h
132
+ Help; print a brief reminder of command line usage and all available
133
+ options.
134
+
135
+ .TP
136
+ .B \-a
137
+ Collect expected Viterbi alignment length statistics from each
138
+ simulated sequence. This only works with Viterbi scores (the default;
139
+ see
140
+ .BR \-\-vit ).
141
+ Two additional fields are printed in the output table for
142
+ each model: the mean length of Viterbi alignments, and the standard
143
+ deviation.
144
+
145
+ .TP
146
+ .B \-v
147
+ (Verbose). Print the scores too, one score per line.
148
+
149
+ .TP
150
+ .BI \-L " <n>"
151
+ Set the length of the randomly sampled (nonhomologous) sequences to
152
+ .IR <n> .
153
+ The default is 100.
154
+
155
+
156
+ .TP
157
+ .BI \-N " <n>"
158
+ Set the number of randomly sampled sequences to
159
+ .IR <n> .
160
+ The default is 1000.
161
+
162
+ .TP
163
+ .B \-\-mpi
164
+ Run under MPI control with master/worker parallelization (using
165
+ .BR mpirun ,
166
+ for example, or equivalent). Only available if optional MPI support
167
+ was enabled at compile-time.
168
+
169
+ It is parallelized at the level of sending one profile at a time to an
170
+ MPI worker process, so parallelization only helps if you have more
171
+ than one profile in the
172
+ .IR hmmfile ,
173
+ and you want to have at least as many profiles as MPI worker
174
+ processes.
175
+
176
+
177
+
178
+
179
+ .SH OPTIONS CONTROLLING OUTPUT
180
+
181
+ .TP
182
+ .BI \-o " <f>"
183
+ Save the main output table to a file
184
+ .I <f>
185
+ rather than sending it to stdout.
186
+
187
+ .TP
188
+ .BI \-\-afile " <f>"
189
+ When collecting Viterbi alignment statistics (the
190
+ .B \-a
191
+ option), for each sampled sequence, output two fields per
192
+ line to a file
193
+ .IR <f> :
194
+ the length of the optimal alignment, and the Viterbi bit score.
195
+ Requires that the
196
+ .B \-a
197
+ option is also used.
198
+
199
+ .TP
200
+ .BI \-\-efile " <f>"
201
+ Output a rank vs. E-value plot in XMGRACE xy format to file
202
+ .IR <f> .
203
+ The x-axis is the rank of this sequence, from highest score to lowest;
204
+ the y-axis is the E-value calculated for this sequence. E-values are
205
+ calculated using H3's default procedures (i.e. the pmu, plambda
206
+ parameters in the output table). You expect a rough match between rank
207
+ and E-value if E-values are accurately estimated.
208
+
209
+
210
+ .TP
211
+ .BI \-\-ffile " <f>"
212
+ Output a "filter power" file to
213
+ .IR <f> :
214
+ for each model, a line with three fields:
215
+ model name, number of sequences passing the P-value threshold,
216
+ and fraction of sequences passing the P-value threshold. See
217
+ .B \-\-pthresh
218
+ for setting the P-value threshold, which defaults to 0.02 (the default
219
+ MSV filter threshold in H3). The P-values are as determined by H3's
220
+ default procedures (the pmu,plambda parameters in the output table).
221
+ If all is well, you expect to see filter power equal to the predicted
222
+ P-value setting of the threshold.
223
+
224
+ .TP
225
+ .BI \-\-pfile " <f>"
226
+ Output cumulative survival plots (P(S>x)) to file
227
+ .I <f>
228
+ in XMGRACE xy format. There are three plots:
229
+ (1) the observed score distribution;
230
+ (2) the maximum likelihood fitted distribution;
231
+ (3) a maximum likelihood fit to the location parameter (mu/tau) while
232
+ assuming lambda=log_2.
233
+
234
+ .TP
235
+ .BI \-\-xfile " <f>"
236
+ Output the bit scores as a binary array of double-precision floats (8
237
+ bytes per score) to file
238
+ .IR <f> .
239
+ Programs like Easel's
240
+ .B esl-histplot
241
+ can read such binary files. This is useful when generating extremely
242
+ large sample sizes.
243
+
244
+
245
+ .SH OPTIONS CONTROLLING MODEL CONFIGURATION (MODE)
246
+
247
+ H3 only uses multihit local alignment (
248
+ .B \-\-fs
249
+ mode), and this is where we believe the statistical fits.
250
+ Unihit local alignment scores (Smith/Waterman;
251
+ .B \-\-sw
252
+ mode) also obey our statistical conjectures.
253
+ Glocal alignment statistics (either multihit or unihit) are
254
+ still not adequately understood nor adequately fitted.
255
+
256
+ .TP
257
+ .B \-\-fs
258
+ Collect multihit local alignment scores. This is the default.
259
+ "fs" comes from HMMER2's historical terminology for multihit local
260
+ alignment as 'fragment search mode'.
261
+
262
+ .TP
263
+ .B \-\-sw
264
+ Collect unihit local alignment scores. The H3 J state is disabled.
265
+ "sw" comes from HMMER2's historical terminology for unihit local
266
+ alignment as 'Smith/Waterman search mode'.
267
+
268
+ .TP
269
+ .B \-\-ls
270
+ Collect multihit glocal alignment scores. In glocal (global/local)
271
+ alignment, the entire model must align, to a subsequence of the
272
+ target. The H3 local entry/exit transition probabilities are
273
+ disabled. 'ls' comes from HMMER2's historical terminology for multihit local
274
+ alignment as 'local search mode'.
275
+
276
+ .TP
277
+ .B \-\-s
278
+ Collect unihit glocal alignment scores. Both the H3 J state and local
279
+ entry/exit transition probabilities are disabled. 's' comes from
280
+ HMMER2's historical terminology for unihit glocal alignment.
281
+
282
+
283
+
284
+ .SH OPTIONS CONTROLLING SCORING ALGORITHM
285
+
286
+ .TP
287
+ .B \-\-vit
288
+ Collect Viterbi maximum likelihood alignment scores. This is the default.
289
+
290
+ .TP
291
+ .B \-\-fwd
292
+ Collect Forward log-odds likelihood scores, summed over alignment ensemble.
293
+
294
+ .TP
295
+ .B \-\-hyb
296
+ Collect 'Hybrid' scores, as described in papers by Yu and Hwa (for
297
+ instance, Bioinformatics 18:864, 2002). These involve calculating a
298
+ Forward matrix and taking the maximum cell value. The number itself is
299
+ statistically somewhat unmotivated, but the distribution is expected
300
+ be a well-behaved extreme value distribution (Gumbel).
301
+
302
+ .TP
303
+ .B \-\-msv
304
+ Collect MSV (multiple ungapped segment Viterbi) scores, using H3's
305
+ main acceleration heuristic.
306
+
307
+ .TP
308
+ .B \-\-fast
309
+ For any of the above options, use H3's optimized production
310
+ implementation (using SIMD vectorization). The default is to use the
311
+ "generic" implementation (slow and non-vectorized). The optimized
312
+ implementations sacrifice a small amount of numerical precision. This
313
+ can introduce confounding noise into statistical simulations and fits,
314
+ so when one gets super-concerned about exact details, it's better to
315
+ be able to factor that source of noise out.
316
+
317
+ .SH OPTIONS CONTROLLING FITTED TAIL MASSES FOR FORWARD
318
+
319
+ In some experiments, it was useful to fit Forward scores to a range of
320
+ different tail masses, rather than just one. These options provide a
321
+ mechanism for fitting an evenly-spaced range of different tail masses.
322
+ For each different tail mass, a line is generated in the output.
323
+
324
+ .TP
325
+ .BI \-\-tmin " <x>"
326
+ Set the lower bound on the tail mass distribution. (The default is
327
+ 0.02 for the default single tail mass.)
328
+
329
+ .TP
330
+ .BI \-\-tmax " <x>"
331
+ Set the upper bound on the tail mass distribution. (The default is
332
+ 0.02 for the default single tail mass.)
333
+
334
+ .TP
335
+ .BI \-\-tpoints " <n>"
336
+ Set the number of tail masses to sample, starting from
337
+ .B \-\-tmin
338
+ and ending at
339
+ .BR \-\-tmax .
340
+ (The default is 1, for the default 0.02 single tail mass.)
341
+
342
+ .TP
343
+ .B \-\-tlinear
344
+ Sample a range of tail masses with uniform linear spacing. The default
345
+ is to use uniform logarithmic spacing.
346
+
347
+
348
+
349
+ .SH OPTIONS CONTROLLING H3 PARAMETER ESTIMATION METHODS
350
+
351
+ H3 uses three short random sequence simulations to estimating the
352
+ location parameters for the expected score distributions for MSV
353
+ scores, Viterbi scores, and Forward scores. These options allow these
354
+ simulations to be modified.
355
+
356
+ .TP
357
+ .BI \-\-EmL " <n>"
358
+ Sets the sequence length in simulation that estimates the location
359
+ parameter mu for MSV E-values. Default is 200.
360
+
361
+ .TP
362
+ .BI \-\-EmN " <n>"
363
+ Sets the number of sequences in simulation that estimates the location
364
+ parameter mu for MSV E-values. Default is 200.
365
+
366
+ .TP
367
+ .BI \-\-EvL " <n>"
368
+ Sets the sequence length in simulation that estimates the location
369
+ parameter mu for Viterbi E-values. Default is 200.
370
+
371
+ .TP
372
+ .BI \-\-EvN " <n>"
373
+ Sets the number of sequences in simulation that estimates the location
374
+ parameter mu for Viterbi E-values. Default is 200.
375
+
376
+ .TP
377
+ .BI \-\-EfL " <n>"
378
+ Sets the sequence length in simulation that estimates the location
379
+ parameter tau for Forward E-values. Default is 100.
380
+
381
+ .TP
382
+ .BI \-\-EfN " <n>"
383
+ Sets the number of sequences in simulation that estimates the location
384
+ parameter tau for Forward E-values. Default is 200.
385
+
386
+ .TP
387
+ .BI \-\-Eft " <x>"
388
+ Sets the tail mass fraction to fit in the simulation that estimates
389
+ the location parameter tau for Forward evalues. Default is 0.04.
390
+
391
+
392
+ .SH DEBUGGING OPTIONS
393
+
394
+ .TP
395
+ .B \-\-stall
396
+ For debugging the MPI master/worker version: pause after start, to
397
+ enable the developer to attach debuggers to the running master and
398
+ worker(s) processes. Send SIGCONT signal to release the pause.
399
+ (Under gdb:
400
+ .IR "(gdb) signal SIGCONT" )
401
+ (Only available if optional MPI support was enabled at compile-time.)
402
+
403
+ .TP
404
+ .BI \-\-seed " <n>"
405
+ Set the random number seed to
406
+ .IR <n> .
407
+ The default is 0, which makes the random number generator use
408
+ an arbitrary seed, so that different runs of
409
+ .B hmmsim
410
+ will almost certainly generate a different statistical sample.
411
+ For debugging, it is useful to force reproducible results, by
412
+ fixing a random number seed.
413
+
414
+
415
+
416
+ .SH EXPERIMENTAL OPTIONS
417
+
418
+ These options were used in a small variety of different exploratory
419
+ experiments.
420
+
421
+ .TP
422
+ .B \-\-bgflat
423
+ Set the background residue distribution to a uniform distribution,
424
+ both for purposes of the null model used in calculating scores, and
425
+ for generating the random sequences. The default is to use a standard
426
+ amino acid background frequency distribution.
427
+
428
+ .TP
429
+ .B \-\-bgcomp
430
+ Set the background residue distribution to the mean composition of the
431
+ profile. This was used in exploring some of the effects of biased
432
+ composition.
433
+
434
+ .TP
435
+ .B \-\-x\-no\-lengthmodel
436
+ Turn the H3 target sequence length model off. Set the self-transitions
437
+ for N,C,J and the null model to 350/351 instead; this emulates HMMER2.
438
+ Not a good idea in general. This was used to demonstrate one of the
439
+ main H2 vs. H3 differences.
440
+
441
+ .TP
442
+ .BI \-\-nu " <x>"
443
+ Set the nu parameter for the MSV algorithm -- the expected number of
444
+ ungapped local alignments per target sequence. The default is 2.0,
445
+ corresponding to a E->J transition probability of 0.5. This was used
446
+ to test whether varying nu has significant effect on result (it
447
+ doesn't seem to, within reason).
448
+ This option
449
+ only works if
450
+ .B \-\-msv
451
+ is selected (it only affects MSV),
452
+ and it will not work with
453
+ .B \-\-fast
454
+ (because the optimized implementations are hardwired to assume nu=2.0).
455
+
456
+ .TP
457
+ .BI \-\-pthresh " <x>"
458
+ Set the filter P-value threshold to use in generating filter power
459
+ files with
460
+ .BR \-\-ffile .
461
+ The default is 0.02 (which would be appropriate for testing MSV
462
+ scores, since this is the default MSV filter threshold in H3's
463
+ acceleration pipeline.) Other appropriate choices (matching defaults
464
+ in the acceleration pipeline) would be 0.001 for
465
+ Viterbi, and 1e-5 for Forward.
466
+
467
+
468
+
469
+
470
+
471
+ .SH SEE ALSO
472
+
473
+ See
474
+ .BR hmmer (1)
475
+ for a master man page with a list of all the individual man pages
476
+ for programs in the HMMER package.
477
+
478
+ .PP
479
+ For complete documentation, see the user guide that came with your
480
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
481
+ (http://hmmer.org/).
482
+
483
+
484
+
485
+ .SH COPYRIGHT
486
+
487
+ .nf
488
+ Copyright (C) 2023 Howard Hughes Medical Institute.
489
+ Freely distributed under the BSD open source license.
490
+ .fi
491
+
492
+ For additional information on copyright and licensing, see the file
493
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
494
+ web page
495
+ (http://hmmer.org/).
496
+
497
+
498
+ .SH AUTHOR
499
+
500
+ .nf
501
+ http://eddylab.org
502
+ .fi
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/jackhmmer.1 ADDED
@@ -0,0 +1,808 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "jackhmmer" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ jackhmmer \- iteratively search sequence(s) against a sequence database
5
+
6
+ .SH SYNOPSIS
7
+ .B jackhmmer
8
+ [\fIoptions\fR]
9
+ .I seqfile
10
+ .I seqdb
11
+
12
+ .SH DESCRIPTION
13
+
14
+ .PP
15
+ .B jackhmmer
16
+ iteratively searches each query sequence in
17
+ .I seqfile
18
+ against the target sequence(s) in
19
+ .IR seqdb .
20
+ The first iteration is identical to a
21
+ .B phmmer
22
+ search.
23
+ For the next iteration,
24
+ a multiple alignment of the query together with all target sequences
25
+ satisfying
26
+ inclusion thresholds
27
+ is assembled, a profile is constructed from this alignment
28
+ (identical to using
29
+ .B hmmbuild
30
+ on the alignment), and profile search of the
31
+ .I seqdb
32
+ is done (identical to an
33
+ .B hmmsearch
34
+ with the profile).
35
+
36
+
37
+ .PP
38
+ The query
39
+ .I seqfile
40
+ may be '\-' (a dash character), in which case
41
+ the query sequences are read from a stdin pipe instead of from a
42
+ file.
43
+
44
+ The
45
+ .I seqdb
46
+ needs to be a 'normal' sequence file. It cannot be read from a stdin stream, because
47
+ .B jackhmmer
48
+ needs to do multiple passes over the database. It cannot be a
49
+ compressed (gzipped) file either, because we treat gzipped files
50
+ essentially as stdin streams, calling an external decompression
51
+ program.
52
+
53
+
54
+ .PP
55
+ The output format is designed to be human-readable, but is often so
56
+ voluminous that reading it is impractical, and parsing it is a pain. The
57
+ .B \-\-tblout
58
+ and
59
+ .B \-\-domtblout
60
+ options save output in simple tabular formats that are concise and
61
+ easier to parse.
62
+ The
63
+ .B \-o
64
+ option allows redirecting the main output, including throwing it away
65
+ in /dev/null.
66
+
67
+
68
+ .SH OPTIONS
69
+
70
+ .TP
71
+ .B \-h
72
+ Help; print a brief reminder of command line usage and all available
73
+ options.
74
+
75
+ .TP
76
+ .BI \-N " <n>"
77
+ Set the maximum number of iterations to
78
+ .IR <n> .
79
+ The default is 5. If N=1, the result is equivalent to a
80
+ .B phmmer
81
+ search.
82
+
83
+
84
+
85
+
86
+ .SH OPTIONS CONTROLLING OUTPUT
87
+
88
+ By default, output for each iteration appears on stdout in a somewhat
89
+ human readable, somewhat parseable format. These options allow
90
+ redirecting that output or saving additional kinds of output to files,
91
+ including checkpoint files for each iteration.
92
+
93
+ .TP
94
+ .BI \-o " <f>"
95
+ Direct the human-readable output to a file
96
+ .IR <f> .
97
+
98
+ .TP
99
+ .BI \-A " <f>"
100
+ After the final iteration, save an annotated multiple alignment of all
101
+ hits satisfying inclusion thresholds (also including the original query) to
102
+ .I <f>
103
+ in Stockholm format.
104
+
105
+ .TP
106
+ .BI \-\-tblout " <f>"
107
+ After the final iteration, save a tabular summary of top sequence hits
108
+ to
109
+ .I <f>
110
+ in a readily parseable, columnar, whitespace-delimited format.
111
+
112
+ .TP
113
+ .BI \-\-domtblout " <f>"
114
+ After the final iteration, save a tabular summary of top domain hits
115
+ to
116
+ .I <f>
117
+ in a readily parseable, columnar, whitespace-delimited format.
118
+
119
+ .TP
120
+ .BI \-\-chkhmm " prefix"
121
+ At the start of each iteration, checkpoint the query HMM, saving it
122
+ to a file named
123
+ \fIprefix\fR\fB-\fR\fIn\fR\fB.hmm\fR
124
+ where
125
+ .I n
126
+ is the iteration number (from 1..N).
127
+
128
+ .TP
129
+ .BI \-\-chkali " prefix"
130
+ At the end of each iteration, checkpoint an alignment of all
131
+ domains satisfying inclusion thresholds (e.g. what will become the
132
+ query HMM for the next iteration),
133
+ saving it
134
+ to a file named
135
+ \fIprefix\fR\fB-\fR\fIn\fR\fB.sto\fR
136
+ in Stockholm format,
137
+ where
138
+ .I n
139
+ is the iteration number (from 1..N).
140
+
141
+ .TP
142
+ .B \-\-acc
143
+ Use accessions instead of names in the main output, where available
144
+ for profiles and/or sequences.
145
+
146
+ .TP
147
+ .B \-\-noali
148
+ Omit the alignment section from the main output. This can greatly
149
+ reduce the output volume.
150
+
151
+ .TP
152
+ .B \-\-notextw
153
+ Unlimit the length of each line in the main output. The default
154
+ is a limit of 120 characters per line, which helps in displaying
155
+ the output cleanly on terminals and in editors, but can truncate
156
+ target profile description lines.
157
+
158
+ .TP
159
+ .BI \-\-textw " <n>"
160
+ Set the main output's line length limit to
161
+ .I <n>
162
+ characters per line. The default is 120.
163
+
164
+
165
+
166
+
167
+
168
+
169
+ .SH OPTIONS CONTROLLING SINGLE SEQUENCE SCORING (FIRST ITERATION)
170
+
171
+ By default, the first iteration uses a search model constructed from a
172
+ single query sequence. This model is constructed using a standard
173
+ 20x20 substitution matrix for residue probabilities, and two
174
+ additional parameters for position-independent gap open and gap extend
175
+ probabilities. These options allow the default single-sequence scoring
176
+ parameters to be changed.
177
+
178
+ .TP
179
+ .BI \-\-popen " <x>"
180
+ Set the gap open probability for a single sequence query model to
181
+ .IR <x> .
182
+ The default is 0.02.
183
+ .I <x>
184
+ must be >= 0 and < 0.5.
185
+
186
+ .TP
187
+ .BI \-\-pextend " <x>"
188
+ Set the gap extend probability for a single sequence query model to
189
+ .IR <x> .
190
+ The default is 0.4.
191
+ .I <x>
192
+ must be >= 0 and < 1.0.
193
+
194
+ .TP
195
+ .BI \-\-mx " <s>"
196
+ Obtain residue alignment probabilities from the built-in
197
+ substitution matrix named
198
+ .IR <s> .
199
+ Several standard matrices are built-in, and do not need to be
200
+ read from files.
201
+ The matrix name
202
+ .I <s>
203
+ can be
204
+ PAM30, PAM70, PAM120, PAM240, BLOSUM45, BLOSUM50, BLOSUM62, BLOSUM80,
205
+ or BLOSUM90.
206
+ Only one of the
207
+ .B \-\-mx
208
+ and
209
+ .B \-\-mxfile
210
+ options may be used.
211
+
212
+ .TP
213
+ .BI \-\-mxfile " mxfile"
214
+ Obtain residue alignment probabilities from the substitution matrix
215
+ in file
216
+ .IR mxfile .
217
+ The default score matrix is BLOSUM62 (this matrix is internal to
218
+ HMMER and does not have to be available as a file).
219
+ The format of a substitution matrix
220
+ .I mxfile
221
+ is the standard format accepted by BLAST, FASTA, and other sequence
222
+ analysis software.
223
+ See
224
+ .B ftp.ncbi.nlm.nih.gov/blast/matrices/
225
+ for example files. (The only
226
+ exception: we require matrices to be square, so for DNA, use files
227
+ like NCBI's NUC.4.4, not NUC.4.2.)
228
+
229
+
230
+ .SH OPTIONS CONTROLLING REPORTING THRESHOLDS
231
+
232
+ Reporting thresholds control which hits are reported in output files
233
+ (the main output,
234
+ .BR \-\-tblout ,
235
+ and
236
+ .BR \-\-domtblout ).
237
+ In each iteration, sequence hits and domain hits are ranked by
238
+ statistical significance (E-value) and output is generated in two
239
+ sections called per-target and per-domain output. In per-target
240
+ output, by default, all sequence hits with an E-value <= 10 are
241
+ reported. In the per-domain output, for each target that has passed
242
+ per-target reporting thresholds, all domains satisfying per-domain
243
+ reporting thresholds are reported. By default, these are domains with
244
+ conditional E-values of <= 10. The following options allow you to
245
+ change the default E-value reporting thresholds, or to use bit score
246
+ thresholds instead.
247
+
248
+
249
+ .TP
250
+ .BI \-E " <x>"
251
+ Report sequences with E-values <=
252
+ .I <x>
253
+ in per-sequence output. The default is 10.0.
254
+
255
+ .TP
256
+ .BI \-T " <x>"
257
+ Use a bit score threshold for per-sequence output instead of an
258
+ E-value threshold (any setting of
259
+ .B \-E
260
+ is ignored). Report sequences with a bit score of >=
261
+ .IR <x> .
262
+ By default this option is unset.
263
+
264
+ .TP
265
+ .BI \-Z " <x>"
266
+ Declare the total size of the database to be
267
+ .I <x>
268
+ sequences, for purposes of E-value calculation.
269
+ Normally E-values are calculated relative to the size of the database
270
+ you actually searched (e.g. the number of sequences in
271
+ .IR target_seqdb ).
272
+ In some cases (for instance, if you've split your
273
+ target sequence database into multiple files for parallelization of
274
+ your search), you may know better what the actual size of your search
275
+ space is.
276
+
277
+ .TP
278
+ .BI \-\-domE " <x>"
279
+ Report domains with conditional E-values <=
280
+ .I <x>
281
+ in per-domain output, in addition to the top-scoring
282
+ domain per significant sequence hit. The default is 10.0.
283
+
284
+ .TP
285
+ .BI \-\-domT " <x>"
286
+ Use a bit score threshold for per-domain output instead of an
287
+ E-value threshold (any setting of
288
+ .B \-\-domE
289
+ is ignored). Report domains with a bit score of >=
290
+ .I <x>
291
+ in per-domain output, in addition to the top-scoring domain per
292
+ significant sequence hit. By default this option is unset.
293
+
294
+ .TP
295
+ .BI \-\-domZ " <x>"
296
+ Declare the number of significant sequences to be
297
+ .I <x>
298
+ sequences, for purposes of conditional E-value calculation for
299
+ additional domain significance.
300
+ Normally conditional E-values are calculated relative to the number of
301
+ sequences passing per-sequence reporting threshold.
302
+
303
+
304
+ .SH OPTIONS CONTROLLING INCLUSION THRESHOLDS
305
+
306
+ Inclusion thresholds control which hits are included in the multiple
307
+ alignment and profile constructed for the next search iteration.
308
+ By default,
309
+ a sequence must have a per-sequence
310
+ E-value of <= 0.001 (see
311
+ .B \-E
312
+ option) to be included, and any additional domains in it besides the
313
+ top-scoring one must have a conditional E-value of <= 0.001 (see
314
+ .B \-\-domE
315
+ option). The difference between reporting thresholds and inclusion
316
+ thresholds is that inclusion thresholds control which hits actually
317
+ get used in the next iteration (or the final output multiple alignment
318
+ if the
319
+ .B \-A
320
+ option is used), whereas reporting thresholds control what you see in
321
+ output. Reporting thresholds are generally more loose so you can see
322
+ borderline hits in the top of the noise that might be of interest.
323
+
324
+ .TP
325
+ .BI \-\-incE " <x>"
326
+ Include sequences with E-values <=
327
+ .I <x>
328
+ in subsequent iteration or final
329
+ alignment output by
330
+ .BR \-A .
331
+ The default is 0.001.
332
+
333
+ .TP
334
+ .BI \-\-incT " <x>"
335
+ Use a bit score threshold for per-sequence inclusion instead of an
336
+ E-value threshold (any setting of
337
+ .B \-\-incE
338
+ is ignored). Include sequences with a bit score of >=
339
+ .IR <x> .
340
+ By default this option is unset.
341
+
342
+ .TP
343
+ .BI \-\-incdomE " <x>"
344
+ Include domains with conditional E-values <=
345
+ .I <x>
346
+ in subsequent iteration or final alignment output by
347
+ .BR \-A ,
348
+ in addition to the top-scoring
349
+ domain per significant sequence hit.
350
+ The default is 0.001.
351
+
352
+ .TP
353
+ .BI \-\-incdomT " <x>"
354
+ Use a bit score threshold for per-domain inclusion instead of an
355
+ E-value threshold (any setting of
356
+ .B \-\-incdomE
357
+ is ignored). Include domains with a bit score of >=
358
+ .IR <x> .
359
+ By default this option is unset.
360
+
361
+
362
+
363
+ .SH OPTIONS CONTROLLING ACCELERATION HEURISTICS
364
+
365
+ HMMER3 searches are accelerated in a three-step filter pipeline: the
366
+ MSV filter, the Viterbi filter, and the Forward filter. The first
367
+ filter is the fastest and most approximate; the last is the full
368
+ Forward scoring algorithm, slowest but most accurate. There is also a
369
+ bias filter step between MSV and Viterbi. Targets that pass all the
370
+ steps in the acceleration pipeline are then subjected to
371
+ postprocessing -- domain identification and scoring using the
372
+ Forward/Backward algorithm.
373
+
374
+ Essentially the only free parameters that control HMMER's heuristic
375
+ filters are the P-value thresholds controlling the expected fraction
376
+ of nonhomologous sequences that pass the filters. Setting the default
377
+ thresholds higher will pass a higher proportion of nonhomologous
378
+ sequence, increasing sensitivity at the expense of speed; conversely,
379
+ setting lower P-value thresholds will pass a smaller proportion,
380
+ decreasing sensitivity and increasing speed. Setting a filter's
381
+ P-value threshold to 1.0 means it will passing all sequences, and
382
+ effectively disables the filter.
383
+
384
+ Changing filter thresholds only removes or includes targets from
385
+ consideration; changing filter thresholds does not alter bit scores,
386
+ E-values, or alignments, all of which are determined solely in
387
+ postprocessing.
388
+
389
+ .TP
390
+ .B \-\-max
391
+ Maximum sensitivity. Turn off all filters, including the bias filter,
392
+ and run full Forward/Backward postprocessing on every target. This
393
+ increases sensitivity slightly, at a large cost in speed.
394
+
395
+ .TP
396
+ .BI \-\-F1 " <x>"
397
+ First filter threshold; set the P-value threshold for the MSV filter
398
+ step. The default is 0.02, meaning that roughly 2% of the highest
399
+ scoring nonhomologous targets are expected to pass the filter.
400
+
401
+ .TP
402
+ .BI \-\-F2 " <x>"
403
+ Second filter threshold; set the P-value threshold for the Viterbi
404
+ filter step. The default is 0.001.
405
+
406
+ .TP
407
+ .BI \-\-F3 " <x>"
408
+ Third filter threshold; set the P-value threshold for the Forward
409
+ filter step. The default is 1e-5.
410
+
411
+ .TP
412
+ .B \-\-nobias
413
+ Turn off the bias filter. This increases sensitivity somewhat, but can
414
+ come at a high cost in speed, especially if the query has biased
415
+ residue composition (such as a repetitive sequence region, or if it is
416
+ a membrane protein with large regions of hydrophobicity). Without the
417
+ bias filter, too many sequences may pass the filter with biased
418
+ queries, leading to slower than expected performance as the
419
+ computationally intensive Forward/Backward algorithms shoulder an
420
+ abnormally heavy load.
421
+
422
+
423
+
424
+ .SH OPTIONS CONTROLLING PROFILE CONSTRUCTION (LATER ITERATIONS)
425
+
426
+ .B jackhmmer
427
+ always includes your original query sequence in the alignment result
428
+ at every iteration, and consensus positions are always defined by that
429
+ query sequence. That is, a
430
+ .B jackhmmer
431
+ profile is always the same length as your original query, at every
432
+ iteration.
433
+ Therefore
434
+ .B jackhmmer
435
+ gives you less control over profile construction than
436
+ .B hmmbuild
437
+ does; it does not have the
438
+ .BR \-\-fast ,
439
+ or
440
+ .BR \-\-hand ,
441
+ or
442
+ .B \-\-symfrac
443
+ options.
444
+ The only profile construction option available in
445
+ .B jackhmmer
446
+ is
447
+ .BR \-\-fragthresh :
448
+
449
+
450
+ .TP
451
+ .BI \-\-fragthresh " <x>"
452
+ We only want to count terminal gaps as deletions if the aligned
453
+ sequence is known to be full-length, not if it is a fragment (for
454
+ instance, because only part of it was sequenced). HMMER uses a simple
455
+ rule to infer fragments: if the sequence length L is less than
456
+ or equal to a fraction
457
+ .I <x>
458
+ times the alignment length in columns,
459
+ then the sequence is handled as a fragment. The default is 0.5.
460
+ Setting
461
+ .B \-\-fragthresh 0
462
+ will define no (nonempty) sequence as a fragment; you might want to do
463
+ this if you know you've got a carefully curated alignment of full-length
464
+ sequences.
465
+ Setting
466
+ .B \-\-fragthresh 1
467
+ will define all sequences as fragments; you might want to do this if
468
+ you know your alignment is entirely composed of fragments, such as
469
+ translated short reads in metagenomic shotgun data.
470
+
471
+
472
+
473
+ .SH OPTIONS CONTROLLING RELATIVE WEIGHTS
474
+
475
+ Whenever a profile is built from a multiple alignment, HMMER uses an
476
+ ad hoc sequence weighting algorithm to downweight closely related
477
+ sequences and upweight distantly related ones. This has the effect of
478
+ making models less biased by uneven phylogenetic representation. For
479
+ example, two identical sequences would typically each receive half the
480
+ weight that one sequence would (and this is why
481
+ .B jackhmmer
482
+ isn't concerned about always including your original query sequence in
483
+ each iteration's alignment, even if it finds it again in the database
484
+ you're searching). These options control which algorithm gets used.
485
+
486
+ .TP
487
+ .B \-\-wpb
488
+ Use the Henikoff position-based sequence weighting scheme [Henikoff
489
+ and Henikoff, J. Mol. Biol. 243:574, 1994]. This is the default.
490
+
491
+ .TP
492
+ .B \-\-wgsc
493
+ Use the Gerstein/Sonnhammer/Chothia weighting algorithm [Gerstein et
494
+ al, J. Mol. Biol. 235:1067, 1994].
495
+
496
+ .TP
497
+ .B \-\-wblosum
498
+ Use the same clustering scheme that was used to weight data in
499
+ calculating BLOSUM substitution matrices [Henikoff and Henikoff,
500
+ Proc. Natl. Acad. Sci 89:10915, 1992]. Sequences are single-linkage
501
+ clustered at an identity threshold (default 0.62; see
502
+ .BR \-\-wid )
503
+ and within each cluster of c sequences, each sequence gets relative
504
+ weight 1/c.
505
+
506
+ .TP
507
+ .B \-\-wnone
508
+ No relative weights. All sequences are assigned uniform weight.
509
+
510
+ .TP
511
+ .BI \-\-wid " <x>"
512
+ Sets the identity threshold used by single-linkage clustering when
513
+ using
514
+ .BR \-\-wblosum .
515
+ Invalid with any other weighting scheme. Default is 0.62.
516
+
517
+
518
+
519
+
520
+
521
+ .SH OPTIONS CONTROLLING EFFECTIVE SEQUENCE NUMBER
522
+
523
+ After relative weights are determined, they are normalized to sum to a
524
+ total effective sequence number,
525
+ .IR eff_nseq .
526
+ This number may be the actual number of sequences in the alignment,
527
+ but it is almost always smaller than that.
528
+ The default entropy weighting method
529
+ (\fB\-\-eent\fR)
530
+ reduces the effective sequence
531
+ number to reduce the information content (relative entropy, or average
532
+ expected score on true homologs) per consensus position. The target
533
+ relative entropy is controlled by a two-parameter function, where the
534
+ two parameters are settable with
535
+ .B \-\-ere
536
+ and
537
+ .BR \-\-esigma .
538
+
539
+ .TP
540
+ .B \-\-eent
541
+ Adjust effective sequence number to achieve a specific relative entropy
542
+ per position (see
543
+ .BR \-\-ere ).
544
+ This is the default.
545
+
546
+ .TP
547
+ .B \-\-eclust
548
+ Set effective sequence number to the number of single-linkage clusters
549
+ at a specific identity threshold (see
550
+ .BR \-\-eid ).
551
+ This option is not recommended; it's for experiments evaluating
552
+ how much better
553
+ .B \-\-eent
554
+ is.
555
+
556
+ .TP
557
+ .B \-\-enone
558
+ Turn off effective sequence number determination and just use the
559
+ actual number of sequences. One reason you might want to do this is
560
+ to try to maximize the relative entropy/position of your model, which
561
+ may be useful for short models.
562
+
563
+ .TP
564
+ .BI \-\-eset " <x>"
565
+ Explicitly set the effective sequence number for all models to
566
+ .IR <x> .
567
+
568
+ .TP
569
+ .BI \-\-ere " <x>"
570
+ Set the minimum relative entropy/position target to
571
+ .IR <x> .
572
+ Requires
573
+ .BR \-\-eent .
574
+ Default depends on the sequence alphabet; for protein
575
+ sequences, it is 0.59 bits/position.
576
+
577
+ .TP
578
+ .BI \-\-esigma " <x>"
579
+ Sets the minimum relative entropy contributed by an entire
580
+ model alignment, over its whole length. This has the effect
581
+ of making short models have
582
+ higher relative entropy per position than
583
+ .B \-\-ere
584
+ alone would give. The default is 45.0 bits.
585
+
586
+ .TP
587
+ .BI \-\-eid " <x>"
588
+ Sets the fractional pairwise identity cutoff used by
589
+ single linkage clustering with the
590
+ .B \-\-eclust
591
+ option. The default is 0.62.
592
+
593
+
594
+
595
+ .SH OPTIONS CONTROLLING PRIORS
596
+
597
+ In profile construction, by default, weighted counts are converted to
598
+ mean posterior probability parameter estimates using mixture Dirichlet
599
+ priors. Default mixture Dirichlet prior parameters for protein models
600
+ and for nucleic acid (RNA and DNA) models are built in. The following
601
+ options allow you to override the default priors.
602
+
603
+ .TP
604
+ .B \-\-pnone
605
+ Don't use any priors. Probability parameters will simply be the
606
+ observed frequencies, after relative sequence weighting.
607
+
608
+ .TP
609
+ .B \-\-plaplace
610
+ Use a Laplace +1 prior in place of the default mixture Dirichlet
611
+ prior.
612
+
613
+
614
+
615
+ .SH OPTIONS CONTROLLING E-VALUE CALIBRATION
616
+
617
+ Estimating the location parameters for the expected score
618
+ distributions for MSV filter scores, Viterbi filter scores, and
619
+ Forward scores requires three short random sequence simulations.
620
+
621
+ .TP
622
+ .BI \-\-EmL " <n>"
623
+ Sets the sequence length in simulation that estimates the location
624
+ parameter mu for MSV filter E-values. Default is 200.
625
+
626
+ .TP
627
+ .BI \-\-EmN " <n>"
628
+ Sets the number of sequences in simulation that estimates the location
629
+ parameter mu for MSV filter E-values. Default is 200.
630
+
631
+ .TP
632
+ .BI \-\-EvL " <n>"
633
+ Sets the sequence length in simulation that estimates the location
634
+ parameter mu for Viterbi filter E-values. Default is 200.
635
+
636
+ .TP
637
+ .BI \-\-EvN " <n>"
638
+ Sets the number of sequences in simulation that estimates the location
639
+ parameter mu for Viterbi filter E-values. Default is 200.
640
+
641
+ .TP
642
+ .BI \-\-EfL " <n>"
643
+ Sets the sequence length in simulation that estimates the location
644
+ parameter tau for Forward E-values. Default is 100.
645
+
646
+ .TP
647
+ .BI \-\-EfN " <n>"
648
+ Sets the number of sequences in simulation that estimates the location
649
+ parameter tau for Forward E-values. Default is 200.
650
+
651
+ .TP
652
+ .BI \-\-Eft " <x>"
653
+ Sets the tail mass fraction to fit in the simulation that estimates
654
+ the location parameter tau for Forward evalues. Default is 0.04.
655
+
656
+
657
+ .SH OTHER OPTIONS
658
+
659
+ .TP
660
+ .B \-\-nonull2
661
+ Turn off the null2 score corrections for biased composition.
662
+
663
+ .TP
664
+ .BI \-Z " <x>"
665
+ Assert that the total number of targets in your searches is
666
+ .IR <x> ,
667
+ for the purposes of per-sequence E-value calculations,
668
+ rather than the actual number of targets seen.
669
+
670
+ .TP
671
+ .BI \-\-domZ " <x>"
672
+ Assert that the total number of targets in your searches is
673
+ .IR <x> ,
674
+ for the purposes of per-domain conditional E-value calculations,
675
+ rather than the number of targets that passed the reporting thresholds.
676
+
677
+ .TP
678
+ .BI \-\-seed " <n>"
679
+ Seed the random number generator with
680
+ .IR <n> ,
681
+ an integer >= 0.
682
+ If
683
+ .I <n>
684
+ is >0, any stochastic simulations will be reproducible; the same
685
+ command will give the same results.
686
+ If
687
+ .I <n>
688
+ is 0, the random number generator is seeded arbitrarily, and
689
+ stochastic simulations will vary from run to run of the same command.
690
+ The default seed is 42.
691
+
692
+
693
+ .TP
694
+ .BI \-\-qformat " <s>"
695
+ Assert that input query
696
+ .I seqfile
697
+ is in format
698
+ .IR <s> ,
699
+ bypassing format autodetection.
700
+ Common choices for
701
+ .I <s>
702
+ include:
703
+ .BR fasta ,
704
+ .BR embl ,
705
+ .BR genbank.
706
+ Alignment formats also work;
707
+ common choices include:
708
+ .BR stockholm ,
709
+ .BR a2m ,
710
+ .BR afa ,
711
+ .BR psiblast ,
712
+ .BR clustal ,
713
+ .BR phylip .
714
+ .B jackhmmer
715
+ always uses a single sequence query to start its search, so when the input
716
+ .I seqfile
717
+ is an alignment,
718
+ .B jackhmmer
719
+ reads it one unaligned query sequence at a time, not as an alignment.
720
+ For more information, and for codes for some less common formats,
721
+ see main documentation.
722
+ The string
723
+ .I <s>
724
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
725
+
726
+ .TP
727
+ .BI \-\-tformat " <s>"
728
+ Assert that the input target sequence
729
+ .I seqdb
730
+ is in format
731
+ .IR <s> .
732
+ See
733
+ .B \-\-qformat
734
+ above for accepted choices for
735
+ .IR <s> .
736
+
737
+
738
+
739
+ .TP
740
+ .BI \-\-cpu " <n>"
741
+ Set the number of parallel worker threads to
742
+ .IR <n> .
743
+ On multicore machines, the default is 2.
744
+ You can also control this number by setting an environment variable,
745
+ .IR HMMER_NCPU .
746
+ There is also a master thread, so the actual number of threads that
747
+ HMMER spawns is
748
+ .IR <n> +1.
749
+
750
+ This option is not available if HMMER was compiled with POSIX threads
751
+ support turned off.
752
+
753
+
754
+
755
+ .TP
756
+ .BI \-\-stall
757
+ For debugging the MPI master/worker version: pause after start, to
758
+ enable the developer to attach debuggers to the running master and
759
+ worker(s) processes. Send SIGCONT signal to release the pause.
760
+ (Under gdb:
761
+ .BR "(gdb) signal SIGCONT" )
762
+ (Only available if optional MPI support was enabled at compile-time.)
763
+
764
+ .TP
765
+ .BI \-\-mpi
766
+ Run under MPI control with master/worker parallelization (using
767
+ .BR mpirun ,
768
+ for example, or equivalent). Only available if optional MPI support
769
+ was enabled at compile-time.
770
+
771
+
772
+
773
+
774
+
775
+ .SH SEE ALSO
776
+
777
+ See
778
+ .BR hmmer (1)
779
+ for a master man page with a list of all the individual man pages
780
+ for programs in the HMMER package.
781
+
782
+ .PP
783
+ For complete documentation, see the user guide that came with your
784
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
785
+ (http://hmmer.org/).
786
+
787
+
788
+
789
+ .SH COPYRIGHT
790
+
791
+ .nf
792
+ Copyright (C) 2023 Howard Hughes Medical Institute.
793
+ Freely distributed under the BSD open source license.
794
+ .fi
795
+
796
+ For additional information on copyright and licensing, see the file
797
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
798
+ web page
799
+ (http://hmmer.org/).
800
+
801
+
802
+ .SH AUTHOR
803
+
804
+ .nf
805
+ http://eddylab.org
806
+ .fi
807
+
808
+
flax_model/alphafold3/_tools/hmmer/share/man/man1/phmmer.1 ADDED
@@ -0,0 +1,523 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .TH "phmmer" 1 "Aug 2023" "HMMER 3.4" "HMMER Manual"
2
+
3
+ .SH NAME
4
+ phmmer \- search protein sequence(s) against a protein sequence database
5
+
6
+
7
+ .SH SYNOPSIS
8
+ .B phmmer
9
+ [\fIoptions\fR]
10
+ .I seqfile
11
+ .I seqdb
12
+
13
+
14
+ .SH DESCRIPTION
15
+
16
+ .PP
17
+ .B phmmer
18
+ is used to search one or more query protein sequences against a protein sequence database.
19
+ For each query sequence in
20
+ .IR seqfile ,
21
+ use that sequence to search the target database of sequences in
22
+ .IR seqdb ,
23
+ and output ranked lists of the sequences with the most significant
24
+ matches to the query.
25
+
26
+ .PP
27
+ Either the query
28
+ .I seqfile
29
+ or the target
30
+ .I seqdb
31
+ may be '\-' (a dash character), in which case
32
+ the query sequences or target database input will be read from a <stdin> pipe instead of from a
33
+ file. Only one input source can come through <stdin>, not both.
34
+ An exception is that if the
35
+ .I seqfile
36
+ contains more than one query sequence, then
37
+ .I seqdb
38
+ cannot come from <stdin>, because we can't rewind the
39
+ streaming target database to search it with another query.
40
+
41
+
42
+ .PP
43
+ The output format is designed to be human-readable, but is often so
44
+ voluminous that reading it is impractical, and parsing it is a pain. The
45
+ .B \-\-tblout
46
+ and
47
+ .B \-\-domtblout
48
+ options save output in simple tabular formats that are concise and
49
+ easier to parse.
50
+ The
51
+ .B \-o
52
+ option allows redirecting the main output, including throwing it away
53
+ in /dev/null.
54
+
55
+ .SH OPTIONS
56
+
57
+ .TP
58
+ .B \-h
59
+ Help; print a brief reminder of command line usage and all available
60
+ options.
61
+
62
+
63
+ .SH OPTIONS FOR CONTROLLING OUTPUT
64
+
65
+ .TP
66
+ .BI \-o " <f>"
67
+ Direct the main human-readable output to a file
68
+ .I <f>
69
+ instead of the default stdout.
70
+
71
+ .TP
72
+ .BI \-A " <f>"
73
+ Save a multiple alignment of all significant hits (those satisfying
74
+ inclusion thresholds)
75
+ to the file
76
+ .I <f>
77
+ in Stockholm format.
78
+
79
+ .TP
80
+ .BI \-\-tblout " <f>"
81
+ Save a simple tabular (space-delimited) file summarizing the
82
+ per-target output, with one data line per homologous target sequence
83
+ found.
84
+
85
+ .TP
86
+ .BI \-\-domtblout " <f>"
87
+ Save a simple tabular (space-delimited) file summarizing the
88
+ per-domain output, with one data line per homologous domain
89
+ detected in a query sequence for each homologous model.
90
+
91
+ .TP
92
+ .B \-\-acc
93
+ Use accessions instead of names in the main output, where available
94
+ for profiles and/or sequences.
95
+
96
+ .TP
97
+ .B \-\-noali
98
+ Omit the alignment section from the main output. This can greatly
99
+ reduce the output volume.
100
+
101
+ .TP
102
+ .B \-\-notextw
103
+ Unlimit the length of each line in the main output. The default
104
+ is a limit of 120 characters per line, which helps in displaying
105
+ the output cleanly on terminals and in editors, but can truncate
106
+ target profile description lines.
107
+
108
+ .TP
109
+ .BI \-\-textw " <n>"
110
+ Set the main output's line length limit to
111
+ .I <n>
112
+ characters per line. The default is 120.
113
+
114
+
115
+
116
+ .SH OPTIONS CONTROLLING SCORING SYSTEM
117
+
118
+ The probability model in
119
+ .B phmmer
120
+ is constructed by inferring residue probabilities from a standard
121
+ 20x20 substitution score matrix, plus two additional parameters for
122
+ position-independent gap open and gap extend probabilities.
123
+
124
+ .TP
125
+ .BI \-\-popen " <x>"
126
+ Set the gap open probability for a single sequence query model to
127
+ .IR <x> .
128
+ The default is 0.02.
129
+ .I <x>
130
+ must be >= 0 and < 0.5.
131
+
132
+ .TP
133
+ .BI \-\-pextend " <x>"
134
+ Set the gap extend probability for a single sequence query model to
135
+ .IR <x> .
136
+ The default is 0.4.
137
+ .I <x>
138
+ must be >= 0 and < 1.0.
139
+
140
+ .TP
141
+ .BI \-\-mx " <s>"
142
+ Obtain residue alignment probabilities from the built-in
143
+ substitution matrix named
144
+ .IR <s> .
145
+ Several standard matrices are built-in, and do not need to be
146
+ read from files.
147
+ The matrix name
148
+ .I <s>
149
+ can be
150
+ PAM30, PAM70, PAM120, PAM240, BLOSUM45, BLOSUM50, BLOSUM62, BLOSUM80,
151
+ or BLOSUM90.
152
+ Only one of the
153
+ .B \-\-mx
154
+ and
155
+ .B \-\-mxfile
156
+ options may be used.
157
+
158
+ .TP
159
+ .BI \-\-mxfile " mxfile"
160
+ Obtain residue alignment probabilities from the substitution matrix
161
+ in file
162
+ .IR mxfile .
163
+ The default score matrix is BLOSUM62 (this matrix is internal to
164
+ HMMER and does not have to be available as a file).
165
+ The format of a substitution matrix
166
+ .I mxfile
167
+ is the standard format accepted by BLAST, FASTA, and other sequence
168
+ analysis software.
169
+ See ftp.ncbi.nlm.nih.gov/blast/matrices/ for example files. (The only
170
+ exception: we require matrices to be square, so for DNA, use files
171
+ like NCBI's NUC.4.4, not NUC.4.2.)
172
+
173
+
174
+
175
+ .SH OPTIONS CONTROLLING REPORTING THRESHOLDS
176
+
177
+ Reporting thresholds control which hits are reported in output files
178
+ (the main output,
179
+ .BR \-\-tblout ,
180
+ and
181
+ .BR \-\-domtblout ).
182
+ Sequence hits and domain hits are ranked by statistical significance
183
+ (E-value) and output is generated in two sections called per-target
184
+ and per-domain output. In per-target output, by default, all
185
+ sequence hits with an E-value <= 10 are reported. In the per-domain
186
+ output, for each target that has passed per-target reporting
187
+ thresholds, all domains satisfying per-domain reporting thresholds are
188
+ reported. By default, these are domains with conditional E-values of
189
+ <= 10. The following options allow you to change the default
190
+ E-value reporting thresholds, or to use bit score thresholds instead.
191
+
192
+
193
+ .TP
194
+ .BI \-E " <x>"
195
+ In the per-target output, report target sequences with an E-value of <=
196
+ .IR <x> .
197
+ The default is 10.0, meaning that on average, about 10 false positives
198
+ will be reported per query, so you can see the top of the noise
199
+ and decide for yourself if it's really noise.
200
+
201
+ .TP
202
+ .BI \-T " <x>"
203
+ Instead of thresholding per-profile output on E-value, instead
204
+ report target sequences with a bit score of >=
205
+ .IR <x> .
206
+
207
+ .TP
208
+ .BI \-\-domE " <x>"
209
+ In the per-domain output, for target sequences that have already satisfied
210
+ the per-profile reporting threshold, report individual domains
211
+ with a conditional E-value of <=
212
+ .IR <x> .
213
+ The default is 10.0.
214
+ A conditional E-value means the expected number of additional false
215
+ positive domains in the smaller search space of those comparisons that
216
+ already satisfied the per-target reporting threshold (and thus must
217
+ have at least one homologous domain already).
218
+
219
+ .TP
220
+ .BI \-\-domT " <x>"
221
+ Instead of thresholding per-domain output on E-value, instead
222
+ report domains with a bit score of >=
223
+ .IR <x> .
224
+
225
+ .SH OPTIONS CONTROLLING INCLUSION THRESHOLDS
226
+
227
+ Inclusion thresholds are stricter than reporting thresholds. They
228
+ control which hits are included in any output multiple alignment (the
229
+ .B \-A
230
+ option) and which domains are marked as significant ("!") as opposed
231
+ to questionable ("?") in domain output.
232
+
233
+ .TP
234
+ .BI \-\-incE " <x>"
235
+ Use an E-value of <=
236
+ .I <x>
237
+ as the per-target inclusion threshold.
238
+ The default is 0.01, meaning that on average, about 1 false positive
239
+ would be expected in every 100 searches with different query
240
+ sequences.
241
+
242
+ .TP
243
+ .BI \-\-incT " <x>"
244
+ Instead of using E-values for setting the inclusion threshold, instead
245
+ use a bit score of >=
246
+ .I <x>
247
+ as the per-target inclusion threshold.
248
+ By default this option is unset.
249
+
250
+ .TP
251
+ .BI \-\-incdomE " <x>"
252
+ Use a conditional E-value of <=
253
+ .I <x>
254
+ as the per-domain inclusion threshold, in targets that have already
255
+ satisfied the overall per-target inclusion threshold.
256
+ The default is 0.01.
257
+
258
+ .TP
259
+ .BI \-\-incdomT " <x>"
260
+ Instead of using E-values,
261
+ use a bit score of >=
262
+ .I <x>
263
+ as the per-domain inclusion threshold.
264
+ By default this option is unset.
265
+
266
+
267
+
268
+
269
+ .SH OPTIONS CONTROLLING THE ACCELERATION PIPELINE
270
+
271
+ HMMER3 searches are accelerated in a three-step filter pipeline: the
272
+ MSV filter, the Viterbi filter, and the Forward filter. The first
273
+ filter is the fastest and most approximate; the last is the full
274
+ Forward scoring algorithm, slowest but most accurate. There is also a
275
+ bias filter step between MSV and Viterbi. Targets that pass all the
276
+ steps in the acceleration pipeline are then subjected to
277
+ postprocessing -- domain identification and scoring using the
278
+ Forward/Backward algorithm.
279
+
280
+ Essentially the only free parameters that control HMMER's heuristic
281
+ filters are the P-value thresholds controlling the expected fraction
282
+ of nonhomologous sequences that pass the filters. Setting the default
283
+ thresholds higher will pass a higher proportion of nonhomologous
284
+ sequence, increasing sensitivity at the expense of speed; conversely,
285
+ setting lower P-value thresholds will pass a smaller proportion,
286
+ decreasing sensitivity and increasing speed. Setting a filter's
287
+ P-value threshold to 1.0 means it will passing all sequences, and
288
+ effectively disables the filter.
289
+
290
+ Changing filter thresholds only removes or includes targets from
291
+ consideration; changing filter thresholds does not alter bit scores,
292
+ E-values, or alignments, all of which are determined solely in
293
+ postprocessing.
294
+
295
+ .TP
296
+ .B \-\-max
297
+ Maximum sensitivity. Turn off all filters, including the bias filter,
298
+ and run full Forward/Backward postprocessing on every target. This
299
+ increases sensitivity slightly, at a large cost in speed.
300
+
301
+ .TP
302
+ .BI \-\-F1 " <x>"
303
+ First filter threshold; set the P-value threshold for the MSV filter
304
+ step. The default is 0.02, meaning that roughly 2% of the highest
305
+ scoring nonhomologous targets are expected to pass the filter.
306
+
307
+ .TP
308
+ .BI \-\-F2 " <x>"
309
+ Second filter threshold; set the P-value threshold for the Viterbi
310
+ filter step. The default is 0.001.
311
+
312
+ .TP
313
+ .BI \-\-F3 " <x>"
314
+ Third filter threshold; set the P-value threshold for the Forward
315
+ filter step. The default is 1e-5.
316
+
317
+ .TP
318
+ .B \-\-nobias
319
+ Turn off the bias filter. This increases sensitivity somewhat, but can
320
+ come at a high cost in speed, especially if the query has biased
321
+ residue composition (such as a repetitive sequence region, or if it is
322
+ a membrane protein with large regions of hydrophobicity). Without the
323
+ bias filter, too many sequences may pass the filter with biased
324
+ queries, leading to slower than expected performance as the
325
+ computationally intensive Forward/Backward algorithms shoulder an
326
+ abnormally heavy load.
327
+
328
+
329
+
330
+
331
+ .SH OPTIONS CONTROLLING E-VALUE CALIBRATION
332
+
333
+ Estimating the location parameters for the expected score
334
+ distributions for MSV filter scores, Viterbi filter scores, and
335
+ Forward scores requires three short random sequence simulations.
336
+
337
+ .TP
338
+ .BI \-\-EmL " <n>"
339
+ Sets the sequence length in simulation that estimates the location
340
+ parameter mu for MSV filter E-values. Default is 200.
341
+
342
+ .TP
343
+ .BI \-\-EmN " <n>"
344
+ Sets the number of sequences in simulation that estimates the location
345
+ parameter mu for MSV filter E-values. Default is 200.
346
+
347
+ .TP
348
+ .BI \-\-EvL " <n>"
349
+ Sets the sequence length in simulation that estimates the location
350
+ parameter mu for Viterbi filter E-values. Default is 200.
351
+
352
+ .TP
353
+ .BI \-\-EvN " <n>"
354
+ Sets the number of sequences in simulation that estimates the location
355
+ parameter mu for Viterbi filter E-values. Default is 200.
356
+
357
+ .TP
358
+ .BI \-\-EfL " <n>"
359
+ Sets the sequence length in simulation that estimates the location
360
+ parameter tau for Forward E-values. Default is 100.
361
+
362
+ .TP
363
+ .BI \-\-EfN " <n>"
364
+ Sets the number of sequences in simulation that estimates the location
365
+ parameter tau for Forward E-values. Default is 200.
366
+
367
+ .TP
368
+ .BI \-\-Eft " <x>"
369
+ Sets the tail mass fraction to fit in the simulation that estimates
370
+ the location parameter tau for Forward evalues. Default is 0.04.
371
+
372
+
373
+
374
+
375
+ .SH OTHER OPTIONS
376
+
377
+ .TP
378
+ .B \-\-nonull2
379
+ Turn off the null2 score corrections for biased composition.
380
+
381
+ .TP
382
+ .BI \-Z " <x>"
383
+ Assert that the total number of targets in your searches is
384
+ .IR <x> ,
385
+ for the purposes of per-sequence E-value calculations,
386
+ rather than the actual number of targets seen.
387
+
388
+ .TP
389
+ .BI \-\-domZ " <x>"
390
+ Assert that the total number of targets in your searches is
391
+ .IR <x> ,
392
+ for the purposes of per-domain conditional E-value calculations,
393
+ rather than the number of targets that passed the reporting thresholds.
394
+
395
+ .TP
396
+ .BI \-\-seed " <n>"
397
+ Seed the random number generator with
398
+ .IR <n> ,
399
+ an integer >= 0.
400
+ If
401
+ .I <n>
402
+ is >0, any stochastic simulations will be reproducible; the same
403
+ command will give the same results.
404
+ If
405
+ .I <n>
406
+ is 0, the random number generator is seeded arbitrarily, and
407
+ stochastic simulations will vary from run to run of the same command.
408
+ The default seed is 42.
409
+
410
+ .TP
411
+ .BI \-\-qformat " <s>"
412
+ Assert that input
413
+ .I seqfile
414
+ is in format
415
+ .IR <s> ,
416
+ bypassing format autodetection.
417
+ Common choices for
418
+ .I <s>
419
+ include:
420
+ .BR fasta ,
421
+ .BR embl ,
422
+ .BR genbank.
423
+ Alignment formats also work;
424
+ common choices include:
425
+ .BR stockholm ,
426
+ .BR a2m ,
427
+ .BR afa ,
428
+ .BR psiblast ,
429
+ .BR clustal ,
430
+ .BR phylip .
431
+ .B phmmer
432
+ always uses a single sequence query to start its search, so when the input
433
+ .I seqfile
434
+ is an alignment,
435
+ .B phmmer
436
+ reads it one unaligned query sequence at a time, not as an alignment.
437
+ For more information, and for codes for some less common formats,
438
+ see main documentation.
439
+ The string
440
+ .I <s>
441
+ is case-insensitive (\fBfasta\fR or \fBFASTA\fR both work).
442
+
443
+ .BI \-\-tformat " <s>"
444
+ Assert that target sequence database
445
+ .I seqdb
446
+ is in format
447
+ .IR <s> ,
448
+ bypassing format autodetection.
449
+ See
450
+ .B \-\-qformat
451
+ above for list of accepted format codes for
452
+ .IR <s> .
453
+
454
+
455
+ .TP
456
+ .BI \-\-cpu " <n>"
457
+ Set the number of parallel worker threads to
458
+ .IR <n> .
459
+ On multicore machines, the default is 2.
460
+ You can also control this number by setting an environment variable,
461
+ .IR HMMER_NCPU .
462
+ There is also a master thread, so the actual number of threads that
463
+ HMMER spawns is
464
+ .IR <n> +1.
465
+
466
+ This option is not available if HMMER was compiled with POSIX threads
467
+ support turned off.
468
+
469
+
470
+
471
+ .TP
472
+ .BI \-\-stall
473
+ For debugging the MPI master/worker version: pause after start, to
474
+ enable the developer to attach debuggers to the running master and
475
+ worker(s) processes. Send SIGCONT signal to release the pause.
476
+ (Under gdb:
477
+ .BR "(gdb) signal SIGCONT" )
478
+ (Only available if optional MPI support was enabled at compile-time.)
479
+
480
+ .TP
481
+ .BI \-\-mpi
482
+ Run under MPI control with master/worker parallelization (using
483
+ .BR mpirun ,
484
+ for example, or equivalent). Only available if optional MPI support
485
+ was enabled at compile-time.
486
+
487
+
488
+
489
+
490
+
491
+ .SH SEE ALSO
492
+
493
+ See
494
+ .BR hmmer (1)
495
+ for a master man page with a list of all the individual man pages
496
+ for programs in the HMMER package.
497
+
498
+ .PP
499
+ For complete documentation, see the user guide that came with your
500
+ HMMER distribution (Userguide.pdf); or see the HMMER web page
501
+ (http://hmmer.org/).
502
+
503
+
504
+
505
+ .SH COPYRIGHT
506
+
507
+ .nf
508
+ Copyright (C) 2023 Howard Hughes Medical Institute.
509
+ Freely distributed under the BSD open source license.
510
+ .fi
511
+
512
+ For additional information on copyright and licensing, see the file
513
+ called COPYRIGHT in your HMMER source distribution, or see the HMMER
514
+ web page
515
+ (http://hmmer.org/).
516
+
517
+
518
+ .SH AUTHOR
519
+
520
+ .nf
521
+ http://eddylab.org
522
+ .fi
523
+
flax_model/alphafold3/data/__init__.py ADDED
File without changes
flax_model/alphafold3/data/cpp/msa_profile_pybind.h ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Copyright 2024 DeepMind Technologies Limited
3
+ *
4
+ * AlphaFold 3 source code is licensed under CC BY-NC-SA 4.0. To view a copy of
5
+ * this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/
6
+ *
7
+ * To request access to the AlphaFold 3 model parameters, follow the process set
8
+ * out at https://github.com/google-deepmind/alphafold3. You may only use these
9
+ * if received directly from Google. Use is subject to terms of use available at
10
+ * https://github.com/google-deepmind/alphafold3/blob/main/WEIGHTS_TERMS_OF_USE.md
11
+ */
12
+
13
+ #ifndef ALPHAFOLD3_SRC_ALPHAFOLD3_DATA_PYTHON_MSA_PROFILE_PYBIND_H_
14
+ #define ALPHAFOLD3_SRC_ALPHAFOLD3_DATA_PYTHON_MSA_PROFILE_PYBIND_H_
15
+
16
+ #include "pybind11/pybind11.h"
17
+
18
+ namespace alphafold3 {
19
+
20
+ void RegisterModuleMsaProfile(pybind11::module m);
21
+
22
+ }
23
+
24
+ #endif // ALPHAFOLD3_SRC_ALPHAFOLD3_DATA_PYTHON_MSA_PROFILE_PYBIND_H_
flax_model/alphafold3/data/featurisation.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """AlphaFold 3 featurisation pipeline."""
4
+
5
+ from collections.abc import Sequence
6
+ import datetime
7
+ import time
8
+
9
+ from flax_model.alphafold3.common import folding_input
10
+ from flax_model.alphafold3.constants import chemical_components
11
+ from flax_model.alphafold3.model import features
12
+ from flax_model.alphafold3.model.pipeline import pipeline
13
+ import numpy as np
14
+
15
+
16
+ def validate_fold_input(fold_input: folding_input.Input):
17
+ """Validates the fold input contains MSA and templates for featurisation."""
18
+ for i, chain in enumerate(fold_input.protein_chains):
19
+ if chain.unpaired_msa is None:
20
+ raise ValueError(f'Protein chain {i + 1} is missing unpaired MSA.')
21
+ if chain.paired_msa is None:
22
+ raise ValueError(f'Protein chain {i + 1} is missing paired MSA.')
23
+ if chain.templates is None:
24
+ raise ValueError(f'Protein chain {i + 1} is missing Templates.')
25
+ for i, chain in enumerate(fold_input.rna_chains):
26
+ if chain.unpaired_msa is None:
27
+ raise ValueError(f'RNA chain {i + 1} is missing unpaired MSA.')
28
+
29
+
30
+ def featurise_input(
31
+ fold_input: folding_input.Input,
32
+ ccd: chemical_components.Ccd,
33
+ buckets: Sequence[int] | None,
34
+ ref_max_modified_date: datetime.date | None = None,
35
+ conformer_max_iterations: int | None = None,
36
+ resolve_msa_overlaps: bool = True,
37
+ verbose: bool = False,
38
+ ) -> Sequence[features.BatchDict]:
39
+ """Featurise the folding input.
40
+
41
+ Args:
42
+ fold_input: The input to featurise.
43
+ ccd: The chemical components dictionary.
44
+ buckets: Bucket sizes to pad the data to, to avoid excessive re-compilation
45
+ of the model. If None, calculate the appropriate bucket size from the
46
+ number of tokens. If not None, must be a sequence of at least one integer,
47
+ in strictly increasing order. Will raise an error if the number of tokens
48
+ is more than the largest bucket size.
49
+ ref_max_modified_date: Optional maximum date that controls whether to allow
50
+ use of model coordinates for a chemical component from the CCD if RDKit
51
+ conformer generation fails and the component does not have ideal
52
+ coordinates set. Only for components that have been released before this
53
+ date the model coordinates can be used as a fallback.
54
+ conformer_max_iterations: Optional override for maximum number of iterations
55
+ to run for RDKit conformer search.
56
+ resolve_msa_overlaps: Whether to deduplicate unpaired MSA against paired
57
+ MSA. The default behaviour matches the method described in the AlphaFold 3
58
+ paper. Set this to false if providing custom paired MSA using the unpaired
59
+ MSA field to keep it exactly as is as deduplication against the paired MSA
60
+ could break the manually crafted pairing between MSA sequences.
61
+ verbose: Whether to print progress messages.
62
+
63
+ Returns:
64
+ A featurised batch for each rng_seed in the input.
65
+ """
66
+ validate_fold_input(fold_input)
67
+
68
+ # Set up data pipeline for single use.
69
+ data_pipeline = pipeline.WholePdbPipeline(
70
+ config=pipeline.WholePdbPipeline.Config(
71
+ buckets=buckets,
72
+ ref_max_modified_date=ref_max_modified_date,
73
+ conformer_max_iterations=conformer_max_iterations,
74
+ resolve_msa_overlaps=resolve_msa_overlaps,
75
+ ),
76
+ )
77
+
78
+ batches = []
79
+ for rng_seed in fold_input.rng_seeds:
80
+ featurisation_start_time = time.time()
81
+ if verbose:
82
+ print(f'Featurising data with seed {rng_seed}.')
83
+ batch = data_pipeline.process_item(
84
+ fold_input=fold_input,
85
+ ccd=ccd,
86
+ random_state=np.random.RandomState(rng_seed),
87
+ random_seed=rng_seed,
88
+ )
89
+ if verbose:
90
+ print(
91
+ f'Featurising data with seed {rng_seed} took'
92
+ f' {time.time() - featurisation_start_time:.2f} seconds.'
93
+ )
94
+ batches.append(batch)
95
+
96
+ return batches
flax_model/alphafold3/data/msa_config.py ADDED
@@ -0,0 +1,203 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Genetic search config settings for data pipelines."""
4
+
5
+ import dataclasses
6
+ import datetime
7
+ from typing import Self
8
+ from flax_model.alphafold3.constants import mmcif_names
9
+
10
+
11
+ def _validate_chain_poly_type(chain_poly_type: str) -> None:
12
+ if chain_poly_type not in mmcif_names.STANDARD_POLYMER_CHAIN_TYPES:
13
+ raise ValueError(
14
+ 'chain_poly_type must be one of'
15
+ f' {mmcif_names.STANDARD_POLYMER_CHAIN_TYPES}: {chain_poly_type}'
16
+ )
17
+
18
+
19
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
20
+ class DatabaseConfig:
21
+ """Configuration for a database."""
22
+
23
+ name: str
24
+ path: str
25
+
26
+
27
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
28
+ class JackhmmerConfig:
29
+ """Configuration for a jackhmmer run.
30
+
31
+ Attributes:
32
+ binary_path: Path to the binary of the msa tool.
33
+ database_config: Database configuration.
34
+ n_cpu: An integer with the number of CPUs to use.
35
+ n_iter: An integer with the number of database search iterations.
36
+ e_value: e-value for the database lookup.
37
+ z_value: The Z-value representing the database size in number of sequences
38
+ for E-value and domain E-value calculation. Must be set for sharded
39
+ databases.
40
+ dom_z_value: The Z-value representing the database size in number of
41
+ sequences for domain E-value calculation. Must be set for sharded
42
+ databases.
43
+ max_sequences: Max sequences to return in MSA.
44
+ max_parallel_shards: If given, the maximum number of shards to search
45
+ against in parallel. If None, one Jackhmmer instance will be run per
46
+ shard. Only applicable if the database is sharded.
47
+ max_threads: If given, the maximum number of threads used when running
48
+ sharded databases.
49
+ """
50
+
51
+ binary_path: str
52
+ database_config: DatabaseConfig
53
+ n_cpu: int
54
+ n_iter: int
55
+ e_value: float
56
+ z_value: int | None
57
+ dom_z_value: int | None
58
+ max_sequences: int
59
+ max_parallel_shards: int | None = None
60
+ max_threads: int | None = None
61
+
62
+
63
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
64
+ class NhmmerConfig:
65
+ """Configuration for a nhmmer run.
66
+
67
+ Attributes:
68
+ binary_path: Path to the binary of the msa tool.
69
+ hmmalign_binary_path: Path to the hmmalign binary.
70
+ hmmbuild_binary_path: Path to the hmmbuild binary.
71
+ database_config: Database configuration.
72
+ n_cpu: An integer with the number of CPUs to use.
73
+ e_value: e-value for the database lookup.
74
+ z_value: The Z-value representing the database size in megabases for
75
+ E-value calculation. Allows fractional values. Must be set for sharded
76
+ databases.
77
+ max_sequences: Max sequences to return in MSA.
78
+ alphabet: The alphabet when building a profile with hmmbuild.
79
+ max_parallel_shards: If given, the maximum number of shards to search
80
+ against in parallel. If None, one Nhmmer instance will be run per shard.
81
+ Only applicable if the database is sharded.
82
+ max_threads: If given, the maximum number of threads used when running
83
+ sharded databases.
84
+ """
85
+
86
+ binary_path: str
87
+ hmmalign_binary_path: str
88
+ hmmbuild_binary_path: str
89
+ database_config: DatabaseConfig
90
+ n_cpu: int
91
+ e_value: float
92
+ z_value: float | None
93
+ max_sequences: int
94
+ alphabet: str | None
95
+ max_parallel_shards: int | None = None
96
+ max_threads: int | None = None
97
+
98
+
99
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
100
+ class MmseqsConfig:
101
+ """Configuration for mmseqs run.
102
+
103
+ Attributes:
104
+ binary_path: Path to the binary of the msa tool.
105
+ database_config: Database configuration.
106
+ n_cpu: An integer with the number of CPUs to use.
107
+ use_gpu: An integer with the number of GPUs to use.
108
+ mmseqs_options: Options for the mmseqs run.
109
+ result2msa_options: Options for the result2msa run.
110
+ """
111
+
112
+ binary_path: str
113
+ database_config: DatabaseConfig
114
+ n_cpu: int
115
+ use_gpu: int=0
116
+ mmseqs_options: str
117
+ result2msa_options: str
118
+ max_sequences: int
119
+
120
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
121
+ class RunConfig:
122
+ """Configuration for an MSA run.
123
+
124
+ Attributes:
125
+ config: MSA tool config.
126
+ chain_poly_type: The chain type for which the tools will be run.
127
+ crop_size: The maximum number of sequences to keep in the MSA. If None, all
128
+ sequences are kept. Note that the query is included in the MSA, so it
129
+ doesn't make sense to set this to less than 2.
130
+ """
131
+
132
+ config: JackhmmerConfig | NhmmerConfig | MmseqsConfig
133
+ chain_poly_type: str
134
+ crop_size: int | None
135
+
136
+ def __post_init__(self):
137
+ if self.crop_size is not None and self.crop_size < 2:
138
+ raise ValueError(f'crop_size must be None or >= 2: {self.crop_size}')
139
+
140
+ _validate_chain_poly_type(self.chain_poly_type)
141
+
142
+
143
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
144
+ class HmmsearchConfig:
145
+ """Configuration for a hmmsearch."""
146
+
147
+ hmmsearch_binary_path: str
148
+ hmmbuild_binary_path: str
149
+
150
+ e_value: float
151
+ inc_e: float
152
+ dom_e: float
153
+ incdom_e: float
154
+ alphabet: str = 'amino'
155
+ filter_f1: float | None = None
156
+ filter_f2: float | None = None
157
+ filter_f3: float | None = None
158
+ filter_max: bool = False
159
+
160
+
161
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
162
+ class TemplateToolConfig:
163
+ """Configuration for a template tool."""
164
+
165
+ database_path: str
166
+ chain_poly_type: str
167
+ hmmsearch_config: HmmsearchConfig
168
+ max_a3m_query_sequences: int | None = 300
169
+
170
+ def __post_init__(self):
171
+ _validate_chain_poly_type(self.chain_poly_type)
172
+
173
+
174
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
175
+ class TemplateFilterConfig:
176
+ """Configuration for a template filter."""
177
+
178
+ max_subsequence_ratio: float | None
179
+ min_align_ratio: float | None
180
+ min_hit_length: int | None
181
+ deduplicate_sequences: bool
182
+ max_hits: int | None
183
+ max_template_date: datetime.date
184
+
185
+ @classmethod
186
+ def no_op_filter(cls) -> Self:
187
+ """Returns a config for filter that keeps everything."""
188
+ return cls(
189
+ max_subsequence_ratio=None,
190
+ min_align_ratio=None,
191
+ min_hit_length=None,
192
+ deduplicate_sequences=False,
193
+ max_hits=None,
194
+ max_template_date=datetime.date(3000, 1, 1), # Very far in the future.
195
+ )
196
+
197
+
198
+ @dataclasses.dataclass(frozen=True, kw_only=True, slots=True)
199
+ class TemplatesConfig:
200
+ """Configuration for the template search pipeline."""
201
+
202
+ template_tool_config: TemplateToolConfig
203
+ filter_config: TemplateFilterConfig
flax_model/alphafold3/data/msa_features.py ADDED
@@ -0,0 +1,194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Utilities for computing MSA features."""
4
+
5
+ from collections.abc import Sequence
6
+ import re
7
+ from flax_model.alphafold3.constants import mmcif_names
8
+ import numpy as np
9
+
10
+ _PROTEIN_TO_ID = {
11
+ 'A': 0,
12
+ 'B': 3, # Same as D.
13
+ 'C': 4,
14
+ 'D': 3,
15
+ 'E': 6,
16
+ 'F': 13,
17
+ 'G': 7,
18
+ 'H': 8,
19
+ 'I': 9,
20
+ 'J': 20, # Same as unknown (X).
21
+ 'K': 11,
22
+ 'L': 10,
23
+ 'M': 12,
24
+ 'N': 2,
25
+ 'O': 20, # Same as unknown (X).
26
+ 'P': 14,
27
+ 'Q': 5,
28
+ 'R': 1,
29
+ 'S': 15,
30
+ 'T': 16,
31
+ 'U': 4, # Same as C.
32
+ 'V': 19,
33
+ 'W': 17,
34
+ 'X': 20,
35
+ 'Y': 18,
36
+ 'Z': 6, # Same as E.
37
+ '-': 21,
38
+ }
39
+
40
+ _RNA_TO_ID = {
41
+ # Map non-standard residues to UNK_NUCLEIC (N) -> 30
42
+ **{chr(i): 30 for i in range(ord('A'), ord('Z') + 1)},
43
+ # Continue the RNA indices from where Protein indices left off.
44
+ '-': 21,
45
+ 'A': 22,
46
+ 'G': 23,
47
+ 'C': 24,
48
+ 'U': 25,
49
+ }
50
+
51
+ _DNA_TO_ID = {
52
+ # Map non-standard residues to UNK_NUCLEIC (N) -> 30
53
+ **{chr(i): 30 for i in range(ord('A'), ord('Z') + 1)},
54
+ # Continue the DNA indices from where DNA indices left off.
55
+ '-': 21,
56
+ 'A': 26,
57
+ 'G': 27,
58
+ 'C': 28,
59
+ 'T': 29,
60
+ }
61
+
62
+
63
+ def extract_msa_features(
64
+ msa_sequences: Sequence[str], chain_poly_type: str
65
+ ) -> tuple[np.ndarray, np.ndarray]:
66
+ """Extracts MSA features.
67
+
68
+ Example:
69
+ The input raw MSA is: `[["AAAAAA"], ["Ai-CiDiiiEFa"]]`
70
+ The output MSA will be: `[["AAAAAA"], ["A-CDEF"]]`
71
+ The deletions will be: `[[0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 3, 0]]`
72
+
73
+ Args:
74
+ msa_sequences: A list of strings, each string with one MSA sequence. Each
75
+ string must have the same, constant number of non-lowercase (matching)
76
+ residues.
77
+ chain_poly_type: Either 'polypeptide(L)' (protein), 'polyribonucleotide'
78
+ (RNA), or 'polydeoxyribonucleotide' (DNA). Use the appropriate string
79
+ constant from mmcif_names.py.
80
+
81
+ Returns:
82
+ A tuple with:
83
+ * MSA array of shape (num_seq, num_res) that contains only the uppercase
84
+ characters or gaps (-) from the original MSA.
85
+ * Deletions array of shape (num_seq, num_res) that contains the number
86
+ of deletions (lowercase letters in the MSA) to the left from each
87
+ non-deleted residue (uppercase letters in the MSA).
88
+
89
+ Raises:
90
+ ValueError if any of the preconditions are not met.
91
+ """
92
+
93
+ # Select the appropriate character map based on the chain type.
94
+ if chain_poly_type == mmcif_names.RNA_CHAIN:
95
+ char_map = _RNA_TO_ID
96
+ elif chain_poly_type == mmcif_names.DNA_CHAIN:
97
+ char_map = _DNA_TO_ID
98
+ elif chain_poly_type == mmcif_names.PROTEIN_CHAIN:
99
+ char_map = _PROTEIN_TO_ID
100
+ else:
101
+ raise ValueError(f'{chain_poly_type=} invalid.')
102
+
103
+ # Handle empty MSA.
104
+ if not msa_sequences:
105
+ empty_msa = np.array([], dtype=np.int32).reshape((0, 0))
106
+ empty_deletions = np.array([], dtype=np.int32).reshape((0, 0))
107
+ return empty_msa, empty_deletions
108
+
109
+ # Get the number of rows and columns in the MSA.
110
+ num_rows = len(msa_sequences)
111
+ num_cols = sum(1 for c in msa_sequences[0] if c in char_map)
112
+
113
+ # Initialize the output arrays.
114
+ msa_arr = np.zeros((num_rows, num_cols), dtype=np.int32)
115
+ deletions_arr = np.zeros((num_rows, num_cols), dtype=np.int32)
116
+
117
+ # Populate the output arrays.
118
+ for problem_row, msa_sequence in enumerate(msa_sequences):
119
+ deletion_count = 0
120
+ upper_count = 0
121
+ problem_col = 0
122
+ problems = []
123
+ for current in msa_sequence:
124
+ msa_id = char_map.get(current, -1)
125
+ if msa_id == -1:
126
+ if not current.islower():
127
+ problems.append(f'({problem_row}, {problem_col}):{current}')
128
+ deletion_count += 1
129
+ else:
130
+ # Check the access is safe before writing to the array.
131
+ # We don't need to check problem_row since it's guaranteed to be within
132
+ # the array bounds, while upper_count is incremented in the loop.
133
+ if upper_count < deletions_arr.shape[1]:
134
+ deletions_arr[problem_row, upper_count] = deletion_count
135
+ msa_arr[problem_row, upper_count] = msa_id
136
+ deletion_count = 0
137
+ upper_count += 1
138
+ problem_col += 1
139
+ if problems:
140
+ raise ValueError(
141
+ f"Unknown residues in MSA: {', '.join(problems)}. "
142
+ f'target_sequence: {msa_sequences[0]}'
143
+ )
144
+ if upper_count != num_cols:
145
+ raise ValueError(
146
+ 'Invalid shape all strings must have the same number '
147
+ 'of non-lowercase characters; First string has '
148
+ f"{num_cols} non-lowercase characters but '{msa_sequence}' has "
149
+ f'{upper_count}. target_sequence: {msa_sequences[0]}'
150
+ )
151
+
152
+ return msa_arr, deletions_arr
153
+
154
+
155
+ # UniProtKB SwissProt/TrEMBL dbs have the following description format:
156
+ # `db|UniqueIdentifier|EntryName`, e.g. `sp|P0C2L1|A3X1_LOXLA` or
157
+ # `tr|A0A146SKV9|A0A146SKV9_FUNHE`.
158
+ _UNIPROT_ENTRY_NAME_REGEX = re.compile(
159
+ # UniProtKB TrEMBL or SwissProt database.
160
+ r'(?:tr|sp)\|'
161
+ # A primary accession number of the UniProtKB entry.
162
+ r'(?:[A-Z0-9]{6,10})'
163
+ # Occasionally there is an isoform suffix (e.g. _1 or _10) which we ignore.
164
+ r'(?:_\d+)?\|'
165
+ # TrEMBL: Same as AccessionId (6-10 characters).
166
+ # SwissProt: A mnemonic protein identification code (1-5 characters).
167
+ r'(?:[A-Z0-9]{1,10}_)'
168
+ # A mnemonic species identification code.
169
+ r'(?P<SpeciesId>[A-Z0-9]{1,5})'
170
+ )
171
+
172
+
173
+ def extract_species_ids(msa_descriptions: Sequence[str]) -> Sequence[str]:
174
+ """Extracts species ID from MSA UniProtKB sequence identifiers.
175
+
176
+ Args:
177
+ msa_descriptions: The descriptions (the FASTA/A3M comment line) for each of
178
+ the sequences.
179
+
180
+ Returns:
181
+ Extracted UniProtKB species IDs if there is a regex match for each
182
+ description line, blank if the regex doesn't match.
183
+ """
184
+ species_ids = []
185
+ for msa_description in msa_descriptions:
186
+ msa_description = msa_description.strip()
187
+ match = _UNIPROT_ENTRY_NAME_REGEX.match(msa_description)
188
+ if match:
189
+ species_ids.append(match.group('SpeciesId'))
190
+ else:
191
+ # Handle cases where the regex doesn't match
192
+ # (e.g., append None or raise an error depending on your needs)
193
+ species_ids.append('')
194
+ return species_ids
flax_model/alphafold3/data/msa_identifiers.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Utilities for extracting identifiers from MSA sequence descriptions."""
4
+
5
+ import dataclasses
6
+ import re
7
+
8
+
9
+ # Sequences coming from UniProtKB database come in the
10
+ # `db|UniqueIdentifier|EntryName` format, e.g. `tr|A0A146SKV9|A0A146SKV9_FUNHE`
11
+ # or `sp|P0C2L1|A3X1_LOXLA` (for TREMBL/Swiss-Prot respectively).
12
+ _UNIPROT_PATTERN = re.compile(
13
+ r"""
14
+ ^
15
+ # UniProtKB/TrEMBL or UniProtKB/Swiss-Prot
16
+ (?:tr|sp)
17
+ \|
18
+ # A primary accession number of the UniProtKB entry.
19
+ (?P<AccessionIdentifier>[A-Za-z0-9]{6,10})
20
+ # Occasionally there is a _0 or _1 isoform suffix, which we ignore.
21
+ (?:_\d)?
22
+ \|
23
+ # TREMBL repeats the accession ID here. Swiss-Prot has a mnemonic
24
+ # protein ID code.
25
+ (?:[A-Za-z0-9]+)
26
+ _
27
+ # A mnemonic species identification code.
28
+ (?P<SpeciesIdentifier>([A-Za-z0-9]){1,5})
29
+ # Small BFD uses a final value after an underscore, which we ignore.
30
+ (?:_\d+)?
31
+ $
32
+ """,
33
+ re.VERBOSE,
34
+ )
35
+
36
+
37
+ @dataclasses.dataclass(frozen=True)
38
+ class Identifiers:
39
+ species_id: str = ''
40
+
41
+
42
+ def _parse_sequence_identifier(msa_sequence_identifier: str) -> Identifiers:
43
+ """Gets species from an msa sequence identifier.
44
+
45
+ The sequence identifier has the format specified by
46
+ _UNIPROT_TREMBL_ENTRY_NAME_PATTERN or _UNIPROT_SWISSPROT_ENTRY_NAME_PATTERN.
47
+ An example of a sequence identifier: `tr|A0A146SKV9|A0A146SKV9_FUNHE`
48
+
49
+ Args:
50
+ msa_sequence_identifier: a sequence identifier.
51
+
52
+ Returns:
53
+ An `Identifiers` instance with species_id. These
54
+ can be empty in the case where no identifier was found.
55
+ """
56
+ matches = re.search(_UNIPROT_PATTERN, msa_sequence_identifier.strip())
57
+ if matches:
58
+ return Identifiers(species_id=matches.group('SpeciesIdentifier'))
59
+ return Identifiers()
60
+
61
+
62
+ def _extract_sequence_identifier(description: str) -> str | None:
63
+ """Extracts sequence identifier from description. Returns None if no match."""
64
+ split_description = description.split()
65
+ if split_description:
66
+ return split_description[0].partition('/')[0]
67
+ else:
68
+ return None
69
+
70
+
71
+ def get_identifiers(description: str) -> Identifiers:
72
+ """Computes extra MSA features from the description."""
73
+ sequence_identifier = _extract_sequence_identifier(description)
74
+ if sequence_identifier is None:
75
+ return Identifiers()
76
+ else:
77
+ return _parse_sequence_identifier(sequence_identifier)
flax_model/alphafold3/data/parsers.py ADDED
@@ -0,0 +1,261 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Functions for parsing various file formats."""
4
+
5
+ from collections.abc import Iterable, Sequence
6
+ from typing import IO, TypeAlias
7
+
8
+ from flax_model.alphafold3.cpp import fasta_iterator
9
+ from flax_model.alphafold3.cpp import msa_conversion
10
+
11
+
12
+ DeletionMatrix: TypeAlias = Sequence[Sequence[int]]
13
+
14
+
15
+ def lazy_parse_fasta_string(fasta_string: str) -> Iterable[tuple[str, str]]:
16
+ """Lazily parses a FASTA/A3M string and yields (sequence, description) tuples.
17
+
18
+ This implementation is more memory friendly than `fasta_sequence` while
19
+ offering comparable performance. The underlying implementation is in C++ and
20
+ is therefore faster than a pure Python implementation.
21
+
22
+ Use this method when parsing FASTA files where you already have the FASTA
23
+ string, but need to control how far you iterate through its sequences.
24
+
25
+ Arguments:
26
+ fasta_string: A string with the contents of FASTA/A3M file.
27
+
28
+ Returns:
29
+ Iterator of (sequence, description). In the description, the leading ">" is
30
+ stripped.
31
+
32
+ Raises:
33
+ ValueError if the FASTA/A3M file is invalid, e.g. empty.
34
+ """
35
+
36
+ # The lifetime of the FastaStringIterator is tied to the lifetime of
37
+ # fasta_string - fasta_string must be kept while the iterator is in use.
38
+ return fasta_iterator.FastaStringIterator(fasta_string)
39
+
40
+
41
+ def parse_fasta(fasta_string: str) -> tuple[Sequence[str], Sequence[str]]:
42
+ """Parses FASTA string and returns list of strings with amino-acid sequences.
43
+
44
+ Arguments:
45
+ fasta_string: The string contents of a FASTA file.
46
+
47
+ Returns:
48
+ A tuple of two lists:
49
+ * A list of sequences.
50
+ * A list of sequence descriptions taken from the comment lines. In the
51
+ same order as the sequences.
52
+ """
53
+ return fasta_iterator.parse_fasta_include_descriptions(fasta_string)
54
+
55
+
56
+ def convert_a3m_to_stockholm(a3m: str, max_seqs: int | None = None) -> str:
57
+ """Converts MSA in the A3M format to the Stockholm format."""
58
+ sequences, descriptions = parse_fasta(a3m)
59
+ if max_seqs is not None:
60
+ sequences = sequences[:max_seqs]
61
+ descriptions = descriptions[:max_seqs]
62
+
63
+ stockholm = ['# STOCKHOLM 1.0', '']
64
+
65
+ # Add the Stockholm header with the sequence metadata.
66
+ names = []
67
+ for i, description in enumerate(descriptions):
68
+ name, _, rest = description.replace('\t', ' ').partition(' ')
69
+ # Ensure that the names are unique - stockholm format requires that
70
+ # the sequence names are unique.
71
+ name = f'{name}_{i}'
72
+ names.append(name)
73
+ # Avoid zero-length description due to historic hmmbuild parsing bug.
74
+ desc = rest.strip() or '<EMPTY>'
75
+ stockholm.append(f'#=GS {name.strip()} DE {desc}')
76
+ stockholm.append('')
77
+
78
+ # Convert insertions in a sequence into gaps in all other sequences that don't
79
+ # have an insertion in that column as well.
80
+ sequences = msa_conversion.convert_a3m_to_stockholm(sequences)
81
+
82
+ # Add the MSA data.
83
+ max_name_width = max(len(name) for name in names)
84
+ for name, sequence in zip(names, sequences, strict=True):
85
+ # Align the names to the left and pad with spaces to the maximum length.
86
+ stockholm.append(f'{name:<{max_name_width}s} {sequence}')
87
+
88
+ # Add the reference annotation for the query (the first sequence).
89
+ ref_annotation = ''.join('.' if c == '-' else 'x' for c in sequences[0])
90
+ stockholm.append(f'{"#=GC RF":<{max_name_width}s} {ref_annotation}')
91
+ stockholm.append('//')
92
+
93
+ return '\n'.join(stockholm)
94
+
95
+
96
+ def convert_stockholm_to_a3m(
97
+ stockholm: IO[str],
98
+ max_sequences: int | None = None,
99
+ remove_first_row_gaps: bool = True,
100
+ linewidth: int | None = None,
101
+ ) -> str:
102
+ """Converts MSA in Stockholm format to the A3M format."""
103
+ descriptions = {}
104
+ sequences = {}
105
+ reached_max_sequences = False
106
+
107
+ if linewidth is not None and linewidth <= 0:
108
+ raise ValueError('linewidth must be > 0 or None')
109
+
110
+ for line in stockholm:
111
+ reached_max_sequences = max_sequences and len(sequences) >= max_sequences
112
+ line = line.strip()
113
+ # Ignore blank lines, markup and end symbols - remainder are alignment
114
+ # sequence parts.
115
+ if not line or line.startswith(('#', '//')):
116
+ continue
117
+ seqname, aligned_seq = line.split(maxsplit=1)
118
+ if seqname not in sequences:
119
+ if reached_max_sequences:
120
+ continue
121
+ sequences[seqname] = ''
122
+ sequences[seqname] += aligned_seq
123
+
124
+ if not sequences:
125
+ return ''
126
+
127
+ stockholm.seek(0)
128
+ for line in stockholm:
129
+ line = line.strip()
130
+ if line[:4] == '#=GS':
131
+ # Description row - example format is:
132
+ # #=GS UniRef90_Q9H5Z4/4-78 DE [subseq from] cDNA: FLJ22755 ...
133
+ columns = line.split(maxsplit=3)
134
+ seqname, feature = columns[1:3]
135
+ value = columns[3] if len(columns) == 4 else ''
136
+ if feature != 'DE':
137
+ continue
138
+ if reached_max_sequences and seqname not in sequences:
139
+ continue
140
+ descriptions[seqname] = value
141
+ if len(descriptions) == len(sequences):
142
+ break
143
+
144
+ assert len(descriptions) <= len(sequences)
145
+
146
+ # Convert sto format to a3m line by line
147
+ a3m_sequences = {}
148
+ # query_sequence is assumed to be the first sequence
149
+ query_sequence = next(iter(sequences.values()))
150
+ for seqname, sto_sequence in sequences.items():
151
+ if remove_first_row_gaps:
152
+ a3m_sequences[seqname] = msa_conversion.align_sequence_to_gapless_query(
153
+ sequence=sto_sequence, query_sequence=query_sequence
154
+ ).replace('.', '')
155
+ else:
156
+ a3m_sequences[seqname] = sto_sequence.replace('.', '')
157
+
158
+ fasta_chunks = []
159
+
160
+ for seqname, seq in a3m_sequences.items():
161
+ fasta_chunks.append(f'>{seqname} {descriptions.get(seqname, "")}')
162
+
163
+ if linewidth:
164
+ fasta_chunks.extend(
165
+ seq[i : linewidth + i] for i in range(0, len(seq), linewidth)
166
+ )
167
+ else:
168
+ fasta_chunks.append(seq)
169
+
170
+ return '\n'.join(fasta_chunks) + '\n' # Include terminating newline.
171
+
172
+
173
+ def convert_mmseqs_stockholm_to_a3m(
174
+ stockholm: IO[str],
175
+ max_sequences: int | None = None,
176
+ remove_first_row_gaps: bool = True,
177
+ linewidth: int | None = None,
178
+ ) -> str:
179
+ """Converts MSA in Stockholm format to the A3M format."""
180
+ from collections import defaultdict
181
+
182
+ descriptions = {}
183
+ sequences = {} # 存储最终序列(自动处理重复键)
184
+ seqname_counter = defaultdict(int) # 记录原始seqname出现次数
185
+ original_seqnames = {} # 记录处理后的seqname对应的原始名�?
186
+
187
+ if linewidth is not None and linewidth <= 0:
188
+ raise ValueError('linewidth must be > 0 or None')
189
+
190
+ # 第一遍:读取所有序列行,处理重复键
191
+ for line in stockholm:
192
+ line = line.strip()
193
+ if not line or line.startswith(('#', '//')):
194
+ continue
195
+ parts = line.split(maxsplit=1)
196
+ if len(parts) < 2:
197
+ continue
198
+ original_seqname, aligned_seq = parts
199
+
200
+ # 生成唯一seqname(例�?"_1", "_1_a", "_1_b"�?
201
+ count = seqname_counter[original_seqname]
202
+ if count == 0:
203
+ new_seqname = original_seqname
204
+ else:
205
+ new_seqname = f"{original_seqname}_{chr(97 + count - 1)}" # 97是ASCII码的'a'
206
+ seqname_counter[original_seqname] += 1
207
+
208
+ # 达到最大序列数时跳过后续序�?
209
+ if max_sequences and len(sequences) >= max_sequences:
210
+ continue
211
+
212
+ # 累积序列(原逻辑�?
213
+ sequences.setdefault(new_seqname, '')
214
+ sequences[new_seqname] += aligned_seq
215
+ original_seqnames[new_seqname] = original_seqname
216
+
217
+ if not sequences:
218
+ return ''
219
+
220
+ # 第二遍:读取描述信息
221
+ stockholm.seek(0)
222
+ for line in stockholm:
223
+ line = line.strip()
224
+ if line.startswith('#=GS'):
225
+ columns = line.split(maxsplit=3)
226
+ if len(columns) < 4:
227
+ continue
228
+ seqname, feature = columns[1:3]
229
+ if feature != 'DE':
230
+ continue
231
+ value = columns[3] if len(columns) >= 4 else ''
232
+ descriptions[seqname] = value
233
+
234
+ # 转换序列格式
235
+ a3m_sequences = {}
236
+ query_sequence = next(iter(sequences.values())).replace('.', '') # 假设第一个序列是查询序列
237
+
238
+ for seqname, sto_sequence in sequences.items():
239
+ current_seq = sto_sequence.replace('.', '')
240
+ if remove_first_row_gaps:
241
+ aligned = msa_conversion.align_sequence_to_gapless_query(
242
+ sequence=current_seq, query_sequence=query_sequence
243
+ ).replace('.', '')
244
+ else:
245
+ aligned = current_seq
246
+ a3m_sequences[seqname] = aligned
247
+
248
+ # 生成FASTA
249
+ fasta_chunks = []
250
+ for seqname, seq in a3m_sequences.items():
251
+ original_seqname = original_seqnames.get(seqname, seqname)
252
+ desc = descriptions.get(original_seqname, "")
253
+ fasta_chunks.append(f'>{seqname} {desc}')
254
+
255
+ if linewidth:
256
+ chunks = [seq[i:i+linewidth] for i in range(0, len(seq), linewidth)]
257
+ fasta_chunks.extend(chunks)
258
+ else:
259
+ fasta_chunks.append(seq)
260
+
261
+ return '\n'.join(fasta_chunks) + '\n'
flax_model/alphafold3/data/pipeline.py ADDED
@@ -0,0 +1,677 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Functions for running the MSA and template tools for the AlphaFold model."""
4
+
5
+ from concurrent import futures
6
+ import dataclasses
7
+ import datetime
8
+ import functools
9
+ import logging
10
+ import time
11
+
12
+ from flax_model.alphafold3.common import folding_input
13
+ from flax_model.alphafold3.constants import mmcif_names
14
+ from flax_model.alphafold3.data import msa
15
+ from flax_model.alphafold3.data import msa_config
16
+ from flax_model.alphafold3.data import structure_stores
17
+ from flax_model.alphafold3.data import templates as templates_lib
18
+
19
+
20
+
21
+ # Cache to avoid re-running template search for the same sequence in homomers.
22
+ @functools.cache
23
+ def _get_protein_templates(
24
+ sequence: str,
25
+ input_msa_a3m: str,
26
+ run_template_search: bool,
27
+ templates_config: msa_config.TemplatesConfig,
28
+ pdb_database_path: str,
29
+ ) -> templates_lib.Templates:
30
+ """Searches for templates for a single protein chain."""
31
+ if run_template_search:
32
+ templates_start_time = time.time()
33
+ logging.info('Getting protein templates for sequence %s', sequence)
34
+ protein_templates = templates_lib.Templates.from_seq_and_a3m(
35
+ query_sequence=sequence,
36
+ msa_a3m=input_msa_a3m,
37
+ max_template_date=templates_config.filter_config.max_template_date,
38
+ database_path=templates_config.template_tool_config.database_path,
39
+ hmmsearch_config=templates_config.template_tool_config.hmmsearch_config,
40
+ max_a3m_query_sequences=None,
41
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
42
+ structure_store=structure_stores.StructureStore(pdb_database_path),
43
+ filter_config=templates_config.filter_config,
44
+ )
45
+ logging.info(
46
+ 'Getting %d protein templates took %.2f seconds for sequence %s',
47
+ protein_templates.num_hits,
48
+ time.time() - templates_start_time,
49
+ sequence,
50
+ )
51
+ else:
52
+ logging.info('Skipping template search for sequence %s', sequence)
53
+ protein_templates = templates_lib.Templates(
54
+ query_sequence=sequence,
55
+ hits=[],
56
+ max_template_date=templates_config.filter_config.max_template_date,
57
+ structure_store=structure_stores.StructureStore(pdb_database_path),
58
+ )
59
+ return protein_templates
60
+
61
+
62
+ # Cache to avoid re-running the MSA tools for the same sequence in homomers.
63
+ @functools.cache
64
+ def _get_protein_msa_and_templates(
65
+ sequence: str,
66
+ run_template_search: bool,
67
+ uniref90_msa_config: msa_config.RunConfig,
68
+ mgnify_msa_config: msa_config.RunConfig,
69
+ small_bfd_msa_config: msa_config.RunConfig,
70
+ uniprot_msa_config: msa_config.RunConfig,
71
+ templates_config: msa_config.TemplatesConfig,
72
+ pdb_database_path: str,
73
+ model_loader_callback=None,
74
+ ) -> tuple[msa.Msa, msa.Msa, templates_lib.Templates]:
75
+ """Processes a single protein chain."""
76
+ logging.info('Getting protein MSAs for sequence %s', sequence)
77
+ msa_start_time = time.time()
78
+ # Run various MSA tools in parallel. Use a ThreadPoolExecutor because
79
+ # they're not blocked by the GIL, as they're sub-shelled out.
80
+ with futures.ThreadPoolExecutor(max_workers=4) as executor:
81
+ uniref90_msa_future = executor.submit(
82
+ msa.get_msa,
83
+ target_sequence=sequence,
84
+ run_config=uniref90_msa_config,
85
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
86
+ )
87
+ mgnify_msa_future = executor.submit(
88
+ msa.get_msa,
89
+ target_sequence=sequence,
90
+ run_config=mgnify_msa_config,
91
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
92
+ )
93
+ small_bfd_msa_future = executor.submit(
94
+ msa.get_msa,
95
+ target_sequence=sequence,
96
+ run_config=small_bfd_msa_config,
97
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
98
+ )
99
+ uniprot_msa_future = executor.submit(
100
+ msa.get_msa,
101
+ target_sequence=sequence,
102
+ run_config=uniprot_msa_config,
103
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
104
+ )
105
+ uniref90_msa = uniref90_msa_future.result()
106
+ mgnify_msa = mgnify_msa_future.result()
107
+ small_bfd_msa = small_bfd_msa_future.result()
108
+ uniprot_msa = uniprot_msa_future.result()
109
+ logging.info(
110
+ 'Getting protein MSAs took %.2f seconds for sequence %s',
111
+ time.time() - msa_start_time,
112
+ sequence,
113
+ )
114
+
115
+ # Load model after protein MSAs are completed
116
+ if model_loader_callback is not None:
117
+ logging.info('Protein MSAs completed. Loading model parameters...')
118
+ model_loader_callback()
119
+
120
+ logging.info('Deduplicating MSAs for sequence %s', sequence)
121
+ msa_dedupe_start_time = time.time()
122
+ with futures.ThreadPoolExecutor() as executor:
123
+ unpaired_protein_msa_future = executor.submit(
124
+ msa.Msa.from_multiple_msas,
125
+ msas=[uniref90_msa, small_bfd_msa, mgnify_msa],
126
+ deduplicate=True,
127
+ )
128
+ paired_protein_msa_future = executor.submit(
129
+ msa.Msa.from_multiple_msas, msas=[uniprot_msa], deduplicate=False
130
+ )
131
+ unpaired_protein_msa = unpaired_protein_msa_future.result()
132
+ paired_protein_msa = paired_protein_msa_future.result()
133
+ logging.info(
134
+ 'Deduplicating MSAs took %.2f seconds for sequence %s, found %d unpaired'
135
+ ' sequences, %d paired sequences',
136
+ time.time() - msa_dedupe_start_time,
137
+ sequence,
138
+ unpaired_protein_msa.depth,
139
+ paired_protein_msa.depth,
140
+ )
141
+
142
+ protein_templates = _get_protein_templates(
143
+ sequence=sequence,
144
+ input_msa_a3m=unpaired_protein_msa.to_a3m(),
145
+ run_template_search=run_template_search,
146
+ templates_config=templates_config,
147
+ pdb_database_path=pdb_database_path,
148
+ )
149
+
150
+ return unpaired_protein_msa, paired_protein_msa, protein_templates
151
+
152
+
153
+ # Cache to avoid re-running the Nhmmer for the same sequence in homomers.
154
+ @functools.cache
155
+ def _get_rna_msa(
156
+ sequence: str,
157
+ nt_rna_msa_config: msa_config.NhmmerConfig,
158
+ rfam_msa_config: msa_config.NhmmerConfig,
159
+ rnacentral_msa_config: msa_config.NhmmerConfig,
160
+ ) -> msa.Msa:
161
+ """Processes a single RNA chain."""
162
+ logging.info('Getting RNA MSAs for sequence %s', sequence)
163
+ rna_msa_start_time = time.time()
164
+ # Run various MSA tools in parallel. Use a ThreadPoolExecutor because
165
+ # they're not blocked by the GIL, as they're sub-shelled out.
166
+ with futures.ThreadPoolExecutor() as executor:
167
+ nt_rna_msa_future = executor.submit(
168
+ msa.get_msa,
169
+ target_sequence=sequence,
170
+ run_config=nt_rna_msa_config,
171
+ chain_poly_type=mmcif_names.RNA_CHAIN,
172
+ )
173
+ rfam_msa_future = executor.submit(
174
+ msa.get_msa,
175
+ target_sequence=sequence,
176
+ run_config=rfam_msa_config,
177
+ chain_poly_type=mmcif_names.RNA_CHAIN,
178
+ )
179
+ rnacentral_msa_future = executor.submit(
180
+ msa.get_msa,
181
+ target_sequence=sequence,
182
+ run_config=rnacentral_msa_config,
183
+ chain_poly_type=mmcif_names.RNA_CHAIN,
184
+ )
185
+ nt_rna_msa = nt_rna_msa_future.result()
186
+ rfam_msa = rfam_msa_future.result()
187
+ rnacentral_msa = rnacentral_msa_future.result()
188
+ rna_msa = msa.Msa.from_multiple_msas(
189
+ msas=[rfam_msa, rnacentral_msa, nt_rna_msa],
190
+ deduplicate=True,
191
+ )
192
+ logging.info(
193
+ 'Getting RNA MSAs took %.2f seconds for sequence %s, found %d unpaired'
194
+ ' sequences',
195
+ time.time() - rna_msa_start_time,
196
+ sequence,
197
+ rna_msa.depth,
198
+ )
199
+ return rna_msa
200
+
201
+
202
+ @dataclasses.dataclass(frozen=True, slots=True, kw_only=True)
203
+ class DataPipelineConfig:
204
+ """The configuration for the data pipeline.
205
+
206
+ Attributes:
207
+ jackhmmer_binary_path: Jackhmmer binary path, used for protein MSA search.
208
+ nhmmer_binary_path: Nhmmer binary path, used for RNA MSA search.
209
+ hmmalign_binary_path: Hmmalign binary path, used to align hits to the query
210
+ profile.
211
+ hmmsearch_binary_path: Hmmsearch binary path, used for template search.
212
+ hmmbuild_binary_path: Hmmbuild binary path, used to build HMM profile from
213
+ raw MSA in template search.
214
+ small_bfd_database_path: Small BFD database path, used for protein MSA
215
+ search.
216
+ small_bfd_z_value: The Z-value representing the database size in number of
217
+ sequences for E-value calculation. Must be set for sharded databases.
218
+ mgnify_database_path: Mgnify database path, used for protein MSA search.
219
+ mgnify_z_value: The Z-value representing the database size in number of
220
+ sequences for E-value calculation. Must be set for sharded databases.
221
+ uniprot_cluster_annot_database_path: Uniprot database path, used for protein
222
+ paired MSA search.
223
+ uniprot_cluster_annot_z_value: The Z-value representing the database size in
224
+ number of sequences for E-value calculation. Must be set for sharded
225
+ databases.
226
+ uniref90_database_path: UniRef90 database path, used for MSA search, and the
227
+ MSA obtained by searching it is used to construct the profile for template
228
+ search.
229
+ uniref90_z_value: The Z-value representing the database size in number of
230
+ sequences for E-value calculation. Must be set for sharded databases.
231
+ ntrna_database_path: NT-RNA database path, used for RNA MSA search.
232
+ ntrna_z_value: The Z-value representing the database size in megabases for
233
+ E-value calculation. Must be set for sharded databases.
234
+ rfam_database_path: Rfam database path, used for RNA MSA search.
235
+ rfam_z_value: The Z-value representing the database size in megabases for
236
+ E-value calculation. Must be set for sharded databases.
237
+ rna_central_database_path: RNAcentral database path, used for RNA MSA
238
+ search.
239
+ rna_central_z_value: The Z-value representing the database size in megabases
240
+ for E-value calculation. Must be set for sharded databases.
241
+ seqres_database_path: PDB sequence database path, used for template search.
242
+ pdb_database_path: PDB database directory with mmCIF files path, used for
243
+ template search.
244
+ jackhmmer_n_cpu: Number of CPUs to use for Jackhmmer.
245
+ jackhmmer_max_parallel_shards: Maximum number of shards to search against in
246
+ parallel. If None, one Jackhmmer instance will be run per shard. Only
247
+ applicable if the database is sharded.
248
+ nhmmer_n_cpu: Number of CPUs to use for Nhmmer.
249
+ nhmmer_max_parallel_shards: Maximum number of shards to search against in
250
+ parallel. If None, one Nhmmer instance will be run per shard. Only
251
+ applicable if the database is sharded.
252
+ max_template_date: The latest date of templates to use.
253
+ """
254
+
255
+ # Binary paths.
256
+ jackhmmer_binary_path: str
257
+ nhmmer_binary_path: str
258
+ hmmalign_binary_path: str
259
+ hmmsearch_binary_path: str
260
+ hmmbuild_binary_path: str
261
+ mmseqs_binary_path: str
262
+
263
+ # Jackhmmer databases.
264
+ small_bfd_database_path: str
265
+ small_bfd_z_value: int | None = None
266
+ mgnify_database_path: str
267
+ mgnify_z_value: int | None = None
268
+ uniprot_cluster_annot_database_path: str
269
+ uniprot_cluster_annot_z_value: int | None = None
270
+ uniref90_database_path: str
271
+ uniref90_z_value: int | None = None
272
+ # Nhmmer databases.
273
+ ntrna_database_path: str
274
+ ntrna_z_value: int | None = None
275
+ rfam_database_path: str
276
+ rfam_z_value: int | None = None
277
+ rna_central_database_path: str
278
+ rna_central_z_value: int | None = None
279
+ # Template search databases.
280
+ seqres_database_path: str
281
+ pdb_database_path: str
282
+
283
+ # Optional configuration for MSA tools.
284
+ jackhmmer_n_cpu: int = 8
285
+ jackhmmer_max_parallel_shards: int | None = None
286
+ jackhmmer_max_threads: int | None = None
287
+ nhmmer_n_cpu: int = 8
288
+ nhmmer_max_parallel_shards: int | None = None
289
+ nhmmer_max_threads: int | None = None
290
+ mmseqs_n_cpu: int = 8
291
+
292
+ max_template_date: datetime.date
293
+
294
+ use_mmseqs: bool = False
295
+ use_mmseqs_gpu: bool = False
296
+ mmseqs_options: str
297
+ result2msa_options: str
298
+
299
+ class DataPipeline:
300
+ """Runs the alignment tools and assembles the input features."""
301
+
302
+ def __init__(self, data_pipeline_config: DataPipelineConfig, model_loader_callback=None):
303
+ """Initializes the data pipeline with default configurations."""
304
+ if not data_pipeline_config.use_mmseqs:
305
+ self._uniref90_msa_config = msa_config.RunConfig(
306
+ config=msa_config.JackhmmerConfig(
307
+ binary_path=data_pipeline_config.jackhmmer_binary_path,
308
+ database_config=msa_config.DatabaseConfig(
309
+ name='uniref90',
310
+ path=data_pipeline_config.uniref90_database_path,
311
+ ),
312
+ n_cpu=data_pipeline_config.jackhmmer_n_cpu,
313
+ n_iter=1,
314
+ e_value=1e-4,
315
+ z_value=data_pipeline_config.uniref90_z_value,
316
+ dom_z_value=data_pipeline_config.uniref90_z_value,
317
+ max_sequences=10_000,
318
+ max_parallel_shards=data_pipeline_config.jackhmmer_max_parallel_shards,
319
+ max_threads=data_pipeline_config.jackhmmer_max_threads,
320
+ ),
321
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
322
+ crop_size=None,
323
+ )
324
+ self._mgnify_msa_config = msa_config.RunConfig(
325
+ config=msa_config.JackhmmerConfig(
326
+ binary_path=data_pipeline_config.jackhmmer_binary_path,
327
+ database_config=msa_config.DatabaseConfig(
328
+ name='mgnify',
329
+ path=data_pipeline_config.mgnify_database_path,
330
+ ),
331
+ n_cpu=data_pipeline_config.jackhmmer_n_cpu,
332
+ n_iter=1,
333
+ e_value=1e-4,
334
+ z_value=data_pipeline_config.mgnify_z_value,
335
+ dom_z_value=data_pipeline_config.mgnify_z_value,
336
+ max_sequences=5_000,
337
+ max_parallel_shards=data_pipeline_config.jackhmmer_max_parallel_shards,
338
+ max_threads=data_pipeline_config.jackhmmer_max_threads,
339
+ ),
340
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
341
+ crop_size=None,
342
+ )
343
+ self._small_bfd_msa_config = msa_config.RunConfig(
344
+ config=msa_config.JackhmmerConfig(
345
+ binary_path=data_pipeline_config.jackhmmer_binary_path,
346
+ database_config=msa_config.DatabaseConfig(
347
+ name='small_bfd',
348
+ path=data_pipeline_config.small_bfd_database_path,
349
+ ),
350
+ n_cpu=data_pipeline_config.jackhmmer_n_cpu,
351
+ n_iter=1,
352
+ e_value=1e-4,
353
+ # Set z_value=138_515_945 to match the z_value used in the paper.
354
+ # In practice, this has minimal impact on predicted structures.
355
+ z_value=data_pipeline_config.small_bfd_z_value,
356
+ dom_z_value=data_pipeline_config.small_bfd_z_value,
357
+ max_sequences=5_000,
358
+ max_parallel_shards=data_pipeline_config.jackhmmer_max_parallel_shards,
359
+ max_threads=data_pipeline_config.jackhmmer_max_threads,
360
+ ),
361
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
362
+ crop_size=None,
363
+ )
364
+ self._uniprot_msa_config = msa_config.RunConfig(
365
+ config=msa_config.JackhmmerConfig(
366
+ binary_path=data_pipeline_config.jackhmmer_binary_path,
367
+ database_config=msa_config.DatabaseConfig(
368
+ name='uniprot_cluster_annot',
369
+ path=data_pipeline_config.uniprot_cluster_annot_database_path,
370
+ ),
371
+ n_cpu=data_pipeline_config.jackhmmer_n_cpu,
372
+ n_iter=1,
373
+ e_value=1e-4,
374
+ z_value=data_pipeline_config.uniprot_cluster_annot_z_value,
375
+ dom_z_value=data_pipeline_config.uniprot_cluster_annot_z_value,
376
+ max_sequences=50_000,
377
+ max_parallel_shards=data_pipeline_config.jackhmmer_max_parallel_shards,
378
+ max_threads=data_pipeline_config.jackhmmer_max_threads,
379
+ ),
380
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
381
+ crop_size=None,
382
+ )
383
+ else:
384
+ self._uniref90_msa_config = msa_config.RunConfig(
385
+ config=msa_config.MmseqsConfig(
386
+ binary_path=data_pipeline_config.mmseqs_binary_path,
387
+ database_config=msa_config.DatabaseConfig(
388
+ name='uniref90',
389
+ path=data_pipeline_config.uniref90_database_path,
390
+ ),
391
+ n_cpu=data_pipeline_config.mmseqs_n_cpu,
392
+ use_gpu=1 if data_pipeline_config.use_mmseqs_gpu else 0,
393
+ mmseqs_options=data_pipeline_config.mmseqs_options,
394
+ result2msa_options=data_pipeline_config.result2msa_options,
395
+ max_sequences=10_000,
396
+ ),
397
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
398
+ crop_size=None,
399
+ )
400
+ self._mgnify_msa_config = msa_config.RunConfig(
401
+ config=msa_config.MmseqsConfig(
402
+ binary_path=data_pipeline_config.mmseqs_binary_path,
403
+ database_config=msa_config.DatabaseConfig(
404
+ name='mgnify',
405
+ path=data_pipeline_config.mgnify_database_path,
406
+ ),
407
+ n_cpu=data_pipeline_config.mmseqs_n_cpu,
408
+ use_gpu=1 if data_pipeline_config.use_mmseqs_gpu else 0,
409
+ mmseqs_options=data_pipeline_config.mmseqs_options,
410
+ result2msa_options=data_pipeline_config.result2msa_options,
411
+ max_sequences=5_000,
412
+ ),
413
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
414
+ crop_size=None,
415
+ )
416
+ self._small_bfd_msa_config = msa_config.RunConfig(
417
+ config=msa_config.MmseqsConfig(
418
+ binary_path=data_pipeline_config.mmseqs_binary_path,
419
+ database_config=msa_config.DatabaseConfig(
420
+ name='small_bfd',
421
+ path=data_pipeline_config.small_bfd_database_path,
422
+ ),
423
+ n_cpu=data_pipeline_config.mmseqs_n_cpu,
424
+ use_gpu=1 if data_pipeline_config.use_mmseqs_gpu else 0,
425
+ mmseqs_options=data_pipeline_config.mmseqs_options,
426
+ result2msa_options=data_pipeline_config.result2msa_options,
427
+ max_sequences=5_000,
428
+ ),
429
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
430
+ crop_size=None,
431
+ )
432
+ self._uniprot_msa_config = msa_config.RunConfig(
433
+ config=msa_config.MmseqsConfig(
434
+ binary_path=data_pipeline_config.mmseqs_binary_path,
435
+ database_config=msa_config.DatabaseConfig(
436
+ name='uniprot_cluster_annot',
437
+ path=data_pipeline_config.uniprot_cluster_annot_database_path,
438
+ ),
439
+ n_cpu=data_pipeline_config.mmseqs_n_cpu,
440
+ use_gpu=1 if data_pipeline_config.use_mmseqs_gpu else 0,
441
+ mmseqs_options=data_pipeline_config.mmseqs_options,
442
+ result2msa_options=data_pipeline_config.result2msa_options,
443
+ max_sequences=50_000,
444
+ ),
445
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
446
+ crop_size=None,
447
+ )
448
+
449
+ self._nt_rna_msa_config = msa_config.RunConfig(
450
+ config=msa_config.NhmmerConfig(
451
+ binary_path=data_pipeline_config.nhmmer_binary_path,
452
+ hmmalign_binary_path=data_pipeline_config.hmmalign_binary_path,
453
+ hmmbuild_binary_path=data_pipeline_config.hmmbuild_binary_path,
454
+ database_config=msa_config.DatabaseConfig(
455
+ name='nt_rna',
456
+ path=data_pipeline_config.ntrna_database_path,
457
+ ),
458
+ n_cpu=data_pipeline_config.nhmmer_n_cpu,
459
+ e_value=1e-3,
460
+ alphabet='rna',
461
+ z_value=data_pipeline_config.ntrna_z_value,
462
+ max_sequences=10_000,
463
+ max_parallel_shards=data_pipeline_config.nhmmer_max_parallel_shards,
464
+ max_threads=data_pipeline_config.nhmmer_max_threads,
465
+ ),
466
+ chain_poly_type=mmcif_names.RNA_CHAIN,
467
+ crop_size=None,
468
+ )
469
+ self._rfam_msa_config = msa_config.RunConfig(
470
+ config=msa_config.NhmmerConfig(
471
+ binary_path=data_pipeline_config.nhmmer_binary_path,
472
+ hmmalign_binary_path=data_pipeline_config.hmmalign_binary_path,
473
+ hmmbuild_binary_path=data_pipeline_config.hmmbuild_binary_path,
474
+ database_config=msa_config.DatabaseConfig(
475
+ name='rfam_rna',
476
+ path=data_pipeline_config.rfam_database_path,
477
+ ),
478
+ n_cpu=data_pipeline_config.nhmmer_n_cpu,
479
+ e_value=1e-3,
480
+ alphabet='rna',
481
+ z_value=data_pipeline_config.rfam_z_value,
482
+ max_sequences=10_000,
483
+ max_parallel_shards=data_pipeline_config.nhmmer_max_parallel_shards,
484
+ max_threads=data_pipeline_config.nhmmer_max_threads,
485
+ ),
486
+ chain_poly_type=mmcif_names.RNA_CHAIN,
487
+ crop_size=None,
488
+ )
489
+ self._rnacentral_msa_config = msa_config.RunConfig(
490
+ config=msa_config.NhmmerConfig(
491
+ binary_path=data_pipeline_config.nhmmer_binary_path,
492
+ hmmalign_binary_path=data_pipeline_config.hmmalign_binary_path,
493
+ hmmbuild_binary_path=data_pipeline_config.hmmbuild_binary_path,
494
+ database_config=msa_config.DatabaseConfig(
495
+ name='rna_central_rna',
496
+ path=data_pipeline_config.rna_central_database_path,
497
+ ),
498
+ n_cpu=data_pipeline_config.nhmmer_n_cpu,
499
+ e_value=1e-3,
500
+ alphabet='rna',
501
+ z_value=data_pipeline_config.rna_central_z_value,
502
+ max_sequences=10_000,
503
+ max_parallel_shards=data_pipeline_config.nhmmer_max_parallel_shards,
504
+ max_threads=data_pipeline_config.nhmmer_max_threads,
505
+ ),
506
+ chain_poly_type=mmcif_names.RNA_CHAIN,
507
+ crop_size=None,
508
+ )
509
+
510
+ self._templates_config = msa_config.TemplatesConfig(
511
+ template_tool_config=msa_config.TemplateToolConfig(
512
+ database_path=data_pipeline_config.seqres_database_path,
513
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
514
+ hmmsearch_config=msa_config.HmmsearchConfig(
515
+ hmmsearch_binary_path=data_pipeline_config.hmmsearch_binary_path,
516
+ hmmbuild_binary_path=data_pipeline_config.hmmbuild_binary_path,
517
+ filter_f1=0.1,
518
+ filter_f2=0.1,
519
+ filter_f3=0.1,
520
+ e_value=100,
521
+ inc_e=100,
522
+ dom_e=100,
523
+ incdom_e=100,
524
+ alphabet='amino',
525
+ ),
526
+ ),
527
+ filter_config=msa_config.TemplateFilterConfig(
528
+ max_subsequence_ratio=0.95,
529
+ min_align_ratio=0.1,
530
+ min_hit_length=10,
531
+ deduplicate_sequences=True,
532
+ max_hits=4,
533
+ max_template_date=data_pipeline_config.max_template_date,
534
+ ),
535
+ )
536
+ self._pdb_database_path = data_pipeline_config.pdb_database_path
537
+ self._model_loader_callback = model_loader_callback
538
+
539
+ def process_protein_chain(
540
+ self, chain: folding_input.ProteinChain
541
+ ) -> folding_input.ProteinChain:
542
+ """Processes a single protein chain."""
543
+ has_unpaired_msa = chain.unpaired_msa is not None
544
+ has_paired_msa = chain.paired_msa is not None
545
+ has_templates = chain.templates is not None
546
+
547
+ if not has_unpaired_msa and not has_paired_msa and not chain.templates:
548
+ # MSA None - search. Templates either [] - don't search, or None - search.
549
+ unpaired_msa, paired_msa, template_hits = _get_protein_msa_and_templates(
550
+ sequence=chain.sequence,
551
+ run_template_search=not has_templates, # Skip template search if [].
552
+ uniref90_msa_config=self._uniref90_msa_config,
553
+ mgnify_msa_config=self._mgnify_msa_config,
554
+ small_bfd_msa_config=self._small_bfd_msa_config,
555
+ uniprot_msa_config=self._uniprot_msa_config,
556
+ templates_config=self._templates_config,
557
+ pdb_database_path=self._pdb_database_path,
558
+ model_loader_callback=self._model_loader_callback,
559
+ )
560
+ unpaired_msa = unpaired_msa.to_a3m()
561
+ paired_msa = paired_msa.to_a3m()
562
+ templates = [
563
+ folding_input.Template(
564
+ mmcif=struc.to_mmcif(),
565
+ query_to_template_map=hit.query_to_hit_mapping,
566
+ )
567
+ for hit, struc in template_hits.get_hits_with_structures()
568
+ ]
569
+ elif has_unpaired_msa and has_paired_msa and not has_templates:
570
+ # Has MSA, but doesn't have templates. Search for templates only.
571
+ empty_msa = msa.Msa.from_empty(
572
+ query_sequence=chain.sequence,
573
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
574
+ ).to_a3m()
575
+ unpaired_msa = chain.unpaired_msa or empty_msa
576
+ paired_msa = chain.paired_msa or empty_msa
577
+ template_hits = _get_protein_templates(
578
+ sequence=chain.sequence,
579
+ input_msa_a3m=unpaired_msa,
580
+ run_template_search=True,
581
+ templates_config=self._templates_config,
582
+ pdb_database_path=self._pdb_database_path,
583
+ )
584
+ templates = [
585
+ folding_input.Template(
586
+ mmcif=struc.to_mmcif(),
587
+ query_to_template_map=hit.query_to_hit_mapping,
588
+ )
589
+ for hit, struc in template_hits.get_hits_with_structures()
590
+ ]
591
+ else:
592
+ # Has MSA and templates, don't search for anything.
593
+ if not has_unpaired_msa or not has_paired_msa or not has_templates:
594
+ raise ValueError(
595
+ f'Protein chain {chain.id} has unpaired MSA, paired MSA, or'
596
+ ' templates set only partially. If you want to run the pipeline'
597
+ ' with custom MSA/templates, you need to set all of them. You can'
598
+ ' set MSA to empty string and templates to empty list to signify'
599
+ ' that they should not be used and searched for.'
600
+ )
601
+ logging.info(
602
+ 'Skipping MSA and template search for protein chain %s because it '
603
+ 'already has MSAs and templates.',
604
+ chain.id,
605
+ )
606
+ if not chain.unpaired_msa:
607
+ logging.info('Using empty unpaired MSA for protein chain %s', chain.id)
608
+ if not chain.paired_msa:
609
+ logging.info('Using empty paired MSA for protein chain %s', chain.id)
610
+ if not chain.templates:
611
+ logging.info('Using no templates for protein chain %s', chain.id)
612
+ empty_msa = msa.Msa.from_empty(
613
+ query_sequence=chain.sequence,
614
+ chain_poly_type=mmcif_names.PROTEIN_CHAIN,
615
+ ).to_a3m()
616
+ unpaired_msa = chain.unpaired_msa or empty_msa
617
+ paired_msa = chain.paired_msa or empty_msa
618
+ templates = chain.templates
619
+
620
+ return folding_input.ProteinChain(
621
+ id=chain.id,
622
+ sequence=chain.sequence,
623
+ ptms=chain.ptms,
624
+ unpaired_msa=unpaired_msa,
625
+ paired_msa=paired_msa,
626
+ templates=templates,
627
+ )
628
+
629
+ def process_rna_chain(
630
+ self, chain: folding_input.RnaChain
631
+ ) -> folding_input.RnaChain:
632
+ """Processes a single RNA chain."""
633
+ if chain.unpaired_msa is not None:
634
+ # Don't run MSA tools if the chain already has an MSA.
635
+ logging.info(
636
+ 'Skipping MSA search for RNA chain %s because it already has MSA.',
637
+ chain.id,
638
+ )
639
+ if not chain.unpaired_msa:
640
+ logging.info('Using empty unpaired MSA for RNA chain %s', chain.id)
641
+ empty_msa = msa.Msa.from_empty(
642
+ query_sequence=chain.sequence, chain_poly_type=mmcif_names.RNA_CHAIN
643
+ ).to_a3m()
644
+ unpaired_msa = chain.unpaired_msa or empty_msa
645
+ else:
646
+ unpaired_msa = _get_rna_msa(
647
+ sequence=chain.sequence,
648
+ nt_rna_msa_config=self._nt_rna_msa_config,
649
+ rfam_msa_config=self._rfam_msa_config,
650
+ rnacentral_msa_config=self._rnacentral_msa_config,
651
+ ).to_a3m()
652
+ return folding_input.RnaChain(
653
+ id=chain.id,
654
+ sequence=chain.sequence,
655
+ modifications=chain.modifications,
656
+ unpaired_msa=unpaired_msa,
657
+ )
658
+
659
+ def process(self, fold_input: folding_input.Input) -> folding_input.Input:
660
+ """Runs MSA and template tools and returns a new Input with the results."""
661
+ processed_chains = []
662
+ for chain in fold_input.chains:
663
+ print(f'Running data pipeline for chain {chain.id}...')
664
+ process_chain_start_time = time.time()
665
+ match chain:
666
+ case folding_input.ProteinChain():
667
+ processed_chains.append(self.process_protein_chain(chain))
668
+ case folding_input.RnaChain():
669
+ processed_chains.append(self.process_rna_chain(chain))
670
+ case _:
671
+ processed_chains.append(chain)
672
+ print(
673
+ f'Running data pipeline for chain {chain.id} took'
674
+ f' {time.time() - process_chain_start_time:.2f} seconds',
675
+ )
676
+
677
+ return dataclasses.replace(fold_input, chains=processed_chains)
flax_model/alphafold3/data/structure_stores.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Library for loading structure data from various sources."""
4
+
5
+ from collections.abc import Mapping, Sequence
6
+ import functools
7
+ import os
8
+ import pathlib
9
+ import tarfile
10
+
11
+
12
+ class NotFoundError(KeyError):
13
+ """Raised when the structure store doesn't contain the requested target."""
14
+
15
+
16
+ class StructureStore:
17
+ """Handles the retrieval of mmCIF files from a filesystem."""
18
+
19
+ def __init__(
20
+ self,
21
+ structures: str | os.PathLike[str] | Mapping[str, str],
22
+ ):
23
+ """Initialises the instance.
24
+
25
+ Args:
26
+ structures: Path of the directory where the mmCIF files are or a Mapping
27
+ from target name to mmCIF string.
28
+ """
29
+ if isinstance(structures, Mapping):
30
+ self._structure_mapping = structures
31
+ self._structure_path = None
32
+ self._structure_tar = None
33
+ else:
34
+ self._structure_mapping = None
35
+ path_str = os.fspath(structures)
36
+ if path_str.endswith('.tar'):
37
+ self._structure_tar = tarfile.open(path_str, 'r')
38
+ self._structure_path = None
39
+ else:
40
+ self._structure_path = pathlib.Path(structures)
41
+ self._structure_tar = None
42
+
43
+ @functools.cached_property
44
+ def _tar_members(self) -> Mapping[str, tarfile.TarInfo]:
45
+ assert self._structure_tar is not None
46
+ return {
47
+ path.stem: tarinfo
48
+ for tarinfo in self._structure_tar.getmembers()
49
+ if tarinfo.isfile()
50
+ and (path := pathlib.Path(tarinfo.path.lower())).suffix == '.cif'
51
+ }
52
+
53
+ def get_mmcif_str(self, target_name: str) -> str:
54
+ """Returns an mmCIF for a given `target_name`.
55
+
56
+ Args:
57
+ target_name: Name specifying the target mmCIF.
58
+
59
+ Raises:
60
+ NotFoundError: If the target is not found.
61
+ """
62
+ if self._structure_mapping is not None:
63
+ try:
64
+ return self._structure_mapping[target_name]
65
+ except KeyError as e:
66
+ raise NotFoundError(f'{target_name=} not found') from e
67
+
68
+ if self._structure_tar is not None:
69
+ try:
70
+ member = self._tar_members[target_name]
71
+ if struct_file := self._structure_tar.extractfile(member):
72
+ return struct_file.read().decode()
73
+ else:
74
+ raise NotFoundError(f'{target_name=} not found')
75
+ except KeyError:
76
+ raise NotFoundError(f'{target_name=} not found') from None
77
+
78
+ filepath = self._structure_path / f'{target_name}.cif'
79
+ try:
80
+ return filepath.read_text()
81
+ except FileNotFoundError as e:
82
+ raise NotFoundError(f'{target_name=} not found at {filepath=}') from e
83
+
84
+ def target_names(self) -> Sequence[str]:
85
+ """Returns all targets in the store."""
86
+ if self._structure_mapping is not None:
87
+ return [*self._structure_mapping.keys()]
88
+ elif self._structure_tar is not None:
89
+ return sorted(self._tar_members.keys())
90
+ elif self._structure_path is not None:
91
+ return sorted([path.stem for path in self._structure_path.glob('*.cif')])
92
+ return ()
flax_model/alphafold3/data/template_store.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Interface and implementations for fetching templates data."""
4
+
5
+ from collections.abc import Mapping
6
+ import datetime
7
+ from typing import Any, Protocol, TypeAlias
8
+
9
+
10
+ TemplateFeatures: TypeAlias = Mapping[str, Any]
11
+
12
+
13
+ class TemplateFeatureProvider(Protocol):
14
+ """Interface for providing Template Features."""
15
+
16
+ def __call__(
17
+ self,
18
+ sequence: str,
19
+ release_date: datetime.date | None,
20
+ include_ligand_features: bool = True,
21
+ ) -> TemplateFeatures:
22
+ """Retrieve template features for the given sequence and release_date.
23
+
24
+ Args:
25
+ sequence: The residue sequence of the query.
26
+ release_date: The release_date of the template query, this is used to
27
+ filter templates for training, ensuring that they do not leak structure
28
+ information from the future.
29
+ include_ligand_features: Whether to include ligand features.
30
+
31
+ Returns:
32
+ Template features: A mapping of template feature labels to features, which
33
+ may be numpy arrays, bytes objects, or for the special case of label
34
+ `ligand_features`, a nested feature map of labels to numpy arrays.
35
+
36
+ Raises:
37
+ TemplateRetrievalError if the template features were not found.
38
+ """
flax_model/alphafold3/data/tools/msa_tool.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Defines protocol for MSA tools."""
4
+
5
+ import dataclasses
6
+ from typing import Protocol
7
+
8
+
9
+ @dataclasses.dataclass(frozen=True, slots=True, kw_only=True)
10
+ class MsaToolResult:
11
+ """The result of a MSA tool query.
12
+
13
+ Attributes:
14
+ target_sequence: The sequence that was used to query the MSA tool.
15
+ e_value: The e-value that was used to filter the MSA tool results.
16
+ a3m: The MSA output of the tool in the A3M format.
17
+ tblout: The optional tblout output of the MSA tool (needed for merging
18
+ results of queries against a sharded database).
19
+ """
20
+
21
+ target_sequence: str
22
+ e_value: float
23
+ a3m: str
24
+ tblout: str | None = None
25
+
26
+
27
+ class MsaTool(Protocol):
28
+ """Interface for MSA tools."""
29
+
30
+ def query(self, target_sequence: str) -> MsaToolResult:
31
+ """Runs the MSA tool on the target sequence."""
flax_model/alphafold3/data/tools/nhmmer.py ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Library to run Nhmmer from Python."""
4
+
5
+ from collections.abc import Iterable, Sequence
6
+ from concurrent import futures
7
+ import heapq
8
+ import os
9
+ import pathlib
10
+ import shutil
11
+ import tempfile
12
+ import time
13
+ from typing import Final
14
+
15
+ from absl import logging
16
+ from flax_model.alphafold3.data import parsers
17
+ from flax_model.alphafold3.data.tools import hmmalign
18
+ from flax_model.alphafold3.data.tools import hmmbuild
19
+ from flax_model.alphafold3.data.tools import msa_tool
20
+ from flax_model.alphafold3.data.tools import shards
21
+ from flax_model.alphafold3.data.tools import subprocess_utils
22
+
23
+ _SHORT_SEQUENCE_CUTOFF: Final[int] = 50
24
+
25
+
26
+ class Nhmmer(msa_tool.MsaTool):
27
+ """Python wrapper of the Nhmmer binary."""
28
+
29
+ def __init__(
30
+ self,
31
+ binary_path: str,
32
+ hmmalign_binary_path: str,
33
+ hmmbuild_binary_path: str,
34
+ database_path: str,
35
+ n_cpu: int = 8,
36
+ e_value: float = 1e-3,
37
+ z_value: float | int | None = None,
38
+ max_sequences: int = 5000,
39
+ filter_f3: float = 1e-5,
40
+ alphabet: str | None = None,
41
+ strand: str | None = None,
42
+ max_threads: int | None = None,
43
+ ):
44
+ """Initializes the Python Nhmmer wrapper.
45
+
46
+ NOTE: The MSA obtained by running against sharded dbs won't be always
47
+ exactly the same as the MSA obtained by running against an unsharded db.
48
+ This is because of Jackhmmer deduplication logic, which won't spot duplicate
49
+ hits across multiple shards. Usually this means that the sharded search
50
+ finds more hits (likely bounded by the number of shards), but this should
51
+ not pose an issue given how the results are used downstream. The problem is
52
+ more pronounced with deep MSAs and lower in the hit list (higher e-values).
53
+
54
+ Make sure to set the Z value when searching against a sharded database,
55
+ otherwise the results won't match the normal unsharded search.
56
+
57
+ Args:
58
+ binary_path: Path to the Nhmmer binary.
59
+ hmmalign_binary_path: Path to the Hmmalign binary.
60
+ hmmbuild_binary_path: Path to the Hmmbuild binary.
61
+ database_path: MSA database path to search against. This can be either a
62
+ FASTA (slow) or HMMERDB produced from the FASTA using the makehmmerdb
63
+ binary. The HMMERDB is ~10x faster but experimental. Sharded file
64
+ specs, e.g. <db_path>@<num_shards>, are supported.
65
+ n_cpu: The number of CPUs to give Nhmmer.
66
+ e_value: The E-value, see Nhmmer docs for more details. Will be
67
+ overwritten if bit_score is set.
68
+ z_value: The Z-value representing the number of comparisons done (i.e
69
+ correct database size) for E-value calculation. Make sure to set this
70
+ when searching against a sharded database, otherwise the e-values will
71
+ be incorrectly scaled.
72
+ max_sequences: Maximum number of sequences to return in the MSA.
73
+ filter_f3: Forward pre-filter, set to >1.0 to turn off.
74
+ alphabet: The alphabet to assert when building a profile with hmmbuild.
75
+ This must be 'rna', 'dna', or None.
76
+ strand: "watson" searches query sequence, "crick" searches
77
+ reverse-compliment and default is None which means searching for both.
78
+ max_threads: If given, the maximum number of threads used when running
79
+ sharded databases.
80
+
81
+ Raises:
82
+ RuntimeError: If Nhmmer binary not found within the path.
83
+ ValueError: If an invalid configuration is provided in the args.
84
+ """
85
+ self._database_path = database_path
86
+
87
+ if shard_paths := shards.get_sharded_paths(self._database_path):
88
+ if z_value is None:
89
+ raise ValueError(
90
+ 'The Z-value must be set when searching against a sharded database '
91
+ 'to correctly scale e-values.'
92
+ )
93
+ if 'hmmerdb' in self._database_path:
94
+ raise ValueError('HMMERDB is not supported in sharded mode.')
95
+
96
+ if max_sequences <= 1:
97
+ raise ValueError(
98
+ 'max_sequences must be greater than 1 when running in sharded '
99
+ 'mode, because each shard would return only the query sequence.'
100
+ )
101
+
102
+ self._shard_paths = shard_paths
103
+ self._max_threads = len(self._shard_paths)
104
+ if max_threads is not None:
105
+ self._max_threads = min(max_threads, self._max_threads)
106
+ logging.info('Nhmmer running with max_threads = %d', self._max_threads)
107
+ else:
108
+ self._shard_paths = None
109
+ self._max_threads = None
110
+
111
+ self._binary_path = binary_path
112
+ self._hmmalign_binary_path = hmmalign_binary_path
113
+ self._hmmbuild_binary_path = hmmbuild_binary_path
114
+ subprocess_utils.check_binary_exists(path=self._binary_path, name='Nhmmer')
115
+
116
+ if strand and strand not in {'watson', 'crick'}:
117
+ raise ValueError(f'Invalid {strand=}. only "watson" or "crick" supported')
118
+
119
+ if alphabet and alphabet not in {'rna', 'dna'}:
120
+ raise ValueError(f'Invalid {alphabet=}, only "rna" or "dna" supported')
121
+
122
+ self._e_value = e_value
123
+ self._n_cpu = n_cpu
124
+ self._z_value = z_value
125
+ self._max_sequences = max_sequences
126
+ self._filter_f3 = filter_f3
127
+ self._alphabet = alphabet
128
+ self._strand = strand
129
+
130
+ def query(self, target_sequence: str) -> msa_tool.MsaToolResult:
131
+ """Query the database (sharded or unsharded) using Nhmmer."""
132
+ if self._shard_paths:
133
+ # Sharded case, run the query against each database shard in parallel.
134
+ logging.info(
135
+ 'Query sequence (sharded db): %s',
136
+ target_sequence
137
+ if len(target_sequence) <= 16
138
+ else f'{target_sequence[:16]}... (len {len(target_sequence)})',
139
+ )
140
+
141
+ global_temp_dir = tempfile.mkdtemp()
142
+
143
+ def _query_shard_fn(
144
+ shard_path: str,
145
+ ) -> tuple[msa_tool.MsaToolResult, float]:
146
+ t_start = time.time()
147
+ # Get tblout as it contains e-values we need for merging sequences.
148
+ result = self._query_db_shard(
149
+ target_sequence=target_sequence,
150
+ db_shard_path=shard_path,
151
+ get_tblout=True, # Tblout contains e-values needed for merging.
152
+ global_temp_dir=global_temp_dir,
153
+ )
154
+ return result, time.time() - t_start
155
+
156
+ with futures.ThreadPoolExecutor(max_workers=self._max_threads) as ex:
157
+ tool_outputs, timings = zip(*ex.map(_query_shard_fn, self._shard_paths))
158
+
159
+ logging.info(
160
+ 'Finished query for %d shards, shard timings (seconds): %s',
161
+ len(tool_outputs),
162
+ ', '.join(f'{t:.1f}' for t in timings),
163
+ )
164
+
165
+ shutil.rmtree(global_temp_dir, ignore_errors=True)
166
+ return _merge_nhmmer_results(tool_outputs, self._max_sequences)
167
+
168
+ else:
169
+ # Non-sharded case, run the query against the whole database.
170
+ logging.info(
171
+ 'Query sequence (non-sharded db): %s',
172
+ target_sequence
173
+ if len(target_sequence) <= 16
174
+ else f'{target_sequence[:16]}... (len {len(target_sequence)})',
175
+ )
176
+ return self._query_db_shard(
177
+ target_sequence=target_sequence,
178
+ db_shard_path=self._database_path,
179
+ get_tblout=False,
180
+ )
181
+
182
+ def _query_db_shard(
183
+ self,
184
+ *,
185
+ target_sequence: str,
186
+ db_shard_path: str,
187
+ get_tblout: bool,
188
+ global_temp_dir: str | None = None,
189
+ ) -> msa_tool.MsaToolResult:
190
+ """Query the database shard using Nhmmer."""
191
+
192
+ with tempfile.TemporaryDirectory(dir=global_temp_dir) as query_tmp_dir:
193
+ input_a3m_path = os.path.join(query_tmp_dir, 'query.a3m')
194
+ output_sto_path = os.path.join(query_tmp_dir, 'output.sto')
195
+ pathlib.Path(output_sto_path).touch()
196
+ subprocess_utils.create_query_fasta_file(
197
+ sequence=target_sequence, path=input_a3m_path
198
+ )
199
+
200
+ cmd_flags = [
201
+ *('-o', '/dev/null'), # Don't pollute stdout with nhmmer output.
202
+ '--noali', # Don't include the alignment in stdout.
203
+ *('--cpu', str(self._n_cpu)),
204
+ ]
205
+
206
+ if get_tblout:
207
+ output_tblout_path = pathlib.Path(query_tmp_dir, 'tblout.txt')
208
+ output_tblout_path.touch()
209
+ cmd_flags.extend(['--tblout', str(output_tblout_path)])
210
+ else:
211
+ output_tblout_path = None
212
+
213
+ cmd_flags.extend(['-E', str(self._e_value)])
214
+
215
+ if self._z_value is not None:
216
+ cmd_flags.extend(['-Z', str(self._z_value)])
217
+
218
+ if self._alphabet:
219
+ cmd_flags.extend([f'--{self._alphabet}'])
220
+
221
+ if self._strand is not None:
222
+ cmd_flags.extend([f'--{self._strand}'])
223
+
224
+ cmd_flags.extend(['-A', output_sto_path])
225
+ # As recommend by RNAcentral for short sequences.
226
+ if (
227
+ self._alphabet == 'rna'
228
+ and len(target_sequence) < _SHORT_SEQUENCE_CUTOFF
229
+ ):
230
+ cmd_flags.extend(['--F3', str(0.02)])
231
+ else:
232
+ cmd_flags.extend(['--F3', str(self._filter_f3)])
233
+
234
+ # The input A3M and the db are the last two arguments.
235
+ cmd_flags.extend((input_a3m_path, db_shard_path))
236
+
237
+ cmd = [self._binary_path, *cmd_flags]
238
+ subprocess_utils.run(
239
+ cmd=cmd,
240
+ cmd_name=f'Nhmmer ({os.path.basename(db_shard_path)})',
241
+ log_stdout=False,
242
+ log_stderr=True,
243
+ log_on_process_error=True,
244
+ )
245
+
246
+ if os.path.getsize(output_sto_path) > 0:
247
+ with open(output_sto_path) as f:
248
+ a3m_out = parsers.convert_stockholm_to_a3m(
249
+ f, max_sequences=self._max_sequences - 1 # Query not included.
250
+ )
251
+ # Nhmmer hits are generally shorter than the query sequence. To get MSA
252
+ # of width equal to the query sequence, align hits to the query profile.
253
+ logging.info('Aligning output a3m of size %d bytes', len(a3m_out))
254
+
255
+ aligner = hmmalign.Hmmalign(self._hmmalign_binary_path)
256
+ target_sequence_fasta = f'>query\n{target_sequence}\n'
257
+ profile_builder = hmmbuild.Hmmbuild(
258
+ binary_path=self._hmmbuild_binary_path, alphabet=self._alphabet
259
+ )
260
+ profile = profile_builder.build_profile_from_a3m(target_sequence_fasta)
261
+ a3m_out = aligner.align_sequences_to_profile(
262
+ profile=profile, sequences_a3m=a3m_out
263
+ )
264
+ a3m_out = ''.join([target_sequence_fasta, a3m_out])
265
+
266
+ # Parse the output a3m to remove line breaks.
267
+ a3m = '\n'.join(
268
+ [f'>{n}\n{s}' for s, n in parsers.lazy_parse_fasta_string(a3m_out)]
269
+ )
270
+ else:
271
+ # Nhmmer returns an empty file if there are no hits.
272
+ # In this case return only the query sequence.
273
+ a3m = f'>query\n{target_sequence}'
274
+
275
+ # Get the tabular output which has e.g. e-value for each target.
276
+ tbl = '' if output_tblout_path is None else output_tblout_path.read_text()
277
+
278
+ return msa_tool.MsaToolResult(
279
+ target_sequence=target_sequence,
280
+ e_value=self._e_value,
281
+ a3m=a3m,
282
+ tblout=tbl,
283
+ )
284
+
285
+
286
+ def _merge_nhmmer_results(
287
+ nhmmer_results: Sequence[msa_tool.MsaToolResult],
288
+ max_sequences: int,
289
+ ) -> msa_tool.MsaToolResult:
290
+ """Merges nhmmer result protos into a single one."""
291
+ assert len(set(nh_res.target_sequence for nh_res in nhmmer_results)) == 1
292
+ assert len(set(nh_res.e_value for nh_res in nhmmer_results)) == 1
293
+
294
+ # Parse the TBL output, create a mapping from unique hit ID to TBL line.
295
+ parsed_tbl = {}
296
+ for nhmmer_result in nhmmer_results:
297
+ assert nhmmer_result.tblout is not None
298
+ for line in nhmmer_result.tblout.splitlines():
299
+ if not line.startswith('#'):
300
+ line_fields = line.split(maxsplit=15)
301
+ accession = line_fields[0]
302
+ alignment_from = line_fields[6]
303
+ alignment_to = line_fields[7]
304
+ # This is the unique ID that is used in the output A3M.
305
+ unique_id = f'{accession}/{alignment_from}-{alignment_to}'
306
+ parsed_tbl[unique_id] = line
307
+
308
+ # Create an iterator and merge a3m info with tbl info.
309
+ def _merged_a3m_tbl_iter(a3m: str) -> Iterable[tuple[str, str, str, str]]:
310
+ # Don't parse the entire a3m, lazily parse only as many sequences as needed.
311
+ iterator = iter(parsers.lazy_parse_fasta_string(a3m))
312
+ next(iterator) # Skip the query which isn't present in tblout.
313
+ for sequence, description in iterator:
314
+ name = description.partition(' ')[0]
315
+ if tbl_info := parsed_tbl.get(name):
316
+ # Skip sequences for which we don't have tbl information.
317
+ yield sequence, description, tbl_info, name
318
+
319
+ def sort_key(seq_data: tuple[str, str, str, str]) -> tuple[float, str]:
320
+ unused_seq, unused_description, tbl_info, name = seq_data
321
+ # Nucleic tblout has 16 space delimited columns. "-" used if no value
322
+ # present. We want e-value in column 12, so do only 13 splits. Use the name
323
+ # in case of an e-value tie.
324
+ return float(tbl_info.split(maxsplit=13)[12]), name
325
+
326
+ # A3M/TBL is sorted by e-value and name, hence we can merge them efficiently.
327
+ merged_a3m_and_tblout = heapq.merge(
328
+ *[_merged_a3m_tbl_iter(res.a3m) for res in nhmmer_results],
329
+ key=sort_key,
330
+ )
331
+
332
+ # Truncate the a3m to max_sequences. Do not truncate the tblout.
333
+ merged_tblout = []
334
+ merged_a3m = [f'>query\n{nhmmer_results[0].target_sequence}']
335
+ for seq, description, tbl_info, _ in merged_a3m_and_tblout:
336
+ merged_tblout.append(tbl_info)
337
+ if len(merged_a3m) < max_sequences:
338
+ merged_a3m.append(f'>{description}\n{seq}')
339
+
340
+ logging.info(
341
+ 'Limiting merged MSA depth from %d to %d',
342
+ len(merged_tblout),
343
+ max_sequences,
344
+ )
345
+
346
+ return msa_tool.MsaToolResult(
347
+ target_sequence=nhmmer_results[0].target_sequence,
348
+ a3m='\n'.join(merged_a3m),
349
+ e_value=nhmmer_results[0].e_value,
350
+ tblout=None, # We no longer need the tblout.
351
+ )
flax_model/alphafold3/jax/attention/attention_call_arg_specs.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Attention call argument specifications.
4
+
5
+ Attention argument specifications used by users of the library.
6
+ They are the most important test cases, and also cases for optimize
7
+ performance of via autotuning.
8
+ """
9
+
10
+ from typing import Any
11
+
12
+ import jax
13
+
14
+ ShapedArray = jax.ShapeDtypeStruct
15
+
16
+
17
+ def _make_argspec(
18
+ *,
19
+ q_shape,
20
+ dtype,
21
+ k_shape=None,
22
+ v_shape=None,
23
+ bias_shape=None,
24
+ mask_shape=None,
25
+ **kwargs,
26
+ ) -> dict[str, Any]:
27
+ """Make argspec from shapes and kwargs."""
28
+ if k_shape is None:
29
+ k_shape = q_shape
30
+ if v_shape is None:
31
+ v_shape = k_shape
32
+
33
+ return dict(
34
+ query=ShapedArray(q_shape, dtype),
35
+ key=ShapedArray(k_shape, dtype),
36
+ value=ShapedArray(v_shape, dtype),
37
+ bias=ShapedArray(bias_shape, dtype) if bias_shape is not None else None,
38
+ mask=ShapedArray(mask_shape, 'bool_') if mask_shape is not None else None,
39
+ **kwargs,
40
+ )
41
+
42
+
43
+ # A subset of the full set of argument specifications. Useful for tap-tests and
44
+ # microbenchmarks.
45
+ CALL_ARG_SPECS = dict(
46
+ vanilla_f32=_make_argspec(q_shape=(8, 1024, 4, 128), dtype='float32'),
47
+ vanilla_bf16=_make_argspec(q_shape=(8, 1024, 4, 128), dtype='bfloat16'),
48
+ alphafold=_make_argspec(
49
+ q_shape=(384, 384, 4, 32),
50
+ bias_shape=(1, 4, 384, 384),
51
+ mask_shape=(384, 1, 1, 384),
52
+ dtype='bfloat16',
53
+ ),
54
+ )
flax_model/alphafold3/model/components/__init__.py ADDED
File without changes
flax_model/alphafold3/model/merging_features.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ """Methods for merging existing features to create a new example.
4
+
5
+ Covers:
6
+ - Merging features across chains.
7
+ - Merging the paired and unpaired parts of the MSA.
8
+ """
9
+
10
+ from typing import TypeAlias
11
+
12
+ from flax_model.alphafold3.model import data_constants
13
+ import jax.numpy as jnp
14
+ import numpy as np
15
+
16
+ NUM_SEQ_NUM_RES_MSA_FEATURES = data_constants.NUM_SEQ_NUM_RES_MSA_FEATURES
17
+ NUM_SEQ_MSA_FEATURES = data_constants.NUM_SEQ_MSA_FEATURES
18
+ MSA_PAD_VALUES = data_constants.MSA_PAD_VALUES
19
+
20
+
21
+ xnp_ndarray: TypeAlias = np.ndarray | jnp.ndarray # pylint: disable=invalid-name
22
+ BatchDict: TypeAlias = dict[str, xnp_ndarray]
23
+
24
+
25
+ def _pad_features_to_max(feat_name: str, chains: list[BatchDict], axis: int):
26
+ """Pad a set of features to the maximum size amongst all chains.
27
+
28
+ Args:
29
+ feat_name: The feature name to pad.
30
+ chains: A list of chains with associated features.
31
+ axis: Which axis to pad to the max.
32
+
33
+ Returns:
34
+ A list of features, all with the same size on the given axis.
35
+ """
36
+ max_num_seq = np.max([chain[feat_name].shape[axis] for chain in chains])
37
+
38
+ padded_feats = []
39
+ for chain in chains:
40
+ feat = chain[feat_name]
41
+
42
+ padding = np.zeros_like(feat.shape) # pytype: disable=attribute-error
43
+ padding[axis] = max_num_seq - feat.shape[axis] # pytype: disable=attribute-error
44
+ padding = [(0, p) for p in padding]
45
+ padded_feats.append(
46
+ np.pad(
47
+ feat,
48
+ padding,
49
+ mode='constant',
50
+ constant_values=MSA_PAD_VALUES[feat_name],
51
+ )
52
+ )
53
+ return padded_feats
54
+
55
+
56
+ def merge_msa_features(feat_name: str, chains: list[BatchDict]) -> np.ndarray:
57
+ """Merges MSA features with shape (NUM_SEQ, NUM_RES) across chains."""
58
+ expected_dtype = chains[0][feat_name].dtype
59
+ if '_all_seq' in feat_name:
60
+ return np.concatenate(
61
+ [c.get(feat_name, np.array([], expected_dtype)) for c in chains], axis=1
62
+ )
63
+ else:
64
+ # Since each MSA can be of different lengths, we first need to pad them
65
+ # all to the size of the largest MSA before concatenating.
66
+ padded_feats = _pad_features_to_max(feat_name, chains, axis=0)
67
+ return np.concatenate(padded_feats, axis=1)
68
+
69
+
70
+ def merge_paired_and_unpaired_msa(example: BatchDict) -> BatchDict:
71
+ """Concatenates the paired (all_seq) MSA features with the unpaired ones."""
72
+ new_example = dict(example)
73
+
74
+ for feature_name in NUM_SEQ_NUM_RES_MSA_FEATURES + NUM_SEQ_MSA_FEATURES:
75
+ if feature_name in example and feature_name + '_all_seq' in example:
76
+ feat = example[feature_name]
77
+ feat_all_seq = example[feature_name + '_all_seq']
78
+ merged_feat = np.concatenate([feat_all_seq, feat], axis=0)
79
+ new_example[feature_name] = merged_feat
80
+
81
+ new_example['num_alignments'] = np.array(
82
+ new_example['msa'].shape[0], dtype=np.int32
83
+ )
84
+ return new_example