本文整理汇总了C++中Topology::Atoms方法的典型用法代码示例。如果您正苦于以下问题:C++ Topology::Atoms方法的具体用法?C++ Topology::Atoms怎么用?C++ Topology::Atoms使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Topology
的用法示例。
在下文中一共展示了Topology::Atoms方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetRefMask
// ReferenceAction::SetRefMask()
int ReferenceAction::SetRefMask(Topology const& topIn, const char* call) {
if (topIn.SetupIntegerMask( refMask_ )) return 1;
mprintf("\tReference mask:");
refMask_.BriefMaskInfo();
mprintf("\n");
if (refMask_.None()) {
mprinterr("Error: %s: No reference atoms selected for parm %s, [%s]\n",
call, topIn.c_str(), refMask_.MaskString());
return 1;
}
selectedRef_.SetupFrameFromMask( refMask_, topIn.Atoms() );
return 0;
}
示例2: SetupSymmRMSD
/** Find potential symmetric atoms. All residues up to the last selected
* residue are considered.
*/
int SymmetricRmsdCalc::SetupSymmRMSD(Topology const& topIn, AtomMask const& tgtMask, bool remapIn)
{
// Allocate space for remapping selected atoms in target frame. This will
// also put the correct masses in based on the mask.
tgtRemap_.SetupFrameFromMask(tgtMask, topIn.Atoms());
// Create map of original atom numbers to selected indices
Iarray SelectedIdx( topIn.Natom(), -1 );
int tgtIdx = 0;
for (int originalAtom = 0; originalAtom != topIn.Natom(); ++originalAtom)
if ( originalAtom == tgtMask[tgtIdx] )
SelectedIdx[originalAtom] = tgtIdx++;
if (debug_ > 0) {
mprintf("DEBUG: Original atom -> Selected Index mapping:\n");
for (int originalAtom = 0; originalAtom != topIn.Natom(); ++originalAtom)
mprintf("\t%8i -> %8i\n", originalAtom + 1, SelectedIdx[originalAtom] + 1);
}
// Create initial 1 to 1 atom map for all selected atoms; indices in
// SymmetricAtomIndices will correspond to positions in AMap.
AMap_.resize( tgtRemap_.Natom() );
// Determine last selected residue.
int last_res = topIn[tgtMask.back()].ResNum() + 1;
mprintf("\tResidues up to %s will be considered for symmetry correction.\n",
topIn.TruncResNameNum(last_res-1).c_str());
// In each residue, determine which selected atoms are symmetric.
SymmetricAtomIndices_.clear();
AtomMap resmap;
if (debug_ > 1) resmap.SetDebug(1);
for (int res = 0; res < last_res; ++res) {
AtomMap::AtomIndexArray residue_SymmetricGroups;
if (resmap.SymmetricAtoms(topIn, residue_SymmetricGroups, res)) {
mprinterr("Error: Finding symmetric atoms in residue '%s'\n",
topIn.TruncResNameNum(res).c_str());
return 1;
}
if (!residue_SymmetricGroups.empty()) {
// Which atoms in symmetric groups are selected?
bool resHasSelectedSymmAtoms = false;
for (AtomMap::AtomIndexArray::const_iterator symmGroup = residue_SymmetricGroups.begin();
symmGroup != residue_SymmetricGroups.end();
++symmGroup)
{
Iarray selectedAtomIndices;
for (Iarray::const_iterator atnum = symmGroup->begin();
atnum != symmGroup->end(); ++atnum)
{
if ( SelectedIdx[*atnum] != -1 )
selectedAtomIndices.push_back( SelectedIdx[*atnum] ); // Store tgtMask indices
}
if (!selectedAtomIndices.empty()) {
SymmetricAtomIndices_.push_back( selectedAtomIndices );
resHasSelectedSymmAtoms = true;
}
}
// If remapping and not all atoms in a residue are selected, warn user.
// TODO: Should they just be considered even if not selected?
if (remapIn && resHasSelectedSymmAtoms) {
for (int atom = topIn.Res(res).FirstAtom(); atom != topIn.Res(res).LastAtom(); ++atom)
if (SelectedIdx[atom] == -1) {
mprintf("Warning: Not all atoms selected in residue '%s'. Re-mapped\n"
"Warning: structures may appear distorted.\n",
topIn.TruncResNameNum(res).c_str());
break;
}
}
}
}
if (debug_ > 0) {
mprintf("DEBUG: Potential Symmetric Atom Groups:\n");
for (AtomIndexArray::const_iterator symmatoms = SymmetricAtomIndices_.begin();
symmatoms != SymmetricAtomIndices_.end();
++symmatoms)
{
mprintf("\t%8u) ", symmatoms - SymmetricAtomIndices_.begin());
for (Iarray::const_iterator atom = symmatoms->begin();
atom != symmatoms->end(); ++atom)
mprintf(" %s(%i)", topIn.AtomMaskName(tgtMask[*atom]).c_str(), tgtMask[*atom] + 1);
mprintf("\n");
}
}
return 0;
}
示例3: main
//.........这里部分代码省略.........
else if (arg == "-conect") // Write CONECT records from bond info
writeconect.assign(" conect");
else if (arg == "-ep") // PDB atom names, include extra pts
aatm.append(" include_ep");
else if (arg == "-bres") // PDB residue names
bres.assign(" pdbres");
else if (arg == "-ext") // Use extended PDB info from Topology
useExtendedInfo = true;
else if (arg == "-ctr") // Center on origin
ctr_origin = true;
else if (arg == "-noter") // No TER cards
ter_opt.assign(" noter");
else if (arg == "-nobox") // No CRYST1 record
box.assign(" nobox");
else if (arg == "-pqr") { // Charge/Radii in occ/bfactor cols
pqr.assign(" dumpq");
++numSoloArgs;
} else if (arg == "-mol2") { // output as mol2
fmt = TrajectoryFile::MOL2FILE;
++numSoloArgs;
} else if (Unsupported(arg)) {
mprinterr("Error: Option '%s' is not yet supported.\n\n", arg.c_str());
return 1;
} else {
mprinterr("Error: Unrecognized option '%s'\n", arg.c_str());
Help(argv[0], false);
return 1;
}
}
if (debug > 0) WriteVersion();
// Check command line for errors.
if (topname.empty()) topname.assign("prmtop");
if (debug > 0 && crdname.empty())
mprinterr("| Reading Amber restart from STDIN\n");
if (numSoloArgs > 1) {
mprinterr("Error: Only one alternate output format option may be specified (found %i)\n",
numSoloArgs);
Help(argv[0], true);
return 1;
}
if (!sybyltype.empty() && fmt != TrajectoryFile::MOL2FILE) {
mprinterr("Warning: -sybyl is only valid for MOL2 file output.\n");
sybyltype.clear();
}
if (debug > 0) {
mprinterr("Warning: debug is %i; debug info will be written to STDOUT.\n", debug);
SetWorldSilent(false);
}
// Topology
ParmFile pfile;
Topology parm;
if (pfile.ReadTopology(parm, topname, debug)) {
if (topname == "prmtop") Help(argv[0], false);
return 1;
}
if (!useExtendedInfo)
parm.ResetPDBinfo();
if (res_offset != 0)
for (int r = 0; r < parm.Nres(); r++)
parm.SetRes(r).SetOriginalNum( parm.Res(r).OriginalResNum() + res_offset );
ArgList trajArgs;
// Input coords
Frame TrajFrame;
CoordinateInfo cInfo;
if (!crdname.empty()) {
Trajin_Single trajin;
if (trajin.SetupTrajRead(crdname, trajArgs, &parm)) return 1;
cInfo = trajin.TrajCoordInfo();
TrajFrame.SetupFrameV(parm.Atoms(), cInfo);
trajin.BeginTraj();
if (trajin.ReadTrajFrame(0, TrajFrame)) return 1;
trajin.EndTraj();
} else {
// Assume Amber restart from STDIN
// Check that input is from a redirect.
if ( isatty(fileno(stdin)) ) {
mprinterr("Error: No coordinates specified with '-c' and no STDIN '<'.\n");
return 1;
}
Traj_AmberRestart restartIn;
restartIn.SetDebug( debug );
//restartIn.processReadArgs( trajArgs );
int total_frames = restartIn.setupTrajin("", &parm);
if (total_frames < 1) return 1;
cInfo = restartIn.CoordInfo();
TrajFrame.SetupFrameV(parm.Atoms(), cInfo);
if (restartIn.openTrajin()) return 1;
if (restartIn.readFrame(0, TrajFrame)) return 1;
restartIn.closeTraj();
}
if (ctr_origin)
TrajFrame.CenterOnOrigin(false);
// Output coords
Trajout_Single trajout;
trajArgs.SetList( aatm + bres + pqr + title + ter_opt + box + sybyltype + writeconect, " " );
if ( trajout.PrepareStdoutTrajWrite(trajArgs, &parm, cInfo, 1, fmt) ) return 1;
trajout.WriteSingle(0, TrajFrame);
trajout.EndTraj();
return 0;
}