C ++******************************************************************** C C CONF1.F C LONG FILE NAMES JAN 89 ARDEAN LEITH C 4/30/93 MAHIEDDINE LADJADJ C 9/1/93 JING SU C REMOVED UNUSED 'RS' 10/27/08 ARDEAN LEITH C C ********************************************************************** C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM. AUTHOR: J.FRANK * C=* Copyright (C) 1985-2008 Health Research Inc. * C=* * C=* HEALTH RESEARCH INCORPORATED (HRI), * C=* ONE UNIVERSITY PLACE, RENSSELAER, NY 12144-3455. * C=* * C=* Email: spider@wadsworth.org * C=* * C=* This program is free software; you can redistribute it and/or * C=* modify it under the terms of the GNU General Public License as * C=* published by the Free Software Foundation; either version 2 of the * C=* License, or (at your option) any later version. * C=* * C=* This program is distributed in the hope that it will be useful, * C=* but WITHOUT ANY WARRANTY; without even the implied warranty of * C=* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * C=* General Public License for more details. * C=* * C=* You should have received a copy of the GNU General Public License * C=* along with this program; if not, write to the * C=* Free Software Foundation, Inc., * C=* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * C=* * C ********************************************************************** C * C C ********************************************************************** SUBROUTINE CONF1(MAXDIM) INCLUDE 'CMBLOCK.INC' INCLUDE 'CMLIMIT.INC' C ACTUAL MAX. LENGTH OF A0 IS SET IN CMLIMIT.INC COMMON /IOBUF/ A0(NBUFSIZ) PARAMETER (NFUNC=3) CHARACTER(LEN=2) :: CFUNC(NFUNC) CHARACTER(LEN=MAXNAM) :: FILNAM,FILTST CHARACTER :: NULL,DISP LOGICAL :: EX,ISOPEN C COMMAND OPTIONS: DATA CFUNC /'PT', 'CI', 'EP'/ NULL = CHAR(0) LUN1 = 10 LUN2 = 7 LUN3 = 8 LUN4 = 9 LUN5 = 12 MAXIM = 0 MAXIM1 = 0 MAXIM2 = 0 MAXIM3 = 0 MAXIM4 = 0 DO IFUNC = 1, NFUNC IF (FCHAR(1:2) .EQ. CFUNC(IFUNC)) THEN GOTO ( 2, 3, 4), IFUNC ENDIF ENDDO RETURN C OPERATION ----------------------------------------------- 'PT' 2 CONTINUE IF (FCHAR(4:4) .EQ. 'U') THEN CALL ERRT(100,'UNKNOWN OPERATION: PT U',NE) RETURN ENDIF C GET NAME FOR EXISTING OR NEW IMAGE FILE 10 CALL FILERD(FILNAM,NLET,NULL,'OUTPUT',IRTFLG) IF (IRTFLG .EQ. -1) RETURN C MERGE FILNAM WITH DATEXC IF NECESARY IF (FILNAM(1:1) .NE. '_' .AND. INDEX(FILNAM,'@') .EQ. 0) THEN CALL FILCAN(FILTST,NLET,NULL,NULL,FILNAM,DATEXC,IER) IF (IRTFLG .NE. 0) RETURN ELSE FILTST = FILNAM ENDIF C FIND IF FILE EXISTS CALL INQUIREIF1(LUN1,FILTST,A0,640000,EX,ISOPEN,LUNOP, & INLNED,IMGNUM,IRTFLG) DISP = 'U' IF (EX) DISP = 'O' C OPEN IMAGE FILE IF (FCHAR(4:4) .EQ. '3') THEN IFORM = 3 NSLICE = 0 ELSE IFORM = 1 NSLICE = 1 ENDIF NSAM = 0 CALL OPFILEC(0,.FALSE.,FILNAM,LUN1,DISP,IFORM,NSAM,NROW,NSLICE, & MAXIM,'IMAGE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 10 IF (.NOT. EX) THEN C FILL THE OUTPUT IMAGE WITH ZEROS A0(1:NSAM) = 0.0 DO I = 1, NROW*NSLICE CALL WRTLIN(LUN1,A0,NSAM,I) ENDDO FMIN = 0.0 FMAX = 0.0 ELSE IF (IMAMI.NE.1) & CALL NORM3(LUN1,NSAM,NROW,NSLICE,FMAXD,FMIND,AVD) ENDIF C CREATE PATTERN CALL PTTERN(LUN1,NSAM,NROW,NSLICE,FMAX,FMIN) GOTO 9000 C OPERATION ------------------------------------------------- 'CI' C INPUT FILE (MEAN FILE) 3 CALL OPFILEC(0,.TRUE.,FILNAM,LUN1,'O',IFORM,NSAM1,NROW1,NSLIC1, & MAXIM,'AVERAGE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 IF (NSLIC1 .NE. 1) GOTO 9600 C SECOND INPUT FILE CONTAINING THE VARIANCE CALL OPFILEC(0,.TRUE.,FILNAM,LUN2,'O',IFORM,NSAM2,NROW2,NSLIC2, & MAXIM2,'VARIANCE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 IF (NSLIC2 .NE. 1) GOTO 9600 IF (NSAM1 .NE. NSAM2 .OR. NROW1 .NE. NROW2) GOTO 9200 C OUTPUT FILE OR FILE TO RECEIVE UPPER LIMIT OF CONFIDENCE INTERVAL NROW3 = NROW2 NSAM3 = NSAM2 NSAM = NSAM2 NROW = NROW2 IFORM = 1 CALL OPFILEC(0,.TRUE.,FILNAM,LUN3,'U',IFORM,NSAM3,NROW3,1, & MAXIM3,'UPPER LIMIT OUTPUT',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 C FILE TO RECEIVE LOWER LIMIT OF CONFIDENCE INTERVAL NROW4 = NROW2 NSAM4 = NSAM2 IFORM = 1 CALL OPFILEC(0,.TRUE.,FILNAM,LUN4,'U',IFORM,NSAM4,NROW4,1, & MAXIM,'LOWER LIMIT OUTPUT',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 C CONFIDENCE INTERVAL CALL RDPRMI(N,IDUM,NOT_USED,'NUMBER OF FILES ADDED') CALL RDPRM(ALPHA,NOT_USED,'ERROR PROBABILITY IN %') CALL CONF(N,ALPHA,LUN1,LUN2,LUN3,LUN4,NSAM,NROW) GOTO 9000 C OPERATION ------------------------------------------- 'EP' C SECOND INPUT FILE CONTAINING THE VARIANCE 4 IF(FCHAR(4:5).EQ.'TT') THEN C CALL OPFILEC(0,.TRUE.,FILNAM,LUN1,'O',IFORM,NSAM,NROW,NSLICE, & MAXIM,'FIRST AVERAGE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 CALL OPFILEC(0,.TRUE.,FILNAM,LUN2,'O',IFORM,NSAM,NROW,NSLICE, & MAXIM1,'FIRST VARIANCE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 CALL RDPRMI(N1,IDUMP,NOT_USED,'NUMBER OF IMAGES AVERAGED') CALL OPFILEC(0,.TRUE.,FILNAM,LUN3,'O',IFORM,NSAM,NROW,NSLICE, & MAXIM2,'SECOND AVERAGE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 CALL OPFILEC(0,.TRUE.,FILNAM,LUN4,'O',IFORM,NSAM,NROW,NSLICE, & MAXIM3,'SECOND VARIANCE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 CALL RDPRMI(N2,IDUMP,NOT_USED,'NUMBER OF IMAGES AVERAGED') CALL OPFILEC(0,.TRUE.,FILNAM,LUN5,'U',IFORM,NSAM,NROW,NSLICE, & MAXIM4,'SIGNIFICANCE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 IF (IFORM .LT. 1) THEN CALL ERRT(2,'T_TEST ',NE) GOTO 9000 ENDIF CALL TTEST(LUN1,LUN2,LUN3,LUN4,LUN5,N1,N2, & NSAM,NROW,NSLICE) CLOSE(LUN5) ELSEIF(FCHAR(4:5).EQ.'TM') THEN C CALL OPFILEC(0,.TRUE.,FILNAM,LUN1,'O',IFORM,NSAM,NROW,NSLICE, & MAXIM,'AVERAGE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 CALL OPFILEC(0,.TRUE.,FILNAM,LUN2,'O',IFORM,NSAM,NROW,NSLICE, & MAXIM1,'VARIANCE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 CALL RDPRMI(N1,IDUMP,NOT_USED,'NUMBER OF IMAGES AVERAGED') CALL RDPRM(UM,NOT_USED,'Tested population mean') CALL OPFILEC(0,.TRUE.,FILNAM,LUN5,'U',IFORM,NSAM,NROW,NSLICE, & MAXIM2,'SIGNIFICANCE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 IF (IFORM .LT. 1) THEN CALL ERRT(2,'T_TEST ',NE) GOTO 9000 ENDIF CALL TTEST1(LUN1,LUN2,LUN5,N1,UM,NSAM,NROW,NSLICE) CLOSE(LUN5) ELSEIF(FCHAR(4:5).EQ.'TP') THEN CALL TPAIRED ELSEIF(FCHAR(4:5).EQ.'MM') THEN CALL HOTM ELSEIF(FCHAR(4:5).EQ.'T2') THEN CALL HOTELLING ELSE CALL OPFILEC(0,.TRUE.,FILNAM,LUN2,'O',IFORM, & NSAM2,NROW2,NSLIC2, & MAXIM,'VARIANCE',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 IF (NSLIC2 .NE. 1) GOTO 9600 NROW3 = NROW2 NSAM3 = NSAM2 NSAM = NSAM2 NROW = NROW2 IFORM = 1 CALL OPFILEC(0,.TRUE.,FILNAM,LUN3,'U',IFORM,NSAM3,NROW3,1, & MAXIM2,'OUTPUT',.FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 C ERROR PROBABILITY CALL RDPRMI(N,IDUM,NOT_USED,'NUMBER OF FILES ADDED') CALL RDPRM(A,NOT_USED,'MAGNITUDE OF CONFIDENCE INTERVAL') CALL PROBER(A,N,LUN2,LUN3,NSAM,NROW,NZERO) IF (NZERO.GT.0) WRITE(NOUT,401) NZERO 401 FORMAT(' WARNING ! ',I10,' NEGATIVE VALUES ENCOUNTERED') ENDIF GOTO 9000 C INCONSISTENT PICTURE DIMENSIONS 9200 IER = 1 GOTO 9900 C OPERATION NOT USED ON VOLUMES 9600 IER = 42 9900 CALL ERRT(IER,'CONF1',NE) 9000 CLOSE(LUN1) CLOSE(LUN2) CLOSE(LUN3) CLOSE(LUN4) END