00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef BALL_STRUCTURE_ATOMBIJECTION_H
00013 #define BALL_STRUCTURE_ATOMBIJECTION_H
00014
00015 #ifndef BALL_COMMON_H
00016 # include <BALL/common.h>
00017 #endif
00018
00019 #ifndef BALL_KERNEL_ATOMCONTAINER_H
00020 # include <BALL/KERNEL/atomContainer.h>
00021 #endif
00022
00023 namespace BALL
00024 {
00025
00052 class BALL_EXPORT AtomBijection
00053 : public std::vector<std::pair<Atom*, Atom*> >
00054 {
00055 public:
00056
00061 typedef std::pair<Atom*, Atom*> AtomPair;
00062 typedef std::vector<std::pair<Atom*, Atom*> > PairVector;
00064
00068
00071 AtomBijection() {}
00072
00086 AtomBijection(AtomContainer& A, AtomContainer& B);
00087
00089 virtual ~AtomBijection() {}
00090
00092
00113 Size assignTrivial(AtomContainer& A, AtomContainer& B);
00114
00127 Size assignByName(AtomContainer& A, AtomContainer& B);
00128
00139 Size assignCAlphaAtoms(AtomContainer& A, AtomContainer& B);
00140
00141
00153 Size assignBackboneAtoms(AtomContainer& A, AtomContainer& B);
00155
00156
00159
00160 double calculateRMSD() const;
00162
00165
00166 using PairVector::size;
00168 using PairVector::push_back;
00170 using PairVector::begin;
00172 using PairVector::end;
00174 using PairVector::rbegin;
00176 using PairVector::rend;
00178
00179 };
00180
00181 }
00182
00183 #endif // BALL_STRUCTURE_ATOMBIJECTION_H