def RetriveHeadAndExperimentalInfoFromCIFFile(Infile): """Retrieve header information from CIF file. """ Classification, DepositionDate, IDCode, ExperimentalTechnique, Resolution = [ "Not Available" ] * 5 Lines = MiscUtil.GetTextLines(Infile) # IDCode... for Line in Lines: if re.match("^_struct_keywords.entry_id", Line, re.I): IDCode = re.sub("^_struct_keywords.entry_id", "", Line, re.I) IDCode = IDCode.strip() if len(IDCode.strip()) else "Not Available" break # Classification... for Line in Lines: if re.match("^_struct_keywords.pdbx_keywords", Line, re.I): Classification = re.sub("^_struct_keywords.pdbx_keywords", "", Line, re.I) Classification = Classification.strip() if len( Classification.strip()) else "Not Available" break # Deposition date... for Line in Lines: if re.match("^_pdbx_database_status.recvd_initial_deposition_date", Line, re.I): DepositionDate = re.sub( "^_pdbx_database_status.recvd_initial_deposition_date", "", Line, re.I) DepositionDate = DepositionDate.strip() if len( DepositionDate.strip()) else "Not Available" break # Experimental technique... for Line in Lines: if re.match("^_exptl.method", Line, re.I): ExperimentalTechnique = re.sub("(_exptl.method|')", "", Line, flags=re.I) ExperimentalTechnique = ExperimentalTechnique.strip() if len( ExperimentalTechnique.strip()) else "Not Available" break # Resolution... for Line in Lines: if re.match("^_reflns.d_resolution_high", Line, re.I): Resolution = re.sub("^_reflns.d_resolution_high", "", Line, re.I) Resolution = Resolution.strip() if len( Resolution.strip()) else "Not Available" break return Classification, DepositionDate, IDCode, ExperimentalTechnique, Resolution
def RetriveHeadAndExperimentalInfoFromPDBFile(Infile): """Retrieve header and experimental information from PDB file. """ Classification, DepositionDate, IDCode, ExperimentalTechnique, Resolution = [ "Not Available" ] * 5 Lines = MiscUtil.GetTextLines(Infile) # Retrieve header info... for Line in Lines: if re.match("^HEADER", Line, re.I): # Format: 10x40s9s3x4s FormatSize = 66 Line = PrepareLineForFormatSize(Line, FormatSize) Classification = Line[10:50] DepositionDate = Line[50:59] IDCode = Line[62:66] Classification = Classification.strip() if len( Classification.strip()) else "Not Available" DepositionDate = DepositionDate.strip() if len( DepositionDate.strip()) else "Not Available" IDCode = IDCode.strip() if len(IDCode.strip()) else "Not Available" break # Retrieve experimental info... for Line in Lines: if re.match("^EXPDTA", Line, re.I): ExperimentalTechnique = re.sub("^EXPDTA", "", Line, re.I) ExperimentalTechnique = ExperimentalTechnique.strip() elif re.match("^REMARK 2 RESOLUTION.", Line, re.I): if re.search("NOT APPLICABLE", Line, re.I): Resolution = "NOT APPLICABLE" else: FormatSize = 70 Line = PrepareLineForFormatSize(Line, FormatSize) Resolution = Line[22:70] Resolution = Resolution.strip() if len( Resolution.strip()) else "Not Available" elif re.match("^(ATOM|HETATM)", Line, re.I): break return Classification, DepositionDate, IDCode, ExperimentalTechnique, Resolution