Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

AtomSel.C File Reference

#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "Atom.h"
#include "AtomSel.h"
#include "DrawMolecule.h"
#include "MoleculeList.h"
#include "VMDApp.h"
#include "Inform.h"
#include "SymbolTable.h"
#include "ParseTree.h"
#include "JRegex.h"
#include "VolumetricData.h"
#include "PeriodicTable.h"

Go to the source code of this file.

Defines

#define generic_atom_data(fctnname, datatype, field)
#define generic_set_atom_data(fctnname, datatype, fieldtype, field)
#define generic_atom_boolean(fctnname, comparison)
#define generic_sstruct_boolean(fctnname, comparison)
#define generic_set_sstruct_boolean(fctnname, newval)
#define fragment_data(fctn, fragtype)
#define atomsel_get_vel(name, offset)
#define set_position_data(fctn, offset)
#define set_force_data(fctn, offset)
#define set_vel_data(fctn, offset)

Functions

int atomsel_all (void *,int, int *)
int atomsel_none (void *, int num, int *flgs)
int atomsel_name (void *v, int num, const char **data, int *flgs)
int atomsel_type (void *v, int num, const char **data, int *flgs)
int atomsel_backbonetype (void *v, int num, const char **data, int *flgs)
int atomsel_residuetype (void *v, int num, const char **data, int *flgs)
 generic_atom_data (atomsel_atomicnumber, int, atomicnumber) generic_set_atom_data(atomsel_set_atomicnumber
atomicnumber int atomsel_element (void *v, int num, const char **data, int *flgs)
int atomsel_set_element (void *v, int num, const char **data, int *flgs)
int atomsel_index (void *v, int num, int *data, int *flgs)
int atomsel_serial (void *v, int num, int *data, int *flgs)
int atomsel_fragment (void *v, int num, int *data, int *flgs)
 generic_atom_data (atomsel_numbonds, int, bonds) generic_atom_data(atomsel_residue
uniq_resid int atomsel_resname (void *v, int num, const char **data, int *flgs)
int atomsel_altloc (void *v, int num, const char **data, int *flgs)
int atomsel_set_altloc (void *v, int num, const char **data, int *flgs)
 generic_atom_data (atomsel_insertion, const char *, insertionstr) static int atomsel_chain(void *v
int atomsel_volume_array (void *v, int num, double *data, int *flgs, int array_index)
int atomsel_interp_volume_array (void *v, int num, double *data, int *flgs, int array_index)
int atomsel_gridindex_array (void *v, int num, double *data, int *flgs, int array_index)
int atomsel_gridindex0 (void *v, int num, double *data, int *flgs)
int atomsel_gridindex1 (void *v, int num, double *data, int *flgs)
int atomsel_gridindex2 (void *v, int num, double *data, int *flgs)
int atomsel_gridindex3 (void *v, int num, double *data, int *flgs)
int atomsel_gridindex4 (void *v, int num, double *data, int *flgs)
int atomsel_gridindex5 (void *v, int num, double *data, int *flgs)
int atomsel_gridindex6 (void *v, int num, double *data, int *flgs)
int atomsel_gridindex7 (void *v, int num, double *data, int *flgs)
int atomsel_volume0 (void *v, int num, double *data, int *flgs)
int atomsel_volume1 (void *v, int num, double *data, int *flgs)
int atomsel_volume2 (void *v, int num, double *data, int *flgs)
int atomsel_volume3 (void *v, int num, double *data, int *flgs)
int atomsel_volume4 (void *v, int num, double *data, int *flgs)
int atomsel_volume5 (void *v, int num, double *data, int *flgs)
int atomsel_volume6 (void *v, int num, double *data, int *flgs)
int atomsel_volume7 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume0 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume1 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume2 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume3 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume4 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume5 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume6 (void *v, int num, double *data, int *flgs)
int atomsel_interp_volume7 (void *v, int num, double *data, int *flgs)
void atomSelParser_init (SymbolTable *atomSelParser)

Variables

 int
int num
int const char ** data


Define Documentation

#define atomsel_get_vel name,
offset   
 

Value:

static int atomsel_##name(void *v, int num, double *data, int *flgs) {  \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;       \
  int which_frame = ((atomsel_ctxt *)v)->which_frame;  \
  Timestep *ts = selframe(atom_sel_mol, which_frame);  \
  int i;                                               \
  if (!ts || !ts->vel) {                               \
    for (i=0; i<num; i++)                              \
      if (flgs[i]) data[i] = 0.0;                      \
    return 0;                                          \
  }                                                    \
  for (i=0; i<num; i++) {                              \
    if (flgs[i]) {                                     \
      data[i] = ts->vel[3*i + (offset)];               \
    }                                                  \
  }                                                    \
  return 1;                                            \
}

#define fragment_data fctn,
fragtype   
 

Value:

static int fctn(void *v, int num, int *data, int *)                           \
{                                                                             \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;                     \
   int *tmp = new int[num];                                                   \
   int i;                                                                     \
   for (i=num-1; i>=0; i--) {                         \
      tmp[i] = 0;                                                             \
      data[i] = -1;                   \
   }                                                                          \
                                                      \
   for ( i=atom_sel_mol->fragtype.num()-1; i>=0; i--) {                       \
                                      \
      int j;                                                                  \
      for (j=atom_sel_mol->fragtype[i]->num()-1; j>=0; j--) {                 \
                                              \
         mark_atoms_given_residue(atom_sel_mol,(*atom_sel_mol->fragtype[i])[j], tmp);      \
      }                                                                       \
                              \
      for (j=num-1; j>=0; j--) {                                              \
         if (tmp[j]) {                                                        \
            data[j] = i;                                                      \
            tmp[j] = 0;                                                       \
         }                                                                    \
      }                                                                       \
   }                                                                          \
   delete [] tmp;                                                             \
   return 1;                                                                  \
}

#define generic_atom_boolean fctnname,
comparison   
 

Value:

static int fctnname(void *v, int num, int *flgs) {                    \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;     \
  for (int i=0; i<num; i++) {                                         \
    if (flgs[i]) {                                                    \
      flgs[i] = atom_sel_mol->atom(i)->comparison;                    \
    }                                                                 \
  }                                                                   \
  return 1;                                                           \
}

#define generic_atom_data fctnname,
datatype,
field   
 

Value:

static int fctnname(void *v, int num, datatype *data, int *flgs) {     \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;      \
  for (int i=0; i<num; i++) {                                          \
    if (flgs[i]) {                                                     \
      data[i] = atom_sel_mol->atom(i)->field;                          \
    }                                                                  \
  }                                                                    \
  return 1;                                                            \
}

Definition at line 58 of file AtomSel.C.

Referenced by atomsel_set_altloc.

#define generic_set_atom_data fctnname,
datatype,
fieldtype,
field   
 

Value:

static int fctnname(void *v, int num, datatype *data, int *flgs) {     \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;      \
  int i;                                                               \
  for (i=0; i<num; i++) {                                              \
    if (flgs[i]) {                                                     \
      atom_sel_mol->atom(i)->field = (fieldtype) data[i];              \
    }                                                                  \
  }                                                                    \
  return 1;                                                            \
}

Definition at line 70 of file AtomSel.C.

#define generic_set_sstruct_boolean fctnname,
newval   
 

Value:

static int fctnname(void *v, int num, int *data, int *flgs) {            \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;        \
  atom_sel_mol->need_secondary_structure(0);                             \
  for (int i=0; i<num; i++) {                                            \
    if (flgs[i] && data[i]) {                                            \
        atom_sel_mol->residue(atom_sel_mol->atom(i)->uniq_resid)         \
          ->sstruct = newval;                                            \
    }                                                                    \
  }                                                                      \
  return 1;                                                              \
}

#define generic_sstruct_boolean fctnname,
comparison   
 

Value:

static int fctnname(void *v, int num, int *flgs) {                       \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;        \
  atom_sel_mol->need_secondary_structure(1);                             \
  for (int i=0; i<num; i++) {                                            \
    int s;                                                               \
    if (flgs[i]) {                                                       \
      s = atom_sel_mol->residue(                                         \
                                  atom_sel_mol->atom(i)->uniq_resid      \
                                  )->sstruct;                            \
      if (!comparison) {                                                 \
        flgs[i] = 0;                                                     \
      }                                                                  \
    }                                                                    \
  }                                                                      \
  return 1;                                                              \
}

#define set_force_data fctn,
offset   
 

Value:

static int fctn(void *v, int num, double *data, int *flgs)                    \
{                                                                             \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;                     \
  int which_frame = ((atomsel_ctxt *)v)->which_frame;                                 \
  Timestep *ts = selframe(atom_sel_mol, which_frame);                         \
  if (!ts) return 0;                                                          \
  if (!ts->force) {                                                           \
    ts->force = new float[3*num];                                             \
    memset(ts->force, 0, 3*num*sizeof(float));                                \
  }                                                                           \
  for (int i=num-1; i>=0; i--) {                                              \
    if (flgs[i]) {                                                            \
      ts->force[3*i + offset] = (float) data[i];                              \
    }                                                                         \
  }                                                                           \
  return 1;                                                                   \
}

#define set_position_data fctn,
offset   
 

Value:

static int fctn(void *v, int num, double *data, int *flgs)                    \
{                                                                             \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;                     \
  int which_frame = ((atomsel_ctxt *)v)->which_frame;                                 \
  Timestep *ts = selframe(atom_sel_mol, which_frame);                         \
  if (!ts) return 0;                                                          \
  for (int i=num-1; i>=0; i--) {                                              \
    if (flgs[i]) {                                                            \
      ts->pos[3*i + offset] = (float) data[i];                                \
    }                                                                         \
  }                                                                           \
  return 1;                                                                   \
}

#define set_vel_data fctn,
offset   
 

Value:

static int fctn(void *v, int num, double *data, int *flgs)                    \
{                                                                             \
  DrawMolecule *atom_sel_mol = ((atomsel_ctxt *)v)->atom_sel_mol;                     \
  int which_frame = ((atomsel_ctxt *)v)->which_frame;                                 \
  Timestep *ts = selframe(atom_sel_mol, which_frame);                         \
  if (!ts) return 0;                                                          \
  if (!ts->vel) {                                                           \
    ts->vel= new float[3*num];                                             \
    memset(ts->vel, 0, 3*num*sizeof(float));                                \
  }                                                                           \
  for (int i=num-1; i>=0; i--) {                                              \
    if (flgs[i]) {                                                            \
      ts->vel[3*i + offset] = (float) data[i];                              \
    }                                                                         \
  }                                                                           \
  return 1;                                                                   \
}


Function Documentation

int atomsel_all void *   ,
int   ,
int  
[static]
 

Definition at line 46 of file AtomSel.C.

Referenced by atomSelParser_init.

int atomsel_altloc void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 253 of file AtomSel.C.

References MolAtom::altlocindex, BaseMolecule::altlocNames, BaseMolecule::atom, data, and num.

Referenced by atomSelParser_init.

int atomsel_backbonetype void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 108 of file AtomSel.C.

References BaseMolecule::atom, ATOMHYDROGEN, ATOMNORMAL, ATOMNUCLEICBACK, ATOMPROTEINBACK, MolAtom::atomType, data, and num.

Referenced by atomSelParser_init.

atomicnumber int atomsel_element void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 178 of file AtomSel.C.

References BaseMolecule::atom, MolAtom::atomicnumber, data, get_pte_label, and num.

Referenced by atomSelParser_init.

int atomsel_fragment void *    v,
int    num,
int   data,
int   flgs
[static]
 

Definition at line 220 of file AtomSel.C.

References BaseMolecule::atom, data, num, BaseMolecule::residue, and MolAtom::uniq_resid.

Referenced by atomSelParser_init.

int atomsel_gridindex0 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1920 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex1 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1923 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex2 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1926 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex3 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1929 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex4 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1932 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex5 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1935 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex6 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1938 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex7 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1941 of file AtomSel.C.

References atomsel_gridindex_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_gridindex_array void *    v,
int    num,
double *    data,
int   flgs,
int    array_index
[static]
 

Definition at line 1900 of file AtomSel.C.

References data, BaseMolecule::get_volume_data, NAN, num, Timestep::pos, selframe, and VolumetricData::voxel_index_from_coord.

Referenced by atomsel_gridindex0, atomsel_gridindex1, atomsel_gridindex2, atomsel_gridindex3, atomsel_gridindex4, atomsel_gridindex5, atomsel_gridindex6, and atomsel_gridindex7.

int atomsel_index void *    v,
int    num,
int   data,
int   flgs
[static]
 

Definition at line 198 of file AtomSel.C.

References atomsel_index, data, and num.

Referenced by atomsel_index, and atomSelParser_init.

int atomsel_interp_volume0 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1974 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume1 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1977 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume2 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1980 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume3 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1983 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume4 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1986 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume5 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1989 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume6 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1992 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume7 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1995 of file AtomSel.C.

References atomsel_interp_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_interp_volume_array void *    v,
int    num,
double *    data,
int   flgs,
int    array_index
[static]
 

Definition at line 1880 of file AtomSel.C.

References data, BaseMolecule::get_volume_data, NAN, num, Timestep::pos, selframe, and VolumetricData::voxel_value_interpolate_from_coord.

Referenced by atomsel_interp_volume0, atomsel_interp_volume1, atomsel_interp_volume2, atomsel_interp_volume3, atomsel_interp_volume4, atomsel_interp_volume5, atomsel_interp_volume6, and atomsel_interp_volume7.

int atomsel_name void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 84 of file AtomSel.C.

References BaseMolecule::atom, BaseMolecule::atomNames, data, MolAtom::nameindex, and num.

Referenced by atomSelParser_init.

int atomsel_none void *   ,
int    num,
int   flgs
[static]
 

Definition at line 51 of file AtomSel.C.

References num.

Referenced by atomSelParser_init.

int atomsel_residuetype void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 141 of file AtomSel.C.

References BaseMolecule::atom, data, num, MolAtom::residueType, RESNOTHING, RESNUCLEIC, RESPROTEIN, and RESWATERS.

Referenced by atomSelParser_init.

uniq_resid int atomsel_resname void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 241 of file AtomSel.C.

References BaseMolecule::atom, data, num, MolAtom::resnameindex, and BaseMolecule::resNames.

Referenced by atomSelParser_init.

int atomsel_serial void *    v,
int    num,
int   data,
int   flgs
[static]
 

Definition at line 209 of file AtomSel.C.

References data, and num.

Referenced by atomSelParser_init.

int atomsel_set_altloc void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 262 of file AtomSel.C.

References NameList::add_name, MolAtom::altlocindex, BaseMolecule::altlocNames, BaseMolecule::atom, data, generic_atom_data, NameList::num, and num.

Referenced by atomSelParser_init.

int atomsel_set_element void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 186 of file AtomSel.C.

References BaseMolecule::atom, MolAtom::atomicnumber, data, get_pte_idx_from_string, and num.

Referenced by atomSelParser_init.

int atomsel_type void *    v,
int    num,
const char **    data,
int   flgs
[static]
 

Definition at line 96 of file AtomSel.C.

References BaseMolecule::atom, BaseMolecule::atomTypes, data, num, and MolAtom::typeindex.

Referenced by atomSelParser_init.

int atomsel_volume0 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1947 of file AtomSel.C.

References atomsel_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_volume1 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1950 of file AtomSel.C.

References atomsel_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_volume2 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1953 of file AtomSel.C.

References atomsel_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_volume3 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1956 of file AtomSel.C.

References atomsel_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_volume4 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1959 of file AtomSel.C.

References atomsel_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_volume5 void *    v,
int    num,
double *    data,
int   flgs
[static]
 

Definition at line 1962 of file AtomSel.C.

References atomsel_volume_array, data, and num.

Referenced by atomSelParser_init.

int atomsel_volume6 void *    v,
int    num,
double *    data,
int   flgs
[static]