#ifndef __AATOM_HH__ #define __AATOM_HH__ //--- C/C++ includes --- #include #include //--- SkyMol includes --- #include "calc.hh" class AGroup; class APoint; class AAtom : public CoordType { public: //--- Constructors --- virtual AAtom *newAtom(double _x,double _y,double _z, const char *name) = 0; //--- Destructors --- virtual ~AAtom() { ; } //---- Manipulations with to coordinates --- virtual double getX() = 0; virtual double getY() = 0; virtual double getZ() = 0; virtual void setX(double x) = 0; virtual void setY(double y) = 0; virtual void setZ(double z) = 0; virtual double getActualX() = 0; virtual double getActualY() = 0; virtual double getActualZ() = 0; //--- Access to the next atom --- virtual AAtom *getNext() = 0; virtual bool setNext(AAtom *atom) = 0; // Not recommended for use //--- Atom serial number in a molecule --- virtual int getSerialNum() = 0; //--- Atom conformation --- virtual char getConformation() = 0; //--- Access chemichal identification --- virtual bool isHydrogen() = 0; virtual bool isCarbon() = 0; virtual bool isNitrogen() = 0; virtual bool isOxygen() = 0; virtual bool isPhosphorus() = 0; virtual bool isSulphur() = 0; //--- Selection status --- virtual bool isSelected() = 0; virtual void setSelected() = 0; virtual void setNotSelected() = 0; //--- Temporary selection status use it in your program --- virtual bool isTmpSel() = 0; virtual void setTmpSel() = 0; virtual void setNotTmpSel() = 0; //--- Group to which the atom belongs to --- virtual AGroup *getGroup() = 0; //--- Access position in a residue --- virtual bool isNBackbone() = 0; virtual bool isAlphaCarbon() = 0; virtual bool isCBackbone() = 0; virtual bool isOBackbone() = 0; virtual bool isAminoBackbone() = 0; virtual bool isBetaCarbon() = 0; virtual bool isSugarPhosphate() = 0; virtual bool isNucleicBackbone() = 0; virtual bool isCysteineSulphur() = 0; virtual bool isHetero() = 0; //--- Charges on atoms --- virtual short getCharge() = 0; virtual short setCharge(short charge) = 0; //--- Alignment flag --- virtual bool isAligned() = 0; virtual void setAligned() = 0; virtual void setNotAligned() = 0; //--- Names --- virtual std::string getName() = 0; // 4-letter name virtual std::string getChemicalName() = 0; // 2-letter name //--- Calculations --- virtual double originalDistTo(AAtom *atom) = 0; virtual double actualDistTo(AAtom *atom) = 0; virtual double angleWith(AAtom* atom1, AAtom* atom2) = 0; virtual double dihedralAngleWith(AAtom *atom_j, AAtom *atom_k, AAtom *atom_l) = 0; //--- Extracting colors --- virtual void setColor(int col_) = 0; virtual int getColor() = 0; //--- You may assosiate some data structure with an atom --- virtual void* assignData(void *) = 0; virtual void* getAssignedData() = 0; //--- T bonded atoms --- virtual APoint *getTBonded() = 0; virtual bool testTBonded(AAtom *atom) = 0; virtual bool replaceTBonded(APoint *points) = 0; //--- CA bonded atoms --- virtual APoint *getCABonded() = 0; virtual bool testCABonded(AAtom *atom) = 0; //--- Integer property --- virtual void setIntProperty(int prop) = 0; virtual int getIntProperty() = 0; //--- Temperature factor for atom --- virtual short getTemperature() = 0; virtual void setTemperature(short temp) = 0; }; #endif