Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="requestString"></param>
        /// <returns></returns>
        private PfamAlignInfo[] GetPfamFamilyAlignment(string requestString)
        {
            string    jobInfoXml = "pfamjobInfo.xml";
            WebClient webClient  = new WebClient();

//			Thread.Sleep (3000);

            webClient.DownloadFile(requestString, jobInfoXml);

            PfamJobInfo jobInfo = ParseJobInfoXml(jobInfoXml);

            string   resultXml      = "pfamAlignResult.xml";
            long     fileSize       = 0;
            FileInfo resultFileInfo = null;
            int      numOfTrials    = 0;

            while (fileSize == 0 && numOfTrials <= 10)
            {
                numOfTrials++;
                Thread.Sleep(jobInfo.estimatedTime * 10000);
                webClient.DownloadFile(jobInfo.resultUrl, resultXml);
                resultFileInfo = new FileInfo(resultXml);
                fileSize       = resultFileInfo.Length;
            }

            resultFileInfo = new FileInfo(resultXml);
            fileSize       = resultFileInfo.Length;
            if (fileSize == 0)
            {
                throw new Exception("The alginment file is not on PFAM");
            }

            //	string resultXml = "pfamAlignResult0.xml";
            PfamAlignInfo[] pfamAlignInfos = ParsePfamResultXmlFile(resultXml);
            return(pfamAlignInfos);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="jobInfoXml"></param>
        /// <returns></returns>
        public PfamJobInfo ParseJobInfoXml(string jobInfoXml)
        {
            PfamJobInfo pfamJobInfo = new PfamJobInfo();

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(jobInfoXml);
            // Create an XmlNamespaceManager for resolving namespaces.
            XmlNamespaceManager nsManager = new XmlNamespaceManager(xmlDoc.NameTable);

            nsManager.AddNamespace("pfam", "http://pfam.sanger.ac.uk/");

            XmlNodeList jobNodeList = xmlDoc.DocumentElement.ChildNodes;
            string      resultUrl   = "";

            if (jobNodeList != null)
            {
                XmlNode     jobNode      = jobNodeList[0];
                XmlNodeList jobInfoNodes = jobNode.ChildNodes;
                foreach (XmlNode infoNode in jobInfoNodes)
                {
                    if (infoNode.Name.ToLower() == "estimated_time")
                    {
                        pfamJobInfo.estimatedTime = Convert.ToInt32(infoNode.InnerText);
                    }

                    if (infoNode.Name.ToLower() == "result_url")
                    {
                        resultUrl             = infoNode.InnerText.TrimEnd();
                        resultUrl             = resultUrl.Trim("\n".ToCharArray());
                        pfamJobInfo.resultUrl = resultUrl;
                    }
                }
            }
            return(pfamJobInfo);
        }