#!/usr/bin/perl -w use strict; use warnings; my $num_args=$#ARGV+1; if($num_args<2) { print "Usage: doc_create.pl "; exit; } chomp(my $part_folder=$ARGV[0]); chomp(my $part_list=$ARGV[1]); open PLIST,"<$part_list" || die "Can't open file: $!"; my @part_id=; close PLIST; foreach (@part_id) { chomp($_); } #print "@part_id"; my $part_id=join(" ",@part_id); print "$part_id\n"; my @part_list=split(" ",$part_id); #foreach (@part_list) { # print "$_\n"; #} my $pattern=$part_folder."_???.spi"; my $particles=`ls $part_folder/$pattern`; #print "$particles\n"; my @particles=split(/\n/,$particles); my $doublet=1; my $i=0; open OFDOC,">images.doc" || die "Can't open file: $!"; open OFSEL,">images.sel" || die "Can't open file: $!"; print OFDOC " ; Headerinfo columns: rot (1), tilt (2), psi (3), Xoff (4), Yoff (5), Zoff (6), Ref (7), Wedge (8), Pmax/sumP (9), LL (10)\n"; foreach (@particles) { chomp($_); my $part_id=substr($_,-7,-4); #print "$part_id\n"; if ($i==0) { open ODOC,">images_$doublet.doc" || die "Can't open file: $!"; open OSEL,">images_$doublet.sel" || die "Can't open file: $!"; print ODOC " ; Headerinfo columns: rot (1), tilt (2), psi (3), Xoff (4), Yoff (5), Zoff (6), Ref (7), Wedge (8), Pmax/sumP (9), LL (10)\n"; $i++; goto CHECK; } else { open ODOC,">>images_$doublet.doc" || die "Can't open file: $!"; open OSEL,">>images_$doublet.sel" || die "Can't open file: $!"; CHECK: my $x=2*$doublet-1; my $y=2*$doublet+1; if ($doublet<9) { my $start_id=$part_list[$x]; my $end_id=$part_list[$y]; if ($part_id>=$start_id && $part_id<$end_id) { print OSEL "../$_ $doublet\n"; print ODOC " ; ../$_\n"; printf ODOC " %3d 10 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 %.5f 1.00000 0.00000 0.00000\n",$part_id,$doublet; print OFSEL "../$_ $doublet\n"; print OFDOC " ; ../$_\n"; printf OFDOC " %3d 10 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 %.5f 1.00000 0.00000 0.00000\n",$part_id,$doublet; } else { $doublet++; $i=0; close ODOC; close OSEL; } } else { my $start_id=$part_list[$x]; if ($part_id>=$start_id) { print OSEL "../$_ $doublet\n"; print ODOC " ; ../$_\n"; printf ODOC " %3d 10 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 %.5f 1.00000 0.00000 0.00000\n",$part_id,$doublet; print OFSEL "../$_ $doublet\n"; print OFDOC " ; ../$_\n"; printf OFDOC " %3d 10 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 %.5f 1.00000 0.00000 0.00000\n",$part_id,$doublet; } else { $doublet++; $i=0; close ODOC; close OSEL; } } } } close OFDOC; close OFSEL;