python script to take sample from SwissFEL lst output
This commit is contained in:
73
clen_tools/sample_crystfel-ls.py
Normal file
73
clen_tools/sample_crystfel-ls.py
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# author J.Beale
|
||||
|
||||
"""
|
||||
# aim
|
||||
input a list file made by the SwissFEL daq and a sample number get out a random selection
|
||||
of files of that number
|
||||
|
||||
# usage
|
||||
python sample_crystfel-ls.py -l <path-to-list-file> -s sample
|
||||
|
||||
# output
|
||||
.lst file containing the required number of random image links - with naming convention
|
||||
<input-lst-name>_<sample-size>.lst
|
||||
"""
|
||||
|
||||
# modules
|
||||
import pandas as pd
|
||||
import os
|
||||
import argparse
|
||||
|
||||
def h5_sample( lst, sample ):
|
||||
|
||||
# create sample of images from run
|
||||
# read h5.lst - note - removes // from image column
|
||||
print( "reading SwissFEL ls file" )
|
||||
# scrub file name
|
||||
lst_name = os.path.basename( lst )
|
||||
|
||||
cols = [ "h5", "image" ]
|
||||
sample_df = pd.read_csv( lst, sep="\s//", engine="python", names=cols )
|
||||
print( "done" )
|
||||
|
||||
print( "taking {0} image sample".format( sample ) )
|
||||
# take defined sample
|
||||
sample_df = sample_df.sample( sample )
|
||||
|
||||
# sort list
|
||||
sample_df = sample_df.sort_index()
|
||||
|
||||
# re-add // to image columm
|
||||
sample_df[ "image" ] = "//" + sample_df.image.astype( str )
|
||||
print( "done" )
|
||||
|
||||
# write sample to file
|
||||
print( "writing to file" )
|
||||
sample_file = "{0}_{1}.lst".format( lst_name, sample )
|
||||
sample_df.to_csv( sample_file, sep=" ", index=False, header=False )
|
||||
print( "done" )
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"-l",
|
||||
"--list",
|
||||
help="give the path to SwissFEL daq list file",
|
||||
type=str
|
||||
)
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
"--sample",
|
||||
help="number of random sample images to select",
|
||||
type=int
|
||||
)
|
||||
args = parser.parse_args()
|
||||
# run geom converter
|
||||
h5_sample( args.list, args.sample )
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user