C++********************************************************************* C C COPY1.F REMOVED FROM UTIL2 JUL 96 ArDean Leith C ADDED NT INTERFACES OCT 98 ArDean Leith C REMOVED 'CP FROM LUM' FEB 99 ArDean Leith C ADDED 'CP FROM XP' OCT 00 Pawel Penczek C 'CP TO NT' ON NT JUN 01 ArDean Leith C 'CP FROM SG' ON NT SEP 01 ArDean Leith C 'CP TO/FROM CCP4' FEB 02 ArDean Leith C 'CP FROM EMI' FEB 02 ArDean Leith C INDEXED STACK JAN 02 ArDean Leith C 'CP TO OPEND' FEB 03 ArDean Leith C 'CP TO' NORM JUL 03 ArDean Leith C 'CP FIX' REMOVED OCT 03 ArDean Leith C MPI OCT 03 Chao Yang C 'CP TO SF3' GONE DEC 04 ArDean Leith C 'CP FROM NIK' JAN 05 ArDean Leith C C ********************************************************************** C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM. AUTHOR: J.FRANK * C=* Copyright (C) 1985-2005 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 COPY1(MAXDIM) C C PARAMETERS: MAXDIM MAX LENGTH FOR UNLABELED COMMON C C SUPPORT_ROUTINE C C23456789012345678901234567890123456789012345678901234567890123456789012 C--********************************************************************* SUBROUTINE COPY1(MAXDIM) INCLUDE 'CMBLOCK.INC' INCLUDE 'CMLIMIT.INC' CHARACTER(LEN=MAXNAM) :: FILOLD,FILNEW COMMON /COMMUN/ FILOLD,FILNEW PARAMETER (NFROM=17) PARAMETER (NTO=14) CHARACTER *2 FROM(NFROM), TO(NTO) CHARACTER(LEN=1) :: NULL LOGICAL :: INDXD DATA FROM/'AS','MR','PD','RA','NI', & 'SH','TE','VA','LU','EM', & 'SC','TR','PE','NT','XP', #ifdef SP_NT & 'SG','CC'/ #else & '##','CC'/ #endif DATA TO/'AS','BR','MR','PO','RA', & 'TA','TI','VA','VV','XP', #ifdef SP_NT & 'SG','UN','CC','OP'/ #else & 'SG','NT','CC','OP'/ #endif #ifdef USE_MPI include 'mpif.h' INTEGER MYPID, COMM, IERR COMM = MPI_COMM_WORLD CALL MPI_COMM_RANK(COMM, MYPID, IERR) #else MYPID = -1 #endif NULL = CHAR(0) LUN1 = 14 LUN2 = 15 C TEST THE FUNC FIRST IF ((FCHAR(4:4) .EQ. 'I') .OR. & (FCHAR(4:4) .EQ. ' ') .OR. & (FCHAR(4:8) .EQ. 'TO OP')) THEN C STANDARD COPY WITH FLIPPED ENDEDNESS C STANDARD COPY OR STANDARD COPY TO INDEXED STACK C OPEN EXISTING INPUT FILE, CAN BE A BARE STACK NSTACKIN = 1 CALL OPFILEC(0,.TRUE.,FILOLD,LUN1,'O',ITYPE, & NSAM,NROW,NSLICE,NSTACKIN,'INPUT',.TRUE.,IRTFLG) IF (IRTFLG .NE. 0) RETURN IFLIPOUT = 0 IF (FCHAR(4:8) .EQ. 'TO OP') THEN C STANDARD COPY WITH FLIPPED ENDEDNESS CALL LUNGETFLIP(LUN1,IFLIPIN,IRTFLG) IF (IFLIPIN .NE. 1) IFLIPOUT = 1 ENDIF INDXD = (FCHAR(4:4) .EQ. 'I') CALL COPYD(LUN1,LUN2,INDXD,NSAM,NROW,NSLICE, & NSTACKIN,ITYPE,IFLIPOUT) GOTO 9000 ELSEIF (FCHAR(4:5) .EQ. 'TO') THEN C OPERATION ----------- COPY TO ----------------------- 'CP TO' IC = 7 DO IFUNC = 1, NTO IF (FCHAR(IC:IC+1) .EQ. TO(IFUNC)) THEN C COPY SPIDER FORMAT TO FOREIGN FORMAT IF (FCHAR(IC:IC+2) .NE. 'SF3' .AND. & FCHAR(IC:IC+2) .NE. 'VAX') THEN C OPEN INPUT FILE, WHOLE STACK NOT ALLOWED MAXIM = 0 CALL OPFILEC(0,.TRUE.,FILOLD,LUN1,'O',ITYPE, & NSAM1,NROW1,NSLICE1,MAXIM,'SPIDER INPUT', & .FALSE.,IRTFLG) IF (IRTFLG .NE. 0) GOTO 9000 IF (IMAMI .NE. 1) & CALL NORM3(LUN1,NSAM1,NROW1,NSLICE1,FMAX,FMIN,AV) ENDIF GOTO (20,21,22,23,24,26,27,28,29,30,31,32,33)IFUNC ENDIF ENDDO C NO SUCH COPY FUNCTION CALL ERRT(101,'NO SUCH CP OPERATION, CHECK MENU',IDUM) RETURN ELSEIF (FCHAR(4:7) .EQ. 'FROM') THEN C OPERATION ----------- COPY FROM ------------------- 'CP FROM' C COPY FROM FOREIGN FORMAT TO SPIDER IC = 9 DO IFUNC = 1, NFROM IF (FCHAR(IC:IC+1) .EQ. FROM(IFUNC)) THEN GOTO (50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66) & IFUNC ENDIF ENDDO ENDIF CALL ERRT(101,'NO SUCH CP OPERATION, CHECK MENU',NERRD) RETURN C --------------- CP TO OPERATIONS ----------------------------- C COPY SPIDER IMAGE FILE INTO EDITABLE IMAGE ------ 'CP TO ASCII' 20 CALL COPYE(LUN1,LUN2,NSAM1,NROW1,NSLICE1) GOTO 9000 C COPY 3D SPIDER FILE TO BRIX FORMAT-----------------'CP TO BRIX' 21 CALL COPYBRIX(LUN1,LUN2,NSAM1,NROW1,NSLICE1) GOTO 9000 C MRC'S FORMAT FOR TRANSFERING TO CAMBRIDGE --------- 'CP TO MRC' C COPY FROM SPIDER IMAGE FILE INTO MRC FORMAT 22 CALL COPYMRC(LUN1,LUN2,NSAM1,NROW1,NSLICE1) GOTO 9000 C SPIDER IMAGE TO POSTSCRIPT IMAGE (8 BIT) --------- 'CP TO POST' 23 CALL COPYPOS(FILOLD,LUN1,LUN2,NSAM1, NROW1, NSLICE1) GOTO 9000 C COPY SPIDER IMAGE FILE INTO RAW IMAGE FILE -------- 'CP TO RAW' 24 CALL COPYU(LUN1,LUN2,NSAM1,NROW1,NSLICE1) GOTO 9000 C TO TARGA FORMAT USING SGI ---------------------- 'CP TO TARGA' 26 CALL ERRT(101,'OPERATION NO LONGER SUPPORTED',IDUM) GOTO 9000 C CONVERT FROM SPIDER FORMAT TO TIFF FORMAT ------- 'CP TO TIFF' 27 CALL SPDTOTIFF(LUN1,LUN2,NSAM1,NROW1,NSLICE1,IRTFLG) GOTO 9000 C COPY UNIX SPIDER FILE TO VAX SPIDER ------------- 'CP TO VAX' 28 CALL ERRT(101,'OPERATION NO LONGER SUPPORTED',IDUM) C CALL COPYVAX(LUN1,LUN2,LUN3) GOTO 9000 C COPY UNIX IMAGE FILE INTO VOXEL-VIEW FILES --------- 'CP TO VV' 29 CALL UNIXTOVV(LUN1,LUN2,0,255,NSAM1,NROW1,NSLICE1,IRTFLG) GOTO 9000 C COPY SPIDER IMAGE FILE INTO XPLOR FILES -----------'CP TO XPLOR' 30 CALL COPYTOXPLOR(LUN1,FILOLD,LUN2,NSAM1,NROW1,NSLICE1) GOTO 9000 C COPY UNIX IMAGE FILE INTO SGI FILES --------------- 'CP TO SGI' 31 CALL SPITOSGI(LUN1,LUN2,NSAM1,NROW1,NSLICE1,0,IRTFLG) GOTO 9000 C COPY UNIX IMAGE FILE INTO NT FILES ----------------- 'CP TO NT' 32 CALL ERRT(101,'USE OPERATION: ',IDUM) GOTO 9000 C COPY FROM SPIDER IMAGE FILE INTO CCP4 FORMAT ----- 'CP TO CCP4' 33 CALL COPYCCP4(LUN1,LUN2,NSAM1,NROW1,NSLICE1) GOTO 9000 C --------------- CP FROM OPERATIONS ---------------------------- C EDITABLE IMAGE FILE TO SPIDER IMAGE FILE ------ 'CP FROM ASCII' 50 CALL COPYF(LUN1,LUN2) GOTO 9000 C MRC'S FORMAT TO SPIDER -------------------------- 'CP FROM MRC' C COPY FROM MRC FORMAT INTO SPIDER IMAGE FILE 51 CALL COPYMRC(LUN1,LUN2,NSAM,NROW,NSLICE) GOTO 9000 C COPY A PDB FILE INTO SPIDER VOLUME FILE --------- 'CP FROM PDB' 52 CALL READPDB GOTO 9000 C COPY RAW IMAGE FILE INTO SPIDER IMAGE FILE ------ 'CP FROM RAW' 53 CALL RAWTOSPIDER(LUN1,LUN2,IRTFLG) GOTO 9000 C COPY NIKON TIFF IMAGE FILE INTO SPIDER IMAGE FILE - 'CP FROM NIK' 54 CALL COPYFROMNIK(LUN1,LUN2,IRTFLG) GOTO 9000 C SHORT HEADER FILE TO REGULAR HEADER FILE ------ 'CP FROM SHORT' 55 CALL ERRT(101,'OPERATION NO LONGER SUPPORTED',IDUM) GOTO 9000 C COPY FROM TERMINAL INTO SPIDER IMAGE FILE ------- 'CPFROM TERM' 56 CALL COPYR(LUN2) GOTO 9000 C COPY VAX SPIDER TO UNIX SPIDER ------------------ 'CP FROM VAX' 57 FILOLD = NULL FILNEW = NULL CALL VAXTOUNIX(FILOLD,FILNEW,LUN1,LUN2,IRTFLG) GOTO 9000 C --------------------------------- 'CP FROM LUM' C COPY TWO ILUMINATION LEVEL IMAGES INTO A MERGED THIRD IMAGE 58 CALL ERRT(101,'OPERATION NO LONGER SUPPORTED',IDUM) GOTO 9000 C EMI FORMAT TO SPIDER ---------------------------- 'CP FROM EMI' 59 CALL COPYEMI(LUN1,LUN2) GOTO 9000 C EIKONIX SCAN PROGRAMS (REMOVED 1994) 60 CALL ERRT(101,'EIKONIX SUBROUTINES NO LONGER SUPPORTED',NE) GOTO 9000 C COPY FROM MICRO D TAPE FORMAT TO SPIDER --------- 'CP FROM TR' 61 CALL ERRT(101,'OPERATION NO LONGER SUPPORTED',IDUM) GOTO 9000 C COPY FROM MICRO D ONDISK FORMAT TO SPIDER ------- 'CP FROM PE' 62 CALL COPYPDS(LUN1,LUN2) GOTO 9000 C COPY FROM NT FORMAT TO SPIDER -------------------- 'CP FROM NT' 63 CALL ERRT(101,'USE OPERATION: ',IDUM) GOTO 9000 C COPY FROM XPLO FORMAT TO SPIDER ------------------ 'CP FROM XP' 64 CALL COPYFROMXPLO(LUN1,LUN2,MAXDIM) GOTO 9000 C COPY FROM TO SGI BYTE FORMAT -------------------- 'CP FROM SG' 65 CALL ERRT(101,'USE OPERATION: ',IDUM) GOTO 9000 C CCP4 FORMAT TO SPIDER -------------------------- 'CP FROM CC' 66 MODE = -1 CALL COPYCCP4(LUN1,LUN2,NSAM,NROW,NSLICE) GOTO 9000 9000 CLOSE(LUN1) CLOSE(LUN2) RETURN END