#!/usr/local/bin/perl package PDB::Summarize; require 5.002; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(Summarize); $HEADERt='@10A40 @50A9 @62A4'; $COMPNDt='@10A60'; $SOURCEt='@10A60'; $AUTHORt='@10A60'; $REMARKt='@7I3 @11A59'; %months = ( 'JAN' => "01", 'FEB' => "02", 'MAR' => "03", 'APR' => "04", 'MAY' => "05", 'JUN' => "06", 'JUL' => "07", 'AUG' => "08", 'SEP' => "09", 'OCT' => "10", 'NOV' => "11", 'DEC' => "12" ); sub Summarize { my($file)=shift; my($class,$date,$id,$resolution,$rvalue,$rmsdangles,$rmsdbonds); my ($compound,$source,$authors)=('','',''); open(FD,$file) || return undef; while() { # HEADER HYDROLASE(PHOSPHORIC MONOESTER) 12-JUN-93 1RPA # HEADER PLANT SEED PROTEIN 30-APR-81 1CRN if (/^HEADER\s+\S/) { ($class,$date,$id)=unpack($HEADERt,$_); } # COMPND CRAMBIN # COMPND PROSTATIC ACID PHOSPHATASE (E.C.3.1.3.2) COMPLEXED WITH # COMPND 2 TARTARIC ACID elsif (/^COMPND\s+\S/) { $compound .= unpack($COMPNDt,$_); } # SOURCE ABYSSINIAN CABBAGE (CRAMBE ABYSSINICA) SEED # SOURCE RAT (RATTUS NORVEGICUS) elsif (/^SOURCE\s+\S/) { $source .= unpack($SOURCEt,$_); } # AUTHOR W.A.HENDRICKSON,M.M.TEETER # AUTHOR Y.LINDQVIST,G.SCHNEIDER elsif (/^AUTHOR\s+\S/) { $authors .= unpack($AUTHORt,$_); } # REMARK 2 RESOLUTION. 1.5 ANGSTROMS. # REMARK 2 RESOLUTION. 3.0 ANGSTROMS. elsif (/^REMARK \d RESOLUTION. ([\d.]+)/) { $resolution = $1; } # REMARK 3 R VALUE 0.215 elsif (/^REMARK \d\s+R VALUE\s*([\d.]+)/) { $rvalue = $1; } # REMARK 3 RMSD BOND ANGLES 4.0 DEGREES elsif (/^REMARK \d\s+RMSD BOND ANGLES\s+([\d.]+)/) { $rmsdangles = $1; } # REMARK 3 RMSD BOND DISTANCES 0.022 ANGSTROMS elsif (/^REMARK \d\s+RMSD BOND DISTANCES\s+([\d.]+)/) { $rmsdbonds = $1; } elsif (/^SEQRES\s+\S|^ATOMS\s+\S/) { last; } } close(FD); $authors =~ s/,([^\s])/, $1/g; # insert space after , $authors =~ s/([A-Z]\.|[A-Z]\.[A-Z]\.|[A-Z]\.[A-Z]\.[A-Z]\.)([-\' A-Z]{3,})/$2 $1/g; # F.M. LAST -> LAST FM $authors =~ s/\.//g; $date =~ s/([0-3]\d)-([A-Z][A-Z][A-Z])-([6789]\d)/"19$3-$months{$2}-$1"/e; $class =~ s/([\S])\(/$1 \(/g; # insert space before ('s return ($id, $class, $date, $compound, $source, $authors, $resolution, $rvalue, $rmsdangles, $rmsdbonds); } 1;