In [1]:


In [2]:
import csv 
import numpy as np
import mmap 
import struct

In [3]:
results = []
with open("0002.asc") as f: 
    for line in f: 
        results.append(int(line.split()[2]))
data = np.asanyarray(results)

In [127]:
INT_TYPES = ('i', 'I', 'l', 'L', 'q', 'Q')
FLOAT_TYPES = ('f', 'd')


TOSEARCH = 1.4
BASEFILE = 'data/2dc0001.'

for m in map(lambda x: 10**x, range(-10, 10)):
    
    to_search = m*TOSEARCH
    
    for ext in ('MD1', '4M2'): 
        name = BASEFILE + ext     
        with open(name, 'r+b') as f:
            raw = mmap.mmap(f.fileno(), 0)
            
            types = FLOAT_TYPES
            
            if isinstance(to_search, int):
                types =+ INT_TYPES
            
            for t in types:
                for d in ('<'):
                    if t in INT_TYPES: 
                        packed = struct.pack(d+t, int(to_search))
                    else: 
                        packed = struct.pack(d+t, float(to_search))
                    cont =  packed in raw[:]
                    if cont :
                        print to_search, name, d+t, raw[:].index(packed)

In [97]:
with open('2dc0002.4M2', 'r+b') as f:
    
    raw = mmap.mmap(f.fileno(), 0)
    for t in ('i', 'I', 'l', 'L', 'q', 'Q'):
        for d in ('<', '>'):
            #print(d+t)
            packed = struct.pack(d+t, 18.8)
            cont =  packed in raw[:]
            if cont :
                print d+t
                print raw[:].index(packed)

In [4]:


In [47]:
packed  = struct.pack( '<l', 3106)
packed in raw


Out[47]:
False

In [33]:
packed in raw


Out[33]:
False

In [20]:
with open('2dc0001.MD1', 'r+b') as f:
    
    raw = mmap.mmap(f.fileno(), 0)
    print 'oment' in raw


False

In [31]:
data


Out[31]:
array([3106, 3406, 3388, 3271, 2837, 2259, 1772, 1216,  863,  563,  366,
        195,  124,   66,   35,   18,   11,   17,   10,    9,    9,    9,
         13,    7,    7,    8,    3,    5,    4,    5,    5,    3,    3,
          3,    6,    2,    3,    6,    2,    1,    0,    1,    1,    3,
          0,    1,    1,    2,    1,    1,    2,    1,    1,    1,    0,
          0,    2,    2,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
          0,    0,    0])

In [21]:
with open('2dc0001.MD1', 'r+b') as f:
    
    raw = mmap.mmap(f.fileno(), 0)
    unpacked = struct.unpack_from('<256L', raw[:], 2058)

In [56]:
with open('2dc0002.MD1', 'r+b') as f:
    
    raw = mmap.mmap(f.fileno(), 0)
    unpacked = struct.unpack_from('< 2058x 256L 1787x 10s 194x 8s 60x 8s', raw[:])

In [53]:
raw[:].index('19:10:58')


Out[53]:
5141

In [54]:
5141-2058-256*4-1787-10-194-8


Out[54]:
60

In [55]:
unpacked[-2:]


Out[55]:
('18:52:51', '19:10:58')

In [ ]: