C- READ 1024 BYTES AT A TIME. C- READ INTO ARRAY COMMON WITH 256 REAL*4, 256 INT*4, 1 BYTE STRINGS C- PICK OUT THE VALUES FOR A CCP4 DENSITY MAP, BE THEY CHARACTER, INTEGER, C- OR REAL (DENSITIES ARE REAL). INTEGER*2 NX,NY,NZ,NXYZ(3) EQUIVALENCE (NX,NXYZ(1)),(NY,NXYZ(2)),(NZ,NXYZ(3)) CHARACTER*1 BLINE(1024) CHARACTER*36 RECLINE(30) EQUIVALENCE (RECLINE(1),BLINE(1)) real*4 rline(256),TCELL(6),CELL(6) REAL*4 RMX(3,3),RMY(3,3),RMZ(3,3),TEMP(3,3),PROD(3,3),X1(3),X2(3) EQUIVALENCE (RLINE(1),BLINE(1)),(TCELL(1),RLINE(11)) INTEGER*4 LINT(256) integer*2 plusmin,plusmax,minmin,minmax EQUIVALENCE (LINT(1),BLINE(1)) CHARACTER*80 TTITLE,TITLE,TSYMTRY,SYMTRY EQUIVALENCE (TTITLE,RLINE(57)) EQUIVALENCE (TSYMTRY,RLINE(1)) CHARACTER*50 INFILE,OUTFILE,FILENAME LOGICAL*1 INSIDE,EFLG DIMENSION RMAP(0:1001) WRITE(6,1001) 1001 FORMAT(//' PROGRAM TO convert ascii file to CCP4 MAP FILE.') 5 WRITE(6,1002) 1002 FORMAT(/'$filename of ascii file? (CR to quit): ') READ(5,1003) INFILE 1003 FORMAT(A) IF (INFILE(:5).EQ.' ') STOP INQUIRE(FILE=INFILE, NAME=FILENAME,EXIST=EFLG) c write (6,*)infile,filename,eflg IF (.NOT.EFLG) GOTO 5 OPEN (UNIT=2,FILE=INFILE,STATUS='OLD') WRITE(6,*) 'FILENAME OF CCP4 MAP FILE TO CREATE?' READ(5,1003) OUTFILE OPEN (UNIT=3,FILE=OUTFILE,STATUS='NEW',FORM='UNFORMATTED', & RECL=256, RECORDTYPE='FIXED', CARRIAGECONTROL='NONE') c*** READ(2,*)NSLOW,NMED,NFAST if (nfast.le.1000) goto 10 stop 'dimensioned for nfast=1000. map exceeds!' 10 NSFAST=0 !START VALUES NSMED=0 NSSLOW=0 WRITE(6,*)'MAP DIMENSIONS (FAST, MEDIUM, SLOW) ARE:',NFAST,NMED,NSLOW WRITE(6,*)'ENTER 3 INTEGERS FOR THE AXES THESE CORRESPOND TO (1=X,..):' READ(5,*)IAXFAST,IAXMED,IAXSLOW NXYZ(IAXFAST)=NFAST NXYZ(IAXMED)=NMED NXYZ(IAXSLOW)=NSLOW DMIN=0 DMAX=0 DMEAN=0 DDEV=0 MAPTYPE=2 !???? WRITE(6,*)' ENTER THE 6 CELL PARAMETERS:' READ(5,*)(CELL(I),I=1,6) NSG=1 NSYMCHAR=80 NTITLE=1 TITLE='CCP4 STYLE MAP FROM ASCII' WRITE(6,*)'NFAST, MEDIUM, SLOW=',NFAST,NMED,NSLOW WRITE(6,*)'MAP TYPE=',MAPTYPE WRITE(6,*)'START (FAST, MED, SLOW)=',NSFAST,NSMED,NSSLOW WRITE(6,*)'CELL: ',(CELL(I),I=1,6) WRITE(6,*)'SAMPLING(NX, NY, NZ)=',NX, NY, NZ WRITE(6,*)'AXIS PERMUTAION (FAST, SLOW, MEDIUM)=',IAXFAST, & IAXMED,IAXSLOW WRITE(6,*)'DMIN, DMAX, DMEAN, DDEV=',DMIN,DMAX,DMEAN,DDEV WRITE(6,*)'SPACE GROUP #',NSG WRITE(6,*)'# CHAR OF SYM INFO:',NSYMCHAR WRITE(6,*)'NUMBER OF TITLES:',NTITLE WRITE(6,*) TITLE C READ(2)(RLINE(I),I=1,256) SYMTRY=' ' C WRITE(6,*)SYMTRY c***********************************put here what you want to change: C cell(1)=21.2 C cell(2)=cell(1) C cell(3)=35.2 c******************************************************************** DO 400 I=1,256 400 RLINE(I)=0 LINT(1)=NFAST LINT(2)=NMED LINT(3)=NSLOW LINT(4)=maptype lint(5)=nsfast lint(6)=nsmed lint(7)=nsslow LINT(8)=NX LINT(9)=NY LINT(10)=NZ DO 490 I=1,6 490 TCELL(I)=CELL(I) lint(17)=iaxfast lint(18)=iaxmed lint(19)=iaxslow rline(20)=dmin rline(21)=dmax rline(22)=dmean lint(23)=nsg lint(24)=nsymchar rline(55)=ddev lint(56)=ntitle TTITLE=TITLE write(6,*)'ntitle,lint(56)=',ntitle,lint(56) WRITE(3)(RLINE(I),I=1,256) DO 493 I=1,20 493 RLINE(I)=0 TSYMTRY=SYMTRY II=1+NSYMCHAR/4 DO 1500 K=0,NSLOW-1 WRITE(6,*)'SECTION ',K DO 1500 I=0,NMED-1 READ(2,497) (RMAP(J),J=0,NFAST-1) 497 format(80f1.0) DO 1500 J=0,NFAST-1 IF (II.GT.256) THEN WRITE(3)(RLINE(IJ),IJ=1,256) II=1 ENDIF C GET A VALUE FOR THE NEXT (I,J,K'TH) PIXEL RLINE(II)=RMAP(J) 1500 II=II+1 WRITE(3)(RLINE(I),I=1,256) CLOSE(UNIT=3) STOP 'NORMAL END' 1900 STOP 'END OF FILE BEFORE END OF MAP' END C STILL NEED TO APPLY SYMETRY OPERATIONS! USE ANOTHER PROGRAM, READ IN THE MAP ALL INTO MEMORY, C STEP THROUGH THE PIXELS OF ONE ASU. FOR EACH PIXEL, EXAMINE ALL EQUIVLENT PIXELS. SET ALL TO VALUE OF DENSEST. C ONLY ONE OF THE EQUIV PIXELS SHOULD HAVE ANY DENSITY BEFORE THIS?