;
;
; SOURCE: spider/docs/techs/recon/newprogs/bestim.spi ArDean Leith
;
; PURPOSE: Limits particles from each reference direction
;
; NOTE: Continue with reconstruction following this limitation using:
; recon.spi
;
; I/O PARAMETERS AND FILES ARE SET HERE:
;
; -------------- Parameters -------------------------------------
[maxim] = 40 ; Max number of images / reference view to retain
; -------------- Input files -------------------------------------
[defgrps] = '../Alignment/sel_group' ; Defocus groups selection file
[imgperview] = 'df{***[grp]}/how_many' ; Listing of number of images for each view
[grp_sel_sel] = 'df{***[grp]}/ref_sel{***[view]}' ; Selection & CCC files for each view
; ----------------- Output files -------------------------------------
[sel_particles] = 'sel_particles_{***[grp]}' ; Output file (one for each defocus group)
; ; Contains the selected particle numbers
[sel_particles_prev] = '[sel_particles]_prev' ; Renamed existing selection file
[defgrps_lim] = 'sel_group_cclim' ; Defocus groups selection file
[defgrps_lim_sorted] = 'sel_group_cclim_sorted' ; Defocus groups selection file
[jnk_seltotal] = 'df{***[grp]}/jnk_seltotal' ; Temp file (DELETED)
; -------------- END BATCH HEADER -----------------------------------
MD
TR OFF ; Decrease results file output
MD
VB OFF ; Decrease results file output
VM
echo ' 'Choosing: {****[maxim]} particles from each reference direction ; echo ' '
DE
[defgrps_lim] ; Delete any existing defocus group sel. file
[totall] = 0
[totold] = 0
UD N [numgrps] ; Find number of defocus groups
[defgrps] ; Group selection file (input)
DO [numgrp] = 1,[numgrps] ; Loop over all defocus groups
UD [numgrp], [grp],[oldnum],[def] ; Get current group number and particles
[defgrps] ; Group selection doc file (input)
[totold] = [totold] + [oldnum] ; Total of old selected particles
VM ; Rename existing selection file
\mv [sel_particles].$DATEXT [sel_particles_prev].$DATEXT
UD N [views] ; Get number of views
[imgperview] ; Doc file (input)
[totgrp] = 0
[keyout] = 0 ; Output key counter
DO [view]=1,[views] ; Loop over all views for this group
UD N [images] ; Get number of images for this view
[grp_sel_sel] ; Listing file (input)
IF ([images] .LE. 0) CYCLE
IF ([images] .LE. [maxim]) THEN
DO [image]=1,[images]
UD IC [image],[part],[cc] ; Get particle number & CC
[grp_sel_sel] ; Listing file (input)
[keyout] = [keyout] + 1
SD [keyout],[part],[cc] ; Save particle number & CC
[sel_particles] ; Overall limited listing file (output)
ENDDO
[totgrp] = [totgrp] + [images]
UD ICE
[grp_sel_sel] ; Temp sorted listing file
ELSE
DE
[jnk_seltotal] ; Temp sorted listing file
DOC SORT
[grp_sel_sel] ; Particle listing file
[jnk_seltotal] ; Temp sorted listing file
(2) ; Column to be sorted by (CCC for this view)
Y ; Compress & renumber keys
DO [image]=1,[maxim]
UD IC [image],[part],[cc] ; Get particle number (input)
[jnk_seltotal] ; Temp sorted listing file
[keyout] = [keyout] + 1
SD [keyout],[part],[cc] ; Save particle number & CC
[sel_particles] ; Overall limited listing file (output)
ENDDO
[totgrp] = [totgrp] + [maxim]
UD ICE
[jnk_seltotal] ; Temp sorted listing file
ENDIF
ENDDO
SD E
[sel_particles] ; Limited listing file
DE
[jnk_seltotal] ; Temp listing working file
[totall] = [totall] + [totgrp]
VM
echo ' 'Group: {****[grp]} Saved: {******[totgrp]} Out of: {******[oldnum]}
SD [numgrp], [grp],[totgrp],[def] ; Save group number and particles & defocus
[defgrps_lim] ; Group selection doc file (output)
ENDDO
SD E
[defgrps_lim] ; Finished with this file
FR L
[tmp1]order_select_jnk1 ; Temp output file (deleted)
DOC SORT ; DOC file sorting
[defgrps_lim] ; Defocus selection doc file (input)
[tmp1] ; Sorted Temp file (output)
2 ; Sort column
Yes ; Renumber keys
DE ; Remove any existing output file
[defgrps_lim_sorted]
UD N, [nkey] ; Get number of keys in sorted
[tmp1] ; Temp file (input)
; Reverse sorting order of output doc file
DO [i]=1,[nkey] ; Loop over defocus groups
[grp]=[nkey]-[i]+1 ; Reverse order
; GROUP, PARTICLES, DEFOCUS
UD IC [grp], [grp], [part], [def]
[tmp1] ; Doc file (input)
SD [i], [grp], [part], [def]
[defgrps_lim_sorted] ; Reverse sorted doc file (output)
ENDDO
SD E
[defgrps_lim_sorted]
UD ICE ; Close doc files
[tmp1]
DE ; Destroy temp. doc files
[tmp1]
[percent] = 100.0 * [totall] / [totold]
VM
echo ' 'Overall Saved: {******[totall]} Out of: {******[totold]} = {***[percent]}%
VM
echo ' '
EN