In [1]:
import numpy as np
import random
import os

twopi = 2.*np.pi
oneOver2Pi = 1./twopi

In [2]:
#
# Processing parameters
#
run = "xmelt_test"
in_dir = "/home/walterms/project/walterms/mcmd/nn/data/scratch/xmelt/raw/"
trn_dir = "/home/walterms/project/walterms/mcmd/nn/data/train/"
test_dir = "/home/walterms/project/walterms/mcmd/nn/data/test/"
unlabeled_dir = "/home/walterms/project/walterms/mcmd/nn/data/scratch/xmelt/processed/"

# For trnfnames, dict of run: label
# [iso, D, T, X, U, L]
# trnfnames = {run: 1}
unlblfnames = os.listdir(in_dir)

# nbl parameters
# Use -1 to mean all
nblSkip = 1 # Skip first few images
nblPerTrnFile = -1
nblTrn2Test = 0 # How many train blocks channelled to test
nblUnlbl = -1

In [13]:
unlblfnames = os.listdir(in_dir)

In [3]:
nblList = {}
for f in unlblfnames:
    nblList.update({f:20001})

In [4]:
for f in unlblfnames:
    nbl = 0
    print "processing " + f + " for unlabeled data"
    try:
        fin = open(in_dir+f, 'r')
    except:
        print "Couldn't open "+f
        continue
    fout = open(unlabeled_dir+f, 'w')
    
    # find width from file header
    width, height = 0., 0.
    l = fin.readline().split("|")
    for ll in l:
        if "boxEdge" in ll:
            width = float(ll.split()[1])
    height = width
    fin.seek(0)

    if width == 0.:
        # calculate edge length based on vertices of first block
        block = []
        for line in fin.readlines():
            if line == "\n": break
            if line[0].isalpha(): continue
            block.append(line)
        fin.seek(0)
        width, xheight = edgeLenCalc(block)

    fin.seek(0)
    fin.readline()
        
    normX, normY = 1./width, 1./height # normalize x and y
    # Initially, theta=[0,2pi]
    thNorm = oneOver2Pi

    
    # Set up the dict for initial thetas
    thdict = {}
    # For example, imagine th = [-1,1], we are concerned with cases where
    # +1 <-> -1, but not +0.1 <-> -0.1, but these look the same if we
    # are only looking at the sign. Let's say that if |dtheta| for a time step is 
    # greater than ~1, then it crossed the boundary
    # Let the dict just keep track of each theta
    for line in fin.readlines():
        if line == "\n": break
        spt = [float(x) for x in line.split()]
        th,ID = spt[4],int(spt[0])
        thdict.update({ID:th})
    fin.seek(0)
    fin.readline()

    thtrack = []
    trackID = 9
    thmax, thmin = [],[] #[ID,value,x,y]
    thmax_bl,thmin_bl = [0.,0.,0.,0.],[0.,0.,0.,0.]
    thmaxval,thminval = 0.,0.
    
    # adjust nblunlbl if needed
    if nblUnlbl == -1:
        nblUnlbl = nblList[f]
    for line in fin.readlines():
        if nbl < nblSkip:
            if line == "\n":
                nbl += 1
            continue
        if line == "\n":
            fout.write("\n")
            thmax.append(thmax_bl)
            thmin.append(thmin_bl)
            nbl+=1
            continue
        spt = [float(x) for x in line.split()]
        x,y,th,ID = spt[2],spt[3],spt[4],int(spt[0])
        x *= normX
        y *= normY
        
        if (np.fabs(th-thdict[ID]) > twopi/2.):
            if thdict[ID]>twopi/2.: th += twopi
            else: th -= twopi
        thdict[ID] = th
        
        th *= oneOver2Pi
        if ID == trackID: thtrack.append(th)
            
        if th > thmaxval: 
            thmaxval = th
            thmax_bl = [ID,th,x,y]
        if th < thminval: 
            thminval = th
            thmin_bl = [ID,th,x,y]
        
        fout.write('%f %f %f %f\n' % (x, y, th, ID))
    fout.close()
    fin.close()
print "Done"


processing xmelt_164 for unlabeled data
processing xmelt_189 for unlabeled data
processing xmelt_73 for unlabeled data
processing xmelt_25 for unlabeled data
processing xmelt_11 for unlabeled data
processing xmelt_5 for unlabeled data
processing xmelt_99 for unlabeled data
processing xmelt_144 for unlabeled data
processing xmelt_96 for unlabeled data
processing xmelt_199 for unlabeled data
processing xmelt_104 for unlabeled data
processing xmelt_153 for unlabeled data
processing xmelt_74 for unlabeled data
processing xmelt_198 for unlabeled data
processing xmelt_151 for unlabeled data
processing xmelt_9 for unlabeled data
processing xmelt_91 for unlabeled data
processing xmelt_143 for unlabeled data
processing xmelt_34 for unlabeled data
processing xmelt_131 for unlabeled data
processing xmelt_158 for unlabeled data
processing xmelt_14 for unlabeled data
processing xmelt_128 for unlabeled data
processing xmelt_113 for unlabeled data
processing xmelt_140 for unlabeled data
processing xmelt_129 for unlabeled data
processing xmelt_28 for unlabeled data
processing xmelt_116 for unlabeled data
processing xmelt_24 for unlabeled data
processing xmelt_120 for unlabeled data
processing xmelt_21 for unlabeled data
processing xmelt_179 for unlabeled data
processing xmelt_196 for unlabeled data
processing xmelt_183 for unlabeled data
processing xmelt_173 for unlabeled data
processing xmelt_33 for unlabeled data
processing xmelt_47 for unlabeled data
processing xmelt_117 for unlabeled data
processing xmelt_98 for unlabeled data
processing xmelt_2 for unlabeled data
processing xmelt_180 for unlabeled data
processing xmelt_79 for unlabeled data
processing xmelt_192 for unlabeled data
processing xmelt_108 for unlabeled data
processing xmelt_68 for unlabeled data
processing xmelt_175 for unlabeled data
processing xmelt_87 for unlabeled data
processing xmelt_48 for unlabeled data
processing xmelt_193 for unlabeled data
processing xmelt_26 for unlabeled data
processing xmelt_78 for unlabeled data
processing xmelt_171 for unlabeled data
processing xmelt_112 for unlabeled data
processing xmelt_133 for unlabeled data
processing xmelt_148 for unlabeled data
processing xmelt_118 for unlabeled data
processing xmelt_103 for unlabeled data
processing xmelt_174 for unlabeled data
processing xmelt_57 for unlabeled data
processing xmelt_122 for unlabeled data
processing xmelt_10 for unlabeled data
processing xmelt_114 for unlabeled data
processing xmelt_50 for unlabeled data
processing xmelt_119 for unlabeled data
processing xmelt_95 for unlabeled data
processing xmelt_132 for unlabeled data
processing xmelt_97 for unlabeled data
processing xmelt_185 for unlabeled data
processing xmelt_152 for unlabeled data
processing xmelt_141 for unlabeled data
processing xmelt_188 for unlabeled data
processing xmelt_82 for unlabeled data
processing xmelt_0 for unlabeled data
processing xmelt_135 for unlabeled data
processing xmelt_100 for unlabeled data
processing xmelt_126 for unlabeled data
processing xmelt_20 for unlabeled data
processing xmelt_176 for unlabeled data
processing xmelt_178 for unlabeled data
processing xmelt_146 for unlabeled data
processing xmelt_77 for unlabeled data
processing xmelt_190 for unlabeled data
processing xmelt_30 for unlabeled data
processing xmelt_177 for unlabeled data
processing xmelt_4 for unlabeled data
processing xmelt_89 for unlabeled data
processing xmelt_155 for unlabeled data
processing xmelt_51 for unlabeled data
processing xmelt_165 for unlabeled data
processing xmelt_67 for unlabeled data
processing xmelt_37 for unlabeled data
processing xmelt_42 for unlabeled data
processing xmelt_115 for unlabeled data
processing xmelt_149 for unlabeled data
processing xmelt_111 for unlabeled data
processing xmelt_38 for unlabeled data
processing xmelt_147 for unlabeled data
processing xmelt_55 for unlabeled data
processing xmelt_64 for unlabeled data
processing xmelt_163 for unlabeled data
processing xmelt_161 for unlabeled data
processing xmelt_125 for unlabeled data
processing xmelt_8 for unlabeled data
processing xmelt_23 for unlabeled data
processing xmelt_85 for unlabeled data
processing xmelt_150 for unlabeled data
processing xmelt_61 for unlabeled data
processing xmelt_90 for unlabeled data
processing xmelt_63 for unlabeled data
processing xmelt_45 for unlabeled data
processing xmelt_167 for unlabeled data
processing xmelt_88 for unlabeled data
processing xmelt_36 for unlabeled data
processing xmelt_22 for unlabeled data
processing xmelt_187 for unlabeled data
processing xmelt_70 for unlabeled data
processing xmelt_test for unlabeled data
processing xmelt_86 for unlabeled data
processing xmelt_54 for unlabeled data
processing xmelt_145 for unlabeled data
processing xmelt_94 for unlabeled data
processing xmelt_56 for unlabeled data
processing xmelt_105 for unlabeled data
processing xmelt_93 for unlabeled data
processing xmelt_19 for unlabeled data
processing xmelt_109 for unlabeled data
processing xmelt_75 for unlabeled data
processing xmelt_182 for unlabeled data
processing xmelt_166 for unlabeled data
processing xmelt_60 for unlabeled data
processing xmelt_41 for unlabeled data
processing xmelt_195 for unlabeled data
processing xmelt_191 for unlabeled data
processing xmelt_124 for unlabeled data
processing xmelt_169 for unlabeled data
processing xmelt_138 for unlabeled data
processing xmelt_44 for unlabeled data
processing xmelt_29 for unlabeled data
processing xmelt_139 for unlabeled data
processing xmelt_52 for unlabeled data
processing xmelt_162 for unlabeled data
processing xmelt_53 for unlabeled data
processing xmelt_76 for unlabeled data
processing xmelt_35 for unlabeled data
processing xmelt_127 for unlabeled data
processing xmelt_184 for unlabeled data
processing xmelt_49 for unlabeled data
processing xmelt_142 for unlabeled data
processing xmelt_46 for unlabeled data
processing xmelt_134 for unlabeled data
processing xmelt_83 for unlabeled data
processing xmelt_130 for unlabeled data
processing xmelt_62 for unlabeled data
processing xmelt_66 for unlabeled data
processing xmelt_107 for unlabeled data
processing xmelt_31 for unlabeled data
processing xmelt_154 for unlabeled data
processing xmelt_106 for unlabeled data
processing xmelt_101 for unlabeled data
processing logs for unlabeled data
Couldn't open logs
processing xmelt_58 for unlabeled data
processing xmelt_32 for unlabeled data
processing xmelt_168 for unlabeled data
processing xmelt_121 for unlabeled data
processing xmelt_194 for unlabeled data
processing xmelt_156 for unlabeled data
processing xmelt_159 for unlabeled data
processing xmelt_92 for unlabeled data
processing xmelt_1 for unlabeled data
processing xmelt_197 for unlabeled data
processing xmelt_102 for unlabeled data
processing xmelt_27 for unlabeled data
processing xmelt_157 for unlabeled data
processing xmelt_13 for unlabeled data
processing xmelt_59 for unlabeled data
processing xmelt_172 for unlabeled data
processing xmelt_160 for unlabeled data
processing xmelt_16 for unlabeled data
processing xmelt_170 for unlabeled data
processing xmelt_6 for unlabeled data
processing xmelt_15 for unlabeled data
processing xmelt_69 for unlabeled data
processing xmelt_72 for unlabeled data
processing xmelt_80 for unlabeled data
processing xmelt_136 for unlabeled data
processing xmelt_40 for unlabeled data
processing xmelt_71 for unlabeled data
processing xmelt_3 for unlabeled data
processing xmelt_81 for unlabeled data
processing xmelt_84 for unlabeled data
processing xmelt_43 for unlabeled data
processing xmelt_12 for unlabeled data
processing xmelt_181 for unlabeled data
processing xmelt_186 for unlabeled data
processing xmelt_7 for unlabeled data
processing xmelt_110 for unlabeled data
processing xmelt_137 for unlabeled data
processing xmelt_39 for unlabeled data
processing xmelt_65 for unlabeled data
processing xmelt_123 for unlabeled data
processing xmelt_18 for unlabeled data
processing xmelt_17 for unlabeled data
Done

In [19]:
import matplotlib.pyplot as plt
%matplotlib inline

In [34]:
thing = list(thmax)
ys = np.zeros((len(thing),4))
for i in range(len(thing)):
    ys[i,0] = thing[i][0]
    ys[i,1] = thing[i][1]
    ys[i,2] = thing[i][2]
    ys[i,3] = thing[i][3]

In [28]:
len(thmax)


Out[28]:
10000

In [38]:
plt.plot(ys[:,3],'.')


Out[38]:
[<matplotlib.lines.Line2D at 0x2ac810eda550>]