コード例 #1
0
 def __init__(self):
     config = read_config()
     self._path = os.path.abspath(config.get('directories', 'sessions'))
     self._recorder = None
     self._display_index = 0  # Text to show in root menu
     self._fan = Fan()
     self.create_menu()
コード例 #2
0
ファイル: plotter.py プロジェクト: Paulxia/DreamCatcher
def plot_all(session_dir, image_dir, timestamp):
    print "Plotting timestamp", timestamp
    if os.path.isdir(os.path.join(image_dir, timestamp)) == False:
        os.makedirs(os.path.join(image_dir, timestamp))
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    q = Queue()
    workers = []
    for i in range(8):
        w = QueueWorker(process_timestamp, queue = q)
        workers.append(w)
        w.start()
    conf = read_config()
    power_min = conf.getfloat('recorder', 'power_min')
    power_max = conf.getfloat('recorder', 'power_max')
    with open(datafilename, "r") as f:
        for line in f:
            values = line.split(";")
            power = float(values[1])
            level = float(values[2])
            if level > 0 or power < power_min or power > power_max:
                print "Ignoring ", values[0], "Power:", power
                continue
            outputfilename = os.path.join(image_dir, '{0}.png'.format(values[0]))
            if os.path.isfile(outputfilename):
                print "Ignoring ", values[0]
            else:
                logger.info("Plotting timestamp %s", values[0])
                q.put((session_dir, image_dir, timestamp, values[0]))
    
    print "Finished plotting timestamp", timestamp       
    for i in range(8):
        q.put(None)
                
    while not q.empty():
        sleep(0.01)
コード例 #3
0
ファイル: teardown.py プロジェクト: SwatiJP29/aws-s3-athena
def main():
    config = helper.read_config('.config.yml')
    s3_client = boto3.resource(service_name='s3',
                               aws_access_key_id=config['AWS_ACCESS'],
                               aws_secret_access_key=config['AWS_SECRET'])

    try:
        # Connect to bucket
        # http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.objects
        bucket = s3_client.Bucket(config['S3_SOURCE_BUCKET'])

        # Access bucket and delete contents
        bucket.objects.all().delete()

        # Ensure that the objects have been deleted
        assert len(list(bucket.objects.all())) == 0

        # Delete the bucket
        bucket.delete()

    except ClientError as e:
        # Don't throw error if the bucke is already deleted
        if e.response['Error']['Code'] != 'NoSuchBucket':
            print("Unexpected error: %s" % e)
    finally:
        # Ensure that the bucket isn't there in either case
        # http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.list_buckets
        for current_bucket in s3_client.buckets.all():
            assert current_bucket.name != config['S3_SOURCE_BUCKET']
コード例 #4
0
ファイル: __main__.py プロジェクト: SirHegel77/DreamCatcher
def dream_summary(timestamp):
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    filename = os.path.join(session_dir, timestamp + '.data')
    NOT_IN_BED = 0
    AWAKE = 1
    LIGHT_SLEEP = 2
    DEEP_SLEEP = 3
    result = [{'Name': 'Not in bed', 'Total':0, 'Percent': 0.0, 'Transitions': 0},
              {'Name': 'Awake', 'Total':0, 'Percent': 0.0, 'Transitions': 0},
              {'Name': 'Light sleep', 'Total':0, 'Percent': 0.0, 'Transitions': 0},
              {'Name': 'Deep sleep', 'Total':0, 'Percent': 0.0, 'Transitions': 0}]

    totaltime = 0
    previous_time = long(timestamp)
    previous_state = 0
    with open(filename, 'r') as f:
        for line in f:
            fields = line.split(';')
            timestamp = long(fields[0])
            state = int(fields[6])
            diff = timestamp - previous_time
            
            current_state = result[state]
            current_state['Total']+=diff
            if state <> previous_state:
                current_state['Transitions']+=1

            totaltime += diff
            previous_time = timestamp
            previous_state = state

    for state in result:
        state['Percent'] = float(state['Total']) / float(totaltime) * 100.0
    return result
コード例 #5
0
ファイル: __main__.py プロジェクト: Paulxia/DreamCatcher
def main(argv):
    def help():
        print "Usage: plotter -t <timestamp>"
    timestamp = ''
    try:
        opts, args = getopt.getopt(argv, "ht:", ["timestamp="])
    except getopt.GetoptError:
        help()
        sys.exit(2)
    if len(opts)==0:
        help()
    else:
        for opt, arg in opts:
            if opt == '-h':
                help()
                sys.exit()
            elif opt in ("-t", "--timestamp"):
                timestamp = arg
            else:            
                help()
                sys.exit()
        conf = read_config()
        logger.info("Plotting timestamp {0}".format(timestamp))
        plot_all(
            conf.get('directories', 'sessions'), 
            conf.get('directories', 'images'), 
            timestamp)
        logger.info("Finished plotting.")
コード例 #6
0
def main(argv):
    def help():
        print "Usage: plotter -t <timestamp>"

    timestamp = ''
    try:
        opts, args = getopt.getopt(argv, "ht:", ["timestamp="])
    except getopt.GetoptError:
        help()
        sys.exit(2)
    if len(opts) == 0:
        help()
    else:
        for opt, arg in opts:
            if opt == '-h':
                help()
                sys.exit()
            elif opt in ("-t", "--timestamp"):
                timestamp = arg
            else:
                help()
                sys.exit()
        conf = read_config()
        logger.info("Plotting timestamp {0}".format(timestamp))
        plot_all(conf.get('directories', 'sessions'),
                 conf.get('directories', 'images'), timestamp)
        logger.info("Finished plotting.")
コード例 #7
0
ファイル: recorder.py プロジェクト: SirHegel77/DreamCatcher
    def _run(self):
        logger.info("Importing numpy...")
        global np
        import numpy as np
        logger.info("Recording to %s", self.data_filename)

        self._config = read_config()
        self._config.set('recorder', 'is_recording', str(True))
        self._config.set('recorder', 'current_session', str(self._timestamp))
        save_config(self._config)
        try:
            self._worker.start()
            with open(self.marker_filename, "w") as f:
                pass
            with open(self.motion_filename, "w") as f:
                pass
            self.record()
        except KeyboardInterrupt:
            logger.info("Keyboard interrupt")
        except:
            logger.error("Unhandled exception: %s", sys.exc_info()[1])
        finally:
            self._worker.stop()
            self._config.set('recorder', 'current_session',str(0))
            self._config.set('recorder', 'is_recording', str(False))
            save_config(self._config)
            os.remove(self.status_filename)
        logger.info("Finished recording")
コード例 #8
0
ファイル: plotter.py プロジェクト: Paulxia/DreamCatcher
def prepare_plot_for_fft(session_dir, image_dir, timestamp):
    conf = read_config()
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    t, power, level = read_input_file(datafilename)
    dates = matplotlib.dates.date2num(t)
   
    logging.info("Plotting...")
    
    fig, (ax1, ax2) = plt.subplots(2, sharex=False)
    
    ax1.set_ylim([5, 7])
    ax1.axhline(y=conf.getfloat('recorder', 'power_min'), color='b')
    ax1.axhline(y=conf.getfloat('recorder', 'power_max'), color='r')
    ax1.plot_date(dates, np.array(power), 'k.')
    ax1.set_title('Signal power')

    logger.info("Drawing markers...")
    markerfilename = os.path.join(session_dir, '{0}.markers'.format(timestamp))
    markers = read_marker_file(markerfilename)
    for timestamp, color, comment in markers:
        t = datetime.fromtimestamp(long(timestamp))
        logger.info("Drawing marker at %s", timestamp)
        ax1.axvline(x=t, color=color)
    
    return fig, (ax1, ax2)
コード例 #9
0
ファイル: dreamcatcher.py プロジェクト: Paulxia/DreamCatcher
 def __init__(self):
     config = read_config()
     self._path = os.path.abspath(
         config.get('directories', 'sessions'))
     self._recorder = None
     self._fan = Fan()
     self.create_menu()
コード例 #10
0
def recorder():
    conf = read_config()
    if request.method == 'PUT':
        conf.set('recorder', 'is_recording', str(request.json['is_recording']))
        save_config(conf)
    return jsonify(
        {'is_recording': conf.getboolean('recorder', 'is_recording')})
コード例 #11
0
 def plot():
     logger.info("Plotting %s", timestamp)
     config = read_config()
     self.menu.message = "Plotting..."
     plotter.plot(config.get('directories', 'sessions'),
                  config.get('directories', 'images'), timestamp)
     self.menu.current_item = self._root_item
コード例 #12
0
def prepare_plot_for_fft(session_dir, image_dir, timestamp):
    conf = read_config()
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    t, power, level = read_input_file(datafilename)
    dates = matplotlib.dates.date2num(t)

    logging.info("Plotting...")

    fig, (ax1, ax2) = plt.subplots(2, sharex=False)

    ax1.set_ylim([5, 7])
    ax1.axhline(y=conf.getfloat('recorder', 'power_min'), color='b')
    ax1.axhline(y=conf.getfloat('recorder', 'power_max'), color='r')
    ax1.plot_date(dates, np.array(power), 'k.')
    ax1.set_title('Signal power')

    logger.info("Drawing markers...")
    markerfilename = os.path.join(session_dir, '{0}.markers'.format(timestamp))
    markers = read_marker_file(markerfilename)
    for timestamp, color, comment in markers:
        t = datetime.fromtimestamp(long(timestamp))
        logger.info("Drawing marker at %s", timestamp)
        ax1.axvline(x=t, color=color)

    return fig, (ax1, ax2)
コード例 #13
0
 def __init__(self):
     config = read_config()
     self._path = os.path.abspath(
         config.get('directories', 'sessions'))
     self._recorder = None
     self._display_index = 0 # Text to show in root menu
     self._fan = Fan()
     self.create_menu()
コード例 #14
0
ファイル: __main__.py プロジェクト: SirHegel77/DreamCatcher
def recorder():
    conf = read_config()
    if request.method == 'PUT':
        conf.set('recorder', 'is_recording', 
            str(request.json['is_recording']))
        save_config(conf)
    return jsonify({'is_recording':
        conf.getboolean('recorder', 'is_recording')})
コード例 #15
0
 def plot():
     logger.info("Plotting %s", timestamp)
     config = read_config()
     self.menu.message = "Plotting..."
     plotter.plot(
         config.get('directories', 'sessions'),
         config.get('directories', 'images'),
         timestamp)
     self.menu.current_item = self._root_item
コード例 #16
0
def start_recording():
    try:
        config = read_config()
        r = Recorder(config.get('directories', 'sessions'))
        r._run()
    except KeyboardInterrupt:
        logger.info("KeyboardInterrupt")
    except:
        logger.error(sys.exc_info()[1])
    logger.info("Finished recording.")
コード例 #17
0
ファイル: __main__.py プロジェクト: Paulxia/DreamCatcher
def start_recording():
    try:
        config = read_config()
        r = Recorder(config.get('directories', 'sessions'))
        r._run()
    except KeyboardInterrupt:
        logger.info("KeyboardInterrupt")
    except:
        logger.error(sys.exc_info()[1])
    logger.info("Finished recording.")
コード例 #18
0
ファイル: build.py プロジェクト: jimmydo/cotton
    def __init__(self):
        app_name = os.path.basename(os.path.dirname(os.getcwd()))
        app_config = shared.read_config()[app_name]
        self._name = app_name
        self._ports = app_config['ports']
        self._remote_user = app_config['remote_user']

        # Absolute path to the home directory of the remote user account being
        # used to deploy the app.
        self._remote_home = app_config['remote_home']

        self._build_repo = shared.BuildRepo(app_name, app_config['build_repo'])
コード例 #19
0
def dream_summary(timestamp):
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    filename = os.path.join(session_dir, timestamp + '.data')
    NOT_IN_BED = 0
    AWAKE = 1
    LIGHT_SLEEP = 2
    DEEP_SLEEP = 3
    result = [{
        'Name': 'Not in bed',
        'Total': 0,
        'Percent': 0.0,
        'Transitions': 0
    }, {
        'Name': 'Awake',
        'Total': 0,
        'Percent': 0.0,
        'Transitions': 0
    }, {
        'Name': 'Light sleep',
        'Total': 0,
        'Percent': 0.0,
        'Transitions': 0
    }, {
        'Name': 'Deep sleep',
        'Total': 0,
        'Percent': 0.0,
        'Transitions': 0
    }]

    totaltime = 0
    previous_time = long(timestamp)
    previous_state = 0
    with open(filename, 'r') as f:
        for line in f:
            fields = line.split(';')
            timestamp = long(fields[0])
            state = int(fields[6])
            diff = timestamp - previous_time

            current_state = result[state]
            current_state['Total'] += diff
            if state <> previous_state:
                current_state['Transitions'] += 1

            totaltime += diff
            previous_time = timestamp
            previous_state = state

    for state in result:
        state['Percent'] = float(state['Total']) / float(totaltime) * 100.0
    return result
コード例 #20
0
ファイル: recorder.py プロジェクト: SirHegel77/DreamCatcher
 def state(self):
     config = read_config()
     min = config.getfloat('recorder', 'power_min')
     pow = self.signal_power
     if pow < min:
         return Recorder.STATE_NOT_IN_BED
     else:
         level = self.sleep_level
         if level > 0:
             return Recorder.STATE_AWAKE
         elif level > -0.5:
             return Recorder.STATE_LIGHT_SLEEP
         else:
             return Recorder.STATE_DEEP_SLEEP
コード例 #21
0
 def be_clever():
     config = read_config()
     min = config.getfloat('recorder', 'power_min')
     pow = self._recorder.signal_power
     if pow < min:
         return "Thinking:\nNot in bed."
     else:
         level = self._recorder.sleep_level
         if level > 0:
             return "Thinking:\nAwake."
         elif level > -0.5:
             return "Thinking:\nLight sleep."
         else:
             return "Thinking:\nSleeping."
コード例 #22
0
ファイル: plotter.py プロジェクト: Paulxia/DreamCatcher
def plot(session_dir, image_dir, timestamp):
    conf = read_config()
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    t, power, level, breath, hb = read_input_file(datafilename)
    dates = matplotlib.dates.date2num(t)
   
    logging.info("Plotting...")
    
    fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True)
      
    header = "Session recorded {0} {1}-{2}".format(
        t[0].strftime('%a %d.%m.%Y'),
        t[0].strftime('%H:%M:%S'),
        t[-1].strftime('%H:%M:%S'))
        
    fig.suptitle(header)
    fig.autofmt_xdate()
    ax1.set_title('Signal power')        
    ax1.set_ylim([5, 7])
    ax1.axhline(y=conf.getfloat('recorder', 'power_min'), color='b')
    ax1.axhline(y=conf.getfloat('recorder', 'power_max'), color='r')
    ax2.set_title('Estimated sleep level')
    ax2.axhline(y=0, color='k')

    ax1.plot_date(dates, np.array(power), 'k.')
    ax2.plot_date(dates, np.array(level) , 'r.')
    ax3.set_title('Breath & HB')
    ax3.plot_date(dates, np.array(breath) , 'b.')
    ax3.set_ylim([0, 20])
    for tl in ax3.get_yticklabels():
        tl.set_color('b')
    ax4 = ax3.twinx()
    ax4.plot_date(dates, np.array(hb) , 'r.')
    ax4.set_ylim([50, 120])
    for tl in ax4.get_yticklabels():
        tl.set_color('r')
    logger.info("Drawing markers...")
    markerfilename = os.path.join(session_dir, '{0}.markers'.format(timestamp))
    markers = read_marker_file(markerfilename)
    for timestamp, color, comment in markers:
        t = datetime.fromtimestamp(long(timestamp))
        logger.info("Drawing marker at %s", timestamp)
        ax1.axvline(x=t, color=color)
        ax2.axvline(x=t, color=color)
        ax3.axvline(x=t, color=color)

    outputfilename = os.path.join(image_dir, '{0}.png'.format(timestamp))
    logging.info("Saving output file %s", outputfilename)
    plt.savefig(outputfilename)
    logging.info("Finished plotting")
コード例 #23
0
 def be_clever():
     config = read_config()
     min = config.getfloat('recorder', 'power_min')
     pow = self._recorder.signal_power
     if pow < min:
         return "Thinking:\nNot in bed."
     else:
         level = self._recorder.sleep_level
         if level > 0:
             return "Thinking:\nAwake."
         elif level > -0.5:
             return "Thinking:\nLight sleep."
         else:
             return "Thinking:\nSleeping."
コード例 #24
0
def plot(session_dir, image_dir, timestamp):
    conf = read_config()
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    t, power, level, breath, hb = read_input_file(datafilename)
    dates = matplotlib.dates.date2num(t)

    logging.info("Plotting...")

    fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True)

    header = "Session recorded {0} {1}-{2}".format(
        t[0].strftime('%a %d.%m.%Y'), t[0].strftime('%H:%M:%S'),
        t[-1].strftime('%H:%M:%S'))

    fig.suptitle(header)
    fig.autofmt_xdate()
    ax1.set_title('Signal power')
    ax1.set_ylim([5, 7])
    ax1.axhline(y=conf.getfloat('recorder', 'power_min'), color='b')
    ax1.axhline(y=conf.getfloat('recorder', 'power_max'), color='r')
    ax2.set_title('Estimated sleep level')
    ax2.axhline(y=0, color='k')

    ax1.plot_date(dates, np.array(power), 'k.')
    ax2.plot_date(dates, np.array(level), 'r.')
    ax3.set_title('Breath & HB')
    ax3.plot_date(dates, np.array(breath), 'b.')
    ax3.set_ylim([0, 20])
    for tl in ax3.get_yticklabels():
        tl.set_color('b')
    ax4 = ax3.twinx()
    ax4.plot_date(dates, np.array(hb), 'r.')
    ax4.set_ylim([50, 120])
    for tl in ax4.get_yticklabels():
        tl.set_color('r')
    logger.info("Drawing markers...")
    markerfilename = os.path.join(session_dir, '{0}.markers'.format(timestamp))
    markers = read_marker_file(markerfilename)
    for timestamp, color, comment in markers:
        t = datetime.fromtimestamp(long(timestamp))
        logger.info("Drawing marker at %s", timestamp)
        ax1.axvline(x=t, color=color)
        ax2.axvline(x=t, color=color)
        ax3.axvline(x=t, color=color)

    outputfilename = os.path.join(image_dir, '{0}.png'.format(timestamp))
    logging.info("Saving output file %s", outputfilename)
    plt.savefig(outputfilename)
    logging.info("Finished plotting")
コード例 #25
0
ファイル: query_csv.py プロジェクト: SwatiJP29/aws-s3-athena
def main():
  database_name = "default"
  table_name = "test_csv_table"

  config = helper.read_config('.config.yml')
  bucket_name = config['S3_SOURCE_BUCKET']
  s3_input = f's3://{bucket_name}/data/'
  s3_output = f's3://{bucket_name}/results/'

  # Setup database and tables
  create_database(database_name=database_name, s3_output=s3_output)
  create_table(database_name=database_name, table_name=table_name, s3_input=s3_input, s3_output=s3_output)
  time.sleep(1)

  # Execute example query
  query = "SELECT gender, COUNT(1) FROM %s.%s GROUP BY gender;" % (database_name, table_name)
  execute_query(query=query, database=database_name, s3_output=s3_output)
コード例 #26
0
ファイル: __main__.py プロジェクト: SirHegel77/DreamCatcher
def dream_info(timestamp):
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    filename = os.path.join(session_dir, timestamp + '.data')
    firstline = os.popen("head -1 %s" % filename).read()
    if firstline:
        start = long(firstline.split(';')[0])
    else:
        start = 0

    lastline = os.popen("tail -n 1 %s" % filename).read()
    if lastline:
        end = long(lastline.split(';')[0])
    else:
        end = 0
    
    return {'id': long(timestamp), 'start': start, 'end': end}
コード例 #27
0
ファイル: __main__.py プロジェクト: SirHegel77/DreamCatcher
def dream_data(timestamp):
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    filename = os.path.join(session_dir, timestamp + '.data')
    result = []
    with open(filename, 'r') as f:
        for line in f:
            fields = line.split(';')
            values = {'timestamp': long(fields[0]),
                      'signal_power': float(fields[1]),
                      'sleep_level': float(fields[2]),
                      'breath': float(fields[4]),
                      'hb': float(fields[5]),
                      'state': int(fields[6])}
            result.append(values)

    return result
コード例 #28
0
def dream_info(timestamp):
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    filename = os.path.join(session_dir, timestamp + '.data')
    firstline = os.popen("head -1 %s" % filename).read()
    if firstline:
        start = long(firstline.split(';')[0])
    else:
        start = 0

    lastline = os.popen("tail -n 1 %s" % filename).read()
    if lastline:
        end = long(lastline.split(';')[0])
    else:
        end = 0

    return {'id': long(timestamp), 'start': start, 'end': end}
コード例 #29
0
    def verify_recorder(self):
        """ Verify worker is running """
        conf = read_config()
        should_run = conf.getboolean('recorder', 'is_recording')
        if should_run:
            if self._recorder == None:
                self.start_recording()
            else:
                if self._recorder.is_running == False:
                    self._recorder.start()
                    self._restarts += 1
                    self._menu.message("Restarted\n{0} restarts".format(
                        self._restarts))

        else:
            if self._recorder != None:
                self.stop_recording()
コード例 #30
0
def reanalyze(session_dir, timestamp):
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    outputfilename = os.path.join(session_dir,
                                  '{0}.fixed.data'.format(timestamp))
    backupfilename = os.path.join(session_dir,
                                  '{0}.old.data'.format(timestamp))
    conf = read_config()
    rb = RingBuffer(25)
    with open(datafilename, "r") as f:
        with open(outputfilename, 'w') as f2:
            for line in f:
                values = line.split(";")
                print "Reanalyzing timestamp", values[0]
                inputfilename = os.path.join(session_dir, timestamp,
                                             '{0}.npz'.format(values[0]))
                npz = np.load(inputfilename)
                x = npz['x']
                y = npz['y']
                dt = npz['dt']
                (freqs, ps) = fft(x, dt)
                px = np.sum(ps)
                (freqs, ps) = fft(y, dt)
                py = np.sum(ps)
                p = np.log10(np.add(px, py) / 2)
                if p > conf.getfloat('recorder', 'power_max'):
                    value = np.ones(1)
                elif p < conf.getfloat('recorder', 'power_min'):
                    value = np.ones(1)
                else:
                    value = np.ones(1) * -1
                rb.extend(value)

                (freqs, psx) = fft(npz['wx'], dt)
                (freqs, psy) = fft(npz['wy'], dt)
                ps = (psx + psy) / 2
                (breath, hb) = analyze_breath_and_hb(freqs, ps)
                power = np.average(rb.get())
                f2.write(';'.join(
                    (str(x)
                     for x in [values[0], p, power, breath, hb])) + '\n')

    if os.path.isfile(backupfilename):
        os.remove(backupfilename)
    os.rename(datafilename, backupfilename)
    os.rename(outputfilename, datafilename)
コード例 #31
0
ファイル: __main__.py プロジェクト: SirHegel77/DreamCatcher
def dreams():
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    datafiles = sorted(glob(session_dir + '/*.data'), 
        key = os.path.getctime, reverse = True)
    timestamps = (os.path.splitext(os.path.split(fn)[1])[0] for fn in datafiles)    
    take = None
    if request.args.has_key('take'):
        take = int(request.args.get('take'))
    skip = None
    if request.args.has_key('skip'):
        skip = int(request.args.get('skip'))
        print "skip: ", take
    else:
        print "No skip"
    
    dreams = [{'id': ts} for ts in take_from(timestamps, take, skip)]
    return Response(json.dumps(dreams), mimetype='application/json')
コード例 #32
0
ファイル: __main__.py プロジェクト: SirHegel77/DreamCatcher
def status():
    conf = read_config()
    dir = conf.get('directories', 'sessions')
    filename = os.path.join(dir, 'current_status.data')
    if os.path.isfile(filename):
        with open(filename, 'r') as f:
            data = f.readline().split(';')
        return jsonify({'signal_power': float(data[1]),
            'sleep_level': float(data[2]),
            'breath': float(data[4]),
            'hb': float(data[5]),
            'state': int(data[6])})
    else:
        return jsonify({'signal_power': 0.0,
            'sleep_level': 0.0,
            'breath': 0.0,
            'hb': 0.0,
            'state': 0})
コード例 #33
0
    def verify_recorder(self):
        """ Verify worker is running """
        conf = read_config()
        should_run = conf.getboolean('recorder', 'is_recording')
        if should_run:
            if self._recorder == None:
                self.start_recording()
            else:
                if self._recorder.is_running == False:
                    self._recorder.start()
                    self._restarts += 1
                    self._menu.message(
                        "Restarted\n{0} restarts".format(
                        self._restarts))

        else:
            if self._recorder != None:
                self.stop_recording()
コード例 #34
0
def dream_data(timestamp):
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    filename = os.path.join(session_dir, timestamp + '.data')
    result = []
    with open(filename, 'r') as f:
        for line in f:
            fields = line.split(';')
            values = {
                'timestamp': long(fields[0]),
                'signal_power': float(fields[1]),
                'sleep_level': float(fields[2]),
                'breath': float(fields[4]),
                'hb': float(fields[5]),
                'state': int(fields[6])
            }
            result.append(values)

    return result
コード例 #35
0
def dreams():
    conf = read_config()
    session_dir = conf.get('directories', 'sessions')
    datafiles = sorted(glob(session_dir + '/*.data'),
                       key=os.path.getctime,
                       reverse=True)
    timestamps = (os.path.splitext(os.path.split(fn)[1])[0]
                  for fn in datafiles)
    take = None
    if request.args.has_key('take'):
        take = int(request.args.get('take'))
    skip = None
    if request.args.has_key('skip'):
        skip = int(request.args.get('skip'))
        print "skip: ", take
    else:
        print "No skip"

    dreams = [{'id': ts} for ts in take_from(timestamps, take, skip)]
    return Response(json.dumps(dreams), mimetype='application/json')
コード例 #36
0
ファイル: setup.py プロジェクト: SwatiJP29/aws-s3-athena
def main():
    # Get configuration from yaml file.
    config = helper.read_config('.config.yml')
    target_bucket = config['S3_SOURCE_BUCKET']

    # Connect to s3 resource client
    # http://boto3.readthedocs.io/en/latest/reference/core/session.html#boto3.session.Session.client
    s3_client = boto3.client(service_name='s3',
                             aws_access_key_id=config['AWS_ACCESS'],
                             aws_secret_access_key=config['AWS_SECRET'])

    # Create s3 bucket
    # https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.create_bucket
    s3_client.create_bucket(Bucket=target_bucket)

    files = ['data/MOCK_DATA.csv']

    # Upload data files to s3
    # http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.upload_file
    for filename in files:
        s3_client.upload_file(filename, target_bucket, filename)
コード例 #37
0
ファイル: plotter.py プロジェクト: Paulxia/DreamCatcher
def reanalyze(session_dir, timestamp):
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    outputfilename = os.path.join(session_dir, '{0}.fixed.data'.format(timestamp))
    backupfilename = os.path.join(session_dir, '{0}.old.data'.format(timestamp))
    conf = read_config()
    rb = RingBuffer(25)
    with open(datafilename, "r") as f:
        with open(outputfilename, 'w') as f2:
            for line in f:
                values = line.split(";")
                print "Reanalyzing timestamp", values[0]
                inputfilename = os.path.join(session_dir, timestamp, '{0}.npz'.format(values[0]))
                npz = np.load(inputfilename)
                x = npz['x']
                y = npz['y']
                dt = npz['dt']
                (freqs, ps) = fft(x, dt)
                px = np.sum(ps)
                (freqs, ps) = fft(y, dt)
                py = np.sum(ps)
                p =np.log10(np.add(px, py) / 2)
                if p > conf.getfloat('recorder', 'power_max'):
                    value = np.ones(1)
                elif p < conf.getfloat('recorder', 'power_min'):
                    value = np.ones(1)
                else:
                    value = np.ones(1) * -1
                rb.extend(value)
                
                (freqs, psx) = fft(npz['wx'], dt)        
                (freqs, psy) = fft(npz['wy'], dt)
                ps = (psx+psy)/2
                (breath, hb) = analyze_breath_and_hb(freqs, ps)
                power = np.average(rb.get())
                f2.write(';'.join((str(x) for x in [values[0], p, power, breath, hb])) + '\n')
    
    if os.path.isfile(backupfilename):
        os.remove(backupfilename)
    os.rename(datafilename, backupfilename)
    os.rename(outputfilename, datafilename)
コード例 #38
0
def status():
    conf = read_config()
    dir = conf.get('directories', 'sessions')
    filename = os.path.join(dir, 'current_status.data')
    if os.path.isfile(filename):
        with open(filename, 'r') as f:
            data = f.readline().split(';')
        return jsonify({
            'signal_power': float(data[1]),
            'sleep_level': float(data[2]),
            'breath': float(data[4]),
            'hb': float(data[5]),
            'state': int(data[6])
        })
    else:
        return jsonify({
            'signal_power': 0.0,
            'sleep_level': 0.0,
            'breath': 0.0,
            'hb': 0.0,
            'state': 0
        })
コード例 #39
0
def plot_all(session_dir, image_dir, timestamp):
    print "Plotting timestamp", timestamp
    if os.path.isdir(os.path.join(image_dir, timestamp)) == False:
        os.makedirs(os.path.join(image_dir, timestamp))
    datafilename = os.path.join(session_dir, '{0}.data'.format(timestamp))
    q = Queue()
    workers = []
    for i in range(8):
        w = QueueWorker(process_timestamp, queue=q)
        workers.append(w)
        w.start()
    conf = read_config()
    power_min = conf.getfloat('recorder', 'power_min')
    power_max = conf.getfloat('recorder', 'power_max')
    with open(datafilename, "r") as f:
        for line in f:
            values = line.split(";")
            power = float(values[1])
            level = float(values[2])
            if level > 0 or power < power_min or power > power_max:
                print "Ignoring ", values[0], "Power:", power
                continue
            outputfilename = os.path.join(image_dir,
                                          '{0}.png'.format(values[0]))
            if os.path.isfile(outputfilename):
                print "Ignoring ", values[0]
            else:
                logger.info("Plotting timestamp %s", values[0])
                q.put((session_dir, image_dir, timestamp, values[0]))

    print "Finished plotting timestamp", timestamp
    for i in range(8):
        q.put(None)

    while not q.empty():
        sleep(0.01)
コード例 #40
0
ファイル: __main__.py プロジェクト: Paulxia/DreamCatcher
def record_motion(motion_data):
    config = read_config()
    r = Recorder(config.get('directories', 'sessions'))
    r.record_motion(motion_data)
コード例 #41
0
def record_motion(motion_data):
    config = read_config()
    r = Recorder(config.get('directories', 'sessions'))
    r.record_motion(motion_data)
コード例 #42
0
from shared import read_config, dev_mode

conf = read_config()


def render_deploy_path_into_html(conf):
    deploy_path = conf["dev-path"] if dev_mode() else conf["prod-path"]

    with open(conf["html-file"], "r") as file:
        contents = file.read()

    rendered = contents.replace(conf["path-placeholder"], deploy_path)

    with open(conf["html-file"], "w") as file:
        file.write(rendered)

    print("Rendered HTML to deploy path:", deploy_path)