Skip to content

Instantly share code, notes, and snippets.

@ejain
ejain / emfitqs.py
Created January 31, 2017 22:00
Retrieves sleep presence records from Emfit QS, and merges the records into a single spreadsheet.
import io, re, requests, sys, time, zipfile
def get_device(token):
r = get("/api/v1/user/get", token)
device = r.json()["user"]["devices"]
print("Device: " + device, file = sys.stderr)
return device
def list_presences(token, device):
r = get("/v4/presence/{0}/latest".format(device), token)
@ejain
ejain / gpx2geojson.py
Created January 2, 2020 20:34
Build a GeoJSON file from a collection of GPX files.
import dateutil.parser
import fiona
import glob
import json
import math
import pytz
import re
import sys
from pathlib import Path
@ejain
ejain / polylines2gpx.js
Created January 2, 2020 20:17
Build a GPX file from a CSV file exported from dashboard.automatic.com.
"use strict";
var csv = require("ya-csv");
var polyline = require("polyline");
var moment = require("moment-timezone");
var togpx = require("togpx")
var reader = csv.createCsvStreamReader(process.stdin, { columnsFromHeader : true });
var geojson = {
@ejain
ejain / panel.txt
Created January 13, 2017 19:42
Arivale's clinical blood tests (as of August 2016)
Homocysteine (serum)
Total cholesterol
LDL
LDL particle number
LDL small particle number
LDL size
Oxidized LDL
HDL
HDL particle number
Triglycerides
@ejain
ejain / AV15-xxxx.otuTable.tsv
Last active January 27, 2016 17:59
Converts Second Genome data files to a uBiome taxonomy file.
dnOTU_15 AV15-1068 16733
dnOTU_16 AV15-1068 20403
dnOTU_17 AV15-1068 32939
@ejain
ejain / build.g
Created November 15, 2013 06:03
Converts a directory of GPX files into a single KML file for import into Google Fusion Tables; includes some metadata based on the file name.
import groovy.xml.MarkupBuilder
new MarkupBuilder().kml(xmlns : 'http://www.opengis.net/kml/2.2') {
new File(args?.size() ? args[0] : '.').eachFileMatch(~/.*\.gpx/) { file ->
new XmlParser().parse(file).trk.each { trk ->
trk.trkseg.each { trkseg ->
def geo = ""
trkseg.trkpt.each { trkpt ->
geo += "${trkpt.'@lon'},${trkpt.'@lat'}\n"
}
@ejain
ejain / flights.groovy
Last active December 25, 2015 21:43
Concatenates tracklogs from FlightAware for import into Google Fusion Tables.
import groovy.xml.MarkupBuilder
new MarkupBuilder().kml(xmlns : 'http://www.opengis.net/kml/2.2') {
Document() {
new File(args?.size() ? args[0] : '.').eachFileMatch(~/.*\.flight\.kml/) { file ->
new XmlParser().parse(file).Document.Placemark.each { placemark ->
placemark.Point.each { point ->
Placemark {
name(placemark.name.text())
Point {
@ejain
ejain / gist:5507571
Created May 3, 2013 06:45
Example request and (incorrect) response when using a script terms facet in elasticsearch 0.90.0 (+ lang-javascript 1.3.0).
{
"query" : {
"match_all" : { }
},
"facets" : {
"lt322cf7ts" : {
"terms" : {
"size" : 31,
"script" : "t=doc['timestamp'].date;t.addMillis(-28800000);v=t.getHourOfDay();v",
"lang" : "js"
@ejain
ejain / gist:5507570
Created May 3, 2013 06:43
Example request and (correct) response when using a script terms facet in elasticsearch 0.20.6 (+ lang-javascript 1.2.0).
{
"query" : {
"match_all" : { }
},
"facets" : {
"lt322cf7ts" : {
"terms" : {
"size" : 31,
"script" : "t=doc['timestamp'].date;t.addMillis(-28800000);v=t.getHourOfDay();v",
"lang" : "js"
@ejain
ejain / DateHistogramFacetTest.java
Created March 31, 2012 17:40
Unit test for using elasticsearch's DateHistogramFacet with time zones.
package search;
import java.util.Map;
import junit.framework.Assert;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.settings.ImmutableSettings;