This file is indexed.

/usr/include/gromacs/selection.h is in gromacs-dev 4.6.5-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
/*
 * This file is part of the GROMACS molecular simulation package.
 *
 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
 * Copyright (c) 2001-2009, The GROMACS development team,
 * check out http://www.gromacs.org for more information.
 * Copyright (c) 2012,2013, by the GROMACS development team, led by
 * David van der Spoel, Berk Hess, Erik Lindahl, and including many
 * others, as listed in the AUTHORS file in the top-level source
 * directory and at http://www.gromacs.org.
 *
 * GROMACS is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 2.1
 * of the License, or (at your option) any later version.
 *
 * GROMACS is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with GROMACS; if not, see
 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
 *
 * If you want to redistribute modifications to GROMACS, please
 * consider that scientific software is very special. Version
 * control is crucial - bugs must be traceable. We will be happy to
 * consider code for inclusion in the official distribution, but
 * derived work must not be called official GROMACS. Details are found
 * in the README & COPYING files - if they are missing, get the
 * official version at http://www.gromacs.org.
 *
 * To help us fund GROMACS development, we humbly ask that you cite
 * the research papers on the package. Check out http://www.gromacs.org.
 */
/*! \file
 * \brief API for handling selection (the \c gmx_ana_selection_t structure and related functions).
 *
 * There should be no need to use the data structures or call the
 * functions in this file directly unless using the selection routines outside
 * the main trajectory analysis API.
 */
#ifndef SELECTION_H
#define SELECTION_H

#include "position.h"
#include "indexutil.h"

#ifdef __cplusplus
extern "C"
{
#endif

/** Information for a collection of selections. */
typedef struct gmx_ana_selcollection_t gmx_ana_selcollection_t;

struct gmx_ana_poscalc_coll_t;

/** Defines the type of covered fraction. */
typedef enum
{
    CFRAC_NONE,         /**< No covered fraction (everything covered). */
    CFRAC_SOLIDANGLE    /**< Fraction of a solid (3D) angle covered. */
} e_coverfrac_t;

/*! \brief
 * Describes a single selection.
 */
typedef struct gmx_ana_selection_t
{
    /** Name of the selection. */
    char                       *name;
    /** The actual selection string. */
    char                       *selstr;
    /** Selected positions. */
    gmx_ana_pos_t               p;
    /** Masses associated with the positions. */
    real                       *m;
    /** Charges associated with the positions. */
    real                       *q;
    /** Pointer to the index group that holds the selected atoms. */
    struct gmx_ana_index_t     *g;
    /** TRUE if the value can change as a function of time. */
    gmx_bool                    bDynamic;
    /** Type of the covered fraction. */
    e_coverfrac_t               cfractype;
    /** TRUE if the covered fraction depends on the frame. */
    gmx_bool                    bCFracDyn;
    /** Covered fraction of the selection for the current frame. */
    real                        cfrac;
    /** The average covered fraction (over the trajectory). */
    real                        avecfrac;

    /*! \brief
     * Pointer to the root of the selection element tree (internal use only).
     *
     * \internal
     * This field is NULL if the selection has been loaded directly from an
     * index file.
     */
    struct t_selelem       *selelem;
    /** Original masses of all possible positions (internal use only). */
    real                   *orgm;
    /** Original charges of all possible positions (internal use only). */
    real                   *orgq;
} gmx_ana_selection_t;

/** Frees the memory allocated for a selection. */
void
gmx_ana_selection_free(gmx_ana_selection_t *sel);
/** Returns the name of a selection. */
char *
gmx_ana_selection_name(gmx_ana_selection_t *sel);
/** Prints out the selection information. */
void
gmx_ana_selection_print_info(gmx_ana_selection_t *sel);
/** Initializes the information for covered fraction. */
gmx_bool
gmx_ana_selection_init_coverfrac(gmx_ana_selection_t *sel, e_coverfrac_t type);

/** Creates a new empty selection collection. */
int
gmx_ana_selcollection_create(gmx_ana_selcollection_t      **sc,
                             struct gmx_ana_poscalc_coll_t *pcc);
/** Frees the memory allocated for a selection collection. */
void
gmx_ana_selcollection_free(gmx_ana_selcollection_t *sc);
/** Sets the default reference position handling for a selection collection. */
void
gmx_ana_selcollection_set_refpostype(gmx_ana_selcollection_t *sc, const char *type);
/** Sets the default output position handling for a selection collection. */
void
gmx_ana_selcollection_set_outpostype(gmx_ana_selcollection_t *sc,
                                     const char *type, gmx_bool bMaskOnly);
/** Request evaluation of velocities for selections. */
void
gmx_ana_selcollection_set_veloutput(gmx_ana_selcollection_t *sc,
                                    gmx_bool                 bVelOut);
/** Request evaluation of forces for selections. */
void
gmx_ana_selcollection_set_forceoutput(gmx_ana_selcollection_t *sc,
                                      gmx_bool                 bForceOut);
/** Sets the topology for a selection collection. */
int
gmx_ana_selcollection_set_topology(gmx_ana_selcollection_t *sc, t_topology *top,
                                   int natoms);
/** Returns the number of selections specified by a selection collection. */
int
gmx_ana_selcollection_get_count(gmx_ana_selcollection_t *sc);
/** Returns a selection by index. */
gmx_ana_selection_t *
gmx_ana_selcollection_get_selection(gmx_ana_selcollection_t *sc, int i);
/** Returns TRUE if the collection requires topology information for evaluation. */
gmx_bool
gmx_ana_selcollection_requires_top(gmx_ana_selcollection_t *sc);
/** Prints a human-readable version of the internal selection element tree. */
void
gmx_ana_selcollection_print_tree(FILE *fp, gmx_ana_selcollection_t *sc, gmx_bool bValues);
/** Prints the selection strings into an XVGR file as comments. */
void
xvgr_selcollection(FILE *fp, gmx_ana_selcollection_t *sc,
                   const output_env_t oenv);

/* In parsetree.c */
/** Parses selection(s) from standard input. */
int
gmx_ana_selcollection_parse_stdin(gmx_ana_selcollection_t *sc, int nr,
                                  gmx_ana_indexgrps_t *grps,
                                  gmx_bool bInteractive);
/** Parses selection(s) from a file. */
int
gmx_ana_selcollection_parse_file(gmx_ana_selcollection_t *sc, const char *fnm,
                                 gmx_ana_indexgrps_t *grps);
/** Parses selection(s) from a string. */
int
gmx_ana_selcollection_parse_str(gmx_ana_selcollection_t *sc, const char *str,
                                gmx_ana_indexgrps_t *grps);

/* In compiler.c */
/** Set debugging flag for selection compilation. */
void
gmx_ana_selcollection_set_compile_debug(gmx_ana_selcollection_t *sc, gmx_bool bDebug);
/** Prepares the selections for evaluation and performs some optimizations. */
int
gmx_ana_selcollection_compile(gmx_ana_selcollection_t *sc);

/* In evaluate.c */
/** Evaluates the selection. */
int
gmx_ana_selcollection_evaluate(gmx_ana_selcollection_t *sc,
                               t_trxframe *fr, t_pbc *pbc);
/** Evaluates the largest possible index groups from dynamic selections. */
int
gmx_ana_selcollection_evaluate_fin(gmx_ana_selcollection_t *sc, int nframes);

#ifdef __cplusplus
}
#endif

#endif