Exemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="buInterface"></param>
 /// <param name="maxSeq1"></param>
 /// <param name="minSeq1"></param>
 /// <param name="maxSeq2"></param>
 /// <param name="minSeq2"></param>
 private void GetMaxMinContactSeqIDs(InterfaceChains buInterface, ref int maxSeq1, ref int minSeq1,
                                     ref int maxSeq2, ref int minSeq2)
 {
     maxSeq1 = -1;
     minSeq1 = 999999;
     maxSeq2 = -1;
     minSeq2 = 999999;
     foreach (string seqString in buInterface.seqContactHash.Keys)
     {
         string[] seqIds = seqString.Split('_');
         int      seqId1 = ParseHelper.ConvertSeqToInt(seqIds[0]);
         if (maxSeq1 < seqId1)
         {
             maxSeq1 = seqId1;
         }
         if (minSeq1 > seqId1)
         {
             minSeq1 = seqId1;
         }
         int seqId2 = ParseHelper.ConvertSeqToInt(seqIds[1]);
         if (maxSeq2 < seqId2)
         {
             maxSeq2 = seqId2;
         }
         if (minSeq2 > seqId2)
         {
             minSeq2 = seqId2;
         }
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// atom coordinates for domains
        /// A SCOP domain may have multiple segmentations
        /// </summary>
        /// <param name="chain"></param>
        /// <param name="ranges"></param>
        /// <returns></returns>
        private AtomInfo[] GetDomainAtoms(ChainAtoms chain, string rangeString)
        {
            AtomInfo[]      domainAtoms    = null;
            List <AtomInfo> domainAtomList = new List <AtomInfo> ();
            int             startPos       = -1;
            int             endPos         = -1;
            int             seqId          = -1;

            string[] ranges = rangeString.Split(';');
            foreach (string range in ranges)
            {
                if (range == "-")
                {
                    domainAtoms = chain.CartnAtoms;
                }
                else
                {
                    string[] posFields = range.Split('-');
                    startPos = ParseHelper.ConvertSeqToInt(posFields[0]);
                    endPos   = ParseHelper.ConvertSeqToInt(posFields[1]);
                    foreach (AtomInfo atom in chain.CartnAtoms)
                    {
                        seqId = ParseHelper.ConvertSeqToInt(atom.seqId);
                        if (seqId >= startPos && seqId <= endPos)
                        {
                            domainAtomList.Add(atom);
                        }
                    }
                }
            }
            return(domainAtomList.ToArray());
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="chain"></param>
        /// <param name="domainStart"></param>
        /// <param name="domainEnd"></param>
        /// <returns></returns>
        private AtomInfo[] GetDomainAtoms(AtomInfo[] chainAtoms, int domainStart, int domainEnd)
        {
            List <AtomInfo> domainAtomsList = new List <AtomInfo> ();
            int             seqId           = -1;

            foreach (AtomInfo atom in chainAtoms)
            {
                seqId = ParseHelper.ConvertSeqToInt(atom.seqId);
                if (seqId <= domainEnd && seqId >= domainStart)
                {
                    domainAtomsList.Add(atom);
                }
            }
            return(domainAtomsList.ToArray());
        }
Exemplo n.º 4
0
        /// <summary>
        /// the atoms of the domain
        /// </summary>
        /// <param name="chainAtoms">atomic coordinate for the chain</param>
        /// <param name="domainRange">domain range</param>
        /// <returns>all atomic coordinates for the domain</returns>
        private AtomInfo[] GetDomainAtoms(AtomInfo[] chainAtoms, Range[] domainRange)
        {
            List <AtomInfo> domainAtomList = new List <AtomInfo> ();
            int             atomSeqId      = -1;

            foreach (AtomInfo atom in chainAtoms)
            {
                atomSeqId = ParseHelper.ConvertSeqToInt(atom.seqId);
                if (IsSeqIdInRange(atomSeqId, domainRange))
                {
                    domainAtomList.Add(atom);
                }
            }
            return(domainAtomList.ToArray());
        }
Exemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="buInterface"></param>
        /// <param name="domainStart1"></param>
        /// <param name="domainEnd1"></param>
        /// <param name="domainStart2"></param>
        /// <param name="domainEnd2"></param>
        /// <returns></returns>
        private bool AreDomainsInteracted(InterfaceChains buInterface, int domainStart1, int domainEnd1,
                                          int domainStart2, int domainEnd2)
        {
            int  numOfResidueContacts = 0;
            int  numOfAtomContacts    = 0;
            int  seqId1 = -1;
            int  seqId2 = -1;
            bool hasEnoughResiduePairs = false;
            bool hasContacts           = false;

            foreach (string seqString in buInterface.seqDistHash.Keys)
            {
                string[] seqIds = seqString.Split('_');
                seqId1 = ParseHelper.ConvertSeqToInt(seqIds[0]);
                seqId2 = ParseHelper.ConvertSeqToInt(seqIds[1]);
                if (seqId1 >= domainStart1 && seqId1 <= domainEnd1 &&
                    seqId2 >= domainStart2 && seqId2 <= domainEnd2)
                {
                    numOfResidueContacts++;
                    if (numOfResidueContacts >= AppSettings.parameters.contactParams.numOfResidueContacts)
                    {
                        hasEnoughResiduePairs = true;
                        break;
                    }
                }
            }
            foreach (string seqString in buInterface.seqContactHash.Keys)
            {
                string[] seqIds = seqString.Split('_');
                seqId1 = ParseHelper.ConvertSeqToInt(seqIds[0]);
                seqId2 = ParseHelper.ConvertSeqToInt(seqIds[1]);
                if (seqId1 >= domainStart1 && seqId1 <= domainEnd1 &&
                    seqId2 >= domainStart2 && seqId2 <= domainEnd2)
                {
                    numOfAtomContacts++;
                    hasContacts = true;
                    //      break;
                }
            }
            //    if (hasContacts && hasEnoughResiduePairs)
            if ((hasContacts && hasEnoughResiduePairs) ||
                numOfAtomContacts >= AppSettings.parameters.contactParams.domainNumOfAtomContacts)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 6
0
        /// <summary>
        /// the domain in the chain
        /// </summary>
        /// <param name="chain"></param>
        /// <param name="startPos"></param>
        /// <param name="endPos"></param>
        /// <returns></returns>
        private AtomInfo[] GetDomainAtoms(AtomInfo[] chain, int startPos, int endPos)
        {
            List <AtomInfo> atomList = new List <AtomInfo> ();
            int             seqId    = -1;

            foreach (AtomInfo atom in chain)
            {
                seqId = ParseHelper.ConvertSeqToInt(atom.seqId);
                if (seqId <= endPos && seqId >= startPos)
                {
                    atomList.Add(atom);
                }
            }
            AtomInfo[] domain = new AtomInfo[atomList.Count];
            atomList.CopyTo(domain);
            return(domain);
        }
Exemplo n.º 7
0
        /// <summary>
        /// the domain in the chain
        /// </summary>
        /// <param name="chain"></param>
        /// <param name="startPos"></param>
        /// <param name="endPos"></param>
        /// <returns></returns>
        private AtomInfo[] GetDomainAtoms(AtomInfo[] chain, Range[] ranges)
        {
            List <AtomInfo> atomList = new List <AtomInfo> ();
            int             seqId    = -1;

            foreach (AtomInfo atom in chain)
            {
                seqId = ParseHelper.ConvertSeqToInt(atom.seqId);
                foreach (Range range in ranges)
                {
                    if (seqId <= range.endPos && seqId >= range.startPos)
                    {
                        atomList.Add(atom);
                        break;
                    }
                }
            }
            AtomInfo[] domain = new AtomInfo[atomList.Count];
            atomList.CopyTo(domain);
            return(domain);
        }