character*130 line character*80 line2(14) character*40 flname,FILENAME,outname,imagefile,rflfile character*2 number character*10 base LOGICAL EFLG real*4 crysx,crysy,crysz,cella,cellc,beamx,beamy,oscstrt integer*4 spots,rej integer*4 tot(19) /15270,14851,14758,14690,14655,14614,14613, . 14574,14583,14559,30121,44879,59569,74224,88838,103451,118025, . 132608,147607/ c these are number of spots in each of ten shells (999-3.0 shell 10) c followed by cumulative in 1+2, 1+2+3, 1+2+3+4, etc. WRITE(6,*)'PROGRAM TO SUMMARIZE PROTEIN LOG FILE (SCALE/MEAN).' C WRITE(6,*)' MAKES A TABLE W 1 LINE FOR EACH ITERATION' WRITE(6,*)' This is te be run on vax, reading Unix protein log ' C WRITE(6,*)' TABLE IS WRITTEN TO FILE SCLMN.RSL' WRITE(6,*)' 950201' WRITE(6,*)' Use only for p212121 crystals, res 999-3.0 shell 10' WRITE(6,*)' First MEAN in ?-6.46 A resol range will start sequence,' WRITE(6,*)' Following means must be -5.13, -4.48, -4.07. -3.78, etc.' WRITE(6,*) 5 write(6,*)' Enter name of PROTEIN log file:' read(5,11) flname 11 format(a40) INQUIRE(FILE=flname, NAME=FILENAME,EXIST=EFLG) IF (.NOT.EFLG) GOTO 5 open(unit=2,file=flname,status='old',readonly) c write(6,*)' Enter name for output file:' c read(5,11) outname open(unit=9,file='sclmn.rsl',status='unknown',CARRIAGECONTROL='LIST') write(9,*)'Protein log file:',FILENAME write(6,*)'Protein log file:',FILENAME CFile A 12 USER1:[BERRY.PROT]BC56.PRT;1 25 read(2,31,END=900) line c write(6,*)'x',line,'y' if (line(:6).NE.'File A') goto 25 write(6,*)line(:79) write(9,*)line(:79) 30 read(2,31,END=900) line 31 format(1x,a132) C write(6,*)line c write(6,*)line(:14) if (line(:13).EQ.'Limitation of') THEN decode(80,23,line) res1,res2 23 format(29x,f7.2,3x,f6.2) c WRITE(6,*)'*****************************************************' c WRITE(9,*)'*****************************************************' c write(6,*)line(:79) c write(9,*)line(:79) cLimitation of resolution from 55.00 to 3.20 A.U. wavelength 1.08000 A.U. cLimitation of resolution from 28.0 to 4.5 A.U. wavelength 1.080 A.U. c12345678901234567890123456789012345678901234567890123456789012345678901234567890 c 111111111122222222223333333333444444444455555555556666666666 GOTO 30 ENDIF if (line(:15).EQ.'Measurements of') THEN c WRITE(6,*)'*****************************************************' c WRITE(9,*)'*****************************************************' c write(6,*)line(17:96) c write(9,*)line(17:96) GOTO 30 ENDIF if (line(:21).EQ.'F(obs) of reflections') THEN c WRITE(6,*)'*****************************************************' c WRITE(9,*)'*****************************************************' write(6,*)line(:79) write(9,*)line(:79) GOTO 30 ENDIF if (line(11:14).EQ.'RR1=') THEN c WRITE(6,*)'*****************************************************' c WRITE(9,*)'*****************************************************' c write(6,*)line(:79) c write(9,*)line(:79) GOTO 30 ENDIF if (line(:14).EQ.'SCALE-AND TEMP') THEN c WRITE(6,*)'*****************************************************' c WRITE(9,*)'*****************************************************' write(6,*)line(:79) write(9,*)line(:79) 32 READ(2,31) LINE IF (LINE(:8).NE.'BEFORE/A') GOTO 32 write(6,*)line(:79) write(9,*)line(:79) READ(2,31) LINE write(6,*)line(:79) write(9,*)line(:79) GOTO 30 ENDIF C WRITE(6,*) LINE(31:42) if (line(31:42).EQ.'Reflection s') THEN if(ishell.eq.0) then if (res2.ne.6.46) goto 30 !don't start sequence until right resol range! endif ishell=ishell+1 c write(6,*)line(:79) c write(9,*)line(:79) DO 34 I=2,14 34 READ(2,84) LINE2(i) 84 format(1x,a80) decode(80,43,line2(7)) spots,rej 43 format(31x,i10,i9) decode(80,44,line2(12)) rmer0 decode(80,44,line2(13)) rmer1 44 format(11x,f6.2) c write(6,46) tot(ishell),spots,rmer0,spots-rej,rmer1 c write(9,46) tot(ishell),spots,rmer0,spots-rej,rmer1 46 format (i10,i10,f10.2,'% ',i10,f10.2,'% ') write(6,47) res1,res2, spots, 100*float(spots)/tot(ishell), . rmer0,spots-rej,100*float(spots-rej)/tot(ishell),rmer1 write(9,47) res1,res2, spots, 100*float(spots)/tot(ishell), . rmer0,spots-rej,100*float(spots-rej)/tot(ishell),rmer1 47 format(' ',f6.2,'-',f4.2,i10,2(f9.1,'% '),i10,2(f9.1,'% ')) c c write(6,*)line2(6)(35:70)//line2(12) (12:46) c write(9,*)line2(6)(35:70)//line2(12) (12:46) c write(6,*)line2(7)(35:70)//line2(13) (12:46) c write(9,*)line2(7)(35:70)//line2(13) (12:46) c WRITE(6,*)' ' c WRITE(9,*)' ' GOTO 30 c Reflection statistics for derivative NATI c ========================================== c Number of measurements and reflections c c TOTAL REJECTED PERCENTAGE c 69780 2411 3.46 % c 28274 68 0.24 % c R-factors of the mean values of scaled intensities clinear: sum(|I-|)/sum() quadratic: sqrt(sum(|I-|**2)/sum(**2)) average and sigma of ratio (|I-|)/ c c 12.10 % (before rejection) 19.39 % 0.311 1.030 62407 measurements c 10.43 % (after rejection) 10.05 % 0.238 0.239 59925 measurements c---unix:---------- c Reflection statistics for derivative NATI c ========================================== c Number of measurements and reflections c c TOTAL REJECTED PERCENTAGE c 272483 28694 10.53 % c 82663 2793 3.38 % c c R-factors of the mean values of scaled intensities clinear: sum(|I-|)/sum() quadratic: sqrt(sum(|I-|**2)/sum(**2)) average and sigma of ratio (|I-|)/ c c 13.74 % (before rejection) 21.12 % 0.455 4.318 255493 measurements c 8.27 % (after rejection) 9.48 % 0.131 0.138 219073 measurements ENDIF IF (LINE(:12).EQ.'Completeness') THEN ishell=0 write(6,*)line(:79) write(9,*)line(:79) DO 90 I=1,19 READ(2,31) LINE IF (LINE(:5).EQ.'CHECK') THEN DO 88 J=1,4 88 READ(2,31) LINE ENDIF c write(6,*)line(:79) c write(9,*)line(:79) 90 continue GOTO 30 ENDIF GOTO 30 900 close (unit=2) close (unit=9) end