INTEGER*2 H,K,L,HMAX,HOFF,N,M(30000),IND(30000),IDNUM(20) CHARACTER*40 FNAME,ASTRING INTEGER*2 ID(20,30000),HKL(3,30000),HKLF(3),IDTHIS REAL*4 D(20,30000),EMIN,XIN(20) R32K=128*256 EMIN=300. NMAX=30000 NREPORT=500 TYPE*,'IGNORING SPOTS WITH INTENSITY LESS THAN:',EMIN TYPE *,'READ DENZO OUTPUT FILES, COMBINE INTENSITIES INTO' TYPE*,' COMPOSITE FILE BUT KEEP SOURCES SEPARATE.' TYPE*,' REPORTING ONLY',NREPORT,' LARGEST SPOTS.' C DATA STRUCTURE: D(I,J) IS I'TH MEASUREMENT OF INTENSITY OF J'TH SPOT. C IDNUM(J) IS REF NUMBER FOR J'TH IMAGE C ID(I,J) IS INDEX NUMBER FOR THE IMAGE FROM WHICH MEASUREMENT CAME. C IDNUM(NIMAGE) OR ID THIS IS REF NUMBER FOR IMAGE BEING READ C HKL(K,J) IS VALUE OF K'TH INDEX OF J'TH SPOT (K=1,3; J=1,N) C N IS THE NUMBER OF SPOTS MEASURED AT LEAST ONCE. C M(J) IS THE NUMBER OF MEASUREMENTS FOR THE J'TH SPOT C ONLY IDENTICAL SPOTS ARE GROUPED, SYMMETRICALLY EQUIVALENT ARE SEPARATE. C NIMAGE IS NUMBER OF IMAGES READ. N=0 NIMAGE=0 30 TYPE *,'NUMBER OF SPOTS REPORTED:',N TYPE *,'ENTER FILE NAME (Q TO QUIT):' 35 read(5,40)FNAME IF (FNAME.EQ.'Q') GOTO 501 40 FORMAT (A40) OPEN(UNIT=2,FILE=FNAME,STATUS='OLD') NIMAGE=NIMAGE+1 TYPE*,'ENTER ID NUMBER FOR THIS SOURCE:' READ(5,*) IDNUM(NIMAGE) DO 45 I=1,5 45 READ (2,50)ASTRING C TYPE*, ASTRING 50 FORMAT (A40) 55 READ (2,60)X 60 FORMAT (F7.4) 70 READ(2,101,END=500)(HKLF(K),K=1,3),J,X1,X2,S,X,X,X,X,PL N1=N1+1 C TYPE *,'HKL=',H,K,L C 24 -8 71 1 66.6 66.6 4.64 0.0 0.971 35.4 623.0 0.034 0.0 C 28 -8 66 1 73.1 73.1 4.64 0.0 0.971 34.7 567.0 0.041 0.0 C101 FORMAT (I4,2I4,I2,F8.1,F8.1,F7.2,F6.1,F6.3,F7.1,F7.1,F6.3,F8.1) 101 FORMAT (I4,2I4,I2,F8.0,F8.1,F7.2,F6.1,F6.3,F7.1,F7.1,F6.3,F8.1) IF (X1.LT.EMIN) GOTO 70 DO 120 J=1,N FLAG=0 DO 114 K=1,3 114 IF (HKLF(K).NE.HKL(K,J)) FLAG=1 IF (FLAG.EQ.0) GOTO 125 120 CONTINUE GOTO 130 125 M(J)=M(J)+1 C SPOT HAS SAME INDICES AS PREVIOUSLY REPORTED IF (M(J).GT.100) TYPE*,'REPEAT',(HKL(K,J),K=1,3),'M(J)=',M(J) C TYPE*,' ',(HKLF(K),K=1,3) D(M(J),J)=X1 IF (X1.GT.D(20,J)) D(20,J)=X1 ID(M(J),J)=NIMAGE GOTO 70 C THIS SPOT HAS NOT BEEN ENTERED YET, SO ENTER NOW: 130 IF (N.EQ.NMAX)STOP 'TO MANY SPOTS: >NMAX!' N=N+1 M(N)=1 D(1,N)=X1 D(20,N)=X1 C (D(20,J) IS MAX READING FOR J'TH SPOT) ID(1,N)=NIMAGE DO 135 K=1,3 135 HKL(K,N)=HKLF(K) GOTO 70 500 CLOSE (UNIT=2) GOTO 30 C SORT BY D(20,J) 501 DO 505 I=1,N 505 IND(I)=I DO 512 I=1,N JJ=I DO 510 J=I,N 510 IF (D(20,IND(J)).GT.D(20,IND(JJ))) JJ=J K=IND(I) IND(I)=IND(JJ) 512 IND(JJ)=K CONTINUE TYPE *,'NUMBER OF SPOTS REPORTED:',N TYPE *,'ENTER FILE NAME FOR OUTPUT:' read(5,40)FNAME OPEN(UNIT=3,FILE=FNAME,STATUS='NEW',RECL=180, $ carriagecontrol='list') WRITE(3,*) N WRITE(3,514)(IDNUM(J),J=1,NIMAGE) 514 FORMAT(' IMAGE NUMBER: ',20I8) DO 520 JJ=1,NREPORT J=IND(JJ) DO 516 I=1,NIMAGE 516 XIN(I)=0 DO 518 I=1,M(J) 518 XIN(ID(I,J))=D(I,J) C WRITE (3,530) M(J),(HKL(I,J),I=1,3) C WRITE (3,531) (ID(I,J),I=1,M(J)) C520 WRITE (3,532) (D(I,J),I=1,M(J)) C530 FORMAT(I4,3I4) C531 FORMAT(10I4) C532 FORMAT(10F8.0) 520 WRITE(3,530) (HKL(I,J),I=1,3),M(J),(XIN(I),I=1,NIMAGE) 530 FORMAT(I6,3I4,20F8.0) C520 WRITE(3,*) M(J),(HKL(I,J),I=1,3),(ID(I,J),I=1,M(J)), C $ (D(I,J),I=1,M(J)) CLOSE (UNIT=3) c***************************8 NREPORT=100 OPEN(UNIT=3,FILE='INTEXP.MAT',STATUS='NEW',RECL=180, & carriagecontrol='list') WRITE(3,*) 2 write(3,*) nimage+4 write(3,*) nreport+1 write(3,*) 0 do 550 jj=1,nreport J=IND(JJ) 550 write(3,*) M(j) do 560 i=1,3 write(3,*) 0 do 560 jj=1,nreport J=IND(JJ) 560 write(3,*) hkl(i,j) do 570 ii=1,nimage write(3,*) idnum(ii) do 570 jj=1,nreport J=IND(JJ) DO 568 I=1,M(J) C568 XIN(ID(I,J))=D(I,J) if (ID(I,J).EQ.II) THEN WRITE(3,*) D(I,J) GOTO 570 ENDIF 568 CONTINUE WRITE(3,*) 0 570 CONTINUE CLOSE (UNIT=3) c****************************** TYPE *,'NUMBER OF SPOTS REPORTED:',N END