import glob, os import pyworkflow.em.packages.relion as relion import pyworkflow.em.metadata as md import datetime initTime = datetime.datetime.now() fnStar='tv1_relion_data.star' #fnStar='shiny_200.star' emxOutfile = open("10005.emx", "w") micrographString=""" %4.2f %4.2f %4.1f %2.1f """ particleString=""" %0.1f %0.1f """ emxOutfile.write(""" ' """) oldMic="kk" #read relion star file mdStar = md.MetaData(fnStar) for imgRow in md.iterRows(mdStar): micName = imgRow.getValue(md.RLN_MICROGRAPH_NAME) if oldMic == micName: pass else: oldMic = micName voltage = imgRow.getValue(md.RLN_CTF_VOLTAGE) cs = imgRow.getValue(md.RLN_CTF_CS) #cameraPixelSize = imgRow.getValue(md.RLN_CTF_DETECTOR_PIXEL_SIZE) #magnification = imgRow.getValue(md.RLN_CTF_MAGNIFICATION) sampling = 1.22 #cameraPixelSize * 10000 / magnification emxOutfile.write(micrographString%(micName,sampling,sampling,voltage,cs)) oldMic="kk" index = 1 for imgRow in md.iterRows(mdStar): partNameAux = imgRow.getValue(md.RLN_IMAGE_NAME) partNameAux= partNameAux.split('@') print partNameAux partName = partNameAux[1] print partName index = int(partNameAux[0]) print index micName = imgRow.getValue(md.RLN_MICROGRAPH_NAME) print micName x = imgRow.getValue(md.RLN_IMAGE_COORD_X) print x y = imgRow.getValue(md.RLN_IMAGE_COORD_Y) print y #if oldMic == micName: # index += 1 #else: # oldMic = micName # index=1 print(partName,index,x,y,micName) emxOutfile.write(particleString%(partName,index,x,y,micName)) emxOutfile.write("") b = datetime.datetime.now() print("Time (h,m,s)",b-initTime)