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)