C C ++******************************************************************** C C ATPK 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 ATPK * C C SUPPORT_ROUTINE C C23456789012345678901234567890123456789012345678901234567890123456789012 C*********************************************************************** SUBROUTINE ATPK(LUN1,NSAM,NROW,NSLICE) INCLUDE 'CMBLOCK.INC' REAL, ALLOCATABLE, DIMENSION(:,:) :: XYZ INCLUDE 'CMLIMIT.INC' DIMENSION DLIST(4) DATA NDOC/55/ CALL RDPRMI(NGH,NDUM,NOT_USED, & 'NEIGHBOURHOOD PIXELS FOR SEARCH') IF (NGH .LT. 3) THEN CALL ERRT(31,'PKDS',NE) RETURN ENDIF NQ = NGH/2 CALL RDPRM(THRSH,NOT_USED,'THRESHOLD FOR PEAKS') CALL RDPRMI(NNSAM,NNROW,NOT_USED,'MICROGRAPH EDGE DIMENSION') WRITE(NOUT,*)' ' WRITE(NOUT,*) ' ****PEAKS CLOSER TO THE EDGE OF THE ', & ' MICROGRAPH ARE EXCLUDED****' WRITE(NOUT,*)' ' C MAXIMUM NUMBER OF POSSIBLE PEAKS ITMP = (NSAM/NGH +1)*(NROW/NGH +1) ALLOCATE (XYZ(3,ITMP), STAT=IRTFLG) IF (IRTFLG.NE.0) THEN CALL ERRT(46,'AT PK, XYZ',IER) RETURN ENDIF CALL PKD(LUN1,NSAM,NROW,NQ,XYZ,itmp,THRSH,L, & NNSAM,NNROW) NLIST = 2 DLIST(1) = -1 DLIST(2) = L CALL SAVD(NDOC,DLIST,NLIST,IRTFLG) NLIST = 4 DO I1=1,L DLIST(1) = I1 DLIST(2) = XYZ(1,I1) DLIST(3) = XYZ(2,I1) DLIST(4) = XYZ(3,I1) CALL SAVD(NDOC,DLIST,NLIST,IRTFLG) ENDDO CALL SAVDC CLOSE(NDOC) DEALLOCATE(XYZ) END