From a07989e2b6aac8bfdbd5e6784f34502672f0d632 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Tue, 18 Dec 2018 10:05:39 +0530 Subject: [PATCH 01/50] Initial commit --- sdk/python/.gitignore | 115 +++ sdk/python/.vscode/settings.json | 11 + sdk/python/examples/hello_feast/test.py | 26 + sdk/python/feast/core/CoreService_pb2.py | 687 ++++++++++++++ sdk/python/feast/core/CoreService_pb2_grpc.py | 224 +++++ sdk/python/feast/core/JobService_pb2.py | 553 +++++++++++ sdk/python/feast/core/JobService_pb2_grpc.py | 98 ++ sdk/python/feast/core/UIService_pb2.py | 869 ++++++++++++++++++ sdk/python/feast/core/UIService_pb2_grpc.py | 180 ++++ sdk/python/feast/sdk/client.py | 85 ++ sdk/python/feast/sdk/resources/entity.py | 75 ++ sdk/python/feast/sdk/resources/feature.py | 176 ++++ .../feast/sdk/resources/feature_group.py | 76 ++ sdk/python/feast/sdk/resources/resource.py | 31 + sdk/python/feast/serving/Serving_pb2.py | 512 +++++++++++ sdk/python/feast/serving/Serving_pb2_grpc.py | 46 + sdk/python/feast/specs/EntitySpec_pb2.py | 84 ++ .../feast/specs/FeatureGroupSpec_pb2.py | 87 ++ sdk/python/feast/specs/FeatureSpec_pb2.py | 345 +++++++ sdk/python/feast/specs/ImportSpec_pb2.py | 260 ++++++ sdk/python/feast/specs/StorageSpec_pb2.py | 132 +++ sdk/python/feast/storage/BigTable_pb2.py | 86 ++ sdk/python/feast/storage/Redis_pb2.py | 175 ++++ .../feast/types/FeatureRowExtended_pb2.py | 197 ++++ sdk/python/feast/types/FeatureRow_pb2.py | 106 +++ sdk/python/feast/types/Feature_pb2.py | 81 ++ sdk/python/feast/types/Granularity_pb2.py | 99 ++ sdk/python/feast/types/Value_pb2.py | 669 ++++++++++++++ sdk/python/tests/sample/valid_entity.yaml | 5 + .../tests/sample/valid_entity_no_tag.yaml | 2 + sdk/python/tests/sample/valid_feature.yaml | 13 + .../tests/sample/valid_feature_group.yaml | 7 + sdk/python/tests/sdk/resources/test_entity.py | 27 + .../tests/sdk/resources/test_feature.py | 47 + .../tests/sdk/resources/test_feature_group.py | 11 + sdk/python/tests/sdk/test_client.py | 14 + 36 files changed, 6211 insertions(+) create mode 100644 sdk/python/.gitignore create mode 100644 sdk/python/.vscode/settings.json create mode 100644 sdk/python/examples/hello_feast/test.py create mode 100644 sdk/python/feast/core/CoreService_pb2.py create mode 100644 sdk/python/feast/core/CoreService_pb2_grpc.py create mode 100644 sdk/python/feast/core/JobService_pb2.py create mode 100644 sdk/python/feast/core/JobService_pb2_grpc.py create mode 100644 sdk/python/feast/core/UIService_pb2.py create mode 100644 sdk/python/feast/core/UIService_pb2_grpc.py create mode 100644 sdk/python/feast/sdk/client.py create mode 100644 sdk/python/feast/sdk/resources/entity.py create mode 100644 sdk/python/feast/sdk/resources/feature.py create mode 100644 sdk/python/feast/sdk/resources/feature_group.py create mode 100644 sdk/python/feast/sdk/resources/resource.py create mode 100644 sdk/python/feast/serving/Serving_pb2.py create mode 100644 sdk/python/feast/serving/Serving_pb2_grpc.py create mode 100644 sdk/python/feast/specs/EntitySpec_pb2.py create mode 100644 sdk/python/feast/specs/FeatureGroupSpec_pb2.py create mode 100644 sdk/python/feast/specs/FeatureSpec_pb2.py create mode 100644 sdk/python/feast/specs/ImportSpec_pb2.py create mode 100644 sdk/python/feast/specs/StorageSpec_pb2.py create mode 100644 sdk/python/feast/storage/BigTable_pb2.py create mode 100644 sdk/python/feast/storage/Redis_pb2.py create mode 100644 sdk/python/feast/types/FeatureRowExtended_pb2.py create mode 100644 sdk/python/feast/types/FeatureRow_pb2.py create mode 100644 sdk/python/feast/types/Feature_pb2.py create mode 100644 sdk/python/feast/types/Granularity_pb2.py create mode 100644 sdk/python/feast/types/Value_pb2.py create mode 100644 sdk/python/tests/sample/valid_entity.yaml create mode 100644 sdk/python/tests/sample/valid_entity_no_tag.yaml create mode 100644 sdk/python/tests/sample/valid_feature.yaml create mode 100644 sdk/python/tests/sample/valid_feature_group.yaml create mode 100644 sdk/python/tests/sdk/resources/test_entity.py create mode 100644 sdk/python/tests/sdk/resources/test_feature.py create mode 100644 sdk/python/tests/sdk/resources/test_feature_group.py create mode 100644 sdk/python/tests/sdk/test_client.py diff --git a/sdk/python/.gitignore b/sdk/python/.gitignore new file mode 100644 index 00000000000..6299a37294d --- /dev/null +++ b/sdk/python/.gitignore @@ -0,0 +1,115 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ \ No newline at end of file diff --git a/sdk/python/.vscode/settings.json b/sdk/python/.vscode/settings.json new file mode 100644 index 00000000000..7de5a044fe3 --- /dev/null +++ b/sdk/python/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "python.pythonPath": "/usr/local/anaconda3/envs/feast-dev/bin/python", + "autoDocstring.docstringFormat": "google", + "python.unitTest.pyTestArgs": [ + "tests" + ], + "python.unitTest.unittestEnabled": false, + "python.unitTest.nosetestsEnabled": false, + "python.unitTest.pyTestEnabled": true, + "editor.rulers": [79,120] +} \ No newline at end of file diff --git a/sdk/python/examples/hello_feast/test.py b/sdk/python/examples/hello_feast/test.py new file mode 100644 index 00000000000..5f5838aa4ff --- /dev/null +++ b/sdk/python/examples/hello_feast/test.py @@ -0,0 +1,26 @@ +from feast.sdk.resources.entity import Entity +from feast.sdk.resources.feature import Feature +from feast.types.Granularity_pb2 import Granularity +from feast.types.Value_pb2 import ValueType +import feast.specs.FeatureSpec_pb2 as feature_pb + +from feast.sdk.client import Client + +myEntity = Entity("test", "test description", ["tag1", "tag2"]) +myEntity.dump("test.yaml") + +entity2 = Entity.from_yaml_file("test.yaml") +entity2.dump("entity.yaml") + +warehouse_data_store = feature_pb.DataStore(id = "BIGQUERY1", options = {}) +serving_data_store = feature_pb.DataStore(id = "REDIS1", options = {}) +my_feature = Feature(name = "my_feature", entity = "my_entity", granularity = Granularity.NONE, value_type = ValueType.BYTES, + owner = "feast@web.com", description = "test feature", uri = "github.com/feature_repo", warehouse_store = warehouse_data_store, + serving_store = serving_data_store) +print(my_feature.serving_store) + +my_feature.options = {"test": "test", "test2": "test2"} +print(my_feature) + +cli = Client("localhost:8433") +cli.apply(my_feature) \ No newline at end of file diff --git a/sdk/python/feast/core/CoreService_pb2.py b/sdk/python/feast/core/CoreService_pb2.py new file mode 100644 index 00000000000..cd8896447b4 --- /dev/null +++ b/sdk/python/feast/core/CoreService_pb2.py @@ -0,0 +1,687 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/CoreService.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.specs import EntitySpec_pb2 as feast_dot_specs_dot_EntitySpec__pb2 +from feast.specs import FeatureSpec_pb2 as feast_dot_specs_dot_FeatureSpec__pb2 +from feast.specs import FeatureGroupSpec_pb2 as feast_dot_specs_dot_FeatureGroupSpec__pb2 +from feast.specs import StorageSpec_pb2 as feast_dot_specs_dot_StorageSpec__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/core/CoreService.proto', + package='feast.core', + syntax='proto3', + serialized_options=_b('\n\nfeast.coreB\020CoreServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n\x1c\x66\x65\x61st/core/CoreService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/EntitySpec.proto\x1a\x1d\x66\x65\x61st/specs/FeatureSpec.proto\x1a\"feast/specs/FeatureGroupSpec.proto\x1a\x1d\x66\x65\x61st/specs/StorageSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xc9\x05\n\x10\x43oreServiceTypes\x1a!\n\x12GetEntitiesRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a@\n\x13GetEntitiesResponse\x12)\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x17.feast.specs.EntitySpec\x1a\x41\n\x14ListEntitiesResponse\x12)\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x17.feast.specs.EntitySpec\x1a!\n\x12GetFeaturesRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a\x41\n\x13GetFeaturesResponse\x12*\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x18.feast.specs.FeatureSpec\x1a\x42\n\x14ListFeaturesResponse\x12*\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x18.feast.specs.FeatureSpec\x1a \n\x11GetStorageRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a\x44\n\x12GetStorageResponse\x12.\n\x0cstorageSpecs\x18\x01 \x03(\x0b\x32\x18.feast.specs.StorageSpec\x1a\x45\n\x13ListStorageResponse\x12.\n\x0cstorageSpecs\x18\x01 \x03(\x0b\x32\x18.feast.specs.StorageSpec\x1a)\n\x13\x41pplyEntityResponse\x12\x12\n\nentityName\x18\x01 \x01(\t\x1a)\n\x14\x41pplyFeatureResponse\x12\x11\n\tfeatureId\x18\x01 \x01(\t\x1a\x33\n\x19\x41pplyFeatureGroupResponse\x12\x16\n\x0e\x66\x65\x61tureGroupId\x18\x01 \x01(\t\x1a)\n\x14\x41pplyStorageResponse\x12\x11\n\tstorageId\x18\x01 \x01(\t2\x83\x08\n\x0b\x43oreService\x12r\n\x0bGetEntities\x12/.feast.core.CoreServiceTypes.GetEntitiesRequest\x1a\x30.feast.core.CoreServiceTypes.GetEntitiesResponse\"\x00\x12[\n\x0cListEntities\x12\x16.google.protobuf.Empty\x1a\x31.feast.core.CoreServiceTypes.ListEntitiesResponse\"\x00\x12r\n\x0bGetFeatures\x12/.feast.core.CoreServiceTypes.GetFeaturesRequest\x1a\x30.feast.core.CoreServiceTypes.GetFeaturesResponse\"\x00\x12[\n\x0cListFeatures\x12\x16.google.protobuf.Empty\x1a\x31.feast.core.CoreServiceTypes.ListFeaturesResponse\"\x00\x12o\n\nGetStorage\x12..feast.core.CoreServiceTypes.GetStorageRequest\x1a/.feast.core.CoreServiceTypes.GetStorageResponse\"\x00\x12Y\n\x0bListStorage\x12\x16.google.protobuf.Empty\x1a\x30.feast.core.CoreServiceTypes.ListStorageResponse\"\x00\x12]\n\x0c\x41pplyFeature\x12\x18.feast.specs.FeatureSpec\x1a\x31.feast.core.CoreServiceTypes.ApplyFeatureResponse\"\x00\x12l\n\x11\x41pplyFeatureGroup\x12\x1d.feast.specs.FeatureGroupSpec\x1a\x36.feast.core.CoreServiceTypes.ApplyFeatureGroupResponse\"\x00\x12Z\n\x0b\x41pplyEntity\x12\x17.feast.specs.EntitySpec\x1a\x30.feast.core.CoreServiceTypes.ApplyEntityResponse\"\x00\x12]\n\x0c\x41pplyStorage\x12\x18.feast.specs.StorageSpec\x1a\x31.feast.core.CoreServiceTypes.ApplyStorageResponse\"\x00\x42Y\n\nfeast.coreB\x10\x43oreServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + , + dependencies=[feast_dot_specs_dot_EntitySpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureGroupSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_StorageSpec__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,]) + + + + +_CORESERVICETYPES_GETENTITIESREQUEST = _descriptor.Descriptor( + name='GetEntitiesRequest', + full_name='feast.core.CoreServiceTypes.GetEntitiesRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='ids', full_name='feast.core.CoreServiceTypes.GetEntitiesRequest.ids', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=222, + serialized_end=255, +) + +_CORESERVICETYPES_GETENTITIESRESPONSE = _descriptor.Descriptor( + name='GetEntitiesResponse', + full_name='feast.core.CoreServiceTypes.GetEntitiesResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entities', full_name='feast.core.CoreServiceTypes.GetEntitiesResponse.entities', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=257, + serialized_end=321, +) + +_CORESERVICETYPES_LISTENTITIESRESPONSE = _descriptor.Descriptor( + name='ListEntitiesResponse', + full_name='feast.core.CoreServiceTypes.ListEntitiesResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entities', full_name='feast.core.CoreServiceTypes.ListEntitiesResponse.entities', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=323, + serialized_end=388, +) + +_CORESERVICETYPES_GETFEATURESREQUEST = _descriptor.Descriptor( + name='GetFeaturesRequest', + full_name='feast.core.CoreServiceTypes.GetFeaturesRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='ids', full_name='feast.core.CoreServiceTypes.GetFeaturesRequest.ids', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=390, + serialized_end=423, +) + +_CORESERVICETYPES_GETFEATURESRESPONSE = _descriptor.Descriptor( + name='GetFeaturesResponse', + full_name='feast.core.CoreServiceTypes.GetFeaturesResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='features', full_name='feast.core.CoreServiceTypes.GetFeaturesResponse.features', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=425, + serialized_end=490, +) + +_CORESERVICETYPES_LISTFEATURESRESPONSE = _descriptor.Descriptor( + name='ListFeaturesResponse', + full_name='feast.core.CoreServiceTypes.ListFeaturesResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='features', full_name='feast.core.CoreServiceTypes.ListFeaturesResponse.features', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=492, + serialized_end=558, +) + +_CORESERVICETYPES_GETSTORAGEREQUEST = _descriptor.Descriptor( + name='GetStorageRequest', + full_name='feast.core.CoreServiceTypes.GetStorageRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='ids', full_name='feast.core.CoreServiceTypes.GetStorageRequest.ids', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=560, + serialized_end=592, +) + +_CORESERVICETYPES_GETSTORAGERESPONSE = _descriptor.Descriptor( + name='GetStorageResponse', + full_name='feast.core.CoreServiceTypes.GetStorageResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='storageSpecs', full_name='feast.core.CoreServiceTypes.GetStorageResponse.storageSpecs', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=594, + serialized_end=662, +) + +_CORESERVICETYPES_LISTSTORAGERESPONSE = _descriptor.Descriptor( + name='ListStorageResponse', + full_name='feast.core.CoreServiceTypes.ListStorageResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='storageSpecs', full_name='feast.core.CoreServiceTypes.ListStorageResponse.storageSpecs', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=664, + serialized_end=733, +) + +_CORESERVICETYPES_APPLYENTITYRESPONSE = _descriptor.Descriptor( + name='ApplyEntityResponse', + full_name='feast.core.CoreServiceTypes.ApplyEntityResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entityName', full_name='feast.core.CoreServiceTypes.ApplyEntityResponse.entityName', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=735, + serialized_end=776, +) + +_CORESERVICETYPES_APPLYFEATURERESPONSE = _descriptor.Descriptor( + name='ApplyFeatureResponse', + full_name='feast.core.CoreServiceTypes.ApplyFeatureResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='featureId', full_name='feast.core.CoreServiceTypes.ApplyFeatureResponse.featureId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=778, + serialized_end=819, +) + +_CORESERVICETYPES_APPLYFEATUREGROUPRESPONSE = _descriptor.Descriptor( + name='ApplyFeatureGroupResponse', + full_name='feast.core.CoreServiceTypes.ApplyFeatureGroupResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='featureGroupId', full_name='feast.core.CoreServiceTypes.ApplyFeatureGroupResponse.featureGroupId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=821, + serialized_end=872, +) + +_CORESERVICETYPES_APPLYSTORAGERESPONSE = _descriptor.Descriptor( + name='ApplyStorageResponse', + full_name='feast.core.CoreServiceTypes.ApplyStorageResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='storageId', full_name='feast.core.CoreServiceTypes.ApplyStorageResponse.storageId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=874, + serialized_end=915, +) + +_CORESERVICETYPES = _descriptor.Descriptor( + name='CoreServiceTypes', + full_name='feast.core.CoreServiceTypes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[_CORESERVICETYPES_GETENTITIESREQUEST, _CORESERVICETYPES_GETENTITIESRESPONSE, _CORESERVICETYPES_LISTENTITIESRESPONSE, _CORESERVICETYPES_GETFEATURESREQUEST, _CORESERVICETYPES_GETFEATURESRESPONSE, _CORESERVICETYPES_LISTFEATURESRESPONSE, _CORESERVICETYPES_GETSTORAGEREQUEST, _CORESERVICETYPES_GETSTORAGERESPONSE, _CORESERVICETYPES_LISTSTORAGERESPONSE, _CORESERVICETYPES_APPLYENTITYRESPONSE, _CORESERVICETYPES_APPLYFEATURERESPONSE, _CORESERVICETYPES_APPLYFEATUREGROUPRESPONSE, _CORESERVICETYPES_APPLYSTORAGERESPONSE, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=202, + serialized_end=915, +) + +_CORESERVICETYPES_GETENTITIESREQUEST.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_GETENTITIESRESPONSE.fields_by_name['entities'].message_type = feast_dot_specs_dot_EntitySpec__pb2._ENTITYSPEC +_CORESERVICETYPES_GETENTITIESRESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_LISTENTITIESRESPONSE.fields_by_name['entities'].message_type = feast_dot_specs_dot_EntitySpec__pb2._ENTITYSPEC +_CORESERVICETYPES_LISTENTITIESRESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_GETFEATURESREQUEST.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_GETFEATURESRESPONSE.fields_by_name['features'].message_type = feast_dot_specs_dot_FeatureSpec__pb2._FEATURESPEC +_CORESERVICETYPES_GETFEATURESRESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_LISTFEATURESRESPONSE.fields_by_name['features'].message_type = feast_dot_specs_dot_FeatureSpec__pb2._FEATURESPEC +_CORESERVICETYPES_LISTFEATURESRESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_GETSTORAGEREQUEST.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_GETSTORAGERESPONSE.fields_by_name['storageSpecs'].message_type = feast_dot_specs_dot_StorageSpec__pb2._STORAGESPEC +_CORESERVICETYPES_GETSTORAGERESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_LISTSTORAGERESPONSE.fields_by_name['storageSpecs'].message_type = feast_dot_specs_dot_StorageSpec__pb2._STORAGESPEC +_CORESERVICETYPES_LISTSTORAGERESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_APPLYENTITYRESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_APPLYFEATURERESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_APPLYFEATUREGROUPRESPONSE.containing_type = _CORESERVICETYPES +_CORESERVICETYPES_APPLYSTORAGERESPONSE.containing_type = _CORESERVICETYPES +DESCRIPTOR.message_types_by_name['CoreServiceTypes'] = _CORESERVICETYPES +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +CoreServiceTypes = _reflection.GeneratedProtocolMessageType('CoreServiceTypes', (_message.Message,), dict( + + GetEntitiesRequest = _reflection.GeneratedProtocolMessageType('GetEntitiesRequest', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_GETENTITIESREQUEST, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.GetEntitiesRequest) + )) + , + + GetEntitiesResponse = _reflection.GeneratedProtocolMessageType('GetEntitiesResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_GETENTITIESRESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.GetEntitiesResponse) + )) + , + + ListEntitiesResponse = _reflection.GeneratedProtocolMessageType('ListEntitiesResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_LISTENTITIESRESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.ListEntitiesResponse) + )) + , + + GetFeaturesRequest = _reflection.GeneratedProtocolMessageType('GetFeaturesRequest', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_GETFEATURESREQUEST, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.GetFeaturesRequest) + )) + , + + GetFeaturesResponse = _reflection.GeneratedProtocolMessageType('GetFeaturesResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_GETFEATURESRESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.GetFeaturesResponse) + )) + , + + ListFeaturesResponse = _reflection.GeneratedProtocolMessageType('ListFeaturesResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_LISTFEATURESRESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.ListFeaturesResponse) + )) + , + + GetStorageRequest = _reflection.GeneratedProtocolMessageType('GetStorageRequest', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_GETSTORAGEREQUEST, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.GetStorageRequest) + )) + , + + GetStorageResponse = _reflection.GeneratedProtocolMessageType('GetStorageResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_GETSTORAGERESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.GetStorageResponse) + )) + , + + ListStorageResponse = _reflection.GeneratedProtocolMessageType('ListStorageResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_LISTSTORAGERESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.ListStorageResponse) + )) + , + + ApplyEntityResponse = _reflection.GeneratedProtocolMessageType('ApplyEntityResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_APPLYENTITYRESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.ApplyEntityResponse) + )) + , + + ApplyFeatureResponse = _reflection.GeneratedProtocolMessageType('ApplyFeatureResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_APPLYFEATURERESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.ApplyFeatureResponse) + )) + , + + ApplyFeatureGroupResponse = _reflection.GeneratedProtocolMessageType('ApplyFeatureGroupResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_APPLYFEATUREGROUPRESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.ApplyFeatureGroupResponse) + )) + , + + ApplyStorageResponse = _reflection.GeneratedProtocolMessageType('ApplyStorageResponse', (_message.Message,), dict( + DESCRIPTOR = _CORESERVICETYPES_APPLYSTORAGERESPONSE, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes.ApplyStorageResponse) + )) + , + DESCRIPTOR = _CORESERVICETYPES, + __module__ = 'feast.core.CoreService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.CoreServiceTypes) + )) +_sym_db.RegisterMessage(CoreServiceTypes) +_sym_db.RegisterMessage(CoreServiceTypes.GetEntitiesRequest) +_sym_db.RegisterMessage(CoreServiceTypes.GetEntitiesResponse) +_sym_db.RegisterMessage(CoreServiceTypes.ListEntitiesResponse) +_sym_db.RegisterMessage(CoreServiceTypes.GetFeaturesRequest) +_sym_db.RegisterMessage(CoreServiceTypes.GetFeaturesResponse) +_sym_db.RegisterMessage(CoreServiceTypes.ListFeaturesResponse) +_sym_db.RegisterMessage(CoreServiceTypes.GetStorageRequest) +_sym_db.RegisterMessage(CoreServiceTypes.GetStorageResponse) +_sym_db.RegisterMessage(CoreServiceTypes.ListStorageResponse) +_sym_db.RegisterMessage(CoreServiceTypes.ApplyEntityResponse) +_sym_db.RegisterMessage(CoreServiceTypes.ApplyFeatureResponse) +_sym_db.RegisterMessage(CoreServiceTypes.ApplyFeatureGroupResponse) +_sym_db.RegisterMessage(CoreServiceTypes.ApplyStorageResponse) + + +DESCRIPTOR._options = None + +_CORESERVICE = _descriptor.ServiceDescriptor( + name='CoreService', + full_name='feast.core.CoreService', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=918, + serialized_end=1945, + methods=[ + _descriptor.MethodDescriptor( + name='GetEntities', + full_name='feast.core.CoreService.GetEntities', + index=0, + containing_service=None, + input_type=_CORESERVICETYPES_GETENTITIESREQUEST, + output_type=_CORESERVICETYPES_GETENTITIESRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListEntities', + full_name='feast.core.CoreService.ListEntities', + index=1, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_CORESERVICETYPES_LISTENTITIESRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='GetFeatures', + full_name='feast.core.CoreService.GetFeatures', + index=2, + containing_service=None, + input_type=_CORESERVICETYPES_GETFEATURESREQUEST, + output_type=_CORESERVICETYPES_GETFEATURESRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListFeatures', + full_name='feast.core.CoreService.ListFeatures', + index=3, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_CORESERVICETYPES_LISTFEATURESRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='GetStorage', + full_name='feast.core.CoreService.GetStorage', + index=4, + containing_service=None, + input_type=_CORESERVICETYPES_GETSTORAGEREQUEST, + output_type=_CORESERVICETYPES_GETSTORAGERESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListStorage', + full_name='feast.core.CoreService.ListStorage', + index=5, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_CORESERVICETYPES_LISTSTORAGERESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ApplyFeature', + full_name='feast.core.CoreService.ApplyFeature', + index=6, + containing_service=None, + input_type=feast_dot_specs_dot_FeatureSpec__pb2._FEATURESPEC, + output_type=_CORESERVICETYPES_APPLYFEATURERESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ApplyFeatureGroup', + full_name='feast.core.CoreService.ApplyFeatureGroup', + index=7, + containing_service=None, + input_type=feast_dot_specs_dot_FeatureGroupSpec__pb2._FEATUREGROUPSPEC, + output_type=_CORESERVICETYPES_APPLYFEATUREGROUPRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ApplyEntity', + full_name='feast.core.CoreService.ApplyEntity', + index=8, + containing_service=None, + input_type=feast_dot_specs_dot_EntitySpec__pb2._ENTITYSPEC, + output_type=_CORESERVICETYPES_APPLYENTITYRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ApplyStorage', + full_name='feast.core.CoreService.ApplyStorage', + index=9, + containing_service=None, + input_type=feast_dot_specs_dot_StorageSpec__pb2._STORAGESPEC, + output_type=_CORESERVICETYPES_APPLYSTORAGERESPONSE, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_CORESERVICE) + +DESCRIPTOR.services_by_name['CoreService'] = _CORESERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/core/CoreService_pb2_grpc.py b/sdk/python/feast/core/CoreService_pb2_grpc.py new file mode 100644 index 00000000000..6331551fda6 --- /dev/null +++ b/sdk/python/feast/core/CoreService_pb2_grpc.py @@ -0,0 +1,224 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +from feast.core import CoreService_pb2 as feast_dot_core_dot_CoreService__pb2 +from feast.specs import EntitySpec_pb2 as feast_dot_specs_dot_EntitySpec__pb2 +from feast.specs import FeatureGroupSpec_pb2 as feast_dot_specs_dot_FeatureGroupSpec__pb2 +from feast.specs import FeatureSpec_pb2 as feast_dot_specs_dot_FeatureSpec__pb2 +from feast.specs import StorageSpec_pb2 as feast_dot_specs_dot_StorageSpec__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +class CoreServiceStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetEntities = channel.unary_unary( + '/feast.core.CoreService/GetEntities', + request_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetEntitiesRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetEntitiesResponse.FromString, + ) + self.ListEntities = channel.unary_unary( + '/feast.core.CoreService/ListEntities', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ListEntitiesResponse.FromString, + ) + self.GetFeatures = channel.unary_unary( + '/feast.core.CoreService/GetFeatures', + request_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetFeaturesRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetFeaturesResponse.FromString, + ) + self.ListFeatures = channel.unary_unary( + '/feast.core.CoreService/ListFeatures', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ListFeaturesResponse.FromString, + ) + self.GetStorage = channel.unary_unary( + '/feast.core.CoreService/GetStorage', + request_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetStorageRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetStorageResponse.FromString, + ) + self.ListStorage = channel.unary_unary( + '/feast.core.CoreService/ListStorage', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ListStorageResponse.FromString, + ) + self.ApplyFeature = channel.unary_unary( + '/feast.core.CoreService/ApplyFeature', + request_serializer=feast_dot_specs_dot_FeatureSpec__pb2.FeatureSpec.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyFeatureResponse.FromString, + ) + self.ApplyFeatureGroup = channel.unary_unary( + '/feast.core.CoreService/ApplyFeatureGroup', + request_serializer=feast_dot_specs_dot_FeatureGroupSpec__pb2.FeatureGroupSpec.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyFeatureGroupResponse.FromString, + ) + self.ApplyEntity = channel.unary_unary( + '/feast.core.CoreService/ApplyEntity', + request_serializer=feast_dot_specs_dot_EntitySpec__pb2.EntitySpec.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyEntityResponse.FromString, + ) + self.ApplyStorage = channel.unary_unary( + '/feast.core.CoreService/ApplyStorage', + request_serializer=feast_dot_specs_dot_StorageSpec__pb2.StorageSpec.SerializeToString, + response_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyStorageResponse.FromString, + ) + + +class CoreServiceServicer(object): + # missing associated documentation comment in .proto file + pass + + def GetEntities(self, request, context): + """ + Get entities specified in request. + This process returns a list of entity specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListEntities(self, request, context): + """ + Get all entities + This process returns a list of entity specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetFeatures(self, request, context): + """ + Get features specified in request. + This process returns a list of feature specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListFeatures(self, request, context): + """ + Get all features. + This process returns a list of entity specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetStorage(self, request, context): + """ + Get storage specs specified in request. + This process returns a list of storage specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListStorage(self, request, context): + """ + Get all storage specs. + This process returns a list of storage specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyFeature(self, request, context): + """ + Register a new feature to the metadata store, or update an existing feature. + If any validation errors occur, only the first encountered error will be returned. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyFeatureGroup(self, request, context): + """ + Register a new feature group to the metadata store, or update an existing feature group. + If any validation errors occur, only the first encountered error will be returned. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyEntity(self, request, context): + """ + Register a new entity to the metadata store, or update an existing entity. + If any validation errors occur, only the first encountered error will be returned. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyStorage(self, request, context): + """ + Register a new storage spec to the metadata store, or update an existing storage. + If any validation errors occur, only the first encountered error will be returned. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_CoreServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetEntities': grpc.unary_unary_rpc_method_handler( + servicer.GetEntities, + request_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetEntitiesRequest.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetEntitiesResponse.SerializeToString, + ), + 'ListEntities': grpc.unary_unary_rpc_method_handler( + servicer.ListEntities, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ListEntitiesResponse.SerializeToString, + ), + 'GetFeatures': grpc.unary_unary_rpc_method_handler( + servicer.GetFeatures, + request_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetFeaturesRequest.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetFeaturesResponse.SerializeToString, + ), + 'ListFeatures': grpc.unary_unary_rpc_method_handler( + servicer.ListFeatures, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ListFeaturesResponse.SerializeToString, + ), + 'GetStorage': grpc.unary_unary_rpc_method_handler( + servicer.GetStorage, + request_deserializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetStorageRequest.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.GetStorageResponse.SerializeToString, + ), + 'ListStorage': grpc.unary_unary_rpc_method_handler( + servicer.ListStorage, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ListStorageResponse.SerializeToString, + ), + 'ApplyFeature': grpc.unary_unary_rpc_method_handler( + servicer.ApplyFeature, + request_deserializer=feast_dot_specs_dot_FeatureSpec__pb2.FeatureSpec.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyFeatureResponse.SerializeToString, + ), + 'ApplyFeatureGroup': grpc.unary_unary_rpc_method_handler( + servicer.ApplyFeatureGroup, + request_deserializer=feast_dot_specs_dot_FeatureGroupSpec__pb2.FeatureGroupSpec.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyFeatureGroupResponse.SerializeToString, + ), + 'ApplyEntity': grpc.unary_unary_rpc_method_handler( + servicer.ApplyEntity, + request_deserializer=feast_dot_specs_dot_EntitySpec__pb2.EntitySpec.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyEntityResponse.SerializeToString, + ), + 'ApplyStorage': grpc.unary_unary_rpc_method_handler( + servicer.ApplyStorage, + request_deserializer=feast_dot_specs_dot_StorageSpec__pb2.StorageSpec.FromString, + response_serializer=feast_dot_core_dot_CoreService__pb2.CoreServiceTypes.ApplyStorageResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.core.CoreService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/sdk/python/feast/core/JobService_pb2.py b/sdk/python/feast/core/JobService_pb2.py new file mode 100644 index 00000000000..a759749108f --- /dev/null +++ b/sdk/python/feast/core/JobService_pb2.py @@ -0,0 +1,553 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/JobService.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.specs import ImportSpec_pb2 as feast_dot_specs_dot_ImportSpec__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/core/JobService.proto', + package='feast.core', + syntax='proto3', + serialized_options=_b('\n\nfeast.coreB\017JobServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n\x1b\x66\x65\x61st/core/JobService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/ImportSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc9\x05\n\x0fJobServiceTypes\x1aS\n\x16SubmitImportJobRequest\x12+\n\nimportSpec\x18\x01 \x01(\x0b\x32\x17.feast.specs.ImportSpec\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a(\n\x17SubmitImportJobResponse\x12\r\n\x05jobId\x18\x01 \x01(\t\x1aG\n\x10ListJobsResponse\x12\x33\n\x04jobs\x18\x01 \x03(\x0b\x32%.feast.core.JobServiceTypes.JobDetail\x1a\x1b\n\rGetJobRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a\x44\n\x0eGetJobResponse\x12\x32\n\x03job\x18\x01 \x01(\x0b\x32%.feast.core.JobServiceTypes.JobDetail\x1a\x1d\n\x0f\x41\x62ortJobRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a\x1e\n\x10\x41\x62ortJobResponse\x12\n\n\x02id\x18\x01 \x01(\t\x1a\xcb\x02\n\tJobDetail\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05\x65xtId\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0e\n\x06runner\x18\x04 \x01(\t\x12\x0e\n\x06status\x18\x05 \x01(\t\x12\x10\n\x08\x65ntities\x18\x06 \x03(\t\x12\x10\n\x08\x66\x65\x61tures\x18\x07 \x03(\t\x12\x43\n\x07metrics\x18\x08 \x03(\x0b\x32\x32.feast.core.JobServiceTypes.JobDetail.MetricsEntry\x12/\n\x0blastUpdated\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x63reated\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a.\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x32\x9c\x03\n\nJobService\x12t\n\tSubmitJob\x12\x32.feast.core.JobServiceTypes.SubmitImportJobRequest\x1a\x33.feast.core.JobServiceTypes.SubmitImportJobResponse\x12P\n\x08ListJobs\x12\x16.google.protobuf.Empty\x1a,.feast.core.JobServiceTypes.ListJobsResponse\x12_\n\x06GetJob\x12).feast.core.JobServiceTypes.GetJobRequest\x1a*.feast.core.JobServiceTypes.GetJobResponse\x12\x65\n\x08\x41\x62ortJob\x12+.feast.core.JobServiceTypes.AbortJobRequest\x1a,.feast.core.JobServiceTypes.AbortJobResponseBX\n\nfeast.coreB\x0fJobServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + , + dependencies=[feast_dot_specs_dot_ImportSpec__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + + + + +_JOBSERVICETYPES_SUBMITIMPORTJOBREQUEST = _descriptor.Descriptor( + name='SubmitImportJobRequest', + full_name='feast.core.JobServiceTypes.SubmitImportJobRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='importSpec', full_name='feast.core.JobServiceTypes.SubmitImportJobRequest.importSpec', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='name', full_name='feast.core.JobServiceTypes.SubmitImportJobRequest.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=155, + serialized_end=238, +) + +_JOBSERVICETYPES_SUBMITIMPORTJOBRESPONSE = _descriptor.Descriptor( + name='SubmitImportJobResponse', + full_name='feast.core.JobServiceTypes.SubmitImportJobResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='jobId', full_name='feast.core.JobServiceTypes.SubmitImportJobResponse.jobId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=240, + serialized_end=280, +) + +_JOBSERVICETYPES_LISTJOBSRESPONSE = _descriptor.Descriptor( + name='ListJobsResponse', + full_name='feast.core.JobServiceTypes.ListJobsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='jobs', full_name='feast.core.JobServiceTypes.ListJobsResponse.jobs', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=282, + serialized_end=353, +) + +_JOBSERVICETYPES_GETJOBREQUEST = _descriptor.Descriptor( + name='GetJobRequest', + full_name='feast.core.JobServiceTypes.GetJobRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.JobServiceTypes.GetJobRequest.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=355, + serialized_end=382, +) + +_JOBSERVICETYPES_GETJOBRESPONSE = _descriptor.Descriptor( + name='GetJobResponse', + full_name='feast.core.JobServiceTypes.GetJobResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='job', full_name='feast.core.JobServiceTypes.GetJobResponse.job', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=384, + serialized_end=452, +) + +_JOBSERVICETYPES_ABORTJOBREQUEST = _descriptor.Descriptor( + name='AbortJobRequest', + full_name='feast.core.JobServiceTypes.AbortJobRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.JobServiceTypes.AbortJobRequest.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=454, + serialized_end=483, +) + +_JOBSERVICETYPES_ABORTJOBRESPONSE = _descriptor.Descriptor( + name='AbortJobResponse', + full_name='feast.core.JobServiceTypes.AbortJobResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.JobServiceTypes.AbortJobResponse.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=485, + serialized_end=515, +) + +_JOBSERVICETYPES_JOBDETAIL_METRICSENTRY = _descriptor.Descriptor( + name='MetricsEntry', + full_name='feast.core.JobServiceTypes.JobDetail.MetricsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='feast.core.JobServiceTypes.JobDetail.MetricsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='value', full_name='feast.core.JobServiceTypes.JobDetail.MetricsEntry.value', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=_b('8\001'), + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=803, + serialized_end=849, +) + +_JOBSERVICETYPES_JOBDETAIL = _descriptor.Descriptor( + name='JobDetail', + full_name='feast.core.JobServiceTypes.JobDetail', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.JobServiceTypes.JobDetail.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='extId', full_name='feast.core.JobServiceTypes.JobDetail.extId', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='type', full_name='feast.core.JobServiceTypes.JobDetail.type', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='runner', full_name='feast.core.JobServiceTypes.JobDetail.runner', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='status', full_name='feast.core.JobServiceTypes.JobDetail.status', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entities', full_name='feast.core.JobServiceTypes.JobDetail.entities', index=5, + number=6, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='features', full_name='feast.core.JobServiceTypes.JobDetail.features', index=6, + number=7, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='metrics', full_name='feast.core.JobServiceTypes.JobDetail.metrics', index=7, + number=8, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lastUpdated', full_name='feast.core.JobServiceTypes.JobDetail.lastUpdated', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='created', full_name='feast.core.JobServiceTypes.JobDetail.created', index=9, + number=10, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[_JOBSERVICETYPES_JOBDETAIL_METRICSENTRY, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=518, + serialized_end=849, +) + +_JOBSERVICETYPES = _descriptor.Descriptor( + name='JobServiceTypes', + full_name='feast.core.JobServiceTypes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[_JOBSERVICETYPES_SUBMITIMPORTJOBREQUEST, _JOBSERVICETYPES_SUBMITIMPORTJOBRESPONSE, _JOBSERVICETYPES_LISTJOBSRESPONSE, _JOBSERVICETYPES_GETJOBREQUEST, _JOBSERVICETYPES_GETJOBRESPONSE, _JOBSERVICETYPES_ABORTJOBREQUEST, _JOBSERVICETYPES_ABORTJOBRESPONSE, _JOBSERVICETYPES_JOBDETAIL, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=136, + serialized_end=849, +) + +_JOBSERVICETYPES_SUBMITIMPORTJOBREQUEST.fields_by_name['importSpec'].message_type = feast_dot_specs_dot_ImportSpec__pb2._IMPORTSPEC +_JOBSERVICETYPES_SUBMITIMPORTJOBREQUEST.containing_type = _JOBSERVICETYPES +_JOBSERVICETYPES_SUBMITIMPORTJOBRESPONSE.containing_type = _JOBSERVICETYPES +_JOBSERVICETYPES_LISTJOBSRESPONSE.fields_by_name['jobs'].message_type = _JOBSERVICETYPES_JOBDETAIL +_JOBSERVICETYPES_LISTJOBSRESPONSE.containing_type = _JOBSERVICETYPES +_JOBSERVICETYPES_GETJOBREQUEST.containing_type = _JOBSERVICETYPES +_JOBSERVICETYPES_GETJOBRESPONSE.fields_by_name['job'].message_type = _JOBSERVICETYPES_JOBDETAIL +_JOBSERVICETYPES_GETJOBRESPONSE.containing_type = _JOBSERVICETYPES +_JOBSERVICETYPES_ABORTJOBREQUEST.containing_type = _JOBSERVICETYPES +_JOBSERVICETYPES_ABORTJOBRESPONSE.containing_type = _JOBSERVICETYPES +_JOBSERVICETYPES_JOBDETAIL_METRICSENTRY.containing_type = _JOBSERVICETYPES_JOBDETAIL +_JOBSERVICETYPES_JOBDETAIL.fields_by_name['metrics'].message_type = _JOBSERVICETYPES_JOBDETAIL_METRICSENTRY +_JOBSERVICETYPES_JOBDETAIL.fields_by_name['lastUpdated'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_JOBSERVICETYPES_JOBDETAIL.fields_by_name['created'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_JOBSERVICETYPES_JOBDETAIL.containing_type = _JOBSERVICETYPES +DESCRIPTOR.message_types_by_name['JobServiceTypes'] = _JOBSERVICETYPES +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +JobServiceTypes = _reflection.GeneratedProtocolMessageType('JobServiceTypes', (_message.Message,), dict( + + SubmitImportJobRequest = _reflection.GeneratedProtocolMessageType('SubmitImportJobRequest', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_SUBMITIMPORTJOBREQUEST, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.SubmitImportJobRequest) + )) + , + + SubmitImportJobResponse = _reflection.GeneratedProtocolMessageType('SubmitImportJobResponse', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_SUBMITIMPORTJOBRESPONSE, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.SubmitImportJobResponse) + )) + , + + ListJobsResponse = _reflection.GeneratedProtocolMessageType('ListJobsResponse', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_LISTJOBSRESPONSE, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.ListJobsResponse) + )) + , + + GetJobRequest = _reflection.GeneratedProtocolMessageType('GetJobRequest', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_GETJOBREQUEST, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.GetJobRequest) + )) + , + + GetJobResponse = _reflection.GeneratedProtocolMessageType('GetJobResponse', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_GETJOBRESPONSE, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.GetJobResponse) + )) + , + + AbortJobRequest = _reflection.GeneratedProtocolMessageType('AbortJobRequest', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_ABORTJOBREQUEST, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.AbortJobRequest) + )) + , + + AbortJobResponse = _reflection.GeneratedProtocolMessageType('AbortJobResponse', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_ABORTJOBRESPONSE, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.AbortJobResponse) + )) + , + + JobDetail = _reflection.GeneratedProtocolMessageType('JobDetail', (_message.Message,), dict( + + MetricsEntry = _reflection.GeneratedProtocolMessageType('MetricsEntry', (_message.Message,), dict( + DESCRIPTOR = _JOBSERVICETYPES_JOBDETAIL_METRICSENTRY, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.JobDetail.MetricsEntry) + )) + , + DESCRIPTOR = _JOBSERVICETYPES_JOBDETAIL, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes.JobDetail) + )) + , + DESCRIPTOR = _JOBSERVICETYPES, + __module__ = 'feast.core.JobService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.JobServiceTypes) + )) +_sym_db.RegisterMessage(JobServiceTypes) +_sym_db.RegisterMessage(JobServiceTypes.SubmitImportJobRequest) +_sym_db.RegisterMessage(JobServiceTypes.SubmitImportJobResponse) +_sym_db.RegisterMessage(JobServiceTypes.ListJobsResponse) +_sym_db.RegisterMessage(JobServiceTypes.GetJobRequest) +_sym_db.RegisterMessage(JobServiceTypes.GetJobResponse) +_sym_db.RegisterMessage(JobServiceTypes.AbortJobRequest) +_sym_db.RegisterMessage(JobServiceTypes.AbortJobResponse) +_sym_db.RegisterMessage(JobServiceTypes.JobDetail) +_sym_db.RegisterMessage(JobServiceTypes.JobDetail.MetricsEntry) + + +DESCRIPTOR._options = None +_JOBSERVICETYPES_JOBDETAIL_METRICSENTRY._options = None + +_JOBSERVICE = _descriptor.ServiceDescriptor( + name='JobService', + full_name='feast.core.JobService', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=852, + serialized_end=1264, + methods=[ + _descriptor.MethodDescriptor( + name='SubmitJob', + full_name='feast.core.JobService.SubmitJob', + index=0, + containing_service=None, + input_type=_JOBSERVICETYPES_SUBMITIMPORTJOBREQUEST, + output_type=_JOBSERVICETYPES_SUBMITIMPORTJOBRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListJobs', + full_name='feast.core.JobService.ListJobs', + index=1, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_JOBSERVICETYPES_LISTJOBSRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='GetJob', + full_name='feast.core.JobService.GetJob', + index=2, + containing_service=None, + input_type=_JOBSERVICETYPES_GETJOBREQUEST, + output_type=_JOBSERVICETYPES_GETJOBRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='AbortJob', + full_name='feast.core.JobService.AbortJob', + index=3, + containing_service=None, + input_type=_JOBSERVICETYPES_ABORTJOBREQUEST, + output_type=_JOBSERVICETYPES_ABORTJOBRESPONSE, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_JOBSERVICE) + +DESCRIPTOR.services_by_name['JobService'] = _JOBSERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/core/JobService_pb2_grpc.py b/sdk/python/feast/core/JobService_pb2_grpc.py new file mode 100644 index 00000000000..4a1ebf66c03 --- /dev/null +++ b/sdk/python/feast/core/JobService_pb2_grpc.py @@ -0,0 +1,98 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +from feast.core import JobService_pb2 as feast_dot_core_dot_JobService__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +class JobServiceStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.SubmitJob = channel.unary_unary( + '/feast.core.JobService/SubmitJob', + request_serializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.SubmitImportJobRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.SubmitImportJobResponse.FromString, + ) + self.ListJobs = channel.unary_unary( + '/feast.core.JobService/ListJobs', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.ListJobsResponse.FromString, + ) + self.GetJob = channel.unary_unary( + '/feast.core.JobService/GetJob', + request_serializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.GetJobRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.GetJobResponse.FromString, + ) + self.AbortJob = channel.unary_unary( + '/feast.core.JobService/AbortJob', + request_serializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.AbortJobRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.AbortJobResponse.FromString, + ) + + +class JobServiceServicer(object): + # missing associated documentation comment in .proto file + pass + + def SubmitJob(self, request, context): + """Submit a job to feast to run. Returns the job id. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListJobs(self, request, context): + """List all jobs submitted to feast. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetJob(self, request, context): + """Get Job with ID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AbortJob(self, request, context): + """Abort job with given ID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_JobServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'SubmitJob': grpc.unary_unary_rpc_method_handler( + servicer.SubmitJob, + request_deserializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.SubmitImportJobRequest.FromString, + response_serializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.SubmitImportJobResponse.SerializeToString, + ), + 'ListJobs': grpc.unary_unary_rpc_method_handler( + servicer.ListJobs, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.ListJobsResponse.SerializeToString, + ), + 'GetJob': grpc.unary_unary_rpc_method_handler( + servicer.GetJob, + request_deserializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.GetJobRequest.FromString, + response_serializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.GetJobResponse.SerializeToString, + ), + 'AbortJob': grpc.unary_unary_rpc_method_handler( + servicer.AbortJob, + request_deserializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.AbortJobRequest.FromString, + response_serializer=feast_dot_core_dot_JobService__pb2.JobServiceTypes.AbortJobResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.core.JobService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/sdk/python/feast/core/UIService_pb2.py b/sdk/python/feast/core/UIService_pb2.py new file mode 100644 index 00000000000..623923144be --- /dev/null +++ b/sdk/python/feast/core/UIService_pb2.py @@ -0,0 +1,869 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/UIService.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.specs import EntitySpec_pb2 as feast_dot_specs_dot_EntitySpec__pb2 +from feast.specs import FeatureSpec_pb2 as feast_dot_specs_dot_FeatureSpec__pb2 +from feast.specs import FeatureGroupSpec_pb2 as feast_dot_specs_dot_FeatureGroupSpec__pb2 +from feast.specs import StorageSpec_pb2 as feast_dot_specs_dot_StorageSpec__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/core/UIService.proto', + package='feast.core', + syntax='proto3', + serialized_options=_b('\n\nfeast.coreB\016UIServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n\x1a\x66\x65\x61st/core/UIService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/EntitySpec.proto\x1a\x1d\x66\x65\x61st/specs/FeatureSpec.proto\x1a\"feast/specs/FeatureGroupSpec.proto\x1a\x1d\x66\x65\x61st/specs/StorageSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x90\x0b\n\x0eUIServiceTypes\x1at\n\x0c\x45ntityDetail\x12%\n\x04spec\x18\x01 \x01(\x0b\x32\x17.feast.specs.EntitySpec\x12\x0c\n\x04jobs\x18\x02 \x03(\t\x12/\n\x0blastUpdated\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1e\n\x10GetEntityRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1aL\n\x11GetEntityResponse\x12\x37\n\x06\x65ntity\x18\x01 \x01(\x0b\x32\'.feast.core.UIServiceTypes.EntityDetail\x1aQ\n\x14ListEntitiesResponse\x12\x39\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\'.feast.core.UIServiceTypes.EntityDetail\x1a\xca\x01\n\rFeatureDetail\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.specs.FeatureSpec\x12\x14\n\x0c\x62igqueryView\x18\x02 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x03 \x01(\x08\x12\x0c\n\x04jobs\x18\x04 \x03(\t\x12/\n\x0blastUpdated\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x63reated\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1f\n\x11GetFeatureRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1az\n\x12GetFeatureResponse\x12\x39\n\x07\x66\x65\x61ture\x18\x01 \x01(\x0b\x32(.feast.core.UIServiceTypes.FeatureDetail\x12)\n\x07rawSpec\x18\x02 \x01(\x0b\x32\x18.feast.specs.FeatureSpec\x1aR\n\x14ListFeaturesResponse\x12:\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32(.feast.core.UIServiceTypes.FeatureDetail\x1ar\n\x12\x46\x65\x61tureGroupDetail\x12+\n\x04spec\x18\x01 \x01(\x0b\x32\x1d.feast.specs.FeatureGroupSpec\x12/\n\x0blastUpdated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a$\n\x16GetFeatureGroupRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a^\n\x17GetFeatureGroupResponse\x12\x43\n\x0c\x66\x65\x61tureGroup\x18\x01 \x01(\x0b\x32-.feast.core.UIServiceTypes.FeatureGroupDetail\x1a\x61\n\x19ListFeatureGroupsResponse\x12\x44\n\rfeatureGroups\x18\x01 \x03(\x0b\x32-.feast.core.UIServiceTypes.FeatureGroupDetail\x1ah\n\rStorageDetail\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.specs.StorageSpec\x12/\n\x0blastUpdated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1f\n\x11GetStorageRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1aO\n\x12GetStorageResponse\x12\x39\n\x07storage\x18\x01 \x01(\x0b\x32(.feast.core.UIServiceTypes.StorageDetail\x1aP\n\x13ListStorageResponse\x12\x39\n\x07storage\x18\x01 \x03(\x0b\x32(.feast.core.UIServiceTypes.StorageDetail2\xbf\x06\n\tUIService\x12h\n\tGetEntity\x12+.feast.core.UIServiceTypes.GetEntityRequest\x1a,.feast.core.UIServiceTypes.GetEntityResponse\"\x00\x12Y\n\x0cListEntities\x12\x16.google.protobuf.Empty\x1a/.feast.core.UIServiceTypes.ListEntitiesResponse\"\x00\x12k\n\nGetFeature\x12,.feast.core.UIServiceTypes.GetFeatureRequest\x1a-.feast.core.UIServiceTypes.GetFeatureResponse\"\x00\x12Y\n\x0cListFeatures\x12\x16.google.protobuf.Empty\x1a/.feast.core.UIServiceTypes.ListFeaturesResponse\"\x00\x12z\n\x0fGetFeatureGroup\x12\x31.feast.core.UIServiceTypes.GetFeatureGroupRequest\x1a\x32.feast.core.UIServiceTypes.GetFeatureGroupResponse\"\x00\x12\x63\n\x11ListFeatureGroups\x12\x16.google.protobuf.Empty\x1a\x34.feast.core.UIServiceTypes.ListFeatureGroupsResponse\"\x00\x12k\n\nGetStorage\x12,.feast.core.UIServiceTypes.GetStorageRequest\x1a-.feast.core.UIServiceTypes.GetStorageResponse\"\x00\x12W\n\x0bListStorage\x12\x16.google.protobuf.Empty\x1a..feast.core.UIServiceTypes.ListStorageResponse\"\x00\x42W\n\nfeast.coreB\x0eUIServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + , + dependencies=[feast_dot_specs_dot_EntitySpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureGroupSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_StorageSpec__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + + + + +_UISERVICETYPES_ENTITYDETAIL = _descriptor.Descriptor( + name='EntityDetail', + full_name='feast.core.UIServiceTypes.EntityDetail', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='spec', full_name='feast.core.UIServiceTypes.EntityDetail.spec', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jobs', full_name='feast.core.UIServiceTypes.EntityDetail.jobs', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lastUpdated', full_name='feast.core.UIServiceTypes.EntityDetail.lastUpdated', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=251, + serialized_end=367, +) + +_UISERVICETYPES_GETENTITYREQUEST = _descriptor.Descriptor( + name='GetEntityRequest', + full_name='feast.core.UIServiceTypes.GetEntityRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.UIServiceTypes.GetEntityRequest.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=369, + serialized_end=399, +) + +_UISERVICETYPES_GETENTITYRESPONSE = _descriptor.Descriptor( + name='GetEntityResponse', + full_name='feast.core.UIServiceTypes.GetEntityResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entity', full_name='feast.core.UIServiceTypes.GetEntityResponse.entity', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=401, + serialized_end=477, +) + +_UISERVICETYPES_LISTENTITIESRESPONSE = _descriptor.Descriptor( + name='ListEntitiesResponse', + full_name='feast.core.UIServiceTypes.ListEntitiesResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entities', full_name='feast.core.UIServiceTypes.ListEntitiesResponse.entities', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=479, + serialized_end=560, +) + +_UISERVICETYPES_FEATUREDETAIL = _descriptor.Descriptor( + name='FeatureDetail', + full_name='feast.core.UIServiceTypes.FeatureDetail', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='spec', full_name='feast.core.UIServiceTypes.FeatureDetail.spec', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='bigqueryView', full_name='feast.core.UIServiceTypes.FeatureDetail.bigqueryView', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='enabled', full_name='feast.core.UIServiceTypes.FeatureDetail.enabled', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jobs', full_name='feast.core.UIServiceTypes.FeatureDetail.jobs', index=3, + number=4, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lastUpdated', full_name='feast.core.UIServiceTypes.FeatureDetail.lastUpdated', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='created', full_name='feast.core.UIServiceTypes.FeatureDetail.created', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=563, + serialized_end=765, +) + +_UISERVICETYPES_GETFEATUREREQUEST = _descriptor.Descriptor( + name='GetFeatureRequest', + full_name='feast.core.UIServiceTypes.GetFeatureRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.UIServiceTypes.GetFeatureRequest.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=767, + serialized_end=798, +) + +_UISERVICETYPES_GETFEATURERESPONSE = _descriptor.Descriptor( + name='GetFeatureResponse', + full_name='feast.core.UIServiceTypes.GetFeatureResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='feature', full_name='feast.core.UIServiceTypes.GetFeatureResponse.feature', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='rawSpec', full_name='feast.core.UIServiceTypes.GetFeatureResponse.rawSpec', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=800, + serialized_end=922, +) + +_UISERVICETYPES_LISTFEATURESRESPONSE = _descriptor.Descriptor( + name='ListFeaturesResponse', + full_name='feast.core.UIServiceTypes.ListFeaturesResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='features', full_name='feast.core.UIServiceTypes.ListFeaturesResponse.features', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=924, + serialized_end=1006, +) + +_UISERVICETYPES_FEATUREGROUPDETAIL = _descriptor.Descriptor( + name='FeatureGroupDetail', + full_name='feast.core.UIServiceTypes.FeatureGroupDetail', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='spec', full_name='feast.core.UIServiceTypes.FeatureGroupDetail.spec', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lastUpdated', full_name='feast.core.UIServiceTypes.FeatureGroupDetail.lastUpdated', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1008, + serialized_end=1122, +) + +_UISERVICETYPES_GETFEATUREGROUPREQUEST = _descriptor.Descriptor( + name='GetFeatureGroupRequest', + full_name='feast.core.UIServiceTypes.GetFeatureGroupRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.UIServiceTypes.GetFeatureGroupRequest.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1124, + serialized_end=1160, +) + +_UISERVICETYPES_GETFEATUREGROUPRESPONSE = _descriptor.Descriptor( + name='GetFeatureGroupResponse', + full_name='feast.core.UIServiceTypes.GetFeatureGroupResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='featureGroup', full_name='feast.core.UIServiceTypes.GetFeatureGroupResponse.featureGroup', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1162, + serialized_end=1256, +) + +_UISERVICETYPES_LISTFEATUREGROUPSRESPONSE = _descriptor.Descriptor( + name='ListFeatureGroupsResponse', + full_name='feast.core.UIServiceTypes.ListFeatureGroupsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='featureGroups', full_name='feast.core.UIServiceTypes.ListFeatureGroupsResponse.featureGroups', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1258, + serialized_end=1355, +) + +_UISERVICETYPES_STORAGEDETAIL = _descriptor.Descriptor( + name='StorageDetail', + full_name='feast.core.UIServiceTypes.StorageDetail', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='spec', full_name='feast.core.UIServiceTypes.StorageDetail.spec', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lastUpdated', full_name='feast.core.UIServiceTypes.StorageDetail.lastUpdated', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1357, + serialized_end=1461, +) + +_UISERVICETYPES_GETSTORAGEREQUEST = _descriptor.Descriptor( + name='GetStorageRequest', + full_name='feast.core.UIServiceTypes.GetStorageRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.core.UIServiceTypes.GetStorageRequest.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1463, + serialized_end=1494, +) + +_UISERVICETYPES_GETSTORAGERESPONSE = _descriptor.Descriptor( + name='GetStorageResponse', + full_name='feast.core.UIServiceTypes.GetStorageResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='storage', full_name='feast.core.UIServiceTypes.GetStorageResponse.storage', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1496, + serialized_end=1575, +) + +_UISERVICETYPES_LISTSTORAGERESPONSE = _descriptor.Descriptor( + name='ListStorageResponse', + full_name='feast.core.UIServiceTypes.ListStorageResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='storage', full_name='feast.core.UIServiceTypes.ListStorageResponse.storage', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1577, + serialized_end=1657, +) + +_UISERVICETYPES = _descriptor.Descriptor( + name='UIServiceTypes', + full_name='feast.core.UIServiceTypes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[_UISERVICETYPES_ENTITYDETAIL, _UISERVICETYPES_GETENTITYREQUEST, _UISERVICETYPES_GETENTITYRESPONSE, _UISERVICETYPES_LISTENTITIESRESPONSE, _UISERVICETYPES_FEATUREDETAIL, _UISERVICETYPES_GETFEATUREREQUEST, _UISERVICETYPES_GETFEATURERESPONSE, _UISERVICETYPES_LISTFEATURESRESPONSE, _UISERVICETYPES_FEATUREGROUPDETAIL, _UISERVICETYPES_GETFEATUREGROUPREQUEST, _UISERVICETYPES_GETFEATUREGROUPRESPONSE, _UISERVICETYPES_LISTFEATUREGROUPSRESPONSE, _UISERVICETYPES_STORAGEDETAIL, _UISERVICETYPES_GETSTORAGEREQUEST, _UISERVICETYPES_GETSTORAGERESPONSE, _UISERVICETYPES_LISTSTORAGERESPONSE, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=233, + serialized_end=1657, +) + +_UISERVICETYPES_ENTITYDETAIL.fields_by_name['spec'].message_type = feast_dot_specs_dot_EntitySpec__pb2._ENTITYSPEC +_UISERVICETYPES_ENTITYDETAIL.fields_by_name['lastUpdated'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_UISERVICETYPES_ENTITYDETAIL.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETENTITYREQUEST.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETENTITYRESPONSE.fields_by_name['entity'].message_type = _UISERVICETYPES_ENTITYDETAIL +_UISERVICETYPES_GETENTITYRESPONSE.containing_type = _UISERVICETYPES +_UISERVICETYPES_LISTENTITIESRESPONSE.fields_by_name['entities'].message_type = _UISERVICETYPES_ENTITYDETAIL +_UISERVICETYPES_LISTENTITIESRESPONSE.containing_type = _UISERVICETYPES +_UISERVICETYPES_FEATUREDETAIL.fields_by_name['spec'].message_type = feast_dot_specs_dot_FeatureSpec__pb2._FEATURESPEC +_UISERVICETYPES_FEATUREDETAIL.fields_by_name['lastUpdated'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_UISERVICETYPES_FEATUREDETAIL.fields_by_name['created'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_UISERVICETYPES_FEATUREDETAIL.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETFEATUREREQUEST.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETFEATURERESPONSE.fields_by_name['feature'].message_type = _UISERVICETYPES_FEATUREDETAIL +_UISERVICETYPES_GETFEATURERESPONSE.fields_by_name['rawSpec'].message_type = feast_dot_specs_dot_FeatureSpec__pb2._FEATURESPEC +_UISERVICETYPES_GETFEATURERESPONSE.containing_type = _UISERVICETYPES +_UISERVICETYPES_LISTFEATURESRESPONSE.fields_by_name['features'].message_type = _UISERVICETYPES_FEATUREDETAIL +_UISERVICETYPES_LISTFEATURESRESPONSE.containing_type = _UISERVICETYPES +_UISERVICETYPES_FEATUREGROUPDETAIL.fields_by_name['spec'].message_type = feast_dot_specs_dot_FeatureGroupSpec__pb2._FEATUREGROUPSPEC +_UISERVICETYPES_FEATUREGROUPDETAIL.fields_by_name['lastUpdated'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_UISERVICETYPES_FEATUREGROUPDETAIL.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETFEATUREGROUPREQUEST.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETFEATUREGROUPRESPONSE.fields_by_name['featureGroup'].message_type = _UISERVICETYPES_FEATUREGROUPDETAIL +_UISERVICETYPES_GETFEATUREGROUPRESPONSE.containing_type = _UISERVICETYPES +_UISERVICETYPES_LISTFEATUREGROUPSRESPONSE.fields_by_name['featureGroups'].message_type = _UISERVICETYPES_FEATUREGROUPDETAIL +_UISERVICETYPES_LISTFEATUREGROUPSRESPONSE.containing_type = _UISERVICETYPES +_UISERVICETYPES_STORAGEDETAIL.fields_by_name['spec'].message_type = feast_dot_specs_dot_StorageSpec__pb2._STORAGESPEC +_UISERVICETYPES_STORAGEDETAIL.fields_by_name['lastUpdated'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_UISERVICETYPES_STORAGEDETAIL.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETSTORAGEREQUEST.containing_type = _UISERVICETYPES +_UISERVICETYPES_GETSTORAGERESPONSE.fields_by_name['storage'].message_type = _UISERVICETYPES_STORAGEDETAIL +_UISERVICETYPES_GETSTORAGERESPONSE.containing_type = _UISERVICETYPES +_UISERVICETYPES_LISTSTORAGERESPONSE.fields_by_name['storage'].message_type = _UISERVICETYPES_STORAGEDETAIL +_UISERVICETYPES_LISTSTORAGERESPONSE.containing_type = _UISERVICETYPES +DESCRIPTOR.message_types_by_name['UIServiceTypes'] = _UISERVICETYPES +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +UIServiceTypes = _reflection.GeneratedProtocolMessageType('UIServiceTypes', (_message.Message,), dict( + + EntityDetail = _reflection.GeneratedProtocolMessageType('EntityDetail', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_ENTITYDETAIL, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.EntityDetail) + )) + , + + GetEntityRequest = _reflection.GeneratedProtocolMessageType('GetEntityRequest', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETENTITYREQUEST, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetEntityRequest) + )) + , + + GetEntityResponse = _reflection.GeneratedProtocolMessageType('GetEntityResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETENTITYRESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetEntityResponse) + )) + , + + ListEntitiesResponse = _reflection.GeneratedProtocolMessageType('ListEntitiesResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_LISTENTITIESRESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.ListEntitiesResponse) + )) + , + + FeatureDetail = _reflection.GeneratedProtocolMessageType('FeatureDetail', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_FEATUREDETAIL, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.FeatureDetail) + )) + , + + GetFeatureRequest = _reflection.GeneratedProtocolMessageType('GetFeatureRequest', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETFEATUREREQUEST, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetFeatureRequest) + )) + , + + GetFeatureResponse = _reflection.GeneratedProtocolMessageType('GetFeatureResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETFEATURERESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetFeatureResponse) + )) + , + + ListFeaturesResponse = _reflection.GeneratedProtocolMessageType('ListFeaturesResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_LISTFEATURESRESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.ListFeaturesResponse) + )) + , + + FeatureGroupDetail = _reflection.GeneratedProtocolMessageType('FeatureGroupDetail', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_FEATUREGROUPDETAIL, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.FeatureGroupDetail) + )) + , + + GetFeatureGroupRequest = _reflection.GeneratedProtocolMessageType('GetFeatureGroupRequest', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETFEATUREGROUPREQUEST, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetFeatureGroupRequest) + )) + , + + GetFeatureGroupResponse = _reflection.GeneratedProtocolMessageType('GetFeatureGroupResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETFEATUREGROUPRESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetFeatureGroupResponse) + )) + , + + ListFeatureGroupsResponse = _reflection.GeneratedProtocolMessageType('ListFeatureGroupsResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_LISTFEATUREGROUPSRESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.ListFeatureGroupsResponse) + )) + , + + StorageDetail = _reflection.GeneratedProtocolMessageType('StorageDetail', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_STORAGEDETAIL, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.StorageDetail) + )) + , + + GetStorageRequest = _reflection.GeneratedProtocolMessageType('GetStorageRequest', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETSTORAGEREQUEST, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetStorageRequest) + )) + , + + GetStorageResponse = _reflection.GeneratedProtocolMessageType('GetStorageResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_GETSTORAGERESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.GetStorageResponse) + )) + , + + ListStorageResponse = _reflection.GeneratedProtocolMessageType('ListStorageResponse', (_message.Message,), dict( + DESCRIPTOR = _UISERVICETYPES_LISTSTORAGERESPONSE, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes.ListStorageResponse) + )) + , + DESCRIPTOR = _UISERVICETYPES, + __module__ = 'feast.core.UIService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.UIServiceTypes) + )) +_sym_db.RegisterMessage(UIServiceTypes) +_sym_db.RegisterMessage(UIServiceTypes.EntityDetail) +_sym_db.RegisterMessage(UIServiceTypes.GetEntityRequest) +_sym_db.RegisterMessage(UIServiceTypes.GetEntityResponse) +_sym_db.RegisterMessage(UIServiceTypes.ListEntitiesResponse) +_sym_db.RegisterMessage(UIServiceTypes.FeatureDetail) +_sym_db.RegisterMessage(UIServiceTypes.GetFeatureRequest) +_sym_db.RegisterMessage(UIServiceTypes.GetFeatureResponse) +_sym_db.RegisterMessage(UIServiceTypes.ListFeaturesResponse) +_sym_db.RegisterMessage(UIServiceTypes.FeatureGroupDetail) +_sym_db.RegisterMessage(UIServiceTypes.GetFeatureGroupRequest) +_sym_db.RegisterMessage(UIServiceTypes.GetFeatureGroupResponse) +_sym_db.RegisterMessage(UIServiceTypes.ListFeatureGroupsResponse) +_sym_db.RegisterMessage(UIServiceTypes.StorageDetail) +_sym_db.RegisterMessage(UIServiceTypes.GetStorageRequest) +_sym_db.RegisterMessage(UIServiceTypes.GetStorageResponse) +_sym_db.RegisterMessage(UIServiceTypes.ListStorageResponse) + + +DESCRIPTOR._options = None + +_UISERVICE = _descriptor.ServiceDescriptor( + name='UIService', + full_name='feast.core.UIService', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=1660, + serialized_end=2491, + methods=[ + _descriptor.MethodDescriptor( + name='GetEntity', + full_name='feast.core.UIService.GetEntity', + index=0, + containing_service=None, + input_type=_UISERVICETYPES_GETENTITYREQUEST, + output_type=_UISERVICETYPES_GETENTITYRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListEntities', + full_name='feast.core.UIService.ListEntities', + index=1, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_UISERVICETYPES_LISTENTITIESRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='GetFeature', + full_name='feast.core.UIService.GetFeature', + index=2, + containing_service=None, + input_type=_UISERVICETYPES_GETFEATUREREQUEST, + output_type=_UISERVICETYPES_GETFEATURERESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListFeatures', + full_name='feast.core.UIService.ListFeatures', + index=3, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_UISERVICETYPES_LISTFEATURESRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='GetFeatureGroup', + full_name='feast.core.UIService.GetFeatureGroup', + index=4, + containing_service=None, + input_type=_UISERVICETYPES_GETFEATUREGROUPREQUEST, + output_type=_UISERVICETYPES_GETFEATUREGROUPRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListFeatureGroups', + full_name='feast.core.UIService.ListFeatureGroups', + index=5, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_UISERVICETYPES_LISTFEATUREGROUPSRESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='GetStorage', + full_name='feast.core.UIService.GetStorage', + index=6, + containing_service=None, + input_type=_UISERVICETYPES_GETSTORAGEREQUEST, + output_type=_UISERVICETYPES_GETSTORAGERESPONSE, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListStorage', + full_name='feast.core.UIService.ListStorage', + index=7, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_UISERVICETYPES_LISTSTORAGERESPONSE, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_UISERVICE) + +DESCRIPTOR.services_by_name['UIService'] = _UISERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/core/UIService_pb2_grpc.py b/sdk/python/feast/core/UIService_pb2_grpc.py new file mode 100644 index 00000000000..ba86fc468ae --- /dev/null +++ b/sdk/python/feast/core/UIService_pb2_grpc.py @@ -0,0 +1,180 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +from feast.core import UIService_pb2 as feast_dot_core_dot_UIService__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +class UIServiceStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetEntity = channel.unary_unary( + '/feast.core.UIService/GetEntity', + request_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetEntityRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetEntityResponse.FromString, + ) + self.ListEntities = channel.unary_unary( + '/feast.core.UIService/ListEntities', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListEntitiesResponse.FromString, + ) + self.GetFeature = channel.unary_unary( + '/feast.core.UIService/GetFeature', + request_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureResponse.FromString, + ) + self.ListFeatures = channel.unary_unary( + '/feast.core.UIService/ListFeatures', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListFeaturesResponse.FromString, + ) + self.GetFeatureGroup = channel.unary_unary( + '/feast.core.UIService/GetFeatureGroup', + request_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureGroupRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureGroupResponse.FromString, + ) + self.ListFeatureGroups = channel.unary_unary( + '/feast.core.UIService/ListFeatureGroups', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListFeatureGroupsResponse.FromString, + ) + self.GetStorage = channel.unary_unary( + '/feast.core.UIService/GetStorage', + request_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetStorageRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetStorageResponse.FromString, + ) + self.ListStorage = channel.unary_unary( + '/feast.core.UIService/ListStorage', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListStorageResponse.FromString, + ) + + +class UIServiceServicer(object): + # missing associated documentation comment in .proto file + pass + + def GetEntity(self, request, context): + """ + Get entity specified in request. + This process returns a single of entity specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListEntities(self, request, context): + """ + Get all entities. + This process returns a list of entity specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetFeature(self, request, context): + """ + Get feature specified in request. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListFeatures(self, request, context): + """ + Get all features. + This process returns a list of feature specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetFeatureGroup(self, request, context): + """ + Get feature group specified in request. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListFeatureGroups(self, request, context): + """ + Get all feature groups. + This process returns a list of feature group specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetStorage(self, request, context): + """ + Get storage spec specified in request. + + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListStorage(self, request, context): + """ + Get all storage specs. + This process returns a list of storage specs. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_UIServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetEntity': grpc.unary_unary_rpc_method_handler( + servicer.GetEntity, + request_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetEntityRequest.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetEntityResponse.SerializeToString, + ), + 'ListEntities': grpc.unary_unary_rpc_method_handler( + servicer.ListEntities, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListEntitiesResponse.SerializeToString, + ), + 'GetFeature': grpc.unary_unary_rpc_method_handler( + servicer.GetFeature, + request_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureRequest.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureResponse.SerializeToString, + ), + 'ListFeatures': grpc.unary_unary_rpc_method_handler( + servicer.ListFeatures, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListFeaturesResponse.SerializeToString, + ), + 'GetFeatureGroup': grpc.unary_unary_rpc_method_handler( + servicer.GetFeatureGroup, + request_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureGroupRequest.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetFeatureGroupResponse.SerializeToString, + ), + 'ListFeatureGroups': grpc.unary_unary_rpc_method_handler( + servicer.ListFeatureGroups, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListFeatureGroupsResponse.SerializeToString, + ), + 'GetStorage': grpc.unary_unary_rpc_method_handler( + servicer.GetStorage, + request_deserializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetStorageRequest.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.GetStorageResponse.SerializeToString, + ), + 'ListStorage': grpc.unary_unary_rpc_method_handler( + servicer.ListStorage, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_UIService__pb2.UIServiceTypes.ListStorageResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.core.UIService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py new file mode 100644 index 00000000000..4661e2ec47f --- /dev/null +++ b/sdk/python/feast/sdk/client.py @@ -0,0 +1,85 @@ +""" +Main interface for users to interact with the Core API. +""" + +import feast.core.CoreService_pb2_grpc as core +from feast.sdk.resources.feature import Feature +from feast.sdk.resources.entity import Entity +from feast.sdk.resources.feature_group import FeatureGroup +import grpc + + +class Client: + def __init__(self, serverURL): + '''Create an instance of Feast client which is connected to feast + endpoint specified in the parameter + + Args: + serverURI (string): feast's endpoint URL + (e.g.: "my.feast.com:8433") + ''' + + self.channel = grpc.insecure_channel(serverURL) + self.stub = core.CoreServiceStub(self.channel) + + def apply(self, obj, create_entity=False, create_features=False): + '''Create or update one or many feast's resource + (feature, entity, importer, storage). + + Args: + object (object): one or many feast's resource + create_entity (bool, optional): (default: {None}) + create_features (bool, optional): [description] (default: {None}) + ''' + + # object can be a single object or an interable + if isinstance(obj, list): + for resource in obj: + self._apply(resource) + else: + self._apply(obj) + + # object can also be: Feature, Entity, Importer, Storage + + pass + + def _apply(self, obj): + '''Applies a single object to feast core. + + Args: + obj (object): one of + [Feature, Entity, FeatureGroup, Storage, Importer] + ''' + if isinstance(obj, Feature): + print(self._apply_feature(obj).featureId) + elif isinstance(obj, Entity): + print("entity") + elif isinstance(obj, FeatureGroup): + print("fgroup") + else: + raise TypeError('Apply can only be passed one of the following \ + types: [Feature, Entity, FeatureGroup, Storage, Importer]') + + def _apply_feature(self, feature): + '''Apply the feature to the core API + + Args: + feature (Feature): feature to apply + ''' + response = self.stub.ApplyFeature(feature.spec) + return response + + def _apply_entity(self, entity): + '''Apply the entity to the core API + + Args: + entity (Entity): entity to apply + ''' + response = self.stub.ApplyEntity(entity.spec) + return response + + def close(self): + self.channel.close() + + # def create_feature_set(self, entity=None, granularity=None, features=None): + # return feature_set() diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py new file mode 100644 index 00000000000..17707a25188 --- /dev/null +++ b/sdk/python/feast/sdk/resources/entity.py @@ -0,0 +1,75 @@ +import yaml +import json + +import feast.specs.EntitySpec_pb2 as entity_pb +from feast.sdk.resources.resource import FeastResource +from google.protobuf.json_format import MessageToJson, Parse + +''' +Wrapper class for feast entities +''' +class Entity(FeastResource): + def __init__(self, name="", description="", tags=[]): + ''' + Args: + name (str): name of entity + description (str): description of entity + tags (list): [description] (default: {[]}) + ''' + self.__spec = entity_pb.EntitySpec(name=name, description=description, + tags=tags) + + @property + def name(self): + return self.__spec.name + + @name.setter + def name(self, value): + self.__spec.name = value + + @property + def description(self): + return self.__spec.description + + @description.setter + def description(self, value): + self.__spec.description = value + + @property + def tags(self): + return self.__spec.tags + + @tags.setter + def tags(self, value): + del self.__spec.tags[:] + self.__spec.tags.extend(value) + + @classmethod + def from_yaml_file(cls, path): + '''Create an instance of entity from a yaml file + + Args: + path (string): path to yaml file + ''' + with open(path, 'r') as file: + content = yaml.safe_load(file.read()) + entity = cls() + entity.__spec = Parse( + json.dumps(content), + entity_pb.EntitySpec(), + ignore_unknown_fields=False) + return entity + + def create_feature(self, name, granularity, value_type, owner, + description): + '''Create a feature related to this entity + + Args: + name (string): feature name + granularity (Granularity): granularity of the feature. e.g.: + Granularity.NONE, Granularity.SECOND, etc + value_type (ValueType): value type of the feature + owner (string): owner of the feature + description (string): feature's description + ''' + pass diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py new file mode 100644 index 00000000000..e296a90ef7f --- /dev/null +++ b/sdk/python/feast/sdk/resources/feature.py @@ -0,0 +1,176 @@ +import yaml +import json + +import feast.specs.FeatureSpec_pb2 as feature_pb +from feast.types.Granularity_pb2 import Granularity +from feast.types.Value_pb2 import ValueType +from feast.sdk.resources.resource import FeastResource + +from google.protobuf.json_format import MessageToJson, Parse + +''' +Wrapper class for feast features +''' +class Feature(FeastResource): + def __init__(self, name='', entity='', granularity=Granularity.NONE, + owner='', warehouse_store=feature_pb.DataStore(), + serving_store=feature_pb.DataStore(), description='', uri='', + value_type=ValueType.DOUBLE, group='', tags=[], options={}): + ''' + Args: + name (str): name of feature, in lower snake case + entity ({)str): entity the feature belongs to, in lower case + granularity ({)int): granularity of the feature, one of Granularity.Enum + owner (str): owner of the feature + warehouse_store (FeatureSpec_pb2.DataStore): warehouse store id and options + serving_store (FeatureSpec_pb2.DataStore): serving store id and options + description (str): description of the feature (default: {""}) + uri (str): uri pointing to the source code or origin of this feature (default: {""}) + value_type ([type]): value type of the feature (default: {ValueType.DOUBLE}) + group (str): (optional) feature group to inherit from (default: {""}) + tags (list): (optional) tags assigned to the feature (default: {[]}) + options (dict): (optional) additional options for the feature (default: {{}}) + ''' + + id = '.'.join([entity, + Granularity.Enum.Name(granularity), name]).lower() + data_stores = feature_pb.DataStores(serving=serving_store, + warehouse=warehouse_store) + self.__spec = feature_pb.FeatureSpec(id=id, granularity=granularity, + name=name, entity=entity, owner=owner, dataStores=data_stores, + description=description, uri=uri, valueType=value_type, + group=group, tags=tags, options=options) + + @property + def spec(self): + return self.__spec + + @property + def id(self): + return self.__spec.id + + @property + def name(self): + return self.__spec.name + + @name.setter + def name(self, value): + self.__spec.name = value + id_split = self.id.split('.') + id_split[2] = value + self.__spec.id = '.'.join(id_split) + + @property + def granularity(self): + return Granularity.Enum.Name(self.__spec.granularity) + + @granularity.setter + def granularity(self, value): + self.__spec.granularity = value + id_split = self.id.split('.') + id_split[1] = self.granularity.lower() + self.__spec.id = '.'.join(id_split) + + @property + def entity(self): + return self.__spec.entity + + @entity.setter + def entity(self, value): + self.__spec.entity = value + id_split = self.id.split('.') + id_split[0] = value + self.__spec.id = '.'.join(id_split) + + @property + def owner(self): + return self.__spec.owner + + @owner.setter + def owner(self, value): + self.__spec.owner = value + + @property + def warehouse_store(self): + return self.__spec.dataStores.warehouse + + @warehouse_store.setter + def warehouse_store(self, value): + self.__spec.dataStores.serving.CopyFrom(value) + + @property + def serving_store(self): + return self.__spec.dataStores.serving + + @serving_store.setter + def serving_store(self, value): + self.__spec.dataStores.warehouse.CopyFrom(value) + + @property + def description(self): + return self.__spec.description + + @description.setter + def description(self, value): + self.__spec.description = value + + @property + def uri(self): + return self.__spec.uri + + @uri.setter + def uri(self, value): + self.__spec.uri = value + + @property + def value_type(self): + return ValueType.Enum.Name(self.__spec.valueType) + + @value_type.setter + def value_type(self, value): + self.__spec.valueType = value + + @property + def group(self): + return self.__spec.group + + @group.setter + def group(self, value): + self.__spec.group = value + + @property + def tags(self): + return self.__spec.tags + + @tags.setter + def tags(self, value): + del self.__spec.tags[:] + self.__spec.tags.extend(value) + + @property + def options(self): + return self.__spec.options + + @options.setter + def options(self, value): + for key in self.__spec.options: + del self.__spec.options[key] + for (key, value) in value.items(): + self.__spec.options[key] = value + + @classmethod + def from_yaml_file(cls, path): + '''Create an instance of feature from a yaml spec file + + Args: + path (str): path to yaml spec file + ''' + + with open(path, 'r') as file: + content = yaml.safe_load(file.read()) + feature = cls() + feature.__spec = Parse( + json.dumps(content), + feature_pb.FeatureSpec(), + ignore_unknown_fields=False) + return feature diff --git a/sdk/python/feast/sdk/resources/feature_group.py b/sdk/python/feast/sdk/resources/feature_group.py new file mode 100644 index 00000000000..7e8f99e1b6d --- /dev/null +++ b/sdk/python/feast/sdk/resources/feature_group.py @@ -0,0 +1,76 @@ +import yaml +import json + +import feast.specs.FeatureSpec_pb2 as feature_pb +import feast.specs.FeatureGroupSpec_pb2 as feature_group_pb +from feast.sdk.resources.resource import FeastResource + +from google.protobuf.json_format import MessageToJson, Parse + +''' +Wrapper class for feast feature groups +''' +class FeatureGroup(FeastResource): + def __init__(self, id="", tags=[], warehouse_store=feature_pb.DataStore(), + serving_store=feature_pb.DataStore()): + ''' + Args: + id (str): id of feature group + warehouse_store (FeatureSpec_pb2.DataStore): warehouse store id and options + serving_store (FeatureSpec_pb2.DataStore): serving store id and options + tags (list): Defaults to []. tags assigned to feature group + as well as all children features. + ''' + + self.__spec = feature_group_pb.FeatureGroupSpec(id=id, tags=tags, + dataStores=feature_pb.DataStores( + warehouse=warehouse_store, serving=serving_store)) + + @property + def id(self): + return self.__spec.id + + @id.setter + def id(self, value): + self.__spec.id = value + + @property + def warehouse_store(self): + return self.__spec.dataStores.warehouse + + @warehouse_store.setter + def warehouse_store(self, value): + self.__spec.dataStores.serving.CopyFrom(value) + + @property + def serving_store(self): + return self.__spec.dataStores.serving + + @serving_store.setter + def serving_store(self, value): + self.__spec.dataStores.warehouse.CopyFrom(value) + + @property + def tags(self): + return self.__spec.tags + + @tags.setter + def tags(self, value): + del self.__spec.tags[:] + self.__spec.tags.extend(value) + + @classmethod + def from_yaml_file(cls, path): + '''Create an instance of feature group from a yaml spec file + + Args: + path (str): path to yaml spec file + ''' + with open(path, 'r') as file: + content = yaml.safe_load(file.read()) + feature_group = cls() + feature_group.__spec = Parse( + json.dumps(content), + feature_group_pb.FeatureGroupSpec(), + ignore_unknown_fields=False) + return feature_group \ No newline at end of file diff --git a/sdk/python/feast/sdk/resources/resource.py b/sdk/python/feast/sdk/resources/resource.py new file mode 100644 index 00000000000..a98c82ff940 --- /dev/null +++ b/sdk/python/feast/sdk/resources/resource.py @@ -0,0 +1,31 @@ +import json +import yaml + +from google.protobuf.json_format import MessageToJson, Parse + +class FeastResource: + def __init__(self, spec): + self.__spec = spec + + @property + def spec(self): + return self.__spec + + def __str__(self): + '''Print the feature in yaml format + + Returns: + string: yaml formatted representation of the entity + ''' + jsonStr = MessageToJson(self.spec) + return yaml.dump(yaml.load(jsonStr)) + + def dump(self, path): + '''Dump the feature into a yaml file. + It will replace content of an existing file. + + Args: + path (str): destination file path + ''' + with open(path, 'w') as file: + file.write(str(self)) diff --git a/sdk/python/feast/serving/Serving_pb2.py b/sdk/python/feast/serving/Serving_pb2.py new file mode 100644 index 00000000000..292612c8473 --- /dev/null +++ b/sdk/python/feast/serving/Serving_pb2.py @@ -0,0 +1,512 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/serving/Serving.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/serving/Serving.proto', + package='feast.serving', + syntax='proto3', + serialized_options=_b('\n\rfeast.servingB\017ServingAPIProtoZ\n\x07\x41ttempt\x12\x10\n\x08\x61ttempts\x18\x01 \x01(\x05\x12!\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x12.feast.types.Error\"\x94\x01\n\x12\x46\x65\x61tureRowExtended\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.feast.types.FeatureRow\x12)\n\x0blastAttempt\x18\x02 \x01(\x0b\x32\x14.feast.types.Attempt\x12-\n\tfirstSeen\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBb\n\x0b\x66\x65\x61st.typesB\x17\x46\x65\x61tureRowExtendedProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + , + dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_FeatureRow__pb2.DESCRIPTOR,]) + + + + +_ERROR = _descriptor.Descriptor( + name='Error', + full_name='feast.types.Error', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='cause', full_name='feast.types.Error.cause', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='transform', full_name='feast.types.Error.transform', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='message', full_name='feast.types.Error.message', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stackTrace', full_name='feast.types.Error.stackTrace', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=116, + serialized_end=194, +) + + +_ATTEMPT = _descriptor.Descriptor( + name='Attempt', + full_name='feast.types.Attempt', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='attempts', full_name='feast.types.Attempt.attempts', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='error', full_name='feast.types.Attempt.error', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=196, + serialized_end=258, +) + + +_FEATUREROWEXTENDED = _descriptor.Descriptor( + name='FeatureRowExtended', + full_name='feast.types.FeatureRowExtended', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='row', full_name='feast.types.FeatureRowExtended.row', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lastAttempt', full_name='feast.types.FeatureRowExtended.lastAttempt', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='firstSeen', full_name='feast.types.FeatureRowExtended.firstSeen', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=261, + serialized_end=409, +) + +_ATTEMPT.fields_by_name['error'].message_type = _ERROR +_FEATUREROWEXTENDED.fields_by_name['row'].message_type = feast_dot_types_dot_FeatureRow__pb2._FEATUREROW +_FEATUREROWEXTENDED.fields_by_name['lastAttempt'].message_type = _ATTEMPT +_FEATUREROWEXTENDED.fields_by_name['firstSeen'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +DESCRIPTOR.message_types_by_name['Error'] = _ERROR +DESCRIPTOR.message_types_by_name['Attempt'] = _ATTEMPT +DESCRIPTOR.message_types_by_name['FeatureRowExtended'] = _FEATUREROWEXTENDED +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Error = _reflection.GeneratedProtocolMessageType('Error', (_message.Message,), dict( + DESCRIPTOR = _ERROR, + __module__ = 'feast.types.FeatureRowExtended_pb2' + # @@protoc_insertion_point(class_scope:feast.types.Error) + )) +_sym_db.RegisterMessage(Error) + +Attempt = _reflection.GeneratedProtocolMessageType('Attempt', (_message.Message,), dict( + DESCRIPTOR = _ATTEMPT, + __module__ = 'feast.types.FeatureRowExtended_pb2' + # @@protoc_insertion_point(class_scope:feast.types.Attempt) + )) +_sym_db.RegisterMessage(Attempt) + +FeatureRowExtended = _reflection.GeneratedProtocolMessageType('FeatureRowExtended', (_message.Message,), dict( + DESCRIPTOR = _FEATUREROWEXTENDED, + __module__ = 'feast.types.FeatureRowExtended_pb2' + # @@protoc_insertion_point(class_scope:feast.types.FeatureRowExtended) + )) +_sym_db.RegisterMessage(FeatureRowExtended) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/types/FeatureRow_pb2.py b/sdk/python/feast/types/FeatureRow_pb2.py new file mode 100644 index 00000000000..88f5433aab0 --- /dev/null +++ b/sdk/python/feast/types/FeatureRow_pb2.py @@ -0,0 +1,106 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/types/FeatureRow.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.types import Feature_pb2 as feast_dot_types_dot_Feature__pb2 +from feast.types import Granularity_pb2 as feast_dot_types_dot_Granularity__pb2 +from feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/types/FeatureRow.proto', + package='feast.types', + syntax='proto3', + serialized_options=_b('\n\013feast.typesB\017FeatureRowProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x1c\x66\x65\x61st/types/FeatureRow.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19\x66\x65\x61st/types/Feature.proto\x1a\x1d\x66\x65\x61st/types/Granularity.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"\xc3\x01\n\nFeatureRow\x12\x11\n\tentityKey\x18\x01 \x01(\t\x12&\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x14.feast.types.Feature\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\nentityName\x18\x04 \x01(\t\x12\x32\n\x0bgranularity\x18\x05 \x01(\x0e\x32\x1d.feast.types.Granularity.EnumBZ\n\x0b\x66\x65\x61st.typesB\x0f\x46\x65\x61tureRowProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + , + dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_Feature__pb2.DESCRIPTOR,feast_dot_types_dot_Granularity__pb2.DESCRIPTOR,feast_dot_types_dot_Value__pb2.DESCRIPTOR,]) + + + + +_FEATUREROW = _descriptor.Descriptor( + name='FeatureRow', + full_name='feast.types.FeatureRow', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entityKey', full_name='feast.types.FeatureRow.entityKey', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='features', full_name='feast.types.FeatureRow.features', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='eventTimestamp', full_name='feast.types.FeatureRow.eventTimestamp', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entityName', full_name='feast.types.FeatureRow.entityName', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='granularity', full_name='feast.types.FeatureRow.granularity', index=4, + number=5, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=162, + serialized_end=357, +) + +_FEATUREROW.fields_by_name['features'].message_type = feast_dot_types_dot_Feature__pb2._FEATURE +_FEATUREROW.fields_by_name['eventTimestamp'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_FEATUREROW.fields_by_name['granularity'].enum_type = feast_dot_types_dot_Granularity__pb2._GRANULARITY_ENUM +DESCRIPTOR.message_types_by_name['FeatureRow'] = _FEATUREROW +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +FeatureRow = _reflection.GeneratedProtocolMessageType('FeatureRow', (_message.Message,), dict( + DESCRIPTOR = _FEATUREROW, + __module__ = 'feast.types.FeatureRow_pb2' + # @@protoc_insertion_point(class_scope:feast.types.FeatureRow) + )) +_sym_db.RegisterMessage(FeatureRow) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/types/Feature_pb2.py b/sdk/python/feast/types/Feature_pb2.py new file mode 100644 index 00000000000..095c9e64cc0 --- /dev/null +++ b/sdk/python/feast/types/Feature_pb2.py @@ -0,0 +1,81 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/types/Feature.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/types/Feature.proto', + package='feast.types', + syntax='proto3', + serialized_options=_b('\n\013feast.typesB\014FeatureProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x19\x66\x65\x61st/types/Feature.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"8\n\x07\x46\x65\x61ture\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.ValueBW\n\x0b\x66\x65\x61st.typesB\x0c\x46\x65\x61tureProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + , + dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_Value__pb2.DESCRIPTOR,]) + + + + +_FEATURE = _descriptor.Descriptor( + name='Feature', + full_name='feast.types.Feature', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='feast.types.Feature.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='value', full_name='feast.types.Feature.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=100, + serialized_end=156, +) + +_FEATURE.fields_by_name['value'].message_type = feast_dot_types_dot_Value__pb2._VALUE +DESCRIPTOR.message_types_by_name['Feature'] = _FEATURE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Feature = _reflection.GeneratedProtocolMessageType('Feature', (_message.Message,), dict( + DESCRIPTOR = _FEATURE, + __module__ = 'feast.types.Feature_pb2' + # @@protoc_insertion_point(class_scope:feast.types.Feature) + )) +_sym_db.RegisterMessage(Feature) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/types/Granularity_pb2.py b/sdk/python/feast/types/Granularity_pb2.py new file mode 100644 index 00000000000..8d6053270b7 --- /dev/null +++ b/sdk/python/feast/types/Granularity_pb2.py @@ -0,0 +1,99 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/types/Granularity.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/types/Granularity.proto', + package='feast.types', + syntax='proto3', + serialized_options=_b('\n\013feast.typesB\020GranularityProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x1d\x66\x65\x61st/types/Granularity.proto\x12\x0b\x66\x65\x61st.types\"J\n\x0bGranularity\";\n\x04\x45num\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03\x44\x41Y\x10\x01\x12\x08\n\x04HOUR\x10\x02\x12\n\n\x06MINUTE\x10\x03\x12\n\n\x06SECOND\x10\x04\x42[\n\x0b\x66\x65\x61st.typesB\x10GranularityProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') +) + + + +_GRANULARITY_ENUM = _descriptor.EnumDescriptor( + name='Enum', + full_name='feast.types.Granularity.Enum', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='NONE', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DAY', index=1, number=1, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HOUR', index=2, number=2, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MINUTE', index=3, number=3, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SECOND', index=4, number=4, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=61, + serialized_end=120, +) +_sym_db.RegisterEnumDescriptor(_GRANULARITY_ENUM) + + +_GRANULARITY = _descriptor.Descriptor( + name='Granularity', + full_name='feast.types.Granularity', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _GRANULARITY_ENUM, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=46, + serialized_end=120, +) + +_GRANULARITY_ENUM.containing_type = _GRANULARITY +DESCRIPTOR.message_types_by_name['Granularity'] = _GRANULARITY +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Granularity = _reflection.GeneratedProtocolMessageType('Granularity', (_message.Message,), dict( + DESCRIPTOR = _GRANULARITY, + __module__ = 'feast.types.Granularity_pb2' + # @@protoc_insertion_point(class_scope:feast.types.Granularity) + )) +_sym_db.RegisterMessage(Granularity) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/types/Value_pb2.py b/sdk/python/feast/types/Value_pb2.py new file mode 100644 index 00000000000..8f434ff8fa7 --- /dev/null +++ b/sdk/python/feast/types/Value_pb2.py @@ -0,0 +1,669 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/types/Value.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/types/Value.proto', + package='feast.types', + syntax='proto3', + serialized_options=_b('\n\013feast.typesB\nValueProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x17\x66\x65\x61st/types/Value.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\"}\n\tValueType\"p\n\x04\x45num\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\n\n\x06STRING\x10\x02\x12\t\n\x05INT32\x10\x03\x12\t\n\x05INT64\x10\x04\x12\n\n\x06\x44OUBLE\x10\x05\x12\t\n\x05\x46LOAT\x10\x06\x12\x08\n\x04\x42OOL\x10\x07\x12\r\n\tTIMESTAMP\x10\x08\"\xcf\x01\n\x05Value\x12\x12\n\x08\x62ytesVal\x18\x01 \x01(\x0cH\x00\x12\x13\n\tstringVal\x18\x02 \x01(\tH\x00\x12\x12\n\x08int32Val\x18\x03 \x01(\x05H\x00\x12\x12\n\x08int64Val\x18\x04 \x01(\x03H\x00\x12\x13\n\tdoubleVal\x18\x05 \x01(\x01H\x00\x12\x12\n\x08\x66loatVal\x18\x06 \x01(\x02H\x00\x12\x11\n\x07\x62oolVal\x18\x07 \x01(\x08H\x00\x12\x32\n\x0ctimestampVal\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x42\x05\n\x03val\"\x8a\x03\n\tValueList\x12+\n\tbytesList\x18\x01 \x01(\x0b\x32\x16.feast.types.BytesListH\x00\x12-\n\nstringList\x18\x02 \x01(\x0b\x32\x17.feast.types.StringListH\x00\x12+\n\tint32List\x18\x03 \x01(\x0b\x32\x16.feast.types.Int32ListH\x00\x12+\n\tint64List\x18\x04 \x01(\x0b\x32\x16.feast.types.Int64ListH\x00\x12-\n\ndoubleList\x18\x05 \x01(\x0b\x32\x17.feast.types.DoubleListH\x00\x12+\n\tfloatList\x18\x06 \x01(\x0b\x32\x16.feast.types.FloatListH\x00\x12)\n\x08\x62oolList\x18\x07 \x01(\x0b\x32\x15.feast.types.BoolListH\x00\x12\x33\n\rtimestampList\x18\x08 \x01(\x0b\x32\x1a.feast.types.TimestampListH\x00\x42\x0b\n\tvalueList\"\x18\n\tBytesList\x12\x0b\n\x03val\x18\x01 \x03(\x0c\"\x19\n\nStringList\x12\x0b\n\x03val\x18\x01 \x03(\t\"\x18\n\tInt32List\x12\x0b\n\x03val\x18\x01 \x03(\x05\"\x18\n\tInt64List\x12\x0b\n\x03val\x18\x01 \x03(\x03\"\x19\n\nDoubleList\x12\x0b\n\x03val\x18\x01 \x03(\x01\"\x18\n\tFloatList\x12\x0b\n\x03val\x18\x01 \x03(\x02\"\x17\n\x08\x42oolList\x12\x0b\n\x03val\x18\x01 \x03(\x08\"8\n\rTimestampList\x12\'\n\x03val\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.TimestampBU\n\x0b\x66\x65\x61st.typesB\nValueProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + , + dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + + + +_VALUETYPE_ENUM = _descriptor.EnumDescriptor( + name='Enum', + full_name='feast.types.ValueType.Enum', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='BYTES', index=1, number=1, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='STRING', index=2, number=2, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INT32', index=3, number=3, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INT64', index=4, number=4, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DOUBLE', index=5, number=5, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FLOAT', index=6, number=6, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='BOOL', index=7, number=7, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TIMESTAMP', index=8, number=8, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=86, + serialized_end=198, +) +_sym_db.RegisterEnumDescriptor(_VALUETYPE_ENUM) + + +_VALUETYPE = _descriptor.Descriptor( + name='ValueType', + full_name='feast.types.ValueType', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _VALUETYPE_ENUM, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=73, + serialized_end=198, +) + + +_VALUE = _descriptor.Descriptor( + name='Value', + full_name='feast.types.Value', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='bytesVal', full_name='feast.types.Value.bytesVal', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringVal', full_name='feast.types.Value.stringVal', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='int32Val', full_name='feast.types.Value.int32Val', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='int64Val', full_name='feast.types.Value.int64Val', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='doubleVal', full_name='feast.types.Value.doubleVal', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='floatVal', full_name='feast.types.Value.floatVal', index=5, + number=6, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='boolVal', full_name='feast.types.Value.boolVal', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='timestampVal', full_name='feast.types.Value.timestampVal', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='val', full_name='feast.types.Value.val', + index=0, containing_type=None, fields=[]), + ], + serialized_start=201, + serialized_end=408, +) + + +_VALUELIST = _descriptor.Descriptor( + name='ValueList', + full_name='feast.types.ValueList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='bytesList', full_name='feast.types.ValueList.bytesList', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringList', full_name='feast.types.ValueList.stringList', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='int32List', full_name='feast.types.ValueList.int32List', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='int64List', full_name='feast.types.ValueList.int64List', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='doubleList', full_name='feast.types.ValueList.doubleList', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='floatList', full_name='feast.types.ValueList.floatList', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='boolList', full_name='feast.types.ValueList.boolList', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='timestampList', full_name='feast.types.ValueList.timestampList', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='valueList', full_name='feast.types.ValueList.valueList', + index=0, containing_type=None, fields=[]), + ], + serialized_start=411, + serialized_end=805, +) + + +_BYTESLIST = _descriptor.Descriptor( + name='BytesList', + full_name='feast.types.BytesList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.BytesList.val', index=0, + number=1, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=807, + serialized_end=831, +) + + +_STRINGLIST = _descriptor.Descriptor( + name='StringList', + full_name='feast.types.StringList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.StringList.val', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=833, + serialized_end=858, +) + + +_INT32LIST = _descriptor.Descriptor( + name='Int32List', + full_name='feast.types.Int32List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.Int32List.val', index=0, + number=1, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=860, + serialized_end=884, +) + + +_INT64LIST = _descriptor.Descriptor( + name='Int64List', + full_name='feast.types.Int64List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.Int64List.val', index=0, + number=1, type=3, cpp_type=2, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=886, + serialized_end=910, +) + + +_DOUBLELIST = _descriptor.Descriptor( + name='DoubleList', + full_name='feast.types.DoubleList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.DoubleList.val', index=0, + number=1, type=1, cpp_type=5, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=912, + serialized_end=937, +) + + +_FLOATLIST = _descriptor.Descriptor( + name='FloatList', + full_name='feast.types.FloatList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.FloatList.val', index=0, + number=1, type=2, cpp_type=6, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=939, + serialized_end=963, +) + + +_BOOLLIST = _descriptor.Descriptor( + name='BoolList', + full_name='feast.types.BoolList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.BoolList.val', index=0, + number=1, type=8, cpp_type=7, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=965, + serialized_end=988, +) + + +_TIMESTAMPLIST = _descriptor.Descriptor( + name='TimestampList', + full_name='feast.types.TimestampList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='val', full_name='feast.types.TimestampList.val', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=990, + serialized_end=1046, +) + +_VALUETYPE_ENUM.containing_type = _VALUETYPE +_VALUE.fields_by_name['timestampVal'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['bytesVal']) +_VALUE.fields_by_name['bytesVal'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['stringVal']) +_VALUE.fields_by_name['stringVal'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['int32Val']) +_VALUE.fields_by_name['int32Val'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['int64Val']) +_VALUE.fields_by_name['int64Val'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['doubleVal']) +_VALUE.fields_by_name['doubleVal'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['floatVal']) +_VALUE.fields_by_name['floatVal'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['boolVal']) +_VALUE.fields_by_name['boolVal'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUE.oneofs_by_name['val'].fields.append( + _VALUE.fields_by_name['timestampVal']) +_VALUE.fields_by_name['timestampVal'].containing_oneof = _VALUE.oneofs_by_name['val'] +_VALUELIST.fields_by_name['bytesList'].message_type = _BYTESLIST +_VALUELIST.fields_by_name['stringList'].message_type = _STRINGLIST +_VALUELIST.fields_by_name['int32List'].message_type = _INT32LIST +_VALUELIST.fields_by_name['int64List'].message_type = _INT64LIST +_VALUELIST.fields_by_name['doubleList'].message_type = _DOUBLELIST +_VALUELIST.fields_by_name['floatList'].message_type = _FLOATLIST +_VALUELIST.fields_by_name['boolList'].message_type = _BOOLLIST +_VALUELIST.fields_by_name['timestampList'].message_type = _TIMESTAMPLIST +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['bytesList']) +_VALUELIST.fields_by_name['bytesList'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['stringList']) +_VALUELIST.fields_by_name['stringList'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['int32List']) +_VALUELIST.fields_by_name['int32List'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['int64List']) +_VALUELIST.fields_by_name['int64List'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['doubleList']) +_VALUELIST.fields_by_name['doubleList'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['floatList']) +_VALUELIST.fields_by_name['floatList'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['boolList']) +_VALUELIST.fields_by_name['boolList'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_VALUELIST.oneofs_by_name['valueList'].fields.append( + _VALUELIST.fields_by_name['timestampList']) +_VALUELIST.fields_by_name['timestampList'].containing_oneof = _VALUELIST.oneofs_by_name['valueList'] +_TIMESTAMPLIST.fields_by_name['val'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +DESCRIPTOR.message_types_by_name['ValueType'] = _VALUETYPE +DESCRIPTOR.message_types_by_name['Value'] = _VALUE +DESCRIPTOR.message_types_by_name['ValueList'] = _VALUELIST +DESCRIPTOR.message_types_by_name['BytesList'] = _BYTESLIST +DESCRIPTOR.message_types_by_name['StringList'] = _STRINGLIST +DESCRIPTOR.message_types_by_name['Int32List'] = _INT32LIST +DESCRIPTOR.message_types_by_name['Int64List'] = _INT64LIST +DESCRIPTOR.message_types_by_name['DoubleList'] = _DOUBLELIST +DESCRIPTOR.message_types_by_name['FloatList'] = _FLOATLIST +DESCRIPTOR.message_types_by_name['BoolList'] = _BOOLLIST +DESCRIPTOR.message_types_by_name['TimestampList'] = _TIMESTAMPLIST +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +ValueType = _reflection.GeneratedProtocolMessageType('ValueType', (_message.Message,), dict( + DESCRIPTOR = _VALUETYPE, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.ValueType) + )) +_sym_db.RegisterMessage(ValueType) + +Value = _reflection.GeneratedProtocolMessageType('Value', (_message.Message,), dict( + DESCRIPTOR = _VALUE, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.Value) + )) +_sym_db.RegisterMessage(Value) + +ValueList = _reflection.GeneratedProtocolMessageType('ValueList', (_message.Message,), dict( + DESCRIPTOR = _VALUELIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.ValueList) + )) +_sym_db.RegisterMessage(ValueList) + +BytesList = _reflection.GeneratedProtocolMessageType('BytesList', (_message.Message,), dict( + DESCRIPTOR = _BYTESLIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.BytesList) + )) +_sym_db.RegisterMessage(BytesList) + +StringList = _reflection.GeneratedProtocolMessageType('StringList', (_message.Message,), dict( + DESCRIPTOR = _STRINGLIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.StringList) + )) +_sym_db.RegisterMessage(StringList) + +Int32List = _reflection.GeneratedProtocolMessageType('Int32List', (_message.Message,), dict( + DESCRIPTOR = _INT32LIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.Int32List) + )) +_sym_db.RegisterMessage(Int32List) + +Int64List = _reflection.GeneratedProtocolMessageType('Int64List', (_message.Message,), dict( + DESCRIPTOR = _INT64LIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.Int64List) + )) +_sym_db.RegisterMessage(Int64List) + +DoubleList = _reflection.GeneratedProtocolMessageType('DoubleList', (_message.Message,), dict( + DESCRIPTOR = _DOUBLELIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.DoubleList) + )) +_sym_db.RegisterMessage(DoubleList) + +FloatList = _reflection.GeneratedProtocolMessageType('FloatList', (_message.Message,), dict( + DESCRIPTOR = _FLOATLIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.FloatList) + )) +_sym_db.RegisterMessage(FloatList) + +BoolList = _reflection.GeneratedProtocolMessageType('BoolList', (_message.Message,), dict( + DESCRIPTOR = _BOOLLIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.BoolList) + )) +_sym_db.RegisterMessage(BoolList) + +TimestampList = _reflection.GeneratedProtocolMessageType('TimestampList', (_message.Message,), dict( + DESCRIPTOR = _TIMESTAMPLIST, + __module__ = 'feast.types.Value_pb2' + # @@protoc_insertion_point(class_scope:feast.types.TimestampList) + )) +_sym_db.RegisterMessage(TimestampList) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/tests/sample/valid_entity.yaml b/sdk/python/tests/sample/valid_entity.yaml new file mode 100644 index 00000000000..97f215711f0 --- /dev/null +++ b/sdk/python/tests/sample/valid_entity.yaml @@ -0,0 +1,5 @@ +name : myentity +description: test entity with tag +tags: + - tag1 + - tag2 \ No newline at end of file diff --git a/sdk/python/tests/sample/valid_entity_no_tag.yaml b/sdk/python/tests/sample/valid_entity_no_tag.yaml new file mode 100644 index 00000000000..828a768b291 --- /dev/null +++ b/sdk/python/tests/sample/valid_entity_no_tag.yaml @@ -0,0 +1,2 @@ +name : myentity +description: test entity without tag \ No newline at end of file diff --git a/sdk/python/tests/sample/valid_feature.yaml b/sdk/python/tests/sample/valid_feature.yaml new file mode 100644 index 00000000000..ffde1ee1946 --- /dev/null +++ b/sdk/python/tests/sample/valid_feature.yaml @@ -0,0 +1,13 @@ +id: myentity.none.feature_bool_redis1 +name: feature_bool_redis1 +entity: myentity +owner: bob@example.com +description: test entity. +valueType: BOOL +granularity: NONE +uri: https://github.com/bob/example +dataStores: + serving: + id: REDIS1 + warehouse: + id: BIGQUERY1 \ No newline at end of file diff --git a/sdk/python/tests/sample/valid_feature_group.yaml b/sdk/python/tests/sample/valid_feature_group.yaml new file mode 100644 index 00000000000..f877d209fec --- /dev/null +++ b/sdk/python/tests/sample/valid_feature_group.yaml @@ -0,0 +1,7 @@ +id: my_fg +tags: ["tag1", "tag2"] +dataStores: + serving: + id: "REDIS1" + warehouse: + id: "BIGQUERY1" \ No newline at end of file diff --git a/sdk/python/tests/sdk/resources/test_entity.py b/sdk/python/tests/sdk/resources/test_entity.py new file mode 100644 index 00000000000..1fafd0b6750 --- /dev/null +++ b/sdk/python/tests/sdk/resources/test_entity.py @@ -0,0 +1,27 @@ +from feast.sdk.resources.entity import Entity +import os + +class TestEntity(object): + def test_read_from_yaml(self): + entity_no_tag = Entity.from_yaml_file("tests/sample/valid_entity_no_tag.yaml") + assert entity_no_tag.name == "myentity" + assert entity_no_tag.description == "test entity without tag" + assert len(entity_no_tag.tags) == 0 + + entity = Entity.from_yaml_file("tests/sample/valid_entity.yaml") + assert entity.name == "myentity" + assert entity.description == "test entity with tag" + assert entity.tags[0] == "tag1" + assert entity.tags[1] == "tag2" + + def test_dump(self): + entity = Entity("entity", "description", ["tag1", "tag2"]) + entity.dump("myentity.yaml") + actual = Entity.from_yaml_file("myentity.yaml") + assert actual.name == entity.name + assert actual.description == entity.description + for t1, t2 in zip(actual.tags, entity.tags): + assert t1 == t2 + + #cleanup + os.remove("myentity.yaml") \ No newline at end of file diff --git a/sdk/python/tests/sdk/resources/test_feature.py b/sdk/python/tests/sdk/resources/test_feature.py new file mode 100644 index 00000000000..f856ca1bea4 --- /dev/null +++ b/sdk/python/tests/sdk/resources/test_feature.py @@ -0,0 +1,47 @@ +import pytest +from feast.sdk.resources.feature import Feature +from feast.types.Granularity_pb2 import Granularity +import feast.specs.FeatureSpec_pb2 as feature_pb +from feast.types.Value_pb2 import ValueType + +class TestFeature(object): + def dummy_feature(self): + warehouse_data_store = feature_pb.DataStore(id = "BIGQUERY1", options = {}) + serving_data_store = feature_pb.DataStore(id = "REDIS1", options = {}) + my_feature = Feature(name = "my_feature", entity = "my_entity", granularity = Granularity.NONE, value_type = ValueType.BYTES, + owner = "feast@web.com", description = "test feature", uri = "github.com/feature_repo", warehouse_store = warehouse_data_store, + serving_store = serving_data_store) + return my_feature + + def test_set_name(self): + my_feature = self.dummy_feature() + new_name = "my_feature_new" + my_feature.name = new_name + assert my_feature.name == new_name + assert my_feature.id == "my_entity.none.my_feature_new" + + def test_set_granularity(self): + my_feature = self.dummy_feature() + my_feature.granularity = Granularity.DAY + assert my_feature.granularity == "DAY" + assert my_feature.id == "my_entity.day.my_feature" + + def test_set_entity(self): + my_feature = self.dummy_feature() + new_entity = "new_entity" + my_feature.entity = new_entity + assert my_feature.entity == new_entity + assert my_feature.id == "new_entity.none.my_feature" + + def test_read_from_yaml(self): + feature = Feature.from_yaml_file("tests/sample/valid_feature.yaml") + assert feature.id == "myentity.none.feature_bool_redis1" + assert feature.name == "feature_bool_redis1" + assert feature.entity == "myentity" + assert feature.owner == "bob@example.com" + assert feature.description == "test entity." + assert feature.value_type == "BOOL" + assert feature.granularity == "NONE" + assert feature.uri == "https://github.com/bob/example" + assert feature.serving_store.id == "REDIS1" + assert feature.warehouse_store.id == "BIGQUERY1" diff --git a/sdk/python/tests/sdk/resources/test_feature_group.py b/sdk/python/tests/sdk/resources/test_feature_group.py new file mode 100644 index 00000000000..ca145922185 --- /dev/null +++ b/sdk/python/tests/sdk/resources/test_feature_group.py @@ -0,0 +1,11 @@ +import pytest +from feast.sdk.resources.feature_group import FeatureGroup + +class TestFeatureGroupSpec(object): + def test_read_from_yaml(self): + feature_group = FeatureGroup.from_yaml_file( + "tests/sample/valid_feature_group.yaml") + assert feature_group.id == "my_fg" + assert feature_group.serving_store.id == "REDIS1" + assert feature_group.warehouse_store.id == "BIGQUERY1" + assert feature_group.tags == ["tag1", "tag2"] \ No newline at end of file diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py new file mode 100644 index 00000000000..24b67a95760 --- /dev/null +++ b/sdk/python/tests/sdk/test_client.py @@ -0,0 +1,14 @@ +import pytest + +class TestClient(object): + def test_apply_single_feature(self): + pass + + def test_apply_single_entity(self): + pass + + def test_apply_single_feature_group(self): + pass + + def test_apply_multiple(self): + pass From 0e65567b40d57e676e14f23247ff0e63625aceba Mon Sep 17 00:00:00 2001 From: zhilingc Date: Tue, 18 Dec 2018 13:38:51 +0530 Subject: [PATCH 02/50] Add feast resource definitions --- sdk/python/.gitignore | 5 +- sdk/python/feast/sdk/client.py | 60 ++++++++--- sdk/python/feast/sdk/resources/entity.py | 29 ++++- sdk/python/feast/sdk/resources/feature.py | 49 ++++++--- .../feast/sdk/resources/feature_group.py | 51 ++++++--- sdk/python/feast/sdk/resources/resource.py | 31 ------ sdk/python/feast/sdk/resources/storage.py | 101 ++++++++++++++++++ sdk/python/tests/sample/valid_storage.yaml | 6 ++ sdk/python/tests/sdk/resources/test_entity.py | 6 +- .../tests/sdk/resources/test_feature.py | 10 +- .../tests/sdk/resources/test_feature_group.py | 2 +- .../tests/sdk/resources/test_storage.py | 35 ++++++ sdk/python/tests/sdk/test_client.py | 93 ++++++++++++++-- 13 files changed, 384 insertions(+), 94 deletions(-) delete mode 100644 sdk/python/feast/sdk/resources/resource.py create mode 100644 sdk/python/feast/sdk/resources/storage.py create mode 100644 sdk/python/tests/sample/valid_storage.yaml create mode 100644 sdk/python/tests/sdk/resources/test_storage.py diff --git a/sdk/python/.gitignore b/sdk/python/.gitignore index 6299a37294d..8e86897c13c 100644 --- a/sdk/python/.gitignore +++ b/sdk/python/.gitignore @@ -112,4 +112,7 @@ venv.bak/ dmypy.json # Pyre type checker -.pyre/ \ No newline at end of file +.pyre/ + +.vscode +test.py \ No newline at end of file diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 4661e2ec47f..91e8a032142 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -5,12 +5,13 @@ import feast.core.CoreService_pb2_grpc as core from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity +from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup import grpc class Client: - def __init__(self, serverURL): + def __init__(self, serverURL, verbose=False): '''Create an instance of Feast client which is connected to feast endpoint specified in the parameter @@ -19,10 +20,11 @@ def __init__(self, serverURL): (e.g.: "my.feast.com:8433") ''' - self.channel = grpc.insecure_channel(serverURL) - self.stub = core.CoreServiceStub(self.channel) + self.__channel = grpc.insecure_channel(serverURL) + self.stub = core.CoreServiceStub(self.__channel) + self.verbose = verbose - def apply(self, obj, create_entity=False, create_features=False): + def apply(self, obj): '''Create or update one or many feast's resource (feature, entity, importer, storage). @@ -31,17 +33,13 @@ def apply(self, obj, create_entity=False, create_features=False): create_entity (bool, optional): (default: {None}) create_features (bool, optional): [description] (default: {None}) ''' - - # object can be a single object or an interable if isinstance(obj, list): + ids = [] for resource in obj: - self._apply(resource) + ids.append(self._apply(resource)) + return ids else: - self._apply(obj) - - # object can also be: Feature, Entity, Importer, Storage - - pass + return self._apply(obj) def _apply(self, obj): '''Applies a single object to feast core. @@ -51,11 +49,13 @@ def _apply(self, obj): [Feature, Entity, FeatureGroup, Storage, Importer] ''' if isinstance(obj, Feature): - print(self._apply_feature(obj).featureId) + return self._apply_feature(obj) elif isinstance(obj, Entity): - print("entity") + return self._apply_entity(obj) elif isinstance(obj, FeatureGroup): - print("fgroup") + return self._apply_feature_group(obj) + elif isinstance(obj, Storage): + return self._apply_storage(obj) else: raise TypeError('Apply can only be passed one of the following \ types: [Feature, Entity, FeatureGroup, Storage, Importer]') @@ -67,7 +67,9 @@ def _apply_feature(self, feature): feature (Feature): feature to apply ''' response = self.stub.ApplyFeature(feature.spec) - return response + if self.verbose: print("Successfully applied feature with id: {}\n---\n{}" + .format(response.featureId, feature)) + return response.featureId def _apply_entity(self, entity): '''Apply the entity to the core API @@ -76,7 +78,31 @@ def _apply_entity(self, entity): entity (Entity): entity to apply ''' response = self.stub.ApplyEntity(entity.spec) - return response + if self.verbose: print("Successfully applied entity with name: {}\n---\n{}" + .format(response.entityName, entity)) + return response.entityName + + def _apply_feature_group(self, feature_group): + '''Apply the feature group to the core API + + Args: + feature_group (FeatureGroup): feature group to apply + ''' + response = self.stub.ApplyFeatureGroup(feature_group.spec) + if self.verbose: print("Successfully applied feature group with id: "+ + "{}\n---\n{}".format(response.featureGroupId, feature_group)) + return response.featureGroupId + + def _apply_storage(self, storage): + '''Apply the storage to the core API + + Args: + storage (Storage): storage to apply + ''' + response = self.stub.ApplyStorage(storage.spec) + if self.verbose: print("Successfully applied storage with id: "+ + "{}\n{}".format(response.storageId, storage)) + return response.storageId def close(self): self.channel.close() diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py index 17707a25188..d6d01b58649 100644 --- a/sdk/python/feast/sdk/resources/entity.py +++ b/sdk/python/feast/sdk/resources/entity.py @@ -2,13 +2,13 @@ import json import feast.specs.EntitySpec_pb2 as entity_pb -from feast.sdk.resources.resource import FeastResource + from google.protobuf.json_format import MessageToJson, Parse ''' Wrapper class for feast entities ''' -class Entity(FeastResource): +class Entity: def __init__(self, name="", description="", tags=[]): ''' Args: @@ -19,6 +19,10 @@ def __init__(self, name="", description="", tags=[]): self.__spec = entity_pb.EntitySpec(name=name, description=description, tags=tags) + @property + def spec(self): + return self.__spec + @property def name(self): return self.__spec.name @@ -45,7 +49,7 @@ def tags(self, value): self.__spec.tags.extend(value) @classmethod - def from_yaml_file(cls, path): + def from_yaml(cls, path): '''Create an instance of entity from a yaml file Args: @@ -73,3 +77,22 @@ def create_feature(self, name, granularity, value_type, owner, description (string): feature's description ''' pass + + def __str__(self): + '''Print the feature in yaml format + + Returns: + string: yaml formatted representation of the entity + ''' + jsonStr = MessageToJson(self.spec) + return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + + def dump(self, path): + '''Dump the feature into a yaml file. + It will replace content of an existing file. + + Args: + path (str): destination file path + ''' + with open(path, 'w') as file: + file.write(str(self)) \ No newline at end of file diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index e296a90ef7f..d1d09d01e30 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -4,26 +4,24 @@ import feast.specs.FeatureSpec_pb2 as feature_pb from feast.types.Granularity_pb2 import Granularity from feast.types.Value_pb2 import ValueType -from feast.sdk.resources.resource import FeastResource from google.protobuf.json_format import MessageToJson, Parse ''' Wrapper class for feast features ''' -class Feature(FeastResource): +class Feature: def __init__(self, name='', entity='', granularity=Granularity.NONE, - owner='', warehouse_store=feature_pb.DataStore(), - serving_store=feature_pb.DataStore(), description='', uri='', - value_type=ValueType.DOUBLE, group='', tags=[], options={}): + owner='', value_type=ValueType.DOUBLE, description='', uri='', + warehouse_store=None, serving_store=None, group='', tags=[], options={}): ''' Args: name (str): name of feature, in lower snake case - entity ({)str): entity the feature belongs to, in lower case - granularity ({)int): granularity of the feature, one of Granularity.Enum + entity (str): entity the feature belongs to, in lower case + granularity (int): granularity of the feature, one of Granularity.Enum owner (str): owner of the feature - warehouse_store (FeatureSpec_pb2.DataStore): warehouse store id and options - serving_store (FeatureSpec_pb2.DataStore): serving store id and options + warehouse_store (Datastore): warehouse store id and options + serving_store (Datastore): serving store id and options description (str): description of the feature (default: {""}) uri (str): uri pointing to the source code or origin of this feature (default: {""}) value_type ([type]): value type of the feature (default: {ValueType.DOUBLE}) @@ -34,8 +32,15 @@ def __init__(self, name='', entity='', granularity=Granularity.NONE, id = '.'.join([entity, Granularity.Enum.Name(granularity), name]).lower() - data_stores = feature_pb.DataStores(serving=serving_store, - warehouse=warehouse_store) + + warehouse_store_spec = None + serving_store_spec = None + if (serving_store is not None): + serving_store_spec = serving_store.spec + if (warehouse_store is not None): + warehouse_store_spec = warehouse_store.spec + data_stores = feature_pb.DataStores(serving = serving_store_spec, + warehouse = warehouse_store_spec) self.__spec = feature_pb.FeatureSpec(id=id, granularity=granularity, name=name, entity=entity, owner=owner, dataStores=data_stores, description=description, uri=uri, valueType=value_type, @@ -159,7 +164,7 @@ def options(self, value): self.__spec.options[key] = value @classmethod - def from_yaml_file(cls, path): + def from_yaml(cls, path): '''Create an instance of feature from a yaml spec file Args: @@ -174,3 +179,23 @@ def from_yaml_file(cls, path): feature_pb.FeatureSpec(), ignore_unknown_fields=False) return feature + + def __str__(self): + '''Print the feature in yaml format + + Returns: + string: yaml formatted representation of the entity + ''' + jsonStr = MessageToJson(self.spec) + return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + + def dump(self, path): + '''Dump the feature into a yaml file. + It will replace content of an existing file. + + Args: + path (str): destination file path + ''' + with open(path, 'w') as file: + file.write(str(self)) + \ No newline at end of file diff --git a/sdk/python/feast/sdk/resources/feature_group.py b/sdk/python/feast/sdk/resources/feature_group.py index 7e8f99e1b6d..e11df1172a8 100644 --- a/sdk/python/feast/sdk/resources/feature_group.py +++ b/sdk/python/feast/sdk/resources/feature_group.py @@ -3,28 +3,36 @@ import feast.specs.FeatureSpec_pb2 as feature_pb import feast.specs.FeatureGroupSpec_pb2 as feature_group_pb -from feast.sdk.resources.resource import FeastResource from google.protobuf.json_format import MessageToJson, Parse ''' Wrapper class for feast feature groups ''' -class FeatureGroup(FeastResource): - def __init__(self, id="", tags=[], warehouse_store=feature_pb.DataStore(), - serving_store=feature_pb.DataStore()): +class FeatureGroup(): + def __init__(self, id, tags=[], warehouse_store=None, serving_store=None): ''' Args: id (str): id of feature group - warehouse_store (FeatureSpec_pb2.DataStore): warehouse store id and options - serving_store (FeatureSpec_pb2.DataStore): serving store id and options + warehouse_store (DataStore): warehouse store id and options + serving_store (DataStore): serving store id and options tags (list): Defaults to []. tags assigned to feature group as well as all children features. ''' - + warehouse_store_spec = None + serving_store_spec = None + if (serving_store is not None): + serving_store_spec = serving_store.spec + if (warehouse_store is not None): + warehouse_store_spec = warehouse_store.spec + data_stores = feature_pb.DataStores(serving = serving_store_spec, + warehouse = warehouse_store_spec) self.__spec = feature_group_pb.FeatureGroupSpec(id=id, tags=tags, - dataStores=feature_pb.DataStores( - warehouse=warehouse_store, serving=serving_store)) + dataStores=data_stores) + + @property + def spec(self): + return self.__spec @property def id(self): @@ -60,7 +68,7 @@ def tags(self, value): self.__spec.tags.extend(value) @classmethod - def from_yaml_file(cls, path): + def from_yaml(cls, path): '''Create an instance of feature group from a yaml spec file Args: @@ -68,9 +76,28 @@ def from_yaml_file(cls, path): ''' with open(path, 'r') as file: content = yaml.safe_load(file.read()) - feature_group = cls() + feature_group = cls.__new__(cls) feature_group.__spec = Parse( json.dumps(content), feature_group_pb.FeatureGroupSpec(), ignore_unknown_fields=False) - return feature_group \ No newline at end of file + return feature_group + + def __str__(self): + '''Print the feature in yaml format + + Returns: + string: yaml formatted representation of the entity + ''' + jsonStr = MessageToJson(self.spec) + return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + + def dump(self, path): + '''Dump the feature into a yaml file. + It will replace content of an existing file. + + Args: + path (str): destination file path + ''' + with open(path, 'w') as file: + file.write(str(self)) diff --git a/sdk/python/feast/sdk/resources/resource.py b/sdk/python/feast/sdk/resources/resource.py deleted file mode 100644 index a98c82ff940..00000000000 --- a/sdk/python/feast/sdk/resources/resource.py +++ /dev/null @@ -1,31 +0,0 @@ -import json -import yaml - -from google.protobuf.json_format import MessageToJson, Parse - -class FeastResource: - def __init__(self, spec): - self.__spec = spec - - @property - def spec(self): - return self.__spec - - def __str__(self): - '''Print the feature in yaml format - - Returns: - string: yaml formatted representation of the entity - ''' - jsonStr = MessageToJson(self.spec) - return yaml.dump(yaml.load(jsonStr)) - - def dump(self, path): - '''Dump the feature into a yaml file. - It will replace content of an existing file. - - Args: - path (str): destination file path - ''' - with open(path, 'w') as file: - file.write(str(self)) diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py new file mode 100644 index 00000000000..8a3c3a76771 --- /dev/null +++ b/sdk/python/feast/sdk/resources/storage.py @@ -0,0 +1,101 @@ +import yaml +import json + +import feast.specs.StorageSpec_pb2 as storage_pb +import feast.specs.FeatureSpec_pb2 as feature_pb +from google.protobuf.json_format import MessageToJson, Parse + +''' +Wrapper class for feast entities +''' +class Storage: + def __init__(self, id = "", type = "", options={}): + ''' + Args: + id (str): storage id + type (str): storage type + options (dict) : map of storage options + ''' + self.__spec = storage_pb.StorageSpec(id = id, type = type, options = options) + + @property + def spec(self): + return self.__spec + + @property + def id(self): + return self.__spec.id + + @id.setter + def id(self, value): + self.__spec.name = id + + @property + def type(self): + return self.__spec.type + + @type.setter + def type(self, value): + self.__spec.type = value + + @property + def options(self): + return self.__spec.options + + @options.setter + def options(self, value): + self.__spec.options.clear() + self.__spec.options.update(value) + + @classmethod + def from_yaml(cls, path): + '''Create an instance of storage from a yaml file + + Args: + path (string): path to yaml file + ''' + with open(path, 'r') as file: + content = yaml.safe_load(file.read()) + storage = cls() + storage.__spec = Parse( + json.dumps(content), + storage_pb.StorageSpec(), + ignore_unknown_fields=False) + return storage + + def __str__(self): + '''Print the feature in yaml format + + Returns: + string: yaml formatted representation of the entity + ''' + jsonStr = MessageToJson(self.__spec) + return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + + def dump(self, path): + '''Dump the feature into a yaml file. + It will replace content of an existing file. + + Args: + path (str): destination file path + ''' + with open(path, 'w') as file: + file.write(str(self)) + + +class Datastore: + def __init__(self, id, options={}): + self.__spec = feature_pb.DataStore(id = id, options = options) + + def __str__(self): + '''Print the feature in yaml format + + Returns: + string: yaml formatted representation of the entity + ''' + jsonStr = MessageToJson(self.__spec) + return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + + @property + def spec(self): + return self.__spec \ No newline at end of file diff --git a/sdk/python/tests/sample/valid_storage.yaml b/sdk/python/tests/sample/valid_storage.yaml new file mode 100644 index 00000000000..96ae9e40f78 --- /dev/null +++ b/sdk/python/tests/sample/valid_storage.yaml @@ -0,0 +1,6 @@ +id: BIGQUERY1 +type: bigquery +options: + dataset: "feast" + project: "gcp-project" + tempLocation: "gs://feast-storage" \ No newline at end of file diff --git a/sdk/python/tests/sdk/resources/test_entity.py b/sdk/python/tests/sdk/resources/test_entity.py index 1fafd0b6750..da2a7c4e496 100644 --- a/sdk/python/tests/sdk/resources/test_entity.py +++ b/sdk/python/tests/sdk/resources/test_entity.py @@ -3,12 +3,12 @@ class TestEntity(object): def test_read_from_yaml(self): - entity_no_tag = Entity.from_yaml_file("tests/sample/valid_entity_no_tag.yaml") + entity_no_tag = Entity.from_yaml("tests/sample/valid_entity_no_tag.yaml") assert entity_no_tag.name == "myentity" assert entity_no_tag.description == "test entity without tag" assert len(entity_no_tag.tags) == 0 - entity = Entity.from_yaml_file("tests/sample/valid_entity.yaml") + entity = Entity.from_yaml("tests/sample/valid_entity.yaml") assert entity.name == "myentity" assert entity.description == "test entity with tag" assert entity.tags[0] == "tag1" @@ -17,7 +17,7 @@ def test_read_from_yaml(self): def test_dump(self): entity = Entity("entity", "description", ["tag1", "tag2"]) entity.dump("myentity.yaml") - actual = Entity.from_yaml_file("myentity.yaml") + actual = Entity.from_yaml("myentity.yaml") assert actual.name == entity.name assert actual.description == entity.description for t1, t2 in zip(actual.tags, entity.tags): diff --git a/sdk/python/tests/sdk/resources/test_feature.py b/sdk/python/tests/sdk/resources/test_feature.py index f856ca1bea4..4b63f7a51ca 100644 --- a/sdk/python/tests/sdk/resources/test_feature.py +++ b/sdk/python/tests/sdk/resources/test_feature.py @@ -1,13 +1,13 @@ import pytest from feast.sdk.resources.feature import Feature -from feast.types.Granularity_pb2 import Granularity -import feast.specs.FeatureSpec_pb2 as feature_pb +from feast.sdk.resources.storage import Datastore from feast.types.Value_pb2 import ValueType +from feast.types.Granularity_pb2 import Granularity class TestFeature(object): def dummy_feature(self): - warehouse_data_store = feature_pb.DataStore(id = "BIGQUERY1", options = {}) - serving_data_store = feature_pb.DataStore(id = "REDIS1", options = {}) + warehouse_data_store = Datastore(id = "BIGQUERY1", options = {}) + serving_data_store = Datastore(id = "REDIS1", options = {}) my_feature = Feature(name = "my_feature", entity = "my_entity", granularity = Granularity.NONE, value_type = ValueType.BYTES, owner = "feast@web.com", description = "test feature", uri = "github.com/feature_repo", warehouse_store = warehouse_data_store, serving_store = serving_data_store) @@ -34,7 +34,7 @@ def test_set_entity(self): assert my_feature.id == "new_entity.none.my_feature" def test_read_from_yaml(self): - feature = Feature.from_yaml_file("tests/sample/valid_feature.yaml") + feature = Feature.from_yaml("tests/sample/valid_feature.yaml") assert feature.id == "myentity.none.feature_bool_redis1" assert feature.name == "feature_bool_redis1" assert feature.entity == "myentity" diff --git a/sdk/python/tests/sdk/resources/test_feature_group.py b/sdk/python/tests/sdk/resources/test_feature_group.py index ca145922185..039434bd7b5 100644 --- a/sdk/python/tests/sdk/resources/test_feature_group.py +++ b/sdk/python/tests/sdk/resources/test_feature_group.py @@ -3,7 +3,7 @@ class TestFeatureGroupSpec(object): def test_read_from_yaml(self): - feature_group = FeatureGroup.from_yaml_file( + feature_group = FeatureGroup.from_yaml( "tests/sample/valid_feature_group.yaml") assert feature_group.id == "my_fg" assert feature_group.serving_store.id == "REDIS1" diff --git a/sdk/python/tests/sdk/resources/test_storage.py b/sdk/python/tests/sdk/resources/test_storage.py new file mode 100644 index 00000000000..66f1a0b6c8a --- /dev/null +++ b/sdk/python/tests/sdk/resources/test_storage.py @@ -0,0 +1,35 @@ +from feast.sdk.resources.storage import Storage +import os + + +class TestStorage(object): + def test_update_options(self): + storage = Storage(id="storage1", type="redis") + assert storage.options == {} + myDict = {'key':'value'} + storage.options = myDict + assert storage.options == myDict + + def test_from_yaml(self): + storage = Storage.from_yaml("tests/sample/valid_storage.yaml") + assert storage.id == "BIGQUERY1" + assert storage.type == "bigquery" + expDict = {"dataset" : "feast", + "project" : "gcp-project", + "tempLocation" : "gs://feast-storage"} + assert storage.options == expDict + + def test_dump(self): + opt = {"option1" : "value1", "option2" : "value2"} + storage = Storage("storage1", "redis", opt) + + storage.dump("storage.yaml") + storage2 = Storage.from_yaml("storage.yaml") + + assert storage.id == storage2.id + assert storage.type == storage2.type + assert storage.options == storage2.options + assert storage2.options == opt + + #cleanup + os.remove("storage.yaml") \ No newline at end of file diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 24b67a95760..13990f7581c 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -1,14 +1,89 @@ import pytest +from unittest.mock import patch + +import grpc + +import feast.core.CoreService_pb2_grpc as core +from feast.core.CoreService_pb2 import CoreServiceTypes +from feast.types.Granularity_pb2 import Granularity + +from feast.sdk.client import Client +from feast.sdk.resources.feature import Feature +from feast.sdk.resources.feature_group import FeatureGroup +from feast.sdk.resources.entity import Entity +from feast.sdk.resources.storage import Storage + +@pytest.fixture +def client(): + return Client("some.uri") class TestClient(object): - def test_apply_single_feature(self): - pass - - def test_apply_single_entity(self): - pass + def test_apply_single_feature(self, client, mocker): + my_feature = Feature(name="test", + entity="test", granularity=Granularity.NONE) + grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) + + with mocker.patch.object(grpc_stub, 'ApplyFeature', + return_value=CoreServiceTypes.ApplyFeatureResponse( + featureId="test.none.test")): + + client.stub = grpc_stub + id = client.apply(my_feature) + assert id == "test.none.test" + + def test_apply_single_entity(self, client, mocker): + my_entity = Entity(name="test") + grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) + + with mocker.patch.object(grpc_stub, 'ApplyEntity', + return_value=CoreServiceTypes.ApplyEntityResponse( + entityName="test")): + + client.stub = grpc_stub + name = client.apply(my_entity) + assert name == "test" + + def test_apply_single_feature_group(self, client, mocker): + my_feature_group = FeatureGroup(id="test") + grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) + + with mocker.patch.object(grpc_stub, 'ApplyFeatureGroup', + return_value=CoreServiceTypes.ApplyFeatureGroupResponse( + featureGroupId="test")): + + client.stub = grpc_stub + name = client.apply(my_feature_group) + assert name == "test" + + def test_apply_single_storage(self, client, mocker): + my_storage = Storage(id="TEST", type="redis") + grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) + + with mocker.patch.object(grpc_stub, 'ApplyStorage', + return_value=CoreServiceTypes.ApplyStorageResponse( + storageId="TEST")): + + client.stub = grpc_stub + name = client.apply(my_storage) + assert name == "TEST" + + def test_apply_multiple(self, client, mocker): + my_storage = Storage(id="TEST", type="redis") + my_feature_group = FeatureGroup(id="test") + my_entity = Entity(name="test") + + grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) - def test_apply_single_feature_group(self): - pass + mocker.patch.object(grpc_stub, 'ApplyStorage', + return_value=CoreServiceTypes.ApplyStorageResponse( + storageId="TEST")) + mocker.patch.object(grpc_stub, 'ApplyFeatureGroup', + return_value=CoreServiceTypes.ApplyFeatureGroupResponse( + featureGroupId="test")) + mocker.patch.object(grpc_stub, 'ApplyEntity', + return_value=CoreServiceTypes.ApplyEntityResponse( + entityName="test")) - def test_apply_multiple(self): - pass + client.stub = grpc_stub + ids = client.apply([my_storage, my_entity, my_feature_group]) + assert ids == ["TEST", "test", "test"] \ No newline at end of file From e77ede585563b0da422f5c738e8c9e09949ab5eb Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 19 Dec 2018 18:34:56 +0530 Subject: [PATCH 03/50] Add mapping from dtype to valueType --- sdk/python/feast/sdk/utils/types.py | 28 ++++++++++++++++++++++++ sdk/python/tests/sdk/utils/test_types.py | 23 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 sdk/python/feast/sdk/utils/types.py create mode 100644 sdk/python/tests/sdk/utils/test_types.py diff --git a/sdk/python/feast/sdk/utils/types.py b/sdk/python/feast/sdk/utils/types.py new file mode 100644 index 00000000000..bac172fa917 --- /dev/null +++ b/sdk/python/feast/sdk/utils/types.py @@ -0,0 +1,28 @@ +import pandas as pd +from feast.types.Value_pb2 import ValueType + +# mapping of pandas dtypes to feast value type strings +_DTYPE_TO_VALUE_TYPE_MAPPING = { + "float64": ValueType.DOUBLE, + "float32": ValueType.FLOAT, + "int64": ValueType.INT64, + "int32": ValueType.INT32, + "int8": ValueType.INT32, + "bool": ValueType.BOOL, + "timedelta": ValueType.INT64, + "datetime64[ns]": ValueType.TIMESTAMP, + "datetime64[ns, tz]": ValueType.TIMESTAMP, + "category": ValueType.STRING, + "object": ValueType.STRING +} + +def dtype_to_value_type(dtype): + '''Returns the equivalent feast valueType for the given dtype + + Args: + dtype (dtype): pandas dtype + + Returns: + ValueType.Enum: equivalent feast valuetype + ''' + return _DTYPE_TO_VALUE_TYPE_MAPPING[dtype.__str__()] \ No newline at end of file diff --git a/sdk/python/tests/sdk/utils/test_types.py b/sdk/python/tests/sdk/utils/test_types.py new file mode 100644 index 00000000000..44bdba93f12 --- /dev/null +++ b/sdk/python/tests/sdk/utils/test_types.py @@ -0,0 +1,23 @@ +import pytest +import pandas as pd +import numpy as np + +from feast.types.Value_pb2 import ValueType +from feast.sdk.utils.types import dtype_to_value_type + +def test_convert_dtype_to_value_type(): + dft = pd.DataFrame(dict(A = np.random.rand(3), + B = 1, + C = 'foo', + D = pd.Timestamp('20010102'), + E = pd.Series([1.0]*3).astype('float32'), + F = False, + G = pd.Series([1]*3,dtype='int8'))) + + assert dtype_to_value_type(dft['A'].dtype) == ValueType.DOUBLE + assert dtype_to_value_type(dft['B'].dtype) == ValueType.INT64 + assert dtype_to_value_type(dft['C'].dtype) == ValueType.STRING + assert dtype_to_value_type(dft['D'].dtype) == ValueType.TIMESTAMP + assert dtype_to_value_type(dft['E'].dtype) == ValueType.FLOAT + assert dtype_to_value_type(dft['F'].dtype) == ValueType.BOOL + assert dtype_to_value_type(dft['G'].dtype) == ValueType.INT32 \ No newline at end of file From 543915627e8d88b561985542c2f06673c529e11d Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 19 Dec 2018 18:35:13 +0530 Subject: [PATCH 04/50] Add utilities for google cloud --- sdk/python/feast/sdk/utils/bq_util.py | 20 +++++++ sdk/python/feast/sdk/utils/gs_utils.py | 58 +++++++++++++++++++++ sdk/python/tests/sdk/utils/test_gs_utils.py | 6 +++ 3 files changed, 84 insertions(+) create mode 100644 sdk/python/feast/sdk/utils/bq_util.py create mode 100644 sdk/python/feast/sdk/utils/gs_utils.py create mode 100644 sdk/python/tests/sdk/utils/test_gs_utils.py diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py new file mode 100644 index 00000000000..469cfbc56de --- /dev/null +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -0,0 +1,20 @@ + +import pandas as pd + +def head(client, table, max_rows=10): + '''Get the head of the table. Retrieves rows from the given table at + minimum cost so we don't get + + Args: + client ([type]): bigquery client + table ([type]): bigquery table to get the head of + max_rows (int, optional): Defaults to 10. maximum number of rows to retrieve + + Returns: + pandas.DataFrame: dataframe containing the head of rows + ''' + + rows = client.list_rows(table, max_results=max_rows) + rows = [x for x in rows] + return pd.DataFrame( + data=[list(x.values()) for x in rows], columns=list(rows[0].keys())) \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py new file mode 100644 index 00000000000..c6a4fd5883b --- /dev/null +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -0,0 +1,58 @@ +import io +import time +import os +import re +import pandas as pd +from google.cloud import storage + +_GCS_PATH_REGEX = r'^gs:\/\/[a-z0-9\.\-_\/]*$' + +def gs_to_df(path): + '''Reads a file from gs to pandas + + Args: + path (str): full gcs path to the file + + Returns: + pandas.DataFrame: dataframe + ''' + bucket_name, blob_name = split_gs_path(path) + storage_client = storage.Client() + bucket = storage_client.get_bucket(bucket_name) + blob = bucket.blob(blob_name) + temp_file_path = 'temp{}.csv'.format(int(round(time.time() * 1000))) + with open(temp_file_path, 'wb') as temp_file: + blob.download_to_file(temp_file) + df = pd.read_csv(temp_file_path) + os.remove(temp_file_path) + return df + +def df_to_gs(df, path): + '''Writes the given df to the path specified. Will fail if the bucket does + not exist. + + Args: + df (pandas.DataFrame): dataframe + path (str): path in gcs to write to + ''' + bucket_name, blob_name = split_gs_path(path) + storage_client = storage.Client() + bucket = storage_client.get_bucket(bucket_name) + blob = bucket.blob(blob_name) + s = io.StringIO() + blob.upload_from_string(df.to_csv(s)) + +def split_gs_path(path): + path = path.replace("gs://", "", 1) + return path.split('/', 1) + +def is_gs_path(path): + '''Check if path is a gcs path + + Args: + path (str): path to file + + Returns: + boolean: is a valid gcs path + ''' + return re.match(_GCS_PATH_REGEX, path) != None \ No newline at end of file diff --git a/sdk/python/tests/sdk/utils/test_gs_utils.py b/sdk/python/tests/sdk/utils/test_gs_utils.py new file mode 100644 index 00000000000..d43e3d4e2df --- /dev/null +++ b/sdk/python/tests/sdk/utils/test_gs_utils.py @@ -0,0 +1,6 @@ +import pytest +from feast.sdk.utils.gs_utils import is_gs_path + +def test_is_gs_path(): + assert is_gs_path("gs://valid/gs/file.csv") == True + assert is_gs_path("local/path/file.csv") == False \ No newline at end of file From 6c09dfcf2ff4e45cfe56808ae390368f9b070ee8 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 19 Dec 2018 18:35:48 +0530 Subject: [PATCH 05/50] Fix printer to print yaml in order --- sdk/python/feast/sdk/resources/entity.py | 10 ++++--- sdk/python/feast/sdk/resources/feature.py | 15 ++++++----- .../feast/sdk/resources/feature_group.py | 17 ++++++------ sdk/python/feast/sdk/resources/storage.py | 20 +++++++------- sdk/python/feast/sdk/utils/print_utils.py | 26 +++++++++++++++++++ 5 files changed, 59 insertions(+), 29 deletions(-) create mode 100644 sdk/python/feast/sdk/utils/print_utils.py diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py index d6d01b58649..83e0936a808 100644 --- a/sdk/python/feast/sdk/resources/entity.py +++ b/sdk/python/feast/sdk/resources/entity.py @@ -2,15 +2,18 @@ import json import feast.specs.EntitySpec_pb2 as entity_pb +from feast.sdk.utils.print_utils import spec_to_yaml from google.protobuf.json_format import MessageToJson, Parse + ''' -Wrapper class for feast entities +Wrapper class for feast entity ''' class Entity: def __init__(self, name="", description="", tags=[]): - ''' + '''Create Entity instance. + Args: name (str): name of entity description (str): description of entity @@ -84,8 +87,7 @@ def __str__(self): Returns: string: yaml formatted representation of the entity ''' - jsonStr = MessageToJson(self.spec) - return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + return spec_to_yaml(self.__spec) def dump(self, path): '''Dump the feature into a yaml file. diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index d1d09d01e30..bdc36b14b88 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -4,27 +4,29 @@ import feast.specs.FeatureSpec_pb2 as feature_pb from feast.types.Granularity_pb2 import Granularity from feast.types.Value_pb2 import ValueType +from feast.sdk.utils.print_utils import spec_to_yaml from google.protobuf.json_format import MessageToJson, Parse ''' -Wrapper class for feast features +Wrapper class for feast feature ''' class Feature: def __init__(self, name='', entity='', granularity=Granularity.NONE, owner='', value_type=ValueType.DOUBLE, description='', uri='', warehouse_store=None, serving_store=None, group='', tags=[], options={}): - ''' + '''Create feast feature instance. + Args: name (str): name of feature, in lower snake case entity (str): entity the feature belongs to, in lower case granularity (int): granularity of the feature, one of Granularity.Enum owner (str): owner of the feature - warehouse_store (Datastore): warehouse store id and options - serving_store (Datastore): serving store id and options + value_type {ValueType} -- value type of the feature (default: {ValueType.DOUBLE}) description (str): description of the feature (default: {""}) uri (str): uri pointing to the source code or origin of this feature (default: {""}) - value_type ([type]): value type of the feature (default: {ValueType.DOUBLE}) + warehouse_store (Datastore): warehouse store id and options + serving_store (Datastore): serving store id and options group (str): (optional) feature group to inherit from (default: {""}) tags (list): (optional) tags assigned to the feature (default: {[]}) options (dict): (optional) additional options for the feature (default: {{}}) @@ -186,8 +188,7 @@ def __str__(self): Returns: string: yaml formatted representation of the entity ''' - jsonStr = MessageToJson(self.spec) - return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + return spec_to_yaml(self.__spec) def dump(self, path): '''Dump the feature into a yaml file. diff --git a/sdk/python/feast/sdk/resources/feature_group.py b/sdk/python/feast/sdk/resources/feature_group.py index e11df1172a8..15e9528841c 100644 --- a/sdk/python/feast/sdk/resources/feature_group.py +++ b/sdk/python/feast/sdk/resources/feature_group.py @@ -3,21 +3,23 @@ import feast.specs.FeatureSpec_pb2 as feature_pb import feast.specs.FeatureGroupSpec_pb2 as feature_group_pb +from feast.sdk.utils.print_utils import spec_to_yaml from google.protobuf.json_format import MessageToJson, Parse ''' -Wrapper class for feast feature groups +Wrapper class for feast feature group ''' class FeatureGroup(): def __init__(self, id, tags=[], warehouse_store=None, serving_store=None): - ''' + '''Create FeatureGroup instance. + Args: id (str): id of feature group + tags (list): Defaults to []. tags assigned to feature group + as well as all children features. warehouse_store (DataStore): warehouse store id and options serving_store (DataStore): serving store id and options - tags (list): Defaults to []. tags assigned to feature group - as well as all children features. ''' warehouse_store_spec = None serving_store_spec = None @@ -84,16 +86,15 @@ def from_yaml(cls, path): return feature_group def __str__(self): - '''Print the feature in yaml format + '''Return string representation of the feature group Returns: string: yaml formatted representation of the entity ''' - jsonStr = MessageToJson(self.spec) - return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + return spec_to_yaml(self.__spec) def dump(self, path): - '''Dump the feature into a yaml file. + '''Dump the feature group into a yaml file. It will replace content of an existing file. Args: diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py index 8a3c3a76771..56829f7f779 100644 --- a/sdk/python/feast/sdk/resources/storage.py +++ b/sdk/python/feast/sdk/resources/storage.py @@ -3,14 +3,16 @@ import feast.specs.StorageSpec_pb2 as storage_pb import feast.specs.FeatureSpec_pb2 as feature_pb +from feast.sdk.utils.print_utils import spec_to_yaml from google.protobuf.json_format import MessageToJson, Parse ''' -Wrapper class for feast entities +Wrapper class for feast storage ''' class Storage: def __init__(self, id = "", type = "", options={}): - ''' + '''Create Storage instance. + Args: id (str): storage id type (str): storage type @@ -64,16 +66,15 @@ def from_yaml(cls, path): return storage def __str__(self): - '''Print the feature in yaml format + '''Return string representation the storage in yaml format Returns: string: yaml formatted representation of the entity ''' - jsonStr = MessageToJson(self.__spec) - return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + return spec_to_yaml(self.__spec) def dump(self, path): - '''Dump the feature into a yaml file. + '''Dump the storage into a yaml file. It will replace content of an existing file. Args: @@ -88,13 +89,12 @@ def __init__(self, id, options={}): self.__spec = feature_pb.DataStore(id = id, options = options) def __str__(self): - '''Print the feature in yaml format + '''Print the datastore in yaml format Returns: - string: yaml formatted representation of the entity + string: yaml formatted representation of the Datastore ''' - jsonStr = MessageToJson(self.__spec) - return yaml.dump(yaml.load(jsonStr), default_flow_style=False) + return spec_to_yaml(self.__spec) @property def spec(self): diff --git a/sdk/python/feast/sdk/utils/print_utils.py b/sdk/python/feast/sdk/utils/print_utils.py new file mode 100644 index 00000000000..7c75e8e5451 --- /dev/null +++ b/sdk/python/feast/sdk/utils/print_utils.py @@ -0,0 +1,26 @@ +from google.protobuf.json_format import MessageToJson, Parse +from google.protobuf.json_format import MessageToDict + +from collections import OrderedDict +import yaml + +def spec_to_yaml(spec): + '''Converts spec to yaml string + + Args: + spec (Message): feast spec + + Returns: + str: yaml string representation of spec + ''' + mapping_tag = yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG + yaml.add_representer(OrderedDict, _dict_representer) + yaml.add_constructor(mapping_tag, _dict_constructor) + dic = OrderedDict(MessageToDict(spec)) + return yaml.dump(dic, default_flow_style=False) + +def _dict_representer(dumper, data): + return dumper.represent_dict(data.items()) + +def _dict_constructor(loader, node): + return OrderedDict(loader.construct_pairs(node)) \ No newline at end of file From 793fc7753eaf5f180d93862f4e843f6a178451eb Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 19 Dec 2018 18:36:28 +0530 Subject: [PATCH 06/50] Add importer --- sdk/python/examples/hello_feast/test.py | 26 --- sdk/python/feast/sdk/importer.py | 268 ++++++++++++++++++++++ sdk/python/feast/sdk/utils/validation.py | 0 sdk/python/tests/data/driver_features.csv | 11 + sdk/python/tests/sdk/test_importer.py | 152 ++++++++++++ 5 files changed, 431 insertions(+), 26 deletions(-) delete mode 100644 sdk/python/examples/hello_feast/test.py create mode 100644 sdk/python/feast/sdk/importer.py create mode 100644 sdk/python/feast/sdk/utils/validation.py create mode 100644 sdk/python/tests/data/driver_features.csv create mode 100644 sdk/python/tests/sdk/test_importer.py diff --git a/sdk/python/examples/hello_feast/test.py b/sdk/python/examples/hello_feast/test.py deleted file mode 100644 index 5f5838aa4ff..00000000000 --- a/sdk/python/examples/hello_feast/test.py +++ /dev/null @@ -1,26 +0,0 @@ -from feast.sdk.resources.entity import Entity -from feast.sdk.resources.feature import Feature -from feast.types.Granularity_pb2 import Granularity -from feast.types.Value_pb2 import ValueType -import feast.specs.FeatureSpec_pb2 as feature_pb - -from feast.sdk.client import Client - -myEntity = Entity("test", "test description", ["tag1", "tag2"]) -myEntity.dump("test.yaml") - -entity2 = Entity.from_yaml_file("test.yaml") -entity2.dump("entity.yaml") - -warehouse_data_store = feature_pb.DataStore(id = "BIGQUERY1", options = {}) -serving_data_store = feature_pb.DataStore(id = "REDIS1", options = {}) -my_feature = Feature(name = "my_feature", entity = "my_entity", granularity = Granularity.NONE, value_type = ValueType.BYTES, - owner = "feast@web.com", description = "test feature", uri = "github.com/feature_repo", warehouse_store = warehouse_data_store, - serving_store = serving_data_store) -print(my_feature.serving_store) - -my_feature.options = {"test": "test", "test2": "test2"} -print(my_feature) - -cli = Client("localhost:8433") -cli.apply(my_feature) \ No newline at end of file diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py new file mode 100644 index 00000000000..30d59bbe649 --- /dev/null +++ b/sdk/python/feast/sdk/importer.py @@ -0,0 +1,268 @@ +import pandas as pd +import ntpath +import time +from feast.specs.ImportSpec_pb2 import ImportSpec, Schema, Field +from feast.sdk.utils.gs_utils import gs_to_df, is_gs_path, df_to_gs +from feast.sdk.utils.print_utils import spec_to_yaml +from feast.sdk.utils.types import dtype_to_value_type +from feast.sdk.utils.bq_util import head +from feast.sdk.resources.feature import Feature + +from google.protobuf.timestamp_pb2 import Timestamp +from google.cloud import bigquery + +class Importer: + def __init__(self): + self.source = None + self.require_staging = False + self.remote_path = None + self.spec = None + self.features = [] + self.df = None + self.bq_client = None + + @classmethod + def from_csv(cls, path, entity, granularity, owner, staging_location=None, + id_column=None, feature_columns=None, timestamp_column=None): + '''Creates an importer from a given csv dataset. + This file can be either local or remote (in gcs). If it's a local file + then staging_location must be determined. + + Args: + path (str): path to csv file + entity (str): entity id + granularity (Granularity): granularity of data + owner (str): owner + staging_location (str, optional): Defaults to None. Staging location + for ingesting a local csv file. + id_column (str, optional): Defaults to None. Id column in the csv. + If not set, will default to the `entity` argument. + feature_columns ([str], optional): Defaults to None. Feature columns + to ingest. If not set, the importer will by default + ingest all available columns. + timestamp_column (str, optional): Defaults to None. Timestamp + column in the csv. If not set, defaults to the + first timestamp column in the csv. + + Returns: + Importer: the importer for the dataset provided. + ''' + import_spec_options = {"format": "csv"} + import_spec_options["url"], require_staging = _get_remote_location(path, + staging_location) + iport = cls.__new__(cls) + iport.source = "csv" + iport.require_staging = require_staging + iport.remote_path = import_spec_options["url"] + + if is_gs_path(path): + iport.df = gs_to_df(path) + else: + iport.df = pd.read_csv(path) + + schema, iport.features = _detect_schema_and_feature(entity, + granularity, owner, id_column, feature_columns, timestamp_column, + iport.df) + iport.spec = _create_import("file", import_spec_options, entity, schema) + return iport + + @classmethod + def from_bq(cls, bq_path, entity, granularity, owner, limit=10, + id_column=None, feature_columns=None, timestamp_column=None): + iport = cls.__new__(cls) + iport.source = "bigquery" + iport.bq_client = bigquery.Client() + project, dataset_id, table_id = bq_path.split(".") + dataset_ref = iport.bq_client.dataset(dataset_id, project=project) + table_ref = dataset_ref.table(table_id) + table = iport.bq_client.get_table(table_ref) + + import_spec_options = { + "project": project, + "dataset": dataset_id, + "table": table_id + } + + iport.require_staging = False + iport.df = head(iport.bq_client, table, limit) + + schema, iport.features = _detect_schema_and_feature(entity, + granularity, owner, id_column, feature_columns, timestamp_column, + iport.df) + + iport.spec = _create_import("bigquery", import_spec_options, entity, schema) + return iport + + @classmethod + def from_df(cls, df, entity, granularity, owner, staging_location, + id_column=None, feature_columns=None, timestamp_column=None): + '''Creates an importer from a given pandas dataframe. + To import a file from a dataframe, the data will have to be staged. + + Args: + path (str): path to csv file + entity (str): entity id + granularity (Granularity): granularity of data + owner (str): owner + staging_location (str): Defaults to None. Staging location + for ingesting a local csv file. + id_column (str, optional): Defaults to None. Id column in the csv. + If not set, will default to the `entity` argument. + feature_columns ([str], optional): Defaults to None. Feature columns + to ingest. If not set, the importer will by default + ingest all available columns. + timestamp_column (str, optional): Defaults to None. Timestamp + column in the csv. If not set, defaults to the + first timestamp column in the csv. + + Returns: + Importer: the importer for the dataset provided. + ''' + tmp_file_name = "tmp_{}_{}.csv".format(entity, int(round(time.time() * 1000))) + iport = cls.__new__(cls) + iport.source = "dataframe" + iport.remote_path, iport.require_staging = _get_remote_location(tmp_file_name, staging_location) + iport.df = df + import_spec_options = { + "format": "csv", + "url": iport.remote_path + } + + schema, iport.features = _detect_schema_and_feature(entity, + granularity, owner, id_column, feature_columns, timestamp_column, + iport.df) + iport.spec = _create_import("file", import_spec_options, entity, schema) + return iport + + def stage(self): + if not self.require_staging: + return + df_to_gs(self.df, self.remote_path) + + def describe(self): + '''Print out the import spec. + TODO: more information? + ''' + print(spec_to_yaml(self.spec)) + + def dump(self, path): + pass + +def _get_remote_location(path, staging_location): + '''Get the remote location of the file + + Args: + path {str}: [description] + staging_location {str}: [description] + + ''' + if (is_gs_path(path)): + return path, False + + if staging_location is None: + raise ValueError("Specify staging_location for importing local file/dataframe") + if not is_gs_path(staging_location): + raise ValueError("Staging location must be in GCS") + + filename = ntpath.basename(path) + return staging_location + "/" + filename, True + + +def _detect_schema_and_feature(entity, granularity, owner, id_column, + feature_columns, timestamp_column, df): + '''Create schema object for import spec. + + Args: + entity {str}: entity name + granualrity {Granularity}: granularity of the feature + id_column {str}: column name of entity id + timestamp_column {str}: column name of timestamp + feature_columns {[str]}: list of column to be extracted + df {Dataframe}: pandas dataframe of the data + + Raises: + Exception -- [description] + ''' + + schema = Schema() + if (id_column is not None): + schema.entityIdColumn = id_column + else: + if entity in df.columns: + schema.entityIdColumn = entity + else: + raise ValueError("Column with name {} is not found".format(entity)) + + if (timestamp_column is not None): + schema.timestampColumn = timestamp_column + else: + ts = Timestamp() + ts.GetCurrentTime() + schema.timestampValue = ts + + features = {} + if (feature_columns is not None): + # check if all column exist and create feature accordingly + for column in feature_columns: + if column not in df.columns: + raise ValueError("Column with name {} is not found".format(column)) + features[column] = _create_feature(df[column], entity, granularity, owner) + else: + # get all column except entity id and timestampColumn + feature_columns = list(df.columns.values) + _remove_safely(feature_columns, schema.entityIdColumn) + _remove_safely(feature_columns, schema.timestampColumn) + for column in feature_columns: + features[column] = _create_feature(df[column], entity, granularity, owner) + + for col in df.columns: + field = schema.fields.add() + field.name = col + if col in features: + field.featureId = features[col].id + + return schema, [features[k] for k in features] + +def _create_feature(column, entity, granularity, owner): + '''Create Feature object. + + Args: + column (pandas.Series): data column + entity (str): entity name + granularity (Granularity.Enum): granularity of the feature + owner (str): owner of the feature + + Returns: + Feature: feature for this data column + ''' + return Feature( + name=column.name, + entity=entity, + granularity=granularity, + owner=owner, + value_type=dtype_to_value_type(column.dtype)) + +def _create_import(import_type, options, entity, schema): + '''Create an import spec. + + Args: + import_type (str): import type + options (dict): import spec options + entity (str): entity + schema (Schema): schema of the file + + Returns: + ImportSpec: import spec + ''' + + return ImportSpec( + type=import_type, + options=options, + entities=[entity], + schema=schema) + +def _remove_safely(columns, column): + try: + columns.remove(column) + except ValueError: + pass \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/validation.py b/sdk/python/feast/sdk/utils/validation.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/tests/data/driver_features.csv b/sdk/python/tests/data/driver_features.csv new file mode 100644 index 00000000000..03b54a8a39a --- /dev/null +++ b/sdk/python/tests/data/driver_features.csv @@ -0,0 +1,11 @@ +driver_id,ts,completed,avg_distance_completed,avg_customer_distance_completed,avg_distance_cancelled +1,2018-09-25T00:00:00.000,12,1.102,172,-1 +2,2018-09-25T00:00:00.000,23,8.16,783,15.619 +3,2018-09-25T00:00:00.000,14,2.83328571428571,138.142857142857,18.5935 +4,2018-09-25T00:00:00.000,7,4.593,1575,-1 +5,2018-09-25T00:00:00.000,15,11.7656,314,6.733 +6,2018-09-25T00:00:00.000,7,14.2352142857143,276.785714285714,3.1645 +7,2018-09-25T00:00:00.000,10,5.0266,421.1,-1 +8,2018-09-25T00:00:00.000,6,23.554,4639,-1 +9,2018-09-25T00:00:00.000,14,7.42042857142857,149.888888888889,1.371 +10,2018-09-25T00:00:00.000,4,-1,-1,17.088 \ No newline at end of file diff --git a/sdk/python/tests/sdk/test_importer.py b/sdk/python/tests/sdk/test_importer.py new file mode 100644 index 00000000000..0e7416d7621 --- /dev/null +++ b/sdk/python/tests/sdk/test_importer.py @@ -0,0 +1,152 @@ +import pandas as pd +import pytest +from feast.sdk.resources.feature import Feature +from feast.types.Granularity_pb2 import Granularity +from feast.types.Value_pb2 import ValueType +from feast.sdk.importer import _create_feature, Importer + +class TestImporter(object): + def test_from_csv(self): + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + csv_path = "tests/data/driver_features.csv" + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location="gs://test-bucket", + id_column = "driver_id", + feature_columns=feature_columns, + timestamp_column="ts") + + df = pd.read_csv(csv_path) + assert importer.require_staging == True + assert importer.remote_path == "gs://test-bucket/driver_features.csv" + for feature in importer.features: + assert feature.name in df.columns + assert feature.id == "driver.day." + feature.name + + import_spec = importer.spec + assert import_spec.type == "file" + assert import_spec.options == {"format" : "csv", "url" : "gs://test-bucket/driver_features.csv"} + assert import_spec.entities == ["driver"] + + schema = import_spec.schema + assert schema.entityIdColumn == "driver_id" + assert schema.timestampColumn == "ts" + for col, field in zip(df.columns.values, schema.fields): + assert col == field.name + if col in feature_columns: + assert field.featureId == "driver.day." + col + + + def test_from_csv_id_column_not_specified(self): + with pytest.raises(ValueError, match="Column with name driver is not found") as e_info: + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + csv_path = "tests/data/driver_features.csv" + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location="gs://test-bucket", + feature_columns=feature_columns, + timestamp_column="ts") + + def test_from_csv_timestamp_column_not_specified(self): + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed", "avg_distance_cancelled"] + csv_path = "tests/data/driver_features.csv" + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location="gs://test-bucket", + id_column = "driver_id", + feature_columns=feature_columns, + timestamp_column="ts") + + df = pd.read_csv(csv_path) + assert importer.require_staging == True + assert importer.remote_path == "gs://test-bucket/driver_features.csv" + for feature in importer.features: + assert feature.name in df.columns + assert feature.id == "driver.day." + feature.name + + import_spec = importer.spec + assert import_spec.type == "file" + assert import_spec.options == {"format" : "csv", "url" : "gs://test-bucket/driver_features.csv"} + assert import_spec.entities == ["driver"] + + schema = import_spec.schema + assert schema.entityIdColumn == "driver_id" + assert schema.timestampValue is not None + for col, field in zip(df.columns.values, schema.fields): + assert col == field.name + if col in feature_columns: + assert field.featureId == "driver.day." + col + + def test_from_csv_feature_columns_not_specified(self): + csv_path = "tests/data/driver_features.csv" + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location="gs://test-bucket", + id_column = "driver_id", + timestamp_column="ts") + + df = pd.read_csv(csv_path) + assert importer.require_staging == True + assert importer.remote_path == "gs://test-bucket/driver_features.csv" + for feature in importer.features: + assert feature.name in df.columns + assert feature.id == "driver.day." + feature.name + + import_spec = importer.spec + assert import_spec.type == "file" + assert import_spec.options == {"format" : "csv", "url" : "gs://test-bucket/driver_features.csv"} + assert import_spec.entities == ["driver"] + + schema = import_spec.schema + assert schema.entityIdColumn == "driver_id" + assert schema.timestampValue is not None + feature_columns = ["completed", "avg_distance_completed", "avg_customer_distance_completed", "avg_distance_cancelled"] + for col, field in zip(df.columns.values, schema.fields): + assert col == field.name + if col in feature_columns: + assert field.featureId == "driver.day." + col + + def test_from_csv_staging_location_not_specified(self): + with pytest.raises(ValueError, match="Specify staging_location for importing local file/dataframe") as e_info: + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + csv_path = "tests/data/driver_features.csv" + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", + feature_columns=feature_columns, + timestamp_column="ts") + + with pytest.raises(ValueError, match="Staging location must be in GCS") as e_info: + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + csv_path = "tests/data/driver_features.csv" + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location = "/home", + feature_columns=feature_columns, + timestamp_column="ts") + + +class TestHelpers: + def test_create_feature(self): + col = pd.Series([1]*3,dtype='int32',name="test") + expected = Feature(name="test", + entity="test", + granularity=Granularity.NONE, + owner="person", + value_type=ValueType.INT32) + actual = _create_feature(col, "test", Granularity.NONE, "person") + assert actual.id == expected.id + assert actual.value_type == expected.value_type + assert actual.owner == expected.owner + From b3124d2b2a062d45ee5977122f8c3124d51358a3 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 19 Dec 2018 18:36:35 +0530 Subject: [PATCH 07/50] Add client --- sdk/python/feast/sdk/client.py | 4 ++-- sdk/python/tests/sdk/test_client.py | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 91e8a032142..56a228de563 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -2,13 +2,13 @@ Main interface for users to interact with the Core API. """ +import grpc + import feast.core.CoreService_pb2_grpc as core from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup -import grpc - class Client: def __init__(self, serverURL, verbose=False): diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 13990f7581c..eeecda99f3d 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -67,6 +67,12 @@ def test_apply_single_storage(self, client, mocker): name = client.apply(my_storage) assert name == "TEST" + def test_apply_unsupported_object(self, client): + with pytest.raises(TypeError) as e_info: + client.apply(None) + assert e_info.__str__() == "Apply can only be passed one of the" \ + + "following types: [Feature, Entity, FeatureGroup, Storage, Importer]" + def test_apply_multiple(self, client, mocker): my_storage = Storage(id="TEST", type="redis") my_feature_group = FeatureGroup(id="test") From 1edbdc055d5bcb5cc98fa0a7f0b348e60047b661 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 19 Dec 2018 18:36:53 +0530 Subject: [PATCH 08/50] Update workflow notebook --- .../hello_feast/FeastPythonSDKProposal2.ipynb | 883 ++++++++++++++++++ .../examples/hello_feast/driver_features.csv | 11 + 2 files changed, 894 insertions(+) create mode 100644 sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb create mode 100644 sdk/python/examples/hello_feast/driver_features.csv diff --git a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb new file mode 100644 index 00000000000..68c320b6c5a --- /dev/null +++ b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb @@ -0,0 +1,883 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# __Feast Python SDK Proposal 2__" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# ideally we install feast first\n", + "import sys\n", + "sys.path.append(\"/Users/zhilingc/Documents/go-projects/src/github.com/gojektech/feast/sdk/python\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "from feast.sdk.resources.entity import Entity\n", + "from feast.sdk.resources.feature import Feature\n", + "from feast.sdk.resources.storage import Datastore\n", + "from feast.types.Granularity_pb2 import Granularity\n", + "from feast.types.Value_pb2 import ValueType\n", + "import feast.specs.FeatureSpec_pb2 as feature_pb\n", + "\n", + "from feast.sdk.importer import Importer\n", + "\n", + "from feast.sdk.client import Client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to your Feast server" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fs = Client('localhost:8433', verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load feature data from a local file" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
driver_idtscompletedavg_distance_completedavg_customer_distance_completedavg_distance_cancelled
012018-09-25T00:00:00.000121.102000172.000000-1.0000
122018-09-25T00:00:00.000238.160000783.00000015.6190
232018-09-25T00:00:00.000142.833286138.14285718.5935
342018-09-25T00:00:00.00074.5930001575.000000-1.0000
452018-09-25T00:00:00.0001511.765600314.0000006.7330
\n", + "
" + ], + "text/plain": [ + " driver_id ts completed avg_distance_completed \\\n", + "0 1 2018-09-25T00:00:00.000 12 1.102000 \n", + "1 2 2018-09-25T00:00:00.000 23 8.160000 \n", + "2 3 2018-09-25T00:00:00.000 14 2.833286 \n", + "3 4 2018-09-25T00:00:00.000 7 4.593000 \n", + "4 5 2018-09-25T00:00:00.000 15 11.765600 \n", + "\n", + " avg_customer_distance_completed avg_distance_cancelled \n", + "0 172.000000 -1.0000 \n", + "1 783.000000 15.6190 \n", + "2 138.142857 18.5935 \n", + "3 1575.000000 -1.0000 \n", + "4 314.000000 6.7330 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('driver_features.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create customer entity" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "name: customer\n", + "description: desc\n", + "tags:\n", + "- loyal\n", + "- customer\n", + "\n" + ] + } + ], + "source": [ + "customer_entity = Entity('customer', \"desc\", [\"loyal\", \"customer\"])\n", + "print(customer_entity)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create customer feature" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "id: customer.day.age\n", + "name: age\n", + "owner: willem.p@go-jek.com\n", + "description: Customer's age\n", + "granularity: DAY\n", + "valueType: INT64\n", + "entity: customer\n", + "dataStores:\n", + " serving:\n", + " id: REDIS1\n", + " warehouse:\n", + " id: BIGQUERY1\n", + "\n" + ] + } + ], + "source": [ + "customer_age = Feature(name='age', \n", + " entity=\"customer\",\n", + " granularity=Granularity.DAY, \n", + " owner='willem.p@go-jek.com',\n", + " description=\"Customer's age\",\n", + " value_type=ValueType.INT64, \n", + " serving_store=Datastore(id=\"REDIS1\"),\n", + " warehouse_store=Datastore(id=\"BIGQUERY1\"))\n", + "print(customer_age)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "customer_balance = Feature(name='balance', \n", + " entity=\"customer\",\n", + " granularity=Granularity.DAY, \n", + " owner='willem.p@go-jek.com', \n", + " value_type=ValueType.FLOAT, \n", + " description=\"Customer's account balance\",\n", + " serving_store=Datastore(id=\"REDIS1\"),\n", + " warehouse_store=Datastore(id=\"BIGQUERY1\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register customer entity in Feast" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully applied entity with name: customer\n", + "---\n", + "name: customer\n", + "description: desc\n", + "tags:\n", + "- loyal\n", + "- customer\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "'customer'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fs.apply(customer_entity)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register multiple customer features" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully applied feature with id: customer.day.age\n", + "---\n", + "id: customer.day.age\n", + "name: age\n", + "owner: willem.p@go-jek.com\n", + "description: Customer's age\n", + "granularity: DAY\n", + "valueType: INT64\n", + "entity: customer\n", + "dataStores:\n", + " serving:\n", + " id: REDIS1\n", + " warehouse:\n", + " id: BIGQUERY1\n", + "\n", + "Successfully applied feature with id: customer.day.balance\n", + "---\n", + "id: customer.day.balance\n", + "name: balance\n", + "owner: willem.p@go-jek.com\n", + "description: Customer's account balance\n", + "granularity: DAY\n", + "valueType: FLOAT\n", + "entity: customer\n", + "dataStores:\n", + " serving:\n", + " id: REDIS1\n", + " warehouse:\n", + " id: BIGQUERY1\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "['customer.day.age', 'customer.day.balance']" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fs.apply([customer_age, customer_balance])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Register customer's \"age\" feature in Feast using the apply method\n", + "* This command is idempotent" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully applied feature with id: customer.day.age\n", + "---\n", + "id: customer.day.age\n", + "name: age\n", + "owner: willem.p@go-jek.com\n", + "description: Customer's age\n", + "granularity: DAY\n", + "valueType: INT64\n", + "entity: customer\n", + "dataStores:\n", + " serving:\n", + " id: REDIS1\n", + " warehouse:\n", + " id: BIGQUERY1\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "'customer.day.age'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fs.apply(customer_age)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create an importer from a csv" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "driver_importer = Importer.from_csv('driver_features.csv', \n", + " granularity=Granularity.DAY, \n", + " entity='driver', \n", + " owner='willem.p@go-jek.com',\n", + " staging_location=\"gs://staging-bucket/feast\",\n", + " id_column=\"driver_id\", \n", + " timestamp_column=\"ts\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Alternative] Create an importer from a BigQuery table" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", + " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n", + "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", + " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n" + ] + } + ], + "source": [ + "driver_importer_from_bq = Importer.from_bq(\"the-big-data-staging-007.feast_test.surge_gocar\", \n", + " entity=\"s2id\", \n", + " granularity=Granularity.MINUTE, \n", + " owner='willem.p@go-jek.com',\n", + " timestamp_column=\"start_time\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Alternative] Create an importer from a Pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "my_pandas_df = driver_importer.df\n", + "driver_importer_from_df = Importer.from_df(my_pandas_df, \n", + " entity='driver', \n", + " granularity=Granularity.DAY, \n", + " owner='willem.p@go-jek.com', \n", + " staging_location=\"gs://staging-bucket/feast\",\n", + " id_column=\"driver_id\", \n", + " timestamp_column=\"ts\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Preview the dataframe loaded by the importer" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
driver_idtscompletedavg_distance_completedavg_customer_distance_completedavg_distance_cancelled
012018-09-25T00:00:00.000121.102000172.000000-1.0000
122018-09-25T00:00:00.000238.160000783.00000015.6190
232018-09-25T00:00:00.000142.833286138.14285718.5935
342018-09-25T00:00:00.00074.5930001575.000000-1.0000
452018-09-25T00:00:00.0001511.765600314.0000006.7330
\n", + "
" + ], + "text/plain": [ + " driver_id ts completed avg_distance_completed \\\n", + "0 1 2018-09-25T00:00:00.000 12 1.102000 \n", + "1 2 2018-09-25T00:00:00.000 23 8.160000 \n", + "2 3 2018-09-25T00:00:00.000 14 2.833286 \n", + "3 4 2018-09-25T00:00:00.000 7 4.593000 \n", + "4 5 2018-09-25T00:00:00.000 15 11.765600 \n", + "\n", + " avg_customer_distance_completed avg_distance_cancelled \n", + "0 172.000000 -1.0000 \n", + "1 783.000000 15.6190 \n", + "2 138.142857 18.5935 \n", + "3 1575.000000 -1.0000 \n", + "4 314.000000 6.7330 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "driver_importer_from_df.df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Describe the importer" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "type: file\n", + "options:\n", + " format: csv\n", + " url: gs://staging-bucket/feast/tmp_driver_120418\n", + "entities:\n", + "- driver\n", + "schema:\n", + " entityIdColumn: driver_id\n", + " fields:\n", + " - name: driver_id\n", + " - name: ts\n", + " - featureId: driver.day.completed\n", + " name: completed\n", + " - featureId: driver.day.avg_distance_completed\n", + " name: avg_distance_completed\n", + " - featureId: driver.day.avg_customer_distance_completed\n", + " name: avg_customer_distance_completed\n", + " - featureId: driver.day.avg_distance_cancelled\n", + " name: avg_distance_cancelled\n", + " timestampColumn: ts\n", + "\n" + ] + } + ], + "source": [ + "driver_importer_from_df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit the import job\n", + "* This loads the CSV from GCS into Feast\n", + "* Automatically registers entities and features with Feast during submission" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fs.apply(driver_importer, create_entity=True, create_features=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_starting import..._ \n", + "_10%_ \n", + "_50%_ \n", + "_100%_ \n", + "_10 rows imported successfully_ " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Write out specification files for later use" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "driver_importer.dump(\"driver_feature_import.yaml\")\n", + "customer_entity.dump(\"customer_entity.yaml\")\n", + "customer_age.dump(\"customer_entity.yaml\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a “feature set” which can be used to query both training data and serving data.\n", + "* The feature set is simply an object that locally tracks which entity, granularity, and features you are interested in." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "feature_set = fs.create_feature_set(entity='driver', granularity='minute', features=['latitude', 'longitude', 'event_time'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Produce training dataset\n", + "* Stages a table in BQ with output data\n", + "* Returns information about the dataset that has been created" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dataset_info = feature_set.create_training_dataset(start_date='2018-01-01', end_date='2018-02-01')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve training dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "file_path = 'mypath.feather'\n", + "dataset_info.download(destination=file_path, type='feather')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load training dataset into Pandas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import feather\n", + "df = feather.read_dataframe(file_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Alternative] Download dataset directly into a Pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df = dataset_info.download_to_df()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Do your model training..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ensure you have the list of entity keys for which you want to retrieve features" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "keys = [12345, 67890]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fetch serving data from Feast by reusing the same feature set\n", + "* This is a pandas dataframe (with possibly some extra methods which we will add)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "feature_data = feature_set.get_serving_data(keys, type='last')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/sdk/python/examples/hello_feast/driver_features.csv b/sdk/python/examples/hello_feast/driver_features.csv new file mode 100644 index 00000000000..03b54a8a39a --- /dev/null +++ b/sdk/python/examples/hello_feast/driver_features.csv @@ -0,0 +1,11 @@ +driver_id,ts,completed,avg_distance_completed,avg_customer_distance_completed,avg_distance_cancelled +1,2018-09-25T00:00:00.000,12,1.102,172,-1 +2,2018-09-25T00:00:00.000,23,8.16,783,15.619 +3,2018-09-25T00:00:00.000,14,2.83328571428571,138.142857142857,18.5935 +4,2018-09-25T00:00:00.000,7,4.593,1575,-1 +5,2018-09-25T00:00:00.000,15,11.7656,314,6.733 +6,2018-09-25T00:00:00.000,7,14.2352142857143,276.785714285714,3.1645 +7,2018-09-25T00:00:00.000,10,5.0266,421.1,-1 +8,2018-09-25T00:00:00.000,6,23.554,4639,-1 +9,2018-09-25T00:00:00.000,14,7.42042857142857,149.888888888889,1.371 +10,2018-09-25T00:00:00.000,4,-1,-1,17.088 \ No newline at end of file From 237b946c57d4a3eef2e110d9ba4a34e1b8c8f731 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Thu, 20 Dec 2018 14:34:33 +0530 Subject: [PATCH 09/50] Add tests --- sdk/python/feast/sdk/client.py | 31 ++++- sdk/python/feast/sdk/importer.py | 106 +++++++++++++----- sdk/python/feast/sdk/resources/entity.py | 3 +- sdk/python/feast/sdk/resources/feature.py | 1 + .../feast/sdk/resources/feature_group.py | 1 + sdk/python/feast/sdk/resources/storage.py | 2 +- sdk/python/feast/sdk/utils/bq_util.py | 2 +- sdk/python/feast/sdk/utils/gs_utils.py | 3 +- sdk/python/tests/sdk/test_client.py | 10 +- sdk/python/tests/sdk/test_importer.py | 90 ++++++++++++--- 10 files changed, 188 insertions(+), 61 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 56a228de563..31bc555a800 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -5,10 +5,14 @@ import grpc import feast.core.CoreService_pb2_grpc as core +import feast.core.JobService_pb2_grpc as jobs +from feast.core.JobService_pb2 import JobServiceTypes + from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup +from feast.sdk.utils.print_utils import spec_to_yaml class Client: def __init__(self, serverURL, verbose=False): @@ -21,7 +25,8 @@ def __init__(self, serverURL, verbose=False): ''' self.__channel = grpc.insecure_channel(serverURL) - self.stub = core.CoreServiceStub(self.__channel) + self.core_service_stub = core.CoreServiceStub(self.__channel) + self.job_service_stub = jobs.JobServiceStub(self.__channel) self.verbose = verbose def apply(self, obj): @@ -40,6 +45,22 @@ def apply(self, obj): return ids else: return self._apply(obj) + + def run(self, importer, name_override=None, + apply_entity=False, apply_features=False): + request = JobServiceTypes.SubmitImportJobRequest( + importSpec = importer.spec + ) + if name_override is not None: + request.name = name_override + + if importer.require_staging: + print("Staging file to remote path {}".format(importer.remote_path)) + importer.stage() + print("Submitting job with spec:\n {}".format(spec_to_yaml(importer.spec))) + response = self.job_service_stub.SubmitJob(request) + print("Submitted job with id: {}".format(response.jobId)) + return response.jobId def _apply(self, obj): '''Applies a single object to feast core. @@ -66,7 +87,7 @@ def _apply_feature(self, feature): Args: feature (Feature): feature to apply ''' - response = self.stub.ApplyFeature(feature.spec) + response = self.core_service_stub.ApplyFeature(feature.spec) if self.verbose: print("Successfully applied feature with id: {}\n---\n{}" .format(response.featureId, feature)) return response.featureId @@ -77,7 +98,7 @@ def _apply_entity(self, entity): Args: entity (Entity): entity to apply ''' - response = self.stub.ApplyEntity(entity.spec) + response = self.core_service_stub.ApplyEntity(entity.spec) if self.verbose: print("Successfully applied entity with name: {}\n---\n{}" .format(response.entityName, entity)) return response.entityName @@ -88,7 +109,7 @@ def _apply_feature_group(self, feature_group): Args: feature_group (FeatureGroup): feature group to apply ''' - response = self.stub.ApplyFeatureGroup(feature_group.spec) + response = self.core_service_stub.ApplyFeatureGroup(feature_group.spec) if self.verbose: print("Successfully applied feature group with id: "+ "{}\n---\n{}".format(response.featureGroupId, feature_group)) return response.featureGroupId @@ -99,7 +120,7 @@ def _apply_storage(self, storage): Args: storage (Storage): storage to apply ''' - response = self.stub.ApplyStorage(storage.spec) + response = self.core_service_stub.ApplyStorage(storage.spec) if self.verbose: print("Successfully applied storage with id: "+ "{}\n{}".format(response.storageId, storage)) return response.storageId diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index 30d59bbe649..0f6cb6302cd 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -1,6 +1,7 @@ import pandas as pd import ntpath import time +import datetime from feast.specs.ImportSpec_pb2 import ImportSpec, Schema, Field from feast.sdk.utils.gs_utils import gs_to_df, is_gs_path, df_to_gs from feast.sdk.utils.print_utils import spec_to_yaml @@ -20,10 +21,11 @@ def __init__(self): self.features = [] self.df = None self.bq_client = None - + @classmethod def from_csv(cls, path, entity, granularity, owner, staging_location=None, - id_column=None, feature_columns=None, timestamp_column=None): + id_column=None, feature_columns=None, timestamp_column=None, + timestamp_value=None): '''Creates an importer from a given csv dataset. This file can be either local or remote (in gcs). If it's a local file then staging_location must be determined. @@ -41,19 +43,21 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, to ingest. If not set, the importer will by default ingest all available columns. timestamp_column (str, optional): Defaults to None. Timestamp - column in the csv. If not set, defaults to the - first timestamp column in the csv. + column in the csv. If not set, defaults to timestamp + value. + timestamp_value (datetime, optional): Defaults to current datetime. + Timestamp value to assign to all features in the dataset. Returns: Importer: the importer for the dataset provided. ''' import_spec_options = {"format": "csv"} - import_spec_options["url"], require_staging = _get_remote_location(path, + import_spec_options["path"], require_staging = _get_remote_location(path, staging_location) iport = cls.__new__(cls) iport.source = "csv" iport.require_staging = require_staging - iport.remote_path = import_spec_options["url"] + iport.remote_path = import_spec_options["path"] if is_gs_path(path): iport.df = gs_to_df(path) @@ -62,13 +66,38 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, schema, iport.features = _detect_schema_and_feature(entity, granularity, owner, id_column, feature_columns, timestamp_column, - iport.df) + timestamp_value, iport.df) iport.spec = _create_import("file", import_spec_options, entity, schema) return iport @classmethod def from_bq(cls, bq_path, entity, granularity, owner, limit=10, - id_column=None, feature_columns=None, timestamp_column=None): + id_column=None, feature_columns=None, timestamp_column=None, + timestamp_value=None): + '''Creates an importer from a given bigquery table. + + Args: + bq_path (str): path to bigquery table, in the format + project.dataset.table + entity (str): entity id + granularity (Granularity): granularity of data + owner (str): owner + limit (int, optional): Defaults to 10. The maximum number of rows to + read into the importer df. + id_column (str, optional): Defaults to None. Id column in the csv. + If not set, will default to the `entity` argument. + feature_columns ([str], optional): Defaults to None. Feature columns + to ingest. If not set, the importer will by default + ingest all available columns. + timestamp_column (str, optional): Defaults to None. Timestamp + column in the csv. If not set, defaults to timestamp + value. + timestamp_value (datetime, optional): Defaults to current datetime. + Timestamp value to assign to all features in the dataset. + + Returns: + Importer: the importer for the dataset provided. + ''' iport = cls.__new__(cls) iport.source = "bigquery" iport.bq_client = bigquery.Client() @@ -88,14 +117,15 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, schema, iport.features = _detect_schema_and_feature(entity, granularity, owner, id_column, feature_columns, timestamp_column, - iport.df) + timestamp_value, iport.df) iport.spec = _create_import("bigquery", import_spec_options, entity, schema) return iport @classmethod def from_df(cls, df, entity, granularity, owner, staging_location, - id_column=None, feature_columns=None, timestamp_column=None): + id_column=None, feature_columns=None, timestamp_column=None, + timestamp_value=None): '''Creates an importer from a given pandas dataframe. To import a file from a dataframe, the data will have to be staged. @@ -112,8 +142,10 @@ def from_df(cls, df, entity, granularity, owner, staging_location, to ingest. If not set, the importer will by default ingest all available columns. timestamp_column (str, optional): Defaults to None. Timestamp - column in the csv. If not set, defaults to the - first timestamp column in the csv. + column in the csv. If not set, defaults to timestamp + value. + timestamp_value (datetime, optional): Defaults to current datetime. + Timestamp value to assign to all features in the dataset. Returns: Importer: the importer for the dataset provided. @@ -125,28 +157,38 @@ def from_df(cls, df, entity, granularity, owner, staging_location, iport.df = df import_spec_options = { "format": "csv", - "url": iport.remote_path + "path": iport.remote_path } schema, iport.features = _detect_schema_and_feature(entity, granularity, owner, id_column, feature_columns, timestamp_column, - iport.df) + timestamp_value, iport.df) iport.spec = _create_import("file", import_spec_options, entity, schema) return iport def stage(self): + '''Stage the data to its remote location + ''' + if not self.require_staging: return df_to_gs(self.df, self.remote_path) def describe(self): '''Print out the import spec. - TODO: more information? ''' print(spec_to_yaml(self.spec)) def dump(self, path): - pass + '''Dump the import spec to the provided path + + Arguments: + path (str): path to dump the spec to + ''' + + with open(path, 'w') as f: + f.write(spec_to_yaml(self.spec)) + print("Saved spec to {}".format(path)) def _get_remote_location(path, staging_location): '''Get the remote location of the file @@ -169,16 +211,17 @@ def _get_remote_location(path, staging_location): def _detect_schema_and_feature(entity, granularity, owner, id_column, - feature_columns, timestamp_column, df): + feature_columns, timestamp_column, timestamp_value, df): '''Create schema object for import spec. Args: - entity {str}: entity name - granualrity {Granularity}: granularity of the feature - id_column {str}: column name of entity id - timestamp_column {str}: column name of timestamp - feature_columns {[str]}: list of column to be extracted - df {Dataframe}: pandas dataframe of the data + entity (str): entity name + granualrity (Granularity): granularity of the feature + id_column (str): column name of entity id + timestamp_column (str): column name of timestamp + timestamp_value (datetime): timestamp to apply to all rows in dataset + feature_columns (str): list of column to be extracted + df (Dataframe): pandas dataframe of the data Raises: Exception -- [description] @@ -187,18 +230,21 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, schema = Schema() if (id_column is not None): schema.entityIdColumn = id_column + elif entity in df.columns: + schema.entityIdColumn = entity else: - if entity in df.columns: - schema.entityIdColumn = entity - else: - raise ValueError("Column with name {} is not found".format(entity)) + raise ValueError("Column with name {} is not found".format(entity)) if (timestamp_column is not None): schema.timestampColumn = timestamp_column else: - ts = Timestamp() - ts.GetCurrentTime() - schema.timestampValue = ts + if timestamp_value == None: + ts = Timestamp() + ts.GetCurrentTime() + else: + ts = Timestamp(seconds= + int((timestamp_value - datetime.datetime(1970,1,1)).total_seconds())) + schema.timestampValue.CopyFrom(ts) features = {} if (feature_columns is not None): diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py index 83e0936a808..6197d401ca7 100644 --- a/sdk/python/feast/sdk/resources/entity.py +++ b/sdk/python/feast/sdk/resources/entity.py @@ -97,4 +97,5 @@ def dump(self, path): path (str): destination file path ''' with open(path, 'w') as file: - file.write(str(self)) \ No newline at end of file + file.write(str(self)) + print("Saved spec to {}".format(path)) \ No newline at end of file diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index bdc36b14b88..6b780d27149 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -199,4 +199,5 @@ def dump(self, path): ''' with open(path, 'w') as file: file.write(str(self)) + print("Saved spec to {}".format(path)) \ No newline at end of file diff --git a/sdk/python/feast/sdk/resources/feature_group.py b/sdk/python/feast/sdk/resources/feature_group.py index 15e9528841c..aa3e8a9d954 100644 --- a/sdk/python/feast/sdk/resources/feature_group.py +++ b/sdk/python/feast/sdk/resources/feature_group.py @@ -102,3 +102,4 @@ def dump(self, path): ''' with open(path, 'w') as file: file.write(str(self)) + print("Saved spec to {}".format(path)) diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py index 56829f7f779..8bf0a886f39 100644 --- a/sdk/python/feast/sdk/resources/storage.py +++ b/sdk/python/feast/sdk/resources/storage.py @@ -82,7 +82,7 @@ def dump(self, path): ''' with open(path, 'w') as file: file.write(str(self)) - + print("Saved spec to {}".format(path)) class Datastore: def __init__(self, id, options={}): diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index 469cfbc56de..2cd97336361 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -3,7 +3,7 @@ def head(client, table, max_rows=10): '''Get the head of the table. Retrieves rows from the given table at - minimum cost so we don't get + minimum cost Args: client ([type]): bigquery client diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index c6a4fd5883b..c7b2cd87346 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -40,7 +40,8 @@ def df_to_gs(df, path): bucket = storage_client.get_bucket(bucket_name) blob = bucket.blob(blob_name) s = io.StringIO() - blob.upload_from_string(df.to_csv(s)) + df.to_csv(s) + blob.upload_from_string(s.getvalue()) def split_gs_path(path): path = path.replace("gs://", "", 1) diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index eeecda99f3d..12b437873ab 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -27,7 +27,7 @@ def test_apply_single_feature(self, client, mocker): return_value=CoreServiceTypes.ApplyFeatureResponse( featureId="test.none.test")): - client.stub = grpc_stub + client.core_service_stub = grpc_stub id = client.apply(my_feature) assert id == "test.none.test" @@ -39,7 +39,7 @@ def test_apply_single_entity(self, client, mocker): return_value=CoreServiceTypes.ApplyEntityResponse( entityName="test")): - client.stub = grpc_stub + client.core_service_stub = grpc_stub name = client.apply(my_entity) assert name == "test" @@ -51,7 +51,7 @@ def test_apply_single_feature_group(self, client, mocker): return_value=CoreServiceTypes.ApplyFeatureGroupResponse( featureGroupId="test")): - client.stub = grpc_stub + client.core_service_stub = grpc_stub name = client.apply(my_feature_group) assert name == "test" @@ -63,7 +63,7 @@ def test_apply_single_storage(self, client, mocker): return_value=CoreServiceTypes.ApplyStorageResponse( storageId="TEST")): - client.stub = grpc_stub + client.core_service_stub = grpc_stub name = client.apply(my_storage) assert name == "TEST" @@ -90,6 +90,6 @@ def test_apply_multiple(self, client, mocker): return_value=CoreServiceTypes.ApplyEntityResponse( entityName="test")) - client.stub = grpc_stub + client.core_service_stub = grpc_stub ids = client.apply([my_storage, my_entity, my_feature_group]) assert ids == ["TEST", "test", "test"] \ No newline at end of file diff --git a/sdk/python/tests/sdk/test_importer.py b/sdk/python/tests/sdk/test_importer.py index 0e7416d7621..a7162a3cd7b 100644 --- a/sdk/python/tests/sdk/test_importer.py +++ b/sdk/python/tests/sdk/test_importer.py @@ -1,42 +1,63 @@ import pandas as pd import pytest +import ntpath from feast.sdk.resources.feature import Feature from feast.types.Granularity_pb2 import Granularity from feast.types.Value_pb2 import ValueType from feast.sdk.importer import _create_feature, Importer +from feast.sdk.utils.gs_utils import gs_to_df, is_gs_path, df_to_gs class TestImporter(object): def test_from_csv(self): - feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] csv_path = "tests/data/driver_features.csv" + entity_name = "driver" + feature_granularity = Granularity.DAY + owner = "owner@feast.com" + staging_location = "gs://test-bucket" + id_column = "driver_id" + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + timestamp_column = "ts" + importer = Importer.from_csv(path = csv_path, - entity = "driver", - granularity = Granularity.DAY, - owner = "owner@feast.com", - staging_location="gs://test-bucket", - id_column = "driver_id", + entity = entity_name, + granularity = feature_granularity, + owner = owner, + staging_location=staging_location, + id_column = id_column, feature_columns=feature_columns, - timestamp_column="ts") + timestamp_column=timestamp_column) + self._validate_csv_importer(importer, csv_path, entity_name, feature_granularity, owner, staging_location, id_column, feature_columns, timestamp_column) + + def _validate_csv_importer(self, importer, csv_path, entity_name, feature_granularity, owner, staging_location = None, id_column = None, feature_columns = None, timestamp_column = None, timestamp_value = None): df = pd.read_csv(csv_path) - assert importer.require_staging == True - assert importer.remote_path == "gs://test-bucket/driver_features.csv" + assert not importer.require_staging == is_gs_path(csv_path) + if importer.require_staging: + assert importer.remote_path == "{}/{}".format(staging_location, ntpath.basename(csv_path)) + + # check features created for feature in importer.features: assert feature.name in df.columns - assert feature.id == "driver.day." + feature.name + assert feature.id == "{}.{}.{}".format(entity_name, Granularity.Enum.Name(feature_granularity).lower(), feature.name) import_spec = importer.spec assert import_spec.type == "file" - assert import_spec.options == {"format" : "csv", "url" : "gs://test-bucket/driver_features.csv"} - assert import_spec.entities == ["driver"] + path = importer.remote_path if importer.require_staging else csv_path + assert import_spec.options == {"format" : "csv", "path" : path} + assert import_spec.entities == [entity_name] schema = import_spec.schema - assert schema.entityIdColumn == "driver_id" - assert schema.timestampColumn == "ts" + assert schema.entityIdColumn == id_column if id_column is not None else entity_name + if timestamp_column is not None: + assert schema.timestampColumn == timestamp_column + elif timestamp_value is not None: + assert schema.timestampValue == timestamp_value + + # check schema's field for col, field in zip(df.columns.values, schema.fields): assert col == field.name if col in feature_columns: - assert field.featureId == "driver.day." + col + assert field.featureId == "{}.{}.{}".format(entity_name, Granularity.Enum.Name(feature_granularity).lower(), col) def test_from_csv_id_column_not_specified(self): @@ -72,7 +93,7 @@ def test_from_csv_timestamp_column_not_specified(self): import_spec = importer.spec assert import_spec.type == "file" - assert import_spec.options == {"format" : "csv", "url" : "gs://test-bucket/driver_features.csv"} + assert import_spec.options == {"format" : "csv", "path" : "gs://test-bucket/driver_features.csv"} assert import_spec.entities == ["driver"] schema = import_spec.schema @@ -102,7 +123,7 @@ def test_from_csv_feature_columns_not_specified(self): import_spec = importer.spec assert import_spec.type == "file" - assert import_spec.options == {"format" : "csv", "url" : "gs://test-bucket/driver_features.csv"} + assert import_spec.options == {"format" : "csv", "path" : "gs://test-bucket/driver_features.csv"} assert import_spec.entities == ["driver"] schema = import_spec.schema @@ -135,6 +156,41 @@ def test_from_csv_staging_location_not_specified(self): staging_location = "/home", feature_columns=feature_columns, timestamp_column="ts") + + def test_from_df(self): + csv_path = "tests/data/driver_features.csv" + df = pd.read_csv(csv_path) + staging_location = "gs://test-bucket" + entity = "driver" + + importer = Importer.from_df(df = df, + entity = entity, + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location=staging_location, + id_column = "driver_id", + timestamp_column="ts") + + assert importer.require_staging == True + assert "{}/tmp_{}".format(staging_location, entity) in importer.remote_path + for feature in importer.features: + assert feature.name in df.columns + assert feature.id == "driver.day." + feature.name + + import_spec = importer.spec + assert import_spec.type == "file" + assert import_spec.options == {"format" : "csv", "path" : importer.remote_path} + assert import_spec.entities == ["driver"] + + schema = import_spec.schema + assert schema.entityIdColumn == "driver_id" + assert schema.timestampValue is not None + feature_columns = ["completed", "avg_distance_completed", "avg_customer_distance_completed", "avg_distance_cancelled"] + for col, field in zip(df.columns.values, schema.fields): + assert col == field.name + if col in feature_columns: + assert field.featureId == "driver.day." + col + class TestHelpers: From 1416fe83ce822a8a95428b63a2c5290e61111d0a Mon Sep 17 00:00:00 2001 From: zhilingc Date: Fri, 21 Dec 2018 09:57:50 +0530 Subject: [PATCH 10/50] Clean up sdk code --- .../hello_feast/FeastPythonSDKProposal2.ipynb | 254 +++++--- .../examples/hello_feast/customer_entity.yaml | 12 + .../hello_feast/customer_features.csv | 6 + .../hello_feast/driver_feature_import.yaml | 15 + sdk/python/examples/playground/Untitled.ipynb | 561 ++++++++++++++++++ .../examples/playground/driver_features.csv | 11 + sdk/python/feast/sdk/client.py | 25 +- sdk/python/feast/sdk/importer.py | 219 ++++--- sdk/python/feast/sdk/resources/entity.py | 20 +- sdk/python/feast/sdk/resources/feature.py | 25 +- .../feast/sdk/resources/feature_group.py | 8 +- sdk/python/feast/sdk/resources/storage.py | 8 +- sdk/python/feast/sdk/utils/bq_util.py | 10 +- sdk/python/feast/sdk/utils/gs_utils.py | 4 +- sdk/python/feast/sdk/utils/print_utils.py | 2 +- sdk/python/feast/sdk/utils/types.py | 4 +- sdk/python/tests/sdk/test_client.py | 25 +- sdk/python/tests/sdk/test_importer.py | 188 +++--- 18 files changed, 1088 insertions(+), 309 deletions(-) create mode 100644 sdk/python/examples/hello_feast/customer_entity.yaml create mode 100644 sdk/python/examples/hello_feast/customer_features.csv create mode 100644 sdk/python/examples/hello_feast/driver_feature_import.yaml create mode 100644 sdk/python/examples/playground/Untitled.ipynb create mode 100644 sdk/python/examples/playground/driver_features.csv diff --git a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb index 68c320b6c5a..eb610959b1d 100644 --- a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb +++ b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb @@ -27,6 +27,7 @@ "outputs": [], "source": [ "import pandas as pd\n", + "import datetime\n", "\n", "from feast.sdk.resources.entity import Entity\n", "from feast.sdk.resources.feature import Feature\n", @@ -50,9 +51,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "fs = Client('localhost:8433', verbose=True)" @@ -252,7 +251,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "customer_balance = Feature(name='balance', \n", @@ -431,13 +432,13 @@ "metadata": {}, "outputs": [], "source": [ - "driver_importer = Importer.from_csv('driver_features.csv', \n", + "cust_importer = Importer.from_csv('customer_features.csv', \n", " granularity=Granularity.DAY, \n", - " entity='driver', \n", + " entity='customer', \n", " owner='willem.p@go-jek.com',\n", - " staging_location=\"gs://staging-bucket/feast\",\n", - " id_column=\"driver_id\", \n", - " timestamp_column=\"ts\")" + " staging_location=\"gs://zl-test-bucket/feast\",\n", + " id_column=\"customer_id\", \n", + " timestamp_value=datetime.datetime.now())" ] }, { @@ -449,7 +450,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -471,6 +472,48 @@ " timestamp_column=\"start_time\")" ] }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "type: bigquery\n", + "options:\n", + " dataset: feast_test\n", + " project: the-big-data-staging-007\n", + " table: surge_gocar\n", + "entities:\n", + "- s2id\n", + "schema:\n", + " entityIdColumn: s2id\n", + " fields:\n", + " - name: start_time\n", + " - name: s2id\n", + " - featureId: s2id.minute.surge_factor\n", + " name: surge_factor\n", + " timestampColumn: start_time\n", + "\n", + "id: s2id.minute.surge_factor\n", + "name: surge_factor\n", + "owner: willem.p@go-jek.com\n", + "granularity: MINUTE\n", + "valueType: DOUBLE\n", + "entity: s2id\n", + "dataStores: {}\n", + "\n" + ] + } + ], + "source": [ + "driver_importer_from_bq.describe()\n", + "for feat in driver_importer_from_bq.features:\n", + " print(feat)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -480,11 +523,11 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ - "my_pandas_df = driver_importer.df\n", + "my_pandas_df = pd.read_csv(\"driver_features.csv\")\n", "driver_importer_from_df = Importer.from_df(my_pandas_df, \n", " entity='driver', \n", " granularity=Granularity.DAY, \n", @@ -503,7 +546,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -527,87 +570,62 @@ " \n", " \n", " \n", - " driver_id\n", - " ts\n", - " completed\n", - " avg_distance_completed\n", - " avg_customer_distance_completed\n", - " avg_distance_cancelled\n", + " customer_id\n", + " age\n", + " balance\n", " \n", " \n", " \n", " \n", " 0\n", " 1\n", - " 2018-09-25T00:00:00.000\n", - " 12\n", - " 1.102000\n", - " 172.000000\n", - " -1.0000\n", + " 30\n", + " 100000\n", " \n", " \n", " 1\n", " 2\n", - " 2018-09-25T00:00:00.000\n", - " 23\n", - " 8.160000\n", - " 783.000000\n", - " 15.6190\n", + " 39\n", + " 12312\n", " \n", " \n", " 2\n", " 3\n", - " 2018-09-25T00:00:00.000\n", - " 14\n", - " 2.833286\n", - " 138.142857\n", - " 18.5935\n", + " 10\n", + " 10\n", " \n", " \n", " 3\n", " 4\n", - " 2018-09-25T00:00:00.000\n", - " 7\n", - " 4.593000\n", - " 1575.000000\n", - " -1.0000\n", + " 45\n", + " 241111\n", " \n", " \n", " 4\n", " 5\n", - " 2018-09-25T00:00:00.000\n", - " 15\n", - " 11.765600\n", - " 314.000000\n", - " 6.7330\n", + " 23\n", + " 50000\n", " \n", " \n", "\n", "" ], "text/plain": [ - " driver_id ts completed avg_distance_completed \\\n", - "0 1 2018-09-25T00:00:00.000 12 1.102000 \n", - "1 2 2018-09-25T00:00:00.000 23 8.160000 \n", - "2 3 2018-09-25T00:00:00.000 14 2.833286 \n", - "3 4 2018-09-25T00:00:00.000 7 4.593000 \n", - "4 5 2018-09-25T00:00:00.000 15 11.765600 \n", - "\n", - " avg_customer_distance_completed avg_distance_cancelled \n", - "0 172.000000 -1.0000 \n", - "1 783.000000 15.6190 \n", - "2 138.142857 18.5935 \n", - "3 1575.000000 -1.0000 \n", - "4 314.000000 6.7330 " + " customer_id age balance\n", + "0 1 30 100000\n", + "1 2 39 12312\n", + "2 3 10 10\n", + "3 4 45 241111\n", + "4 5 23 50000" ] }, - "execution_count": 14, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "driver_importer_from_df.df.head()" + "cust_importer.df.head()" ] }, { @@ -619,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -629,29 +647,24 @@ "type: file\n", "options:\n", " format: csv\n", - " url: gs://staging-bucket/feast/tmp_driver_120418\n", + " path: gs://zl-test-bucket/feast/customer_features.csv\n", "entities:\n", - "- driver\n", + "- customer\n", "schema:\n", - " entityIdColumn: driver_id\n", + " entityIdColumn: customer_id\n", " fields:\n", - " - name: driver_id\n", - " - name: ts\n", - " - featureId: driver.day.completed\n", - " name: completed\n", - " - featureId: driver.day.avg_distance_completed\n", - " name: avg_distance_completed\n", - " - featureId: driver.day.avg_customer_distance_completed\n", - " name: avg_customer_distance_completed\n", - " - featureId: driver.day.avg_distance_cancelled\n", - " name: avg_distance_cancelled\n", - " timestampColumn: ts\n", + " - name: customer_id\n", + " - featureId: customer.day.age\n", + " name: age\n", + " - featureId: customer.day.balance\n", + " name: balance\n", + " timestampValue: '2018-12-20T16:27:41Z'\n", "\n" ] } ], "source": [ - "driver_importer_from_df.describe()" + "cust_importer.describe()" ] }, { @@ -665,24 +678,63 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "fs.apply(driver_importer, create_entity=True, create_features=True)" - ] - }, - { - "cell_type": "markdown", + "execution_count": 18, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Staging file to remote path gs://zl-test-bucket/feast/customer_features.csv\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", + " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n", + "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", + " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Submitting job with spec:\n", + " type: file\n", + "options:\n", + " format: csv\n", + " path: gs://zl-test-bucket/feast/customer_features.csv\n", + "entities:\n", + "- customer\n", + "schema:\n", + " entityIdColumn: customer_id\n", + " fields:\n", + " - name: customer_id\n", + " - featureId: customer.day.age\n", + " name: age\n", + " - featureId: customer.day.balance\n", + " name: balance\n", + " timestampValue: '2018-12-20T16:27:41Z'\n", + "\n", + "Submitted job with id: myjob1545303576252\n" + ] + }, + { + "data": { + "text/plain": [ + "'myjob1545303576252'" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "_starting import..._ \n", - "_10%_ \n", - "_50%_ \n", - "_100%_ \n", - "_10 rows imported successfully_ " + "fs.run(cust_importer, name_override=\"myjob\")" ] }, { @@ -694,13 +746,21 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved spec to driver_feature_import.yaml\n", + "Saved spec to customer_entity.yaml\n", + "Saved spec to customer_entity.yaml\n" + ] + } + ], "source": [ - "driver_importer.dump(\"driver_feature_import.yaml\")\n", + "cust_importer.dump(\"driver_feature_import.yaml\")\n", "customer_entity.dump(\"customer_entity.yaml\")\n", "customer_age.dump(\"customer_entity.yaml\")" ] diff --git a/sdk/python/examples/hello_feast/customer_entity.yaml b/sdk/python/examples/hello_feast/customer_entity.yaml new file mode 100644 index 00000000000..48ac52fbbef --- /dev/null +++ b/sdk/python/examples/hello_feast/customer_entity.yaml @@ -0,0 +1,12 @@ +id: customer.day.age +name: age +owner: willem.p@go-jek.com +description: Customer's age +granularity: DAY +valueType: INT64 +entity: customer +dataStores: + serving: + id: REDIS1 + warehouse: + id: BIGQUERY1 diff --git a/sdk/python/examples/hello_feast/customer_features.csv b/sdk/python/examples/hello_feast/customer_features.csv new file mode 100644 index 00000000000..3bd2e32a3df --- /dev/null +++ b/sdk/python/examples/hello_feast/customer_features.csv @@ -0,0 +1,6 @@ +customer_id,age,balance +1,30,100000 +2,39,12312 +3,10,10 +4,45,241111 +5,23,50000 \ No newline at end of file diff --git a/sdk/python/examples/hello_feast/driver_feature_import.yaml b/sdk/python/examples/hello_feast/driver_feature_import.yaml new file mode 100644 index 00000000000..fbf9bacdf33 --- /dev/null +++ b/sdk/python/examples/hello_feast/driver_feature_import.yaml @@ -0,0 +1,15 @@ +type: file +options: + format: csv + path: gs://zl-test-bucket/feast/customer_features.csv +entities: +- customer +schema: + entityIdColumn: customer_id + fields: + - name: customer_id + - featureId: customer.day.age + name: age + - featureId: customer.day.balance + name: balance + timestampValue: '2018-12-20T16:27:41Z' diff --git a/sdk/python/examples/playground/Untitled.ipynb b/sdk/python/examples/playground/Untitled.ipynb new file mode 100644 index 00000000000..011b89d6829 --- /dev/null +++ b/sdk/python/examples/playground/Untitled.ipynb @@ -0,0 +1,561 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"/Users/zhilingc/Documents/go-projects/src/github.com/gojektech/feast/sdk/python\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from feast.sdk.utils.gs_utils import *\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['zl-test-bucket', 'cicilan.csv']" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = \"gs://zl-test-bucket/cicilan.csv\"\n", + "path = path.replace('gs://', '', 1)\n", + "path.split('/', 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'gs_to_pd' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgs_to_pd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"gs://zl-test-bucket/cicilan.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'gs_to_pd' is not defined" + ] + } + ], + "source": [ + "df = gs_to_pd(\"gs://zl-test-bucket/cicilan.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "int64\n" + ] + } + ], + "source": [ + "df.dtypes[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
driver_idcicilan_idstart_datestatuspaused_overdue_paymentspaused_pending_paymentstotal_paid_payments_migratedcustomised_installment_countidinstallment_valueinstallment_countdriveridmatch
054021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
154021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
254021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
354021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
454018277062015-09-18appliedNaNNaNNaNNaN6260001050.05401827701
\n", + "
" + ], + "text/plain": [ + " driver_id cicilan_id start_date status paused_overdue_payments \\\n", + "0 540212233 1 2017-02-01 applied NaN \n", + "1 540212233 1 2017-02-01 applied NaN \n", + "2 540212233 1 2017-02-01 applied NaN \n", + "3 540212233 1 2017-02-01 applied NaN \n", + "4 540182770 6 2015-09-18 applied NaN \n", + "\n", + " paused_pending_payments total_paid_payments_migrated \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "4 NaN NaN \n", + "\n", + " customised_installment_count id installment_value installment_count \\\n", + "0 NaN 1 8500 20.0 \n", + "1 NaN 1 8500 20.0 \n", + "2 NaN 1 8500 20.0 \n", + "3 NaN 1 8500 20.0 \n", + "4 NaN 6 26000 1050.0 \n", + "\n", + " driverid match \n", + "0 540212233 1 \n", + "1 540212233 1 \n", + "2 540212233 1 \n", + "3 540212233 1 \n", + "4 540182770 1 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "list.remove(x): x not in list", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mcolumn_name\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'driver_id'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mcolumn_name\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mValueError\u001b[0m: list.remove(x): x not in list" + ] + } + ], + "source": [ + "column_name = list(df.columns.values)\n", + "column_name\n", + "\n", + "column_name.remove('driver_id')\n", + "column_name.remove(None)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'dtype' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'int64'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'dtype' is not defined" + ] + } + ], + "source": [ + "dtype('int64')" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "code_folding": [], + "collapsed": true + }, + "outputs": [], + "source": [ + "dft = pd.DataFrame(dict(A = np.random.rand(3),\n", + " B = 1,\n", + " C = 'foo',\n", + " D = pd.Timestamp('20180310'),\n", + " E = pd.Series([1.0]*3).astype('float32'),\n", + " F = False,\n", + " G = pd.Series([1]*3,dtype='int8')))" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'object'" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dft['C'].dtype.__str__()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append(\"/Users/zhilingc/Documents/go-projects/src/github.com/gojektech/feast/sdk/python\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from feast.sdk.importer import Importer\n", + "from feast.types.Granularity_pb2 import Granularity\n", + "# from feast.types.Value_pb2 import ValueType" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "importer = Importer.from_csv(\"driver_features.csv\", \"entity\", Granularity.DAY, \"me\", staging_location=\"gs://zl-test-bucket\",\n", + " id_column=\"driver_id\", timestamp_column=\"ts\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "id: entity.day.completed\n", + "name: completed\n", + "owner: me\n", + "granularity: DAY\n", + "valueType: INT64\n", + "entity: entity\n", + "dataStores: {}\n", + "\n", + "id: entity.day.avg_distance_completed\n", + "name: avg_distance_completed\n", + "owner: me\n", + "granularity: DAY\n", + "valueType: DOUBLE\n", + "entity: entity\n", + "dataStores: {}\n", + "\n", + "id: entity.day.avg_customer_distance_completed\n", + "name: avg_customer_distance_completed\n", + "owner: me\n", + "granularity: DAY\n", + "valueType: DOUBLE\n", + "entity: entity\n", + "dataStores: {}\n", + "\n", + "id: entity.day.avg_distance_cancelled\n", + "name: avg_distance_cancelled\n", + "owner: me\n", + "granularity: DAY\n", + "valueType: DOUBLE\n", + "entity: entity\n", + "dataStores: {}\n", + "\n" + ] + } + ], + "source": [ + "for ft in importer.features:\n", + " print(ft)\n", + "\n", + "importer.update_feature('feature_id', )" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
driver_idtscompletedavg_distance_completedavg_customer_distance_completedavg_distance_cancelled
05404038922018-09-25T00:00:00.000121.102000172.000000-1.0000
15404039172018-09-25T00:00:00.000238.160000783.00000015.6190
25404039182018-09-25T00:00:00.000142.833286138.14285718.5935
35404039202018-09-25T00:00:00.00074.5930001575.000000-1.0000
45404039262018-09-25T00:00:00.0001511.765600314.0000006.7330
\n", + "
" + ], + "text/plain": [ + " driver_id ts completed avg_distance_completed \\\n", + "0 540403892 2018-09-25T00:00:00.000 12 1.102000 \n", + "1 540403917 2018-09-25T00:00:00.000 23 8.160000 \n", + "2 540403918 2018-09-25T00:00:00.000 14 2.833286 \n", + "3 540403920 2018-09-25T00:00:00.000 7 4.593000 \n", + "4 540403926 2018-09-25T00:00:00.000 15 11.765600 \n", + "\n", + " avg_customer_distance_completed avg_distance_cancelled \n", + "0 172.000000 -1.0000 \n", + "1 783.000000 15.6190 \n", + "2 138.142857 18.5935 \n", + "3 1575.000000 -1.0000 \n", + "4 314.000000 6.7330 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "pd.read_csv(\"driver_features.csv\").head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/sdk/python/examples/playground/driver_features.csv b/sdk/python/examples/playground/driver_features.csv new file mode 100644 index 00000000000..88d1bcd0feb --- /dev/null +++ b/sdk/python/examples/playground/driver_features.csv @@ -0,0 +1,11 @@ +driver_id,ts,completed,avg_distance_completed,avg_customer_distance_completed,avg_distance_cancelled +540403892,2018-09-25T00:00:00.000,12,1.102,172,-1 +540403917,2018-09-25T00:00:00.000,23,8.16,783,15.619 +540403918,2018-09-25T00:00:00.000,14,2.83328571428571,138.142857142857,18.5935 +540403920,2018-09-25T00:00:00.000,7,4.593,1575,-1 +540403926,2018-09-25T00:00:00.000,15,11.7656,314,6.733 +540403932,2018-09-25T00:00:00.000,7,14.2352142857143,276.785714285714,3.1645 +540403936,2018-09-25T00:00:00.000,10,5.0266,421.1,-1 +540403955,2018-09-25T00:00:00.000,6,23.554,4639,-1 +540403956,2018-09-25T00:00:00.000,14,7.42042857142857,149.888888888889,1.371 +540403961,2018-09-25T00:00:00.000,4,-1,-1,17.088 \ No newline at end of file diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 31bc555a800..2980950dd39 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -20,7 +20,7 @@ def __init__(self, serverURL, verbose=False): endpoint specified in the parameter Args: - serverURI (string): feast's endpoint URL + serverURI (str): feast's endpoint URL (e.g.: "my.feast.com:8433") ''' @@ -54,10 +54,18 @@ def run(self, importer, name_override=None, if name_override is not None: request.name = name_override + if apply_entity: + self._apply_entity(importer.entity) + if apply_features: + for feature in importer.features: + self._apply_feature(feature) + if importer.require_staging: - print("Staging file to remote path {}".format(importer.remote_path)) + print("Staging file to remote path {}" + .format(importer.remote_path)) importer.stage() - print("Submitting job with spec:\n {}".format(spec_to_yaml(importer.spec))) + print("Submitting job with spec:\n {}" + .format(spec_to_yaml(importer.spec))) response = self.job_service_stub.SubmitJob(request) print("Submitted job with id: {}".format(response.jobId)) return response.jobId @@ -67,7 +75,7 @@ def _apply(self, obj): Args: obj (object): one of - [Feature, Entity, FeatureGroup, Storage, Importer] + [Feature, Entity, FeatureGroup, Storage, Importer] ''' if isinstance(obj, Feature): return self._apply_feature(obj) @@ -85,7 +93,7 @@ def _apply_feature(self, feature): '''Apply the feature to the core API Args: - feature (Feature): feature to apply + feature (feast.sdk.resources.feature.Feature): feature to apply ''' response = self.core_service_stub.ApplyFeature(feature.spec) if self.verbose: print("Successfully applied feature with id: {}\n---\n{}" @@ -96,7 +104,7 @@ def _apply_entity(self, entity): '''Apply the entity to the core API Args: - entity (Entity): entity to apply + entity (feast.sdk.resources.entity.Entity): entity to apply ''' response = self.core_service_stub.ApplyEntity(entity.spec) if self.verbose: print("Successfully applied entity with name: {}\n---\n{}" @@ -107,7 +115,8 @@ def _apply_feature_group(self, feature_group): '''Apply the feature group to the core API Args: - feature_group (FeatureGroup): feature group to apply + feature_group (feast.sdk.resources.feature_group.FeatureGroup): + feature group to apply ''' response = self.core_service_stub.ApplyFeatureGroup(feature_group.spec) if self.verbose: print("Successfully applied feature group with id: "+ @@ -118,7 +127,7 @@ def _apply_storage(self, storage): '''Apply the storage to the core API Args: - storage (Storage): storage to apply + storage (feast.sdk.resources.storage.Storage): storage to apply ''' response = self.core_service_stub.ApplyStorage(storage.spec) if self.verbose: print("Successfully applied storage with id: "+ diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index 0f6cb6302cd..f577f07583f 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -8,19 +8,54 @@ from feast.sdk.utils.types import dtype_to_value_type from feast.sdk.utils.bq_util import head from feast.sdk.resources.feature import Feature +from feast.sdk.resources.entity import Entity from google.protobuf.timestamp_pb2 import Timestamp from google.cloud import bigquery class Importer: - def __init__(self): - self.source = None - self.require_staging = False - self.remote_path = None - self.spec = None - self.features = [] - self.df = None - self.bq_client = None + def __init__(self, specs, df, properties): + self._properties = properties + self._specs = specs + self.df = df + + @property + def source(self): + '''str: source of the data''' + return self._properties.get("source") + + @property + def size(self): + '''str: number of rows in the data''' + return self._properties.get("size") + + @property + def require_staging(self): + '''bool: whether the data needs to be staged''' + return self._properties.get("require_staging") + + @property + def remote_path(self): + '''str: remote path of the file''' + return self._properties.get("remote_path") + + @property + def spec(self): + '''feast.specs.ImportSpec_pb2.ImportSpec: + import spec for this dataset''' + return self._specs.get("import") + + @property + def features(self): + '''list[feast.specs.FeatureSpec_pb2.FeatureSpec]: + list of features associated with this dataset''' + return self._specs.get("features") + + @property + def entity(self): + '''feast.specs.EntitySpec_pb2.EntitySpec: + entity associated with this dataset''' + return self._specs.get("entity") @classmethod def from_csv(cls, path, entity, granularity, owner, staging_location=None, @@ -36,15 +71,14 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, granularity (Granularity): granularity of data owner (str): owner staging_location (str, optional): Defaults to None. Staging location - for ingesting a local csv file. + for ingesting a local csv file. id_column (str, optional): Defaults to None. Id column in the csv. - If not set, will default to the `entity` argument. + If not set, will default to the `entity` argument. feature_columns ([str], optional): Defaults to None. Feature columns - to ingest. If not set, the importer will by default - ingest all available columns. + to ingest. If not set, the importer will by default ingest all + available columns. timestamp_column (str, optional): Defaults to None. Timestamp - column in the csv. If not set, defaults to timestamp - value. + column in the csv. If not set, defaults to timestamp value. timestamp_value (datetime, optional): Defaults to current datetime. Timestamp value to assign to all features in the dataset. @@ -53,22 +87,21 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, ''' import_spec_options = {"format": "csv"} import_spec_options["path"], require_staging = _get_remote_location(path, - staging_location) - iport = cls.__new__(cls) - iport.source = "csv" - iport.require_staging = require_staging - iport.remote_path = import_spec_options["path"] - + staging_location) if is_gs_path(path): - iport.df = gs_to_df(path) + df = gs_to_df(path) else: - iport.df = pd.read_csv(path) - - schema, iport.features = _detect_schema_and_feature(entity, + df = pd.read_csv(path) + schema, features = _detect_schema_and_feature(entity, granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, iport.df) - iport.spec = _create_import("file", import_spec_options, entity, schema) - return iport + timestamp_value, df) + iport_spec = _create_import("file", import_spec_options, entity, schema) + + props = (_properties("csv", len(df.index), require_staging, + import_spec_options["path"])) + specs = _specs(iport_spec, Entity(name=entity), features) + + return cls(specs, df, props) @classmethod def from_bq(cls, bq_path, entity, granularity, owner, limit=10, @@ -83,44 +116,42 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, granularity (Granularity): granularity of data owner (str): owner limit (int, optional): Defaults to 10. The maximum number of rows to - read into the importer df. + read into the importer df. id_column (str, optional): Defaults to None. Id column in the csv. - If not set, will default to the `entity` argument. + If not set, will default to the `entity` argument. feature_columns ([str], optional): Defaults to None. Feature columns - to ingest. If not set, the importer will by default - ingest all available columns. + to ingest. If not set, the importer will by default ingest all + available columns. timestamp_column (str, optional): Defaults to None. Timestamp - column in the csv. If not set, defaults to timestamp - value. + column in the csv. If not set, defaults to timestamp value. timestamp_value (datetime, optional): Defaults to current datetime. Timestamp value to assign to all features in the dataset. Returns: Importer: the importer for the dataset provided. ''' - iport = cls.__new__(cls) - iport.source = "bigquery" - iport.bq_client = bigquery.Client() + + cli = bigquery.Client() project, dataset_id, table_id = bq_path.split(".") - dataset_ref = iport.bq_client.dataset(dataset_id, project=project) + dataset_ref = cli.dataset(dataset_id, project=project) table_ref = dataset_ref.table(table_id) - table = iport.bq_client.get_table(table_ref) - + table = cli.get_table(table_ref) + import_spec_options = { "project": project, "dataset": dataset_id, "table": table_id } - - iport.require_staging = False - iport.df = head(iport.bq_client, table, limit) - - schema, iport.features = _detect_schema_and_feature(entity, + df = head(cli, table, limit) + schema, features = _detect_schema_and_feature(entity, granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, iport.df) + timestamp_value, df) + iport_spec = _create_import("bigquery", import_spec_options, + entity, schema) - iport.spec = _create_import("bigquery", import_spec_options, entity, schema) - return iport + props = _properties("bigquery", table.num_rows, False, None) + specs = _specs(iport_spec, Entity(name=entity), features) + return cls(specs, df, props) @classmethod def from_df(cls, df, entity, granularity, owner, staging_location, @@ -139,32 +170,33 @@ def from_df(cls, df, entity, granularity, owner, staging_location, id_column (str, optional): Defaults to None. Id column in the csv. If not set, will default to the `entity` argument. feature_columns ([str], optional): Defaults to None. Feature columns - to ingest. If not set, the importer will by default - ingest all available columns. + to ingest. If not set, the importer will by default ingest all + available columns. timestamp_column (str, optional): Defaults to None. Timestamp - column in the csv. If not set, defaults to timestamp - value. + column in the csv. If not set, defaults to timestamp value. timestamp_value (datetime, optional): Defaults to current datetime. Timestamp value to assign to all features in the dataset. Returns: Importer: the importer for the dataset provided. ''' - tmp_file_name = "tmp_{}_{}.csv".format(entity, int(round(time.time() * 1000))) - iport = cls.__new__(cls) - iport.source = "dataframe" - iport.remote_path, iport.require_staging = _get_remote_location(tmp_file_name, staging_location) - iport.df = df + tmp_file_name = ("tmp_{}_{}.csv" + .format(entity, int(round(time.time() * 1000)))) import_spec_options = { - "format": "csv", - "path": iport.remote_path + "format": "csv" } - - schema, iport.features = _detect_schema_and_feature(entity, + import_spec_options["path"], require_staging = ( + _get_remote_location(tmp_file_name, staging_location)) + schema, features = _detect_schema_and_feature(entity, granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, iport.df) - iport.spec = _create_import("file", import_spec_options, entity, schema) - return iport + timestamp_value, df) + iport_spec = _create_import("file", import_spec_options, entity, schema) + + props = _properties("dataframe", len(df.index), require_staging, + import_spec_options["path"]) + specs = _specs(iport_spec, Entity(name=entity), features) + + return cls(specs, df, props) def stage(self): '''Stage the data to its remote location @@ -190,19 +222,54 @@ def dump(self, path): f.write(spec_to_yaml(self.spec)) print("Saved spec to {}".format(path)) +def _properties(source, size, require_staging, remote): + '''Args: + source (str): source of the data + size (int): number of rows of the dataset + require_staging (bool): whether the file requires staging + remote (str): remote path + + Returns: + dict: set of importer properties + ''' + + return { + "source": source, + "size": size, + "require_staging": require_staging, + "remote_path": remote + } + +def _specs(iport, entity, features): + '''Args: + iport {} -- [description] + entity {[type]} -- [description] + features {[type]} -- [description] + + Returns: + [type] -- [description] + ''' + + return { + "import": iport, + "features": features, + "entity": entity + } + def _get_remote_location(path, staging_location): '''Get the remote location of the file Args: - path {str}: [description] - staging_location {str}: [description] + path (str): raw path of the file + staging_location (str): path to stage the file ''' if (is_gs_path(path)): return path, False if staging_location is None: - raise ValueError("Specify staging_location for importing local file/dataframe") + raise ValueError( + "Specify staging_location for importing local file/dataframe") if not is_gs_path(staging_location): raise ValueError("Staging location must be in GCS") @@ -216,12 +283,14 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, Args: entity (str): entity name - granualrity (Granularity): granularity of the feature + granularity (feast.types.Granularity_pb2.Granularity): granularity of + the feature id_column (str): column name of entity id timestamp_column (str): column name of timestamp - timestamp_value (datetime): timestamp to apply to all rows in dataset + timestamp_value (datetime.datetime): timestamp to apply to all + rows in dataset feature_columns (str): list of column to be extracted - df (Dataframe): pandas dataframe of the data + df (pandas.Dataframe): pandas dataframe of the data Raises: Exception -- [description] @@ -259,7 +328,8 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, _remove_safely(feature_columns, schema.entityIdColumn) _remove_safely(feature_columns, schema.timestampColumn) for column in feature_columns: - features[column] = _create_feature(df[column], entity, granularity, owner) + features[column] = _create_feature(df[column], entity, + granularity, owner) for col in df.columns: field = schema.fields.add() @@ -275,11 +345,12 @@ def _create_feature(column, entity, granularity, owner): Args: column (pandas.Series): data column entity (str): entity name - granularity (Granularity.Enum): granularity of the feature + granularity (feast.types.Granularity_pb2.Granularity): granularity of + the feature owner (str): owner of the feature Returns: - Feature: feature for this data column + feast.sdk.resources.Feature: feature for this data column ''' return Feature( name=column.name, @@ -295,10 +366,10 @@ def _create_import(import_type, options, entity, schema): import_type (str): import type options (dict): import spec options entity (str): entity - schema (Schema): schema of the file + schema (feast.specs.ImportSpec_pb2.Schema): schema of the file Returns: - ImportSpec: import spec + feast.specs.ImportSpec_pb2.ImportSpec: import spec ''' return ImportSpec( diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py index 6197d401ca7..61a0d395d6e 100644 --- a/sdk/python/feast/sdk/resources/entity.py +++ b/sdk/python/feast/sdk/resources/entity.py @@ -17,7 +17,8 @@ def __init__(self, name="", description="", tags=[]): Args: name (str): name of entity description (str): description of entity - tags (list): [description] (default: {[]}) + tags (list[str], optional): defaults to []. + list of tags for this entity ''' self.__spec = entity_pb.EntitySpec(name=name, description=description, tags=tags) @@ -56,7 +57,7 @@ def from_yaml(cls, path): '''Create an instance of entity from a yaml file Args: - path (string): path to yaml file + path (str): path to yaml file ''' with open(path, 'r') as file: content = yaml.safe_load(file.read()) @@ -72,12 +73,13 @@ def create_feature(self, name, granularity, value_type, owner, '''Create a feature related to this entity Args: - name (string): feature name - granularity (Granularity): granularity of the feature. e.g.: - Granularity.NONE, Granularity.SECOND, etc - value_type (ValueType): value type of the feature - owner (string): owner of the feature - description (string): feature's description + name (str): feature name + granularity (feast.types.Granularity_pb2.Granularity): granularity + of the feature. e.g.: Granularity.NONE, Granularity.SECOND, etc + value_type (feast.types.ValueType_pb2.ValueType): value type of + the feature + owner (str): owner of the feature + description (str): feature's description ''' pass @@ -85,7 +87,7 @@ def __str__(self): '''Print the feature in yaml format Returns: - string: yaml formatted representation of the entity + str: yaml formatted representation of the entity ''' return spec_to_yaml(self.__spec) diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index 6b780d27149..17a082d3c83 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -20,16 +20,21 @@ def __init__(self, name='', entity='', granularity=Granularity.NONE, Args: name (str): name of feature, in lower snake case entity (str): entity the feature belongs to, in lower case - granularity (int): granularity of the feature, one of Granularity.Enum + granularity (int): granularity of the feature, one of + Granularity.Enum owner (str): owner of the feature - value_type {ValueType} -- value type of the feature (default: {ValueType.DOUBLE}) - description (str): description of the feature (default: {""}) - uri (str): uri pointing to the source code or origin of this feature (default: {""}) - warehouse_store (Datastore): warehouse store id and options - serving_store (Datastore): serving store id and options - group (str): (optional) feature group to inherit from (default: {""}) - tags (list): (optional) tags assigned to the feature (default: {[]}) - options (dict): (optional) additional options for the feature (default: {{}}) + value_type (feast.types.ValueType_pb2.ValueType): defaults to + ValueType.DOUBLE. value type of the feature + description (str): defaults to "". description of the feature + uri (str): defaults to "". uri pointing to the source code or + origin of this feature + warehouse_store (feast.specs.FeatureSpec_pb2.Datastore): + warehouse store id and options + serving_store (feast.specs.FeatureSpec_pb2.Datastore): serving + store id and options + group (str, optional): feature group to inherit from + tags (list[str], optional): tags assigned to the feature + options (dic, optional): additional options for the feature ''' id = '.'.join([entity, @@ -186,7 +191,7 @@ def __str__(self): '''Print the feature in yaml format Returns: - string: yaml formatted representation of the entity + str: yaml formatted representation of the entity ''' return spec_to_yaml(self.__spec) diff --git a/sdk/python/feast/sdk/resources/feature_group.py b/sdk/python/feast/sdk/resources/feature_group.py index aa3e8a9d954..00de13bbb21 100644 --- a/sdk/python/feast/sdk/resources/feature_group.py +++ b/sdk/python/feast/sdk/resources/feature_group.py @@ -18,8 +18,10 @@ def __init__(self, id, tags=[], warehouse_store=None, serving_store=None): id (str): id of feature group tags (list): Defaults to []. tags assigned to feature group as well as all children features. - warehouse_store (DataStore): warehouse store id and options - serving_store (DataStore): serving store id and options + warehouse_store (feast.specs.FeatureSpec_pb2.DataStore): + warehouse store id and options + serving_store (feast.specs.FeatureSpec_pb2.DataStore): + serving store id and options ''' warehouse_store_spec = None serving_store_spec = None @@ -89,7 +91,7 @@ def __str__(self): '''Return string representation of the feature group Returns: - string: yaml formatted representation of the entity + str: yaml formatted representation of the entity ''' return spec_to_yaml(self.__spec) diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py index 8bf0a886f39..99aa7804621 100644 --- a/sdk/python/feast/sdk/resources/storage.py +++ b/sdk/python/feast/sdk/resources/storage.py @@ -16,7 +16,7 @@ def __init__(self, id = "", type = "", options={}): Args: id (str): storage id type (str): storage type - options (dict) : map of storage options + options (dict, optional) : map of storage options ''' self.__spec = storage_pb.StorageSpec(id = id, type = type, options = options) @@ -54,7 +54,7 @@ def from_yaml(cls, path): '''Create an instance of storage from a yaml file Args: - path (string): path to yaml file + path (str): path to yaml file ''' with open(path, 'r') as file: content = yaml.safe_load(file.read()) @@ -69,7 +69,7 @@ def __str__(self): '''Return string representation the storage in yaml format Returns: - string: yaml formatted representation of the entity + str: yaml formatted representation of the entity ''' return spec_to_yaml(self.__spec) @@ -92,7 +92,7 @@ def __str__(self): '''Print the datastore in yaml format Returns: - string: yaml formatted representation of the Datastore + str: yaml formatted representation of the Datastore ''' return spec_to_yaml(self.__spec) diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index 2cd97336361..769a9eec317 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -3,12 +3,14 @@ def head(client, table, max_rows=10): '''Get the head of the table. Retrieves rows from the given table at - minimum cost + minimum cost Args: - client ([type]): bigquery client - table ([type]): bigquery table to get the head of - max_rows (int, optional): Defaults to 10. maximum number of rows to retrieve + client (google.cloud.bigquery.client.Client): bigquery client + table (google.cloud.bigquery.table.Table): bigquery table to get the + head of + max_rows (int, optional): Defaults to 10. maximum number of rows to + retrieve Returns: pandas.DataFrame: dataframe containing the head of rows diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index c7b2cd87346..a692e1bedce 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -54,6 +54,6 @@ def is_gs_path(path): path (str): path to file Returns: - boolean: is a valid gcs path + bool: is a valid gcs path ''' - return re.match(_GCS_PATH_REGEX, path) != None \ No newline at end of file + return re.match(_GCS_PATH_REGEX, path) != None \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/print_utils.py b/sdk/python/feast/sdk/utils/print_utils.py index 7c75e8e5451..99702cb5b76 100644 --- a/sdk/python/feast/sdk/utils/print_utils.py +++ b/sdk/python/feast/sdk/utils/print_utils.py @@ -8,7 +8,7 @@ def spec_to_yaml(spec): '''Converts spec to yaml string Args: - spec (Message): feast spec + spec (google.protobuf.Message): feast spec object Returns: str: yaml string representation of spec diff --git a/sdk/python/feast/sdk/utils/types.py b/sdk/python/feast/sdk/utils/types.py index bac172fa917..eddfef11e2a 100644 --- a/sdk/python/feast/sdk/utils/types.py +++ b/sdk/python/feast/sdk/utils/types.py @@ -20,9 +20,9 @@ def dtype_to_value_type(dtype): '''Returns the equivalent feast valueType for the given dtype Args: - dtype (dtype): pandas dtype + dtype (pandas.dtype): pandas dtype Returns: - ValueType.Enum: equivalent feast valuetype + feast.types.ValueType_pb2.ValueType: equivalent feast valuetype ''' return _DTYPE_TO_VALUE_TYPE_MAPPING[dtype.__str__()] \ No newline at end of file diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 12b437873ab..7faea177437 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -4,10 +4,14 @@ import grpc import feast.core.CoreService_pb2_grpc as core +import feast.core.JobService_pb2_grpc as jobs from feast.core.CoreService_pb2 import CoreServiceTypes +from feast.core.JobService_pb2 import JobServiceTypes from feast.types.Granularity_pb2 import Granularity +from feast.specs.ImportSpec_pb2 import ImportSpec from feast.sdk.client import Client +from feast.sdk.importer import Importer from feast.sdk.resources.feature import Feature from feast.sdk.resources.feature_group import FeatureGroup from feast.sdk.resources.entity import Entity @@ -92,4 +96,23 @@ def test_apply_multiple(self, client, mocker): client.core_service_stub = grpc_stub ids = client.apply([my_storage, my_entity, my_feature_group]) - assert ids == ["TEST", "test", "test"] \ No newline at end of file + assert ids == ["TEST", "test", "test"] + + def test_run_job_no_staging(self, client, mocker): + grpc_stub = jobs.JobServiceStub(grpc.insecure_channel("")) + + mocker.patch.object(grpc_stub, 'SubmitJob', + return_value=JobServiceTypes.SubmitImportJobResponse( + jobId="myjob12312")) + client.job_service_stub = grpc_stub + importer = Importer( + {"import":ImportSpec()}, + None, + {"require_staging": False}) + + job_id = client.run(importer) + assert job_id == "myjob12312" + + # def test_run_job_require_staging(self, client, mocker): + # importer = Importer() + # mocker.patch.object(importer, \ No newline at end of file diff --git a/sdk/python/tests/sdk/test_importer.py b/sdk/python/tests/sdk/test_importer.py index a7162a3cd7b..cae43f7fccc 100644 --- a/sdk/python/tests/sdk/test_importer.py +++ b/sdk/python/tests/sdk/test_importer.py @@ -15,7 +15,8 @@ def test_from_csv(self): owner = "owner@feast.com" staging_location = "gs://test-bucket" id_column = "driver_id" - feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + feature_columns = ["avg_distance_completed", + "avg_customer_distance_completed"] timestamp_column = "ts" importer = Importer.from_csv(path = csv_path, @@ -27,42 +28,15 @@ def test_from_csv(self): feature_columns=feature_columns, timestamp_column=timestamp_column) - self._validate_csv_importer(importer, csv_path, entity_name, feature_granularity, owner, staging_location, id_column, feature_columns, timestamp_column) - - def _validate_csv_importer(self, importer, csv_path, entity_name, feature_granularity, owner, staging_location = None, id_column = None, feature_columns = None, timestamp_column = None, timestamp_value = None): - df = pd.read_csv(csv_path) - assert not importer.require_staging == is_gs_path(csv_path) - if importer.require_staging: - assert importer.remote_path == "{}/{}".format(staging_location, ntpath.basename(csv_path)) - - # check features created - for feature in importer.features: - assert feature.name in df.columns - assert feature.id == "{}.{}.{}".format(entity_name, Granularity.Enum.Name(feature_granularity).lower(), feature.name) - - import_spec = importer.spec - assert import_spec.type == "file" - path = importer.remote_path if importer.require_staging else csv_path - assert import_spec.options == {"format" : "csv", "path" : path} - assert import_spec.entities == [entity_name] - - schema = import_spec.schema - assert schema.entityIdColumn == id_column if id_column is not None else entity_name - if timestamp_column is not None: - assert schema.timestampColumn == timestamp_column - elif timestamp_value is not None: - assert schema.timestampValue == timestamp_value - - # check schema's field - for col, field in zip(df.columns.values, schema.fields): - assert col == field.name - if col in feature_columns: - assert field.featureId == "{}.{}.{}".format(entity_name, Granularity.Enum.Name(feature_granularity).lower(), col) - + self._validate_csv_importer(importer, csv_path, entity_name, + feature_granularity, owner, staging_location, id_column, + feature_columns, timestamp_column) def test_from_csv_id_column_not_specified(self): - with pytest.raises(ValueError, match="Column with name driver is not found") as e_info: - feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + with pytest.raises(ValueError, + match="Column with name driver is not found") as e_info: + feature_columns = ["avg_distance_completed", + "avg_customer_distance_completed"] csv_path = "tests/data/driver_features.csv" importer = Importer.from_csv(path = csv_path, entity = "driver", @@ -73,71 +47,51 @@ def test_from_csv_id_column_not_specified(self): timestamp_column="ts") def test_from_csv_timestamp_column_not_specified(self): - feature_columns = ["avg_distance_completed", "avg_customer_distance_completed", "avg_distance_cancelled"] + feature_columns = ["avg_distance_completed", + "avg_customer_distance_completed", "avg_distance_cancelled"] csv_path = "tests/data/driver_features.csv" + entity_name = "driver" + granularity = Granularity.DAY + owner = "owner@feast.com" + staging_location = "gs://test-bucket" + id_column = "driver_id" importer = Importer.from_csv(path = csv_path, - entity = "driver", - granularity = Granularity.DAY, - owner = "owner@feast.com", - staging_location="gs://test-bucket", - id_column = "driver_id", - feature_columns=feature_columns, - timestamp_column="ts") - - df = pd.read_csv(csv_path) - assert importer.require_staging == True - assert importer.remote_path == "gs://test-bucket/driver_features.csv" - for feature in importer.features: - assert feature.name in df.columns - assert feature.id == "driver.day." + feature.name - - import_spec = importer.spec - assert import_spec.type == "file" - assert import_spec.options == {"format" : "csv", "path" : "gs://test-bucket/driver_features.csv"} - assert import_spec.entities == ["driver"] + entity = entity_name, + granularity = granularity, + owner = owner, + staging_location=staging_location, + id_column = id_column, + feature_columns= feature_columns) - schema = import_spec.schema - assert schema.entityIdColumn == "driver_id" - assert schema.timestampValue is not None - for col, field in zip(df.columns.values, schema.fields): - assert col == field.name - if col in feature_columns: - assert field.featureId == "driver.day." + col + self._validate_csv_importer(importer, csv_path, entity_name, + granularity, owner, staging_location = staging_location, + id_column=id_column, feature_columns=feature_columns) def test_from_csv_feature_columns_not_specified(self): csv_path = "tests/data/driver_features.csv" + entity_name = "driver" + granularity = Granularity.DAY + owner = "owner@feast.com" + staging_location = "gs://test-bucket" + id_column = "driver_id" + timestamp_column = "ts" importer = Importer.from_csv(path = csv_path, - entity = "driver", - granularity = Granularity.DAY, - owner = "owner@feast.com", - staging_location="gs://test-bucket", - id_column = "driver_id", - timestamp_column="ts") + entity = entity_name, + granularity = granularity, + owner = owner, + staging_location=staging_location, + id_column = id_column, + timestamp_column=timestamp_column) - df = pd.read_csv(csv_path) - assert importer.require_staging == True - assert importer.remote_path == "gs://test-bucket/driver_features.csv" - for feature in importer.features: - assert feature.name in df.columns - assert feature.id == "driver.day." + feature.name - - import_spec = importer.spec - assert import_spec.type == "file" - assert import_spec.options == {"format" : "csv", "path" : "gs://test-bucket/driver_features.csv"} - assert import_spec.entities == ["driver"] - - schema = import_spec.schema - assert schema.entityIdColumn == "driver_id" - assert schema.timestampValue is not None - feature_columns = ["completed", "avg_distance_completed", "avg_customer_distance_completed", "avg_distance_cancelled"] - for col, field in zip(df.columns.values, schema.fields): - assert col == field.name - if col in feature_columns: - assert field.featureId == "driver.day." + col + self._validate_csv_importer(importer, csv_path, entity_name, + granularity, owner, staging_location = staging_location, + id_column=id_column, timestamp_column=timestamp_column) def test_from_csv_staging_location_not_specified(self): - with pytest.raises(ValueError, match="Specify staging_location for importing local file/dataframe") as e_info: - feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + with pytest.raises(ValueError, + match="Specify staging_location for importing local file/dataframe") as e_info: + feature_columns = ["avg_distance_completed", + "avg_customer_distance_completed"] csv_path = "tests/data/driver_features.csv" importer = Importer.from_csv(path = csv_path, entity = "driver", @@ -146,8 +100,10 @@ def test_from_csv_staging_location_not_specified(self): feature_columns=feature_columns, timestamp_column="ts") - with pytest.raises(ValueError, match="Staging location must be in GCS") as e_info: - feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] + with pytest.raises(ValueError, + match="Staging location must be in GCS") as e_info: + feature_columns = ["avg_distance_completed", + "avg_customer_distance_completed"] csv_path = "tests/data/driver_features.csv" importer = Importer.from_csv(path = csv_path, entity = "driver", @@ -171,8 +127,10 @@ def test_from_df(self): id_column = "driver_id", timestamp_column="ts") + assert importer.require_staging == True - assert "{}/tmp_{}".format(staging_location, entity) in importer.remote_path + assert ("{}/tmp_{}".format(staging_location, entity) + in importer.remote_path) for feature in importer.features: assert feature.name in df.columns assert feature.id == "driver.day." + feature.name @@ -185,13 +143,55 @@ def test_from_df(self): schema = import_spec.schema assert schema.entityIdColumn == "driver_id" assert schema.timestampValue is not None - feature_columns = ["completed", "avg_distance_completed", "avg_customer_distance_completed", "avg_distance_cancelled"] + feature_columns = ["completed", "avg_distance_completed", + "avg_customer_distance_completed", + "avg_distance_cancelled"] for col, field in zip(df.columns.values, schema.fields): assert col == field.name if col in feature_columns: assert field.featureId == "driver.day." + col + def _validate_csv_importer(self, + importer, csv_path, entity_name, feature_granularity, owner, + staging_location = None, id_column = None, feature_columns = None, + timestamp_column = None, timestamp_value = None): + df = pd.read_csv(csv_path) + assert not importer.require_staging == is_gs_path(csv_path) + if importer.require_staging: + assert importer.remote_path == "{}/{}".format(staging_location, + ntpath.basename(csv_path)) + + # check features created + for feature in importer.features: + assert feature.name in df.columns + assert feature.id == "{}.{}.{}".format(entity_name, + Granularity.Enum.Name(feature_granularity).lower(), + feature.name) + + import_spec = importer.spec + assert import_spec.type == "file" + path = importer.remote_path if importer.require_staging else csv_path + assert import_spec.options == {"format" : "csv", "path" : path} + assert import_spec.entities == [entity_name] + + schema = import_spec.schema + assert schema.entityIdColumn == id_column if id_column is not None else entity_name + if timestamp_column is not None: + assert schema.timestampColumn == timestamp_column + elif timestamp_value is not None: + assert schema.timestampValue == timestamp_value + + if feature_columns is None: + feature_columns = list(df.columns.values) + feature_columns.remove(id_column) + feature_columns.remove(timestamp_column) + # check schema's field + for col, field in zip(df.columns.values, schema.fields): + assert col == field.name + if col in feature_columns: + assert field.featureId == "{}.{}.{}".format(entity_name, + Granularity.Enum.Name(feature_granularity).lower(), col) class TestHelpers: def test_create_feature(self): From 47e4110323d791227d853f0ae98b6f93d555568e Mon Sep 17 00:00:00 2001 From: zhilingc Date: Fri, 21 Dec 2018 14:17:56 +0530 Subject: [PATCH 11/50] Add push to pypi resources --- sdk/python/.gitignore | 2 +- .../hello_feast/FeastPythonSDKProposal2.ipynb | 29 +++++++++--- sdk/python/feast/version.py | 1 + sdk/python/setup.py | 45 +++++++++++++++++++ sdk/python/test-requirements.txt | 13 ++++++ 5 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 sdk/python/feast/version.py create mode 100644 sdk/python/setup.py create mode 100644 sdk/python/test-requirements.txt diff --git a/sdk/python/.gitignore b/sdk/python/.gitignore index 8e86897c13c..27e63070e2c 100644 --- a/sdk/python/.gitignore +++ b/sdk/python/.gitignore @@ -114,5 +114,5 @@ dmypy.json # Pyre type checker .pyre/ -.vscode +.vscode/* test.py \ No newline at end of file diff --git a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb index eb610959b1d..ed2fbca9daf 100644 --- a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb +++ b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb @@ -23,7 +23,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pandas as pd\n", @@ -51,7 +53,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "fs = Client('localhost:8433', verbose=True)" @@ -429,7 +433,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "cust_importer = Importer.from_csv('customer_features.csv', \n", @@ -524,7 +530,9 @@ { "cell_type": "code", "execution_count": 17, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "my_pandas_df = pd.read_csv(\"driver_features.csv\")\n", @@ -747,7 +755,9 @@ { "cell_type": "code", "execution_count": 21, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", @@ -781,7 +791,10 @@ }, "outputs": [], "source": [ - "feature_set = fs.create_feature_set(entity='driver', granularity='minute', features=['latitude', 'longitude', 'event_time'])" + "feature_set = fs.create_feature_set(\n", + " entity='driver', \n", + " granularity='minute', \n", + " features=['latitude', 'longitude', 'event_time'])" ] }, { @@ -801,7 +814,9 @@ }, "outputs": [], "source": [ - "dataset_info = feature_set.create_training_dataset(start_date='2018-01-01', end_date='2018-02-01')" + "dataset_info = feature_set.create_training_dataset(\n", + " start_date='2018-01-01', \n", + " end_date='2018-02-01')" ] }, { diff --git a/sdk/python/feast/version.py b/sdk/python/feast/version.py new file mode 100644 index 00000000000..b7d829d052c --- /dev/null +++ b/sdk/python/feast/version.py @@ -0,0 +1 @@ +VERSION = '0.3.0' \ No newline at end of file diff --git a/sdk/python/setup.py b/sdk/python/setup.py new file mode 100644 index 00000000000..38ca55c1e9f --- /dev/null +++ b/sdk/python/setup.py @@ -0,0 +1,45 @@ +import imp +import os +from setuptools import find_packages, setup, Command + +NAME = 'Feast' +DESCRIPTION = 'Python sdk for Feast' +URL = 'https://github.com/gojek/feast' +EMAIL = 'zhiling.c@go-jek.com' +AUTHOR = 'Feast' +REQUIRES_PYTHON = '>=3.6.0' +VERSION = imp.load_source( + 'feast.version', os.path.join('feast', 'version.py')).VERSION +REQUIRED = [ + 'google-api-core>=1.7.0', + 'google-auth>=1.6.0', + 'google-cloud-bigquery>=1.8.0', + 'google-cloud-storage>=1.13.0', + 'googleapis-common-protos>=1.5.5', + 'grpcio>=1.16.1', + 'pandas', + 'protobuf>=3.0.0', + 'PyYAML', +] + +setup( + name=NAME, + version=VERSION, + description=DESCRIPTION, + author=AUTHOR, + author_email=EMAIL, + python_requires=REQUIRES_PYTHON, + url=URL, + packages=find_packages(exclude=('tests',)), + install_requires=REQUIRED, + include_package_data=True, + license='Apache', + classifiers=[ + # Trove classifiers + # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers + 'License :: OSI Approved :: Apache Software License', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + ] +) \ No newline at end of file diff --git a/sdk/python/test-requirements.txt b/sdk/python/test-requirements.txt new file mode 100644 index 00000000000..b89319fb9fc --- /dev/null +++ b/sdk/python/test-requirements.txt @@ -0,0 +1,13 @@ +google-api-core>=1.7.0 +google-auth>=1.6.0 +google-cloud-bigquery>=1.8.0 +google-cloud-storage>=1.13.0 +google-resumable-media==0.3.1 +googleapis-common-protos>=1.5.5 +grpcio>=1.16.1 +numpy +pandas +protobuf>=3.0.0 +pytest +pytest-mock +PyYAML \ No newline at end of file From 4e66d79117e2f95d933c70c27360b649810fd4a9 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Fri, 21 Dec 2018 18:11:37 +0530 Subject: [PATCH 12/50] Add ValueType and Granularity so that we don't expose internal proto to client --- sdk/python/feast/sdk/feature_set.py | 13 +++++++++++ sdk/python/feast/sdk/resources/feature.py | 22 +++++++++---------- sdk/python/feast/sdk/utils/types.py | 22 +++++++++++++++++-- .../tests/sdk/resources/test_feature.py | 9 ++++---- sdk/python/tests/sdk/test_client.py | 2 +- sdk/python/tests/sdk/test_importer.py | 8 +++---- sdk/python/tests/sdk/utils/test_types.py | 3 +-- 7 files changed, 54 insertions(+), 25 deletions(-) create mode 100644 sdk/python/feast/sdk/feature_set.py diff --git a/sdk/python/feast/sdk/feature_set.py b/sdk/python/feast/sdk/feature_set.py new file mode 100644 index 00000000000..0ad1694f525 --- /dev/null +++ b/sdk/python/feast/sdk/feature_set.py @@ -0,0 +1,13 @@ + + +class FeatureSet: + def __init__(self): + pass + + def create_training_dataset(self, start_date, end_date): + # need access to bigquery and the feature's table + # and then create another table based on start_date and end_date + pass + + def get_serving_data(self, entity_keys, type=None): + pass \ No newline at end of file diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index 17a082d3c83..38b71f6cc8f 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -2,10 +2,11 @@ import json import feast.specs.FeatureSpec_pb2 as feature_pb -from feast.types.Granularity_pb2 import Granularity -from feast.types.Value_pb2 import ValueType -from feast.sdk.utils.print_utils import spec_to_yaml +from feast.sdk.utils.types import ValueType, Granularity +from feast.sdk.utils.print_utils import spec_to_yaml +from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 +from feast.types.Value_pb2 import ValueType as ValueType_pb2 from google.protobuf.json_format import MessageToJson, Parse ''' @@ -36,9 +37,8 @@ def __init__(self, name='', entity='', granularity=Granularity.NONE, tags (list[str], optional): tags assigned to the feature options (dic, optional): additional options for the feature ''' - id = '.'.join([entity, - Granularity.Enum.Name(granularity), name]).lower() + Granularity_pb2.Enum.Name(granularity.value), name]).lower() warehouse_store_spec = None serving_store_spec = None @@ -48,9 +48,9 @@ def __init__(self, name='', entity='', granularity=Granularity.NONE, warehouse_store_spec = warehouse_store.spec data_stores = feature_pb.DataStores(serving = serving_store_spec, warehouse = warehouse_store_spec) - self.__spec = feature_pb.FeatureSpec(id=id, granularity=granularity, + self.__spec = feature_pb.FeatureSpec(id=id, granularity=granularity.value, name=name, entity=entity, owner=owner, dataStores=data_stores, - description=description, uri=uri, valueType=value_type, + description=description, uri=uri, valueType=value_type.value, group=group, tags=tags, options=options) @property @@ -74,13 +74,13 @@ def name(self, value): @property def granularity(self): - return Granularity.Enum.Name(self.__spec.granularity) + return Granularity(self.__spec.granularity) @granularity.setter def granularity(self, value): - self.__spec.granularity = value + self.__spec.granularity = value.value id_split = self.id.split('.') - id_split[1] = self.granularity.lower() + id_split[1] = Granularity_pb2.Enum.Name(self.__spec.granularity).lower() self.__spec.id = '.'.join(id_split) @property @@ -136,7 +136,7 @@ def uri(self, value): @property def value_type(self): - return ValueType.Enum.Name(self.__spec.valueType) + return ValueType(self.__spec.valueType) @value_type.setter def value_type(self, value): diff --git a/sdk/python/feast/sdk/utils/types.py b/sdk/python/feast/sdk/utils/types.py index eddfef11e2a..dade4487269 100644 --- a/sdk/python/feast/sdk/utils/types.py +++ b/sdk/python/feast/sdk/utils/types.py @@ -1,5 +1,23 @@ import pandas as pd -from feast.types.Value_pb2 import ValueType +from enum import Enum + +class Granularity(Enum): + NONE = 0 + DAY = 1 + HOUR = 2 + MINUTE = 3 + SECOND = 4 + +class ValueType(Enum): + UNKNOWN = 0 + BYTES = 1 + STRING = 2 + INT32 = 3 + INT64 = 4 + DOUBLE = 5 + FLOAT = 6 + BOOL = 7 + TIMESTAMP = 8 # mapping of pandas dtypes to feast value type strings _DTYPE_TO_VALUE_TYPE_MAPPING = { @@ -23,6 +41,6 @@ def dtype_to_value_type(dtype): dtype (pandas.dtype): pandas dtype Returns: - feast.types.ValueType_pb2.ValueType: equivalent feast valuetype + feast.types.ValueType2.ValueType: equivalent feast valuetype ''' return _DTYPE_TO_VALUE_TYPE_MAPPING[dtype.__str__()] \ No newline at end of file diff --git a/sdk/python/tests/sdk/resources/test_feature.py b/sdk/python/tests/sdk/resources/test_feature.py index 4b63f7a51ca..a4199e1c437 100644 --- a/sdk/python/tests/sdk/resources/test_feature.py +++ b/sdk/python/tests/sdk/resources/test_feature.py @@ -1,8 +1,7 @@ import pytest from feast.sdk.resources.feature import Feature from feast.sdk.resources.storage import Datastore -from feast.types.Value_pb2 import ValueType -from feast.types.Granularity_pb2 import Granularity +from feast.sdk.utils.types import ValueType, Granularity class TestFeature(object): def dummy_feature(self): @@ -23,7 +22,7 @@ def test_set_name(self): def test_set_granularity(self): my_feature = self.dummy_feature() my_feature.granularity = Granularity.DAY - assert my_feature.granularity == "DAY" + assert my_feature.granularity == Granularity.DAY assert my_feature.id == "my_entity.day.my_feature" def test_set_entity(self): @@ -40,8 +39,8 @@ def test_read_from_yaml(self): assert feature.entity == "myentity" assert feature.owner == "bob@example.com" assert feature.description == "test entity." - assert feature.value_type == "BOOL" - assert feature.granularity == "NONE" + assert feature.value_type == ValueType.BOOL + assert feature.granularity == Granularity.NONE assert feature.uri == "https://github.com/bob/example" assert feature.serving_store.id == "REDIS1" assert feature.warehouse_store.id == "BIGQUERY1" diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 7faea177437..d7f5734b977 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -7,7 +7,7 @@ import feast.core.JobService_pb2_grpc as jobs from feast.core.CoreService_pb2 import CoreServiceTypes from feast.core.JobService_pb2 import JobServiceTypes -from feast.types.Granularity_pb2 import Granularity +from feast.sdk.utils.types import Granularity from feast.specs.ImportSpec_pb2 import ImportSpec from feast.sdk.client import Client diff --git a/sdk/python/tests/sdk/test_importer.py b/sdk/python/tests/sdk/test_importer.py index cae43f7fccc..996e0f7c21e 100644 --- a/sdk/python/tests/sdk/test_importer.py +++ b/sdk/python/tests/sdk/test_importer.py @@ -2,10 +2,10 @@ import pytest import ntpath from feast.sdk.resources.feature import Feature -from feast.types.Granularity_pb2 import Granularity -from feast.types.Value_pb2 import ValueType +from feast.sdk.utils.types import Granularity, ValueType from feast.sdk.importer import _create_feature, Importer from feast.sdk.utils.gs_utils import gs_to_df, is_gs_path, df_to_gs +from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 class TestImporter(object): def test_from_csv(self): @@ -165,7 +165,7 @@ def _validate_csv_importer(self, for feature in importer.features: assert feature.name in df.columns assert feature.id == "{}.{}.{}".format(entity_name, - Granularity.Enum.Name(feature_granularity).lower(), + Granularity_pb2.Enum.Name(feature_granularity.value).lower(), feature.name) import_spec = importer.spec @@ -191,7 +191,7 @@ def _validate_csv_importer(self, assert col == field.name if col in feature_columns: assert field.featureId == "{}.{}.{}".format(entity_name, - Granularity.Enum.Name(feature_granularity).lower(), col) + Granularity_pb2.Enum.Name(feature_granularity.value).lower(), col) class TestHelpers: def test_create_feature(self): diff --git a/sdk/python/tests/sdk/utils/test_types.py b/sdk/python/tests/sdk/utils/test_types.py index 44bdba93f12..c306da19448 100644 --- a/sdk/python/tests/sdk/utils/test_types.py +++ b/sdk/python/tests/sdk/utils/test_types.py @@ -2,8 +2,7 @@ import pandas as pd import numpy as np -from feast.types.Value_pb2 import ValueType -from feast.sdk.utils.types import dtype_to_value_type +from feast.sdk.utils.types import dtype_to_value_type, ValueType def test_convert_dtype_to_value_type(): dft = pd.DataFrame(dict(A = np.random.rand(3), From 7da288e26c880a6dc0e068a354b3a5456cc332bb Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 24 Dec 2018 22:01:09 +0800 Subject: [PATCH 13/50] Scrub sensitve data --- sdk/python/.gitignore | 3 +- .../hello_feast/FeastPythonSDKProposal2.ipynb | 20 +- sdk/python/examples/playground/Untitled.ipynb | 561 ------------------ .../examples/playground/driver_features.csv | 11 - 4 files changed, 12 insertions(+), 583 deletions(-) delete mode 100644 sdk/python/examples/playground/Untitled.ipynb delete mode 100644 sdk/python/examples/playground/driver_features.csv diff --git a/sdk/python/.gitignore b/sdk/python/.gitignore index 27e63070e2c..503c2784600 100644 --- a/sdk/python/.gitignore +++ b/sdk/python/.gitignore @@ -115,4 +115,5 @@ dmypy.json .pyre/ .vscode/* -test.py \ No newline at end of file +test.py +playground \ No newline at end of file diff --git a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb index ed2fbca9daf..769d58169d4 100644 --- a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb +++ b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb @@ -226,7 +226,7 @@ "text": [ "id: customer.day.age\n", "name: age\n", - "owner: willem.p@go-jek.com\n", + "owner: user@website.com\n", "description: Customer's age\n", "granularity: DAY\n", "valueType: INT64\n", @@ -244,7 +244,7 @@ "customer_age = Feature(name='age', \n", " entity=\"customer\",\n", " granularity=Granularity.DAY, \n", - " owner='willem.p@go-jek.com',\n", + " owner='user@website.com',\n", " description=\"Customer's age\",\n", " value_type=ValueType.INT64, \n", " serving_store=Datastore(id=\"REDIS1\"),\n", @@ -263,7 +263,7 @@ "customer_balance = Feature(name='balance', \n", " entity=\"customer\",\n", " granularity=Granularity.DAY, \n", - " owner='willem.p@go-jek.com', \n", + " owner='user@website.com', \n", " value_type=ValueType.FLOAT, \n", " description=\"Customer's account balance\",\n", " serving_store=Datastore(id=\"REDIS1\"),\n", @@ -331,7 +331,7 @@ "---\n", "id: customer.day.age\n", "name: age\n", - "owner: willem.p@go-jek.com\n", + "owner: user@website.com\n", "description: Customer's age\n", "granularity: DAY\n", "valueType: INT64\n", @@ -346,7 +346,7 @@ "---\n", "id: customer.day.balance\n", "name: balance\n", - "owner: willem.p@go-jek.com\n", + "owner: user@website.com\n", "description: Customer's account balance\n", "granularity: DAY\n", "valueType: FLOAT\n", @@ -395,7 +395,7 @@ "---\n", "id: customer.day.age\n", "name: age\n", - "owner: willem.p@go-jek.com\n", + "owner: user@website.com\n", "description: Customer's age\n", "granularity: DAY\n", "valueType: INT64\n", @@ -441,7 +441,7 @@ "cust_importer = Importer.from_csv('customer_features.csv', \n", " granularity=Granularity.DAY, \n", " entity='customer', \n", - " owner='willem.p@go-jek.com',\n", + " owner='user@website.com',\n", " staging_location=\"gs://zl-test-bucket/feast\",\n", " id_column=\"customer_id\", \n", " timestamp_value=datetime.datetime.now())" @@ -474,7 +474,7 @@ "driver_importer_from_bq = Importer.from_bq(\"the-big-data-staging-007.feast_test.surge_gocar\", \n", " entity=\"s2id\", \n", " granularity=Granularity.MINUTE, \n", - " owner='willem.p@go-jek.com',\n", + " owner='user@website.com',\n", " timestamp_column=\"start_time\")" ] }, @@ -505,7 +505,7 @@ "\n", "id: s2id.minute.surge_factor\n", "name: surge_factor\n", - "owner: willem.p@go-jek.com\n", + "owner: user@website.com\n", "granularity: MINUTE\n", "valueType: DOUBLE\n", "entity: s2id\n", @@ -539,7 +539,7 @@ "driver_importer_from_df = Importer.from_df(my_pandas_df, \n", " entity='driver', \n", " granularity=Granularity.DAY, \n", - " owner='willem.p@go-jek.com', \n", + " owner='user@website.com', \n", " staging_location=\"gs://staging-bucket/feast\",\n", " id_column=\"driver_id\", \n", " timestamp_column=\"ts\")" diff --git a/sdk/python/examples/playground/Untitled.ipynb b/sdk/python/examples/playground/Untitled.ipynb deleted file mode 100644 index 011b89d6829..00000000000 --- a/sdk/python/examples/playground/Untitled.ipynb +++ /dev/null @@ -1,561 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(\"/Users/zhilingc/Documents/go-projects/src/github.com/gojektech/feast/sdk/python\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from feast.sdk.utils.gs_utils import *\n", - "import numpy as np\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['zl-test-bucket', 'cicilan.csv']" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "path = \"gs://zl-test-bucket/cicilan.csv\"\n", - "path = path.replace('gs://', '', 1)\n", - "path.split('/', 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'gs_to_pd' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgs_to_pd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"gs://zl-test-bucket/cicilan.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 'gs_to_pd' is not defined" - ] - } - ], - "source": [ - "df = gs_to_pd(\"gs://zl-test-bucket/cicilan.csv\")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "int64\n" - ] - } - ], - "source": [ - "df.dtypes[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
driver_idcicilan_idstart_datestatuspaused_overdue_paymentspaused_pending_paymentstotal_paid_payments_migratedcustomised_installment_countidinstallment_valueinstallment_countdriveridmatch
054021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
154021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
254021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
354021223312017-02-01appliedNaNNaNNaNNaN1850020.05402122331
454018277062015-09-18appliedNaNNaNNaNNaN6260001050.05401827701
\n", - "
" - ], - "text/plain": [ - " driver_id cicilan_id start_date status paused_overdue_payments \\\n", - "0 540212233 1 2017-02-01 applied NaN \n", - "1 540212233 1 2017-02-01 applied NaN \n", - "2 540212233 1 2017-02-01 applied NaN \n", - "3 540212233 1 2017-02-01 applied NaN \n", - "4 540182770 6 2015-09-18 applied NaN \n", - "\n", - " paused_pending_payments total_paid_payments_migrated \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "4 NaN NaN \n", - "\n", - " customised_installment_count id installment_value installment_count \\\n", - "0 NaN 1 8500 20.0 \n", - "1 NaN 1 8500 20.0 \n", - "2 NaN 1 8500 20.0 \n", - "3 NaN 1 8500 20.0 \n", - "4 NaN 6 26000 1050.0 \n", - "\n", - " driverid match \n", - "0 540212233 1 \n", - "1 540212233 1 \n", - "2 540212233 1 \n", - "3 540212233 1 \n", - "4 540182770 1 " - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mcolumn_name\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'driver_id'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mcolumn_name\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "column_name = list(df.columns.values)\n", - "column_name\n", - "\n", - "column_name.remove('driver_id')\n", - "column_name.remove(None)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'dtype' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'int64'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 'dtype' is not defined" - ] - } - ], - "source": [ - "dtype('int64')" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "code_folding": [], - "collapsed": true - }, - "outputs": [], - "source": [ - "dft = pd.DataFrame(dict(A = np.random.rand(3),\n", - " B = 1,\n", - " C = 'foo',\n", - " D = pd.Timestamp('20180310'),\n", - " E = pd.Series([1.0]*3).astype('float32'),\n", - " F = False,\n", - " G = pd.Series([1]*3,dtype='int8')))" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'object'" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dft['C'].dtype.__str__()" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(\"/Users/zhilingc/Documents/go-projects/src/github.com/gojektech/feast/sdk/python\")\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from feast.sdk.importer import Importer\n", - "from feast.types.Granularity_pb2 import Granularity\n", - "# from feast.types.Value_pb2 import ValueType" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "importer = Importer.from_csv(\"driver_features.csv\", \"entity\", Granularity.DAY, \"me\", staging_location=\"gs://zl-test-bucket\",\n", - " id_column=\"driver_id\", timestamp_column=\"ts\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "id: entity.day.completed\n", - "name: completed\n", - "owner: me\n", - "granularity: DAY\n", - "valueType: INT64\n", - "entity: entity\n", - "dataStores: {}\n", - "\n", - "id: entity.day.avg_distance_completed\n", - "name: avg_distance_completed\n", - "owner: me\n", - "granularity: DAY\n", - "valueType: DOUBLE\n", - "entity: entity\n", - "dataStores: {}\n", - "\n", - "id: entity.day.avg_customer_distance_completed\n", - "name: avg_customer_distance_completed\n", - "owner: me\n", - "granularity: DAY\n", - "valueType: DOUBLE\n", - "entity: entity\n", - "dataStores: {}\n", - "\n", - "id: entity.day.avg_distance_cancelled\n", - "name: avg_distance_cancelled\n", - "owner: me\n", - "granularity: DAY\n", - "valueType: DOUBLE\n", - "entity: entity\n", - "dataStores: {}\n", - "\n" - ] - } - ], - "source": [ - "for ft in importer.features:\n", - " print(ft)\n", - "\n", - "importer.update_feature('feature_id', )" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
driver_idtscompletedavg_distance_completedavg_customer_distance_completedavg_distance_cancelled
05404038922018-09-25T00:00:00.000121.102000172.000000-1.0000
15404039172018-09-25T00:00:00.000238.160000783.00000015.6190
25404039182018-09-25T00:00:00.000142.833286138.14285718.5935
35404039202018-09-25T00:00:00.00074.5930001575.000000-1.0000
45404039262018-09-25T00:00:00.0001511.765600314.0000006.7330
\n", - "
" - ], - "text/plain": [ - " driver_id ts completed avg_distance_completed \\\n", - "0 540403892 2018-09-25T00:00:00.000 12 1.102000 \n", - "1 540403917 2018-09-25T00:00:00.000 23 8.160000 \n", - "2 540403918 2018-09-25T00:00:00.000 14 2.833286 \n", - "3 540403920 2018-09-25T00:00:00.000 7 4.593000 \n", - "4 540403926 2018-09-25T00:00:00.000 15 11.765600 \n", - "\n", - " avg_customer_distance_completed avg_distance_cancelled \n", - "0 172.000000 -1.0000 \n", - "1 783.000000 15.6190 \n", - "2 138.142857 18.5935 \n", - "3 1575.000000 -1.0000 \n", - "4 314.000000 6.7330 " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import pandas as pd\n", - "pd.read_csv(\"driver_features.csv\").head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/sdk/python/examples/playground/driver_features.csv b/sdk/python/examples/playground/driver_features.csv deleted file mode 100644 index 88d1bcd0feb..00000000000 --- a/sdk/python/examples/playground/driver_features.csv +++ /dev/null @@ -1,11 +0,0 @@ -driver_id,ts,completed,avg_distance_completed,avg_customer_distance_completed,avg_distance_cancelled -540403892,2018-09-25T00:00:00.000,12,1.102,172,-1 -540403917,2018-09-25T00:00:00.000,23,8.16,783,15.619 -540403918,2018-09-25T00:00:00.000,14,2.83328571428571,138.142857142857,18.5935 -540403920,2018-09-25T00:00:00.000,7,4.593,1575,-1 -540403926,2018-09-25T00:00:00.000,15,11.7656,314,6.733 -540403932,2018-09-25T00:00:00.000,7,14.2352142857143,276.785714285714,3.1645 -540403936,2018-09-25T00:00:00.000,10,5.0266,421.1,-1 -540403955,2018-09-25T00:00:00.000,6,23.554,4639,-1 -540403956,2018-09-25T00:00:00.000,14,7.42042857142857,149.888888888889,1.371 -540403961,2018-09-25T00:00:00.000,4,-1,-1,17.088 \ No newline at end of file From 3b3bcc8e18110f225a1a541bf8873d087cc7f7fa Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 26 Dec 2018 11:16:18 +0800 Subject: [PATCH 14/50] Add feature_set stub --- sdk/python/feast/sdk/feature_set.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sdk/python/feast/sdk/feature_set.py b/sdk/python/feast/sdk/feature_set.py index 0ad1694f525..9d8f9e8e66d 100644 --- a/sdk/python/feast/sdk/feature_set.py +++ b/sdk/python/feast/sdk/feature_set.py @@ -10,4 +10,14 @@ def create_training_dataset(self, start_date, end_date): pass def get_serving_data(self, entity_keys, type=None): - pass \ No newline at end of file + pass + +class DatasetInfo: + def __init__(self): + pass + + def download(self, dest, type): + pass + + def download_to_df(self): + pass From 0df9c4ed52581bdc3596a1984e433c3fe0946f03 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 26 Dec 2018 11:50:57 +0800 Subject: [PATCH 15/50] Clean add env, clean up docstrings --- sdk/python/.vscode/settings.json | 11 ---- sdk/python/feast/sdk/client.py | 94 +++++++++++++++++--------------- sdk/python/feast/sdk/env.py | 3 + 3 files changed, 54 insertions(+), 54 deletions(-) delete mode 100644 sdk/python/.vscode/settings.json create mode 100644 sdk/python/feast/sdk/env.py diff --git a/sdk/python/.vscode/settings.json b/sdk/python/.vscode/settings.json deleted file mode 100644 index 7de5a044fe3..00000000000 --- a/sdk/python/.vscode/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "python.pythonPath": "/usr/local/anaconda3/envs/feast-dev/bin/python", - "autoDocstring.docstringFormat": "google", - "python.unitTest.pyTestArgs": [ - "tests" - ], - "python.unitTest.unittestEnabled": false, - "python.unitTest.nosetestsEnabled": false, - "python.unitTest.pyTestEnabled": true, - "editor.rulers": [79,120] -} \ No newline at end of file diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 2980950dd39..a1c3a45a97e 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -3,41 +3,48 @@ """ import grpc +import os import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs -from feast.core.JobService_pb2 import JobServiceTypes +from feast.core.JobService_pb2 import JobServiceTypes +from feast.sdk.env import FEAST_CORE_URL_ENV_KEY from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup from feast.sdk.utils.print_utils import spec_to_yaml + class Client: - def __init__(self, serverURL, verbose=False): - '''Create an instance of Feast client which is connected to feast - endpoint specified in the parameter - + def __init__(self, server_url=None, verbose=False): + """Create an instance of Feast client which is connected to feast + endpoint specified in the parameter. If no url is provided, the + client will default to the url specified in the environment variable + FEAST_CORE_URL. + Args: - serverURI (str): feast's endpoint URL + server_url (str, optional): feast's endpoint URL (e.g.: "my.feast.com:8433") - ''' + """ - self.__channel = grpc.insecure_channel(serverURL) + if server_url is None: + server_url = os.environ[FEAST_CORE_URL_ENV_KEY] + self.__channel = grpc.insecure_channel(server_url) self.core_service_stub = core.CoreServiceStub(self.__channel) self.job_service_stub = jobs.JobServiceStub(self.__channel) self.verbose = verbose def apply(self, obj): - '''Create or update one or many feast's resource + """Create or update one or many feast's resource (feature, entity, importer, storage). - + Args: - object (object): one or many feast's resource - create_entity (bool, optional): (default: {None}) - create_features (bool, optional): [description] (default: {None}) - ''' + obj (object): one or many feast's resource + // create_entity (bool, optional): (default: {None}) + // create_features (bool, optional): [description] (default: {None}) + """ if isinstance(obj, list): ids = [] for resource in obj: @@ -45,13 +52,13 @@ def apply(self, obj): return ids else: return self._apply(obj) - - def run(self, importer, name_override=None, + + def run(self, importer, name_override=None, apply_entity=False, apply_features=False): request = JobServiceTypes.SubmitImportJobRequest( - importSpec = importer.spec + importSpec=importer.spec ) - if name_override is not None: + if name_override is not None: request.name = name_override if apply_entity: @@ -62,21 +69,21 @@ def run(self, importer, name_override=None, if importer.require_staging: print("Staging file to remote path {}" - .format(importer.remote_path)) + .format(importer.remote_path)) importer.stage() print("Submitting job with spec:\n {}" - .format(spec_to_yaml(importer.spec))) + .format(spec_to_yaml(importer.spec))) response = self.job_service_stub.SubmitJob(request) print("Submitted job with id: {}".format(response.jobId)) return response.jobId def _apply(self, obj): - '''Applies a single object to feast core. - + """Applies a single object to feast core. + Args: - obj (object): one of + obj (object): one of [Feature, Entity, FeatureGroup, Storage, Importer] - ''' + """ if isinstance(obj, Feature): return self._apply_feature(obj) elif isinstance(obj, Entity): @@ -90,48 +97,49 @@ def _apply(self, obj): types: [Feature, Entity, FeatureGroup, Storage, Importer]') def _apply_feature(self, feature): - '''Apply the feature to the core API - + """Apply the feature to the core API + Args: feature (feast.sdk.resources.feature.Feature): feature to apply - ''' + """ response = self.core_service_stub.ApplyFeature(feature.spec) if self.verbose: print("Successfully applied feature with id: {}\n---\n{}" - .format(response.featureId, feature)) + .format(response.featureId, feature)) return response.featureId def _apply_entity(self, entity): - '''Apply the entity to the core API - + """Apply the entity to the core API + Args: entity (feast.sdk.resources.entity.Entity): entity to apply - ''' + """ response = self.core_service_stub.ApplyEntity(entity.spec) - if self.verbose: print("Successfully applied entity with name: {}\n---\n{}" - .format(response.entityName, entity)) + if self.verbose: + print("Successfully applied entity with name: {}\n---\n{}" + .format(response.entityName, entity)) return response.entityName def _apply_feature_group(self, feature_group): - '''Apply the feature group to the core API + """Apply the feature group to the core API Args: - feature_group (feast.sdk.resources.feature_group.FeatureGroup): + feature_group (feast.sdk.resources.feature_group.FeatureGroup): feature group to apply - ''' + """ response = self.core_service_stub.ApplyFeatureGroup(feature_group.spec) - if self.verbose: print("Successfully applied feature group with id: "+ - "{}\n---\n{}".format(response.featureGroupId, feature_group)) + if self.verbose: print("Successfully applied feature group with id: " + + "{}\n---\n{}".format(response.featureGroupId, feature_group)) return response.featureGroupId def _apply_storage(self, storage): - '''Apply the storage to the core API - + """Apply the storage to the core API + Args: storage (feast.sdk.resources.storage.Storage): storage to apply - ''' + """ response = self.core_service_stub.ApplyStorage(storage.spec) - if self.verbose: print("Successfully applied storage with id: "+ - "{}\n{}".format(response.storageId, storage)) + if self.verbose: print("Successfully applied storage with id: " + + "{}\n{}".format(response.storageId, storage)) return response.storageId def close(self): diff --git a/sdk/python/feast/sdk/env.py b/sdk/python/feast/sdk/env.py new file mode 100644 index 00000000000..ad750d0f21e --- /dev/null +++ b/sdk/python/feast/sdk/env.py @@ -0,0 +1,3 @@ + +FEAST_SERVING_URL_ENV_KEY = "FEAST_SERVING_URL" +FEAST_CORE_URL_ENV_KEY = "FEAST_CORE_URL" From 231e8032006965208f349716697371ae5bdb37b8 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 26 Dec 2018 16:20:27 +0800 Subject: [PATCH 16/50] Add create_feature_set implementation --- sdk/python/feast/sdk/client.py | 60 +++++++++++++++++++++++------ sdk/python/tests/sdk/test_client.py | 33 +++++++++++++++- 2 files changed, 80 insertions(+), 13 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index a1c3a45a97e..67426a80fc6 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -8,12 +8,15 @@ import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs from feast.core.JobService_pb2 import JobServiceTypes +from feast.core.CoreService_pb2 import CoreServiceTypes +from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 from feast.sdk.env import FEAST_CORE_URL_ENV_KEY from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup +from feast.sdk.feature_set import FeatureSet from feast.sdk.utils.print_utils import spec_to_yaml @@ -77,6 +80,25 @@ def run(self, importer, name_override=None, print("Submitted job with id: {}".format(response.jobId)) return response.jobId + def create_feature_set(self, entity, granularity, features): + feature_ids = ('.'.join([entity, + Granularity_pb2.Enum.Name(granularity.value), + feature]).lower() for feature in features) + feature_spec_map = self._get_feature_spec_map(feature_ids) + wh_storage_ids = (feature_spec.dataStores.warehouse.id for feature_spec + in + feature_spec_map.values()) + wh_storage_map = self._get_storage_spec_map(wh_storage_ids) + feature_to_storage_spec_map = {} + for feature_id, feature_spec in feature_spec_map: + feature_to_storage_spec_map[feature_id] = wh_storage_map.get( + feature_spec.dataStores.warehouse.id) + + return FeatureSet(feature_to_storage_spec_map) + + def close(self): + self.channel.close() + def _apply(self, obj): """Applies a single object to feast core. @@ -103,8 +125,9 @@ def _apply_feature(self, feature): feature (feast.sdk.resources.feature.Feature): feature to apply """ response = self.core_service_stub.ApplyFeature(feature.spec) - if self.verbose: print("Successfully applied feature with id: {}\n---\n{}" - .format(response.featureId, feature)) + if self.verbose: print( + "Successfully applied feature with id: {}\n---\n{}" + .format(response.featureId, feature)) return response.featureId def _apply_entity(self, entity): @@ -114,9 +137,9 @@ def _apply_entity(self, entity): entity (feast.sdk.resources.entity.Entity): entity to apply """ response = self.core_service_stub.ApplyEntity(entity.spec) - if self.verbose: - print("Successfully applied entity with name: {}\n---\n{}" - .format(response.entityName, entity)) + if self.verbose: print( + "Successfully applied entity with name: {}\n---\n{}" + .format(response.entityName, entity)) return response.entityName def _apply_feature_group(self, feature_group): @@ -128,7 +151,8 @@ def _apply_feature_group(self, feature_group): """ response = self.core_service_stub.ApplyFeatureGroup(feature_group.spec) if self.verbose: print("Successfully applied feature group with id: " + - "{}\n---\n{}".format(response.featureGroupId, feature_group)) + "{}\n---\n{}".format(response.featureGroupId, + feature_group)) return response.featureGroupId def _apply_storage(self, storage): @@ -142,8 +166,22 @@ def _apply_storage(self, storage): "{}\n{}".format(response.storageId, storage)) return response.storageId - def close(self): - self.channel.close() - - # def create_feature_set(self, entity=None, granularity=None, features=None): - # return feature_set() + def _get_feature_spec_map(self, ids): + get_features_request = CoreServiceTypes.GetFeaturesRequest( + ids=ids + ) + get_features_resp = self.core_service_stub.GetFeatures( + get_features_request) + feature_specs = get_features_resp.features + return {feature_spec.id: feature_spec for feature_spec in + feature_specs} + + def _get_storage_spec_map(self, ids): + get_storage_request = CoreServiceTypes.GetStorageRequest( + ids=ids + ) + get_storage_resp = self.core_service_stub.GetStorage( + get_storage_request) + storage_specs = get_storage_resp.storageSpecs + return {storage_spec.id: storage_specs for storage_spec in + storage_specs} diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index d7f5734b977..4164a48d844 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -5,11 +5,12 @@ import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs +import feast.specs.FeatureSpec_pb2 as feature_pb +import feast.specs.StorageSpec_pb2 as storage_pb from feast.core.CoreService_pb2 import CoreServiceTypes from feast.core.JobService_pb2 import JobServiceTypes from feast.sdk.utils.types import Granularity from feast.specs.ImportSpec_pb2 import ImportSpec - from feast.sdk.client import Client from feast.sdk.importer import Importer from feast.sdk.resources.feature import Feature @@ -112,7 +113,35 @@ def test_run_job_no_staging(self, client, mocker): job_id = client.run(importer) assert job_id == "myjob12312" - + + def test_create_feature_set(self, client, mocker): + entity_name = "myentity" + granularity = Granularity.DAY + features = ["feature1", "feature2", "feature3"] + wh_store_id = "BIGQUERY1" + project = "test_project" + dataset = "test_dataset" + + core_stub = core.CoreServiceStub(grpc.insecure_channel("")) + feature_specs = self._create_feature_specs(entity_name, granularity, + features, wh_store_id) + storage_specs = self._create_bq_spec(wh_store_id, project, dataset) + mocker.patch.object(core_stub, 'GetFeatures', + return_value=feature_specs) + mocker.patch.object(core_stub, 'GetStorage', + return_value=storage_specs) + + client.create_feature_set(entity_name, + granularity, + features) + + def _create_feature_specs(self, entity, granularity, features, wh_id): + return + + def _create_bq_spec(self, id, project, dataset): + return storage_pb.StorageSpec(id=id, type="bigquery", options = { + "project":project, "dataset":dataset}) + # def test_run_job_require_staging(self, client, mocker): # importer = Importer() # mocker.patch.object(importer, \ No newline at end of file From 3a9ba39b47eb1e50d3af43277c472096977c61d7 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Thu, 27 Dec 2018 11:13:52 +0800 Subject: [PATCH 17/50] Move feature set to be a resource --- sdk/python/feast/sdk/client.py | 104 +++++++++++++++--- sdk/python/feast/sdk/feature_set.py | 23 ---- sdk/python/feast/sdk/resources/feature_set.py | 19 ++++ sdk/python/feast/sdk/utils/types.py | 19 +++- sdk/python/tests/sdk/test_client.py | 101 +++++++++-------- 5 files changed, 169 insertions(+), 97 deletions(-) delete mode 100644 sdk/python/feast/sdk/feature_set.py create mode 100644 sdk/python/feast/sdk/resources/feature_set.py diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 67426a80fc6..cc7a1d78347 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -5,19 +5,25 @@ import grpc import os +from google.protobuf.timestamp_pb2 import Timestamp + import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs from feast.core.JobService_pb2 import JobServiceTypes from feast.core.CoreService_pb2 import CoreServiceTypes from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 +from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange +import feast.serving.Serving_pb2_grpc as serving -from feast.sdk.env import FEAST_CORE_URL_ENV_KEY +from feast.sdk.env import FEAST_CORE_URL_ENV_KEY, FEAST_SERVING_URL_ENV_KEY from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup -from feast.sdk.feature_set import FeatureSet +from feast.sdk.resources.feature_set import FeatureSet from feast.sdk.utils.print_utils import spec_to_yaml +from feast.sdk.utils.types import ServingRequestType + class Client: @@ -80,25 +86,75 @@ def run(self, importer, name_override=None, print("Submitted job with id: {}".format(response.jobId)) return response.jobId - def create_feature_set(self, entity, granularity, features): - feature_ids = ('.'.join([entity, - Granularity_pb2.Enum.Name(granularity.value), - feature]).lower() for feature in features) - feature_spec_map = self._get_feature_spec_map(feature_ids) - wh_storage_ids = (feature_spec.dataStores.warehouse.id for feature_spec - in - feature_spec_map.values()) - wh_storage_map = self._get_storage_spec_map(wh_storage_ids) - feature_to_storage_spec_map = {} - for feature_id, feature_spec in feature_spec_map: - feature_to_storage_spec_map[feature_id] = wh_storage_map.get( - feature_spec.dataStores.warehouse.id) - - return FeatureSet(feature_to_storage_spec_map) + # def create_feature_set(self, entity, granularity, features): + # feature_ids = ('.'.join([entity, + # Granularity_pb2.Enum.Name(granularity.value), + # feature]).lower() for feature in features) + # feature_spec_map = self._get_feature_spec_map(feature_ids) + # wh_storage_ids = (feature_spec.dataStores.warehouse.id for feature_spec + # in + # feature_spec_map.values()) + # wh_storage_map = self._get_storage_spec_map(wh_storage_ids) + # feature_to_storage_spec_map = {} + # for feature_id, feature_spec in feature_spec_map: + # feature_to_storage_spec_map[feature_id] = wh_storage_map.get( + # feature_spec.dataStores.warehouse.id) + # + # return FeatureSet(feature_to_storage_spec_map) def close(self): self.channel.close() + def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequestType.LAST, + ts_range=None, limit=10, server_url=None): + """Get data from the feast serving layer. You can either retrieve the + the latest value, or a list of the latest values, up to a provided + limit. + + If server_url is not provided, the value stored in the environment variable + FEAST_SERVING_URL is used to connect to the serving server instead. + + Args: + feature_set (feast.sdk.resources.feature_set.FeatureSet): feature set + representing the data wanted + entity_keys (:obj: `list` of :obj: `str): list of entity keys + request_type (feast.sdk.utils.types.ServingRequestType): + (default: feast.sdk.utils.types.ServingRequestType.LAST) type of + request: one of [LIST, LAST] + ts_range (:obj: `list` of :obj: `datetime.datetime`, optional): size + 2 list of start timestamp and end timestamp. Only required if + request_type is set to LIST + limit (int, optional): (default: 10) number of values to get. Only + required if request_type is set to LIST + server_url (str, optional): (default: None) serving server url. If + not provided, feast will use the value at FEAST_SERVING_URL + + Returns: + pandas.DataFrame: DataFrame of results + """ + if server_url is None: + server_url = os.environ[FEAST_SERVING_URL_ENV_KEY] + conn = grpc.insecure_channel(server_url) + cli = serving.ServingAPIStub(conn) + + ts_range = [_timestamp_from_datetime(dt) for dt in ts_range] + request = self._build_serving_request(feature_set, entity_keys, + request_type, ts_range, limit) + response = cli.QueryFeatures(request) + + def _build_serving_request(self, feature_set, entity_keys, request_type, + ts_range, limit): + """Helper function to build serving service request.""" + features = [RequestDetail(featureId=feat_id, type=request_type, + limit=limit) for feat_id in feature_set.features] + + ts_range = TimestampRange(start=ts_range[0], end=ts_range[1]) + + return QueryFeatures.Request(entityName=feature_set.entity, + entityId=entity_keys, + requestDetails=features, + timestampRange=ts_range) + def _apply(self, obj): """Applies a single object to feast core. @@ -185,3 +241,17 @@ def _get_storage_spec_map(self, ids): storage_specs = get_storage_resp.storageSpecs return {storage_spec.id: storage_specs for storage_spec in storage_specs} + + +def _timestamp_from_datetime(dt): + """Convert datetime to protobuf timestamp + + Args: + dt (datetime.datetime): datetime in datetime format + + Returns: + google.protobuf.timestamp_pb2.Timestamp: timestamp in protobuf format + """ + ts = Timestamp() + ts.FromDatetime(dt) + return ts diff --git a/sdk/python/feast/sdk/feature_set.py b/sdk/python/feast/sdk/feature_set.py deleted file mode 100644 index 9d8f9e8e66d..00000000000 --- a/sdk/python/feast/sdk/feature_set.py +++ /dev/null @@ -1,23 +0,0 @@ - - -class FeatureSet: - def __init__(self): - pass - - def create_training_dataset(self, start_date, end_date): - # need access to bigquery and the feature's table - # and then create another table based on start_date and end_date - pass - - def get_serving_data(self, entity_keys, type=None): - pass - -class DatasetInfo: - def __init__(self): - pass - - def download(self, dest, type): - pass - - def download_to_df(self): - pass diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py new file mode 100644 index 00000000000..7dcd0e9b9d6 --- /dev/null +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -0,0 +1,19 @@ + + +class FeatureSet: + def __init__(self): + self.features = None + self.entity = None + pass + +class DatasetInfo: + def __init__(self): + pass + + def download(self, dest, type): + pass + + def download_to_df(self): + pass + + diff --git a/sdk/python/feast/sdk/utils/types.py b/sdk/python/feast/sdk/utils/types.py index dade4487269..ca25bc2ec88 100644 --- a/sdk/python/feast/sdk/utils/types.py +++ b/sdk/python/feast/sdk/utils/types.py @@ -1,5 +1,6 @@ import pandas as pd from enum import Enum +from feast.serving.Serving_pb2 import RequestType class Granularity(Enum): NONE = 0 @@ -8,6 +9,7 @@ class Granularity(Enum): MINUTE = 3 SECOND = 4 + class ValueType(Enum): UNKNOWN = 0 BYTES = 1 @@ -19,6 +21,12 @@ class ValueType(Enum): BOOL = 7 TIMESTAMP = 8 + +class ServingRequestType(Enum): + LAST = 0 + LIST = 1 + + # mapping of pandas dtypes to feast value type strings _DTYPE_TO_VALUE_TYPE_MAPPING = { "float64": ValueType.DOUBLE, @@ -34,13 +42,14 @@ class ValueType(Enum): "object": ValueType.STRING } + def dtype_to_value_type(dtype): - '''Returns the equivalent feast valueType for the given dtype - + """Returns the equivalent feast valueType for the given dtype + Args: dtype (pandas.dtype): pandas dtype - + Returns: feast.types.ValueType2.ValueType: equivalent feast valuetype - ''' - return _DTYPE_TO_VALUE_TYPE_MAPPING[dtype.__str__()] \ No newline at end of file + """ + return _DTYPE_TO_VALUE_TYPE_MAPPING[dtype.__str__()] diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 4164a48d844..cdafd1e63a8 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -5,10 +5,9 @@ import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs -import feast.specs.FeatureSpec_pb2 as feature_pb import feast.specs.StorageSpec_pb2 as storage_pb from feast.core.CoreService_pb2 import CoreServiceTypes -from feast.core.JobService_pb2 import JobServiceTypes +from feast.core.JobService_pb2 import JobServiceTypes from feast.sdk.utils.types import Granularity from feast.specs.ImportSpec_pb2 import ImportSpec from feast.sdk.client import Client @@ -18,20 +17,21 @@ from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage + @pytest.fixture def client(): return Client("some.uri") + class TestClient(object): def test_apply_single_feature(self, client, mocker): - my_feature = Feature(name="test", - entity="test", granularity=Granularity.NONE) + my_feature = Feature(name="test", + entity="test", granularity=Granularity.NONE) grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) with mocker.patch.object(grpc_stub, 'ApplyFeature', - return_value=CoreServiceTypes.ApplyFeatureResponse( - featureId="test.none.test")): - + return_value=CoreServiceTypes.ApplyFeatureResponse( + featureId="test.none.test")): client.core_service_stub = grpc_stub id = client.apply(my_feature) assert id == "test.none.test" @@ -41,9 +41,8 @@ def test_apply_single_entity(self, client, mocker): grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) with mocker.patch.object(grpc_stub, 'ApplyEntity', - return_value=CoreServiceTypes.ApplyEntityResponse( - entityName="test")): - + return_value=CoreServiceTypes.ApplyEntityResponse( + entityName="test")): client.core_service_stub = grpc_stub name = client.apply(my_entity) assert name == "test" @@ -53,21 +52,19 @@ def test_apply_single_feature_group(self, client, mocker): grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) with mocker.patch.object(grpc_stub, 'ApplyFeatureGroup', - return_value=CoreServiceTypes.ApplyFeatureGroupResponse( - featureGroupId="test")): - + return_value=CoreServiceTypes.ApplyFeatureGroupResponse( + featureGroupId="test")): client.core_service_stub = grpc_stub name = client.apply(my_feature_group) assert name == "test" - + def test_apply_single_storage(self, client, mocker): my_storage = Storage(id="TEST", type="redis") grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) with mocker.patch.object(grpc_stub, 'ApplyStorage', - return_value=CoreServiceTypes.ApplyStorageResponse( - storageId="TEST")): - + return_value=CoreServiceTypes.ApplyStorageResponse( + storageId="TEST")): client.core_service_stub = grpc_stub name = client.apply(my_storage) assert name == "TEST" @@ -76,7 +73,7 @@ def test_apply_unsupported_object(self, client): with pytest.raises(TypeError) as e_info: client.apply(None) assert e_info.__str__() == "Apply can only be passed one of the" \ - + "following types: [Feature, Entity, FeatureGroup, Storage, Importer]" + + "following types: [Feature, Entity, FeatureGroup, Storage, Importer]" def test_apply_multiple(self, client, mocker): my_storage = Storage(id="TEST", type="redis") @@ -86,14 +83,14 @@ def test_apply_multiple(self, client, mocker): grpc_stub = core.CoreServiceStub(grpc.insecure_channel("")) mocker.patch.object(grpc_stub, 'ApplyStorage', - return_value=CoreServiceTypes.ApplyStorageResponse( - storageId="TEST")) + return_value=CoreServiceTypes.ApplyStorageResponse( + storageId="TEST")) mocker.patch.object(grpc_stub, 'ApplyFeatureGroup', - return_value=CoreServiceTypes.ApplyFeatureGroupResponse( - featureGroupId="test")) + return_value=CoreServiceTypes.ApplyFeatureGroupResponse( + featureGroupId="test")) mocker.patch.object(grpc_stub, 'ApplyEntity', - return_value=CoreServiceTypes.ApplyEntityResponse( - entityName="test")) + return_value=CoreServiceTypes.ApplyEntityResponse( + entityName="test")) client.core_service_stub = grpc_stub ids = client.apply([my_storage, my_entity, my_feature_group]) @@ -103,45 +100,45 @@ def test_run_job_no_staging(self, client, mocker): grpc_stub = jobs.JobServiceStub(grpc.insecure_channel("")) mocker.patch.object(grpc_stub, 'SubmitJob', - return_value=JobServiceTypes.SubmitImportJobResponse( - jobId="myjob12312")) + return_value=JobServiceTypes.SubmitImportJobResponse( + jobId="myjob12312")) client.job_service_stub = grpc_stub - importer = Importer( - {"import":ImportSpec()}, + importer = Importer( + {"import": ImportSpec()}, None, {"require_staging": False}) - + job_id = client.run(importer) assert job_id == "myjob12312" - def test_create_feature_set(self, client, mocker): - entity_name = "myentity" - granularity = Granularity.DAY - features = ["feature1", "feature2", "feature3"] - wh_store_id = "BIGQUERY1" - project = "test_project" - dataset = "test_dataset" - - core_stub = core.CoreServiceStub(grpc.insecure_channel("")) - feature_specs = self._create_feature_specs(entity_name, granularity, - features, wh_store_id) - storage_specs = self._create_bq_spec(wh_store_id, project, dataset) - mocker.patch.object(core_stub, 'GetFeatures', - return_value=feature_specs) - mocker.patch.object(core_stub, 'GetStorage', - return_value=storage_specs) - - client.create_feature_set(entity_name, - granularity, - features) + # def test_create_feature_set(self, client, mocker): + # entity_name = "myentity" + # granularity = Granularity.DAY + # features = ["feature1", "feature2", "feature3"] + # wh_store_id = "BIGQUERY1" + # project = "test_project" + # dataset = "test_dataset" + # + # core_stub = core.CoreServiceStub(grpc.insecure_channel("")) + # feature_specs = self._create_feature_specs(entity_name, granularity, + # features, wh_store_id) + # storage_specs = self._create_bq_spec(wh_store_id, project, dataset) + # mocker.patch.object(core_stub, 'GetFeatures', + # return_value=feature_specs) + # mocker.patch.object(core_stub, 'GetStorage', + # return_value=storage_specs) + # + # client.create_feature_set(entity_name, + # granularity, + # features) def _create_feature_specs(self, entity, granularity, features, wh_id): return def _create_bq_spec(self, id, project, dataset): - return storage_pb.StorageSpec(id=id, type="bigquery", options = { - "project":project, "dataset":dataset}) + return storage_pb.StorageSpec(id=id, type="bigquery", options={ + "project": project, "dataset": dataset}) # def test_run_job_require_staging(self, client, mocker): # importer = Importer() - # mocker.patch.object(importer, \ No newline at end of file + # mocker.patch.object(importer, From 891e3f9912f71c246963c7403afe56dc5119734e Mon Sep 17 00:00:00 2001 From: zhilingc Date: Thu, 27 Dec 2018 18:03:14 +0800 Subject: [PATCH 18/50] Add serving retrieval functions --- sdk/python/feast/sdk/client.py | 53 +++++++++++--- sdk/python/tests/sdk/test_client.py | 103 ++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 11 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index cc7a1d78347..5c5c4fa823d 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -4,8 +4,9 @@ import grpc import os - +import pandas as pd from google.protobuf.timestamp_pb2 import Timestamp +from datetime import datetime import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs @@ -14,6 +15,7 @@ from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange import feast.serving.Serving_pb2_grpc as serving +from feast.serving.Serving_pb2 import RequestType from feast.sdk.env import FEAST_CORE_URL_ENV_KEY, FEAST_SERVING_URL_ENV_KEY from feast.sdk.resources.feature import Feature @@ -140,20 +142,49 @@ def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequest ts_range = [_timestamp_from_datetime(dt) for dt in ts_range] request = self._build_serving_request(feature_set, entity_keys, request_type, ts_range, limit) - response = cli.QueryFeatures(request) + return self._response_to_df(cli.QueryFeatures(request)) def _build_serving_request(self, feature_set, entity_keys, request_type, ts_range, limit): """Helper function to build serving service request.""" - features = [RequestDetail(featureId=feat_id, type=request_type, - limit=limit) for feat_id in feature_set.features] - - ts_range = TimestampRange(start=ts_range[0], end=ts_range[1]) - - return QueryFeatures.Request(entityName=feature_set.entity, - entityId=entity_keys, - requestDetails=features, - timestampRange=ts_range) + request = QueryFeatures.Request(entityName=feature_set.entity, + entityId=entity_keys) + features = [RequestDetail(featureId=feat_id, type=request_type.value) + for feat_id in feature_set.features] + + if request_type == ServingRequestType.LIST: + ts_range = TimestampRange(start=ts_range[0], end=ts_range[1]) + request.timestampRange.CopyFrom(ts_range) + for feature in features: + feature.limit = limit + request.requestDetails.extend(features) + return request + + def _response_to_df(self, response): + entity_tables = [] + for entity_key in response.entities: + feature_tables = [] + features = response.entities[entity_key].features + for feature_name in features: + rows = [] + v_list = features[feature_name].valueList + v_list = getattr(v_list, v_list.WhichOneof("valueList")).val + for idx in range(len(v_list)): + row = {response.entityName: entity_key, + feature_name: v_list[idx]} + if features[feature_name].HasField("timestampList"): + ts_seconds = \ + features[feature_name].timestampList.val[idx].seconds + row["timestamp"] = datetime.fromtimestamp(ts_seconds) + rows.append(row) + feature_tables.append(pd.DataFrame(rows)) + entity_table = feature_tables[0] + for idx in range(1, len(feature_tables)): + entity_table = pd.merge(left=entity_table, + right=feature_tables[idx], how='outer') + entity_tables.append(entity_table) + df = pd.concat(entity_tables) + return df.reset_index(drop=True) def _apply(self, obj): """Applies a single object to feast core. diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index cdafd1e63a8..65f8c027e01 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -2,12 +2,19 @@ from unittest.mock import patch import grpc +from datetime import datetime +import pandas as pd +from google.protobuf.timestamp_pb2 import Timestamp import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs import feast.specs.StorageSpec_pb2 as storage_pb from feast.core.CoreService_pb2 import CoreServiceTypes from feast.core.JobService_pb2 import JobServiceTypes +from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange, Entity, FeatureValueList +from feast.types.Value_pb2 import ValueList, TimestampList, Int32List +import feast.serving.Serving_pb2 as serving_pb + from feast.sdk.utils.types import Granularity from feast.specs.ImportSpec_pb2 import ImportSpec from feast.sdk.client import Client @@ -16,6 +23,8 @@ from feast.sdk.resources.feature_group import FeatureGroup from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage +from feast.sdk.resources.feature_set import FeatureSet +from feast.sdk.utils.types import ServingRequestType @pytest.fixture @@ -132,6 +141,100 @@ def test_run_job_no_staging(self, client, mocker): # granularity, # features) + def test_build_serving_request_last(self, client): + feature_set = FeatureSet() + feature_set.features = ["entity.none.feat1", "entity.none.feat2"] + feature_set.entity = "entity" + req = client._build_serving_request(feature_set, ["1", "2", "3"], + ServingRequestType.LAST, None, None) + expected_request_detail = \ + [RequestDetail(featureId=feat_id, type=serving_pb.LAST) + for feat_id in ["entity.none.feat1", "entity.none.feat2"]] + expected = QueryFeatures.Request(entityName="entity", + entityId=["1", "2", "3"], + requestDetails=expected_request_detail) + assert req == expected + + def test_build_serving_request_list(self, client): + feature_set = FeatureSet() + feature_set.features = ["entity.none.feat1", "entity.none.feat2"] + feature_set.entity = "entity" + req = client._build_serving_request( + feature_set, ["1", "2", "3"], ServingRequestType.LIST, + [Timestamp(seconds=10), Timestamp(seconds=11)], 2) + expected_request_detail = \ + [RequestDetail(featureId=feat_id, type=serving_pb.LIST, limit=2) + for feat_id in ["entity.none.feat1", "entity.none.feat2"]] + expected_ts_range = \ + TimestampRange(start=Timestamp(seconds=10), end=Timestamp(seconds=11)) + expected = QueryFeatures.Request(entityName="entity", + entityId=["1", "2", "3"], + requestDetails=expected_request_detail, + timestampRange=expected_ts_range) + assert req == expected + + def test_serving_response_to_df(self, client): + response = self._create_query_features_response( + entity_name="entity", + entities=[{"id": "1", + "feat1": [(3, Timestamp(seconds=10))], + "feat2": [(1, Timestamp(seconds=10))]}, + {"id": "2", + "feat1": [(3, Timestamp(seconds=10))], + "feat2": [(3, Timestamp(seconds=10))]}], + features=["feat1", "feat2"] + ) + df = client._response_to_df(response) + expected_df = pd.DataFrame({'entity': ["1", "2"], + 'timestamp': [datetime.fromtimestamp(10), + datetime.fromtimestamp(10)], + 'feat1': [3, 3], + 'feat2': [1, 3]}) + for col in expected_df.columns: + assert df[col].equals(expected_df[col]) + + def test_serving_response_to_df_multiple(self, client): + response = self._create_query_features_response( + entity_name="entity", + entities=[{"id": "1", + "feat1": [(3, Timestamp(seconds=10)), (4, Timestamp(seconds=11))], + "feat2": [(1, Timestamp(seconds=10)), (3, Timestamp(seconds=11))]}, + {"id": "2", + "feat1": [(4, Timestamp(seconds=10)), (6, Timestamp(seconds=11))], + "feat2": [(2, Timestamp(seconds=10)), (5, Timestamp(seconds=11))]}], + features=["feat1", "feat2"] + ) + df = client._response_to_df(response) + expected_df = pd.DataFrame({'entity': ["1", "1", "2", "2"], + 'timestamp': [datetime.fromtimestamp(10), + datetime.fromtimestamp(11), + datetime.fromtimestamp(10), + datetime.fromtimestamp(11)], + 'feat1': [3, 4, 4, 6], + 'feat2': [1, 3, 2, 5]}) + for col in expected_df.columns: + assert df[col].equals(expected_df[col]) + + def _create_query_features_response(self, entity_name, entities, features): + # entities should be in the form: + # {"id": "1", + # "feature_1": [(val1, ts1), (val2, ts2)], + # "feature_2": ...} + response = QueryFeatures.Response(entityName=entity_name) + for entity in entities: + features_map = {} + for feature in features: + features_map[feature] = FeatureValueList( + valueList=ValueList( + int32List=Int32List(val=[v[0] for v in entity[feature]]) + ), + timestampList=TimestampList(val=[v[1] for v in entity[feature]]) + ) + entity_pb = serving_pb.Entity(features=features_map) + response.entities[entity["id"]].CopyFrom(entity_pb) + + return response + def _create_feature_specs(self, entity, granularity, features, wh_id): return From 7cfad222443bc4b9f9016dc5de69ae562c180118 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Thu, 27 Dec 2018 18:21:15 +0800 Subject: [PATCH 19/50] Add FeatureSet and DatasetInfo implementation --- sdk/python/feast/sdk/resources/feature_set.py | 115 ++++++++++++++-- sdk/python/feast/sdk/utils/format.py | 13 ++ .../tests/sdk/resources/test_feature_set.py | 130 ++++++++++++++++++ 3 files changed, 248 insertions(+), 10 deletions(-) create mode 100644 sdk/python/feast/sdk/utils/format.py create mode 100644 sdk/python/tests/sdk/resources/test_feature_set.py diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index 7dcd0e9b9d6..84401942810 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -1,19 +1,114 @@ +import time +import os +from feast.sdk.utils.format import make_feature_id +from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gs_to_df +from google.cloud.bigquery.client import Client as BQClient +from google.cloud.bigquery.job import ExtractJobConfig +from google.cloud.bigquery.table import Table +from google.cloud.storage import Client as GCSClient class FeatureSet: - def __init__(self): - self.features = None - self.entity = None - pass + """ + Represent a collection of features having same entity and granularity. + """ + + def __init__(self, entity, granularity, features): + self._features = [make_feature_id(entity, granularity, feature) + for feature in features] + + @property + def features(self): + """ + Return list of feature ID of this feature set + Returns: list of feature ID in this feature set + + """ + return self._features + + +class FileType(object): + """ + File type for downloading training dataset as file + """ + CSV = "CSV" + """CSV file format""" + + JSON = "NEWLINE_DELIMITED_JSON" + """Newline delimited JSON file format""" + + AVRO = "AVRO" + """Avro file format""" + class DatasetInfo: - def __init__(self): - pass + def __init__(self, table): + """ + Create instance of DatasetInfo with a BigQuery table as its + backing store. + Args: + table: (google.cloud.bigquery.table.Table) backing table + """ + if not isinstance(table, Table): + raise TypeError("table must be a BigQuery table type") + + self._table = table + self._bq_client = BQClient() + self._gcs_client = GCSClient() + + def download(self, filename, staging_uri, type=FileType.CSV): + """ + Download the training dataset as file + Args: + filename (str): destination filename + staging_uri (str): url to staging_location (currently + support a folder in GCS) + type (feast.sdk.resources.feature_set.FileType): (default: + FileType.CSV) exported file format + + """ + if not is_gs_path(staging_uri): + raise ValueError("staging_uri must be a directory in GCS") + + temp_file_name = 'temp_{}'.format( + int(round(time.time() * 1000))) + staging_file_path = os.path.join(staging_uri, temp_file_name) + + job_config = ExtractJobConfig() + job_config.destination_format = type + job = self._bq_client.extract_table(self._table, staging_file_path, + job_config=job_config) + + # await completion + job.result() + + bucket_name, blob_name = split_gs_path(staging_file_path) + bucket = self._gcs_client.get_bucket(bucket_name) + blob = bucket.blob(blob_name) + blob.download_to_filename(filename) + + def download_to_df(self, staging_uri): + """ + Download the training dataset as Pandas Dataframe + Args: + staging_uri: url to staging_location (currently + support a folder in GCS) + + Returns: pandas.DataFrame: dataframe of the training dataset - def download(self, dest, type): - pass + """ + if not is_gs_path(staging_uri): + raise ValueError("staging_uri must be a directory in GCS") - def download_to_df(self): - pass + temp_file_name = 'temp_{}'.format( + int(round(time.time() * 1000))) + staging_file_path = os.path.join(staging_uri, temp_file_name) + job_config = ExtractJobConfig() + job_config.destination_format = FileType.CSV + job = self._bq_client.extract_table(self._table, staging_file_path, + job_config=job_config) + # await completion + job.result() + return gs_to_df(staging_file_path) diff --git a/sdk/python/feast/sdk/utils/format.py b/sdk/python/feast/sdk/utils/format.py new file mode 100644 index 00000000000..de9253861f7 --- /dev/null +++ b/sdk/python/feast/sdk/utils/format.py @@ -0,0 +1,13 @@ +from feast.types.Granularity_pb2 import Granularity + + +def make_feature_id(entity, granularity, feature_name): + """ + Create formatted feature ID + :param entity: entity name + :param granularity: granularity of feature + :param feature_name: feature name + :return: formatted feature ID as {entity}.{granularity}.{feature_name} + """ + return ".".join([entity, Granularity.Enum.Name(granularity.value), + feature_name]).lower() \ No newline at end of file diff --git a/sdk/python/tests/sdk/resources/test_feature_set.py b/sdk/python/tests/sdk/resources/test_feature_set.py new file mode 100644 index 00000000000..9d625eb9cac --- /dev/null +++ b/sdk/python/tests/sdk/resources/test_feature_set.py @@ -0,0 +1,130 @@ +from feast.sdk.resources.feature_set import FeatureSet, DatasetInfo, FileType +from feast.sdk.utils.types import Granularity +from feast.sdk.utils.format import make_feature_id +from google.cloud.bigquery.table import Table + +import time +import pytest +import os + + +class TestFeatureSet(object): + def test_features(self): + entity_name = "driver" + granularity = Granularity.HOUR + features = ["feature1", "feature2"] + + feature_set = FeatureSet(entity_name, granularity, features) + assert len(feature_set.features) == 2 + + exp = [make_feature_id(entity_name, granularity, f) for f in features] + assert len(set(feature_set.features) & set(exp)) == 2 + + +class TestDatasetInfo(object): + def test_creation(self): + fake_table = "fake_table" + with pytest.raises(TypeError, + match="table must be a BigQuery table type"): + DatasetInfo(fake_table) + + table = Table.from_string("project_id.dataset_id.table_id") + dataset = DatasetInfo(table) + assert dataset._table == table + + def test_download_df(self, mocker): + self._stop_time(mocker) + mocked_gs_to_df = mocker.patch( + "feast.sdk.resources.feature_set.gs_to_df", + return_value=None) + + staging_path = "gs://temp/" + staging_file_name = "temp_0" + table = Table.from_string("project_id.dataset_id.table_id") + dataset_info = DatasetInfo(table) + + exp_staging_path = os.path.join(staging_path, staging_file_name) + mocker.patch.object(dataset_info._bq_client, "extract_table", + return_value=_Job()) + + dataset_info.download_to_df(staging_path) + + assert len(dataset_info._bq_client.extract_table.call_args_list) == 1 + args, kwargs = dataset_info._bq_client.extract_table.call_args_list[0] + assert args[0] == table + assert args[1] == exp_staging_path + assert kwargs['job_config'].destination_format == "CSV" + mocked_gs_to_df.assert_called_once_with(exp_staging_path) + + def test_download_csv(self, mocker): + self._stop_time(mocker) + self._test_download_file(mocker, FileType.CSV) + + def test_download_avro(self, mocker): + self._stop_time(mocker) + self._test_download_file(mocker, FileType.AVRO) + + def test_download_json(self, mocker): + self._stop_time(mocker) + self._test_download_file(mocker, FileType.JSON) + + def test_download_invalid_staging_url(self): + table = Table.from_string("project_id.dataset_id.table_id") + dataset = DatasetInfo(table) + + with pytest.raises(ValueError, + match="staging_uri must be a directory in " + "GCS"): + dataset.download("/tmp/dst", "/local/directory") + + with pytest.raises(ValueError, + match="staging_uri must be a directory in " + "GCS"): + dataset.download_to_df("/local/directory") + + def _test_download_file(self, mocker, type): + staging_path = "gs://temp/" + staging_file_name = "temp_0" + dst_path = "/tmp/myfile.csv" + table = Table.from_string("project_id.dataset_id.table_id") + dataset_info = DatasetInfo(table) + + mock_blob = _Blob() + mocker.patch.object(mock_blob, "download_to_filename") + mocker.patch.object(dataset_info._bq_client, "extract_table", + return_value=_Job()) + mocker.patch.object(dataset_info._gcs_client, "get_bucket", + return_value=_Bucket(mock_blob)) + + dataset_info.download(dst_path, staging_path, type=type) + + exp_staging_path = os.path.join(staging_path, staging_file_name) + assert len(dataset_info._bq_client.extract_table.call_args_list) == 1 + args, kwargs = dataset_info._bq_client.extract_table.call_args_list[0] + assert args[0] == table + assert args[1] == exp_staging_path + assert kwargs['job_config'].destination_format == str(type) + + mock_blob.download_to_filename.assert_called_once_with(dst_path) + + def _stop_time(self, mocker): + mocker.patch('time.time') + time.time.return_value = 0 + + +class _Job(): + def result(self): + return None + + +class _Bucket(): + def __init__(self, blob): + self._blob = blob + + def blob(self, blob_name): + return self._blob + + +class _Blob(): + def download_to_filename(self, filename): + pass From 85b476c5195e6f68cda07d40812f1773a16f4b65 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Fri, 28 Dec 2018 14:38:35 +0800 Subject: [PATCH 20/50] Light refactor, fix tests --- sdk/python/feast/sdk/client.py | 83 ++++++++++++------- sdk/python/feast/sdk/resources/feature_set.py | 10 ++- .../tests/sdk/resources/test_feature_set.py | 8 +- sdk/python/tests/sdk/test_client.py | 26 +++--- 4 files changed, 76 insertions(+), 51 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 5c5c4fa823d..0c9e886893b 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -29,23 +29,51 @@ class Client: - def __init__(self, server_url=None, verbose=False): + def __init__(self, core_url=None, serving_url=None, verbose=False): """Create an instance of Feast client which is connected to feast endpoint specified in the parameter. If no url is provided, the client will default to the url specified in the environment variable FEAST_CORE_URL. Args: - server_url (str, optional): feast's endpoint URL + core_url (str, optional): feast's grpc endpoint URL + (e.g.: "my.feast.com:8433") + serving_url (str, optional): feast serving's grpc endpoint URL (e.g.: "my.feast.com:8433") """ - if server_url is None: - server_url = os.environ[FEAST_CORE_URL_ENV_KEY] - self.__channel = grpc.insecure_channel(server_url) - self.core_service_stub = core.CoreServiceStub(self.__channel) - self.job_service_stub = jobs.JobServiceStub(self.__channel) - self.verbose = verbose + if core_url is None: + core_url = os.environ[FEAST_CORE_URL_ENV_KEY] + self._core_url = core_url + self.__core_channel = grpc.insecure_channel(core_url) + + if serving_url is None: + serving_url = os.environ[FEAST_SERVING_URL_ENV_KEY] + self._serving_url = serving_url + self.__serving_channel = grpc.insecure_channel(serving_url) + + self._serving_service_stub = serving.ServingAPIStub(self.__serving_channel) + self._core_service_stub = core.CoreServiceStub(self.__core_channel) + self._job_service_stub = jobs.JobServiceStub(self.__core_channel) + self._verbose = verbose + + @property + def core_url(self): + return self._core_url + + @property + def serving_url(self): + return self._serving_url + + @property + def verbose(self): + return self._verbose + + @verbose.setter + def verbose(self, val): + if not isinstance(val, bool): + raise TypeError("verbose should be a boolean value") + self._verbose = val def apply(self, obj): """Create or update one or many feast's resource @@ -84,7 +112,7 @@ def run(self, importer, name_override=None, importer.stage() print("Submitting job with spec:\n {}" .format(spec_to_yaml(importer.spec))) - response = self.job_service_stub.SubmitJob(request) + response = self._job_service_stub.SubmitJob(request) print("Submitted job with id: {}".format(response.jobId)) return response.jobId @@ -105,10 +133,11 @@ def run(self, importer, name_override=None, # return FeatureSet(feature_to_storage_spec_map) def close(self): - self.channel.close() + self.__core_channel.close() + self.__serving_channel.close() def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequestType.LAST, - ts_range=None, limit=10, server_url=None): + ts_range=None, limit=10): """Get data from the feast serving layer. You can either retrieve the the latest value, or a list of the latest values, up to a provided limit. @@ -128,21 +157,16 @@ def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequest request_type is set to LIST limit (int, optional): (default: 10) number of values to get. Only required if request_type is set to LIST - server_url (str, optional): (default: None) serving server url. If - not provided, feast will use the value at FEAST_SERVING_URL Returns: pandas.DataFrame: DataFrame of results """ - if server_url is None: - server_url = os.environ[FEAST_SERVING_URL_ENV_KEY] - conn = grpc.insecure_channel(server_url) - cli = serving.ServingAPIStub(conn) ts_range = [_timestamp_from_datetime(dt) for dt in ts_range] request = self._build_serving_request(feature_set, entity_keys, request_type, ts_range, limit) - return self._response_to_df(cli.QueryFeatures(request)) + return self._response_to_df(self._serving_service_stub + .QueryFeatures(request)) def _build_serving_request(self, feature_set, entity_keys, request_type, ts_range, limit): @@ -211,10 +235,9 @@ def _apply_feature(self, feature): Args: feature (feast.sdk.resources.feature.Feature): feature to apply """ - response = self.core_service_stub.ApplyFeature(feature.spec) - if self.verbose: print( - "Successfully applied feature with id: {}\n---\n{}" - .format(response.featureId, feature)) + response = self._core_service_stub.ApplyFeature(feature.spec) + if self.verbose: print("Successfully applied feature with id: {}\n---\n{}" + .format(response.featureId, feature)) return response.featureId def _apply_entity(self, entity): @@ -223,10 +246,10 @@ def _apply_entity(self, entity): Args: entity (feast.sdk.resources.entity.Entity): entity to apply """ - response = self.core_service_stub.ApplyEntity(entity.spec) - if self.verbose: print( - "Successfully applied entity with name: {}\n---\n{}" - .format(response.entityName, entity)) + response = self._core_service_stub.ApplyEntity(entity.spec) + if self.verbose: + print("Successfully applied entity with name: {}\n---\n{}" + .format(response.entityName, entity)) return response.entityName def _apply_feature_group(self, feature_group): @@ -236,7 +259,7 @@ def _apply_feature_group(self, feature_group): feature_group (feast.sdk.resources.feature_group.FeatureGroup): feature group to apply """ - response = self.core_service_stub.ApplyFeatureGroup(feature_group.spec) + response = self._core_service_stub.ApplyFeatureGroup(feature_group.spec) if self.verbose: print("Successfully applied feature group with id: " + "{}\n---\n{}".format(response.featureGroupId, feature_group)) @@ -248,7 +271,7 @@ def _apply_storage(self, storage): Args: storage (feast.sdk.resources.storage.Storage): storage to apply """ - response = self.core_service_stub.ApplyStorage(storage.spec) + response = self._core_service_stub.ApplyStorage(storage.spec) if self.verbose: print("Successfully applied storage with id: " + "{}\n{}".format(response.storageId, storage)) return response.storageId @@ -257,7 +280,7 @@ def _get_feature_spec_map(self, ids): get_features_request = CoreServiceTypes.GetFeaturesRequest( ids=ids ) - get_features_resp = self.core_service_stub.GetFeatures( + get_features_resp = self._core_service_stub.GetFeatures( get_features_request) feature_specs = get_features_resp.features return {feature_spec.id: feature_spec for feature_spec in @@ -267,7 +290,7 @@ def _get_storage_spec_map(self, ids): get_storage_request = CoreServiceTypes.GetStorageRequest( ids=ids ) - get_storage_resp = self.core_service_stub.GetStorage( + get_storage_resp = self._core_service_stub.GetStorage( get_storage_request) storage_specs = get_storage_resp.storageSpecs return {storage_spec.id: storage_specs for storage_spec in diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index 84401942810..42accb900ef 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -13,9 +13,9 @@ class FeatureSet: Represent a collection of features having same entity and granularity. """ - def __init__(self, entity, granularity, features): - self._features = [make_feature_id(entity, granularity, feature) - for feature in features] + def __init__(self, entity, features): + self._features = features + self._entity = entity @property def features(self): @@ -26,6 +26,10 @@ def features(self): """ return self._features + @property + def entity(self): + return self._entity + class FileType(object): """ diff --git a/sdk/python/tests/sdk/resources/test_feature_set.py b/sdk/python/tests/sdk/resources/test_feature_set.py index 9d625eb9cac..f79d47545df 100644 --- a/sdk/python/tests/sdk/resources/test_feature_set.py +++ b/sdk/python/tests/sdk/resources/test_feature_set.py @@ -11,14 +11,12 @@ class TestFeatureSet(object): def test_features(self): entity_name = "driver" - granularity = Granularity.HOUR - features = ["feature1", "feature2"] + features = ["driver.hour.feature1", "driver.hour.feature2"] - feature_set = FeatureSet(entity_name, granularity, features) + feature_set = FeatureSet(entity_name, features) assert len(feature_set.features) == 2 - exp = [make_feature_id(entity_name, granularity, f) for f in features] - assert len(set(feature_set.features) & set(exp)) == 2 + assert len(set(feature_set.features) & set(features)) == 2 class TestDatasetInfo(object): diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 65f8c027e01..0cd0987850b 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -29,7 +29,7 @@ @pytest.fixture def client(): - return Client("some.uri") + return Client(core_url="some.uri", serving_url="some.serving.uri") class TestClient(object): @@ -41,7 +41,7 @@ def test_apply_single_feature(self, client, mocker): with mocker.patch.object(grpc_stub, 'ApplyFeature', return_value=CoreServiceTypes.ApplyFeatureResponse( featureId="test.none.test")): - client.core_service_stub = grpc_stub + client._core_service_stub = grpc_stub id = client.apply(my_feature) assert id == "test.none.test" @@ -52,7 +52,7 @@ def test_apply_single_entity(self, client, mocker): with mocker.patch.object(grpc_stub, 'ApplyEntity', return_value=CoreServiceTypes.ApplyEntityResponse( entityName="test")): - client.core_service_stub = grpc_stub + client._core_service_stub = grpc_stub name = client.apply(my_entity) assert name == "test" @@ -63,7 +63,7 @@ def test_apply_single_feature_group(self, client, mocker): with mocker.patch.object(grpc_stub, 'ApplyFeatureGroup', return_value=CoreServiceTypes.ApplyFeatureGroupResponse( featureGroupId="test")): - client.core_service_stub = grpc_stub + client._core_service_stub = grpc_stub name = client.apply(my_feature_group) assert name == "test" @@ -74,7 +74,7 @@ def test_apply_single_storage(self, client, mocker): with mocker.patch.object(grpc_stub, 'ApplyStorage', return_value=CoreServiceTypes.ApplyStorageResponse( storageId="TEST")): - client.core_service_stub = grpc_stub + client._core_service_stub = grpc_stub name = client.apply(my_storage) assert name == "TEST" @@ -101,7 +101,7 @@ def test_apply_multiple(self, client, mocker): return_value=CoreServiceTypes.ApplyEntityResponse( entityName="test")) - client.core_service_stub = grpc_stub + client._core_service_stub = grpc_stub ids = client.apply([my_storage, my_entity, my_feature_group]) assert ids == ["TEST", "test", "test"] @@ -111,7 +111,7 @@ def test_run_job_no_staging(self, client, mocker): mocker.patch.object(grpc_stub, 'SubmitJob', return_value=JobServiceTypes.SubmitImportJobResponse( jobId="myjob12312")) - client.job_service_stub = grpc_stub + client._job_service_stub = grpc_stub importer = Importer( {"import": ImportSpec()}, None, @@ -142,9 +142,9 @@ def test_run_job_no_staging(self, client, mocker): # features) def test_build_serving_request_last(self, client): - feature_set = FeatureSet() - feature_set.features = ["entity.none.feat1", "entity.none.feat2"] - feature_set.entity = "entity" + feature_set = FeatureSet("entity", + ["entity.none.feat1", "entity.none.feat2"]) + req = client._build_serving_request(feature_set, ["1", "2", "3"], ServingRequestType.LAST, None, None) expected_request_detail = \ @@ -156,9 +156,9 @@ def test_build_serving_request_last(self, client): assert req == expected def test_build_serving_request_list(self, client): - feature_set = FeatureSet() - feature_set.features = ["entity.none.feat1", "entity.none.feat2"] - feature_set.entity = "entity" + feature_set = FeatureSet("entity", + ["entity.none.feat1", "entity.none.feat2"]) + req = client._build_serving_request( feature_set, ["1", "2", "3"], ServingRequestType.LIST, [Timestamp(seconds=10), Timestamp(seconds=11)], 2) From 5808ccd848971717a1eddefa33967f2526c09318 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Mon, 31 Dec 2018 14:34:36 +0800 Subject: [PATCH 21/50] Add checking for different entity in a feature set --- sdk/python/feast/sdk/resources/feature_set.py | 11 +++++++++-- sdk/python/tests/sdk/resources/test_feature_set.py | 9 +++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index 42accb900ef..da086f5d7f2 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -1,6 +1,5 @@ import time import os -from feast.sdk.utils.format import make_feature_id from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gs_to_df from google.cloud.bigquery.client import Client as BQClient from google.cloud.bigquery.job import ExtractJobConfig @@ -14,6 +13,8 @@ class FeatureSet: """ def __init__(self, entity, features): + self._ensure_same_entity(entity, features) + self._features = features self._entity = entity @@ -30,6 +31,12 @@ def features(self): def entity(self): return self._entity + def _ensure_same_entity(self, entity, features): + for feature in features: + e = feature.split(".")[0] + if e != entity: + raise ValueError("feature set has different entity: " + e) + class FileType(object): """ @@ -115,4 +122,4 @@ def download_to_df(self, staging_uri): # await completion job.result() - return gs_to_df(staging_file_path) + return gs_to_df(staging_file_path) \ No newline at end of file diff --git a/sdk/python/tests/sdk/resources/test_feature_set.py b/sdk/python/tests/sdk/resources/test_feature_set.py index f79d47545df..7e16d3a5b79 100644 --- a/sdk/python/tests/sdk/resources/test_feature_set.py +++ b/sdk/python/tests/sdk/resources/test_feature_set.py @@ -1,6 +1,4 @@ from feast.sdk.resources.feature_set import FeatureSet, DatasetInfo, FileType -from feast.sdk.utils.types import Granularity -from feast.sdk.utils.format import make_feature_id from google.cloud.bigquery.table import Table import time @@ -18,6 +16,13 @@ def test_features(self): assert len(set(feature_set.features) & set(features)) == 2 + def test_different_entity(self): + entity_name = "driver" + features = ["customer.hour.feature1", "driver.day.feature1"] + with pytest.raises(ValueError, + match="feature set has different entity: customer"): + FeatureSet(entity_name, features) + class TestDatasetInfo(object): def test_creation(self): From 09f5a6ceeb37798ce9472892aa2436e233286b2d Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Tue, 1 Jan 2019 22:54:47 +0800 Subject: [PATCH 22/50] Add create_training_dataset api to feast client --- sdk/python/feast/sdk/client.py | 125 +++++++++++++++--- sdk/python/feast/sdk/resources/feature_set.py | 14 +- sdk/python/feast/sdk/utils/bq_util.py | 115 +++++++++++++++- sdk/python/feast/sdk/utils/format.py | 13 -- .../sdk/utils/template/training_query.j2 | 43 ++++++ sdk/python/setup.py | 1 + .../tests/sdk/resources/test_feature_set.py | 10 +- sdk/python/tests/sdk/test_client.py | 124 ++++++++++++----- sdk/python/tests/sdk/utils/test_bq_utils.py | 53 ++++++++ 9 files changed, 421 insertions(+), 77 deletions(-) delete mode 100644 sdk/python/feast/sdk/utils/format.py create mode 100644 sdk/python/feast/sdk/utils/template/training_query.j2 create mode 100644 sdk/python/tests/sdk/utils/test_bq_utils.py diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 0c9e886893b..f1671600997 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -5,6 +5,8 @@ import grpc import os import pandas as pd +import time +import re from google.protobuf.timestamp_pb2 import Timestamp from datetime import datetime @@ -12,24 +14,24 @@ import feast.core.JobService_pb2_grpc as jobs from feast.core.JobService_pb2 import JobServiceTypes from feast.core.CoreService_pb2 import CoreServiceTypes -from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange import feast.serving.Serving_pb2_grpc as serving -from feast.serving.Serving_pb2 import RequestType from feast.sdk.env import FEAST_CORE_URL_ENV_KEY, FEAST_SERVING_URL_ENV_KEY from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup -from feast.sdk.resources.feature_set import FeatureSet +from feast.sdk.resources.feature_set import DatasetInfo from feast.sdk.utils.print_utils import spec_to_yaml from feast.sdk.utils.types import ServingRequestType +from feast.sdk.utils.bq_util import get_table_name, TrainingDatasetCreator class Client: - def __init__(self, core_url=None, serving_url=None, verbose=False): + def __init__(self, core_url=None, serving_url=None, bq_dataset=None, + verbose=False): """Create an instance of Feast client which is connected to feast endpoint specified in the parameter. If no url is provided, the client will default to the url specified in the environment variable @@ -40,6 +42,8 @@ def __init__(self, core_url=None, serving_url=None, verbose=False): (e.g.: "my.feast.com:8433") serving_url (str, optional): feast serving's grpc endpoint URL (e.g.: "my.feast.com:8433") + bq_dataset (str, optional): BigQuery dataset to be used + as default training location (e.g. "gcp-project.dataset-name") """ if core_url is None: @@ -56,6 +60,8 @@ def __init__(self, core_url=None, serving_url=None, verbose=False): self._core_service_stub = core.CoreServiceStub(self.__core_channel) self._job_service_stub = jobs.JobServiceStub(self.__core_channel) self._verbose = verbose + self._bq_dataset = bq_dataset + self._training_creator = TrainingDatasetCreator() @property def core_url(self): @@ -116,21 +122,73 @@ def run(self, importer, name_override=None, print("Submitted job with id: {}".format(response.jobId)) return response.jobId - # def create_feature_set(self, entity, granularity, features): - # feature_ids = ('.'.join([entity, - # Granularity_pb2.Enum.Name(granularity.value), - # feature]).lower() for feature in features) - # feature_spec_map = self._get_feature_spec_map(feature_ids) - # wh_storage_ids = (feature_spec.dataStores.warehouse.id for feature_spec - # in - # feature_spec_map.values()) - # wh_storage_map = self._get_storage_spec_map(wh_storage_ids) - # feature_to_storage_spec_map = {} - # for feature_id, feature_spec in feature_spec_map: - # feature_to_storage_spec_map[feature_id] = wh_storage_map.get( - # feature_spec.dataStores.warehouse.id) - # - # return FeatureSet(feature_to_storage_spec_map) + def create_training_dataset(self, feature_set, start_date, end_date, + limit=None, destination=None, + dataset_name=None): + """ + Create training dataset for a feature set. The training dataset + will be bounded by event timestamp between start_date and end_date. + Specify limit to limit number of row returned. The training dataset + will reside in a bigquery table specified by destination. + + Args: + feature_set (feast.sdk.resources.feature_set.FeatureSet): + feature set representing the data wanted + start_date (str): starting date of the training data in ISO 8601 + format (e.g.: "2018-12-31") + end_date (str): end date of training data in ISO 8601 format (e.g.: + "2018-12-31") + limit (int, optional): (default: None) maximum number of row + returned + destination (str, optional): (default: None) destination table + for creating the training dataset. If not specified it will + create a table inside a dataset specified by bq_dataset. + dataset_name (str, optional): (default: None) name of the + training dataset. It is used as table name of the training + dataset if destination is not specified. + :return: + feast.resources.feature_set.DatasetInfo: DatasetInfo containing + the information of training dataset + """ + self._check_create_training_dataset_args(feature_set, start_date, + end_date, limit) + + dataset_name = dataset_name if dataset_name is not None else \ + self._create_dataset_name(feature_set, start_date, end_date) + destination = destination if destination is not None \ + else self._create_training_table(dataset_name) + + features = feature_set.features + feature_specs = self._get_feature_spec_map(features) + wh_storage_ids = (feature_spec.dataStores.warehouse.id for feature_spec + in feature_specs.values()) + wh_storage_map = self._get_storage_spec_map(wh_storage_ids) + feature_table_tuples = [] + for feature_id, feature_spec in feature_specs.items(): + try: + wh_spec = wh_storage_map.get( + feature_spec.dataStores.warehouse.id) + if wh_spec.type is not "bigquery": + ValueError("feature set contains feature which has " + "warehouse store other than bigquery") + except KeyError: + raise ValueError("feature set contains feature which doesn't " + "have warehouse store") + feature_table_tuples.append((feature_id, + get_table_name(feature_id, wh_spec))) + + table = self._training_creator.create_training_dataset( + feature_table_tuples, + start_date, + end_date, + limit, + destination) + + if self.verbose: + print("Training dataset has been created in: {}".format( + destination)) + + return DatasetInfo(dataset_name, table) def close(self): self.__core_channel.close() @@ -293,9 +351,36 @@ def _get_storage_spec_map(self, ids): get_storage_resp = self._core_service_stub.GetStorage( get_storage_request) storage_specs = get_storage_resp.storageSpecs - return {storage_spec.id: storage_specs for storage_spec in + return {storage_spec.id: storage_spec for storage_spec in storage_specs} + def _create_training_table(self, dataset_name): + return ".".join([self._bq_dataset, dataset_name]) + + def _create_dataset_name(self, feature_set, start_date, end_date): + dataset_name = "_".join([feature_set.entity, start_date, end_date, + str(round(time.time()))]) + return re.sub('[^0-9a-zA-Z_]+', '', dataset_name) + + def _check_create_training_dataset_args(self, feature_set, start_date, + end_date, limit): + if len(feature_set.features) < 1: + raise ValueError("feature set is empty") + + start = self._parse_date(start_date) + end = self._parse_date(end_date) + if end < start: + raise ValueError("end_date is before start_date") + + if limit is not None and limit < 1: + raise ValueError("limit is not a positive integer") + + def _parse_date(self, date): + try: + return datetime.strptime(date, "%Y-%m-%d") + except ValueError: + raise ValueError("Incorrect date format, should be YYYY-MM-DD") + def _timestamp_from_datetime(dt): """Convert datetime to protobuf timestamp diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index da086f5d7f2..0583f3e90a6 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -53,20 +53,30 @@ class FileType(object): class DatasetInfo: - def __init__(self, table): + def __init__(self, name, table): """ Create instance of DatasetInfo with a BigQuery table as its backing store. Args: + name: (str) dataset name table: (google.cloud.bigquery.table.Table) backing table """ if not isinstance(table, Table): raise TypeError("table must be a BigQuery table type") - + self._name = name self._table = table self._bq_client = BQClient() self._gcs_client = GCSClient() + @property + def name(self): + """ + Dataset name + Returns: dataset name + + """ + return self._name + def download(self, filename, staging_uri, type=FileType.CSV): """ Download the training dataset as file diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index 769a9eec317..a96f2d44054 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -1,6 +1,14 @@ - +import itertools +import operator +import os import pandas as pd +from google.cloud.bigquery.client import Client as BQClient +from google.cloud.bigquery.table import Table +from google.cloud.bigquery.job import QueryJobConfig +from jinja2 import Template + + def head(client, table, max_rows=10): '''Get the head of the table. Retrieves rows from the given table at minimum cost @@ -19,4 +27,107 @@ def head(client, table, max_rows=10): rows = client.list_rows(table, max_results=max_rows) rows = [x for x in rows] return pd.DataFrame( - data=[list(x.values()) for x in rows], columns=list(rows[0].keys())) \ No newline at end of file + data=[list(x.values()) for x in rows], columns=list(rows[0].keys())) + + +def get_table_name(feature_id, storage_spec): + """ + Get fully qualified BigQuery table name from a feature ID and its + storage spec + Args: + feature_id(str): ID of a feature + storage_spec(feast.specs.StorageSpec_pb2.StorageSpec): storage spec of + the feature + + Returns: + str: fully qualified table name of the feature. + + """ + if "bigquery" != storage_spec.type: + raise ValueError("storage spec is not BigQuery storage spec") + + try: + project = storage_spec.options["project"] + dataset = storage_spec.options["dataset"] + except KeyError: + raise ValueError("storage spec has empty project or dataset option") + + table_name = "_".join(feature_id.split(".")[:2]) + return ".".join([project, dataset, table_name]) + + +class TrainingDatasetCreator: + """ + Helper class to create a training dataset. + """ + + def __init__(self): + self._bq = BQClient() + script_dir = os.path.dirname(__file__) + with open(os.path.join(script_dir, "template", "training_query.j2")) \ + as file: + self._sql_template = Template(file.read()) + + def create_training_dataset(self, feature_table_tuples, + start_date, end_date, limit, + destination): + query = self._create_query(feature_table_tuples, start_date, + end_date, limit) + query_config = QueryJobConfig() + query_config.destination = Table.from_string(destination) + + query_job = self._bq.query(query, query_config) + # wait until completion + query_job.result() + + return query_config.destination + + def _create_query(self, feature_table_tuples, start_date, + end_date, limit): + feature_groups = self._group_features(feature_table_tuples) + return self._sql_template.render(feature_groups=feature_groups, + start_date=start_date, + end_date=end_date, + limit=limit) + + def _group_features(self, feature_table_tuples): + feature_groups = [] + temp = [((table_id, feature_id.split(".")[1]), feature_id) + for (feature_id, table_id) in feature_table_tuples] + it = itertools.groupby(temp, operator.itemgetter(0)) + for key, subiter in it: + features = [_Feature(item[1]) for item in subiter] + feature_groups.append(_FeatureGroup(key[0], key[1], features)) + feature_groups.sort() + return feature_groups + + +class _Feature: + def __init__(self, feature_id): + self.name = feature_id.split(".")[2] + self.column = feature_id.replace(".", "_") + + +class _FeatureGroup: + def __init__(self, table_id, granularity, features): + self.table_id = table_id + self.temp_table = table_id.replace(".", "_").replace("-", "_") + self.granularity = granularity + self.features = features + + GRANULARITY_SCORE = { + "second": 0, + "minute": 1, + "hour": 2, + "day": 3, + "none": 4 + } + + def __lt__(self, other): + my_score = self.GRANULARITY_SCORE[self.granularity] + other_score = self.GRANULARITY_SCORE[other.granularity] + + if my_score != other_score: + return my_score < other_score + + return self.table_id < other.table_id \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/format.py b/sdk/python/feast/sdk/utils/format.py deleted file mode 100644 index de9253861f7..00000000000 --- a/sdk/python/feast/sdk/utils/format.py +++ /dev/null @@ -1,13 +0,0 @@ -from feast.types.Granularity_pb2 import Granularity - - -def make_feature_id(entity, granularity, feature_name): - """ - Create formatted feature ID - :param entity: entity name - :param granularity: granularity of feature - :param feature_name: feature name - :return: formatted feature ID as {entity}.{granularity}.{feature_name} - """ - return ".".join([entity, Granularity.Enum.Name(granularity.value), - feature_name]).lower() \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/template/training_query.j2 b/sdk/python/feast/sdk/utils/template/training_query.j2 new file mode 100644 index 00000000000..ea553f8729b --- /dev/null +++ b/sdk/python/feast/sdk/utils/template/training_query.j2 @@ -0,0 +1,43 @@ +WITH + {% set comma = joiner(",") -%} + {% for feature_group in feature_groups -%} + {{ comma() -}} + raw_{{ feature_group.temp_table }} AS ( + SELECT + ROW_NUMBER() OVER (PARTITION BY id, event_timestamp ORDER BY created_timestamp DESC) rownum, + id, event_timestamp, created_timestamp + {% for feature in feature_group.features -%} + {{ comma() }}FIRST_VALUE({{feature.name}} IGNORE NULLS) OVER w AS {{feature.column}} + {% endfor -%} + FROM `{{feature_group.table_id}}` + {% if feature_group.granularity != "none" -%} + WHERE event_timestamp >= TIMESTAMP("{{ start_date }}") AND event_timestamp <= TIMESTAMP(DATETIME_ADD("{{ end_date }}", INTERVAL 1 DAY)) + {%- endif %} + WINDOW w AS ( PARTITION BY id, event_timestamp ORDER BY event_timestamp DESC )), + {{ feature_group.temp_table }} AS ( + SELECT * FROM raw_{{ feature_group.temp_table }} WHERE rownum = 1 ) + {% endfor %} +SELECT + {{ feature_groups[0].temp_table }}.id, + {{ feature_groups[0].temp_table }}.event_timestamp + {% for feature_group in feature_groups -%} + {% for feature in feature_group.features -%} + {{ comma() }}{{ feature_group.temp_table }}.{{ feature.column }} + {% endfor %} + {%- endfor %} +FROM + {{ feature_groups[0].temp_table }} +{% for feature_group in feature_groups -%} +{% if loop.index > 1 -%} +FULL JOIN + {{ feature_group.temp_table }} +ON + {{ feature_groups[0].temp_table }}.id = {{ feature_group.temp_table }}.id + {% if feature_group.granularity != "none" -%} + AND TIMESTAMP_TRUNC({{feature_groups[0].temp_table}}.event_timestamp, {{ feature_group.granularity|upper }}) = {{ feature_group.temp_table }}.event_timestamp + {%- endif %} +{% endif %} +{%- endfor %} +{%- if limit is not none %} +LIMIT {{ limit }} +{%- endif %} \ No newline at end of file diff --git a/sdk/python/setup.py b/sdk/python/setup.py index 38ca55c1e9f..2343b5ce69b 100644 --- a/sdk/python/setup.py +++ b/sdk/python/setup.py @@ -17,6 +17,7 @@ 'google-cloud-storage>=1.13.0', 'googleapis-common-protos>=1.5.5', 'grpcio>=1.16.1', + 'jinja2', 'pandas', 'protobuf>=3.0.0', 'PyYAML', diff --git a/sdk/python/tests/sdk/resources/test_feature_set.py b/sdk/python/tests/sdk/resources/test_feature_set.py index 7e16d3a5b79..2c51a57e793 100644 --- a/sdk/python/tests/sdk/resources/test_feature_set.py +++ b/sdk/python/tests/sdk/resources/test_feature_set.py @@ -29,10 +29,10 @@ def test_creation(self): fake_table = "fake_table" with pytest.raises(TypeError, match="table must be a BigQuery table type"): - DatasetInfo(fake_table) + DatasetInfo("ds_name", fake_table) table = Table.from_string("project_id.dataset_id.table_id") - dataset = DatasetInfo(table) + dataset = DatasetInfo("ds_name", table) assert dataset._table == table def test_download_df(self, mocker): @@ -44,7 +44,7 @@ def test_download_df(self, mocker): staging_path = "gs://temp/" staging_file_name = "temp_0" table = Table.from_string("project_id.dataset_id.table_id") - dataset_info = DatasetInfo(table) + dataset_info = DatasetInfo("ds_name", table) exp_staging_path = os.path.join(staging_path, staging_file_name) mocker.patch.object(dataset_info._bq_client, "extract_table", @@ -73,7 +73,7 @@ def test_download_json(self, mocker): def test_download_invalid_staging_url(self): table = Table.from_string("project_id.dataset_id.table_id") - dataset = DatasetInfo(table) + dataset = DatasetInfo("ds_name", table) with pytest.raises(ValueError, match="staging_uri must be a directory in " @@ -90,7 +90,7 @@ def _test_download_file(self, mocker, type): staging_file_name = "temp_0" dst_path = "/tmp/myfile.csv" table = Table.from_string("project_id.dataset_id.table_id") - dataset_info = DatasetInfo(table) + dataset_info = DatasetInfo("ds_name", table) mock_blob = _Blob() mocker.patch.object(mock_blob, "download_to_filename") diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 0cd0987850b..1b833958227 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -1,14 +1,16 @@ import pytest -from unittest.mock import patch import grpc from datetime import datetime import pandas as pd from google.protobuf.timestamp_pb2 import Timestamp +from google.cloud.bigquery.table import Table import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs -import feast.specs.StorageSpec_pb2 as storage_pb +from feast.specs.StorageSpec_pb2 import StorageSpec +from feast.specs.FeatureSpec_pb2 import FeatureSpec, DataStores, DataStore +from feast.specs.ImportSpec_pb2 import ImportSpec from feast.core.CoreService_pb2 import CoreServiceTypes from feast.core.JobService_pb2 import JobServiceTypes from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange, Entity, FeatureValueList @@ -16,7 +18,6 @@ import feast.serving.Serving_pb2 as serving_pb from feast.sdk.utils.types import Granularity -from feast.specs.ImportSpec_pb2 import ImportSpec from feast.sdk.client import Client from feast.sdk.importer import Importer from feast.sdk.resources.feature import Feature @@ -25,14 +26,17 @@ from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_set import FeatureSet from feast.sdk.utils.types import ServingRequestType +from feast.sdk.utils.bq_util import TrainingDatasetCreator -@pytest.fixture -def client(): - return Client(core_url="some.uri", serving_url="some.serving.uri") +class TestClient(object): + default_bq_dataset = "project.dataset" + @pytest.fixture + def client(self): + return Client(core_url="some.uri", serving_url="some.serving.uri", + bq_dataset=self.default_bq_dataset) -class TestClient(object): def test_apply_single_feature(self, client, mocker): my_feature = Feature(name="test", entity="test", granularity=Granularity.NONE) @@ -120,26 +124,77 @@ def test_run_job_no_staging(self, client, mocker): job_id = client.run(importer) assert job_id == "myjob12312" - # def test_create_feature_set(self, client, mocker): - # entity_name = "myentity" - # granularity = Granularity.DAY - # features = ["feature1", "feature2", "feature3"] - # wh_store_id = "BIGQUERY1" - # project = "test_project" - # dataset = "test_dataset" - # - # core_stub = core.CoreServiceStub(grpc.insecure_channel("")) - # feature_specs = self._create_feature_specs(entity_name, granularity, - # features, wh_store_id) - # storage_specs = self._create_bq_spec(wh_store_id, project, dataset) - # mocker.patch.object(core_stub, 'GetFeatures', - # return_value=feature_specs) - # mocker.patch.object(core_stub, 'GetStorage', - # return_value=storage_specs) - # - # client.create_feature_set(entity_name, - # granularity, - # features) + def test_create_training_dataset_invalid_args(self, client): + feature_set = FeatureSet("entity", ["entity.none.feature1"]) + # empty feature set + with pytest.raises(ValueError, match="feature set is empty"): + inv_feature_set = FeatureSet("entity", []) + client.create_training_dataset(inv_feature_set, "2018-12-01", + "2018-12-02") + # invalid start date + with pytest.raises(ValueError, match="Incorrect date format, should be YYYY-MM-DD"): + client.create_training_dataset(feature_set, "20181201", + "2018-12-02") + # invalid end date + with pytest.raises(ValueError, match="Incorrect date format, should be YYYY-MM-DD"): + client.create_training_dataset(feature_set, "2018-12-01", + "20181202") + # start date > end date + with pytest.raises(ValueError, match="end_date is before start_date"): + client.create_training_dataset(feature_set, "2018-12-02", + "2018-12-01") + # invalid limit + with pytest.raises(ValueError, match="limit is not a positive integer"): + client.create_training_dataset(feature_set, "2018-12-01", + "2018-12-02", -1) + + def test_create_training_dataset(self, client, mocker): + bq_id = "BIGQUERY1" + feature1 = "myentity.none.feature1" + feature2 = "myentity.hour.feature2" + feature1_spec = self._create_feature_spec(feature1, bq_id) + feature2_spec = self._create_feature_spec(feature2, bq_id) + bq_spec = self._create_bq_spec(bq_id, "project", "dataset") + + feature_set = FeatureSet("myentity", [feature1, feature2]) + start_date = "2018-12-01" + end_date = "2018-12-05" + limit = 1000 + destination = "project.dataset.destination" + dataset_name = "my_training_set" + + core_stub = core.CoreServiceStub(grpc.insecure_channel("")) + training_crt = TrainingDatasetCreator() + mocker.patch.object(core_stub, 'GetFeatures', + return_value=CoreServiceTypes.GetFeaturesResponse( + features=[feature1_spec, feature2_spec])) + mocker.patch.object(core_stub, 'GetStorage', + return_value=CoreServiceTypes.GetStorageResponse( + storageSpecs=[bq_spec])) + mocker.patch.object(training_crt, "create_training_dataset", + return_value=Table.from_string(destination)) + + client._core_service_stub = core_stub + client._training_creator = training_crt + + ds_info = client.create_training_dataset(feature_set, start_date, + end_date, limit=limit, + destination=destination, + dataset_name=dataset_name) + training_crt.create_training_dataset\ + .assert_called_once_with([(feature1, + "project.dataset.myentity_none"), + (feature2, + "project.dataset.myentity_hour")], + start_date, + end_date, + limit, + destination) + assert ds_info._table.project == "project" + assert ds_info._table.dataset_id == "dataset" + assert ds_info._table.table_id == "destination" + + assert ds_info.name == dataset_name def test_build_serving_request_last(self, client): feature_set = FeatureSet("entity", @@ -235,13 +290,12 @@ def _create_query_features_response(self, entity_name, entities, features): return response - def _create_feature_specs(self, entity, granularity, features, wh_id): - return + def _create_feature_spec(self, feature_id, wh_id): + wh_store = DataStore(id=wh_id) + datastores = DataStores(warehouse=wh_store) + return FeatureSpec(id=feature_id, + dataStores=datastores) def _create_bq_spec(self, id, project, dataset): - return storage_pb.StorageSpec(id=id, type="bigquery", options={ - "project": project, "dataset": dataset}) - - # def test_run_job_require_staging(self, client, mocker): - # importer = Importer() - # mocker.patch.object(importer, + return StorageSpec(id=id, type="bigquery", options={ + "project": project, "dataset": dataset}) \ No newline at end of file diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py new file mode 100644 index 00000000000..3606e91a950 --- /dev/null +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -0,0 +1,53 @@ +from feast.sdk.utils.bq_util import TrainingDatasetCreator, get_table_name +from feast.specs.StorageSpec_pb2 import StorageSpec +import pytest + + +def test_get_table_name(): + project_name = "my_project" + dataset_name = "my_dataset" + feature_id = "myentity.none.feature1" + storage_spec = StorageSpec(id="BIGQUERY1", type="bigquery", + options={"project": project_name, + "dataset": dataset_name}) + assert get_table_name(feature_id, storage_spec) == \ + "my_project.my_dataset.myentity_none" + + +def test_get_table_name_not_bq(): + feature_id = "myentity.none.feature1" + storage_spec = StorageSpec(id="REDIS1", type="redis") + with pytest.raises(ValueError, match="storage spec is not BigQuery storage spec"): + get_table_name(feature_id, storage_spec) + + +class TestTrainingDatasetCreator(object): + def test_simple(self): + t = TrainingDatasetCreator() + assert t._sql_template is not None + + def test_group_features(self): + f = [("entity.none.feature1", "project.dataset.table1"), + ("entity.none.feature2", "project.dataset.table1"), + ("entity.none.feature3", "project.dataset.table1"), + ("entity.minute.feature1", "project.dataset.table1"), + ("entity.hour.feature1", "project.dataset.table1"), + ("entity.day.feature1", "project.dataset.table1"), + ("entity.second.feature1", "project.dataset.table1")] + + t = TrainingDatasetCreator() + feature_groups = t._group_features(f) + assert feature_groups[0].granularity == "second" + assert feature_groups[1].granularity == "minute" + assert feature_groups[2].granularity == "hour" + assert feature_groups[3].granularity == "day" + assert feature_groups[4].granularity == "none" + + for feature_group in feature_groups: + assert feature_group.table_id == "project.dataset.table1" + + assert len(feature_groups[0].features) == 1 + assert len(feature_groups[1].features) == 1 + assert len(feature_groups[2].features) == 1 + assert len(feature_groups[3].features) == 1 + assert len(feature_groups[4].features) == 3 \ No newline at end of file From 6387254ecada5b53ba5ccb9167b328961e29e382 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 2 Jan 2019 00:05:05 +0800 Subject: [PATCH 23/50] Deduplicate requesting storage specs --- sdk/python/feast/sdk/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index f1671600997..18e7fe17f62 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -346,7 +346,7 @@ def _get_feature_spec_map(self, ids): def _get_storage_spec_map(self, ids): get_storage_request = CoreServiceTypes.GetStorageRequest( - ids=ids + ids=set(ids) ) get_storage_resp = self._core_service_stub.GetStorage( get_storage_request) From 0bf094d4472e2d205cfabde1934ef731d603af56 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 2 Jan 2019 00:05:28 +0800 Subject: [PATCH 24/50] Use TableReference when defining destination table --- sdk/python/feast/sdk/utils/bq_util.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index a96f2d44054..2726e1b92d5 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -4,7 +4,7 @@ import pandas as pd from google.cloud.bigquery.client import Client as BQClient -from google.cloud.bigquery.table import Table +from google.cloud.bigquery.table import Table, TableReference from google.cloud.bigquery.job import QueryJobConfig from jinja2 import Template @@ -74,13 +74,13 @@ def create_training_dataset(self, feature_table_tuples, query = self._create_query(feature_table_tuples, start_date, end_date, limit) query_config = QueryJobConfig() - query_config.destination = Table.from_string(destination) + query_config.destination = TableReference.from_string(destination) query_job = self._bq.query(query, query_config) # wait until completion query_job.result() - return query_config.destination + return Table.from_string(destination) def _create_query(self, feature_table_tuples, start_date, end_date, limit): From 5f7bc7b050bf4bf8e1b92685eab1261a01f24924 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 2 Jan 2019 10:18:18 +0800 Subject: [PATCH 25/50] Fix downloading csv from GCS --- sdk/python/feast/sdk/utils/gs_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index a692e1bedce..04173625b09 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -23,8 +23,8 @@ def gs_to_df(path): temp_file_path = 'temp{}.csv'.format(int(round(time.time() * 1000))) with open(temp_file_path, 'wb') as temp_file: blob.download_to_file(temp_file) - df = pd.read_csv(temp_file_path) - os.remove(temp_file_path) + df = pd.read_csv(temp_file_path) + os.remove(temp_file_path) return df def df_to_gs(df, path): From ada0335d675424da35b4e71836fd320f1b51756a Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 2 Jan 2019 15:08:43 +0800 Subject: [PATCH 26/50] Add tests and refactoring --- sdk/python/feast/sdk/utils/bq_util.py | 25 ++++ .../tests/sdk/resources/test_feature.py | 1 - .../tests/sdk/resources/test_feature_group.py | 1 - .../tests/sdk/resources/test_feature_set.py | 3 +- sdk/python/tests/sdk/test_client.py | 114 +++++++++++++----- sdk/python/tests/sdk/utils/test_bq_utils.py | 17 ++- 6 files changed, 129 insertions(+), 32 deletions(-) diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index 2726e1b92d5..d9faed223d7 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -71,6 +71,22 @@ def __init__(self): def create_training_dataset(self, feature_table_tuples, start_date, end_date, limit, destination): + """ + Create training dataset for given list of feature and its table + between start_date and end_date. + + Args: + feature_table_tuples: [(str, str)] list of tuple of + feature id and it's BQ table ID + start_date: (str) start date of the training dataset + end_date: (str) end date of the training dataset + limit: (int) maximum number of row returned + destination: (str) fully qualified BigQuery table ID of the + destination + + Returns: (google.cloud.bigquery.table.Table) Bigquery table instance + + """ query = self._create_query(feature_table_tuples, start_date, end_date, limit) query_config = QueryJobConfig() @@ -92,23 +108,32 @@ def _create_query(self, feature_table_tuples, start_date, def _group_features(self, feature_table_tuples): feature_groups = [] + # (table_id, granularity, feature id) temp = [((table_id, feature_id.split(".")[1]), feature_id) for (feature_id, table_id) in feature_table_tuples] it = itertools.groupby(temp, operator.itemgetter(0)) for key, subiter in it: features = [_Feature(item[1]) for item in subiter] feature_groups.append(_FeatureGroup(key[0], key[1], features)) + # sort by granularity feature_groups.sort() return feature_groups class _Feature: + """ + Helper class for templating a feature in training query + """ def __init__(self, feature_id): self.name = feature_id.split(".")[2] self.column = feature_id.replace(".", "_") class _FeatureGroup: + """ + Helper class for templating a group of feature having same table_id and + granularity in training query + """ def __init__(self, table_id, granularity, features): self.table_id = table_id self.temp_table = table_id.replace(".", "_").replace("-", "_") diff --git a/sdk/python/tests/sdk/resources/test_feature.py b/sdk/python/tests/sdk/resources/test_feature.py index a4199e1c437..1cb970dcef4 100644 --- a/sdk/python/tests/sdk/resources/test_feature.py +++ b/sdk/python/tests/sdk/resources/test_feature.py @@ -1,4 +1,3 @@ -import pytest from feast.sdk.resources.feature import Feature from feast.sdk.resources.storage import Datastore from feast.sdk.utils.types import ValueType, Granularity diff --git a/sdk/python/tests/sdk/resources/test_feature_group.py b/sdk/python/tests/sdk/resources/test_feature_group.py index 039434bd7b5..606c4f2f14e 100644 --- a/sdk/python/tests/sdk/resources/test_feature_group.py +++ b/sdk/python/tests/sdk/resources/test_feature_group.py @@ -1,4 +1,3 @@ -import pytest from feast.sdk.resources.feature_group import FeatureGroup class TestFeatureGroupSpec(object): diff --git a/sdk/python/tests/sdk/resources/test_feature_set.py b/sdk/python/tests/sdk/resources/test_feature_set.py index 2c51a57e793..5fb70fe7b4a 100644 --- a/sdk/python/tests/sdk/resources/test_feature_set.py +++ b/sdk/python/tests/sdk/resources/test_feature_set.py @@ -111,8 +111,7 @@ def _test_download_file(self, mocker, type): mock_blob.download_to_filename.assert_called_once_with(dst_path) def _stop_time(self, mocker): - mocker.patch('time.time') - time.time.return_value = 0 + mocker.patch('time.time', return_value=0) class _Job(): diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 1b833958227..6bfa039a0a5 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -3,6 +3,7 @@ import grpc from datetime import datetime import pandas as pd +from pandas.util.testing import assert_frame_equal from google.protobuf.timestamp_pb2 import Timestamp from google.cloud.bigquery.table import Table @@ -13,7 +14,8 @@ from feast.specs.ImportSpec_pb2 import ImportSpec from feast.core.CoreService_pb2 import CoreServiceTypes from feast.core.JobService_pb2 import JobServiceTypes -from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange, Entity, FeatureValueList +from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, \ + TimestampRange, Entity, FeatureValueList from feast.types.Value_pb2 import ValueList, TimestampList, Int32List import feast.serving.Serving_pb2 as serving_pb @@ -132,11 +134,13 @@ def test_create_training_dataset_invalid_args(self, client): client.create_training_dataset(inv_feature_set, "2018-12-01", "2018-12-02") # invalid start date - with pytest.raises(ValueError, match="Incorrect date format, should be YYYY-MM-DD"): + with pytest.raises(ValueError, + match="Incorrect date format, should be YYYY-MM-DD"): client.create_training_dataset(feature_set, "20181201", "2018-12-02") # invalid end date - with pytest.raises(ValueError, match="Incorrect date format, should be YYYY-MM-DD"): + with pytest.raises(ValueError, + match="Incorrect date format, should be YYYY-MM-DD"): client.create_training_dataset(feature_set, "2018-12-01", "20181202") # start date > end date @@ -144,7 +148,8 @@ def test_create_training_dataset_invalid_args(self, client): client.create_training_dataset(feature_set, "2018-12-02", "2018-12-01") # invalid limit - with pytest.raises(ValueError, match="limit is not a positive integer"): + with pytest.raises(ValueError, + match="limit is not a positive integer"): client.create_training_dataset(feature_set, "2018-12-01", "2018-12-02", -1) @@ -181,27 +186,71 @@ def test_create_training_dataset(self, client, mocker): end_date, limit=limit, destination=destination, dataset_name=dataset_name) - training_crt.create_training_dataset\ + training_crt.create_training_dataset \ .assert_called_once_with([(feature1, "project.dataset.myentity_none"), (feature2, "project.dataset.myentity_hour")], - start_date, - end_date, - limit, - destination) + start_date, end_date, limit, destination) assert ds_info._table.project == "project" assert ds_info._table.dataset_id == "dataset" assert ds_info._table.table_id == "destination" - assert ds_info.name == dataset_name + def test_create_training_dataset_no_destination(self, client, mocker): + mocker.patch('time.time', return_value=0) + bq_id = "BIGQUERY1" + feature1 = "myentity.none.feature1" + feature2 = "myentity.hour.feature2" + feature1_spec = self._create_feature_spec(feature1, bq_id) + feature2_spec = self._create_feature_spec(feature2, bq_id) + bq_spec = self._create_bq_spec(bq_id, "project", "dataset") + + feature_set = FeatureSet("myentity", [feature1, feature2]) + start_date = "2018-12-01" + end_date = "2018-12-05" + limit = 1000 + exp_dst = ".".join([self.default_bq_dataset, + "myentity_20181201_20181205_0"]) + + core_stub = core.CoreServiceStub(grpc.insecure_channel("")) + training_crt = TrainingDatasetCreator() + mocker.patch.object(core_stub, 'GetFeatures', + return_value=CoreServiceTypes.GetFeaturesResponse( + features=[feature1_spec, feature2_spec])) + mocker.patch.object(core_stub, 'GetStorage', + return_value=CoreServiceTypes.GetStorageResponse( + storageSpecs=[bq_spec])) + mocker.patch.object(training_crt, "create_training_dataset", + return_value=Table.from_string(exp_dst)) + + client._core_service_stub = core_stub + client._training_creator = training_crt + + ds_info = client.create_training_dataset(feature_set, start_date, + end_date, limit=limit, + destination=None, + dataset_name=None) + + training_crt.create_training_dataset \ + .assert_called_once_with([(feature1, + "project.dataset.myentity_none"), + (feature2, + "project.dataset.myentity_hour")], + start_date, end_date, limit, exp_dst) + exp_dataset_name = exp_dst.split(".")[2] + assert ds_info._table.project == "project" + assert ds_info._table.dataset_id == "dataset" + assert ds_info._table.table_id == exp_dataset_name + assert ds_info.name == exp_dataset_name + def test_build_serving_request_last(self, client): feature_set = FeatureSet("entity", ["entity.none.feat1", "entity.none.feat2"]) req = client._build_serving_request(feature_set, ["1", "2", "3"], - ServingRequestType.LAST, None, None) + ServingRequestType.LAST, None, + None) expected_request_detail = \ [RequestDetail(featureId=feat_id, type=serving_pb.LAST) for feat_id in ["entity.none.feat1", "entity.none.feat2"]] @@ -221,7 +270,8 @@ def test_build_serving_request_list(self, client): [RequestDetail(featureId=feat_id, type=serving_pb.LIST, limit=2) for feat_id in ["entity.none.feat1", "entity.none.feat2"]] expected_ts_range = \ - TimestampRange(start=Timestamp(seconds=10), end=Timestamp(seconds=11)) + TimestampRange(start=Timestamp(seconds=10), + end=Timestamp(seconds=11)) expected = QueryFeatures.Request(entityName="entity", entityId=["1", "2", "3"], requestDetails=expected_request_detail, @@ -239,36 +289,44 @@ def test_serving_response_to_df(self, client): "feat2": [(3, Timestamp(seconds=10))]}], features=["feat1", "feat2"] ) - df = client._response_to_df(response) expected_df = pd.DataFrame({'entity': ["1", "2"], 'timestamp': [datetime.fromtimestamp(10), datetime.fromtimestamp(10)], 'feat1': [3, 3], - 'feat2': [1, 3]}) - for col in expected_df.columns: - assert df[col].equals(expected_df[col]) + 'feat2': [1, 3]})\ + .reset_index(drop=True) + df = client._response_to_df(response) \ + .sort_values(['entity', 'timestamp']) \ + .reset_index(drop=True)[expected_df.columns] + assert_frame_equal(df, expected_df) def test_serving_response_to_df_multiple(self, client): response = self._create_query_features_response( entity_name="entity", entities=[{"id": "1", - "feat1": [(3, Timestamp(seconds=10)), (4, Timestamp(seconds=11))], - "feat2": [(1, Timestamp(seconds=10)), (3, Timestamp(seconds=11))]}, + "feat1": [(3, Timestamp(seconds=10)), + (4, Timestamp(seconds=11))], + "feat2": [(1, Timestamp(seconds=10)), + (3, Timestamp(seconds=11))]}, {"id": "2", - "feat1": [(4, Timestamp(seconds=10)), (6, Timestamp(seconds=11))], - "feat2": [(2, Timestamp(seconds=10)), (5, Timestamp(seconds=11))]}], + "feat1": [(4, Timestamp(seconds=10)), + (6, Timestamp(seconds=11))], + "feat2": [(2, Timestamp(seconds=10)), + (5, Timestamp(seconds=11))]}], features=["feat1", "feat2"] ) - df = client._response_to_df(response) expected_df = pd.DataFrame({'entity': ["1", "1", "2", "2"], 'timestamp': [datetime.fromtimestamp(10), datetime.fromtimestamp(11), datetime.fromtimestamp(10), datetime.fromtimestamp(11)], 'feat1': [3, 4, 4, 6], - 'feat2': [1, 3, 2, 5]}) - for col in expected_df.columns: - assert df[col].equals(expected_df[col]) + 'feat2': [1, 3, 2, 5]}) \ + .reset_index(drop=True) + df = client._response_to_df(response) \ + .sort_values(['entity', 'timestamp']) \ + .reset_index(drop=True)[expected_df.columns] + assert_frame_equal(df, expected_df) def _create_query_features_response(self, entity_name, entities, features): # entities should be in the form: @@ -281,9 +339,11 @@ def _create_query_features_response(self, entity_name, entities, features): for feature in features: features_map[feature] = FeatureValueList( valueList=ValueList( - int32List=Int32List(val=[v[0] for v in entity[feature]]) + int32List=Int32List( + val=[v[0] for v in entity[feature]]) ), - timestampList=TimestampList(val=[v[1] for v in entity[feature]]) + timestampList=TimestampList( + val=[v[1] for v in entity[feature]]) ) entity_pb = serving_pb.Entity(features=features_map) response.entities[entity["id"]].CopyFrom(entity_pb) @@ -298,4 +358,4 @@ def _create_feature_spec(self, feature_id, wh_id): def _create_bq_spec(self, id, project, dataset): return StorageSpec(id=id, type="bigquery", options={ - "project": project, "dataset": dataset}) \ No newline at end of file + "project": project, "dataset": dataset}) diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py index 3606e91a950..57e626a44b3 100644 --- a/sdk/python/tests/sdk/utils/test_bq_utils.py +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -50,4 +50,19 @@ def test_group_features(self): assert len(feature_groups[1].features) == 1 assert len(feature_groups[2].features) == 1 assert len(feature_groups[3].features) == 1 - assert len(feature_groups[4].features) == 3 \ No newline at end of file + assert len(feature_groups[4].features) == 3 + + def test_create_query(self): + f = [("entity.none.feature1", "project.dataset.table1"), + ("entity.none.feature2", "project.dataset.table1"), + ("entity.none.feature3", "project.dataset.table1"), + ("entity.minute.feature1", "project.dataset.table1"), + ("entity.hour.feature1", "project.dataset.table1"), + ("entity.day.feature1", "project.dataset.table1"), + ("entity.second.feature1", "project.dataset.table1")] + start = "2018-12-01" + end = "2018-12-02" + + t = TrainingDatasetCreator() + query = t._create_query(f, start, end, None) + assert "LIMIT" not in query From 5dbeb067e515ab9e1c3720c7b7a57a30d05008d0 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 2 Jan 2019 16:05:09 +0800 Subject: [PATCH 27/50] Refactor and clean move classes locations --- sdk/python/feast/sdk/client.py | 40 ++++++-- sdk/python/feast/sdk/importer.py | 77 +++++++++------- sdk/python/feast/sdk/resources/entity.py | 13 +-- sdk/python/feast/sdk/resources/feature.py | 92 +++++++++++++------ .../feast/sdk/resources/feature_group.py | 38 ++++---- sdk/python/feast/sdk/resources/storage.py | 40 +++----- sdk/python/feast/sdk/utils/gs_utils.py | 4 + sdk/python/feast/sdk/utils/print_utils.py | 4 +- sdk/python/feast/sdk/utils/types.py | 29 +----- sdk/python/feast/sdk/utils/validation.py | 0 .../tests/sdk/resources/test_feature.py | 6 +- sdk/python/tests/sdk/test_client.py | 5 +- sdk/python/tests/sdk/test_importer.py | 13 +-- 13 files changed, 197 insertions(+), 164 deletions(-) delete mode 100644 sdk/python/feast/sdk/utils/validation.py diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 18e7fe17f62..28ef7e872e5 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -2,20 +2,21 @@ Main interface for users to interact with the Core API. """ +import enum import grpc import os import pandas as pd -import time import re +import time from google.protobuf.timestamp_pb2 import Timestamp from datetime import datetime import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs +import feast.serving.Serving_pb2_grpc as serving from feast.core.JobService_pb2 import JobServiceTypes from feast.core.CoreService_pb2 import CoreServiceTypes from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange -import feast.serving.Serving_pb2_grpc as serving from feast.sdk.env import FEAST_CORE_URL_ENV_KEY, FEAST_SERVING_URL_ENV_KEY from feast.sdk.resources.feature import Feature @@ -24,10 +25,18 @@ from feast.sdk.resources.feature_group import FeatureGroup from feast.sdk.resources.feature_set import DatasetInfo from feast.sdk.utils.print_utils import spec_to_yaml -from feast.sdk.utils.types import ServingRequestType from feast.sdk.utils.bq_util import get_table_name, TrainingDatasetCreator +class ServingRequestType(enum.Enum): + """ + Requesty type for serving api + """ + LAST = 0 + """ Get last value of a feature """ + LIST = 1 + """ Get list of value of a feature """ + class Client: def __init__(self, core_url=None, serving_url=None, bq_dataset=None, @@ -100,6 +109,19 @@ def apply(self, obj): def run(self, importer, name_override=None, apply_entity=False, apply_features=False): + """ + Run an import job + Args: + importer (feast.sdk.importer.Importer): importer instance + name_override (str, optional): Job name override + apply_entity (bool, optional): (default: False) create/update + entity inside importer + apply_features (bool, optional): (default: False) create/update + features inside importer + + Returns: + (str) job ID of the import job + """ request = JobServiceTypes.SubmitImportJobRequest( importSpec=importer.spec ) @@ -190,10 +212,6 @@ def create_training_dataset(self, feature_set, start_date, end_date, return DatasetInfo(dataset_name, table) - def close(self): - self.__core_channel.close() - self.__serving_channel.close() - def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequestType.LAST, ts_range=None, limit=10): """Get data from the feast serving layer. You can either retrieve the @@ -226,6 +244,14 @@ def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequest return self._response_to_df(self._serving_service_stub .QueryFeatures(request)) + def close(self): + """ + Close underlying connection to Feast's core and serving end points. + + """ + self.__core_channel.close() + self.__serving_channel.close() + def _build_serving_request(self, feature_set, entity_keys, request_type, ts_range, limit): """Helper function to build serving service request.""" diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index f577f07583f..17bb4d96982 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -2,7 +2,7 @@ import ntpath import time import datetime -from feast.specs.ImportSpec_pb2 import ImportSpec, Schema, Field +from feast.specs.ImportSpec_pb2 import ImportSpec, Schema from feast.sdk.utils.gs_utils import gs_to_df, is_gs_path, df_to_gs from feast.sdk.utils.print_utils import spec_to_yaml from feast.sdk.utils.types import dtype_to_value_type @@ -13,6 +13,7 @@ from google.protobuf.timestamp_pb2 import Timestamp from google.cloud import bigquery + class Importer: def __init__(self, specs, df, properties): self._properties = properties @@ -21,47 +22,47 @@ def __init__(self, specs, df, properties): @property def source(self): - '''str: source of the data''' + """str: source of the data""" return self._properties.get("source") @property def size(self): - '''str: number of rows in the data''' + """str: number of rows in the data""" return self._properties.get("size") @property def require_staging(self): - '''bool: whether the data needs to be staged''' + """bool: whether the data needs to be staged""" return self._properties.get("require_staging") @property def remote_path(self): - '''str: remote path of the file''' + """str: remote path of the file""" return self._properties.get("remote_path") @property def spec(self): - '''feast.specs.ImportSpec_pb2.ImportSpec: - import spec for this dataset''' + """feast.specs.ImportSpec_pb2.ImportSpec: + import spec for this dataset""" return self._specs.get("import") @property def features(self): - '''list[feast.specs.FeatureSpec_pb2.FeatureSpec]: - list of features associated with this dataset''' + """list[feast.specs.FeatureSpec_pb2.FeatureSpec]: + list of features associated with this dataset""" return self._specs.get("features") @property def entity(self): - '''feast.specs.EntitySpec_pb2.EntitySpec: - entity associated with this dataset''' + """feast.specs.EntitySpec_pb2.EntitySpec: + entity associated with this dataset""" return self._specs.get("entity") @classmethod def from_csv(cls, path, entity, granularity, owner, staging_location=None, id_column=None, feature_columns=None, timestamp_column=None, timestamp_value=None): - '''Creates an importer from a given csv dataset. + """Creates an importer from a given csv dataset. This file can be either local or remote (in gcs). If it's a local file then staging_location must be determined. @@ -84,7 +85,7 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, Returns: Importer: the importer for the dataset provided. - ''' + """ import_spec_options = {"format": "csv"} import_spec_options["path"], require_staging = _get_remote_location(path, staging_location) @@ -107,7 +108,7 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, def from_bq(cls, bq_path, entity, granularity, owner, limit=10, id_column=None, feature_columns=None, timestamp_column=None, timestamp_value=None): - '''Creates an importer from a given bigquery table. + """Creates an importer from a given bigquery table. Args: bq_path (str): path to bigquery table, in the format @@ -129,7 +130,7 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, Returns: Importer: the importer for the dataset provided. - ''' + """ cli = bigquery.Client() project, dataset_id, table_id = bq_path.split(".") @@ -157,7 +158,7 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, def from_df(cls, df, entity, granularity, owner, staging_location, id_column=None, feature_columns=None, timestamp_column=None, timestamp_value=None): - '''Creates an importer from a given pandas dataframe. + """Creates an importer from a given pandas dataframe. To import a file from a dataframe, the data will have to be staged. Args: @@ -179,7 +180,7 @@ def from_df(cls, df, entity, granularity, owner, staging_location, Returns: Importer: the importer for the dataset provided. - ''' + """ tmp_file_name = ("tmp_{}_{}.csv" .format(entity, int(round(time.time() * 1000)))) import_spec_options = { @@ -199,31 +200,32 @@ def from_df(cls, df, entity, granularity, owner, staging_location, return cls(specs, df, props) def stage(self): - '''Stage the data to its remote location - ''' + """Stage the data to its remote location + """ if not self.require_staging: return df_to_gs(self.df, self.remote_path) def describe(self): - '''Print out the import spec. - ''' + """Print out the import spec. + """ print(spec_to_yaml(self.spec)) def dump(self, path): - '''Dump the import spec to the provided path + """Dump the import spec to the provided path Arguments: path (str): path to dump the spec to - ''' + """ with open(path, 'w') as f: f.write(spec_to_yaml(self.spec)) print("Saved spec to {}".format(path)) + def _properties(source, size, require_staging, remote): - '''Args: + """Args: source (str): source of the data size (int): number of rows of the dataset require_staging (bool): whether the file requires staging @@ -231,7 +233,7 @@ def _properties(source, size, require_staging, remote): Returns: dict: set of importer properties - ''' + """ return { "source": source, @@ -240,15 +242,16 @@ def _properties(source, size, require_staging, remote): "remote_path": remote } + def _specs(iport, entity, features): - '''Args: + """Args: iport {} -- [description] entity {[type]} -- [description] features {[type]} -- [description] Returns: [type] -- [description] - ''' + """ return { "import": iport, @@ -256,14 +259,15 @@ def _specs(iport, entity, features): "entity": entity } + def _get_remote_location(path, staging_location): - '''Get the remote location of the file + """Get the remote location of the file Args: path (str): raw path of the file staging_location (str): path to stage the file - ''' + """ if (is_gs_path(path)): return path, False @@ -279,7 +283,7 @@ def _get_remote_location(path, staging_location): def _detect_schema_and_feature(entity, granularity, owner, id_column, feature_columns, timestamp_column, timestamp_value, df): - '''Create schema object for import spec. + """Create schema object for import spec. Args: entity (str): entity name @@ -294,7 +298,7 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, Raises: Exception -- [description] - ''' + """ schema = Schema() if (id_column is not None): @@ -339,8 +343,9 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, return schema, [features[k] for k in features] + def _create_feature(column, entity, granularity, owner): - '''Create Feature object. + """Create Feature object. Args: column (pandas.Series): data column @@ -351,7 +356,7 @@ def _create_feature(column, entity, granularity, owner): Returns: feast.sdk.resources.Feature: feature for this data column - ''' + """ return Feature( name=column.name, entity=entity, @@ -359,8 +364,9 @@ def _create_feature(column, entity, granularity, owner): owner=owner, value_type=dtype_to_value_type(column.dtype)) + def _create_import(import_type, options, entity, schema): - '''Create an import spec. + """Create an import spec. Args: import_type (str): import type @@ -370,7 +376,7 @@ def _create_import(import_type, options, entity, schema): Returns: feast.specs.ImportSpec_pb2.ImportSpec: import spec - ''' + """ return ImportSpec( type=import_type, @@ -378,6 +384,7 @@ def _create_import(import_type, options, entity, schema): entities=[entity], schema=schema) + def _remove_safely(columns, column): try: columns.remove(column) diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py index 61a0d395d6e..c7488c5c27a 100644 --- a/sdk/python/feast/sdk/resources/entity.py +++ b/sdk/python/feast/sdk/resources/entity.py @@ -1,11 +1,8 @@ -import yaml import json - -import feast.specs.EntitySpec_pb2 as entity_pb +import yaml +from feast.specs.EntitySpec_pb2 import EntitySpec from feast.sdk.utils.print_utils import spec_to_yaml - -from google.protobuf.json_format import MessageToJson, Parse - +from google.protobuf.json_format import Parse ''' Wrapper class for feast entity @@ -20,7 +17,7 @@ def __init__(self, name="", description="", tags=[]): tags (list[str], optional): defaults to []. list of tags for this entity ''' - self.__spec = entity_pb.EntitySpec(name=name, description=description, + self.__spec = EntitySpec(name=name, description=description, tags=tags) @property @@ -64,7 +61,7 @@ def from_yaml(cls, path): entity = cls() entity.__spec = Parse( json.dumps(content), - entity_pb.EntitySpec(), + EntitySpec(), ignore_unknown_fields=False) return entity diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index 38b71f6cc8f..38aff6d488e 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -1,42 +1,66 @@ import yaml import json - -import feast.specs.FeatureSpec_pb2 as feature_pb - -from feast.sdk.utils.types import ValueType, Granularity +import enum +from feast.specs.FeatureSpec_pb2 import FeatureSpec, DataStores, DataStore from feast.sdk.utils.print_utils import spec_to_yaml from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 -from feast.types.Value_pb2 import ValueType as ValueType_pb2 -from google.protobuf.json_format import MessageToJson, Parse +from google.protobuf.json_format import Parse + + +class Granularity(enum.Enum): + """ + Feature's Granularity + """ + NONE = 0 + DAY = 1 + HOUR = 2 + MINUTE = 3 + SECOND = 4 + + +class ValueType(enum.Enum): + """ + Type of the feature's value + """ + UNKNOWN = 0 + BYTES = 1 + STRING = 2 + INT32 = 3 + INT64 = 4 + DOUBLE = 5 + FLOAT = 6 + BOOL = 7 + TIMESTAMP = 8 + -''' -Wrapper class for feast feature -''' class Feature: + """ + Wrapper class for feast feature + """ def __init__(self, name='', entity='', granularity=Granularity.NONE, owner='', value_type=ValueType.DOUBLE, description='', uri='', warehouse_store=None, serving_store=None, group='', tags=[], options={}): - '''Create feast feature instance. + """Create feast feature instance. Args: name (str): name of feature, in lower snake case entity (str): entity the feature belongs to, in lower case - granularity (int): granularity of the feature, one of - Granularity.Enum + granularity (feast.sdk.resources.feature.Granularity): + granularity of the feature owner (str): owner of the feature - value_type (feast.types.ValueType_pb2.ValueType): defaults to + value_type (feast.sdk.resources.feature.ValueType): defaults to ValueType.DOUBLE. value type of the feature description (str): defaults to "". description of the feature uri (str): defaults to "". uri pointing to the source code or origin of this feature - warehouse_store (feast.specs.FeatureSpec_pb2.Datastore): + warehouse_store (feast.sdk.resources.feature.Datastore): warehouse store id and options - serving_store (feast.specs.FeatureSpec_pb2.Datastore): serving + serving_store (feast.sdk.resources.feature.Datastore): serving store id and options group (str, optional): feature group to inherit from tags (list[str], optional): tags assigned to the feature options (dic, optional): additional options for the feature - ''' + """ id = '.'.join([entity, Granularity_pb2.Enum.Name(granularity.value), name]).lower() @@ -46,9 +70,9 @@ def __init__(self, name='', entity='', granularity=Granularity.NONE, serving_store_spec = serving_store.spec if (warehouse_store is not None): warehouse_store_spec = warehouse_store.spec - data_stores = feature_pb.DataStores(serving = serving_store_spec, + data_stores = DataStores(serving = serving_store_spec, warehouse = warehouse_store_spec) - self.__spec = feature_pb.FeatureSpec(id=id, granularity=granularity.value, + self.__spec = FeatureSpec(id=id, granularity=granularity.value, name=name, entity=entity, owner=owner, dataStores=data_stores, description=description, uri=uri, valueType=value_type.value, group=group, tags=tags, options=options) @@ -172,37 +196,53 @@ def options(self, value): @classmethod def from_yaml(cls, path): - '''Create an instance of feature from a yaml spec file + """Create an instance of feature from a yaml spec file Args: path (str): path to yaml spec file - ''' + """ with open(path, 'r') as file: content = yaml.safe_load(file.read()) feature = cls() feature.__spec = Parse( json.dumps(content), - feature_pb.FeatureSpec(), + FeatureSpec(), ignore_unknown_fields=False) return feature def __str__(self): - '''Print the feature in yaml format + """Print the feature in yaml format Returns: str: yaml formatted representation of the entity - ''' + """ return spec_to_yaml(self.__spec) def dump(self, path): - '''Dump the feature into a yaml file. + """Dump the feature into a yaml file. It will replace content of an existing file. Args: path (str): destination file path - ''' + """ with open(path, 'w') as file: file.write(str(self)) print("Saved spec to {}".format(path)) - \ No newline at end of file + + +class Datastore: + def __init__(self, id, options={}): + self.__spec = DataStore(id = id, options = options) + + def __str__(self): + """Print the datastore in yaml format + + Returns: + str: yaml formatted representation of the Datastore + """ + return spec_to_yaml(self.__spec) + + @property + def spec(self): + return self.__spec diff --git a/sdk/python/feast/sdk/resources/feature_group.py b/sdk/python/feast/sdk/resources/feature_group.py index 00de13bbb21..0a6ada11761 100644 --- a/sdk/python/feast/sdk/resources/feature_group.py +++ b/sdk/python/feast/sdk/resources/feature_group.py @@ -1,37 +1,37 @@ import yaml import json -import feast.specs.FeatureSpec_pb2 as feature_pb -import feast.specs.FeatureGroupSpec_pb2 as feature_group_pb +from feast.specs.FeatureSpec_pb2 import DataStores +from feast.specs.FeatureGroupSpec_pb2 import FeatureGroupSpec from feast.sdk.utils.print_utils import spec_to_yaml +from google.protobuf.json_format import Parse -from google.protobuf.json_format import MessageToJson, Parse -''' -Wrapper class for feast feature group -''' class FeatureGroup(): + """ + Wrapper class for feast feature group + """ def __init__(self, id, tags=[], warehouse_store=None, serving_store=None): - '''Create FeatureGroup instance. + """Create FeatureGroup instance. Args: id (str): id of feature group tags (list): Defaults to []. tags assigned to feature group as well as all children features. - warehouse_store (feast.specs.FeatureSpec_pb2.DataStore): + warehouse_store (feast.sdk.resources.feature.Datastore): warehouse store id and options - serving_store (feast.specs.FeatureSpec_pb2.DataStore): + serving_store (feast.sdk.resources.feature.Datastore): serving store id and options - ''' + """ warehouse_store_spec = None serving_store_spec = None if (serving_store is not None): serving_store_spec = serving_store.spec if (warehouse_store is not None): warehouse_store_spec = warehouse_store.spec - data_stores = feature_pb.DataStores(serving = serving_store_spec, + data_stores = DataStores(serving=serving_store_spec, warehouse = warehouse_store_spec) - self.__spec = feature_group_pb.FeatureGroupSpec(id=id, tags=tags, + self.__spec = FeatureGroupSpec(id=id, tags=tags, dataStores=data_stores) @property @@ -73,35 +73,35 @@ def tags(self, value): @classmethod def from_yaml(cls, path): - '''Create an instance of feature group from a yaml spec file + """Create an instance of feature group from a yaml spec file Args: path (str): path to yaml spec file - ''' + """ with open(path, 'r') as file: content = yaml.safe_load(file.read()) feature_group = cls.__new__(cls) feature_group.__spec = Parse( json.dumps(content), - feature_group_pb.FeatureGroupSpec(), + FeatureGroupSpec(), ignore_unknown_fields=False) return feature_group def __str__(self): - '''Return string representation of the feature group + """Return string representation of the feature group Returns: str: yaml formatted representation of the entity - ''' + """ return spec_to_yaml(self.__spec) def dump(self, path): - '''Dump the feature group into a yaml file. + """Dump the feature group into a yaml file. It will replace content of an existing file. Args: path (str): destination file path - ''' + """ with open(path, 'w') as file: file.write(str(self)) print("Saved spec to {}".format(path)) diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py index 99aa7804621..e11b95b877f 100644 --- a/sdk/python/feast/sdk/resources/storage.py +++ b/sdk/python/feast/sdk/resources/storage.py @@ -1,15 +1,15 @@ import yaml import json -import feast.specs.StorageSpec_pb2 as storage_pb -import feast.specs.FeatureSpec_pb2 as feature_pb +from feast.specs.StorageSpec_pb2 import StorageSpec from feast.sdk.utils.print_utils import spec_to_yaml -from google.protobuf.json_format import MessageToJson, Parse +from google.protobuf.json_format import Parse + -''' -Wrapper class for feast storage -''' class Storage: + """ + Wrapper class for feast storage + """ def __init__(self, id = "", type = "", options={}): '''Create Storage instance. @@ -18,7 +18,7 @@ def __init__(self, id = "", type = "", options={}): type (str): storage type options (dict, optional) : map of storage options ''' - self.__spec = storage_pb.StorageSpec(id = id, type = type, options = options) + self.__spec = StorageSpec(id = id, type = type, options = options) @property def spec(self): @@ -52,7 +52,7 @@ def options(self, value): @classmethod def from_yaml(cls, path): '''Create an instance of storage from a yaml file - + Args: path (str): path to yaml file ''' @@ -61,41 +61,25 @@ def from_yaml(cls, path): storage = cls() storage.__spec = Parse( json.dumps(content), - storage_pb.StorageSpec(), + StorageSpec(), ignore_unknown_fields=False) return storage def __str__(self): '''Return string representation the storage in yaml format - + Returns: str: yaml formatted representation of the entity ''' return spec_to_yaml(self.__spec) def dump(self, path): - '''Dump the storage into a yaml file. + '''Dump the storage into a yaml file. It will replace content of an existing file. - + Args: path (str): destination file path ''' with open(path, 'w') as file: file.write(str(self)) print("Saved spec to {}".format(path)) - -class Datastore: - def __init__(self, id, options={}): - self.__spec = feature_pb.DataStore(id = id, options = options) - - def __str__(self): - '''Print the datastore in yaml format - - Returns: - str: yaml formatted representation of the Datastore - ''' - return spec_to_yaml(self.__spec) - - @property - def spec(self): - return self.__spec \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index 04173625b09..f00efaff481 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -7,6 +7,7 @@ _GCS_PATH_REGEX = r'^gs:\/\/[a-z0-9\.\-_\/]*$' + def gs_to_df(path): '''Reads a file from gs to pandas @@ -27,6 +28,7 @@ def gs_to_df(path): os.remove(temp_file_path) return df + def df_to_gs(df, path): '''Writes the given df to the path specified. Will fail if the bucket does not exist. @@ -43,10 +45,12 @@ def df_to_gs(df, path): df.to_csv(s) blob.upload_from_string(s.getvalue()) + def split_gs_path(path): path = path.replace("gs://", "", 1) return path.split('/', 1) + def is_gs_path(path): '''Check if path is a gcs path diff --git a/sdk/python/feast/sdk/utils/print_utils.py b/sdk/python/feast/sdk/utils/print_utils.py index 99702cb5b76..6f747cf1863 100644 --- a/sdk/python/feast/sdk/utils/print_utils.py +++ b/sdk/python/feast/sdk/utils/print_utils.py @@ -1,9 +1,9 @@ -from google.protobuf.json_format import MessageToJson, Parse from google.protobuf.json_format import MessageToDict from collections import OrderedDict import yaml + def spec_to_yaml(spec): '''Converts spec to yaml string @@ -19,8 +19,10 @@ def spec_to_yaml(spec): dic = OrderedDict(MessageToDict(spec)) return yaml.dump(dic, default_flow_style=False) + def _dict_representer(dumper, data): return dumper.represent_dict(data.items()) + def _dict_constructor(loader, node): return OrderedDict(loader.construct_pairs(node)) \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/types.py b/sdk/python/feast/sdk/utils/types.py index ca25bc2ec88..85e07eccb8d 100644 --- a/sdk/python/feast/sdk/utils/types.py +++ b/sdk/python/feast/sdk/utils/types.py @@ -1,31 +1,4 @@ -import pandas as pd -from enum import Enum -from feast.serving.Serving_pb2 import RequestType - -class Granularity(Enum): - NONE = 0 - DAY = 1 - HOUR = 2 - MINUTE = 3 - SECOND = 4 - - -class ValueType(Enum): - UNKNOWN = 0 - BYTES = 1 - STRING = 2 - INT32 = 3 - INT64 = 4 - DOUBLE = 5 - FLOAT = 6 - BOOL = 7 - TIMESTAMP = 8 - - -class ServingRequestType(Enum): - LAST = 0 - LIST = 1 - +from feast.sdk.resources.feature import ValueType # mapping of pandas dtypes to feast value type strings _DTYPE_TO_VALUE_TYPE_MAPPING = { diff --git a/sdk/python/feast/sdk/utils/validation.py b/sdk/python/feast/sdk/utils/validation.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/sdk/python/tests/sdk/resources/test_feature.py b/sdk/python/tests/sdk/resources/test_feature.py index 1cb970dcef4..d63401b06d2 100644 --- a/sdk/python/tests/sdk/resources/test_feature.py +++ b/sdk/python/tests/sdk/resources/test_feature.py @@ -1,6 +1,6 @@ -from feast.sdk.resources.feature import Feature -from feast.sdk.resources.storage import Datastore -from feast.sdk.utils.types import ValueType, Granularity +from feast.sdk.resources.feature import Feature, Datastore, Granularity, \ + ValueType + class TestFeature(object): def dummy_feature(self): diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 6bfa039a0a5..ea8ccd47ce1 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -19,15 +19,14 @@ from feast.types.Value_pb2 import ValueList, TimestampList, Int32List import feast.serving.Serving_pb2 as serving_pb -from feast.sdk.utils.types import Granularity from feast.sdk.client import Client from feast.sdk.importer import Importer -from feast.sdk.resources.feature import Feature +from feast.sdk.resources.feature import Feature, Granularity from feast.sdk.resources.feature_group import FeatureGroup from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_set import FeatureSet -from feast.sdk.utils.types import ServingRequestType +from feast.sdk.client import ServingRequestType from feast.sdk.utils.bq_util import TrainingDatasetCreator diff --git a/sdk/python/tests/sdk/test_importer.py b/sdk/python/tests/sdk/test_importer.py index 996e0f7c21e..e6ab123fc03 100644 --- a/sdk/python/tests/sdk/test_importer.py +++ b/sdk/python/tests/sdk/test_importer.py @@ -1,12 +1,12 @@ import pandas as pd import pytest import ntpath -from feast.sdk.resources.feature import Feature -from feast.sdk.utils.types import Granularity, ValueType +from feast.sdk.resources.feature import Feature, Granularity, ValueType from feast.sdk.importer import _create_feature, Importer -from feast.sdk.utils.gs_utils import gs_to_df, is_gs_path, df_to_gs +from feast.sdk.utils.gs_utils import is_gs_path from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 + class TestImporter(object): def test_from_csv(self): csv_path = "tests/data/driver_features.csv" @@ -193,6 +193,7 @@ def _validate_csv_importer(self, assert field.featureId == "{}.{}.{}".format(entity_name, Granularity_pb2.Enum.Name(feature_granularity.value).lower(), col) + class TestHelpers: def test_create_feature(self): col = pd.Series([1]*3,dtype='int32',name="test") @@ -202,7 +203,7 @@ def test_create_feature(self): owner="person", value_type=ValueType.INT32) actual = _create_feature(col, "test", Granularity.NONE, "person") - assert actual.id == expected.id - assert actual.value_type == expected.value_type - assert actual.owner == expected.owner + assert actual.id == expected.id + assert actual.value_type == expected.value_type + assert actual.owner == expected.owner From e30e8249c15ed007dfc333549c9ecf050552761c Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Wed, 2 Jan 2019 16:25:05 +0800 Subject: [PATCH 28/50] Add license --- sdk/python/feast/core/CoreService_pb2.py | 14 ++++++++++++++ sdk/python/feast/core/CoreService_pb2_grpc.py | 14 ++++++++++++++ sdk/python/feast/core/JobService_pb2.py | 14 ++++++++++++++ sdk/python/feast/core/JobService_pb2_grpc.py | 14 ++++++++++++++ sdk/python/feast/core/UIService_pb2.py | 14 ++++++++++++++ sdk/python/feast/core/UIService_pb2_grpc.py | 14 ++++++++++++++ sdk/python/feast/sdk/client.py | 14 ++++++++++++++ sdk/python/feast/sdk/env.py | 14 ++++++++++++++ sdk/python/feast/sdk/importer.py | 14 ++++++++++++++ sdk/python/feast/sdk/resources/entity.py | 14 ++++++++++++++ sdk/python/feast/sdk/resources/feature.py | 14 ++++++++++++++ sdk/python/feast/sdk/resources/feature_group.py | 14 ++++++++++++++ sdk/python/feast/sdk/resources/feature_set.py | 14 ++++++++++++++ sdk/python/feast/sdk/resources/storage.py | 14 ++++++++++++++ sdk/python/feast/sdk/utils/bq_util.py | 14 ++++++++++++++ sdk/python/feast/sdk/utils/gs_utils.py | 14 ++++++++++++++ sdk/python/feast/sdk/utils/print_utils.py | 14 ++++++++++++++ sdk/python/feast/sdk/utils/types.py | 14 ++++++++++++++ sdk/python/feast/serving/Serving_pb2.py | 14 ++++++++++++++ sdk/python/feast/serving/Serving_pb2_grpc.py | 14 ++++++++++++++ sdk/python/feast/specs/EntitySpec_pb2.py | 14 ++++++++++++++ sdk/python/feast/specs/FeatureGroupSpec_pb2.py | 14 ++++++++++++++ sdk/python/feast/specs/FeatureSpec_pb2.py | 14 ++++++++++++++ sdk/python/feast/specs/ImportSpec_pb2.py | 14 ++++++++++++++ sdk/python/feast/specs/StorageSpec_pb2.py | 14 ++++++++++++++ sdk/python/feast/storage/BigTable_pb2.py | 14 ++++++++++++++ sdk/python/feast/storage/Redis_pb2.py | 14 ++++++++++++++ sdk/python/feast/types/FeatureRowExtended_pb2.py | 14 ++++++++++++++ sdk/python/feast/types/FeatureRow_pb2.py | 14 ++++++++++++++ sdk/python/feast/types/Feature_pb2.py | 14 ++++++++++++++ sdk/python/feast/types/Granularity_pb2.py | 14 ++++++++++++++ sdk/python/feast/types/Value_pb2.py | 14 ++++++++++++++ sdk/python/feast/version.py | 14 ++++++++++++++ sdk/python/setup.py | 14 ++++++++++++++ sdk/python/tests/sdk/resources/test_entity.py | 14 ++++++++++++++ sdk/python/tests/sdk/resources/test_feature.py | 14 ++++++++++++++ .../tests/sdk/resources/test_feature_group.py | 14 ++++++++++++++ sdk/python/tests/sdk/resources/test_feature_set.py | 14 ++++++++++++++ sdk/python/tests/sdk/resources/test_storage.py | 14 ++++++++++++++ sdk/python/tests/sdk/test_client.py | 14 ++++++++++++++ sdk/python/tests/sdk/test_importer.py | 14 ++++++++++++++ sdk/python/tests/sdk/utils/test_bq_utils.py | 14 ++++++++++++++ sdk/python/tests/sdk/utils/test_gs_utils.py | 14 ++++++++++++++ sdk/python/tests/sdk/utils/test_types.py | 14 ++++++++++++++ 44 files changed, 616 insertions(+) diff --git a/sdk/python/feast/core/CoreService_pb2.py b/sdk/python/feast/core/CoreService_pb2.py index cd8896447b4..fe84472900c 100644 --- a/sdk/python/feast/core/CoreService_pb2.py +++ b/sdk/python/feast/core/CoreService_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/core/CoreService.proto diff --git a/sdk/python/feast/core/CoreService_pb2_grpc.py b/sdk/python/feast/core/CoreService_pb2_grpc.py index 6331551fda6..f56409c234b 100644 --- a/sdk/python/feast/core/CoreService_pb2_grpc.py +++ b/sdk/python/feast/core/CoreService_pb2_grpc.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc diff --git a/sdk/python/feast/core/JobService_pb2.py b/sdk/python/feast/core/JobService_pb2.py index a759749108f..54344065b4c 100644 --- a/sdk/python/feast/core/JobService_pb2.py +++ b/sdk/python/feast/core/JobService_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/core/JobService.proto diff --git a/sdk/python/feast/core/JobService_pb2_grpc.py b/sdk/python/feast/core/JobService_pb2_grpc.py index 4a1ebf66c03..10d9276d698 100644 --- a/sdk/python/feast/core/JobService_pb2_grpc.py +++ b/sdk/python/feast/core/JobService_pb2_grpc.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc diff --git a/sdk/python/feast/core/UIService_pb2.py b/sdk/python/feast/core/UIService_pb2.py index 623923144be..916e51fe659 100644 --- a/sdk/python/feast/core/UIService_pb2.py +++ b/sdk/python/feast/core/UIService_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/core/UIService.proto diff --git a/sdk/python/feast/core/UIService_pb2_grpc.py b/sdk/python/feast/core/UIService_pb2_grpc.py index ba86fc468ae..cb9f0bf4fba 100644 --- a/sdk/python/feast/core/UIService_pb2_grpc.py +++ b/sdk/python/feast/core/UIService_pb2_grpc.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 28ef7e872e5..37665957e57 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + """ Main interface for users to interact with the Core API. """ diff --git a/sdk/python/feast/sdk/env.py b/sdk/python/feast/sdk/env.py index ad750d0f21e..b9ff4470f7b 100644 --- a/sdk/python/feast/sdk/env.py +++ b/sdk/python/feast/sdk/env.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + FEAST_SERVING_URL_ENV_KEY = "FEAST_SERVING_URL" FEAST_CORE_URL_ENV_KEY = "FEAST_CORE_URL" diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index 17bb4d96982..25df1190989 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import pandas as pd import ntpath import time diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py index c7488c5c27a..52be01e7b9a 100644 --- a/sdk/python/feast/sdk/resources/entity.py +++ b/sdk/python/feast/sdk/resources/entity.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import yaml from feast.specs.EntitySpec_pb2 import EntitySpec diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index 38aff6d488e..b0b869ca47a 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import yaml import json import enum diff --git a/sdk/python/feast/sdk/resources/feature_group.py b/sdk/python/feast/sdk/resources/feature_group.py index 0a6ada11761..39d2c2b38ae 100644 --- a/sdk/python/feast/sdk/resources/feature_group.py +++ b/sdk/python/feast/sdk/resources/feature_group.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import yaml import json diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index 0583f3e90a6..22f20b8b510 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import time import os from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gs_to_df diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py index e11b95b877f..f301b9787d6 100644 --- a/sdk/python/feast/sdk/resources/storage.py +++ b/sdk/python/feast/sdk/resources/storage.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import yaml import json diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index d9faed223d7..7072bc78da4 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import itertools import operator import os diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index f00efaff481..6716fdbd387 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import io import time import os diff --git a/sdk/python/feast/sdk/utils/print_utils.py b/sdk/python/feast/sdk/utils/print_utils.py index 6f747cf1863..c1e28428fbc 100644 --- a/sdk/python/feast/sdk/utils/print_utils.py +++ b/sdk/python/feast/sdk/utils/print_utils.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from google.protobuf.json_format import MessageToDict from collections import OrderedDict diff --git a/sdk/python/feast/sdk/utils/types.py b/sdk/python/feast/sdk/utils/types.py index 85e07eccb8d..9516a74ed1b 100644 --- a/sdk/python/feast/sdk/utils/types.py +++ b/sdk/python/feast/sdk/utils/types.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from feast.sdk.resources.feature import ValueType # mapping of pandas dtypes to feast value type strings diff --git a/sdk/python/feast/serving/Serving_pb2.py b/sdk/python/feast/serving/Serving_pb2.py index 292612c8473..59bc98da487 100644 --- a/sdk/python/feast/serving/Serving_pb2.py +++ b/sdk/python/feast/serving/Serving_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/serving/Serving.proto diff --git a/sdk/python/feast/serving/Serving_pb2_grpc.py b/sdk/python/feast/serving/Serving_pb2_grpc.py index a17c7b6305d..77d3ebdc6d1 100644 --- a/sdk/python/feast/serving/Serving_pb2_grpc.py +++ b/sdk/python/feast/serving/Serving_pb2_grpc.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc diff --git a/sdk/python/feast/specs/EntitySpec_pb2.py b/sdk/python/feast/specs/EntitySpec_pb2.py index 8a8c9023c7a..0dfedd2fe11 100644 --- a/sdk/python/feast/specs/EntitySpec_pb2.py +++ b/sdk/python/feast/specs/EntitySpec_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/specs/EntitySpec.proto diff --git a/sdk/python/feast/specs/FeatureGroupSpec_pb2.py b/sdk/python/feast/specs/FeatureGroupSpec_pb2.py index 8ad76b25c8d..907e8792d7d 100644 --- a/sdk/python/feast/specs/FeatureGroupSpec_pb2.py +++ b/sdk/python/feast/specs/FeatureGroupSpec_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/specs/FeatureGroupSpec.proto diff --git a/sdk/python/feast/specs/FeatureSpec_pb2.py b/sdk/python/feast/specs/FeatureSpec_pb2.py index b68b742263f..b4b9b29b8b5 100644 --- a/sdk/python/feast/specs/FeatureSpec_pb2.py +++ b/sdk/python/feast/specs/FeatureSpec_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/specs/FeatureSpec.proto diff --git a/sdk/python/feast/specs/ImportSpec_pb2.py b/sdk/python/feast/specs/ImportSpec_pb2.py index 2e9b4647305..b547d2733db 100644 --- a/sdk/python/feast/specs/ImportSpec_pb2.py +++ b/sdk/python/feast/specs/ImportSpec_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/specs/ImportSpec.proto diff --git a/sdk/python/feast/specs/StorageSpec_pb2.py b/sdk/python/feast/specs/StorageSpec_pb2.py index 723885b46a6..d5cb2bdb38c 100644 --- a/sdk/python/feast/specs/StorageSpec_pb2.py +++ b/sdk/python/feast/specs/StorageSpec_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/specs/StorageSpec.proto diff --git a/sdk/python/feast/storage/BigTable_pb2.py b/sdk/python/feast/storage/BigTable_pb2.py index 80710f3c753..4fe715a8afe 100644 --- a/sdk/python/feast/storage/BigTable_pb2.py +++ b/sdk/python/feast/storage/BigTable_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/storage/BigTable.proto diff --git a/sdk/python/feast/storage/Redis_pb2.py b/sdk/python/feast/storage/Redis_pb2.py index 326a966e052..c46c9e70808 100644 --- a/sdk/python/feast/storage/Redis_pb2.py +++ b/sdk/python/feast/storage/Redis_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/storage/Redis.proto diff --git a/sdk/python/feast/types/FeatureRowExtended_pb2.py b/sdk/python/feast/types/FeatureRowExtended_pb2.py index af4a0396266..15700a07e29 100644 --- a/sdk/python/feast/types/FeatureRowExtended_pb2.py +++ b/sdk/python/feast/types/FeatureRowExtended_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/FeatureRowExtended.proto diff --git a/sdk/python/feast/types/FeatureRow_pb2.py b/sdk/python/feast/types/FeatureRow_pb2.py index 88f5433aab0..cad56303ea3 100644 --- a/sdk/python/feast/types/FeatureRow_pb2.py +++ b/sdk/python/feast/types/FeatureRow_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/FeatureRow.proto diff --git a/sdk/python/feast/types/Feature_pb2.py b/sdk/python/feast/types/Feature_pb2.py index 095c9e64cc0..daaa1721992 100644 --- a/sdk/python/feast/types/Feature_pb2.py +++ b/sdk/python/feast/types/Feature_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/Feature.proto diff --git a/sdk/python/feast/types/Granularity_pb2.py b/sdk/python/feast/types/Granularity_pb2.py index 8d6053270b7..3413d39cba1 100644 --- a/sdk/python/feast/types/Granularity_pb2.py +++ b/sdk/python/feast/types/Granularity_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/Granularity.proto diff --git a/sdk/python/feast/types/Value_pb2.py b/sdk/python/feast/types/Value_pb2.py index 8f434ff8fa7..47f4e8a355f 100644 --- a/sdk/python/feast/types/Value_pb2.py +++ b/sdk/python/feast/types/Value_pb2.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/Value.proto diff --git a/sdk/python/feast/version.py b/sdk/python/feast/version.py index b7d829d052c..6be1fa55e54 100644 --- a/sdk/python/feast/version.py +++ b/sdk/python/feast/version.py @@ -1 +1,15 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + VERSION = '0.3.0' \ No newline at end of file diff --git a/sdk/python/setup.py b/sdk/python/setup.py index 2343b5ce69b..cd9d61d5423 100644 --- a/sdk/python/setup.py +++ b/sdk/python/setup.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import imp import os from setuptools import find_packages, setup, Command diff --git a/sdk/python/tests/sdk/resources/test_entity.py b/sdk/python/tests/sdk/resources/test_entity.py index da2a7c4e496..535175e0980 100644 --- a/sdk/python/tests/sdk/resources/test_entity.py +++ b/sdk/python/tests/sdk/resources/test_entity.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from feast.sdk.resources.entity import Entity import os diff --git a/sdk/python/tests/sdk/resources/test_feature.py b/sdk/python/tests/sdk/resources/test_feature.py index d63401b06d2..a942c805f1e 100644 --- a/sdk/python/tests/sdk/resources/test_feature.py +++ b/sdk/python/tests/sdk/resources/test_feature.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from feast.sdk.resources.feature import Feature, Datastore, Granularity, \ ValueType diff --git a/sdk/python/tests/sdk/resources/test_feature_group.py b/sdk/python/tests/sdk/resources/test_feature_group.py index 606c4f2f14e..1e431bf1356 100644 --- a/sdk/python/tests/sdk/resources/test_feature_group.py +++ b/sdk/python/tests/sdk/resources/test_feature_group.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from feast.sdk.resources.feature_group import FeatureGroup class TestFeatureGroupSpec(object): diff --git a/sdk/python/tests/sdk/resources/test_feature_set.py b/sdk/python/tests/sdk/resources/test_feature_set.py index 5fb70fe7b4a..1c1801bd618 100644 --- a/sdk/python/tests/sdk/resources/test_feature_set.py +++ b/sdk/python/tests/sdk/resources/test_feature_set.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from feast.sdk.resources.feature_set import FeatureSet, DatasetInfo, FileType from google.cloud.bigquery.table import Table diff --git a/sdk/python/tests/sdk/resources/test_storage.py b/sdk/python/tests/sdk/resources/test_storage.py index 66f1a0b6c8a..c9e6e9358ae 100644 --- a/sdk/python/tests/sdk/resources/test_storage.py +++ b/sdk/python/tests/sdk/resources/test_storage.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from feast.sdk.resources.storage import Storage import os diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index ea8ccd47ce1..f2a9f2bd70a 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import pytest import grpc diff --git a/sdk/python/tests/sdk/test_importer.py b/sdk/python/tests/sdk/test_importer.py index e6ab123fc03..1017f72b5bf 100644 --- a/sdk/python/tests/sdk/test_importer.py +++ b/sdk/python/tests/sdk/test_importer.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import pandas as pd import pytest import ntpath diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py index 57e626a44b3..7da3af67d48 100644 --- a/sdk/python/tests/sdk/utils/test_bq_utils.py +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from feast.sdk.utils.bq_util import TrainingDatasetCreator, get_table_name from feast.specs.StorageSpec_pb2 import StorageSpec import pytest diff --git a/sdk/python/tests/sdk/utils/test_gs_utils.py b/sdk/python/tests/sdk/utils/test_gs_utils.py index d43e3d4e2df..402e6b03550 100644 --- a/sdk/python/tests/sdk/utils/test_gs_utils.py +++ b/sdk/python/tests/sdk/utils/test_gs_utils.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import pytest from feast.sdk.utils.gs_utils import is_gs_path diff --git a/sdk/python/tests/sdk/utils/test_types.py b/sdk/python/tests/sdk/utils/test_types.py index c306da19448..edfc741a3de 100644 --- a/sdk/python/tests/sdk/utils/test_types.py +++ b/sdk/python/tests/sdk/utils/test_types.py @@ -1,3 +1,17 @@ +# Copyright 2018 The Feast Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import pytest import pandas as pd import numpy as np From 0b3ffee66979b386b6365ed9179a949a1d1caed3 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Thu, 3 Jan 2019 10:22:50 +0800 Subject: [PATCH 29/50] Fix typo --- sdk/python/feast/sdk/resources/storage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py index f301b9787d6..dbfbd9b0f37 100644 --- a/sdk/python/feast/sdk/resources/storage.py +++ b/sdk/python/feast/sdk/resources/storage.py @@ -44,7 +44,7 @@ def id(self): @id.setter def id(self, value): - self.__spec.name = id + self.__spec.name = value @property def type(self): From 1c1aaf5ccd00e6d03347a5c9c6d1838ebfc94199 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Thu, 3 Jan 2019 13:43:27 +0800 Subject: [PATCH 30/50] Move download functionality from DatasetInfo into Client --- sdk/python/feast/sdk/client.py | 43 +++++- sdk/python/feast/sdk/resources/feature_set.py | 76 ++--------- sdk/python/feast/sdk/utils/bq_util.py | 79 ++++++++++- .../tests/sdk/resources/test_feature_set.py | 114 +--------------- sdk/python/tests/sdk/test_client.py | 41 ++++-- sdk/python/tests/sdk/utils/test_bq_utils.py | 123 +++++++++++++++++- 6 files changed, 279 insertions(+), 197 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 37665957e57..6a6872c9082 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -37,9 +37,10 @@ from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_group import FeatureGroup -from feast.sdk.resources.feature_set import DatasetInfo +from feast.sdk.resources.feature_set import DatasetInfo, FileType from feast.sdk.utils.print_utils import spec_to_yaml -from feast.sdk.utils.bq_util import get_table_name, TrainingDatasetCreator +from feast.sdk.utils.bq_util import get_table_name, TrainingDatasetCreator, \ + TableDownloader class ServingRequestType(enum.Enum): @@ -85,6 +86,7 @@ def __init__(self, core_url=None, serving_url=None, bq_dataset=None, self._verbose = verbose self._bq_dataset = bq_dataset self._training_creator = TrainingDatasetCreator() + self._table_downloader = TableDownloader() @property def core_url(self): @@ -258,6 +260,43 @@ def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequest return self._response_to_df(self._serving_service_stub .QueryFeatures(request)) + def download_dataset(self, dataset_info, dest, staging_location, + file_type=FileType.CSV): + """ + Download training dataset as file + Args: + dataset_info (feast.sdk.resources.feature_set.DatasetInfo) : + dataset_info to be downloaded + dest (str): destination's file path + staging_location (str): url to staging_location (currently + support a folder in GCS) + file_type (feast.sdk.resources.feature_set.FileType): (default: + FileType.CSV) exported file format + Returns: + str: path to the downloaded file + """ + return self._table_downloader.download_table_as_file( + dataset_info.table_id, + dest, + staging_location, + file_type) + + def download_dataset_to_df(self, dataset_info, staging_location): + """ + Download training dataset as Pandas Dataframe + Args: + dataset_info (feast.sdk.resources.feature_set.DatasetInfo) : + dataset_info to be downloaded + staging_location: url to staging_location (currently + support a folder in GCS) + + Returns: pandas.DataFrame: dataframe of the training dataset + + """ + return self._table_downloader.download_table_as_df( + dataset_info.table_id, + staging_location) + def close(self): """ Close underlying connection to Feast's core and serving end points. diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index 22f20b8b510..f80f41cc931 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -12,18 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -import time -import os -from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gs_to_df -from google.cloud.bigquery.client import Client as BQClient -from google.cloud.bigquery.job import ExtractJobConfig -from google.cloud.bigquery.table import Table -from google.cloud.storage import Client as GCSClient - class FeatureSet: """ - Represent a collection of features having same entity and granularity. + Represent a collection of features having same entity. """ def __init__(self, entity, features): @@ -67,20 +59,16 @@ class FileType(object): class DatasetInfo: - def __init__(self, name, table): + def __init__(self, name, table_id): """ Create instance of DatasetInfo with a BigQuery table as its backing store. Args: name: (str) dataset name - table: (google.cloud.bigquery.table.Table) backing table + table_id: (str) fully qualified table id """ - if not isinstance(table, Table): - raise TypeError("table must be a BigQuery table type") self._name = name - self._table = table - self._bq_client = BQClient() - self._gcs_client = GCSClient() + self._table_id = table_id @property def name(self): @@ -91,59 +79,11 @@ def name(self): """ return self._name - def download(self, filename, staging_uri, type=FileType.CSV): - """ - Download the training dataset as file - Args: - filename (str): destination filename - staging_uri (str): url to staging_location (currently - support a folder in GCS) - type (feast.sdk.resources.feature_set.FileType): (default: - FileType.CSV) exported file format - - """ - if not is_gs_path(staging_uri): - raise ValueError("staging_uri must be a directory in GCS") - - temp_file_name = 'temp_{}'.format( - int(round(time.time() * 1000))) - staging_file_path = os.path.join(staging_uri, temp_file_name) - - job_config = ExtractJobConfig() - job_config.destination_format = type - job = self._bq_client.extract_table(self._table, staging_file_path, - job_config=job_config) - - # await completion - job.result() - - bucket_name, blob_name = split_gs_path(staging_file_path) - bucket = self._gcs_client.get_bucket(bucket_name) - blob = bucket.blob(blob_name) - blob.download_to_filename(filename) - - def download_to_df(self, staging_uri): + @property + def table_id(self): """ - Download the training dataset as Pandas Dataframe - Args: - staging_uri: url to staging_location (currently - support a folder in GCS) - Returns: pandas.DataFrame: dataframe of the training dataset + Returns: fully qualified table id """ - if not is_gs_path(staging_uri): - raise ValueError("staging_uri must be a directory in GCS") - - temp_file_name = 'temp_{}'.format( - int(round(time.time() * 1000))) - staging_file_path = os.path.join(staging_uri, temp_file_name) - - job_config = ExtractJobConfig() - job_config.destination_format = FileType.CSV - job = self._bq_client.extract_table(self._table, staging_file_path, - job_config=job_config) - - # await completion - job.result() - return gs_to_df(staging_file_path) \ No newline at end of file + return self._table_id diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index 7072bc78da4..97d9db141ce 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -16,11 +16,14 @@ import operator import os import pandas as pd +import time +from google.cloud.storage import Client as GCSClient from google.cloud.bigquery.client import Client as BQClient from google.cloud.bigquery.table import Table, TableReference -from google.cloud.bigquery.job import QueryJobConfig +from google.cloud.bigquery.job import QueryJobConfig, ExtractJobConfig, DestinationFormat from jinja2 import Template +from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gs_to_df def head(client, table, max_rows=10): @@ -70,6 +73,76 @@ def get_table_name(feature_id, storage_spec): return ".".join([project, dataset, table_name]) +class TableDownloader: + def __init__(self): + self._bq = BQClient() + self._gcs = GCSClient() + + def download_table_as_file(self, table_id, dest, staging_location, + file_type): + """ + Download a bigquery table as file + Args: + table_id (str): fully qualified BigQuery table id + dest (str): destination filename + staging_location (str): url to staging_location (currently + support a folder in GCS) + file_type (feast.sdk.resources.feature_set.FileType): (default: + FileType.CSV) exported file format + Returns: (str) path to the downloaded file + + """ + if not is_gs_path(staging_location): + raise ValueError("staging_uri must be a directory in GCS") + + temp_file_name = 'temp_{}'.format( + int(round(time.time() * 1000))) + staging_file_path = os.path.join(staging_location, temp_file_name) + + job_config = ExtractJobConfig() + job_config.destination_format = file_type + src_table = Table.from_string(table_id) + job = self._bq.extract_table(src_table, staging_file_path, + job_config=job_config) + + # await completion + job.result() + + bucket_name, blob_name = split_gs_path(staging_file_path) + bucket = self._gcs.get_bucket(bucket_name) + blob = bucket.blob(blob_name) + blob.download_to_filename(dest) + return dest + + def download_table_as_df(self, table_id, staging_location): + """ + Download a BigQuery table as Pandas Dataframe + Args: + table_id (src) : fully qualified BigQuery table id + staging_location: url to staging_location (currently + support a folder in GCS) + + Returns: pandas.DataFrame: dataframe of the training dataset + + """ + if not is_gs_path(staging_location): + raise ValueError("staging_uri must be a directory in GCS") + + temp_file_name = 'temp_{}'.format( + int(round(time.time() * 1000))) + staging_file_path = os.path.join(staging_location, temp_file_name) + + job_config = ExtractJobConfig() + job_config.destination_format = DestinationFormat.CSV + job = self._bq.extract_table(Table.from_string(table_id), + staging_file_path, + job_config=job_config) + + # await completion + job.result() + return gs_to_df(staging_file_path) + + class TrainingDatasetCreator: """ Helper class to create a training dataset. @@ -98,7 +171,7 @@ def create_training_dataset(self, feature_table_tuples, destination: (str) fully qualified BigQuery table ID of the destination - Returns: (google.cloud.bigquery.table.Table) Bigquery table instance + Returns: fully qualified table id """ query = self._create_query(feature_table_tuples, start_date, @@ -110,7 +183,7 @@ def create_training_dataset(self, feature_table_tuples, # wait until completion query_job.result() - return Table.from_string(destination) + return destination def _create_query(self, feature_table_tuples, start_date, end_date, limit): diff --git a/sdk/python/tests/sdk/resources/test_feature_set.py b/sdk/python/tests/sdk/resources/test_feature_set.py index 1c1801bd618..ddb66e38c7d 100644 --- a/sdk/python/tests/sdk/resources/test_feature_set.py +++ b/sdk/python/tests/sdk/resources/test_feature_set.py @@ -12,12 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from feast.sdk.resources.feature_set import FeatureSet, DatasetInfo, FileType -from google.cloud.bigquery.table import Table - -import time import pytest -import os +from feast.sdk.resources.feature_set import FeatureSet, DatasetInfo class TestFeatureSet(object): @@ -40,107 +36,9 @@ def test_different_entity(self): class TestDatasetInfo(object): def test_creation(self): - fake_table = "fake_table" - with pytest.raises(TypeError, - match="table must be a BigQuery table type"): - DatasetInfo("ds_name", fake_table) - - table = Table.from_string("project_id.dataset_id.table_id") - dataset = DatasetInfo("ds_name", table) - assert dataset._table == table - - def test_download_df(self, mocker): - self._stop_time(mocker) - mocked_gs_to_df = mocker.patch( - "feast.sdk.resources.feature_set.gs_to_df", - return_value=None) - - staging_path = "gs://temp/" - staging_file_name = "temp_0" - table = Table.from_string("project_id.dataset_id.table_id") - dataset_info = DatasetInfo("ds_name", table) - - exp_staging_path = os.path.join(staging_path, staging_file_name) - mocker.patch.object(dataset_info._bq_client, "extract_table", - return_value=_Job()) - - dataset_info.download_to_df(staging_path) - - assert len(dataset_info._bq_client.extract_table.call_args_list) == 1 - args, kwargs = dataset_info._bq_client.extract_table.call_args_list[0] - assert args[0] == table - assert args[1] == exp_staging_path - assert kwargs['job_config'].destination_format == "CSV" - mocked_gs_to_df.assert_called_once_with(exp_staging_path) - - def test_download_csv(self, mocker): - self._stop_time(mocker) - self._test_download_file(mocker, FileType.CSV) - - def test_download_avro(self, mocker): - self._stop_time(mocker) - self._test_download_file(mocker, FileType.AVRO) - - def test_download_json(self, mocker): - self._stop_time(mocker) - self._test_download_file(mocker, FileType.JSON) - - def test_download_invalid_staging_url(self): - table = Table.from_string("project_id.dataset_id.table_id") - dataset = DatasetInfo("ds_name", table) - - with pytest.raises(ValueError, - match="staging_uri must be a directory in " - "GCS"): - dataset.download("/tmp/dst", "/local/directory") - - with pytest.raises(ValueError, - match="staging_uri must be a directory in " - "GCS"): - dataset.download_to_df("/local/directory") - - def _test_download_file(self, mocker, type): - staging_path = "gs://temp/" - staging_file_name = "temp_0" - dst_path = "/tmp/myfile.csv" - table = Table.from_string("project_id.dataset_id.table_id") - dataset_info = DatasetInfo("ds_name", table) - - mock_blob = _Blob() - mocker.patch.object(mock_blob, "download_to_filename") - mocker.patch.object(dataset_info._bq_client, "extract_table", - return_value=_Job()) - mocker.patch.object(dataset_info._gcs_client, "get_bucket", - return_value=_Bucket(mock_blob)) - - dataset_info.download(dst_path, staging_path, type=type) - - exp_staging_path = os.path.join(staging_path, staging_file_name) - assert len(dataset_info._bq_client.extract_table.call_args_list) == 1 - args, kwargs = dataset_info._bq_client.extract_table.call_args_list[0] - assert args[0] == table - assert args[1] == exp_staging_path - assert kwargs['job_config'].destination_format == str(type) - - mock_blob.download_to_filename.assert_called_once_with(dst_path) - - def _stop_time(self, mocker): - mocker.patch('time.time', return_value=0) - - -class _Job(): - def result(self): - return None - - -class _Bucket(): - def __init__(self, blob): - self._blob = blob - - def blob(self, blob_name): - return self._blob - + name = "dataset_name" + table_id = "gcp-project.dataset.table_name" + dataset = DatasetInfo(name, table_id) + assert dataset.name == name + assert dataset.table_id == table_id -class _Blob(): - def download_to_filename(self, filename): - pass diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index f2a9f2bd70a..c3b9da12ed6 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -13,13 +13,11 @@ # limitations under the License. import pytest - import grpc from datetime import datetime import pandas as pd from pandas.util.testing import assert_frame_equal from google.protobuf.timestamp_pb2 import Timestamp -from google.cloud.bigquery.table import Table import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs @@ -39,9 +37,9 @@ from feast.sdk.resources.feature_group import FeatureGroup from feast.sdk.resources.entity import Entity from feast.sdk.resources.storage import Storage -from feast.sdk.resources.feature_set import FeatureSet +from feast.sdk.resources.feature_set import FeatureSet, DatasetInfo, FileType from feast.sdk.client import ServingRequestType -from feast.sdk.utils.bq_util import TrainingDatasetCreator +from feast.sdk.utils.bq_util import TrainingDatasetCreator, TableDownloader class TestClient(object): @@ -190,7 +188,7 @@ def test_create_training_dataset(self, client, mocker): return_value=CoreServiceTypes.GetStorageResponse( storageSpecs=[bq_spec])) mocker.patch.object(training_crt, "create_training_dataset", - return_value=Table.from_string(destination)) + return_value=destination) client._core_service_stub = core_stub client._training_creator = training_crt @@ -205,9 +203,7 @@ def test_create_training_dataset(self, client, mocker): (feature2, "project.dataset.myentity_hour")], start_date, end_date, limit, destination) - assert ds_info._table.project == "project" - assert ds_info._table.dataset_id == "dataset" - assert ds_info._table.table_id == "destination" + assert ds_info.table_id == destination assert ds_info.name == dataset_name def test_create_training_dataset_no_destination(self, client, mocker): @@ -235,7 +231,7 @@ def test_create_training_dataset_no_destination(self, client, mocker): return_value=CoreServiceTypes.GetStorageResponse( storageSpecs=[bq_spec])) mocker.patch.object(training_crt, "create_training_dataset", - return_value=Table.from_string(exp_dst)) + return_value=exp_dst) client._core_service_stub = core_stub client._training_creator = training_crt @@ -252,9 +248,7 @@ def test_create_training_dataset_no_destination(self, client, mocker): "project.dataset.myentity_hour")], start_date, end_date, limit, exp_dst) exp_dataset_name = exp_dst.split(".")[2] - assert ds_info._table.project == "project" - assert ds_info._table.dataset_id == "dataset" - assert ds_info._table.table_id == exp_dataset_name + assert ds_info.table_id == "project.dataset." + exp_dataset_name assert ds_info.name == exp_dataset_name def test_build_serving_request_last(self, client): @@ -341,6 +335,28 @@ def test_serving_response_to_df_multiple(self, client): .reset_index(drop=True)[expected_df.columns] assert_frame_equal(df, expected_df) + def test_download_dataset_as_file(self, client, mocker): + destination = "/tmp/dest_file" + + table_dlder = TableDownloader() + mocker.patch.object(table_dlder, "download_table_as_file", + return_value=destination) + + client._table_downloader = table_dlder + table_id = "project.dataset.table" + staging_location = "gs://gcs_bucket/" + dataset = DatasetInfo("mydataset", table_id) + + result = client.download_dataset(dataset, destination, + staging_location=staging_location, + file_type=FileType.CSV) + + assert result == destination + table_dlder.download_table_as_file.assert_called_once_with(table_id, + destination, + staging_location, + FileType.CSV) + def _create_query_features_response(self, entity_name, entities, features): # entities should be in the form: # {"id": "1", @@ -372,3 +388,4 @@ def _create_feature_spec(self, feature_id, wh_id): def _create_bq_spec(self, id, project, dataset): return StorageSpec(id=id, type="bigquery", options={ "project": project, "dataset": dataset}) + diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py index 7da3af67d48..e954575f5ee 100644 --- a/sdk/python/tests/sdk/utils/test_bq_utils.py +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -12,9 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -from feast.sdk.utils.bq_util import TrainingDatasetCreator, get_table_name +from feast.sdk.utils.bq_util import TrainingDatasetCreator, TableDownloader, \ + get_table_name from feast.specs.StorageSpec_pb2 import StorageSpec +from feast.sdk.resources.feature_set import FileType +from google.cloud.bigquery.table import Table import pytest +import os def test_get_table_name(): @@ -22,8 +26,8 @@ def test_get_table_name(): dataset_name = "my_dataset" feature_id = "myentity.none.feature1" storage_spec = StorageSpec(id="BIGQUERY1", type="bigquery", - options={"project": project_name, - "dataset": dataset_name}) + options={"project": project_name, + "dataset": dataset_name}) assert get_table_name(feature_id, storage_spec) == \ "my_project.my_dataset.myentity_none" @@ -31,7 +35,8 @@ def test_get_table_name(): def test_get_table_name_not_bq(): feature_id = "myentity.none.feature1" storage_spec = StorageSpec(id="REDIS1", type="redis") - with pytest.raises(ValueError, match="storage spec is not BigQuery storage spec"): + with pytest.raises(ValueError, + match="storage spec is not BigQuery storage spec"): get_table_name(feature_id, storage_spec) @@ -80,3 +85,113 @@ def test_create_query(self): t = TrainingDatasetCreator() query = t._create_query(f, start, end, None) assert "LIMIT" not in query + + +class TestTableDownloader(object): + def test_download_table_as_df(self, mocker): + self._stop_time(mocker) + mocked_gs_to_df = mocker.patch( + "feast.sdk.utils.bq_util.gs_to_df", + return_value=None) + + staging_path = "gs://temp/" + staging_file_name = "temp_0" + table_id = "project_id.dataset_id.table_id" + + table_dldr = TableDownloader() + exp_staging_path = os.path.join(staging_path, staging_file_name) + mocker.patch.object(table_dldr._bq, "extract_table", + return_value=_Job()) + + table_dldr.download_table_as_df(table_id, + staging_location=staging_path) + + assert len( + table_dldr._bq.extract_table.call_args_list) == 1 + args, kwargs = \ + table_dldr._bq.extract_table.call_args_list[0] + assert args[0].full_table_id == Table.from_string( + table_id).full_table_id + assert args[1] == exp_staging_path + assert kwargs['job_config'].destination_format == "CSV" + mocked_gs_to_df.assert_called_once_with(exp_staging_path) + + def test_download_csv(self, mocker): + self._stop_time(mocker) + self._test_download_file(mocker, FileType.CSV) + + def test_download_avro(self, mocker): + self._stop_time(mocker) + self._test_download_file(mocker, FileType.AVRO) + + def test_download_json(self, mocker): + self._stop_time(mocker) + self._test_download_file(mocker, FileType.JSON) + + def test_download_invalid_staging_url(self): + table_id = "project_id.dataset_id.table_id" + table_dldr = TableDownloader() + with pytest.raises(ValueError, + match="staging_uri must be a directory in " + "GCS"): + table_dldr.download_table_as_file(table_id, + "/tmp/dst", + "/local/directory", + FileType.CSV) + + with pytest.raises(ValueError, + match="staging_uri must be a directory in " + "GCS"): + table_dldr.download_table_as_df(table_id, + "/local/directory") + + def _test_download_file(self, mocker, type): + staging_path = "gs://temp/" + staging_file_name = "temp_0" + dst_path = "/tmp/myfile.csv" + table_id = "project_id.dataset_id.table_id" + + table_dldr = TableDownloader() + mock_blob = _Blob() + mocker.patch.object(mock_blob, "download_to_filename") + mocker.patch.object(table_dldr._bq, "extract_table", + return_value=_Job()) + mocker.patch.object(table_dldr._gcs, "get_bucket", + return_value=_Bucket(mock_blob)) + + table_dldr.download_table_as_file(table_id, + dst_path, + staging_location=staging_path, + file_type=type) + + exp_staging_path = os.path.join(staging_path, staging_file_name) + assert len( + table_dldr._bq.extract_table.call_args_list) == 1 + args, kwargs = \ + table_dldr._bq.extract_table.call_args_list[0] + assert args[0].full_table_id == Table.from_string(table_id).full_table_id + assert args[1] == exp_staging_path + assert kwargs['job_config'].destination_format == str(type) + + mock_blob.download_to_filename.assert_called_once_with(dst_path) + + def _stop_time(self, mocker): + mocker.patch('time.time', return_value=0) + + +class _Job(): + def result(self): + return None + + +class _Bucket(): + def __init__(self, blob): + self._blob = blob + + def blob(self): + return self._blob + + +class _Blob(): + def download_to_filename(self, filename): + pass From a6cccc47f6950dd1745c7f59a715424e1759e6c0 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Fri, 4 Jan 2019 23:20:04 +0800 Subject: [PATCH 31/50] Add TrainingService.CreateTrainingDataset API to Core for creating training dataset --- charts/feast/templates/core-deploy.yaml | 4 + charts/feast/values.yaml | 6 +- core/pom.xml | 11 +- .../feast/core/config/TrainingConfig.java | 43 +++ .../TrainingDatasetCreationException.java | 18 ++ .../feast/core/grpc/TrainingServiceImpl.java | 120 ++++++++ .../BigQueryTrainingDatasetCreator.java | 135 +++++++++ .../BigQueryTrainingDatasetTemplater.java | 202 ++++++++++++++ .../src/main/resources/application.properties | 3 + .../main/resources/templates/bq_training.tmpl | 41 +++ .../core/grpc/TrainingServiceImplTest.java | 206 ++++++++++++++ .../BigQueryTrainingDatasetCreatorTest.java | 130 +++++++++ .../BigQueryTrainingDatasetTemplaterTest.java | 264 ++++++++++++++++++ core/src/test/resources/sql/expQuery1.sql | 59 ++++ core/src/test/resources/sql/expQuery2.sql | 59 ++++ core/src/test/resources/sql/expQuery3.sql | 150 ++++++++++ protos/feast/core/TrainingService.proto | 68 +++++ 17 files changed, 1511 insertions(+), 8 deletions(-) create mode 100644 core/src/main/java/feast/core/config/TrainingConfig.java create mode 100644 core/src/main/java/feast/core/exception/TrainingDatasetCreationException.java create mode 100644 core/src/main/java/feast/core/grpc/TrainingServiceImpl.java create mode 100644 core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java create mode 100644 core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java create mode 100644 core/src/main/resources/templates/bq_training.tmpl create mode 100644 core/src/test/java/feast/core/grpc/TrainingServiceImplTest.java create mode 100644 core/src/test/java/feast/core/training/BigQueryTrainingDatasetCreatorTest.java create mode 100644 core/src/test/java/feast/core/training/BigQueryTrainingDatasetTemplaterTest.java create mode 100644 core/src/test/resources/sql/expQuery1.sql create mode 100644 core/src/test/resources/sql/expQuery2.sql create mode 100644 core/src/test/resources/sql/expQuery3.sql create mode 100644 protos/feast/core/TrainingService.proto diff --git a/charts/feast/templates/core-deploy.yaml b/charts/feast/templates/core-deploy.yaml index 1110ae00ec9..dba70844120 100644 --- a/charts/feast/templates/core-deploy.yaml +++ b/charts/feast/templates/core-deploy.yaml @@ -69,6 +69,10 @@ spec: secretKeyRef: name: {{ template "postgresql.fullname" . }} key: postgres-password + - name: PROJECT_ID + value: "{{ .Values.core.projectId}}" + - name: TRAINING_DATASET_PREFIX + value: "{{ .Values.core.trainingDatasetPrefix }}" - name: CORE_API_URI value: {{ .Values.core.service.extIPAdr }}:{{ .Values.core.service.grpc.targetPort }} - name: JOB_RUNNER diff --git a/charts/feast/values.yaml b/charts/feast/values.yaml index 28543da9fdf..a0c33b6af00 100644 --- a/charts/feast/values.yaml +++ b/charts/feast/values.yaml @@ -1,5 +1,6 @@ --- -core: +core: + projectId: "gcp-project-id" image: pullPolicy: IfNotPresent registry: feast @@ -29,7 +30,8 @@ core: errorsStoreId: "STDOUT" monitoring: period: 5000 - initialDelay: 60000 + initialDelay: 60000 + trainingDatasetPrefix: "fs" postgresql: name: feast-metadata diff --git a/core/pom.xml b/core/pom.xml index 9f38638a2c1..3812ae0f0f6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -79,12 +79,6 @@ spring-boot-starter-data-jpa ${springBootVersion} - - - org.springframework.data - spring-data-jpa - ${springBootVersion} - org.springframework.boot @@ -196,6 +190,11 @@ compiler 0.9.5 + + com.hubspot.jinjava + jinjava + 2.4.12 + io.micrometer diff --git a/core/src/main/java/feast/core/config/TrainingConfig.java b/core/src/main/java/feast/core/config/TrainingConfig.java new file mode 100644 index 00000000000..1581c845a98 --- /dev/null +++ b/core/src/main/java/feast/core/config/TrainingConfig.java @@ -0,0 +1,43 @@ +package feast.core.config; + +import com.google.cloud.bigquery.BigQuery; +import com.google.cloud.bigquery.BigQueryOptions; +import com.google.common.base.Charsets; +import com.google.common.io.CharStreams; +import com.hubspot.jinjava.Jinjava; +import feast.core.dao.FeatureInfoRepository; +import feast.core.training.BigQueryTrainingDatasetCreator; +import feast.core.training.BigQueryTrainingDatasetTemplater; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.time.Clock; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +/** Configuration related to training API */ +@Configuration +public class TrainingConfig { + + @Bean + public BigQueryTrainingDatasetTemplater getBigQueryTrainingDatasetTemplater( + FeatureInfoRepository featureInfoRepository) throws IOException { + Resource resource = new ClassPathResource("templates/bq_training.tmpl"); + InputStream resourceInputStream = resource.getInputStream(); + String tmpl = CharStreams.toString(new InputStreamReader(resourceInputStream, Charsets.UTF_8)); + return new BigQueryTrainingDatasetTemplater(new Jinjava(), tmpl, featureInfoRepository); + } + + @Bean + public BigQueryTrainingDatasetCreator getBigQueryTrainingDatasetCreator( + BigQueryTrainingDatasetTemplater templater, + @Value("${feast.core.projectId}") String projectId, + @Value("${feast.core.datasetPrefix}") String datasetPrefix) { + BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId(projectId).build().getService(); + Clock clock = Clock.systemUTC(); + return new BigQueryTrainingDatasetCreator(templater, bigquery, clock, projectId, datasetPrefix); + } +} diff --git a/core/src/main/java/feast/core/exception/TrainingDatasetCreationException.java b/core/src/main/java/feast/core/exception/TrainingDatasetCreationException.java new file mode 100644 index 00000000000..2d5bc90a997 --- /dev/null +++ b/core/src/main/java/feast/core/exception/TrainingDatasetCreationException.java @@ -0,0 +1,18 @@ +package feast.core.exception; + +/** + * Exception that happens when creation of training dataset failed. + */ +public class TrainingDatasetCreationException extends RuntimeException { + public TrainingDatasetCreationException() { + super(); + } + + public TrainingDatasetCreationException(String message) { + super(message); + } + + public TrainingDatasetCreationException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/core/src/main/java/feast/core/grpc/TrainingServiceImpl.java b/core/src/main/java/feast/core/grpc/TrainingServiceImpl.java new file mode 100644 index 00000000000..76ba6778a4f --- /dev/null +++ b/core/src/main/java/feast/core/grpc/TrainingServiceImpl.java @@ -0,0 +1,120 @@ +/* + * Copyright 2018 The Feast Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package feast.core.grpc; + +import com.google.common.base.Strings; +import com.google.protobuf.Timestamp; +import feast.core.TrainingServiceGrpc.TrainingServiceImplBase; +import feast.core.TrainingServiceProto.DatasetInfo; +import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetRequest; +import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetResponse; +import feast.core.training.BigQueryTrainingDatasetCreator; +import io.grpc.Status; +import io.grpc.Status.Code; +import io.grpc.stub.StreamObserver; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import lombok.extern.slf4j.Slf4j; +import org.lognet.springboot.grpc.GRpcService; +import org.springframework.beans.factory.annotation.Autowired; + +@Slf4j +@GRpcService +public class TrainingServiceImpl extends TrainingServiceImplBase { + + private final BigQueryTrainingDatasetCreator trainingDatasetCreator; + + @Autowired + public TrainingServiceImpl(BigQueryTrainingDatasetCreator trainingDatasetCreator) { + this.trainingDatasetCreator = trainingDatasetCreator; + } + + @Override + public void createTrainingDataset( + CreateTrainingDatasetRequest request, + StreamObserver responseObserver) { + try { + checkRequest(request); + } catch (IllegalArgumentException e) { + responseObserver.onError( + Status.fromCode(Code.INVALID_ARGUMENT) + .withCause(e) + .withDescription(e.getMessage()) + .asException()); + return; + } + + try { + DatasetInfo datasetInfo = + trainingDatasetCreator.createTrainingDataset( + request.getFeatureSet(), + request.getStartDate(), + request.getEndDate(), + request.getLimit(), + request.getNamePrefix()); + CreateTrainingDatasetResponse response = + CreateTrainingDatasetResponse.newBuilder().setDatasetInfo(datasetInfo).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + } catch (Exception e) { + log.error("Training dataset creation failed", e); + responseObserver.onError( + Status.fromCode(Code.INTERNAL) + .withCause(e) + .withDescription("Training dataset creation failed: " + e.getMessage()) + .asException()); + } + } + + private void checkRequest(CreateTrainingDatasetRequest request) { + FeatureSet featureSet = request.getFeatureSet(); + Timestamp startDate = request.getStartDate(); + Timestamp endDate = request.getEndDate(); + + checkHasSameEntity(featureSet); + checkStartIsBeforeEnd(startDate, endDate); + } + + private void checkStartIsBeforeEnd(Timestamp startDate, Timestamp endDate) { + Instant start = Instant.ofEpochSecond(startDate.getSeconds()).truncatedTo(ChronoUnit.DAYS); + Instant end = Instant.ofEpochSecond(endDate.getSeconds()).truncatedTo(ChronoUnit.DAYS); + + if (start.compareTo(end) > 0) { + throw new IllegalArgumentException("startDate is after endDate"); + } + } + + private void checkHasSameEntity(FeatureSet featureSet) { + String entityName = featureSet.getEntityName(); + if (Strings.isNullOrEmpty(entityName)) { + throw new IllegalArgumentException("entity name in feature set is null or empty"); + } + + if (featureSet.getFeatureIdsCount() < 1) { + throw new IllegalArgumentException("feature set is empty"); + } + + for (String featureId : featureSet.getFeatureIdsList()) { + String entity = featureId.split("\\.")[0]; + if (!entityName.equals(entity)) { + throw new IllegalArgumentException("feature set contains different entity name: " + entity); + } + } + } +} diff --git a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java new file mode 100644 index 00000000000..42b193b1439 --- /dev/null +++ b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java @@ -0,0 +1,135 @@ +/* + * Copyright 2018 The Feast Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package feast.core.training; + +import com.google.cloud.bigquery.BigQuery; +import com.google.cloud.bigquery.BigQuery.JobOption; +import com.google.cloud.bigquery.JobException; +import com.google.cloud.bigquery.QueryJobConfiguration; +import com.google.cloud.bigquery.TableId; +import com.google.common.base.Strings; +import com.google.protobuf.Timestamp; +import feast.core.TrainingServiceProto.DatasetInfo; +import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.exception.TrainingDatasetCreationException; +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class BigQueryTrainingDatasetCreator { + + private final String projectId; + private final String datasetPrefix; + private final BigQueryTrainingDatasetTemplater templater; + private final BigQuery bigQuery; + private final DateTimeFormatter formatter; + private final Clock clock; + + public BigQueryTrainingDatasetCreator( + BigQueryTrainingDatasetTemplater templater, + BigQuery bigQuery, + Clock clock, + String projectId, + String datasetPrefix) { + this.templater = templater; + this.projectId = projectId; + this.datasetPrefix = datasetPrefix; + this.bigQuery = bigQuery; + this.clock = clock; + this.formatter = DateTimeFormatter.ofPattern("yyyyMMdd").withZone(ZoneId.of("UTC")); + } + + /** + * Create training dataset for a feature set + * + * @param featureSet feature set for which the training dataset should be created + * @param startDate starting date of the training dataset (inclusive) + * @param endDate end date of the training dataset (inclusive) + * @param limit maximum number of row should be created. + * @param namePrefix prefix for dataset name + * @return dataset info associated with the created training dataset + */ + public DatasetInfo createTrainingDataset( + FeatureSet featureSet, + Timestamp startDate, + Timestamp endDate, + long limit, + String namePrefix) { + try { + String query = templater.createQuery(featureSet, startDate, endDate, limit); + + String tableName = createBqTableName(startDate, endDate, namePrefix); + TableId destinationTable = + TableId.of(projectId, createBqDatasetName(featureSet.getEntityName()), tableName); + QueryJobConfiguration queryConfig = + QueryJobConfiguration.newBuilder(query) + .setAllowLargeResults(true) + .setDestinationTable(destinationTable) + .build(); + JobOption jobOption = JobOption.fields(); + bigQuery.query(queryConfig, jobOption); + return DatasetInfo.newBuilder() + .setName(createTrainingDatasetName(namePrefix, featureSet.getEntityName(), tableName)) + .setTableUrl(toTableUrl(destinationTable)) + .build(); + } catch (JobException e) { + log.error("Failed creating training dataset", e); + throw new TrainingDatasetCreationException("Failed creating training dataset", e); + } catch (InterruptedException e) { + log.error("Training dataset creation was interrupted", e); + throw new TrainingDatasetCreationException("Training dataset creation was interrupted", e); + } + } + + private String createBqTableName(Timestamp startDate, Timestamp endDate, String namePrefix) { + String currentTime = String.valueOf(clock.millis()); + if (!Strings.isNullOrEmpty(namePrefix)) { + // only alphanumeric and underscore are allowed + namePrefix = namePrefix.replaceAll("[^a-zA-Z0-9_]", "_"); + return String.format( + "%s_%s_%s_%s", + namePrefix, currentTime, formatTimestamp(startDate), formatTimestamp(endDate)); + } + + return String.format( + "%s_%s_%s", currentTime, formatTimestamp(startDate), formatTimestamp(endDate)); + } + + private String createBqDatasetName(String entity) { + return String.format("%s_%s", datasetPrefix, entity); + } + + private String formatTimestamp(Timestamp timestamp) { + Instant instant = Instant.ofEpochSecond(timestamp.getSeconds()); + return formatter.format(instant); + } + + private String toTableUrl(TableId tableId) { + return String.format( + "%s.%s.%s", tableId.getProject(), tableId.getDataset(), tableId.getTable()); + } + + private String createTrainingDatasetName(String namePrefix, String entityName, String tableName) { + if (!Strings.isNullOrEmpty(namePrefix)) { + return tableName; + } + return String.format("%s_%s", entityName, tableName); + } +} diff --git a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java new file mode 100644 index 00000000000..7902d94383c --- /dev/null +++ b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java @@ -0,0 +1,202 @@ +/* + * Copyright 2018 The Feast Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package feast.core.training; + +import static java.util.stream.Collectors.groupingBy; + +import com.google.protobuf.Timestamp; +import com.hubspot.jinjava.Jinjava; +import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.dao.FeatureInfoRepository; +import feast.core.model.FeatureInfo; +import feast.core.model.StorageInfo; +import feast.specs.FeatureSpecProto.FeatureSpec; +import feast.specs.StorageSpecProto.StorageSpec; +import feast.types.GranularityProto.Granularity; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.stream.Collectors; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Autowired; + +public class BigQueryTrainingDatasetTemplater { + private final FeatureInfoRepository featureInfoRepository; + private final Jinjava jinjava; + private final String template; + private final DateTimeFormatter formatter; + private Comparator featureGroupComparator = + new FeatureGroupTemplateComparator().reversed(); + + @Autowired + public BigQueryTrainingDatasetTemplater( + Jinjava jinjava, String templateString, FeatureInfoRepository featureInfoRepository) { + this.featureInfoRepository = featureInfoRepository; + this.jinjava = jinjava; + this.template = templateString; + this.formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.of("UTC")); + } + + /** + * Create query from a template. + * + * @param featureSet feature set + * @param startDate start date + * @param endDate end date + * @param limit limit + * @return SQL query for creating training table. + */ + public String createQuery( + FeatureSet featureSet, Timestamp startDate, Timestamp endDate, long limit) { + List featureIds = featureSet.getFeatureIdsList(); + List featureInfos = featureInfoRepository.findAllById(featureIds); + if (featureInfos.size() < featureIds.size()) { + Set foundFeatureIds = + featureInfos.stream().map(FeatureInfo::getId).collect(Collectors.toSet()); + featureIds.removeAll(foundFeatureIds); + throw new NoSuchElementException("features not found: " + featureIds); + } + + List features = toFeatureTemplates(featureInfos); + List featureGroups = groupFeatureTemplate(features); + + String startDateStr = formatDateString(startDate); + String endDateStr = formatDateString(endDate); + String limitStr = (limit != 0) ? String.valueOf(limit) : null; + return renderTemplate(featureGroups, startDateStr, endDateStr, limitStr); + } + + private String renderTemplate( + List featureGroups, String startDateStr, String endDateStr, String limitStr) { + Map context = new HashMap<>(); + featureGroups.sort(featureGroupComparator); + + context.put("feature_groups", featureGroups); + context.put("start_date", startDateStr); + context.put("end_date", endDateStr); + context.put("limit", limitStr); + return jinjava.render(template, context); + } + + private List toFeatureTemplates(List featureInfos) { + return featureInfos + .stream() + .map( + fi -> { + StorageInfo whStorage = fi.getWarehouseStore(); + String tableId = getBqTableId(fi.getFeatureSpec(), whStorage); + return new Feature(fi.getId(), fi.getGranularity(), tableId); + }) + .collect(Collectors.toList()); + } + + private String getBqTableId(FeatureSpec featureSpec, StorageInfo whStorage) { + String type = whStorage.getType(); + if (!"bigquery".equals(type)) { + throw new IllegalArgumentException( + "One of the feature has warehouse storage other than bigquery"); + } + + StorageSpec storageSpec = whStorage.getStorageSpec(); + Map options = storageSpec.getOptionsMap(); + String projectId = options.get("project"); + String dataset = options.get("dataset"); + String entityName = featureSpec.getEntity().toLowerCase(); + String granularity = featureSpec.getGranularity().toString().toLowerCase(); + return String.format("%s.%s.%s_%s", projectId, dataset, entityName, granularity); + } + + private List groupFeatureTemplate(List features) { + Map> groupedFeature = + features.stream().collect(groupingBy(Feature::getTableId)); + List featureGroups = new ArrayList<>(); + for (Map.Entry> entry : groupedFeature.entrySet()) { + String tableId = entry.getKey(); + Granularity.Enum granularity = entry.getValue().get(0).granularity; + FeatureGroup group = new FeatureGroup(tableId, granularity, entry.getValue()); + + featureGroups.add(group); + } + return featureGroups; + } + + private String formatDateString(Timestamp timestamp) { + Instant instant = Instant.ofEpochSecond(timestamp.getSeconds()).truncatedTo(ChronoUnit.DAYS); + return formatter.format(instant); + } + + @Getter + static final class FeatureGroup { + final String tableId; + final Granularity.Enum granularity; + final List features; + + public FeatureGroup(String tableId, Granularity.Enum granularity, List features) { + this.tableId = tableId; + this.granularity = granularity; + this.features = features; + } + + public String getTempTable() { + return tableId.replaceAll("[^a-zA-Z0-9]", "_"); + } + + public String getGranularityStr() { + return granularity.toString().toLowerCase(); + } + } + + @Getter + static final class Feature { + final String featureId; + final String tableId; + final Granularity.Enum granularity; + + public Feature(String featureId, Granularity.Enum granularity, String tableId) { + this.featureId = featureId; + this.tableId = tableId; + this.granularity = granularity; + } + + public String getName() { + return featureId.split("\\.")[2]; + } + + public String getColumn() { + return featureId.replace(".", "_"); + } + } + + private static final class FeatureGroupTemplateComparator implements Comparator { + @Override + public int compare(FeatureGroup o1, FeatureGroup o2) { + if (o1.granularity != o2.granularity) { + return o1.granularity.getNumber() - o2.granularity.getNumber(); + } + + return o1.tableId.compareTo(o2.tableId); + } + } +} diff --git a/core/src/main/resources/application.properties b/core/src/main/resources/application.properties index fd0315322f8..dca5b77309b 100644 --- a/core/src/main/resources/application.properties +++ b/core/src/main/resources/application.properties @@ -16,6 +16,9 @@ # grpc.port=${GRPC_PORT:8433} +feast.core.projectId = ${PROJECT_ID:} +feast.core.datasetPrefix = ${TRAINING_DATASET_PREFIX:fs} + feast.jobs.coreUri=${CORE_API_URI:localhost:8433} feast.jobs.runner=${JOB_RUNNER:DirectRunner} feast.jobs.options=${JOB_OPTIONS:{}} diff --git a/core/src/main/resources/templates/bq_training.tmpl b/core/src/main/resources/templates/bq_training.tmpl new file mode 100644 index 00000000000..825efd371d6 --- /dev/null +++ b/core/src/main/resources/templates/bq_training.tmpl @@ -0,0 +1,41 @@ +WITH + {% for feature_group in feature_groups -%} + raw_{{ feature_group.tempTable }} AS + (SELECT + ROW_NUMBER() OVER (PARTITION BY id, event_timestamp ORDER BY created_timestamp DESC) rownum, + id, event_timestamp, created_timestamp + {% for feature in feature_group.features -%} + , FIRST_VALUE({{feature.name}} IGNORE NULLS) OVER w AS {{feature.column}} + {% endfor -%} + FROM `{{feature_group.table_id}}` + {% if feature_group.granularityStr != "none" -%} + WHERE event_timestamp >= TIMESTAMP("{{ start_date }}") AND event_timestamp <= TIMESTAMP(DATETIME_ADD("{{ end_date }}", INTERVAL 1 DAY)) + {%- endif %} + WINDOW w AS ( PARTITION BY id, event_timestamp ORDER BY event_timestamp DESC )), + {{ feature_group.temp_table }} AS ( + SELECT * FROM raw_{{ feature_group.temp_table }} WHERE rownum = 1 ) {{ "," if not loop.last }} + {% endfor %} +SELECT + {{ feature_groups[0].temp_table }}.id, + {{ feature_groups[0].temp_table }}.event_timestamp + {% for feature_group in feature_groups -%} + {% for feature in feature_group.features -%} + ,{{ feature_group.temp_table }}.{{ feature.column }} + {%- endfor %} + {%- endfor %} +FROM + {{ feature_groups[0].temp_table }} +{% for feature_group in feature_groups -%} +{% if loop.index > 1 -%} +FULL JOIN + {{ feature_group.temp_table }} +ON + {{ feature_groups[0].temp_table }}.id = {{ feature_group.temp_table }}.id + {% if feature_group.granularityStr != "none" -%} + AND TIMESTAMP_TRUNC({{feature_groups[0].temp_table}}.event_timestamp, {{ feature_group.granularityStr|upper }}) = {{ feature_group.temp_table }}.event_timestamp + {%- endif %} +{%- endif %} +{%- endfor %} +{% if limit is not none -%} +LIMIT {{ limit }} +{%- endif %} \ No newline at end of file diff --git a/core/src/test/java/feast/core/grpc/TrainingServiceImplTest.java b/core/src/test/java/feast/core/grpc/TrainingServiceImplTest.java new file mode 100644 index 00000000000..ba585a7a3c0 --- /dev/null +++ b/core/src/test/java/feast/core/grpc/TrainingServiceImplTest.java @@ -0,0 +1,206 @@ +package feast.core.grpc; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.google.protobuf.Timestamp; +import com.google.protobuf.util.Timestamps; +import feast.core.TrainingServiceGrpc; +import feast.core.TrainingServiceProto.DatasetInfo; +import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetRequest; +import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetResponse; +import feast.core.training.BigQueryTrainingDatasetCreator; +import io.grpc.StatusRuntimeException; +import io.grpc.inprocess.InProcessChannelBuilder; +import io.grpc.inprocess.InProcessServerBuilder; +import io.grpc.testing.GrpcCleanupRule; +import java.text.ParseException; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +public class TrainingServiceImplTest { + + @Rule public final GrpcCleanupRule grpcCleanup = new GrpcCleanupRule(); + @Rule public final ExpectedException expectedException = ExpectedException.none(); + + @Mock private BigQueryTrainingDatasetCreator trainingDatasetCreator; + private TrainingServiceGrpc.TrainingServiceBlockingStub client; + + private Timestamp validStartDate; + private Timestamp validEndDate; + private FeatureSet validFeatureSet; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + + TrainingServiceImpl trainingService = new TrainingServiceImpl(trainingDatasetCreator); + String serverName = InProcessServerBuilder.generateName(); + + grpcCleanup.register( + InProcessServerBuilder.forName(serverName) + .directExecutor() + .addService(trainingService) + .build() + .start()); + + client = + TrainingServiceGrpc.newBlockingStub( + InProcessChannelBuilder.forName(serverName).directExecutor().build()); + + validStartDate = Timestamps.parse("2018-01-02T10:00:20.021-05:00"); + validEndDate = Timestamps.parse("2018-12-01T10:00:20.021-05:00"); + validFeatureSet = + FeatureSet.newBuilder() + .setEntityName("myentity") + .addFeatureIds("myentity.none.feature1") + .addFeatureIds("myentity.second.feature2") + .build(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + public void shouldCallCreateTrainingDatasetWithCorrectRequest() { + DatasetInfo datasetInfo = + DatasetInfo.newBuilder().setName("mydataset").setTableUrl("project.dataset.table").build(); + when(trainingDatasetCreator.createTrainingDataset( + any(FeatureSet.class), + any(Timestamp.class), + any(Timestamp.class), + anyLong(), + anyString())) + .thenReturn(datasetInfo); + + long limit = 9999; + String namePrefix = "mydataset"; + CreateTrainingDatasetRequest request = + CreateTrainingDatasetRequest.newBuilder() + .setFeatureSet(validFeatureSet) + .setStartDate(validStartDate) + .setEndDate(validEndDate) + .setLimit(limit) + .setNamePrefix(namePrefix) + .build(); + + client.createTrainingDataset(request); + + verify(trainingDatasetCreator) + .createTrainingDataset(validFeatureSet, validStartDate, validEndDate, limit, namePrefix); + } + + @Test + public void shouldPropagateCreatedDatasetInfo() { + DatasetInfo datasetInfo = + DatasetInfo.newBuilder().setName("mydataset").setTableUrl("project.dataset.table").build(); + when(trainingDatasetCreator.createTrainingDataset( + any(FeatureSet.class), + any(Timestamp.class), + any(Timestamp.class), + anyLong(), + anyString())) + .thenReturn(datasetInfo); + + long limit = 9999; + String namePrefix = "mydataset"; + CreateTrainingDatasetRequest request = + CreateTrainingDatasetRequest.newBuilder() + .setFeatureSet(validFeatureSet) + .setStartDate(validEndDate) + .setEndDate(validEndDate) + .setLimit(limit) + .setNamePrefix(namePrefix) + .build(); + + CreateTrainingDatasetResponse resp = client.createTrainingDataset(request); + DatasetInfo actual = resp.getDatasetInfo(); + + assertThat(actual, equalTo(datasetInfo)); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + public void shouldThrowExceptionIfFeatureSetEmpty() { + FeatureSet emptyFeatureSet = FeatureSet.newBuilder().setEntityName("myentity").build(); + + CreateTrainingDatasetRequest request = + CreateTrainingDatasetRequest.newBuilder() + .setFeatureSet(emptyFeatureSet) + .setStartDate(validStartDate) + .setEndDate(validEndDate) + .build(); + + expectedException.expect(StatusRuntimeException.class); + expectedException.expectMessage("feature set is empty"); + + client.createTrainingDataset(request); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + public void shouldThrowExceptionIfFeatureSetHasEmptyEntity() { + FeatureSet emptyFeatureSet = FeatureSet.newBuilder().setEntityName("").build(); + + CreateTrainingDatasetRequest request = + CreateTrainingDatasetRequest.newBuilder() + .setFeatureSet(emptyFeatureSet) + .setStartDate(validStartDate) + .setEndDate(validEndDate) + .build(); + + expectedException.expect(StatusRuntimeException.class); + expectedException.expectMessage("entity name in feature set is null or empty"); + + client.createTrainingDataset(request); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + public void shouldThrowExceptionIfFeatureSetHasDifferentEntity() { + FeatureSet emptyFeatureSet = + FeatureSet.newBuilder() + .setEntityName("myentity") + .addFeatureIds("myentity.none.feature1") + .addFeatureIds("driver.none.feature2") + .build(); + + CreateTrainingDatasetRequest request = + CreateTrainingDatasetRequest.newBuilder() + .setFeatureSet(emptyFeatureSet) + .setStartDate(validStartDate) + .setEndDate(validEndDate) + .build(); + + expectedException.expect(StatusRuntimeException.class); + expectedException.expectMessage("feature set contains different entity name: driver"); + + client.createTrainingDataset(request); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + public void shouldThrowExceptionWhenStartDateIsAfterEndDate() throws ParseException { + Timestamp laterStartDate = Timestamps.parse("2020-12-01T10:00:20.021-05:00"); + + CreateTrainingDatasetRequest request = + CreateTrainingDatasetRequest.newBuilder() + .setFeatureSet(validFeatureSet) + .setStartDate(laterStartDate) + .setEndDate(validEndDate) + .build(); + + expectedException.expect(StatusRuntimeException.class); + expectedException.expectMessage("startDate is after endDate"); + + client.createTrainingDataset(request); + } +} diff --git a/core/src/test/java/feast/core/training/BigQueryTrainingDatasetCreatorTest.java b/core/src/test/java/feast/core/training/BigQueryTrainingDatasetCreatorTest.java new file mode 100644 index 00000000000..f4947d7856a --- /dev/null +++ b/core/src/test/java/feast/core/training/BigQueryTrainingDatasetCreatorTest.java @@ -0,0 +1,130 @@ +/* + * Copyright 2018 The Feast Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package feast.core.training; + +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.google.cloud.bigquery.BigQuery; +import com.google.protobuf.Timestamp; +import com.google.protobuf.util.Timestamps; +import feast.core.TrainingServiceProto.DatasetInfo; +import feast.core.TrainingServiceProto.FeatureSet; +import java.time.Clock; +import java.time.Instant; +import java.util.Arrays; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +public class BigQueryTrainingDatasetCreatorTest { + public static final String projectId = "the-project"; + public static final String datasetPrefix = "feast"; + // class under test + private BigQueryTrainingDatasetCreator creator; + @Mock private BigQueryTrainingDatasetTemplater templater; + @Mock private BigQuery bq; + @Mock private Clock clock; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + + creator = new BigQueryTrainingDatasetCreator(templater, bq, clock, projectId, datasetPrefix); + + when(templater.createQuery( + any(FeatureSet.class), any(Timestamp.class), any(Timestamp.class), anyLong())) + .thenReturn("SELECT * FROM `project.dataset.table`"); + } + + @Test + public void shouldCreateCorrectDatasetIfPrefixNotSpecified() { + String entityName = "myentity"; + + FeatureSet featureSet = + FeatureSet.newBuilder() + .setEntityName(entityName) + .addAllFeatureIds(Arrays.asList("myentity.none.feature1", "myentity.none.feature2")) + .build(); + + Timestamp startDate = + Timestamps.fromSeconds(Instant.parse("2018-01-01T10:15:30.00Z").getEpochSecond()); + Timestamp endDate = + Timestamps.fromSeconds(Instant.parse("2019-01-01T10:15:30.00Z").getEpochSecond()); + long limit = 999; + String namePrefix = ""; + + DatasetInfo dsInfo = + creator.createTrainingDataset(featureSet, startDate, endDate, limit, namePrefix); + assertThat(dsInfo.getName(), equalTo("myentity_0_20180101_20190101")); + assertThat( + dsInfo.getTableUrl(), + equalTo( + String.format( + "%s.%s_%s.%s", projectId, datasetPrefix, entityName, "0_20180101_20190101"))); + } + + @Test + public void shouldCreateCorrectDatasetIfPrefixIsSpecified() { + String entityName = "myentity"; + + FeatureSet featureSet = + FeatureSet.newBuilder() + .setEntityName(entityName) + .addAllFeatureIds(Arrays.asList("myentity.none.feature1", "myentity.none.feature2")) + .build(); + + Timestamp startDate = + Timestamps.fromSeconds(Instant.parse("2018-01-01T10:15:30.00Z").getEpochSecond()); + Timestamp endDate = + Timestamps.fromSeconds(Instant.parse("2019-01-01T10:15:30.00Z").getEpochSecond()); + long limit = 999; + String namePrefix = "mydataset"; + + DatasetInfo dsInfo = + creator.createTrainingDataset(featureSet, startDate, endDate, limit, namePrefix); + assertThat( + dsInfo.getTableUrl(), + equalTo( + String.format( + "%s.%s_%s.%s", projectId, datasetPrefix, entityName, "mydataset_0_20180101_20190101"))); + assertThat(dsInfo.getName(), equalTo("mydataset_0_20180101_20190101")); + } + + @Test + public void shouldPassArgumentToTemplater() { + FeatureSet featureSet = + FeatureSet.newBuilder() + .setEntityName("myentity") + .addAllFeatureIds(Arrays.asList("myentity.none.feature1", "myentity.none.feature2")) + .build(); + + Timestamp startDate = Timestamps.fromSeconds(0); + Timestamp endDate = Timestamps.fromSeconds(1000); + long limit = 999; + String namePrefix = ""; + + creator.createTrainingDataset(featureSet, startDate, endDate, limit, namePrefix); + + verify(templater).createQuery(featureSet, startDate, endDate, limit); + } +} diff --git a/core/src/test/java/feast/core/training/BigQueryTrainingDatasetTemplaterTest.java b/core/src/test/java/feast/core/training/BigQueryTrainingDatasetTemplaterTest.java new file mode 100644 index 00000000000..a700c1a31b1 --- /dev/null +++ b/core/src/test/java/feast/core/training/BigQueryTrainingDatasetTemplaterTest.java @@ -0,0 +1,264 @@ +/* + * Copyright 2018 The Feast Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package feast.core.training; + +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.google.common.base.Charsets; +import com.google.common.io.CharStreams; +import com.google.protobuf.Timestamp; +import com.google.protobuf.util.Timestamps; +import com.hubspot.jinjava.Jinjava; +import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.dao.FeatureInfoRepository; +import feast.core.model.EntityInfo; +import feast.core.model.FeatureInfo; +import feast.core.model.StorageInfo; +import feast.core.training.BigQueryTrainingDatasetTemplater.FeatureGroup; +import feast.specs.EntitySpecProto.EntitySpec; +import feast.specs.FeatureSpecProto.DataStore; +import feast.specs.FeatureSpecProto.DataStores; +import feast.specs.FeatureSpecProto.FeatureSpec; +import feast.specs.StorageSpecProto.StorageSpec; +import feast.types.GranularityProto.Granularity; +import feast.types.GranularityProto.Granularity.Enum; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import org.hibernate.engine.jdbc.internal.BasicFormatterImpl; +import org.junit.Before; +import org.junit.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +public class BigQueryTrainingDatasetTemplaterTest { + private BigQueryTrainingDatasetTemplater templater; + private BasicFormatterImpl formatter = new BasicFormatterImpl(); + + @Mock private FeatureInfoRepository featureInfoRespository; + private String sqlTemplate; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + + Jinjava jinjava = new Jinjava(); + Resource resource = new ClassPathResource("templates/bq_training.tmpl"); + InputStream resourceInputStream = resource.getInputStream(); + sqlTemplate = CharStreams.toString(new InputStreamReader(resourceInputStream, Charsets.UTF_8)); + templater = new BigQueryTrainingDatasetTemplater(jinjava, sqlTemplate, featureInfoRespository); + } + + @Test(expected = NoSuchElementException.class) + public void shouldThrowNoSuchElementExceptionIfFeatureNotFound() { + FeatureSet fs = + FeatureSet.newBuilder() + .setEntityName("myentity") + .addAllFeatureIds(Arrays.asList("myentity.day.feature1", "myentity.day.feature2")) + .build(); + templater.createQuery(fs, Timestamps.fromSeconds(0), Timestamps.fromSeconds(1), 0); + } + + @Test + public void shouldPassCorrectArgumentToTemplateEngine() { + Jinjava jinjava = mock(Jinjava.class); + templater = new BigQueryTrainingDatasetTemplater(jinjava, sqlTemplate, featureInfoRespository); + + Timestamp startDate = + Timestamps.fromSeconds(Instant.parse("2018-01-01T00:00:00.00Z").getEpochSecond()); + Timestamp endDate = + Timestamps.fromSeconds(Instant.parse("2019-01-01T00:00:00.00Z").getEpochSecond()); + int limit = 100; + String featureId = "myentity.day.feature1"; + String tableId = "project.dataset.myentity_day"; + + when(featureInfoRespository.findAllById(any(List.class))) + .thenReturn(Collections.singletonList(createFeatureInfo(featureId, Enum.DAY, tableId))); + + FeatureSet fs = + FeatureSet.newBuilder() + .setEntityName("myentity") + .addAllFeatureIds(Arrays.asList(featureId)) + .build(); + + templater.createQuery(fs, startDate, endDate, limit); + + ArgumentCaptor templateArg = ArgumentCaptor.forClass(String.class); + ArgumentCaptor> contextArg = ArgumentCaptor.forClass(Map.class); + verify(jinjava).render(templateArg.capture(), contextArg.capture()); + + String actualTemplate = templateArg.getValue(); + assertThat(actualTemplate, equalTo(sqlTemplate)); + + Map actualContext = contextArg.getValue(); + assertThat(actualContext.get("start_date"), equalTo("2018-01-01")); + assertThat(actualContext.get("end_date"), equalTo("2019-01-01")); + assertThat(actualContext.get("limit"), equalTo(String.valueOf(limit))); + + List featureGroups = (List) actualContext.get("feature_groups"); + assertThat(featureGroups.size(), equalTo(1)); + assertThat(featureGroups.get(0).granularity, equalTo(Enum.DAY)); + assertThat(featureGroups.get(0).features.size(), equalTo(1)); + assertThat(featureGroups.get(0).features.get(0).featureId, equalTo(featureId)); + assertThat(featureGroups.get(0).features.get(0).granularity, equalTo(Enum.DAY)); + assertThat(featureGroups.get(0).features.get(0).tableId, equalTo(tableId)); + } + + @Test + public void shouldRenderCorrectQuery1() throws Exception { + String tableId1 = "project.dataset.myentity_day"; + String featureId1 = "myentity.day.feature1"; + String featureId2 = "myentity.day.feature2"; + + FeatureInfo featureInfo1 = createFeatureInfo(featureId1, Enum.DAY, tableId1); + FeatureInfo featureInfo2 = createFeatureInfo(featureId2, Enum.DAY, tableId1); + + String tableId2 = "project.dataset.myentity_none"; + String featureId3 = "myentity.none.feature3"; + FeatureInfo featureInfo3 = createFeatureInfo(featureId3, Enum.NONE, tableId2); + + when(featureInfoRespository.findAllById(any(List.class))) + .thenReturn(Arrays.asList(featureInfo1, featureInfo2, featureInfo3)); + + FeatureSet fs = + FeatureSet.newBuilder() + .setEntityName("myentity") + .addAllFeatureIds(Arrays.asList(featureId1, featureId2, featureId3)) + .build(); + Timestamp startDate = + Timestamps.fromSeconds(Instant.parse("2018-01-02T00:00:00.00Z").getEpochSecond()); + Timestamp endDate = + Timestamps.fromSeconds(Instant.parse("2018-01-30T12:11:11.00Z").getEpochSecond()); + int limit = 100; + + String query = templater.createQuery(fs, startDate, endDate, limit); + + checkExpectedQuery(query, "expQuery1.sql"); + } + + @Test + public void shouldRenderCorrectQuery2() throws Exception { + String tableId1 = "project.dataset.myentity_day"; + String featureId1 = "myentity.day.feature1"; + String featureId2 = "myentity.day.feature2"; + + FeatureInfo featureInfo1 = createFeatureInfo(featureId1, Enum.DAY, tableId1); + FeatureInfo featureInfo2 = createFeatureInfo(featureId2, Enum.DAY, tableId1); + + String tableId2 = "project.dataset.myentity_none"; + String featureId3 = "myentity.none.feature3"; + FeatureInfo featureInfo3 = createFeatureInfo(featureId3, Enum.NONE, tableId2); + + when(featureInfoRespository.findAllById(any(List.class))) + .thenReturn(Arrays.asList(featureInfo1, featureInfo2, featureInfo3)); + + FeatureSet fs = + FeatureSet.newBuilder() + .setEntityName("myentity") + .addAllFeatureIds(Arrays.asList(featureId1, featureId2, featureId3)) + .build(); + Timestamp startDate = + Timestamps.fromSeconds(Instant.parse("2018-01-02T00:00:00.00Z").getEpochSecond()); + Timestamp endDate = + Timestamps.fromSeconds(Instant.parse("2018-01-30T12:11:11.00Z").getEpochSecond()); + int limit = 0; + + String query = templater.createQuery(fs, startDate, endDate, limit); + + checkExpectedQuery(query, "expQuery2.sql"); + } + + @Test + public void shouldRenderCorrectQuery3() throws Exception { + List featureInfos = new ArrayList<>(); + List featureIds = new ArrayList<>(); + for (Granularity.Enum granularity : Granularity.Enum.values()) { + if (granularity.equals(Enum.UNRECOGNIZED)) { + continue; + } + + String granularityStr = granularity.toString().toLowerCase(); + String tableId = "project.dataset.myentity_" + granularityStr; + String featureId = "myentity." + granularityStr + ".feature1"; + + featureInfos.add(createFeatureInfo(featureId, granularity, tableId)); + featureIds.add(featureId); + } + + when(featureInfoRespository.findAllById(any(List.class))).thenReturn(featureInfos); + + Timestamp startDate = + Timestamps.fromSeconds(Instant.parse("2018-01-02T00:00:00.00Z").getEpochSecond()); + Timestamp endDate = + Timestamps.fromSeconds(Instant.parse("2018-01-30T12:11:11.00Z").getEpochSecond()); + FeatureSet featureSet = + FeatureSet.newBuilder().setEntityName("myentity").addAllFeatureIds(featureIds).build(); + + String query = templater.createQuery(featureSet, startDate, endDate, 1000); + + checkExpectedQuery(query, "expQuery3.sql"); + } + + private void checkExpectedQuery(String query, String pathToExpQuery) throws Exception { + String tmpl = + CharStreams.toString( + new InputStreamReader( + getClass().getClassLoader().getResourceAsStream("sql/" + pathToExpQuery), + Charsets.UTF_8)); + + String expQuery = formatter.format(tmpl.replaceAll("\\s+", " ").trim()); + query = formatter.format(query.replaceAll("\\s+", " ").trim()); + + assertThat(query, equalTo(expQuery)); + } + + private FeatureInfo createFeatureInfo(String id, Granularity.Enum granularity, String tableId) { + StorageSpec storageSpec = + StorageSpec.newBuilder() + .setId("BQ") + .setType("bigquery") + .putOptions("project", tableId.split("\\.")[0]) + .putOptions("dataset", tableId.split("\\.")[1]) + .build(); + StorageInfo storageInfo = new StorageInfo(storageSpec); + + FeatureSpec fs = + FeatureSpec.newBuilder() + .setId(id) + .setGranularity(granularity) + .setDataStores(DataStores.newBuilder().setWarehouse(DataStore.newBuilder().setId("BQ"))) + .build(); + + EntitySpec entitySpec = EntitySpec.newBuilder().setName(id.split("\\.")[0]).build(); + EntityInfo entityInfo = new EntityInfo(entitySpec); + return new FeatureInfo(fs, entityInfo, null, storageInfo, null); + } +} diff --git a/core/src/test/resources/sql/expQuery1.sql b/core/src/test/resources/sql/expQuery1.sql new file mode 100644 index 00000000000..141932ecabb --- /dev/null +++ b/core/src/test/resources/sql/expQuery1.sql @@ -0,0 +1,59 @@ +WITH raw_project_dataset_myentity_day AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature1 IGNORE NULLS) OVER w AS myentity_day_feature1 , + FIRST_VALUE(feature2 IGNORE NULLS) OVER w AS myentity_day_feature2 +FROM + `project.dataset.myentity_day` +WHERE + event_timestamp >= TIMESTAMP("2018-01-02") + AND event_timestamp <= TIMESTAMP(DATETIME_ADD("2018-01-30", INTERVAL 1 DAY)) WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_day AS ( SELECT + * +FROM + raw_project_dataset_myentity_day +WHERE + rownum = 1 ) , raw_project_dataset_myentity_none AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature3 IGNORE NULLS) OVER w AS myentity_none_feature3 +FROM + `project.dataset.myentity_none` WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_none AS ( SELECT + * +FROM + raw_project_dataset_myentity_none +WHERE + rownum = 1 ) SELECT + project_dataset_myentity_day.id, + project_dataset_myentity_day.event_timestamp , + project_dataset_myentity_day.myentity_day_feature1, + project_dataset_myentity_day.myentity_day_feature2, + project_dataset_myentity_none.myentity_none_feature3 +FROM + project_dataset_myentity_day FULL +JOIN + project_dataset_myentity_none + ON project_dataset_myentity_day.id = project_dataset_myentity_none.id LIMIT 100 \ No newline at end of file diff --git a/core/src/test/resources/sql/expQuery2.sql b/core/src/test/resources/sql/expQuery2.sql new file mode 100644 index 00000000000..a083fa68125 --- /dev/null +++ b/core/src/test/resources/sql/expQuery2.sql @@ -0,0 +1,59 @@ +WITH raw_project_dataset_myentity_day AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature1 IGNORE NULLS) OVER w AS myentity_day_feature1 , + FIRST_VALUE(feature2 IGNORE NULLS) OVER w AS myentity_day_feature2 +FROM + `project.dataset.myentity_day` +WHERE + event_timestamp >= TIMESTAMP("2018-01-02") + AND event_timestamp <= TIMESTAMP(DATETIME_ADD("2018-01-30", INTERVAL 1 DAY)) WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_day AS ( SELECT + * +FROM + raw_project_dataset_myentity_day +WHERE + rownum = 1 ) , raw_project_dataset_myentity_none AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature3 IGNORE NULLS) OVER w AS myentity_none_feature3 +FROM + `project.dataset.myentity_none` WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_none AS ( SELECT + * +FROM + raw_project_dataset_myentity_none +WHERE + rownum = 1 ) SELECT + project_dataset_myentity_day.id, + project_dataset_myentity_day.event_timestamp , + project_dataset_myentity_day.myentity_day_feature1, + project_dataset_myentity_day.myentity_day_feature2, + project_dataset_myentity_none.myentity_none_feature3 +FROM + project_dataset_myentity_day FULL +JOIN + project_dataset_myentity_none + ON project_dataset_myentity_day.id = project_dataset_myentity_none.id \ No newline at end of file diff --git a/core/src/test/resources/sql/expQuery3.sql b/core/src/test/resources/sql/expQuery3.sql new file mode 100644 index 00000000000..a9862d9ed06 --- /dev/null +++ b/core/src/test/resources/sql/expQuery3.sql @@ -0,0 +1,150 @@ +WITH raw_project_dataset_myentity_second AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature1 IGNORE NULLS) OVER w AS myentity_second_feature1 +FROM + `project.dataset.myentity_second` +WHERE + event_timestamp >= TIMESTAMP("2018-01-02") + AND event_timestamp <= TIMESTAMP(DATETIME_ADD("2018-01-30", INTERVAL 1 DAY)) WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_second AS ( SELECT + * +FROM + raw_project_dataset_myentity_second +WHERE + rownum = 1 ) , raw_project_dataset_myentity_minute AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature1 IGNORE NULLS) OVER w AS myentity_minute_feature1 +FROM + `project.dataset.myentity_minute` +WHERE + event_timestamp >= TIMESTAMP("2018-01-02") + AND event_timestamp <= TIMESTAMP(DATETIME_ADD("2018-01-30", INTERVAL 1 DAY)) WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_minute AS ( SELECT + * +FROM + raw_project_dataset_myentity_minute +WHERE + rownum = 1 ) , raw_project_dataset_myentity_hour AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature1 IGNORE NULLS) OVER w AS myentity_hour_feature1 +FROM + `project.dataset.myentity_hour` +WHERE + event_timestamp >= TIMESTAMP("2018-01-02") + AND event_timestamp <= TIMESTAMP(DATETIME_ADD("2018-01-30", INTERVAL 1 DAY)) WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_hour AS ( SELECT + * +FROM + raw_project_dataset_myentity_hour +WHERE + rownum = 1 ) , raw_project_dataset_myentity_day AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature1 IGNORE NULLS) OVER w AS myentity_day_feature1 +FROM + `project.dataset.myentity_day` +WHERE + event_timestamp >= TIMESTAMP("2018-01-02") + AND event_timestamp <= TIMESTAMP(DATETIME_ADD("2018-01-30", INTERVAL 1 DAY)) WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_day AS ( SELECT + * +FROM + raw_project_dataset_myentity_day +WHERE + rownum = 1 ) , raw_project_dataset_myentity_none AS (SELECT + ROW_NUMBER() OVER (PARTITION +BY + id, + event_timestamp +ORDER BY + created_timestamp DESC) rownum, + id, + event_timestamp, + created_timestamp , + FIRST_VALUE(feature1 IGNORE NULLS) OVER w AS myentity_none_feature1 +FROM + `project.dataset.myentity_none` WINDOW w AS ( PARTITION +BY + id, + event_timestamp +ORDER BY + event_timestamp DESC )), project_dataset_myentity_none AS ( SELECT + * +FROM + raw_project_dataset_myentity_none +WHERE + rownum = 1 ) SELECT + project_dataset_myentity_second.id, + project_dataset_myentity_second.event_timestamp , + project_dataset_myentity_second.myentity_second_feature1, + project_dataset_myentity_minute.myentity_minute_feature1, + project_dataset_myentity_hour.myentity_hour_feature1, + project_dataset_myentity_day.myentity_day_feature1, + project_dataset_myentity_none.myentity_none_feature1 +FROM + project_dataset_myentity_second FULL +JOIN + project_dataset_myentity_minute + ON project_dataset_myentity_second.id = project_dataset_myentity_minute.id + AND TIMESTAMP_TRUNC(project_dataset_myentity_second.event_timestamp, + MINUTE) = project_dataset_myentity_minute.event_timestampFULL +JOIN + project_dataset_myentity_hour + ON project_dataset_myentity_second.id = project_dataset_myentity_hour.id + AND TIMESTAMP_TRUNC(project_dataset_myentity_second.event_timestamp, + HOUR) = project_dataset_myentity_hour.event_timestampFULL +JOIN + project_dataset_myentity_day + ON project_dataset_myentity_second.id = project_dataset_myentity_day.id + AND TIMESTAMP_TRUNC(project_dataset_myentity_second.event_timestamp, + DAY) = project_dataset_myentity_day.event_timestampFULL +JOIN + project_dataset_myentity_none + ON project_dataset_myentity_second.id = project_dataset_myentity_none.id LIMIT 1000 diff --git a/protos/feast/core/TrainingService.proto b/protos/feast/core/TrainingService.proto new file mode 100644 index 00000000000..7ec2cbd01bb --- /dev/null +++ b/protos/feast/core/TrainingService.proto @@ -0,0 +1,68 @@ +/* + * Copyright 2018 The Feast Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto3"; + +package feast.core; + +import "google/protobuf/timestamp.proto"; + +option java_package = "feast.core"; +option java_outer_classname = "TrainingServiceProto"; +option go_package = "github.com/gojektech/feast/protos/generated/go/feast/core"; + +service TrainingService { + // Create training dataset for a feature set + rpc CreateTrainingDataset(TrainingServiceTypes.CreateTrainingDatasetRequest) returns (TrainingServiceTypes.CreateTrainingDatasetResponse){}; +} + +message TrainingServiceTypes { + message CreateTrainingDatasetRequest { + // set of features for which its training data should be created + FeatureSet featureSet = 1; + // start date of the training data (inclusive) + google.protobuf.Timestamp startDate = 2; + // end date of the training data (inclusive) + google.protobuf.Timestamp endDate = 3; + // (optional) number of row that should be generated + // (default: none) + int64 limit = 4; + // (optional) prefix for dataset name + // (default: generated based on feature set's entity, current date, start date, and end date) + string namePrefix = 5; + } + + message CreateTrainingDatasetResponse { + // information of the created training dataset + DatasetInfo datasetInfo = 1; + } +} + +// Represent a collection of feature having same entity name +message FeatureSet { + // entity related to this feature set + string entityName = 1; + // list of feature id in this feature set + repeated string featureIds = 2; +} + +// Representation of training dataset information +message DatasetInfo { + // name of dataset + string name = 1; + // URL to table location of the training dataset + string tableUrl = 2; +} \ No newline at end of file From 31edfd0c706c3f2436d6abaea6bc9c110934833e Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Sat, 5 Jan 2019 00:13:13 +0800 Subject: [PATCH 32/50] Fix failing test --- sdk/python/tests/sdk/utils/test_bq_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py index e954575f5ee..6fd7594efa5 100644 --- a/sdk/python/tests/sdk/utils/test_bq_utils.py +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -188,7 +188,7 @@ class _Bucket(): def __init__(self, blob): self._blob = blob - def blob(self): + def blob(self, name): return self._blob From 2a7e2a4ddc8bf442a494670b93512dc31a82589d Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Sat, 5 Jan 2019 00:36:28 +0800 Subject: [PATCH 33/50] Update generated python file --- protos/Makefile | 10 +- sdk/python/feast/core/CoreService_pb2.py | 18 +- sdk/python/feast/core/CoreService_pb2_grpc.py | 14 - sdk/python/feast/core/JobService_pb2.py | 18 +- sdk/python/feast/core/JobService_pb2_grpc.py | 14 - sdk/python/feast/core/TrainingService_pb2.py | 291 ++++++++++++++++++ .../feast/core/TrainingService_pb2_grpc.py | 46 +++ sdk/python/feast/core/UIService_pb2.py | 18 +- sdk/python/feast/core/UIService_pb2_grpc.py | 14 - sdk/python/feast/serving/Serving_pb2.py | 18 +- sdk/python/feast/serving/Serving_pb2_grpc.py | 14 - sdk/python/feast/specs/EntitySpec_pb2.py | 18 +- .../feast/specs/FeatureGroupSpec_pb2.py | 18 +- sdk/python/feast/specs/FeatureSpec_pb2.py | 18 +- sdk/python/feast/specs/ImportSpec_pb2.py | 18 +- sdk/python/feast/specs/StorageSpec_pb2.py | 18 +- sdk/python/feast/storage/BigTable_pb2.py | 18 +- sdk/python/feast/storage/Redis_pb2.py | 18 +- .../feast/types/FeatureRowExtended_pb2.py | 18 +- sdk/python/feast/types/FeatureRow_pb2.py | 84 +++-- sdk/python/feast/types/Feature_pb2.py | 18 +- sdk/python/feast/types/Granularity_pb2.py | 18 +- sdk/python/feast/types/Value_pb2.py | 18 +- 23 files changed, 441 insertions(+), 316 deletions(-) create mode 100644 sdk/python/feast/core/TrainingService_pb2.py create mode 100644 sdk/python/feast/core/TrainingService_pb2_grpc.py diff --git a/protos/Makefile b/protos/Makefile index 36f2e9759a6..e2f61a8c37e 100644 --- a/protos/Makefile +++ b/protos/Makefile @@ -1,6 +1,12 @@ .PHONY: go -dirs = core jobs serving specs storage types +dirs = core serving specs storage types +service_dirs = core serving gen-go: - @$(foreach dir,$(dirs),protoc -I/usr/local/include -I. --go_out=plugins=grpc:$$GOPATH/src feast/$(dir)/*.proto;) \ No newline at end of file + @$(foreach dir,$(dirs),protoc -I/usr/local/include -I. --go_out=plugins=grpc:$$GOPATH/src feast/$(dir)/*.proto;) + +gen-python: + pip install grpcio-tools + @$(foreach dir,$(dirs),python -m grpc_tools.protoc -I. --python_out=../sdk/python/ feast/$(dir)/*.proto;) + @$(foreach dir,$(service_dirs),python -m grpc_tools.protoc -I. --grpc_python_out=../sdk/python/ feast/$(dir)/*.proto;) \ No newline at end of file diff --git a/sdk/python/feast/core/CoreService_pb2.py b/sdk/python/feast/core/CoreService_pb2.py index fe84472900c..93212793dff 100644 --- a/sdk/python/feast/core/CoreService_pb2.py +++ b/sdk/python/feast/core/CoreService_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/core/CoreService.proto @@ -37,8 +23,8 @@ name='feast/core/CoreService.proto', package='feast.core', syntax='proto3', - serialized_options=_b('\n\nfeast.coreB\020CoreServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), - serialized_pb=_b('\n\x1c\x66\x65\x61st/core/CoreService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/EntitySpec.proto\x1a\x1d\x66\x65\x61st/specs/FeatureSpec.proto\x1a\"feast/specs/FeatureGroupSpec.proto\x1a\x1d\x66\x65\x61st/specs/StorageSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xc9\x05\n\x10\x43oreServiceTypes\x1a!\n\x12GetEntitiesRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a@\n\x13GetEntitiesResponse\x12)\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x17.feast.specs.EntitySpec\x1a\x41\n\x14ListEntitiesResponse\x12)\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x17.feast.specs.EntitySpec\x1a!\n\x12GetFeaturesRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a\x41\n\x13GetFeaturesResponse\x12*\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x18.feast.specs.FeatureSpec\x1a\x42\n\x14ListFeaturesResponse\x12*\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x18.feast.specs.FeatureSpec\x1a \n\x11GetStorageRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a\x44\n\x12GetStorageResponse\x12.\n\x0cstorageSpecs\x18\x01 \x03(\x0b\x32\x18.feast.specs.StorageSpec\x1a\x45\n\x13ListStorageResponse\x12.\n\x0cstorageSpecs\x18\x01 \x03(\x0b\x32\x18.feast.specs.StorageSpec\x1a)\n\x13\x41pplyEntityResponse\x12\x12\n\nentityName\x18\x01 \x01(\t\x1a)\n\x14\x41pplyFeatureResponse\x12\x11\n\tfeatureId\x18\x01 \x01(\t\x1a\x33\n\x19\x41pplyFeatureGroupResponse\x12\x16\n\x0e\x66\x65\x61tureGroupId\x18\x01 \x01(\t\x1a)\n\x14\x41pplyStorageResponse\x12\x11\n\tstorageId\x18\x01 \x01(\t2\x83\x08\n\x0b\x43oreService\x12r\n\x0bGetEntities\x12/.feast.core.CoreServiceTypes.GetEntitiesRequest\x1a\x30.feast.core.CoreServiceTypes.GetEntitiesResponse\"\x00\x12[\n\x0cListEntities\x12\x16.google.protobuf.Empty\x1a\x31.feast.core.CoreServiceTypes.ListEntitiesResponse\"\x00\x12r\n\x0bGetFeatures\x12/.feast.core.CoreServiceTypes.GetFeaturesRequest\x1a\x30.feast.core.CoreServiceTypes.GetFeaturesResponse\"\x00\x12[\n\x0cListFeatures\x12\x16.google.protobuf.Empty\x1a\x31.feast.core.CoreServiceTypes.ListFeaturesResponse\"\x00\x12o\n\nGetStorage\x12..feast.core.CoreServiceTypes.GetStorageRequest\x1a/.feast.core.CoreServiceTypes.GetStorageResponse\"\x00\x12Y\n\x0bListStorage\x12\x16.google.protobuf.Empty\x1a\x30.feast.core.CoreServiceTypes.ListStorageResponse\"\x00\x12]\n\x0c\x41pplyFeature\x12\x18.feast.specs.FeatureSpec\x1a\x31.feast.core.CoreServiceTypes.ApplyFeatureResponse\"\x00\x12l\n\x11\x41pplyFeatureGroup\x12\x1d.feast.specs.FeatureGroupSpec\x1a\x36.feast.core.CoreServiceTypes.ApplyFeatureGroupResponse\"\x00\x12Z\n\x0b\x41pplyEntity\x12\x17.feast.specs.EntitySpec\x1a\x30.feast.core.CoreServiceTypes.ApplyEntityResponse\"\x00\x12]\n\x0c\x41pplyStorage\x12\x18.feast.specs.StorageSpec\x1a\x31.feast.core.CoreServiceTypes.ApplyStorageResponse\"\x00\x42Y\n\nfeast.coreB\x10\x43oreServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + serialized_options=_b('\n\nfeast.coreB\020CoreServiceProtoZ5github.com/gojek/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n\x1c\x66\x65\x61st/core/CoreService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/EntitySpec.proto\x1a\x1d\x66\x65\x61st/specs/FeatureSpec.proto\x1a\"feast/specs/FeatureGroupSpec.proto\x1a\x1d\x66\x65\x61st/specs/StorageSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xc9\x05\n\x10\x43oreServiceTypes\x1a!\n\x12GetEntitiesRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a@\n\x13GetEntitiesResponse\x12)\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x17.feast.specs.EntitySpec\x1a\x41\n\x14ListEntitiesResponse\x12)\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x17.feast.specs.EntitySpec\x1a!\n\x12GetFeaturesRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a\x41\n\x13GetFeaturesResponse\x12*\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x18.feast.specs.FeatureSpec\x1a\x42\n\x14ListFeaturesResponse\x12*\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x18.feast.specs.FeatureSpec\x1a \n\x11GetStorageRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x1a\x44\n\x12GetStorageResponse\x12.\n\x0cstorageSpecs\x18\x01 \x03(\x0b\x32\x18.feast.specs.StorageSpec\x1a\x45\n\x13ListStorageResponse\x12.\n\x0cstorageSpecs\x18\x01 \x03(\x0b\x32\x18.feast.specs.StorageSpec\x1a)\n\x13\x41pplyEntityResponse\x12\x12\n\nentityName\x18\x01 \x01(\t\x1a)\n\x14\x41pplyFeatureResponse\x12\x11\n\tfeatureId\x18\x01 \x01(\t\x1a\x33\n\x19\x41pplyFeatureGroupResponse\x12\x16\n\x0e\x66\x65\x61tureGroupId\x18\x01 \x01(\t\x1a)\n\x14\x41pplyStorageResponse\x12\x11\n\tstorageId\x18\x01 \x01(\t2\x83\x08\n\x0b\x43oreService\x12r\n\x0bGetEntities\x12/.feast.core.CoreServiceTypes.GetEntitiesRequest\x1a\x30.feast.core.CoreServiceTypes.GetEntitiesResponse\"\x00\x12[\n\x0cListEntities\x12\x16.google.protobuf.Empty\x1a\x31.feast.core.CoreServiceTypes.ListEntitiesResponse\"\x00\x12r\n\x0bGetFeatures\x12/.feast.core.CoreServiceTypes.GetFeaturesRequest\x1a\x30.feast.core.CoreServiceTypes.GetFeaturesResponse\"\x00\x12[\n\x0cListFeatures\x12\x16.google.protobuf.Empty\x1a\x31.feast.core.CoreServiceTypes.ListFeaturesResponse\"\x00\x12o\n\nGetStorage\x12..feast.core.CoreServiceTypes.GetStorageRequest\x1a/.feast.core.CoreServiceTypes.GetStorageResponse\"\x00\x12Y\n\x0bListStorage\x12\x16.google.protobuf.Empty\x1a\x30.feast.core.CoreServiceTypes.ListStorageResponse\"\x00\x12]\n\x0c\x41pplyFeature\x12\x18.feast.specs.FeatureSpec\x1a\x31.feast.core.CoreServiceTypes.ApplyFeatureResponse\"\x00\x12l\n\x11\x41pplyFeatureGroup\x12\x1d.feast.specs.FeatureGroupSpec\x1a\x36.feast.core.CoreServiceTypes.ApplyFeatureGroupResponse\"\x00\x12Z\n\x0b\x41pplyEntity\x12\x17.feast.specs.EntitySpec\x1a\x30.feast.core.CoreServiceTypes.ApplyEntityResponse\"\x00\x12]\n\x0c\x41pplyStorage\x12\x18.feast.specs.StorageSpec\x1a\x31.feast.core.CoreServiceTypes.ApplyStorageResponse\"\x00\x42U\n\nfeast.coreB\x10\x43oreServiceProtoZ5github.com/gojek/feast/protos/generated/go/feast/coreb\x06proto3') , dependencies=[feast_dot_specs_dot_EntitySpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureGroupSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_StorageSpec__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,]) diff --git a/sdk/python/feast/core/CoreService_pb2_grpc.py b/sdk/python/feast/core/CoreService_pb2_grpc.py index f56409c234b..6331551fda6 100644 --- a/sdk/python/feast/core/CoreService_pb2_grpc.py +++ b/sdk/python/feast/core/CoreService_pb2_grpc.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc diff --git a/sdk/python/feast/core/JobService_pb2.py b/sdk/python/feast/core/JobService_pb2.py index 54344065b4c..fd208380484 100644 --- a/sdk/python/feast/core/JobService_pb2.py +++ b/sdk/python/feast/core/JobService_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/core/JobService.proto @@ -35,8 +21,8 @@ name='feast/core/JobService.proto', package='feast.core', syntax='proto3', - serialized_options=_b('\n\nfeast.coreB\017JobServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), - serialized_pb=_b('\n\x1b\x66\x65\x61st/core/JobService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/ImportSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc9\x05\n\x0fJobServiceTypes\x1aS\n\x16SubmitImportJobRequest\x12+\n\nimportSpec\x18\x01 \x01(\x0b\x32\x17.feast.specs.ImportSpec\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a(\n\x17SubmitImportJobResponse\x12\r\n\x05jobId\x18\x01 \x01(\t\x1aG\n\x10ListJobsResponse\x12\x33\n\x04jobs\x18\x01 \x03(\x0b\x32%.feast.core.JobServiceTypes.JobDetail\x1a\x1b\n\rGetJobRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a\x44\n\x0eGetJobResponse\x12\x32\n\x03job\x18\x01 \x01(\x0b\x32%.feast.core.JobServiceTypes.JobDetail\x1a\x1d\n\x0f\x41\x62ortJobRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a\x1e\n\x10\x41\x62ortJobResponse\x12\n\n\x02id\x18\x01 \x01(\t\x1a\xcb\x02\n\tJobDetail\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05\x65xtId\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0e\n\x06runner\x18\x04 \x01(\t\x12\x0e\n\x06status\x18\x05 \x01(\t\x12\x10\n\x08\x65ntities\x18\x06 \x03(\t\x12\x10\n\x08\x66\x65\x61tures\x18\x07 \x03(\t\x12\x43\n\x07metrics\x18\x08 \x03(\x0b\x32\x32.feast.core.JobServiceTypes.JobDetail.MetricsEntry\x12/\n\x0blastUpdated\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x63reated\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a.\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x32\x9c\x03\n\nJobService\x12t\n\tSubmitJob\x12\x32.feast.core.JobServiceTypes.SubmitImportJobRequest\x1a\x33.feast.core.JobServiceTypes.SubmitImportJobResponse\x12P\n\x08ListJobs\x12\x16.google.protobuf.Empty\x1a,.feast.core.JobServiceTypes.ListJobsResponse\x12_\n\x06GetJob\x12).feast.core.JobServiceTypes.GetJobRequest\x1a*.feast.core.JobServiceTypes.GetJobResponse\x12\x65\n\x08\x41\x62ortJob\x12+.feast.core.JobServiceTypes.AbortJobRequest\x1a,.feast.core.JobServiceTypes.AbortJobResponseBX\n\nfeast.coreB\x0fJobServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + serialized_options=_b('\n\nfeast.coreB\017JobServiceProtoZ5github.com/gojek/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n\x1b\x66\x65\x61st/core/JobService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/ImportSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc9\x05\n\x0fJobServiceTypes\x1aS\n\x16SubmitImportJobRequest\x12+\n\nimportSpec\x18\x01 \x01(\x0b\x32\x17.feast.specs.ImportSpec\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a(\n\x17SubmitImportJobResponse\x12\r\n\x05jobId\x18\x01 \x01(\t\x1aG\n\x10ListJobsResponse\x12\x33\n\x04jobs\x18\x01 \x03(\x0b\x32%.feast.core.JobServiceTypes.JobDetail\x1a\x1b\n\rGetJobRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a\x44\n\x0eGetJobResponse\x12\x32\n\x03job\x18\x01 \x01(\x0b\x32%.feast.core.JobServiceTypes.JobDetail\x1a\x1d\n\x0f\x41\x62ortJobRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a\x1e\n\x10\x41\x62ortJobResponse\x12\n\n\x02id\x18\x01 \x01(\t\x1a\xcb\x02\n\tJobDetail\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05\x65xtId\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0e\n\x06runner\x18\x04 \x01(\t\x12\x0e\n\x06status\x18\x05 \x01(\t\x12\x10\n\x08\x65ntities\x18\x06 \x03(\t\x12\x10\n\x08\x66\x65\x61tures\x18\x07 \x03(\t\x12\x43\n\x07metrics\x18\x08 \x03(\x0b\x32\x32.feast.core.JobServiceTypes.JobDetail.MetricsEntry\x12/\n\x0blastUpdated\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x63reated\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a.\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x32\x9c\x03\n\nJobService\x12t\n\tSubmitJob\x12\x32.feast.core.JobServiceTypes.SubmitImportJobRequest\x1a\x33.feast.core.JobServiceTypes.SubmitImportJobResponse\x12P\n\x08ListJobs\x12\x16.google.protobuf.Empty\x1a,.feast.core.JobServiceTypes.ListJobsResponse\x12_\n\x06GetJob\x12).feast.core.JobServiceTypes.GetJobRequest\x1a*.feast.core.JobServiceTypes.GetJobResponse\x12\x65\n\x08\x41\x62ortJob\x12+.feast.core.JobServiceTypes.AbortJobRequest\x1a,.feast.core.JobServiceTypes.AbortJobResponseBT\n\nfeast.coreB\x0fJobServiceProtoZ5github.com/gojek/feast/protos/generated/go/feast/coreb\x06proto3') , dependencies=[feast_dot_specs_dot_ImportSpec__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) diff --git a/sdk/python/feast/core/JobService_pb2_grpc.py b/sdk/python/feast/core/JobService_pb2_grpc.py index 10d9276d698..4a1ebf66c03 100644 --- a/sdk/python/feast/core/JobService_pb2_grpc.py +++ b/sdk/python/feast/core/JobService_pb2_grpc.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc diff --git a/sdk/python/feast/core/TrainingService_pb2.py b/sdk/python/feast/core/TrainingService_pb2.py new file mode 100644 index 00000000000..a678549e5f3 --- /dev/null +++ b/sdk/python/feast/core/TrainingService_pb2.py @@ -0,0 +1,291 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/TrainingService.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='feast/core/TrainingService.proto', + package='feast.core', + syntax='proto3', + serialized_options=_b('\n\nfeast.coreB\024TrainingServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n feast/core/TrainingService.proto\x12\nfeast.core\x1a\x1fgoogle/protobuf/timestamp.proto\"\xb1\x02\n\x14TrainingServiceTypes\x1a\xc9\x01\n\x1c\x43reateTrainingDatasetRequest\x12*\n\nfeatureSet\x18\x01 \x01(\x0b\x32\x16.feast.core.FeatureSet\x12-\n\tstartDate\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x65ndDate\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05limit\x18\x04 \x01(\x03\x12\x12\n\nnamePrefix\x18\x05 \x01(\t\x1aM\n\x1d\x43reateTrainingDatasetResponse\x12,\n\x0b\x64\x61tasetInfo\x18\x01 \x01(\x0b\x32\x17.feast.core.DatasetInfo\"4\n\nFeatureSet\x12\x12\n\nentityName\x18\x01 \x01(\t\x12\x12\n\nfeatureIds\x18\x02 \x03(\t\"-\n\x0b\x44\x61tasetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08tableUrl\x18\x02 \x01(\t2\xac\x01\n\x0fTrainingService\x12\x98\x01\n\x15\x43reateTrainingDataset\x12=.feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest\x1a>.feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse\"\x00\x42]\n\nfeast.coreB\x14TrainingServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + , + dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) + + + + +_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST = _descriptor.Descriptor( + name='CreateTrainingDatasetRequest', + full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='featureSet', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.featureSet', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='startDate', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.startDate', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='endDate', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.endDate', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='limit', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.limit', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='namePrefix', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.namePrefix', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=107, + serialized_end=308, +) + +_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE = _descriptor.Descriptor( + name='CreateTrainingDatasetResponse', + full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='datasetInfo', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse.datasetInfo', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=310, + serialized_end=387, +) + +_TRAININGSERVICETYPES = _descriptor.Descriptor( + name='TrainingServiceTypes', + full_name='feast.core.TrainingServiceTypes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST, _TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=82, + serialized_end=387, +) + + +_FEATURESET = _descriptor.Descriptor( + name='FeatureSet', + full_name='feast.core.FeatureSet', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entityName', full_name='feast.core.FeatureSet.entityName', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='featureIds', full_name='feast.core.FeatureSet.featureIds', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=389, + serialized_end=441, +) + + +_DATASETINFO = _descriptor.Descriptor( + name='DatasetInfo', + full_name='feast.core.DatasetInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='feast.core.DatasetInfo.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='tableUrl', full_name='feast.core.DatasetInfo.tableUrl', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=443, + serialized_end=488, +) + +_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.fields_by_name['featureSet'].message_type = _FEATURESET +_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.fields_by_name['startDate'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.fields_by_name['endDate'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.containing_type = _TRAININGSERVICETYPES +_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE.fields_by_name['datasetInfo'].message_type = _DATASETINFO +_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE.containing_type = _TRAININGSERVICETYPES +DESCRIPTOR.message_types_by_name['TrainingServiceTypes'] = _TRAININGSERVICETYPES +DESCRIPTOR.message_types_by_name['FeatureSet'] = _FEATURESET +DESCRIPTOR.message_types_by_name['DatasetInfo'] = _DATASETINFO +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +TrainingServiceTypes = _reflection.GeneratedProtocolMessageType('TrainingServiceTypes', (_message.Message,), dict( + + CreateTrainingDatasetRequest = _reflection.GeneratedProtocolMessageType('CreateTrainingDatasetRequest', (_message.Message,), dict( + DESCRIPTOR = _TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST, + __module__ = 'feast.core.TrainingService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest) + )) + , + + CreateTrainingDatasetResponse = _reflection.GeneratedProtocolMessageType('CreateTrainingDatasetResponse', (_message.Message,), dict( + DESCRIPTOR = _TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE, + __module__ = 'feast.core.TrainingService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse) + )) + , + DESCRIPTOR = _TRAININGSERVICETYPES, + __module__ = 'feast.core.TrainingService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.TrainingServiceTypes) + )) +_sym_db.RegisterMessage(TrainingServiceTypes) +_sym_db.RegisterMessage(TrainingServiceTypes.CreateTrainingDatasetRequest) +_sym_db.RegisterMessage(TrainingServiceTypes.CreateTrainingDatasetResponse) + +FeatureSet = _reflection.GeneratedProtocolMessageType('FeatureSet', (_message.Message,), dict( + DESCRIPTOR = _FEATURESET, + __module__ = 'feast.core.TrainingService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.FeatureSet) + )) +_sym_db.RegisterMessage(FeatureSet) + +DatasetInfo = _reflection.GeneratedProtocolMessageType('DatasetInfo', (_message.Message,), dict( + DESCRIPTOR = _DATASETINFO, + __module__ = 'feast.core.TrainingService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.DatasetInfo) + )) +_sym_db.RegisterMessage(DatasetInfo) + + +DESCRIPTOR._options = None + +_TRAININGSERVICE = _descriptor.ServiceDescriptor( + name='TrainingService', + full_name='feast.core.TrainingService', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=491, + serialized_end=663, + methods=[ + _descriptor.MethodDescriptor( + name='CreateTrainingDataset', + full_name='feast.core.TrainingService.CreateTrainingDataset', + index=0, + containing_service=None, + input_type=_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST, + output_type=_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_TRAININGSERVICE) + +DESCRIPTOR.services_by_name['TrainingService'] = _TRAININGSERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/core/TrainingService_pb2_grpc.py b/sdk/python/feast/core/TrainingService_pb2_grpc.py new file mode 100644 index 00000000000..962d17d9b34 --- /dev/null +++ b/sdk/python/feast/core/TrainingService_pb2_grpc.py @@ -0,0 +1,46 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +from feast.core import TrainingService_pb2 as feast_dot_core_dot_TrainingService__pb2 + + +class TrainingServiceStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.CreateTrainingDataset = channel.unary_unary( + '/feast.core.TrainingService/CreateTrainingDataset', + request_serializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetResponse.FromString, + ) + + +class TrainingServiceServicer(object): + # missing associated documentation comment in .proto file + pass + + def CreateTrainingDataset(self, request, context): + """Create training dataset for a feature set + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_TrainingServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'CreateTrainingDataset': grpc.unary_unary_rpc_method_handler( + servicer.CreateTrainingDataset, + request_deserializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetRequest.FromString, + response_serializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.core.TrainingService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/sdk/python/feast/core/UIService_pb2.py b/sdk/python/feast/core/UIService_pb2.py index 916e51fe659..d4d477ac850 100644 --- a/sdk/python/feast/core/UIService_pb2.py +++ b/sdk/python/feast/core/UIService_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/core/UIService.proto @@ -38,8 +24,8 @@ name='feast/core/UIService.proto', package='feast.core', syntax='proto3', - serialized_options=_b('\n\nfeast.coreB\016UIServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), - serialized_pb=_b('\n\x1a\x66\x65\x61st/core/UIService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/EntitySpec.proto\x1a\x1d\x66\x65\x61st/specs/FeatureSpec.proto\x1a\"feast/specs/FeatureGroupSpec.proto\x1a\x1d\x66\x65\x61st/specs/StorageSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x90\x0b\n\x0eUIServiceTypes\x1at\n\x0c\x45ntityDetail\x12%\n\x04spec\x18\x01 \x01(\x0b\x32\x17.feast.specs.EntitySpec\x12\x0c\n\x04jobs\x18\x02 \x03(\t\x12/\n\x0blastUpdated\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1e\n\x10GetEntityRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1aL\n\x11GetEntityResponse\x12\x37\n\x06\x65ntity\x18\x01 \x01(\x0b\x32\'.feast.core.UIServiceTypes.EntityDetail\x1aQ\n\x14ListEntitiesResponse\x12\x39\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\'.feast.core.UIServiceTypes.EntityDetail\x1a\xca\x01\n\rFeatureDetail\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.specs.FeatureSpec\x12\x14\n\x0c\x62igqueryView\x18\x02 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x03 \x01(\x08\x12\x0c\n\x04jobs\x18\x04 \x03(\t\x12/\n\x0blastUpdated\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x63reated\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1f\n\x11GetFeatureRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1az\n\x12GetFeatureResponse\x12\x39\n\x07\x66\x65\x61ture\x18\x01 \x01(\x0b\x32(.feast.core.UIServiceTypes.FeatureDetail\x12)\n\x07rawSpec\x18\x02 \x01(\x0b\x32\x18.feast.specs.FeatureSpec\x1aR\n\x14ListFeaturesResponse\x12:\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32(.feast.core.UIServiceTypes.FeatureDetail\x1ar\n\x12\x46\x65\x61tureGroupDetail\x12+\n\x04spec\x18\x01 \x01(\x0b\x32\x1d.feast.specs.FeatureGroupSpec\x12/\n\x0blastUpdated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a$\n\x16GetFeatureGroupRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a^\n\x17GetFeatureGroupResponse\x12\x43\n\x0c\x66\x65\x61tureGroup\x18\x01 \x01(\x0b\x32-.feast.core.UIServiceTypes.FeatureGroupDetail\x1a\x61\n\x19ListFeatureGroupsResponse\x12\x44\n\rfeatureGroups\x18\x01 \x03(\x0b\x32-.feast.core.UIServiceTypes.FeatureGroupDetail\x1ah\n\rStorageDetail\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.specs.StorageSpec\x12/\n\x0blastUpdated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1f\n\x11GetStorageRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1aO\n\x12GetStorageResponse\x12\x39\n\x07storage\x18\x01 \x01(\x0b\x32(.feast.core.UIServiceTypes.StorageDetail\x1aP\n\x13ListStorageResponse\x12\x39\n\x07storage\x18\x01 \x03(\x0b\x32(.feast.core.UIServiceTypes.StorageDetail2\xbf\x06\n\tUIService\x12h\n\tGetEntity\x12+.feast.core.UIServiceTypes.GetEntityRequest\x1a,.feast.core.UIServiceTypes.GetEntityResponse\"\x00\x12Y\n\x0cListEntities\x12\x16.google.protobuf.Empty\x1a/.feast.core.UIServiceTypes.ListEntitiesResponse\"\x00\x12k\n\nGetFeature\x12,.feast.core.UIServiceTypes.GetFeatureRequest\x1a-.feast.core.UIServiceTypes.GetFeatureResponse\"\x00\x12Y\n\x0cListFeatures\x12\x16.google.protobuf.Empty\x1a/.feast.core.UIServiceTypes.ListFeaturesResponse\"\x00\x12z\n\x0fGetFeatureGroup\x12\x31.feast.core.UIServiceTypes.GetFeatureGroupRequest\x1a\x32.feast.core.UIServiceTypes.GetFeatureGroupResponse\"\x00\x12\x63\n\x11ListFeatureGroups\x12\x16.google.protobuf.Empty\x1a\x34.feast.core.UIServiceTypes.ListFeatureGroupsResponse\"\x00\x12k\n\nGetStorage\x12,.feast.core.UIServiceTypes.GetStorageRequest\x1a-.feast.core.UIServiceTypes.GetStorageResponse\"\x00\x12W\n\x0bListStorage\x12\x16.google.protobuf.Empty\x1a..feast.core.UIServiceTypes.ListStorageResponse\"\x00\x42W\n\nfeast.coreB\x0eUIServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + serialized_options=_b('\n\nfeast.coreB\016UIServiceProtoZ5github.com/gojek/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n\x1a\x66\x65\x61st/core/UIService.proto\x12\nfeast.core\x1a\x1c\x66\x65\x61st/specs/EntitySpec.proto\x1a\x1d\x66\x65\x61st/specs/FeatureSpec.proto\x1a\"feast/specs/FeatureGroupSpec.proto\x1a\x1d\x66\x65\x61st/specs/StorageSpec.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x90\x0b\n\x0eUIServiceTypes\x1at\n\x0c\x45ntityDetail\x12%\n\x04spec\x18\x01 \x01(\x0b\x32\x17.feast.specs.EntitySpec\x12\x0c\n\x04jobs\x18\x02 \x03(\t\x12/\n\x0blastUpdated\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1e\n\x10GetEntityRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1aL\n\x11GetEntityResponse\x12\x37\n\x06\x65ntity\x18\x01 \x01(\x0b\x32\'.feast.core.UIServiceTypes.EntityDetail\x1aQ\n\x14ListEntitiesResponse\x12\x39\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\'.feast.core.UIServiceTypes.EntityDetail\x1a\xca\x01\n\rFeatureDetail\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.specs.FeatureSpec\x12\x14\n\x0c\x62igqueryView\x18\x02 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x03 \x01(\x08\x12\x0c\n\x04jobs\x18\x04 \x03(\t\x12/\n\x0blastUpdated\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x63reated\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1f\n\x11GetFeatureRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1az\n\x12GetFeatureResponse\x12\x39\n\x07\x66\x65\x61ture\x18\x01 \x01(\x0b\x32(.feast.core.UIServiceTypes.FeatureDetail\x12)\n\x07rawSpec\x18\x02 \x01(\x0b\x32\x18.feast.specs.FeatureSpec\x1aR\n\x14ListFeaturesResponse\x12:\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32(.feast.core.UIServiceTypes.FeatureDetail\x1ar\n\x12\x46\x65\x61tureGroupDetail\x12+\n\x04spec\x18\x01 \x01(\x0b\x32\x1d.feast.specs.FeatureGroupSpec\x12/\n\x0blastUpdated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a$\n\x16GetFeatureGroupRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1a^\n\x17GetFeatureGroupResponse\x12\x43\n\x0c\x66\x65\x61tureGroup\x18\x01 \x01(\x0b\x32-.feast.core.UIServiceTypes.FeatureGroupDetail\x1a\x61\n\x19ListFeatureGroupsResponse\x12\x44\n\rfeatureGroups\x18\x01 \x03(\x0b\x32-.feast.core.UIServiceTypes.FeatureGroupDetail\x1ah\n\rStorageDetail\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.specs.StorageSpec\x12/\n\x0blastUpdated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x1f\n\x11GetStorageRequest\x12\n\n\x02id\x18\x01 \x01(\t\x1aO\n\x12GetStorageResponse\x12\x39\n\x07storage\x18\x01 \x01(\x0b\x32(.feast.core.UIServiceTypes.StorageDetail\x1aP\n\x13ListStorageResponse\x12\x39\n\x07storage\x18\x01 \x03(\x0b\x32(.feast.core.UIServiceTypes.StorageDetail2\xbf\x06\n\tUIService\x12h\n\tGetEntity\x12+.feast.core.UIServiceTypes.GetEntityRequest\x1a,.feast.core.UIServiceTypes.GetEntityResponse\"\x00\x12Y\n\x0cListEntities\x12\x16.google.protobuf.Empty\x1a/.feast.core.UIServiceTypes.ListEntitiesResponse\"\x00\x12k\n\nGetFeature\x12,.feast.core.UIServiceTypes.GetFeatureRequest\x1a-.feast.core.UIServiceTypes.GetFeatureResponse\"\x00\x12Y\n\x0cListFeatures\x12\x16.google.protobuf.Empty\x1a/.feast.core.UIServiceTypes.ListFeaturesResponse\"\x00\x12z\n\x0fGetFeatureGroup\x12\x31.feast.core.UIServiceTypes.GetFeatureGroupRequest\x1a\x32.feast.core.UIServiceTypes.GetFeatureGroupResponse\"\x00\x12\x63\n\x11ListFeatureGroups\x12\x16.google.protobuf.Empty\x1a\x34.feast.core.UIServiceTypes.ListFeatureGroupsResponse\"\x00\x12k\n\nGetStorage\x12,.feast.core.UIServiceTypes.GetStorageRequest\x1a-.feast.core.UIServiceTypes.GetStorageResponse\"\x00\x12W\n\x0bListStorage\x12\x16.google.protobuf.Empty\x1a..feast.core.UIServiceTypes.ListStorageResponse\"\x00\x42S\n\nfeast.coreB\x0eUIServiceProtoZ5github.com/gojek/feast/protos/generated/go/feast/coreb\x06proto3') , dependencies=[feast_dot_specs_dot_EntitySpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_FeatureGroupSpec__pb2.DESCRIPTOR,feast_dot_specs_dot_StorageSpec__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) diff --git a/sdk/python/feast/core/UIService_pb2_grpc.py b/sdk/python/feast/core/UIService_pb2_grpc.py index cb9f0bf4fba..ba86fc468ae 100644 --- a/sdk/python/feast/core/UIService_pb2_grpc.py +++ b/sdk/python/feast/core/UIService_pb2_grpc.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc diff --git a/sdk/python/feast/serving/Serving_pb2.py b/sdk/python/feast/serving/Serving_pb2.py index 59bc98da487..9393a39ca7a 100644 --- a/sdk/python/feast/serving/Serving_pb2.py +++ b/sdk/python/feast/serving/Serving_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/serving/Serving.proto @@ -35,8 +21,8 @@ name='feast/serving/Serving.proto', package='feast.serving', syntax='proto3', - serialized_options=_b('\n\rfeast.servingB\017ServingAPIProtoZ\n\x07\x41ttempt\x12\x10\n\x08\x61ttempts\x18\x01 \x01(\x05\x12!\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x12.feast.types.Error\"\x94\x01\n\x12\x46\x65\x61tureRowExtended\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.feast.types.FeatureRow\x12)\n\x0blastAttempt\x18\x02 \x01(\x0b\x32\x14.feast.types.Attempt\x12-\n\tfirstSeen\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBb\n\x0b\x66\x65\x61st.typesB\x17\x46\x65\x61tureRowExtendedProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + serialized_options=_b('\n\013feast.typesB\027FeatureRowExtendedProtoZ6github.com/gojek/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n$feast/types/FeatureRowExtended.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1c\x66\x65\x61st/types/FeatureRow.proto\"N\n\x05\x45rror\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12\x11\n\ttransform\x18\x02 \x01(\t\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x12\n\nstackTrace\x18\x04 \x01(\t\">\n\x07\x41ttempt\x12\x10\n\x08\x61ttempts\x18\x01 \x01(\x05\x12!\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x12.feast.types.Error\"\x94\x01\n\x12\x46\x65\x61tureRowExtended\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.feast.types.FeatureRow\x12)\n\x0blastAttempt\x18\x02 \x01(\x0b\x32\x14.feast.types.Attempt\x12-\n\tfirstSeen\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB^\n\x0b\x66\x65\x61st.typesB\x17\x46\x65\x61tureRowExtendedProtoZ6github.com/gojek/feast/protos/generated/go/feast/typesb\x06proto3') , dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_FeatureRow__pb2.DESCRIPTOR,]) diff --git a/sdk/python/feast/types/FeatureRow_pb2.py b/sdk/python/feast/types/FeatureRow_pb2.py index cad56303ea3..a371bdccb32 100644 --- a/sdk/python/feast/types/FeatureRow_pb2.py +++ b/sdk/python/feast/types/FeatureRow_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/FeatureRow.proto @@ -36,14 +22,66 @@ name='feast/types/FeatureRow.proto', package='feast.types', syntax='proto3', - serialized_options=_b('\n\013feast.typesB\017FeatureRowProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), - serialized_pb=_b('\n\x1c\x66\x65\x61st/types/FeatureRow.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19\x66\x65\x61st/types/Feature.proto\x1a\x1d\x66\x65\x61st/types/Granularity.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"\xc3\x01\n\nFeatureRow\x12\x11\n\tentityKey\x18\x01 \x01(\t\x12&\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x14.feast.types.Feature\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\nentityName\x18\x04 \x01(\t\x12\x32\n\x0bgranularity\x18\x05 \x01(\x0e\x32\x1d.feast.types.Granularity.EnumBZ\n\x0b\x66\x65\x61st.typesB\x0f\x46\x65\x61tureRowProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + serialized_options=_b('\n\013feast.typesB\017FeatureRowProtoZ6github.com/gojek/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x1c\x66\x65\x61st/types/FeatureRow.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19\x66\x65\x61st/types/Feature.proto\x1a\x1d\x66\x65\x61st/types/Granularity.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"\x9e\x01\n\rFeatureRowKey\x12\x11\n\tentityKey\x18\x01 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\nentityName\x18\x04 \x01(\t\x12\x32\n\x0bgranularity\x18\x05 \x01(\x0e\x32\x1d.feast.types.Granularity.Enum\"\xc3\x01\n\nFeatureRow\x12\x11\n\tentityKey\x18\x01 \x01(\t\x12&\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x14.feast.types.Feature\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\nentityName\x18\x04 \x01(\t\x12\x32\n\x0bgranularity\x18\x05 \x01(\x0e\x32\x1d.feast.types.Granularity.EnumBV\n\x0b\x66\x65\x61st.typesB\x0f\x46\x65\x61tureRowProtoZ6github.com/gojek/feast/protos/generated/go/feast/typesb\x06proto3') , dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_Feature__pb2.DESCRIPTOR,feast_dot_types_dot_Granularity__pb2.DESCRIPTOR,feast_dot_types_dot_Value__pb2.DESCRIPTOR,]) +_FEATUREROWKEY = _descriptor.Descriptor( + name='FeatureRowKey', + full_name='feast.types.FeatureRowKey', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entityKey', full_name='feast.types.FeatureRowKey.entityKey', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='eventTimestamp', full_name='feast.types.FeatureRowKey.eventTimestamp', index=1, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entityName', full_name='feast.types.FeatureRowKey.entityName', index=2, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='granularity', full_name='feast.types.FeatureRowKey.granularity', index=3, + number=5, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=162, + serialized_end=320, +) + + _FEATUREROW = _descriptor.Descriptor( name='FeatureRow', full_name='feast.types.FeatureRow', @@ -98,16 +136,26 @@ extension_ranges=[], oneofs=[ ], - serialized_start=162, - serialized_end=357, + serialized_start=323, + serialized_end=518, ) +_FEATUREROWKEY.fields_by_name['eventTimestamp'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_FEATUREROWKEY.fields_by_name['granularity'].enum_type = feast_dot_types_dot_Granularity__pb2._GRANULARITY_ENUM _FEATUREROW.fields_by_name['features'].message_type = feast_dot_types_dot_Feature__pb2._FEATURE _FEATUREROW.fields_by_name['eventTimestamp'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP _FEATUREROW.fields_by_name['granularity'].enum_type = feast_dot_types_dot_Granularity__pb2._GRANULARITY_ENUM +DESCRIPTOR.message_types_by_name['FeatureRowKey'] = _FEATUREROWKEY DESCRIPTOR.message_types_by_name['FeatureRow'] = _FEATUREROW _sym_db.RegisterFileDescriptor(DESCRIPTOR) +FeatureRowKey = _reflection.GeneratedProtocolMessageType('FeatureRowKey', (_message.Message,), dict( + DESCRIPTOR = _FEATUREROWKEY, + __module__ = 'feast.types.FeatureRow_pb2' + # @@protoc_insertion_point(class_scope:feast.types.FeatureRowKey) + )) +_sym_db.RegisterMessage(FeatureRowKey) + FeatureRow = _reflection.GeneratedProtocolMessageType('FeatureRow', (_message.Message,), dict( DESCRIPTOR = _FEATUREROW, __module__ = 'feast.types.FeatureRow_pb2' diff --git a/sdk/python/feast/types/Feature_pb2.py b/sdk/python/feast/types/Feature_pb2.py index daaa1721992..d24b6fc09b1 100644 --- a/sdk/python/feast/types/Feature_pb2.py +++ b/sdk/python/feast/types/Feature_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/Feature.proto @@ -34,8 +20,8 @@ name='feast/types/Feature.proto', package='feast.types', syntax='proto3', - serialized_options=_b('\n\013feast.typesB\014FeatureProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), - serialized_pb=_b('\n\x19\x66\x65\x61st/types/Feature.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"8\n\x07\x46\x65\x61ture\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.ValueBW\n\x0b\x66\x65\x61st.typesB\x0c\x46\x65\x61tureProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + serialized_options=_b('\n\013feast.typesB\014FeatureProtoZ6github.com/gojek/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x19\x66\x65\x61st/types/Feature.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"8\n\x07\x46\x65\x61ture\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.ValueBS\n\x0b\x66\x65\x61st.typesB\x0c\x46\x65\x61tureProtoZ6github.com/gojek/feast/protos/generated/go/feast/typesb\x06proto3') , dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_Value__pb2.DESCRIPTOR,]) diff --git a/sdk/python/feast/types/Granularity_pb2.py b/sdk/python/feast/types/Granularity_pb2.py index 3413d39cba1..5ccb51cff4e 100644 --- a/sdk/python/feast/types/Granularity_pb2.py +++ b/sdk/python/feast/types/Granularity_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/Granularity.proto @@ -32,8 +18,8 @@ name='feast/types/Granularity.proto', package='feast.types', syntax='proto3', - serialized_options=_b('\n\013feast.typesB\020GranularityProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), - serialized_pb=_b('\n\x1d\x66\x65\x61st/types/Granularity.proto\x12\x0b\x66\x65\x61st.types\"J\n\x0bGranularity\";\n\x04\x45num\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03\x44\x41Y\x10\x01\x12\x08\n\x04HOUR\x10\x02\x12\n\n\x06MINUTE\x10\x03\x12\n\n\x06SECOND\x10\x04\x42[\n\x0b\x66\x65\x61st.typesB\x10GranularityProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + serialized_options=_b('\n\013feast.typesB\020GranularityProtoZ6github.com/gojek/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x1d\x66\x65\x61st/types/Granularity.proto\x12\x0b\x66\x65\x61st.types\"J\n\x0bGranularity\";\n\x04\x45num\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03\x44\x41Y\x10\x01\x12\x08\n\x04HOUR\x10\x02\x12\n\n\x06MINUTE\x10\x03\x12\n\n\x06SECOND\x10\x04\x42W\n\x0b\x66\x65\x61st.typesB\x10GranularityProtoZ6github.com/gojek/feast/protos/generated/go/feast/typesb\x06proto3') ) diff --git a/sdk/python/feast/types/Value_pb2.py b/sdk/python/feast/types/Value_pb2.py index 47f4e8a355f..2e9d3177fff 100644 --- a/sdk/python/feast/types/Value_pb2.py +++ b/sdk/python/feast/types/Value_pb2.py @@ -1,17 +1,3 @@ -# Copyright 2018 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feast/types/Value.proto @@ -33,8 +19,8 @@ name='feast/types/Value.proto', package='feast.types', syntax='proto3', - serialized_options=_b('\n\013feast.typesB\nValueProtoZ:github.com/gojektech/feast/protos/generated/go/feast/types'), - serialized_pb=_b('\n\x17\x66\x65\x61st/types/Value.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\"}\n\tValueType\"p\n\x04\x45num\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\n\n\x06STRING\x10\x02\x12\t\n\x05INT32\x10\x03\x12\t\n\x05INT64\x10\x04\x12\n\n\x06\x44OUBLE\x10\x05\x12\t\n\x05\x46LOAT\x10\x06\x12\x08\n\x04\x42OOL\x10\x07\x12\r\n\tTIMESTAMP\x10\x08\"\xcf\x01\n\x05Value\x12\x12\n\x08\x62ytesVal\x18\x01 \x01(\x0cH\x00\x12\x13\n\tstringVal\x18\x02 \x01(\tH\x00\x12\x12\n\x08int32Val\x18\x03 \x01(\x05H\x00\x12\x12\n\x08int64Val\x18\x04 \x01(\x03H\x00\x12\x13\n\tdoubleVal\x18\x05 \x01(\x01H\x00\x12\x12\n\x08\x66loatVal\x18\x06 \x01(\x02H\x00\x12\x11\n\x07\x62oolVal\x18\x07 \x01(\x08H\x00\x12\x32\n\x0ctimestampVal\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x42\x05\n\x03val\"\x8a\x03\n\tValueList\x12+\n\tbytesList\x18\x01 \x01(\x0b\x32\x16.feast.types.BytesListH\x00\x12-\n\nstringList\x18\x02 \x01(\x0b\x32\x17.feast.types.StringListH\x00\x12+\n\tint32List\x18\x03 \x01(\x0b\x32\x16.feast.types.Int32ListH\x00\x12+\n\tint64List\x18\x04 \x01(\x0b\x32\x16.feast.types.Int64ListH\x00\x12-\n\ndoubleList\x18\x05 \x01(\x0b\x32\x17.feast.types.DoubleListH\x00\x12+\n\tfloatList\x18\x06 \x01(\x0b\x32\x16.feast.types.FloatListH\x00\x12)\n\x08\x62oolList\x18\x07 \x01(\x0b\x32\x15.feast.types.BoolListH\x00\x12\x33\n\rtimestampList\x18\x08 \x01(\x0b\x32\x1a.feast.types.TimestampListH\x00\x42\x0b\n\tvalueList\"\x18\n\tBytesList\x12\x0b\n\x03val\x18\x01 \x03(\x0c\"\x19\n\nStringList\x12\x0b\n\x03val\x18\x01 \x03(\t\"\x18\n\tInt32List\x12\x0b\n\x03val\x18\x01 \x03(\x05\"\x18\n\tInt64List\x12\x0b\n\x03val\x18\x01 \x03(\x03\"\x19\n\nDoubleList\x12\x0b\n\x03val\x18\x01 \x03(\x01\"\x18\n\tFloatList\x12\x0b\n\x03val\x18\x01 \x03(\x02\"\x17\n\x08\x42oolList\x12\x0b\n\x03val\x18\x01 \x03(\x08\"8\n\rTimestampList\x12\'\n\x03val\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.TimestampBU\n\x0b\x66\x65\x61st.typesB\nValueProtoZ:github.com/gojektech/feast/protos/generated/go/feast/typesb\x06proto3') + serialized_options=_b('\n\013feast.typesB\nValueProtoZ6github.com/gojek/feast/protos/generated/go/feast/types'), + serialized_pb=_b('\n\x17\x66\x65\x61st/types/Value.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\"}\n\tValueType\"p\n\x04\x45num\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\n\n\x06STRING\x10\x02\x12\t\n\x05INT32\x10\x03\x12\t\n\x05INT64\x10\x04\x12\n\n\x06\x44OUBLE\x10\x05\x12\t\n\x05\x46LOAT\x10\x06\x12\x08\n\x04\x42OOL\x10\x07\x12\r\n\tTIMESTAMP\x10\x08\"\xcf\x01\n\x05Value\x12\x12\n\x08\x62ytesVal\x18\x01 \x01(\x0cH\x00\x12\x13\n\tstringVal\x18\x02 \x01(\tH\x00\x12\x12\n\x08int32Val\x18\x03 \x01(\x05H\x00\x12\x12\n\x08int64Val\x18\x04 \x01(\x03H\x00\x12\x13\n\tdoubleVal\x18\x05 \x01(\x01H\x00\x12\x12\n\x08\x66loatVal\x18\x06 \x01(\x02H\x00\x12\x11\n\x07\x62oolVal\x18\x07 \x01(\x08H\x00\x12\x32\n\x0ctimestampVal\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x42\x05\n\x03val\"\x8a\x03\n\tValueList\x12+\n\tbytesList\x18\x01 \x01(\x0b\x32\x16.feast.types.BytesListH\x00\x12-\n\nstringList\x18\x02 \x01(\x0b\x32\x17.feast.types.StringListH\x00\x12+\n\tint32List\x18\x03 \x01(\x0b\x32\x16.feast.types.Int32ListH\x00\x12+\n\tint64List\x18\x04 \x01(\x0b\x32\x16.feast.types.Int64ListH\x00\x12-\n\ndoubleList\x18\x05 \x01(\x0b\x32\x17.feast.types.DoubleListH\x00\x12+\n\tfloatList\x18\x06 \x01(\x0b\x32\x16.feast.types.FloatListH\x00\x12)\n\x08\x62oolList\x18\x07 \x01(\x0b\x32\x15.feast.types.BoolListH\x00\x12\x33\n\rtimestampList\x18\x08 \x01(\x0b\x32\x1a.feast.types.TimestampListH\x00\x42\x0b\n\tvalueList\"\x18\n\tBytesList\x12\x0b\n\x03val\x18\x01 \x03(\x0c\"\x19\n\nStringList\x12\x0b\n\x03val\x18\x01 \x03(\t\"\x18\n\tInt32List\x12\x0b\n\x03val\x18\x01 \x03(\x05\"\x18\n\tInt64List\x12\x0b\n\x03val\x18\x01 \x03(\x03\"\x19\n\nDoubleList\x12\x0b\n\x03val\x18\x01 \x03(\x01\"\x18\n\tFloatList\x12\x0b\n\x03val\x18\x01 \x03(\x02\"\x17\n\x08\x42oolList\x12\x0b\n\x03val\x18\x01 \x03(\x08\"8\n\rTimestampList\x12\'\n\x03val\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.TimestampBQ\n\x0b\x66\x65\x61st.typesB\nValueProtoZ6github.com/gojek/feast/protos/generated/go/feast/typesb\x06proto3') , dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) From c78c9520699d6d04c34acc257f36275ee1d726fd Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Sat, 5 Jan 2019 14:57:30 +0800 Subject: [PATCH 34/50] Create dataset if not exists. --- .../training/BigQueryTrainingDatasetCreator.java | 14 +++++++++++++- .../training/BigQueryTrainingDatasetTemplater.java | 2 -- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java index 42b193b1439..a936393bd2a 100644 --- a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java +++ b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java @@ -74,8 +74,11 @@ public DatasetInfo createTrainingDataset( String namePrefix) { try { String query = templater.createQuery(featureSet, startDate, endDate, limit); - String tableName = createBqTableName(startDate, endDate, namePrefix); + String bqDatasetName = createBqDatasetName(featureSet.getEntityName()); + + createBqDatasetIfMissing(bqDatasetName); + TableId destinationTable = TableId.of(projectId, createBqDatasetName(featureSet.getEntityName()), tableName); QueryJobConfiguration queryConfig = @@ -98,6 +101,15 @@ public DatasetInfo createTrainingDataset( } } + private void createBqDatasetIfMissing(String bqDatasetName) { + if (bigQuery.getDataset(bqDatasetName) != null) { + return; + } + + // create dataset + bigQuery.create(com.google.cloud.bigquery.DatasetInfo.of(bqDatasetName)); + } + private String createBqTableName(Timestamp startDate, Timestamp endDate, String namePrefix) { String currentTime = String.valueOf(clock.millis()); if (!Strings.isNullOrEmpty(namePrefix)) { diff --git a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java index 7902d94383c..c9003bd78e2 100644 --- a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java +++ b/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java @@ -40,7 +40,6 @@ import java.util.Set; import java.util.stream.Collectors; import lombok.Getter; -import org.springframework.beans.factory.annotation.Autowired; public class BigQueryTrainingDatasetTemplater { private final FeatureInfoRepository featureInfoRepository; @@ -50,7 +49,6 @@ public class BigQueryTrainingDatasetTemplater { private Comparator featureGroupComparator = new FeatureGroupTemplateComparator().reversed(); - @Autowired public BigQueryTrainingDatasetTemplater( Jinjava jinjava, String templateString, FeatureInfoRepository featureInfoRepository) { this.featureInfoRepository = featureInfoRepository; From 779268126dc81611ff6fd0d66c0b805ab2a85517 Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Sat, 5 Jan 2019 14:57:50 +0800 Subject: [PATCH 35/50] Use LEFT join --- core/src/main/resources/templates/bq_training.tmpl | 4 ++-- core/src/test/resources/sql/expQuery1.sql | 2 +- core/src/test/resources/sql/expQuery2.sql | 2 +- core/src/test/resources/sql/expQuery3.sql | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/src/main/resources/templates/bq_training.tmpl b/core/src/main/resources/templates/bq_training.tmpl index 825efd371d6..faad4f18a40 100644 --- a/core/src/main/resources/templates/bq_training.tmpl +++ b/core/src/main/resources/templates/bq_training.tmpl @@ -26,8 +26,8 @@ SELECT FROM {{ feature_groups[0].temp_table }} {% for feature_group in feature_groups -%} -{% if loop.index > 1 -%} -FULL JOIN +{% if loop.index > 1 %} +LEFT JOIN {{ feature_group.temp_table }} ON {{ feature_groups[0].temp_table }}.id = {{ feature_group.temp_table }}.id diff --git a/core/src/test/resources/sql/expQuery1.sql b/core/src/test/resources/sql/expQuery1.sql index 141932ecabb..83a91f9502f 100644 --- a/core/src/test/resources/sql/expQuery1.sql +++ b/core/src/test/resources/sql/expQuery1.sql @@ -53,7 +53,7 @@ WHERE project_dataset_myentity_day.myentity_day_feature2, project_dataset_myentity_none.myentity_none_feature3 FROM - project_dataset_myentity_day FULL + project_dataset_myentity_day LEFT JOIN project_dataset_myentity_none ON project_dataset_myentity_day.id = project_dataset_myentity_none.id LIMIT 100 \ No newline at end of file diff --git a/core/src/test/resources/sql/expQuery2.sql b/core/src/test/resources/sql/expQuery2.sql index a083fa68125..17a06b18fdd 100644 --- a/core/src/test/resources/sql/expQuery2.sql +++ b/core/src/test/resources/sql/expQuery2.sql @@ -53,7 +53,7 @@ WHERE project_dataset_myentity_day.myentity_day_feature2, project_dataset_myentity_none.myentity_none_feature3 FROM - project_dataset_myentity_day FULL + project_dataset_myentity_day LEFT JOIN project_dataset_myentity_none ON project_dataset_myentity_day.id = project_dataset_myentity_none.id \ No newline at end of file diff --git a/core/src/test/resources/sql/expQuery3.sql b/core/src/test/resources/sql/expQuery3.sql index a9862d9ed06..2c5405dd6ad 100644 --- a/core/src/test/resources/sql/expQuery3.sql +++ b/core/src/test/resources/sql/expQuery3.sql @@ -129,22 +129,22 @@ WHERE project_dataset_myentity_day.myentity_day_feature1, project_dataset_myentity_none.myentity_none_feature1 FROM - project_dataset_myentity_second FULL + project_dataset_myentity_second LEFT JOIN project_dataset_myentity_minute ON project_dataset_myentity_second.id = project_dataset_myentity_minute.id AND TIMESTAMP_TRUNC(project_dataset_myentity_second.event_timestamp, - MINUTE) = project_dataset_myentity_minute.event_timestampFULL + MINUTE) = project_dataset_myentity_minute.event_timestamp LEFT JOIN project_dataset_myentity_hour ON project_dataset_myentity_second.id = project_dataset_myentity_hour.id AND TIMESTAMP_TRUNC(project_dataset_myentity_second.event_timestamp, - HOUR) = project_dataset_myentity_hour.event_timestampFULL + HOUR) = project_dataset_myentity_hour.event_timestamp LEFT JOIN project_dataset_myentity_day ON project_dataset_myentity_second.id = project_dataset_myentity_day.id AND TIMESTAMP_TRUNC(project_dataset_myentity_second.event_timestamp, - DAY) = project_dataset_myentity_day.event_timestampFULL + DAY) = project_dataset_myentity_day.event_timestamp LEFT JOIN project_dataset_myentity_none ON project_dataset_myentity_second.id = project_dataset_myentity_none.id LIMIT 1000 From 5bd5bb4f201d888bfae60588339bd409fe6bfd3c Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Sat, 5 Jan 2019 15:01:27 +0800 Subject: [PATCH 36/50] Integrate with core's training dataset creation and remove the same logic in sdk --- sdk/python/feast/sdk/client.py | 143 +++-------- sdk/python/feast/sdk/resources/feature_set.py | 7 + sdk/python/feast/sdk/utils/bq_util.py | 117 +-------- .../sdk/utils/template/training_query.j2 | 43 ---- sdk/python/setup.py | 1 - sdk/python/tests/sdk/test_client.py | 228 +++++++++--------- sdk/python/tests/sdk/utils/test_bq_utils.py | 66 +---- 7 files changed, 182 insertions(+), 423 deletions(-) delete mode 100644 sdk/python/feast/sdk/utils/template/training_query.j2 diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 6a6872c9082..072c1936339 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -17,35 +17,34 @@ """ import enum -import grpc import os +from datetime import datetime + +import grpc import pandas as pd -import re -import time from google.protobuf.timestamp_pb2 import Timestamp -from datetime import datetime -import feast.core.CoreService_pb2_grpc as core -import feast.core.JobService_pb2_grpc as jobs -import feast.serving.Serving_pb2_grpc as serving +from feast.core.CoreService_pb2_grpc import CoreServiceStub from feast.core.JobService_pb2 import JobServiceTypes -from feast.core.CoreService_pb2 import CoreServiceTypes -from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, TimestampRange - +from feast.core.JobService_pb2_grpc import JobServiceStub +from feast.core.TrainingService_pb2 import TrainingServiceTypes +from feast.core.TrainingService_pb2_grpc import TrainingServiceStub from feast.sdk.env import FEAST_CORE_URL_ENV_KEY, FEAST_SERVING_URL_ENV_KEY -from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity -from feast.sdk.resources.storage import Storage +from feast.sdk.resources.feature import Feature from feast.sdk.resources.feature_group import FeatureGroup from feast.sdk.resources.feature_set import DatasetInfo, FileType +from feast.sdk.resources.storage import Storage +from feast.sdk.utils.bq_util import TableDownloader from feast.sdk.utils.print_utils import spec_to_yaml -from feast.sdk.utils.bq_util import get_table_name, TrainingDatasetCreator, \ - TableDownloader +from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, \ + TimestampRange +from feast.serving.Serving_pb2_grpc import ServingAPIStub class ServingRequestType(enum.Enum): """ - Requesty type for serving api + Request type for serving api """ LAST = 0 """ Get last value of a feature """ @@ -54,8 +53,7 @@ class ServingRequestType(enum.Enum): class Client: - def __init__(self, core_url=None, serving_url=None, bq_dataset=None, - verbose=False): + def __init__(self, core_url=None, serving_url=None, verbose=False): """Create an instance of Feast client which is connected to feast endpoint specified in the parameter. If no url is provided, the client will default to the url specified in the environment variable @@ -66,8 +64,6 @@ def __init__(self, core_url=None, serving_url=None, bq_dataset=None, (e.g.: "my.feast.com:8433") serving_url (str, optional): feast serving's grpc endpoint URL (e.g.: "my.feast.com:8433") - bq_dataset (str, optional): BigQuery dataset to be used - as default training location (e.g. "gcp-project.dataset-name") """ if core_url is None: @@ -80,12 +76,11 @@ def __init__(self, core_url=None, serving_url=None, bq_dataset=None, self._serving_url = serving_url self.__serving_channel = grpc.insecure_channel(serving_url) - self._serving_service_stub = serving.ServingAPIStub(self.__serving_channel) - self._core_service_stub = core.CoreServiceStub(self.__core_channel) - self._job_service_stub = jobs.JobServiceStub(self.__core_channel) + self._serving_service_stub = ServingAPIStub(self.__serving_channel) + self._core_service_stub = CoreServiceStub(self.__core_channel) + self._job_service_stub = JobServiceStub(self.__core_channel) + self._training_service_stub = TrainingServiceStub(self.__core_channel) self._verbose = verbose - self._bq_dataset = bq_dataset - self._training_creator = TrainingDatasetCreator() self._table_downloader = TableDownloader() @property @@ -161,8 +156,7 @@ def run(self, importer, name_override=None, return response.jobId def create_training_dataset(self, feature_set, start_date, end_date, - limit=None, destination=None, - dataset_name=None): + limit=None, name_prefix=None): """ Create training dataset for a feature set. The training dataset will be bounded by event timestamp between start_date and end_date. @@ -178,12 +172,7 @@ def create_training_dataset(self, feature_set, start_date, end_date, "2018-12-31") limit (int, optional): (default: None) maximum number of row returned - destination (str, optional): (default: None) destination table - for creating the training dataset. If not specified it will - create a table inside a dataset specified by bq_dataset. - dataset_name (str, optional): (default: None) name of the - training dataset. It is used as table name of the training - dataset if destination is not specified. + name_prefix (str, optional): (default: None) name prefix. :return: feast.resources.feature_set.DatasetInfo: DatasetInfo containing the information of training dataset @@ -191,44 +180,19 @@ def create_training_dataset(self, feature_set, start_date, end_date, self._check_create_training_dataset_args(feature_set, start_date, end_date, limit) - dataset_name = dataset_name if dataset_name is not None else \ - self._create_dataset_name(feature_set, start_date, end_date) - destination = destination if destination is not None \ - else self._create_training_table(dataset_name) - - features = feature_set.features - feature_specs = self._get_feature_spec_map(features) - wh_storage_ids = (feature_spec.dataStores.warehouse.id for feature_spec - in feature_specs.values()) - wh_storage_map = self._get_storage_spec_map(wh_storage_ids) - feature_table_tuples = [] - for feature_id, feature_spec in feature_specs.items(): - try: - wh_spec = wh_storage_map.get( - feature_spec.dataStores.warehouse.id) - if wh_spec.type is not "bigquery": - ValueError("feature set contains feature which has " - "warehouse store other than bigquery") - except KeyError: - raise ValueError("feature set contains feature which doesn't " - "have warehouse store") - feature_table_tuples.append((feature_id, - get_table_name(feature_id, wh_spec))) - - table = self._training_creator.create_training_dataset( - feature_table_tuples, - start_date, - end_date, - limit, - destination) - - if self.verbose: - print("Training dataset has been created in: {}".format( - destination)) + req = TrainingServiceTypes.CreateTrainingDatasetRequest( + featureSet=feature_set.proto, + startDate=_timestamp_from_datetime(_parse_date(start_date)), + endDate=_timestamp_from_datetime(_parse_date(end_date)), + limit=limit, + namePrefix=name_prefix + ) + resp = self._training_service_stub.CreateTrainingDataset(req) - return DatasetInfo(dataset_name, table) + return DatasetInfo(resp.datasetInfo.name, resp.datasetInfo.tableUrl) - def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequestType.LAST, + def get_serving_data(self, feature_set, entity_keys, + request_type=ServingRequestType.LAST, ts_range=None, limit=10): """Get data from the feast serving layer. You can either retrieve the the latest value, or a list of the latest values, up to a provided @@ -413,52 +377,25 @@ def _apply_storage(self, storage): "{}\n{}".format(response.storageId, storage)) return response.storageId - def _get_feature_spec_map(self, ids): - get_features_request = CoreServiceTypes.GetFeaturesRequest( - ids=ids - ) - get_features_resp = self._core_service_stub.GetFeatures( - get_features_request) - feature_specs = get_features_resp.features - return {feature_spec.id: feature_spec for feature_spec in - feature_specs} - - def _get_storage_spec_map(self, ids): - get_storage_request = CoreServiceTypes.GetStorageRequest( - ids=set(ids) - ) - get_storage_resp = self._core_service_stub.GetStorage( - get_storage_request) - storage_specs = get_storage_resp.storageSpecs - return {storage_spec.id: storage_spec for storage_spec in - storage_specs} - - def _create_training_table(self, dataset_name): - return ".".join([self._bq_dataset, dataset_name]) - - def _create_dataset_name(self, feature_set, start_date, end_date): - dataset_name = "_".join([feature_set.entity, start_date, end_date, - str(round(time.time()))]) - return re.sub('[^0-9a-zA-Z_]+', '', dataset_name) - def _check_create_training_dataset_args(self, feature_set, start_date, end_date, limit): if len(feature_set.features) < 1: raise ValueError("feature set is empty") - start = self._parse_date(start_date) - end = self._parse_date(end_date) + start = _parse_date(start_date) + end = _parse_date(end_date) if end < start: raise ValueError("end_date is before start_date") if limit is not None and limit < 1: raise ValueError("limit is not a positive integer") - def _parse_date(self, date): - try: - return datetime.strptime(date, "%Y-%m-%d") - except ValueError: - raise ValueError("Incorrect date format, should be YYYY-MM-DD") + +def _parse_date(date): + try: + return datetime.strptime(date, "%Y-%m-%d") + except ValueError: + raise ValueError("Incorrect date format, should be YYYY-MM-DD") def _timestamp_from_datetime(dt): diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index f80f41cc931..8c082f72ea8 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +from feast.core.TrainingService_pb2 import FeatureSet as FeatureSet_pb + class FeatureSet: """ @@ -23,6 +25,7 @@ def __init__(self, entity, features): self._features = features self._entity = entity + self._proto = FeatureSet_pb(entityName=entity, featureIds=features) @property def features(self): @@ -37,6 +40,10 @@ def features(self): def entity(self): return self._entity + @property + def proto(self): + return self._proto + def _ensure_same_entity(self, entity, features): for feature in features: e = feature.split(".")[0] diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index 97d9db141ce..b5ac9da086a 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -12,17 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -import itertools -import operator + import os -import pandas as pd import time -from google.cloud.storage import Client as GCSClient +import pandas as pd from google.cloud.bigquery.client import Client as BQClient -from google.cloud.bigquery.table import Table, TableReference -from google.cloud.bigquery.job import QueryJobConfig, ExtractJobConfig, DestinationFormat -from jinja2 import Template +from google.cloud.bigquery.job import ExtractJobConfig, DestinationFormat +from google.cloud.bigquery.table import Table +from google.cloud.storage import Client as GCSClient + from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gs_to_df @@ -140,106 +139,4 @@ def download_table_as_df(self, table_id, staging_location): # await completion job.result() - return gs_to_df(staging_file_path) - - -class TrainingDatasetCreator: - """ - Helper class to create a training dataset. - """ - - def __init__(self): - self._bq = BQClient() - script_dir = os.path.dirname(__file__) - with open(os.path.join(script_dir, "template", "training_query.j2")) \ - as file: - self._sql_template = Template(file.read()) - - def create_training_dataset(self, feature_table_tuples, - start_date, end_date, limit, - destination): - """ - Create training dataset for given list of feature and its table - between start_date and end_date. - - Args: - feature_table_tuples: [(str, str)] list of tuple of - feature id and it's BQ table ID - start_date: (str) start date of the training dataset - end_date: (str) end date of the training dataset - limit: (int) maximum number of row returned - destination: (str) fully qualified BigQuery table ID of the - destination - - Returns: fully qualified table id - - """ - query = self._create_query(feature_table_tuples, start_date, - end_date, limit) - query_config = QueryJobConfig() - query_config.destination = TableReference.from_string(destination) - - query_job = self._bq.query(query, query_config) - # wait until completion - query_job.result() - - return destination - - def _create_query(self, feature_table_tuples, start_date, - end_date, limit): - feature_groups = self._group_features(feature_table_tuples) - return self._sql_template.render(feature_groups=feature_groups, - start_date=start_date, - end_date=end_date, - limit=limit) - - def _group_features(self, feature_table_tuples): - feature_groups = [] - # (table_id, granularity, feature id) - temp = [((table_id, feature_id.split(".")[1]), feature_id) - for (feature_id, table_id) in feature_table_tuples] - it = itertools.groupby(temp, operator.itemgetter(0)) - for key, subiter in it: - features = [_Feature(item[1]) for item in subiter] - feature_groups.append(_FeatureGroup(key[0], key[1], features)) - # sort by granularity - feature_groups.sort() - return feature_groups - - -class _Feature: - """ - Helper class for templating a feature in training query - """ - def __init__(self, feature_id): - self.name = feature_id.split(".")[2] - self.column = feature_id.replace(".", "_") - - -class _FeatureGroup: - """ - Helper class for templating a group of feature having same table_id and - granularity in training query - """ - def __init__(self, table_id, granularity, features): - self.table_id = table_id - self.temp_table = table_id.replace(".", "_").replace("-", "_") - self.granularity = granularity - self.features = features - - GRANULARITY_SCORE = { - "second": 0, - "minute": 1, - "hour": 2, - "day": 3, - "none": 4 - } - - def __lt__(self, other): - my_score = self.GRANULARITY_SCORE[self.granularity] - other_score = self.GRANULARITY_SCORE[other.granularity] - - if my_score != other_score: - return my_score < other_score - - return self.table_id < other.table_id \ No newline at end of file + return gs_to_df(staging_file_path) \ No newline at end of file diff --git a/sdk/python/feast/sdk/utils/template/training_query.j2 b/sdk/python/feast/sdk/utils/template/training_query.j2 deleted file mode 100644 index ea553f8729b..00000000000 --- a/sdk/python/feast/sdk/utils/template/training_query.j2 +++ /dev/null @@ -1,43 +0,0 @@ -WITH - {% set comma = joiner(",") -%} - {% for feature_group in feature_groups -%} - {{ comma() -}} - raw_{{ feature_group.temp_table }} AS ( - SELECT - ROW_NUMBER() OVER (PARTITION BY id, event_timestamp ORDER BY created_timestamp DESC) rownum, - id, event_timestamp, created_timestamp - {% for feature in feature_group.features -%} - {{ comma() }}FIRST_VALUE({{feature.name}} IGNORE NULLS) OVER w AS {{feature.column}} - {% endfor -%} - FROM `{{feature_group.table_id}}` - {% if feature_group.granularity != "none" -%} - WHERE event_timestamp >= TIMESTAMP("{{ start_date }}") AND event_timestamp <= TIMESTAMP(DATETIME_ADD("{{ end_date }}", INTERVAL 1 DAY)) - {%- endif %} - WINDOW w AS ( PARTITION BY id, event_timestamp ORDER BY event_timestamp DESC )), - {{ feature_group.temp_table }} AS ( - SELECT * FROM raw_{{ feature_group.temp_table }} WHERE rownum = 1 ) - {% endfor %} -SELECT - {{ feature_groups[0].temp_table }}.id, - {{ feature_groups[0].temp_table }}.event_timestamp - {% for feature_group in feature_groups -%} - {% for feature in feature_group.features -%} - {{ comma() }}{{ feature_group.temp_table }}.{{ feature.column }} - {% endfor %} - {%- endfor %} -FROM - {{ feature_groups[0].temp_table }} -{% for feature_group in feature_groups -%} -{% if loop.index > 1 -%} -FULL JOIN - {{ feature_group.temp_table }} -ON - {{ feature_groups[0].temp_table }}.id = {{ feature_group.temp_table }}.id - {% if feature_group.granularity != "none" -%} - AND TIMESTAMP_TRUNC({{feature_groups[0].temp_table}}.event_timestamp, {{ feature_group.granularity|upper }}) = {{ feature_group.temp_table }}.event_timestamp - {%- endif %} -{% endif %} -{%- endfor %} -{%- if limit is not none %} -LIMIT {{ limit }} -{%- endif %} \ No newline at end of file diff --git a/sdk/python/setup.py b/sdk/python/setup.py index cd9d61d5423..a7cef102e4c 100644 --- a/sdk/python/setup.py +++ b/sdk/python/setup.py @@ -31,7 +31,6 @@ 'google-cloud-storage>=1.13.0', 'googleapis-common-protos>=1.5.5', 'grpcio>=1.16.1', - 'jinja2', 'pandas', 'protobuf>=3.0.0', 'PyYAML', diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index c3b9da12ed6..4c95f99d821 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -12,43 +12,43 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest -import grpc from datetime import datetime + +import grpc import pandas as pd -from pandas.util.testing import assert_frame_equal +import pytest from google.protobuf.timestamp_pb2 import Timestamp +from pandas.util.testing import assert_frame_equal import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs -from feast.specs.StorageSpec_pb2 import StorageSpec -from feast.specs.FeatureSpec_pb2 import FeatureSpec, DataStores, DataStore -from feast.specs.ImportSpec_pb2 import ImportSpec +import feast.core.TrainingService_pb2_grpc as training +import feast.serving.Serving_pb2 as serving_pb from feast.core.CoreService_pb2 import CoreServiceTypes from feast.core.JobService_pb2 import JobServiceTypes -from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, \ - TimestampRange, Entity, FeatureValueList -from feast.types.Value_pb2 import ValueList, TimestampList, Int32List -import feast.serving.Serving_pb2 as serving_pb - -from feast.sdk.client import Client +from feast.core.TrainingService_pb2 import TrainingServiceTypes +from feast.core.TrainingService_pb2 import DatasetInfo as DatasetInfo_pb +from feast.sdk.client import Client, _parse_date, _timestamp_from_datetime +from feast.sdk.client import ServingRequestType from feast.sdk.importer import Importer +from feast.sdk.resources.entity import Entity from feast.sdk.resources.feature import Feature, Granularity from feast.sdk.resources.feature_group import FeatureGroup -from feast.sdk.resources.entity import Entity -from feast.sdk.resources.storage import Storage from feast.sdk.resources.feature_set import FeatureSet, DatasetInfo, FileType -from feast.sdk.client import ServingRequestType -from feast.sdk.utils.bq_util import TrainingDatasetCreator, TableDownloader +from feast.sdk.resources.storage import Storage +from feast.sdk.utils.bq_util import TableDownloader +from feast.serving.Serving_pb2 import QueryFeatures, RequestDetail, \ + TimestampRange, FeatureValueList +from feast.specs.FeatureSpec_pb2 import FeatureSpec, DataStores, DataStore +from feast.specs.ImportSpec_pb2 import ImportSpec +from feast.specs.StorageSpec_pb2 import StorageSpec +from feast.types.Value_pb2 import ValueList, TimestampList, Int32List class TestClient(object): - default_bq_dataset = "project.dataset" - @pytest.fixture def client(self): - return Client(core_url="some.uri", serving_url="some.serving.uri", - bq_dataset=self.default_bq_dataset) + return Client(core_url="some.uri", serving_url="some.serving.uri") def test_apply_single_feature(self, client, mocker): my_feature = Feature(name="test", @@ -165,91 +165,100 @@ def test_create_training_dataset_invalid_args(self, client): "2018-12-02", -1) def test_create_training_dataset(self, client, mocker): - bq_id = "BIGQUERY1" - feature1 = "myentity.none.feature1" - feature2 = "myentity.hour.feature2" - feature1_spec = self._create_feature_spec(feature1, bq_id) - feature2_spec = self._create_feature_spec(feature2, bq_id) - bq_spec = self._create_bq_spec(bq_id, "project", "dataset") - - feature_set = FeatureSet("myentity", [feature1, feature2]) - start_date = "2018-12-01" - end_date = "2018-12-05" - limit = 1000 - destination = "project.dataset.destination" - dataset_name = "my_training_set" - - core_stub = core.CoreServiceStub(grpc.insecure_channel("")) - training_crt = TrainingDatasetCreator() - mocker.patch.object(core_stub, 'GetFeatures', - return_value=CoreServiceTypes.GetFeaturesResponse( - features=[feature1_spec, feature2_spec])) - mocker.patch.object(core_stub, 'GetStorage', - return_value=CoreServiceTypes.GetStorageResponse( - storageSpecs=[bq_spec])) - mocker.patch.object(training_crt, "create_training_dataset", - return_value=destination) + entity_name = "myentity" + feature_ids = ["myentity.none.feature1", "myentity.second.feature2"] + fs = FeatureSet(entity_name, feature_ids) + start_date = "2018-01-02" + end_date = "2018-12-31" + + ds_pb = DatasetInfo_pb(name="dataset_name", + tableUrl="project.dataset.table") + + mock_trn_stub = training.TrainingServiceStub(grpc.insecure_channel("")) + mocker.patch.object(mock_trn_stub, "CreateTrainingDataset", + return_value=TrainingServiceTypes + .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) + client._training_service_stub = mock_trn_stub + + ds = client.create_training_dataset(fs, start_date, end_date) + + assert "dataset_name" == ds.name + assert "project.dataset.table" == ds.table_id + mock_trn_stub.CreateTrainingDataset.assert_called_once_with( + TrainingServiceTypes.CreateTrainingDatasetRequest( + featureSet=fs.proto, + startDate=_timestamp_from_datetime(_parse_date(start_date)), + endDate=_timestamp_from_datetime(_parse_date(end_date)), + limit=None, + namePrefix=None + ) + ) - client._core_service_stub = core_stub - client._training_creator = training_crt - - ds_info = client.create_training_dataset(feature_set, start_date, - end_date, limit=limit, - destination=destination, - dataset_name=dataset_name) - training_crt.create_training_dataset \ - .assert_called_once_with([(feature1, - "project.dataset.myentity_none"), - (feature2, - "project.dataset.myentity_hour")], - start_date, end_date, limit, destination) - assert ds_info.table_id == destination - assert ds_info.name == dataset_name - - def test_create_training_dataset_no_destination(self, client, mocker): - mocker.patch('time.time', return_value=0) - bq_id = "BIGQUERY1" - feature1 = "myentity.none.feature1" - feature2 = "myentity.hour.feature2" - feature1_spec = self._create_feature_spec(feature1, bq_id) - feature2_spec = self._create_feature_spec(feature2, bq_id) - bq_spec = self._create_bq_spec(bq_id, "project", "dataset") - - feature_set = FeatureSet("myentity", [feature1, feature2]) - start_date = "2018-12-01" - end_date = "2018-12-05" - limit = 1000 - exp_dst = ".".join([self.default_bq_dataset, - "myentity_20181201_20181205_0"]) - - core_stub = core.CoreServiceStub(grpc.insecure_channel("")) - training_crt = TrainingDatasetCreator() - mocker.patch.object(core_stub, 'GetFeatures', - return_value=CoreServiceTypes.GetFeaturesResponse( - features=[feature1_spec, feature2_spec])) - mocker.patch.object(core_stub, 'GetStorage', - return_value=CoreServiceTypes.GetStorageResponse( - storageSpecs=[bq_spec])) - mocker.patch.object(training_crt, "create_training_dataset", - return_value=exp_dst) - - client._core_service_stub = core_stub - client._training_creator = training_crt - - ds_info = client.create_training_dataset(feature_set, start_date, - end_date, limit=limit, - destination=None, - dataset_name=None) - - training_crt.create_training_dataset \ - .assert_called_once_with([(feature1, - "project.dataset.myentity_none"), - (feature2, - "project.dataset.myentity_hour")], - start_date, end_date, limit, exp_dst) - exp_dataset_name = exp_dst.split(".")[2] - assert ds_info.table_id == "project.dataset." + exp_dataset_name - assert ds_info.name == exp_dataset_name + def test_create_training_dataset_with_limit(self, client, mocker): + entity_name = "myentity" + feature_ids = ["myentity.none.feature1", "myentity.second.feature2"] + fs = FeatureSet(entity_name, feature_ids) + start_date = "2018-01-02" + end_date = "2018-12-31" + limit = 100 + + ds_pb = DatasetInfo_pb(name="dataset_name", + tableUrl="project.dataset.table") + + mock_trn_stub = training.TrainingServiceStub(grpc.insecure_channel("")) + mocker.patch.object(mock_trn_stub, "CreateTrainingDataset", + return_value=TrainingServiceTypes + .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) + client._training_service_stub = mock_trn_stub + + ds = client.create_training_dataset(fs, start_date, end_date, + limit=limit) + + assert "dataset_name" == ds.name + assert "project.dataset.table" == ds.table_id + mock_trn_stub.CreateTrainingDataset.assert_called_once_with( + TrainingServiceTypes.CreateTrainingDatasetRequest( + featureSet=fs.proto, + startDate=_timestamp_from_datetime(_parse_date(start_date)), + endDate=_timestamp_from_datetime(_parse_date(end_date)), + limit=limit, + namePrefix=None + ) + ) + + def test_create_training_dataset_with_name_prefix(self, client, mocker): + entity_name = "myentity" + feature_ids = ["myentity.none.feature1", "myentity.second.feature2"] + fs = FeatureSet(entity_name, feature_ids) + start_date = "2018-01-02" + end_date = "2018-12-31" + limit = 100 + name_prefix = "feast" + + ds_pb = DatasetInfo_pb(name="dataset_name", + tableUrl="project.dataset.table") + + mock_trn_stub = training.TrainingServiceStub(grpc.insecure_channel("")) + mocker.patch.object(mock_trn_stub, "CreateTrainingDataset", + return_value=TrainingServiceTypes + .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) + client._training_service_stub = mock_trn_stub + + ds = client.create_training_dataset(fs, start_date, end_date, + limit=limit, + name_prefix=name_prefix) + + assert "dataset_name" == ds.name + assert "project.dataset.table" == ds.table_id + mock_trn_stub.CreateTrainingDataset.assert_called_once_with( + TrainingServiceTypes.CreateTrainingDatasetRequest( + featureSet=fs.proto, + startDate=_timestamp_from_datetime(_parse_date(start_date)), + endDate=_timestamp_from_datetime(_parse_date(end_date)), + limit=limit, + namePrefix=name_prefix + ) + ) def test_build_serving_request_last(self, client): feature_set = FeatureSet("entity", @@ -300,8 +309,8 @@ def test_serving_response_to_df(self, client): 'timestamp': [datetime.fromtimestamp(10), datetime.fromtimestamp(10)], 'feat1': [3, 3], - 'feat2': [1, 3]})\ - .reset_index(drop=True) + 'feat2': [1, 3]}) \ + .reset_index(drop=True) df = client._response_to_df(response) \ .sort_values(['entity', 'timestamp']) \ .reset_index(drop=True)[expected_df.columns] @@ -329,7 +338,7 @@ def test_serving_response_to_df_multiple(self, client): datetime.fromtimestamp(11)], 'feat1': [3, 4, 4, 6], 'feat2': [1, 3, 2, 5]}) \ - .reset_index(drop=True) + .reset_index(drop=True) df = client._response_to_df(response) \ .sort_values(['entity', 'timestamp']) \ .reset_index(drop=True)[expected_df.columns] @@ -348,8 +357,8 @@ def test_download_dataset_as_file(self, client, mocker): dataset = DatasetInfo("mydataset", table_id) result = client.download_dataset(dataset, destination, - staging_location=staging_location, - file_type=FileType.CSV) + staging_location=staging_location, + file_type=FileType.CSV) assert result == destination table_dlder.download_table_as_file.assert_called_once_with(table_id, @@ -388,4 +397,3 @@ def _create_feature_spec(self, feature_id, wh_id): def _create_bq_spec(self, id, project, dataset): return StorageSpec(id=id, type="bigquery", options={ "project": project, "dataset": dataset}) - diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py index 6fd7594efa5..dbb6dbab714 100644 --- a/sdk/python/tests/sdk/utils/test_bq_utils.py +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -12,14 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -from feast.sdk.utils.bq_util import TrainingDatasetCreator, TableDownloader, \ - get_table_name -from feast.specs.StorageSpec_pb2 import StorageSpec -from feast.sdk.resources.feature_set import FileType -from google.cloud.bigquery.table import Table -import pytest import os +import pytest +from google.cloud.bigquery.table import Table + +from feast.sdk.resources.feature_set import FileType +from feast.sdk.utils.bq_util import TableDownloader, get_table_name +from feast.specs.StorageSpec_pb2 import StorageSpec + def test_get_table_name(): project_name = "my_project" @@ -40,53 +41,6 @@ def test_get_table_name_not_bq(): get_table_name(feature_id, storage_spec) -class TestTrainingDatasetCreator(object): - def test_simple(self): - t = TrainingDatasetCreator() - assert t._sql_template is not None - - def test_group_features(self): - f = [("entity.none.feature1", "project.dataset.table1"), - ("entity.none.feature2", "project.dataset.table1"), - ("entity.none.feature3", "project.dataset.table1"), - ("entity.minute.feature1", "project.dataset.table1"), - ("entity.hour.feature1", "project.dataset.table1"), - ("entity.day.feature1", "project.dataset.table1"), - ("entity.second.feature1", "project.dataset.table1")] - - t = TrainingDatasetCreator() - feature_groups = t._group_features(f) - assert feature_groups[0].granularity == "second" - assert feature_groups[1].granularity == "minute" - assert feature_groups[2].granularity == "hour" - assert feature_groups[3].granularity == "day" - assert feature_groups[4].granularity == "none" - - for feature_group in feature_groups: - assert feature_group.table_id == "project.dataset.table1" - - assert len(feature_groups[0].features) == 1 - assert len(feature_groups[1].features) == 1 - assert len(feature_groups[2].features) == 1 - assert len(feature_groups[3].features) == 1 - assert len(feature_groups[4].features) == 3 - - def test_create_query(self): - f = [("entity.none.feature1", "project.dataset.table1"), - ("entity.none.feature2", "project.dataset.table1"), - ("entity.none.feature3", "project.dataset.table1"), - ("entity.minute.feature1", "project.dataset.table1"), - ("entity.hour.feature1", "project.dataset.table1"), - ("entity.day.feature1", "project.dataset.table1"), - ("entity.second.feature1", "project.dataset.table1")] - start = "2018-12-01" - end = "2018-12-02" - - t = TrainingDatasetCreator() - query = t._create_query(f, start, end, None) - assert "LIMIT" not in query - - class TestTableDownloader(object): def test_download_table_as_df(self, mocker): self._stop_time(mocker) @@ -179,12 +133,12 @@ def _stop_time(self, mocker): mocker.patch('time.time', return_value=0) -class _Job(): +class _Job: def result(self): return None -class _Bucket(): +class _Bucket: def __init__(self, blob): self._blob = blob @@ -192,6 +146,6 @@ def blob(self, name): return self._blob -class _Blob(): +class _Blob: def download_to_filename(self, filename): pass From 040290b823cb23aed903c8e672a73b710f6549df Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Sat, 5 Jan 2019 15:01:37 +0800 Subject: [PATCH 37/50] Refactoring --- sdk/python/feast/sdk/resources/entity.py | 29 ++++++++++--------- sdk/python/feast/sdk/resources/storage.py | 16 +++++----- sdk/python/feast/sdk/utils/gs_utils.py | 17 ++++++----- sdk/python/feast/sdk/utils/print_utils.py | 4 +-- sdk/python/tests/sdk/resources/test_entity.py | 1 + 5 files changed, 36 insertions(+), 31 deletions(-) diff --git a/sdk/python/feast/sdk/resources/entity.py b/sdk/python/feast/sdk/resources/entity.py index 52be01e7b9a..59560840bfc 100644 --- a/sdk/python/feast/sdk/resources/entity.py +++ b/sdk/python/feast/sdk/resources/entity.py @@ -18,19 +18,22 @@ from feast.sdk.utils.print_utils import spec_to_yaml from google.protobuf.json_format import Parse -''' -Wrapper class for feast entity -''' + class Entity: + """ + Wrapper class for feast entity + """ + def __init__(self, name="", description="", tags=[]): - '''Create Entity instance. + """ + Create Entity instance. Args: name (str): name of entity description (str): description of entity tags (list[str], optional): defaults to []. list of tags for this entity - ''' + """ self.__spec = EntitySpec(name=name, description=description, tags=tags) @@ -65,11 +68,11 @@ def tags(self, value): @classmethod def from_yaml(cls, path): - '''Create an instance of entity from a yaml file + """Create an instance of entity from a yaml file Args: path (str): path to yaml file - ''' + """ with open(path, 'r') as file: content = yaml.safe_load(file.read()) entity = cls() @@ -81,7 +84,7 @@ def from_yaml(cls, path): def create_feature(self, name, granularity, value_type, owner, description): - '''Create a feature related to this entity + """Create a feature related to this entity Args: name (str): feature name @@ -91,24 +94,24 @@ def create_feature(self, name, granularity, value_type, owner, the feature owner (str): owner of the feature description (str): feature's description - ''' + """ pass def __str__(self): - '''Print the feature in yaml format + """Print the feature in yaml format Returns: str: yaml formatted representation of the entity - ''' + """ return spec_to_yaml(self.__spec) def dump(self, path): - '''Dump the feature into a yaml file. + """Dump the feature into a yaml file. It will replace content of an existing file. Args: path (str): destination file path - ''' + """ with open(path, 'w') as file: file.write(str(self)) print("Saved spec to {}".format(path)) \ No newline at end of file diff --git a/sdk/python/feast/sdk/resources/storage.py b/sdk/python/feast/sdk/resources/storage.py index dbfbd9b0f37..942d1a477ef 100644 --- a/sdk/python/feast/sdk/resources/storage.py +++ b/sdk/python/feast/sdk/resources/storage.py @@ -25,13 +25,13 @@ class Storage: Wrapper class for feast storage """ def __init__(self, id = "", type = "", options={}): - '''Create Storage instance. + """Create Storage instance. Args: id (str): storage id type (str): storage type options (dict, optional) : map of storage options - ''' + """ self.__spec = StorageSpec(id = id, type = type, options = options) @property @@ -65,11 +65,11 @@ def options(self, value): @classmethod def from_yaml(cls, path): - '''Create an instance of storage from a yaml file + """Create an instance of storage from a yaml file Args: path (str): path to yaml file - ''' + """ with open(path, 'r') as file: content = yaml.safe_load(file.read()) storage = cls() @@ -80,20 +80,20 @@ def from_yaml(cls, path): return storage def __str__(self): - '''Return string representation the storage in yaml format + """Return string representation the storage in yaml format Returns: str: yaml formatted representation of the entity - ''' + """ return spec_to_yaml(self.__spec) def dump(self, path): - '''Dump the storage into a yaml file. + """Dump the storage into a yaml file. It will replace content of an existing file. Args: path (str): destination file path - ''' + """ with open(path, 'w') as file: file.write(str(self)) print("Saved spec to {}".format(path)) diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index 6716fdbd387..c6a6cb59476 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -13,9 +13,10 @@ # limitations under the License. import io -import time import os import re +import time + import pandas as pd from google.cloud import storage @@ -23,14 +24,14 @@ def gs_to_df(path): - '''Reads a file from gs to pandas + """Reads a file from gs to pandas Args: path (str): full gcs path to the file Returns: pandas.DataFrame: dataframe - ''' + """ bucket_name, blob_name = split_gs_path(path) storage_client = storage.Client() bucket = storage_client.get_bucket(bucket_name) @@ -44,13 +45,13 @@ def gs_to_df(path): def df_to_gs(df, path): - '''Writes the given df to the path specified. Will fail if the bucket does + """Writes the given df to the path specified. Will fail if the bucket does not exist. Args: df (pandas.DataFrame): dataframe path (str): path in gcs to write to - ''' + """ bucket_name, blob_name = split_gs_path(path) storage_client = storage.Client() bucket = storage_client.get_bucket(bucket_name) @@ -66,12 +67,12 @@ def split_gs_path(path): def is_gs_path(path): - '''Check if path is a gcs path + """Check if path is a gcs path Args: path (str): path to file Returns: bool: is a valid gcs path - ''' - return re.match(_GCS_PATH_REGEX, path) != None \ No newline at end of file + """ + return re.match(_GCS_PATH_REGEX, path) != None diff --git a/sdk/python/feast/sdk/utils/print_utils.py b/sdk/python/feast/sdk/utils/print_utils.py index c1e28428fbc..8399f2fb52c 100644 --- a/sdk/python/feast/sdk/utils/print_utils.py +++ b/sdk/python/feast/sdk/utils/print_utils.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from google.protobuf.json_format import MessageToDict - from collections import OrderedDict + import yaml +from google.protobuf.json_format import MessageToDict def spec_to_yaml(spec): diff --git a/sdk/python/tests/sdk/resources/test_entity.py b/sdk/python/tests/sdk/resources/test_entity.py index 535175e0980..6bf9d70de44 100644 --- a/sdk/python/tests/sdk/resources/test_entity.py +++ b/sdk/python/tests/sdk/resources/test_entity.py @@ -15,6 +15,7 @@ from feast.sdk.resources.entity import Entity import os + class TestEntity(object): def test_read_from_yaml(self): entity_no_tag = Entity.from_yaml("tests/sample/valid_entity_no_tag.yaml") From 26513186f261dd733f7289ac3651c9ce6d619e40 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Tue, 8 Jan 2019 10:18:51 +0800 Subject: [PATCH 38/50] Fix for setting warehouse and serving storages --- sdk/python/feast/sdk/resources/feature.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index b0b869ca47a..f34a40b06d9 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -146,7 +146,7 @@ def warehouse_store(self): @warehouse_store.setter def warehouse_store(self, value): - self.__spec.dataStores.serving.CopyFrom(value) + self.__spec.dataStores.warehouse.CopyFrom(value) @property def serving_store(self): @@ -154,7 +154,7 @@ def serving_store(self): @serving_store.setter def serving_store(self, value): - self.__spec.dataStores.warehouse.CopyFrom(value) + self.__spec.dataStores.serving.CopyFrom(value) @property def description(self): From 92cb00e899a1972bdca68d78537e89259823333e Mon Sep 17 00:00:00 2001 From: zhilingc Date: Tue, 8 Jan 2019 13:13:23 +0800 Subject: [PATCH 39/50] Add support for no results returned --- sdk/python/feast/sdk/client.py | 35 +++++++++++++++++++---------- sdk/python/tests/sdk/test_client.py | 12 ++++++++-- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 072c1936339..b8f52076735 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -22,6 +22,7 @@ import grpc import pandas as pd +import dateutil.parser from google.protobuf.timestamp_pb2 import Timestamp from feast.core.CoreService_pb2_grpc import CoreServiceStub @@ -187,13 +188,19 @@ def create_training_dataset(self, feature_set, start_date, end_date, limit=limit, namePrefix=name_prefix ) + if self.verbose: + print("creating training dataset for features: " + + str(feature_set.features)) resp = self._training_service_stub.CreateTrainingDataset(req) + if self.verbose: + print("created dataset {}: {}".format(resp.datasetInfo.name, + resp.datasetInfo.tableUrl)) return DatasetInfo(resp.datasetInfo.name, resp.datasetInfo.tableUrl) def get_serving_data(self, feature_set, entity_keys, request_type=ServingRequestType.LAST, - ts_range=None, limit=10): + ts_range=[], limit=10): """Get data from the feast serving layer. You can either retrieve the the latest value, or a list of the latest values, up to a provided limit. @@ -208,8 +215,8 @@ def get_serving_data(self, feature_set, entity_keys, request_type (feast.sdk.utils.types.ServingRequestType): (default: feast.sdk.utils.types.ServingRequestType.LAST) type of request: one of [LIST, LAST] - ts_range (:obj: `list` of :obj: `datetime.datetime`, optional): size - 2 list of start timestamp and end timestamp. Only required if + ts_range (:obj: `list` of str, optional): size 2 list of start + timestamp and end timestamp, in ISO 8601 format. Only required if request_type is set to LIST limit (int, optional): (default: 10) number of values to get. Only required if request_type is set to LIST @@ -218,10 +225,11 @@ def get_serving_data(self, feature_set, entity_keys, pandas.DataFrame: DataFrame of results """ - ts_range = [_timestamp_from_datetime(dt) for dt in ts_range] + ts_range = [_timestamp_from_datetime(dateutil.parser.parse(dt)) + for dt in ts_range] request = self._build_serving_request(feature_set, entity_keys, request_type, ts_range, limit) - return self._response_to_df(self._serving_service_stub + return self._response_to_df(feature_set, self._serving_service_stub .QueryFeatures(request)) def download_dataset(self, dataset_info, dest, staging_location, @@ -240,10 +248,10 @@ def download_dataset(self, dataset_info, dest, staging_location, str: path to the downloaded file """ return self._table_downloader.download_table_as_file( - dataset_info.table_id, - dest, - staging_location, - file_type) + dataset_info.table_id, + dest, + staging_location, + file_type) def download_dataset_to_df(self, dataset_info, staging_location): """ @@ -258,8 +266,8 @@ def download_dataset_to_df(self, dataset_info, staging_location): """ return self._table_downloader.download_table_as_df( - dataset_info.table_id, - staging_location) + dataset_info.table_id, + staging_location) def close(self): """ @@ -285,7 +293,7 @@ def _build_serving_request(self, feature_set, entity_keys, request_type, request.requestDetails.extend(features) return request - def _response_to_df(self, response): + def _response_to_df(self, feature_set, response): entity_tables = [] for entity_key in response.entities: feature_tables = [] @@ -308,6 +316,9 @@ def _response_to_df(self, response): entity_table = pd.merge(left=entity_table, right=feature_tables[idx], how='outer') entity_tables.append(entity_table) + if len(entity_tables) == 0: + return pd.DataFrame(columns=[feature_set.entity, "timestamp"] + + feature_set.features) df = pd.concat(entity_tables) return df.reset_index(drop=True) diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 4c95f99d821..431dcc691ce 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -311,7 +311,7 @@ def test_serving_response_to_df(self, client): 'feat1': [3, 3], 'feat2': [1, 3]}) \ .reset_index(drop=True) - df = client._response_to_df(response) \ + df = client._response_to_df(FeatureSet("", []), response) \ .sort_values(['entity', 'timestamp']) \ .reset_index(drop=True)[expected_df.columns] assert_frame_equal(df, expected_df) @@ -339,11 +339,19 @@ def test_serving_response_to_df_multiple(self, client): 'feat1': [3, 4, 4, 6], 'feat2': [1, 3, 2, 5]}) \ .reset_index(drop=True) - df = client._response_to_df(response) \ + df = client._response_to_df(FeatureSet("", []), response) \ .sort_values(['entity', 'timestamp']) \ .reset_index(drop=True)[expected_df.columns] assert_frame_equal(df, expected_df) + def test_serving_response_to_df_no_data(self, client): + response = QueryFeatures.Response(entityName="entity") + expected_df = pd.DataFrame(columns= + ['entity', 'timestamp', 'entity.day.feat1', 'entity.day.feat2']) + df = client._response_to_df(FeatureSet("entity", + ["entity.day.feat1", "entity.day.feat2"]), response) + assert_frame_equal(df, expected_df) + def test_download_dataset_as_file(self, client, mocker): destination = "/tmp/dest_file" From 8027c9e9f3a620ba9942e764e7b4b8b098c00e06 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Wed, 9 Jan 2019 12:26:16 +0800 Subject: [PATCH 40/50] Remove examples first --- .../hello_feast/FeastPythonSDKProposal2.ipynb | 958 ------------------ .../examples/hello_feast/customer_entity.yaml | 12 - .../hello_feast/customer_features.csv | 6 - .../hello_feast/driver_feature_import.yaml | 15 - .../examples/hello_feast/driver_features.csv | 11 - 5 files changed, 1002 deletions(-) delete mode 100644 sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb delete mode 100644 sdk/python/examples/hello_feast/customer_entity.yaml delete mode 100644 sdk/python/examples/hello_feast/customer_features.csv delete mode 100644 sdk/python/examples/hello_feast/driver_feature_import.yaml delete mode 100644 sdk/python/examples/hello_feast/driver_features.csv diff --git a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb b/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb deleted file mode 100644 index 769d58169d4..00000000000 --- a/sdk/python/examples/hello_feast/FeastPythonSDKProposal2.ipynb +++ /dev/null @@ -1,958 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# __Feast Python SDK Proposal 2__" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# ideally we install feast first\n", - "import sys\n", - "sys.path.append(\"/Users/zhilingc/Documents/go-projects/src/github.com/gojektech/feast/sdk/python\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import datetime\n", - "\n", - "from feast.sdk.resources.entity import Entity\n", - "from feast.sdk.resources.feature import Feature\n", - "from feast.sdk.resources.storage import Datastore\n", - "from feast.types.Granularity_pb2 import Granularity\n", - "from feast.types.Value_pb2 import ValueType\n", - "import feast.specs.FeatureSpec_pb2 as feature_pb\n", - "\n", - "from feast.sdk.importer import Importer\n", - "\n", - "from feast.sdk.client import Client" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Connect to your Feast server" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "fs = Client('localhost:8433', verbose=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load feature data from a local file" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
driver_idtscompletedavg_distance_completedavg_customer_distance_completedavg_distance_cancelled
012018-09-25T00:00:00.000121.102000172.000000-1.0000
122018-09-25T00:00:00.000238.160000783.00000015.6190
232018-09-25T00:00:00.000142.833286138.14285718.5935
342018-09-25T00:00:00.00074.5930001575.000000-1.0000
452018-09-25T00:00:00.0001511.765600314.0000006.7330
\n", - "
" - ], - "text/plain": [ - " driver_id ts completed avg_distance_completed \\\n", - "0 1 2018-09-25T00:00:00.000 12 1.102000 \n", - "1 2 2018-09-25T00:00:00.000 23 8.160000 \n", - "2 3 2018-09-25T00:00:00.000 14 2.833286 \n", - "3 4 2018-09-25T00:00:00.000 7 4.593000 \n", - "4 5 2018-09-25T00:00:00.000 15 11.765600 \n", - "\n", - " avg_customer_distance_completed avg_distance_cancelled \n", - "0 172.000000 -1.0000 \n", - "1 783.000000 15.6190 \n", - "2 138.142857 18.5935 \n", - "3 1575.000000 -1.0000 \n", - "4 314.000000 6.7330 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.read_csv('driver_features.csv')\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create customer entity" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "name: customer\n", - "description: desc\n", - "tags:\n", - "- loyal\n", - "- customer\n", - "\n" - ] - } - ], - "source": [ - "customer_entity = Entity('customer', \"desc\", [\"loyal\", \"customer\"])\n", - "print(customer_entity)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create customer feature" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "id: customer.day.age\n", - "name: age\n", - "owner: user@website.com\n", - "description: Customer's age\n", - "granularity: DAY\n", - "valueType: INT64\n", - "entity: customer\n", - "dataStores:\n", - " serving:\n", - " id: REDIS1\n", - " warehouse:\n", - " id: BIGQUERY1\n", - "\n" - ] - } - ], - "source": [ - "customer_age = Feature(name='age', \n", - " entity=\"customer\",\n", - " granularity=Granularity.DAY, \n", - " owner='user@website.com',\n", - " description=\"Customer's age\",\n", - " value_type=ValueType.INT64, \n", - " serving_store=Datastore(id=\"REDIS1\"),\n", - " warehouse_store=Datastore(id=\"BIGQUERY1\"))\n", - "print(customer_age)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "customer_balance = Feature(name='balance', \n", - " entity=\"customer\",\n", - " granularity=Granularity.DAY, \n", - " owner='user@website.com', \n", - " value_type=ValueType.FLOAT, \n", - " description=\"Customer's account balance\",\n", - " serving_store=Datastore(id=\"REDIS1\"),\n", - " warehouse_store=Datastore(id=\"BIGQUERY1\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Register customer entity in Feast" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Successfully applied entity with name: customer\n", - "---\n", - "name: customer\n", - "description: desc\n", - "tags:\n", - "- loyal\n", - "- customer\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "'customer'" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fs.apply(customer_entity)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Register multiple customer features" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Successfully applied feature with id: customer.day.age\n", - "---\n", - "id: customer.day.age\n", - "name: age\n", - "owner: user@website.com\n", - "description: Customer's age\n", - "granularity: DAY\n", - "valueType: INT64\n", - "entity: customer\n", - "dataStores:\n", - " serving:\n", - " id: REDIS1\n", - " warehouse:\n", - " id: BIGQUERY1\n", - "\n", - "Successfully applied feature with id: customer.day.balance\n", - "---\n", - "id: customer.day.balance\n", - "name: balance\n", - "owner: user@website.com\n", - "description: Customer's account balance\n", - "granularity: DAY\n", - "valueType: FLOAT\n", - "entity: customer\n", - "dataStores:\n", - " serving:\n", - " id: REDIS1\n", - " warehouse:\n", - " id: BIGQUERY1\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "['customer.day.age', 'customer.day.balance']" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fs.apply([customer_age, customer_balance])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Register customer's \"age\" feature in Feast using the apply method\n", - "* This command is idempotent" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Successfully applied feature with id: customer.day.age\n", - "---\n", - "id: customer.day.age\n", - "name: age\n", - "owner: user@website.com\n", - "description: Customer's age\n", - "granularity: DAY\n", - "valueType: INT64\n", - "entity: customer\n", - "dataStores:\n", - " serving:\n", - " id: REDIS1\n", - " warehouse:\n", - " id: BIGQUERY1\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "'customer.day.age'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fs.apply(customer_age)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create an importer from a csv" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "cust_importer = Importer.from_csv('customer_features.csv', \n", - " granularity=Granularity.DAY, \n", - " entity='customer', \n", - " owner='user@website.com',\n", - " staging_location=\"gs://zl-test-bucket/feast\",\n", - " id_column=\"customer_id\", \n", - " timestamp_value=datetime.datetime.now())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### [Alternative] Create an importer from a BigQuery table" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", - " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n", - "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", - " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n" - ] - } - ], - "source": [ - "driver_importer_from_bq = Importer.from_bq(\"the-big-data-staging-007.feast_test.surge_gocar\", \n", - " entity=\"s2id\", \n", - " granularity=Granularity.MINUTE, \n", - " owner='user@website.com',\n", - " timestamp_column=\"start_time\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "type: bigquery\n", - "options:\n", - " dataset: feast_test\n", - " project: the-big-data-staging-007\n", - " table: surge_gocar\n", - "entities:\n", - "- s2id\n", - "schema:\n", - " entityIdColumn: s2id\n", - " fields:\n", - " - name: start_time\n", - " - name: s2id\n", - " - featureId: s2id.minute.surge_factor\n", - " name: surge_factor\n", - " timestampColumn: start_time\n", - "\n", - "id: s2id.minute.surge_factor\n", - "name: surge_factor\n", - "owner: user@website.com\n", - "granularity: MINUTE\n", - "valueType: DOUBLE\n", - "entity: s2id\n", - "dataStores: {}\n", - "\n" - ] - } - ], - "source": [ - "driver_importer_from_bq.describe()\n", - "for feat in driver_importer_from_bq.features:\n", - " print(feat)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### [Alternative] Create an importer from a Pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "my_pandas_df = pd.read_csv(\"driver_features.csv\")\n", - "driver_importer_from_df = Importer.from_df(my_pandas_df, \n", - " entity='driver', \n", - " granularity=Granularity.DAY, \n", - " owner='user@website.com', \n", - " staging_location=\"gs://staging-bucket/feast\",\n", - " id_column=\"driver_id\", \n", - " timestamp_column=\"ts\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Preview the dataframe loaded by the importer" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
customer_idagebalance
0130100000
123912312
231010
3445241111
452350000
\n", - "
" - ], - "text/plain": [ - " customer_id age balance\n", - "0 1 30 100000\n", - "1 2 39 12312\n", - "2 3 10 10\n", - "3 4 45 241111\n", - "4 5 23 50000" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cust_importer.df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Describe the importer" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "type: file\n", - "options:\n", - " format: csv\n", - " path: gs://zl-test-bucket/feast/customer_features.csv\n", - "entities:\n", - "- customer\n", - "schema:\n", - " entityIdColumn: customer_id\n", - " fields:\n", - " - name: customer_id\n", - " - featureId: customer.day.age\n", - " name: age\n", - " - featureId: customer.day.balance\n", - " name: balance\n", - " timestampValue: '2018-12-20T16:27:41Z'\n", - "\n" - ] - } - ], - "source": [ - "cust_importer.describe()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Submit the import job\n", - "* This loads the CSV from GCS into Feast\n", - "* Automatically registers entities and features with Feast during submission" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Staging file to remote path gs://zl-test-bucket/feast/customer_features.csv\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", - " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n", - "/usr/local/anaconda3/lib/python3.6/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a \"quota exceeded\" or \"API not enabled\" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/\n", - " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Submitting job with spec:\n", - " type: file\n", - "options:\n", - " format: csv\n", - " path: gs://zl-test-bucket/feast/customer_features.csv\n", - "entities:\n", - "- customer\n", - "schema:\n", - " entityIdColumn: customer_id\n", - " fields:\n", - " - name: customer_id\n", - " - featureId: customer.day.age\n", - " name: age\n", - " - featureId: customer.day.balance\n", - " name: balance\n", - " timestampValue: '2018-12-20T16:27:41Z'\n", - "\n", - "Submitted job with id: myjob1545303576252\n" - ] - }, - { - "data": { - "text/plain": [ - "'myjob1545303576252'" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fs.run(cust_importer, name_override=\"myjob\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Write out specification files for later use" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved spec to driver_feature_import.yaml\n", - "Saved spec to customer_entity.yaml\n", - "Saved spec to customer_entity.yaml\n" - ] - } - ], - "source": [ - "cust_importer.dump(\"driver_feature_import.yaml\")\n", - "customer_entity.dump(\"customer_entity.yaml\")\n", - "customer_age.dump(\"customer_entity.yaml\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Create a “feature set” which can be used to query both training data and serving data.\n", - "* The feature set is simply an object that locally tracks which entity, granularity, and features you are interested in." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "feature_set = fs.create_feature_set(\n", - " entity='driver', \n", - " granularity='minute', \n", - " features=['latitude', 'longitude', 'event_time'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Produce training dataset\n", - "* Stages a table in BQ with output data\n", - "* Returns information about the dataset that has been created" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "dataset_info = feature_set.create_training_dataset(\n", - " start_date='2018-01-01', \n", - " end_date='2018-02-01')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieve training dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "file_path = 'mypath.feather'\n", - "dataset_info.download(destination=file_path, type='feather')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load training dataset into Pandas" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import feather\n", - "df = feather.read_dataframe(file_path)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### [Alternative] Download dataset directly into a Pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "df = dataset_info.download_to_df()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Do your model training..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Ensure you have the list of entity keys for which you want to retrieve features" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "keys = [12345, 67890]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fetch serving data from Feast by reusing the same feature set\n", - "* This is a pandas dataframe (with possibly some extra methods which we will add)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "feature_data = feature_set.get_serving_data(keys, type='last')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/sdk/python/examples/hello_feast/customer_entity.yaml b/sdk/python/examples/hello_feast/customer_entity.yaml deleted file mode 100644 index 48ac52fbbef..00000000000 --- a/sdk/python/examples/hello_feast/customer_entity.yaml +++ /dev/null @@ -1,12 +0,0 @@ -id: customer.day.age -name: age -owner: willem.p@go-jek.com -description: Customer's age -granularity: DAY -valueType: INT64 -entity: customer -dataStores: - serving: - id: REDIS1 - warehouse: - id: BIGQUERY1 diff --git a/sdk/python/examples/hello_feast/customer_features.csv b/sdk/python/examples/hello_feast/customer_features.csv deleted file mode 100644 index 3bd2e32a3df..00000000000 --- a/sdk/python/examples/hello_feast/customer_features.csv +++ /dev/null @@ -1,6 +0,0 @@ -customer_id,age,balance -1,30,100000 -2,39,12312 -3,10,10 -4,45,241111 -5,23,50000 \ No newline at end of file diff --git a/sdk/python/examples/hello_feast/driver_feature_import.yaml b/sdk/python/examples/hello_feast/driver_feature_import.yaml deleted file mode 100644 index fbf9bacdf33..00000000000 --- a/sdk/python/examples/hello_feast/driver_feature_import.yaml +++ /dev/null @@ -1,15 +0,0 @@ -type: file -options: - format: csv - path: gs://zl-test-bucket/feast/customer_features.csv -entities: -- customer -schema: - entityIdColumn: customer_id - fields: - - name: customer_id - - featureId: customer.day.age - name: age - - featureId: customer.day.balance - name: balance - timestampValue: '2018-12-20T16:27:41Z' diff --git a/sdk/python/examples/hello_feast/driver_features.csv b/sdk/python/examples/hello_feast/driver_features.csv deleted file mode 100644 index 03b54a8a39a..00000000000 --- a/sdk/python/examples/hello_feast/driver_features.csv +++ /dev/null @@ -1,11 +0,0 @@ -driver_id,ts,completed,avg_distance_completed,avg_customer_distance_completed,avg_distance_cancelled -1,2018-09-25T00:00:00.000,12,1.102,172,-1 -2,2018-09-25T00:00:00.000,23,8.16,783,15.619 -3,2018-09-25T00:00:00.000,14,2.83328571428571,138.142857142857,18.5935 -4,2018-09-25T00:00:00.000,7,4.593,1575,-1 -5,2018-09-25T00:00:00.000,15,11.7656,314,6.733 -6,2018-09-25T00:00:00.000,7,14.2352142857143,276.785714285714,3.1645 -7,2018-09-25T00:00:00.000,10,5.0266,421.1,-1 -8,2018-09-25T00:00:00.000,6,23.554,4639,-1 -9,2018-09-25T00:00:00.000,14,7.42042857142857,149.888888888889,1.371 -10,2018-09-25T00:00:00.000,4,-1,-1,17.088 \ No newline at end of file From 5fcdb7ac195d881955057bcfe0c793acb94a1862 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Thu, 10 Jan 2019 16:53:01 +0800 Subject: [PATCH 41/50] Made clients lazy initalised --- sdk/python/feast/sdk/client.py | 62 ++++++++-- sdk/python/feast/sdk/importer.py | 120 +++++++++++--------- sdk/python/feast/sdk/utils/bq_util.py | 32 ++++-- sdk/python/feast/sdk/utils/gs_utils.py | 2 +- sdk/python/tests/sdk/test_client.py | 7 +- sdk/python/tests/sdk/utils/test_bq_utils.py | 11 ++ 6 files changed, 156 insertions(+), 78 deletions(-) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index b8f52076735..68d128ead25 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -68,30 +68,51 @@ def __init__(self, core_url=None, serving_url=None, verbose=False): """ if core_url is None: - core_url = os.environ[FEAST_CORE_URL_ENV_KEY] + core_url = os.getenv(FEAST_CORE_URL_ENV_KEY) self._core_url = core_url - self.__core_channel = grpc.insecure_channel(core_url) if serving_url is None: - serving_url = os.environ[FEAST_SERVING_URL_ENV_KEY] + serving_url = os.getenv(FEAST_SERVING_URL_ENV_KEY) self._serving_url = serving_url - self.__serving_channel = grpc.insecure_channel(serving_url) - self._serving_service_stub = ServingAPIStub(self.__serving_channel) - self._core_service_stub = CoreServiceStub(self.__core_channel) - self._job_service_stub = JobServiceStub(self.__core_channel) - self._training_service_stub = TrainingServiceStub(self.__core_channel) + self.__core_channel = None + self.__serving_channel = None + self._core_service_stub = None + self._job_service_stub = None + self._training_service_stub = None + self._serving_service_stub = None + self._verbose = verbose self._table_downloader = TableDownloader() @property def core_url(self): + if self._core_url is None: + self._core_url = os.getenv(FEAST_CORE_URL_ENV_KEY) + if self._core_url is None: + raise ValueError("Core API URL not set. Either set the " + + "environment variable {} or set it explicitly." + .format(FEAST_CORE_URL_ENV_KEY)) return self._core_url + @core_url.setter + def core_url(self, value): + self._core_url = value + @property def serving_url(self): + if self._serving_url is None: + self._serving_url = os.getenv(FEAST_SERVING_URL_ENV_KEY) + if self._serving_url is None: + raise ValueError("Serving API URL not set. Either set the " + + "environment variable {} or set it explicitly." + .format(FEAST_SERVING_URL_ENV_KEY)) return self._serving_url + @serving_url.setter + def serving_url(self, value): + self._serving_url = value + @property def verbose(self): return self._verbose @@ -102,6 +123,7 @@ def verbose(self, val): raise TypeError("verbose should be a boolean value") self._verbose = val + def apply(self, obj): """Create or update one or many feast's resource (feature, entity, importer, storage). @@ -152,6 +174,7 @@ def run(self, importer, name_override=None, importer.stage() print("Submitting job with spec:\n {}" .format(spec_to_yaml(importer.spec))) + self._connect_core() response = self._job_service_stub.SubmitJob(request) print("Submitted job with id: {}".format(response.jobId)) return response.jobId @@ -191,6 +214,7 @@ def create_training_dataset(self, feature_set, start_date, end_date, if self.verbose: print("creating training dataset for features: " + str(feature_set.features)) + self._connect_core() resp = self._training_service_stub.CreateTrainingDataset(req) if self.verbose: @@ -229,6 +253,7 @@ def get_serving_data(self, feature_set, entity_keys, for dt in ts_range] request = self._build_serving_request(feature_set, entity_keys, request_type, ts_range, limit) + self._connect_serving() return self._response_to_df(feature_set, self._serving_service_stub .QueryFeatures(request)) @@ -272,10 +297,25 @@ def download_dataset_to_df(self, dataset_info, staging_location): def close(self): """ Close underlying connection to Feast's core and serving end points. - """ self.__core_channel.close() + self.__core_channel = None self.__serving_channel.close() + self.__serving_channel = None + + def _connect_core(self): + """Connect to core api""" + if self.__core_channel is None: + self.__core_channel = grpc.insecure_channel(self.core_url) + self._core_service_stub = CoreServiceStub(self.__core_channel) + self._job_service_stub = JobServiceStub(self.__core_channel) + self._training_service_stub = TrainingServiceStub(self.__core_channel) + + def _connect_serving(self): + """Connect to serving api""" + if self.__serving_channel is None: + self.__serving_channel = grpc.insecure_channel(self.serving_url) + self._serving_service_stub = ServingAPIStub(self.__serving_channel) def _build_serving_request(self, feature_set, entity_keys, request_type, ts_range, limit): @@ -347,6 +387,7 @@ def _apply_feature(self, feature): Args: feature (feast.sdk.resources.feature.Feature): feature to apply """ + self._connect_core() response = self._core_service_stub.ApplyFeature(feature.spec) if self.verbose: print("Successfully applied feature with id: {}\n---\n{}" .format(response.featureId, feature)) @@ -358,6 +399,7 @@ def _apply_entity(self, entity): Args: entity (feast.sdk.resources.entity.Entity): entity to apply """ + self._connect_core() response = self._core_service_stub.ApplyEntity(entity.spec) if self.verbose: print("Successfully applied entity with name: {}\n---\n{}" @@ -371,6 +413,7 @@ def _apply_feature_group(self, feature_group): feature_group (feast.sdk.resources.feature_group.FeatureGroup): feature group to apply """ + self._connect_core() response = self._core_service_stub.ApplyFeatureGroup(feature_group.spec) if self.verbose: print("Successfully applied feature group with id: " + "{}\n---\n{}".format(response.featureGroupId, @@ -383,6 +426,7 @@ def _apply_storage(self, storage): Args: storage (feast.sdk.resources.storage.Storage): storage to apply """ + self._connect_core() response = self._core_service_stub.ApplyStorage(storage.spec) if self.verbose: print("Successfully applied storage with id: " + "{}\n{}".format(response.storageId, storage)) diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index 25df1190989..f0faf502c8d 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -24,7 +24,7 @@ from feast.sdk.resources.feature import Feature from feast.sdk.resources.entity import Entity -from google.protobuf.timestamp_pb2 import Timestamp +from google.protobuf.timestamp_pb2 import Timestamp from google.cloud import bigquery @@ -33,39 +33,39 @@ def __init__(self, specs, df, properties): self._properties = properties self._specs = specs self.df = df - + @property - def source(self): + def source(self): """str: source of the data""" return self._properties.get("source") - + @property def size(self): """str: number of rows in the data""" return self._properties.get("size") - + @property def require_staging(self): """bool: whether the data needs to be staged""" return self._properties.get("require_staging") - + @property def remote_path(self): """str: remote path of the file""" return self._properties.get("remote_path") - + @property def spec(self): """feast.specs.ImportSpec_pb2.ImportSpec: import spec for this dataset""" return self._specs.get("import") - + @property def features(self): """list[feast.specs.FeatureSpec_pb2.FeatureSpec]: list of features associated with this dataset""" return self._specs.get("features") - + @property def entity(self): """feast.specs.EntitySpec_pb2.EntitySpec: @@ -74,8 +74,8 @@ def entity(self): @classmethod def from_csv(cls, path, entity, granularity, owner, staging_location=None, - id_column=None, feature_columns=None, timestamp_column=None, - timestamp_value=None): + id_column=None, feature_columns=None, timestamp_column=None, + timestamp_value=None): """Creates an importer from a given csv dataset. This file can be either local or remote (in gcs). If it's a local file then staging_location must be determined. @@ -101,27 +101,27 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, Importer: the importer for the dataset provided. """ import_spec_options = {"format": "csv"} - import_spec_options["path"], require_staging = _get_remote_location(path, - staging_location) + import_spec_options["path"], require_staging = _get_remote_location(path, + staging_location) if is_gs_path(path): df = gs_to_df(path) else: df = pd.read_csv(path) - schema, features = _detect_schema_and_feature(entity, - granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, df) + schema, features = _detect_schema_and_feature(entity, + granularity, owner, id_column, feature_columns, timestamp_column, + timestamp_value, df) iport_spec = _create_import("file", import_spec_options, entity, schema) props = (_properties("csv", len(df.index), require_staging, - import_spec_options["path"])) + import_spec_options["path"])) specs = _specs(iport_spec, Entity(name=entity), features) - + return cls(specs, df, props) - + @classmethod - def from_bq(cls, bq_path, entity, granularity, owner, limit=10, - id_column=None, feature_columns=None, timestamp_column=None, - timestamp_value=None): + def from_bq(cls, bq_path, entity, granularity, owner, limit=10, + id_column=None, feature_columns=None, timestamp_column=None, + timestamp_value=None): """Creates an importer from a given bigquery table. Args: @@ -158,20 +158,20 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, "table": table_id } df = head(cli, table, limit) - schema, features = _detect_schema_and_feature(entity, - granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, df) - iport_spec = _create_import("bigquery", import_spec_options, - entity, schema) + schema, features = _detect_schema_and_feature(entity, + granularity, owner, id_column, feature_columns, timestamp_column, + timestamp_value, df) + iport_spec = _create_import("bigquery", import_spec_options, + entity, schema) props = _properties("bigquery", table.num_rows, False, None) specs = _specs(iport_spec, Entity(name=entity), features) return cls(specs, df, props) - + @classmethod def from_df(cls, df, entity, granularity, owner, staging_location, - id_column=None, feature_columns=None, timestamp_column=None, - timestamp_value=None): + id_column=None, feature_columns=None, timestamp_column=None, + timestamp_value=None): """Creates an importer from a given pandas dataframe. To import a file from a dataframe, the data will have to be staged. @@ -196,29 +196,30 @@ def from_df(cls, df, entity, granularity, owner, staging_location, Importer: the importer for the dataset provided. """ tmp_file_name = ("tmp_{}_{}.csv" - .format(entity, int(round(time.time() * 1000)))) + .format(entity, int(round(time.time() * 1000)))) import_spec_options = { "format": "csv" } import_spec_options["path"], require_staging = ( _get_remote_location(tmp_file_name, staging_location)) - schema, features = _detect_schema_and_feature(entity, - granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, df) + schema, features = _detect_schema_and_feature(entity, + granularity, owner, id_column, feature_columns, timestamp_column, + timestamp_value, df) iport_spec = _create_import("file", import_spec_options, entity, schema) - - props = _properties("dataframe", len(df.index), require_staging, - import_spec_options["path"]) + + props = _properties("dataframe", len(df.index), require_staging, + import_spec_options["path"]) specs = _specs(iport_spec, Entity(name=entity), features) - + return cls(specs, df, props) def stage(self): """Stage the data to its remote location """ - if not self.require_staging: return + ts_col = self.spec.schema.timestampColumn + _convert_timestamp(self.df, ts_col) df_to_gs(self.df, self.remote_path) def describe(self): @@ -238,6 +239,13 @@ def dump(self, path): print("Saved spec to {}".format(path)) +def _convert_timestamp(df, timestamp_col): + """Converts the given df's timestamp column to ISO8601 format + """ + df[timestamp_col] = pd.to_datetime(df[timestamp_col]).dt \ + .strftime("%Y-%m-%dT%H:%M:%S%z") + + def _properties(source, size, require_staging, remote): """Args: source (str): source of the data @@ -282,21 +290,21 @@ def _get_remote_location(path, staging_location): staging_location (str): path to stage the file """ - if (is_gs_path(path)): + if is_gs_path(path): return path, False - + if staging_location is None: raise ValueError( "Specify staging_location for importing local file/dataframe") if not is_gs_path(staging_location): raise ValueError("Staging location must be in GCS") - + filename = ntpath.basename(path) return staging_location + "/" + filename, True -def _detect_schema_and_feature(entity, granularity, owner, id_column, - feature_columns, timestamp_column, timestamp_value, df): +def _detect_schema_and_feature(entity, granularity, owner, id_column, + feature_columns, timestamp_column, timestamp_value, df): """Create schema object for import spec. Args: @@ -315,40 +323,40 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, """ schema = Schema() - if (id_column is not None): + if id_column is not None: schema.entityIdColumn = id_column elif entity in df.columns: schema.entityIdColumn = entity else: raise ValueError("Column with name {} is not found".format(entity)) - if (timestamp_column is not None): + if timestamp_column is not None: schema.timestampColumn = timestamp_column else: - if timestamp_value == None: + if timestamp_value is None: ts = Timestamp() ts.GetCurrentTime() else: ts = Timestamp(seconds= - int((timestamp_value - datetime.datetime(1970,1,1)).total_seconds())) + int((timestamp_value - datetime.datetime(1970, 1, 1)).total_seconds())) schema.timestampValue.CopyFrom(ts) - + features = {} - if (feature_columns is not None): + if feature_columns is not None: # check if all column exist and create feature accordingly for column in feature_columns: if column not in df.columns: raise ValueError("Column with name {} is not found".format(column)) - features[column] = _create_feature(df[column], entity, granularity, owner) + features[column] = _create_feature(df[column], entity, granularity, owner) else: # get all column except entity id and timestampColumn feature_columns = list(df.columns.values) _remove_safely(feature_columns, schema.entityIdColumn) _remove_safely(feature_columns, schema.timestampColumn) for column in feature_columns: - features[column] = _create_feature(df[column], entity, - granularity, owner) - + features[column] = _create_feature(df[column], entity, + granularity, owner) + for col in df.columns: field = schema.fields.add() field.name = col @@ -375,7 +383,7 @@ def _create_feature(column, entity, granularity, owner): name=column.name, entity=entity, granularity=granularity, - owner=owner, + owner=owner, value_type=dtype_to_value_type(column.dtype)) @@ -403,4 +411,4 @@ def _remove_safely(columns, column): try: columns.remove(column) except ValueError: - pass \ No newline at end of file + pass diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index b5ac9da086a..e3a418093bb 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -39,7 +39,7 @@ def head(client, table, max_rows=10): Returns: pandas.DataFrame: dataframe containing the head of rows ''' - + rows = client.list_rows(table, max_results=max_rows) rows = [x for x in rows] return pd.DataFrame( @@ -74,8 +74,20 @@ def get_table_name(feature_id, storage_spec): class TableDownloader: def __init__(self): - self._bq = BQClient() - self._gcs = GCSClient() + self._bq = None + self._gcs = None + + @property + def gcs(self): + if self._gcs is None: + self._gcs = GCSClient() + return self._gcs + + @property + def bq(self): + if self._bq is None: + self._bq = BQClient() + return self._bq def download_table_as_file(self, table_id, dest, staging_location, file_type): @@ -101,14 +113,14 @@ def download_table_as_file(self, table_id, dest, staging_location, job_config = ExtractJobConfig() job_config.destination_format = file_type src_table = Table.from_string(table_id) - job = self._bq.extract_table(src_table, staging_file_path, - job_config=job_config) + job = self.bq.extract_table(src_table, staging_file_path, + job_config=job_config) # await completion job.result() bucket_name, blob_name = split_gs_path(staging_file_path) - bucket = self._gcs.get_bucket(bucket_name) + bucket = self.gcs.get_bucket(bucket_name) blob = bucket.blob(blob_name) blob.download_to_filename(dest) return dest @@ -133,10 +145,10 @@ def download_table_as_df(self, table_id, staging_location): job_config = ExtractJobConfig() job_config.destination_format = DestinationFormat.CSV - job = self._bq.extract_table(Table.from_string(table_id), - staging_file_path, - job_config=job_config) + job = self.bq.extract_table(Table.from_string(table_id), + staging_file_path, + job_config=job_config) # await completion job.result() - return gs_to_df(staging_file_path) \ No newline at end of file + return gs_to_df(staging_file_path) diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index c6a6cb59476..be70fb2c811 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -57,7 +57,7 @@ def df_to_gs(df, path): bucket = storage_client.get_bucket(bucket_name) blob = bucket.blob(blob_name) s = io.StringIO() - df.to_csv(s) + df.to_csv(s, index=False) blob.upload_from_string(s.getvalue()) diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index 431dcc691ce..e20a7bbf978 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -47,8 +47,11 @@ class TestClient(object): @pytest.fixture - def client(self): - return Client(core_url="some.uri", serving_url="some.serving.uri") + def client(self, mocker): + cli = Client(core_url="some.uri", serving_url="some.serving.uri") + mocker.patch.object(cli, '_connect_core') + mocker.patch.object(cli, '_connect_serving') + return cli def test_apply_single_feature(self, client, mocker): my_feature = Feature(name="test", diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py index dbb6dbab714..f7ae151abf5 100644 --- a/sdk/python/tests/sdk/utils/test_bq_utils.py +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -54,6 +54,8 @@ def test_download_table_as_df(self, mocker): table_dldr = TableDownloader() exp_staging_path = os.path.join(staging_path, staging_file_name) + + table_dldr._bq = _Mock_BQ_Client() mocker.patch.object(table_dldr._bq, "extract_table", return_value=_Job()) @@ -108,8 +110,10 @@ def _test_download_file(self, mocker, type): table_dldr = TableDownloader() mock_blob = _Blob() mocker.patch.object(mock_blob, "download_to_filename") + table_dldr._bq = _Mock_BQ_Client() mocker.patch.object(table_dldr._bq, "extract_table", return_value=_Job()) + table_dldr._gcs = _Mock_GCS_Client() mocker.patch.object(table_dldr._gcs, "get_bucket", return_value=_Bucket(mock_blob)) @@ -132,6 +136,13 @@ def _test_download_file(self, mocker, type): def _stop_time(self, mocker): mocker.patch('time.time', return_value=0) +class _Mock_BQ_Client: + def extract_table(self): + pass + +class _Mock_GCS_Client: + def get_bucket(self): + pass class _Job: def result(self): From 79bc41263e5fa54fcb0acd0b43a7dca89240883f Mon Sep 17 00:00:00 2001 From: zhilingc Date: Sat, 12 Jan 2019 15:49:52 +0800 Subject: [PATCH 42/50] Add quickstart --- .../examples/quickstart/Quickstart.ipynb | 239 + sdk/python/examples/quickstart/taxi_small.csv | 10000 ++++++++++++++++ sdk/python/feast/sdk/importer.py | 2 +- sdk/python/feast/sdk/utils/types.py | 3 + 4 files changed, 10243 insertions(+), 1 deletion(-) create mode 100644 sdk/python/examples/quickstart/Quickstart.ipynb create mode 100644 sdk/python/examples/quickstart/taxi_small.csv diff --git a/sdk/python/examples/quickstart/Quickstart.ipynb b/sdk/python/examples/quickstart/Quickstart.ipynb new file mode 100644 index 00000000000..e3ccc644365 --- /dev/null +++ b/sdk/python/examples/quickstart/Quickstart.ipynb @@ -0,0 +1,239 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "from feast.sdk.resources.entity import Entity\n", + "from feast.sdk.resources.storage import Storage\n", + "from feast.sdk.resources.feature import Feature, Datastore, ValueType, Granularity\n", + "from feast.sdk.resources.feature_set import FeatureSet, FileType\n", + "import feast.specs.FeatureSpec_pb2 as feature_pb\n", + "\n", + "from feast.sdk.importer import Importer\n", + "\n", + "from feast.sdk.client import Client, ServingRequestType" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Feature Engineering" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Feature engineering steps \n", + "## Referenced from https://www.kaggle.com/karelrv/nyct-from-a-to-z-with-xgboost-tutorial/notebook\n", + "\n", + "def haversine_array(lat1, lng1, lat2, lng2):\n", + " lat1, lng1, lat2, lng2 = map(np.radians, (lat1, lng1, lat2, lng2))\n", + " AVG_EARTH_RADIUS = 6371 # in km\n", + " lat = lat2 - lat1\n", + " lng = lng2 - lng1\n", + " d = np.sin(lat * 0.5) ** 2 + np.cos(lat1) * np.cos(lat2) * np.sin(lng * 0.5) ** 2\n", + " h = 2 * AVG_EARTH_RADIUS * np.arcsin(np.sqrt(d))\n", + " return h\n", + "\n", + "def dummy_manhattan_distance(lat1, lng1, lat2, lng2):\n", + " a = haversine_array(lat1, lng1, lat1, lng2)\n", + " b = haversine_array(lat1, lng1, lat2, lng1)\n", + " return a + b\n", + "\n", + "def bearing_array(lat1, lng1, lat2, lng2):\n", + " AVG_EARTH_RADIUS = 6371 # in km\n", + " lng_delta_rad = np.radians(lng2 - lng1)\n", + " lat1, lng1, lat2, lng2 = map(np.radians, (lat1, lng1, lat2, lng2))\n", + " y = np.sin(lng_delta_rad) * np.cos(lat2)\n", + " x = np.cos(lat1) * np.sin(lat2) - np.sin(lat1) * np.cos(lat2) * np.cos(lng_delta_rad)\n", + " return np.degrees(np.arctan2(y, x))\n", + "\n", + "df = pd.read_csv('taxi_small.csv')\n", + "df['pickup_datetime'] = pd.to_datetime(df.pickup_datetime)\n", + "df['dropoff_datetime'] = pd.to_datetime(df.dropoff_datetime)\n", + "df['log_trip_duration'] = np.log(df['trip_duration'].values + 1)\n", + "\n", + "# location features\n", + "df.loc[:, 'distance_haversine'] = haversine_array(df['pickup_latitude'].values, df['pickup_longitude'].values, df['dropoff_latitude'].values, df['dropoff_longitude'].values)\n", + "df.loc[:, 'distance_dummy_manhattan'] = dummy_manhattan_distance(df['pickup_latitude'].values, df['pickup_longitude'].values, df['dropoff_latitude'].values, df['dropoff_longitude'].values)\n", + "df.loc[:, 'direction'] = bearing_array(df['pickup_latitude'].values, df['pickup_longitude'].values, df['dropoff_latitude'].values, df['dropoff_longitude'].values)\n", + "\n", + "# time features\n", + "df['month'] = df['pickup_datetime'].dt.month\n", + "df['day_of_month'] = df['pickup_datetime'].dt.day\n", + "df['hour'] = df['pickup_datetime'].dt.hour\n", + "df['day_of_week'] = df['pickup_datetime'].dt.dayofweek\n", + "\n", + "# one hot encoding\n", + "vendor = pd.get_dummies(df['vendor_id'], prefix='vi', prefix_sep='_')\n", + "store_and_fwd_flag = pd.get_dummies(df['store_and_fwd_flag'], prefix='sf', prefix_sep='_')\n", + "\n", + "df = df.drop(['trip_duration','vendor_id','passenger_count','store_and_fwd_flag', 'dropoff_datetime',\n", + " 'pickup_longitude','pickup_latitude','dropoff_longitude','dropoff_latitude'],axis = 1)\n", + "df.columns = ['ride'] + list(df.columns[1:])\n", + "df_complete = pd.concat([df, vendor, store_and_fwd_flag], axis=1)\n", + "df_complete.columns = [col.lower() for col in df_complete.columns]\n", + "df_complete.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ingesting into Feast" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "FEAST_CORE_URL = 'localhost:6565'\n", + "FEAST_SERVING_URL = 'localhost:6566'\n", + "STAGING_LOCATION = 'gs://feast-bucket/staging'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Now that we have finished creating our features, we ingest them into feast\n", + "\n", + "# Initialise client\n", + "fs = Client(core_url=FEAST_CORE_URL, verbose=True)\n", + "\n", + "# Create importer\n", + "importer = Importer.from_df(df_complete, \n", + " entity='ride', \n", + " granularity=Granularity.NONE,\n", + " owner='user@website.com', \n", + " staging_location=STAGING_LOCATION,\n", + " id_column='ride', \n", + " timestamp_column='pickup_datetime')\n", + "\n", + "# Update feature and entity metadata\n", + "serving_ds=Datastore(id='REDIS1').spec\n", + "warehouse_ds=Datastore(id='NOOP').spec\n", + "\n", + "# Update feature and entity metadata. Ideally you want to update these manually\n", + "# so that they contain adequate information for the next user\n", + "importer.entity.description = 'nyc taxi dataset' \n", + "for feature in importer.features:\n", + " feature.serving_store = serving_ds\n", + " feature.warehouse_store = warehouse_ds\n", + " feature.description = 'nyc taxi dataset'\n", + " \n", + "# Ingest the feature data into the store\n", + "fs.run(importer, apply_features=True, apply_entity=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a training dataset\n", + "\n", + "Creating a training dataset allows you to isolate the data that goes into the model training step, allowing for reproduction and traceability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Retrieving data: Training\n", + "\n", + "feature_set = FeatureSet(entity=\"ride\", \n", + " features=[\"ride.none.log_trip_duration\", \n", + " \"ride.none.distance_haversine\",\n", + " \"ride.none.distance_dummy_manhattan\",\n", + " \"ride.none.direction\",\n", + " \"ride.none.month\",\n", + " \"ride.none.day_of_month\",\n", + " \"ride.none.hour\",\n", + " \"ride.none.day_of_week\",\n", + " \"ride.none.vi_1\",\n", + " \"ride.none.vi_2\",\n", + " \"ride.none.sf_n\",\n", + " \"ride.none.sf_y\"])\n", + "dataset_info = fs.create_training_dataset(feature_set, \"2016-06-01\", \"2016-08-01\")\n", + "dataset = fs.download_dataset_to_df(dataset_info, staging_location=STAGING_LOCATION)\n", + "\n", + "dataset.head()\n", + "\n", + "# train your model\n", + "# ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Retrieving serving data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Retrieving data: Serving\n", + "\n", + "# set serving endpoint\n", + "fs.serving_url = FEAST_SERVING_URL\n", + "\n", + "# retrieve features\n", + "feats = fs.get_serving_data(feature_set, entity_keys=[\"id2875421\",\"id1244481\"])\n", + "\n", + "# Feed data into model\n", + "# ..." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/sdk/python/examples/quickstart/taxi_small.csv b/sdk/python/examples/quickstart/taxi_small.csv new file mode 100644 index 00000000000..896b2991393 --- /dev/null +++ b/sdk/python/examples/quickstart/taxi_small.csv @@ -0,0 +1,10000 @@ +id,vendor_id,pickup_datetime,dropoff_datetime,passenger_count,pickup_longitude,pickup_latitude,dropoff_longitude,dropoff_latitude,store_and_fwd_flag,trip_duration +id2875421,2,2016-03-14 17:24:55,2016-03-14 17:32:30,1,-73.982154846191406,40.767936706542969,-73.964630126953125,40.765602111816406,N,455 +id2377394,1,2016-06-12 00:43:35,2016-06-12 00:54:38,1,-73.980415344238281,40.738563537597656,-73.999481201171875,40.731151580810547,N,663 +id3858529,2,2016-01-19 11:35:24,2016-01-19 12:10:48,1,-73.979026794433594,40.763938903808594,-74.005332946777344,40.710086822509766,N,2124 +id3504673,2,2016-04-06 19:32:31,2016-04-06 19:39:40,1,-74.010040283203125,40.719970703125,-74.01226806640625,40.706718444824219,N,429 +id2181028,2,2016-03-26 13:30:55,2016-03-26 13:38:10,1,-73.973052978515625,40.793209075927734,-73.972923278808594,40.782520294189453,N,435 +id0801584,2,2016-01-30 22:01:40,2016-01-30 22:09:03,6,-73.982856750488281,40.742195129394531,-73.992080688476562,40.749183654785156,N,443 +id1813257,1,2016-06-17 22:34:59,2016-06-17 22:40:40,4,-73.969017028808594,40.757839202880859,-73.957405090332031,40.765895843505859,N,341 +id1324603,2,2016-05-21 07:54:58,2016-05-21 08:20:49,1,-73.969276428222656,40.797779083251953,-73.922470092773438,40.76055908203125,N,1551 +id1301050,1,2016-05-27 23:12:23,2016-05-27 23:16:38,1,-73.999481201171875,40.738399505615234,-73.985786437988281,40.732814788818359,N,255 +id0012891,2,2016-03-10 21:45:01,2016-03-10 22:05:26,1,-73.981048583984375,40.744338989257813,-73.972999572753906,40.789989471435547,N,1225 +id1436371,2,2016-05-10 22:08:41,2016-05-10 22:29:55,1,-73.982650756835938,40.763839721679688,-74.002227783203125,40.732990264892578,N,1274 +id1299289,2,2016-05-15 11:16:11,2016-05-15 11:34:59,4,-73.991531372070313,40.749439239501953,-73.95654296875,40.7706298828125,N,1128 +id1187965,2,2016-02-19 09:52:46,2016-02-19 10:11:20,2,-73.962982177734375,40.756679534912109,-73.984405517578125,40.760719299316406,N,1114 +id0799785,2,2016-06-01 20:58:29,2016-06-01 21:02:49,1,-73.956306457519531,40.767940521240234,-73.966110229492188,40.76300048828125,N,260 +id2900608,2,2016-05-27 00:43:36,2016-05-27 01:07:10,1,-73.992195129394531,40.727226257324219,-73.974655151367188,40.783069610595703,N,1414 +id3319787,1,2016-05-16 15:29:02,2016-05-16 15:32:33,1,-73.955513000488281,40.768592834472656,-73.948760986328125,40.77154541015625,N,211 +id3379579,2,2016-04-11 17:29:50,2016-04-11 18:08:26,1,-73.991165161132813,40.755561828613281,-73.999290466308594,40.725353240966797,N,2316 +id1154431,1,2016-04-14 08:48:26,2016-04-14 09:00:37,1,-73.994255065917969,40.745803833007813,-73.999656677246094,40.723342895507813,N,731 +id3552682,1,2016-06-27 09:55:13,2016-06-27 10:17:10,1,-74.003982543945313,40.7130126953125,-73.979194641113281,40.749923706054688,N,1317 +id3390316,2,2016-06-05 13:47:23,2016-06-05 13:51:34,1,-73.98388671875,40.738197326660156,-73.991203308105469,40.727870941162109,N,251 +id2070428,1,2016-02-28 02:23:02,2016-02-28 02:31:08,1,-73.980369567871094,40.742420196533203,-73.962852478027344,40.760635375976563,N,486 +id0809232,2,2016-04-01 12:12:25,2016-04-01 12:23:17,1,-73.979537963867188,40.753360748291016,-73.963996887207031,40.763458251953125,N,652 +id2352683,1,2016-04-09 03:34:27,2016-04-09 03:41:30,1,-73.995864868164063,40.758811950683594,-73.993324279785156,40.740322113037109,N,423 +id1603037,1,2016-06-25 10:36:26,2016-06-25 10:55:49,1,-73.993553161621094,40.747173309326172,-74.006141662597656,40.704383850097656,N,1163 +id3321406,2,2016-06-03 08:15:05,2016-06-03 08:56:30,1,-73.955230712890625,40.777133941650391,-73.788749694824219,40.641471862792969,N,2485 +id0129640,2,2016-02-14 13:27:56,2016-02-14 13:49:19,1,-73.956581115722656,40.771358489990234,-73.974967956542969,40.732791900634766,N,1283 +id3587298,1,2016-02-27 21:56:01,2016-02-27 22:14:51,1,-73.9837646484375,40.749874114990234,-73.958831787109375,40.800960540771484,N,1130 +id2104175,1,2016-06-20 23:07:16,2016-06-20 23:18:50,1,-73.95843505859375,40.713191986083984,-73.949539184570312,40.680252075195313,N,694 +id3973319,2,2016-06-13 21:57:27,2016-06-13 22:12:19,1,-73.994216918945313,40.713306427001953,-73.98284912109375,40.692298889160156,N,892 +id1410897,1,2016-03-23 14:10:39,2016-03-23 14:49:30,1,-73.98211669921875,40.756351470947266,-73.865692138671875,40.770988464355469,N,2331 +id0266980,1,2016-05-17 10:47:51,2016-05-17 11:12:30,1,-73.970939636230469,40.761669158935547,-73.996238708496094,40.725368499755859,N,1479 +id2822549,2,2016-05-21 13:03:24,2016-05-21 13:20:52,1,-73.998268127441406,40.720039367675781,-74.010360717773438,40.672138214111328,N,1048 +id3075902,2,2016-05-10 19:27:38,2016-05-10 19:44:40,2,-74.005500793457031,40.706588745117187,-73.985816955566406,40.74420166015625,N,1022 +id0023813,1,2016-04-17 14:38:30,2016-04-17 15:16:19,1,-73.990310668945313,40.756580352783203,-73.870918273925781,40.773929595947266,N,2269 +id3970352,1,2016-01-09 12:55:35,2016-01-09 13:07:22,1,-74.008995056152344,40.712589263916016,-73.998634338378906,40.722808837890625,N,707 +id3361153,1,2016-03-11 07:11:23,2016-03-11 07:20:09,1,-73.994560241699219,40.750526428222656,-73.978500366210938,40.756191253662109,N,526 +id1870624,1,2016-01-05 15:29:54,2016-01-05 15:39:07,3,-73.951515197753906,40.770248413085937,-73.958526611328125,40.761516571044922,N,553 +id2403238,1,2016-06-23 23:00:09,2016-06-23 23:04:46,1,-73.988067626953125,40.728080749511719,-73.980751037597656,40.721469879150391,N,277 +id3323083,1,2016-05-27 14:26:12,2016-05-27 14:46:01,2,-73.978126525878906,40.758342742919922,-73.99224853515625,40.730541229248047,N,1189 +id3720663,1,2016-05-10 16:14:56,2016-05-10 16:40:19,1,-73.977767944335937,40.774078369140625,-73.9471435546875,40.775993347167969,N,1523 +id0578558,1,2016-04-21 21:28:27,2016-04-21 21:52:37,2,-73.988548278808594,40.745979309082031,-73.97088623046875,40.793384552001953,N,1450 +id2573056,2,2016-04-14 13:27:52,2016-04-14 13:46:14,2,-73.974723815917969,40.751136779785156,-73.954444885253906,40.764118194580078,N,1102 +id2129090,1,2016-03-14 14:05:39,2016-03-14 14:28:05,1,-73.975090026855469,40.758766174316406,-73.953201293945313,40.765068054199219,N,1346 +id3961107,1,2016-03-19 01:12:46,2016-03-19 01:18:49,1,-73.976470947265625,40.739780426025391,-73.980667114257813,40.729965209960938,N,363 +id3326491,2,2016-02-12 07:41:56,2016-02-12 07:51:15,1,-73.979644775390625,40.739631652832031,-73.994728088378906,40.723495483398438,N,559 +id0718344,2,2016-06-13 15:52:20,2016-06-13 16:16:58,1,-74.016326904296875,40.704990386962891,-73.982109069824219,40.773750305175781,N,1478 +id3188770,1,2016-01-03 16:59:02,2016-01-03 17:04:50,1,-73.985137939453125,40.732192993164063,-73.989639282226563,40.720874786376953,N,348 +id1956279,2,2016-02-26 08:37:00,2016-02-26 08:43:15,1,-73.981658935546875,40.778972625732422,-73.969810485839844,40.792129516601563,N,375 +id2391523,1,2016-05-18 21:50:24,2016-05-18 22:10:41,3,-73.966163635253906,40.766914367675781,-73.992179870605469,40.725818634033203,N,1217 +id2662609,1,2016-04-10 19:11:03,2016-04-10 19:25:39,1,-73.965469360351562,40.765846252441406,-73.960952758789063,40.796928405761719,N,876 +id2067879,2,2016-01-19 23:19:01,2016-01-19 23:44:58,1,-73.996818542480469,40.752861022949219,-73.809005737304688,40.816875457763672,N,1557 +id1939961,1,2016-05-07 13:18:52,2016-05-07 13:46:19,1,-73.977256774902344,40.774246215820313,-73.990013122558594,40.732654571533203,N,1647 +id0675800,2,2016-02-15 09:25:15,2016-02-15 09:35:49,6,-73.977752685546875,40.754631042480469,-74.001678466796875,40.756420135498047,N,634 +id2569332,1,2016-04-13 14:24:47,2016-04-13 14:30:52,1,-73.968727111816406,40.78643798828125,-73.960494995117188,40.778152465820313,N,365 +id0526266,2,2016-05-15 09:42:58,2016-05-15 09:56:37,1,-73.934883117675781,40.801010131835938,-73.983001708984375,40.722568511962891,N,819 +id3827863,2,2016-04-19 11:29:08,2016-04-19 12:27:56,3,-73.792892456054688,40.657878875732422,-73.809188842773438,40.690181732177734,N,3528 +id1388344,2,2016-01-02 15:41:11,2016-01-02 16:01:39,2,-73.982337951660156,40.762809753417969,-73.982856750488281,40.748779296875,N,1228 +id1079955,1,2016-04-22 11:28:00,2016-04-22 12:11:27,1,-73.994850158691406,40.718780517578125,-73.983413696289062,40.75885009765625,N,2607 +id0256505,1,2016-03-14 15:04:38,2016-03-14 15:16:13,1,-73.994483947753906,40.745086669921875,-73.998992919921875,40.722709655761719,N,695 +id1530524,1,2016-03-19 17:41:05,2016-03-19 17:48:57,1,-73.953422546386719,40.767658233642578,-73.980316162109375,40.737781524658203,N,472 +id1674872,1,2016-02-29 02:46:24,2016-02-29 02:55:10,1,-73.951850891113281,40.714069366455078,-73.967971801757813,40.688720703125,N,526 +id1040444,2,2016-01-07 17:01:32,2016-01-07 17:13:33,4,-73.976951599121094,40.752021789550781,-74.001213073730469,40.751613616943359,N,721 +id1674996,1,2016-05-13 12:32:12,2016-05-13 12:40:44,1,-74.001800537109375,40.72613525390625,-74.007156372070312,40.740806579589844,N,512 +id1965939,1,2016-05-24 12:16:33,2016-05-24 12:28:33,1,-73.994094848632812,40.761550903320313,-73.980636596679688,40.789638519287109,N,720 +id0442192,1,2016-04-10 16:07:46,2016-04-10 16:10:40,1,-74.006324768066406,40.733390808105469,-74.000007629394531,40.743255615234375,N,174 +id0515898,2,2016-05-21 17:38:55,2016-05-21 17:46:53,1,-74.002571105957031,40.739311218261719,-73.99188232421875,40.744998931884766,N,478 +id1182327,2,2016-02-29 11:22:35,2016-02-29 11:35:43,1,-73.94830322265625,40.774436950683594,-73.963706970214844,40.755485534667969,N,788 +id3913101,1,2016-06-25 22:05:46,2016-06-25 22:22:29,2,-74.001411437988281,40.761432647705078,-73.924629211425781,40.864028930664063,N,1003 +id1680350,1,2016-03-18 20:56:16,2016-03-18 20:59:51,1,-74.002983093261719,40.723312377929688,-74.001556396484375,40.728824615478516,N,215 +id0913838,2,2016-02-03 16:22:50,2016-02-03 16:37:20,5,-73.97833251953125,40.754070281982422,-73.959732055664063,40.772758483886719,N,870 +id3896508,2,2016-06-07 22:32:32,2016-06-07 22:46:06,1,-73.863380432128906,40.769889831542969,-73.837127685546875,40.721359252929688,N,814 +id2846400,2,2016-03-16 20:13:12,2016-03-16 20:23:49,1,-73.99725341796875,40.717960357666016,-73.999252319335938,40.730018615722656,N,637 +id1510700,2,2016-02-20 21:58:13,2016-02-20 21:59:10,1,-73.958396911621094,40.772628784179688,-73.955131530761719,40.774242401123047,N,57 +id0813128,2,2016-02-20 18:57:43,2016-02-20 19:07:32,2,-73.991203308105469,40.749553680419922,-73.979194641113281,40.746307373046875,N,589 +id1158195,1,2016-03-24 17:58:51,2016-03-24 18:36:46,1,-73.992324829101563,40.730720520019531,-73.872505187988281,40.774497985839844,N,2275 +id0959273,1,2016-03-20 23:16:39,2016-03-20 23:27:26,1,-73.988838195800781,40.768901824951172,-73.955535888671875,40.771743774414063,N,647 +id0739660,1,2016-05-16 13:07:10,2016-05-16 13:34:18,3,-73.9647216796875,40.806606292724609,-73.984573364257813,40.760677337646484,N,1628 +id3769871,1,2016-06-17 17:32:59,2016-06-17 18:11:56,1,-73.943145751953125,40.789630889892578,-73.989479064941406,40.762763977050781,N,2337 +id1818021,1,2016-03-23 00:34:10,2016-03-23 00:45:24,1,-74.01116943359375,40.703605651855469,-74.005691528320313,40.741359710693359,N,674 +id0982165,2,2016-04-12 21:29:16,2016-04-12 21:49:06,1,-73.980316162109375,40.75885009765625,-74.010139465332031,40.705081939697266,N,1190 +id1519515,2,2016-06-11 12:52:19,2016-06-11 13:12:10,1,-73.950492858886719,40.771266937255859,-74.001243591308594,40.746490478515625,N,1191 +id1082443,2,2016-02-25 14:56:26,2016-02-25 15:09:31,1,-73.98712158203125,40.768474578857422,-73.975822448730469,40.759712219238281,N,785 +id2934884,2,2016-01-07 19:32:15,2016-01-07 19:40:55,1,-73.98638916015625,40.756614685058594,-73.999794006347656,40.761631011962891,N,520 +id1205949,1,2016-06-05 18:43:14,2016-06-05 18:46:52,1,-73.962608337402344,40.758827209472656,-73.954193115234375,40.764053344726562,N,218 +id2592310,2,2016-06-13 07:20:46,2016-06-13 07:24:28,1,-73.99041748046875,40.756881713867188,-73.981979370117187,40.759990692138672,N,222 +id0883711,1,2016-01-16 21:22:41,2016-01-16 21:42:45,1,-73.993637084960938,40.734218597412109,-73.961463928222656,40.769298553466797,N,1204 +id0283075,1,2016-04-06 23:42:26,2016-04-07 00:12:08,1,-73.782478332519531,40.644645690917969,-73.981124877929688,40.72088623046875,N,1782 +id2107497,1,2016-05-13 20:46:55,2016-05-13 21:06:29,2,-74.013954162597656,40.712833404541016,-73.997550964355469,40.718074798583984,N,1174 +id2090852,2,2016-01-28 11:25:20,2016-01-28 11:30:56,1,-73.968826293945313,40.754196166992188,-73.972755432128906,40.746612548828125,N,336 +id1297351,2,2016-06-24 14:24:31,2016-06-24 14:32:21,1,-74.003288269042969,40.726970672607422,-73.993301391601563,40.739120483398437,N,470 +id0667605,2,2016-05-27 16:17:36,2016-05-27 16:23:22,1,-73.991058349609375,40.739570617675781,-74.006103515625,40.734550476074219,N,346 +id1476107,1,2016-05-22 15:41:29,2016-05-22 15:48:28,1,-73.966880798339844,40.788681030273438,-73.962821960449219,40.775726318359375,N,419 +id0673727,2,2016-05-18 19:15:27,2016-05-18 19:44:49,1,-73.961677551269531,40.775966644287109,-73.857391357421875,40.733283996582031,N,1762 +id2030290,1,2016-03-31 11:33:30,2016-03-31 12:12:31,3,-73.86431884765625,40.769828796386719,-73.985862731933594,40.760951995849609,N,2341 +id3770790,1,2016-02-13 13:12:49,2016-02-13 13:19:35,1,-73.992233276367188,40.744281768798828,-74.008232116699219,40.748825073242188,N,406 +id3025098,2,2016-01-20 19:21:31,2016-01-20 19:31:27,1,-73.976982116699219,40.750301361083984,-73.999122619628906,40.739509582519531,N,596 +id3333094,2,2016-06-02 23:34:00,2016-06-02 23:41:15,1,-73.973464965820313,40.755229949951172,-73.977363586425781,40.742820739746094,N,435 +id2228940,1,2016-02-04 13:22:02,2016-02-04 13:40:30,1,-73.981864929199219,40.758773803710937,-73.970222473144531,40.784141540527344,N,1108 +id2102594,1,2016-03-30 16:14:29,2016-03-30 17:01:33,1,-73.789840698242188,40.643558502197266,-73.970664978027344,40.687278747558594,N,2824 +id0010677,1,2016-04-29 10:40:34,2016-04-29 10:53:23,2,-73.991973876953125,40.749996185302734,-73.977882385253906,40.754894256591797,N,769 +id3194108,1,2016-06-01 11:48:41,2016-06-01 12:19:07,1,-74.005027770996094,40.746452331542969,-73.972007751464844,40.745780944824219,N,1826 +id2063827,1,2016-05-18 21:09:02,2016-05-18 21:18:55,1,-73.981414794921875,40.756732940673828,-73.970565795898438,40.755695343017578,N,593 +id0105610,1,2016-02-19 20:01:24,2016-02-19 20:35:49,3,-73.789718627929688,40.643707275390625,-73.97869873046875,40.750343322753906,N,2065 +id3502065,1,2016-03-15 21:03:44,2016-03-15 21:14:37,1,-73.974014282226563,40.757152557373047,-73.949737548828125,40.777091979980469,N,653 +id3508035,2,2016-06-06 20:13:56,2016-06-06 20:45:20,6,-73.788131713867188,40.641460418701172,-73.971771240234375,40.749408721923828,N,1884 +id3236276,2,2016-01-27 08:07:32,2016-01-27 08:24:01,1,-73.956039428710937,40.767608642578125,-73.96820068359375,40.786689758300781,N,989 +id3277902,1,2016-04-09 15:04:31,2016-04-09 15:11:30,1,-73.973167419433594,40.755699157714844,-73.988655090332031,40.736995697021484,N,419 +id2335059,1,2016-05-27 11:10:32,2016-05-27 11:26:34,4,-73.975807189941406,40.760627746582031,-73.987785339355469,40.754920959472656,N,962 +id2300865,1,2016-05-10 10:31:22,2016-05-10 10:35:25,1,-73.96588134765625,40.762840270996094,-73.960990905761719,40.7708740234375,N,243 +id3962434,2,2016-01-10 08:45:31,2016-01-10 08:51:44,2,-73.989273071289063,40.756488800048828,-74.002799987792969,40.760501861572266,N,373 +id2677672,1,2016-02-18 17:47:39,2016-02-18 17:54:03,2,-73.945755004882813,40.773681640625,-73.95343017578125,40.781078338623047,N,384 +id0589360,1,2016-05-22 17:34:08,2016-05-22 18:20:01,1,-73.863677978515625,40.769771575927734,-74.007217407226563,40.70489501953125,N,2753 +id0970832,1,2016-03-12 20:39:39,2016-03-12 21:05:40,1,-74.008247375488281,40.747352600097656,-73.979446411132813,40.71875,N,1561 +id0694434,1,2016-01-26 23:40:14,2016-01-26 23:48:39,1,-74.006797790527344,40.706073760986328,-73.974021911621094,40.744075775146484,N,505 +id3729136,2,2016-01-30 15:15:47,2016-01-30 15:30:47,2,-73.977272033691406,40.757350921630859,-74.002433776855469,40.734401702880859,N,900 +id2358953,2,2016-06-27 00:31:28,2016-06-27 01:06:44,1,-73.870819091796875,40.773738861083984,-73.857498168945313,41.017810821533203,N,2116 +id0935429,1,2016-05-02 06:58:06,2016-05-02 07:08:17,1,-73.999092102050781,40.745491027832031,-73.978561401367188,40.762325286865234,N,611 +id3056417,2,2016-04-11 14:18:21,2016-04-11 14:34:33,1,-73.984359741210937,40.742710113525391,-73.987747192382813,40.751888275146484,N,972 +id1152886,2,2016-01-21 14:34:06,2016-01-21 14:44:10,1,-73.961677551269531,40.77117919921875,-73.952110290527344,40.784358978271484,N,604 +id1796723,1,2016-02-09 15:54:53,2016-02-09 16:04:47,1,-73.993858337402344,40.735797882080078,-73.994621276855469,40.750461578369141,N,594 +id0045014,1,2016-04-20 20:29:42,2016-04-20 20:39:16,1,-73.950126647949219,40.780086517333984,-73.96282958984375,40.762683868408203,N,574 +id2648478,1,2016-01-18 11:13:59,2016-01-18 11:18:56,1,-73.951576232910156,40.766468048095703,-73.960212707519531,40.760540008544922,N,297 +id0702030,1,2016-01-07 23:24:44,2016-01-07 23:26:25,1,-73.999298095703125,40.749534606933594,-74.005363464355469,40.743518829345703,N,101 +id3024438,2,2016-06-10 22:24:37,2016-06-10 22:41:58,1,-73.953720092773438,40.775295257568359,-73.991195678710938,40.726318359375,N,1041 +id2146569,2,2016-06-23 22:17:35,2016-06-23 22:21:07,1,-73.976799011230469,40.749950408935547,-73.9815673828125,40.745769500732422,N,212 +id2307151,1,2016-02-07 18:08:06,2016-02-07 18:15:08,1,-73.961952209472656,40.800445556640625,-73.978416442871094,40.782791137695312,N,422 +id2049424,2,2016-03-02 20:15:07,2016-03-02 20:37:43,1,-73.963890075683594,40.773651123046875,-74.005111694335938,40.751491546630859,N,1356 +id2209089,1,2016-02-24 22:56:43,2016-02-24 23:03:39,1,-74.006912231445313,40.730361938476563,-74.005943298339844,40.727069854736328,N,416 +id0391524,1,2016-04-06 12:14:40,2016-04-06 12:33:18,1,-73.978645324707031,40.748035430908203,-73.970130920410156,40.762737274169922,N,1118 +id2681033,1,2016-06-17 10:01:39,2016-06-17 10:16:13,1,-73.976829528808594,40.788211822509766,-73.983749389648438,40.762531280517578,N,874 +id2040275,1,2016-06-16 20:31:09,2016-06-16 20:36:30,1,-73.936943054199219,40.798233032226563,-73.946380615234375,40.7808837890625,N,321 +id0073842,2,2016-03-30 23:49:41,2016-03-30 23:56:21,1,-73.99005126953125,40.738010406494141,-73.990936279296875,40.725215911865234,N,400 +id3942339,1,2016-01-05 17:58:04,2016-01-05 18:13:38,1,-73.978828430175781,40.752803802490234,-73.991035461425781,40.750419616699219,N,934 +id2991616,2,2016-03-19 19:51:34,2016-03-19 20:04:27,3,-73.983566284179688,40.755561828613281,-73.982368469238281,40.766960144042969,N,773 +id1047459,2,2016-01-22 17:31:53,2016-01-22 17:37:30,3,-73.988410949707031,40.758960723876953,-73.991897583007812,40.77069091796875,N,337 +id1737558,1,2016-05-18 19:08:31,2016-05-18 19:12:25,1,-73.960235595703125,40.762229919433594,-73.950592041015625,40.775314331054687,N,234 +id2135557,2,2016-05-25 13:19:56,2016-05-25 13:27:50,5,-73.970283508300781,40.76483154296875,-73.957572937011719,40.782478332519531,N,474 +id0659170,2,2016-03-26 13:07:08,2016-03-26 13:29:02,1,-73.968658447265625,40.764507293701172,-73.872833251953125,40.771453857421875,N,1314 +id1125774,1,2016-01-19 22:20:43,2016-01-19 22:28:45,2,-73.994537353515625,40.740234375,-73.976188659667969,40.762592315673828,N,482 +id1886740,1,2016-05-29 00:15:12,2016-05-29 00:24:38,1,-73.985115051269531,40.768726348876953,-73.951667785644531,40.774433135986328,N,566 +id1982306,2,2016-02-10 21:06:14,2016-02-10 21:09:23,2,-73.984939575195313,40.751857757568359,-73.983543395996094,40.744335174560547,N,189 +id2684106,2,2016-02-26 20:59:13,2016-02-26 21:14:26,2,-74.001007080078125,40.731781005859375,-73.987152099609375,40.771003723144531,N,913 +id0038484,2,2016-03-09 13:41:11,2016-03-09 13:53:27,2,-73.972854614257813,40.764400482177734,-73.971809387207031,40.757888793945313,N,736 +id1734208,2,2016-04-11 10:44:32,2016-04-11 10:56:26,6,-73.997077941894531,40.720638275146484,-73.9996337890625,40.745838165283203,N,714 +id0561467,1,2016-02-09 06:58:53,2016-02-09 07:12:28,1,-73.972549438476562,40.794017791748047,-73.954055786132813,40.766300201416016,N,815 +id3092788,2,2016-03-03 22:01:32,2016-03-03 22:17:44,2,-73.984771728515625,40.7105712890625,-73.989410400390625,40.730148315429687,N,972 +id1741519,2,2016-03-26 14:47:44,2016-03-26 14:53:02,1,-73.984786987304688,40.743015289306641,-73.993606567382812,40.735286712646484,N,318 +id1330402,2,2016-05-22 18:06:05,2016-05-22 18:16:30,1,-73.9918212890625,40.750076293945312,-73.971054077148438,40.756698608398438,N,625 +id2505596,2,2016-05-28 22:53:12,2016-05-28 23:07:31,1,-73.9849853515625,40.748580932617188,-73.981277465820313,40.769115447998047,N,859 +id1630509,2,2016-03-16 05:42:49,2016-03-16 05:45:10,2,-73.993667602539063,40.741878509521484,-73.984588623046875,40.754299163818359,N,141 +id0512853,1,2016-05-28 17:40:21,2016-05-28 17:56:44,1,-73.969566345214844,40.7691650390625,-73.986526489257813,40.730335235595703,N,983 +id3089912,2,2016-06-13 13:22:04,2016-06-13 13:31:29,2,-73.989959716796875,40.741081237792969,-73.976966857910156,40.747451782226563,N,565 +id1137965,1,2016-05-16 15:02:10,2016-05-16 15:08:01,1,-73.9891357421875,40.775020599365234,-73.981819152832031,40.766059875488281,N,351 +id3677225,2,2016-01-09 15:07:03,2016-01-09 15:12:45,1,-73.967880249023438,40.759811401367188,-73.953826904296875,40.778881072998047,N,342 +id0401226,1,2016-05-26 06:37:10,2016-05-26 06:52:19,4,-74.006706237792969,40.705554962158203,-73.991691589355469,40.749721527099609,N,909 +id2452605,2,2016-05-22 22:42:31,2016-05-22 22:46:18,1,-73.996269226074219,40.749851226806641,-73.994766235351563,40.736480712890625,N,227 +id3618302,2,2016-04-19 09:27:04,2016-04-19 09:45:02,6,-73.987319946289062,40.750640869140625,-73.989288330078125,40.769405364990234,N,1078 +id1552358,2,2016-04-01 07:55:30,2016-04-01 08:10:30,1,-73.975433349609375,40.752132415771484,-73.99078369140625,40.750942230224609,N,900 +id1168234,1,2016-02-01 18:02:59,2016-02-01 18:13:30,1,-74.000205993652344,40.737846374511719,-74.000312805175781,40.722866058349609,N,631 +id2910320,2,2016-04-20 07:33:12,2016-04-20 07:56:17,1,-73.955459594726563,40.767307281494141,-73.988998413085938,40.693168640136719,N,1385 +id3331830,1,2016-04-12 09:21:27,2016-04-12 09:35:56,1,-73.964866638183594,40.755790710449219,-73.975807189941406,40.757354736328125,N,869 +id0195963,2,2016-06-19 18:39:05,2016-06-19 18:48:39,1,-73.999160766601563,40.744369506835938,-73.98870849609375,40.758701324462891,N,574 +id0762989,2,2016-03-17 08:24:27,2016-03-17 08:26:11,1,-73.977615356445313,40.763572692871094,-73.972572326660156,40.765956878662109,N,104 +id2671060,2,2016-04-07 08:44:32,2016-04-07 08:51:30,1,-73.953117370605469,40.771800994873047,-73.947921752929687,40.783149719238281,N,418 +id3620795,1,2016-01-01 10:45:24,2016-01-01 10:51:47,1,-74.001609802246094,40.740810394287109,-73.996223449707031,40.725902557373047,N,383 +id2282206,1,2016-01-04 16:32:42,2016-01-04 16:51:19,2,-73.962181091308594,40.810726165771484,-73.994834899902344,40.752811431884766,N,1117 +id0591292,1,2016-06-09 18:43:04,2016-06-09 19:07:11,1,-73.986968994140625,40.742851257324219,-73.994285583496094,40.761356353759766,N,1447 +id0906779,1,2016-04-19 08:31:48,2016-04-19 09:14:11,2,-73.9715576171875,40.750629425048828,-73.952629089355469,40.631595611572266,N,2543 +id2326430,2,2016-06-10 22:06:53,2016-06-10 22:23:14,1,-73.956878662109375,40.774871826171875,-73.936508178710938,40.857185363769531,N,981 +id3863815,2,2016-03-14 04:24:36,2016-03-14 04:37:11,3,-73.944358825683594,40.714488983154297,-73.910530090332031,40.709491729736328,N,755 +id3048297,2,2016-04-06 08:53:11,2016-04-06 09:14:08,1,-73.972793579101563,40.755596160888672,-73.873123168945313,40.774456024169922,N,1257 +id3649509,1,2016-04-02 14:46:23,2016-04-02 15:06:44,2,-74.005546569824219,40.709262847900391,-73.970146179199219,40.762741088867188,N,1221 +id1783063,2,2016-04-06 12:24:22,2016-04-06 12:40:02,2,-73.984649658203125,40.745979309082031,-73.977378845214844,40.759651184082031,N,940 +id3363012,2,2016-04-12 20:22:49,2016-04-12 20:24:55,1,-73.961967468261719,40.77008056640625,-73.960777282714844,40.775051116943359,N,126 +id0514638,1,2016-02-10 08:36:33,2016-02-10 08:42:23,1,-73.96942138671875,40.800033569335938,-73.968177795410156,40.791702270507813,N,350 +id0627115,2,2016-02-26 16:10:47,2016-02-26 16:23:04,1,-73.982627868652344,40.762111663818359,-73.993370056152344,40.747489929199219,N,737 +id3141299,2,2016-01-14 12:25:54,2016-01-14 12:37:24,3,-73.995773315429688,40.742568969726563,-74.008094787597656,40.722770690917969,N,690 +id2003497,1,2016-04-15 11:58:45,2016-04-15 12:09:56,2,-74.000076293945312,40.748298645019531,-73.989883422851562,40.737964630126953,N,671 +id3748197,1,2016-02-07 23:17:58,2016-02-07 23:25:41,1,-73.999168395996094,40.734233856201172,-73.982093811035156,40.740276336669922,N,463 +id2983261,1,2016-04-15 14:41:14,2016-04-15 14:47:21,1,-74.014251708984375,40.713912963867188,-74.004623413085938,40.70538330078125,N,367 +id0485870,2,2016-06-19 20:23:09,2016-06-19 20:29:18,1,-73.990898132324219,40.750663757324219,-73.993217468261719,40.734199523925781,N,369 +id0835694,1,2016-01-15 19:25:12,2016-01-15 19:31:54,1,-73.975105285644531,40.755691528320313,-73.985595703125,40.747474670410156,N,402 +id3426410,2,2016-02-18 09:27:07,2016-02-18 09:45:20,5,-73.967437744140625,40.759349822998047,-74.012687683105469,40.701610565185547,N,1093 +id3673678,2,2016-01-31 13:52:55,2016-01-31 14:03:52,1,-73.975997924804688,40.751136779785156,-74.001853942871094,40.7352294921875,N,657 +id2460349,1,2016-01-07 15:40:34,2016-01-07 15:49:24,2,-73.978950500488281,40.750930786132813,-73.964393615722656,40.754962921142578,N,530 +id3198639,1,2016-06-05 03:02:46,2016-06-05 03:14:59,1,-73.979789733886719,40.781265258789063,-73.940879821777344,40.823223114013672,N,733 +id1872601,2,2016-05-31 19:16:05,2016-05-31 19:27:44,2,-73.986862182617188,40.750961303710938,-74.005378723144531,40.740028381347656,N,699 +id0125957,1,2016-06-14 21:16:43,2016-06-14 21:21:37,2,-73.967018127441406,40.753005981445313,-73.951629638671875,40.769359588623047,N,294 +id3526986,2,2016-02-23 13:28:59,2016-02-23 13:40:00,1,-73.970382690429688,40.764991760253906,-73.949668884277344,40.768459320068359,N,661 +id3170873,1,2016-06-30 21:35:27,2016-06-30 21:46:19,1,-74.002433776855469,40.717166900634766,-73.985969543457031,40.726749420166016,N,652 +id1674373,2,2016-02-15 17:52:27,2016-02-15 18:02:13,5,-74.007499694824219,40.740951538085938,-74.016647338867188,40.704910278320313,N,586 +id2973697,2,2016-04-07 22:52:23,2016-04-07 23:10:00,2,-73.995384216308594,40.749298095703125,-73.989326477050781,40.718147277832031,N,1057 +id1592044,1,2016-01-29 11:23:23,2016-01-29 11:33:03,1,-73.986679077148438,40.725849151611328,-73.997467041015625,40.735153198242187,N,580 +id3899813,2,2016-06-01 20:15:24,2016-06-01 20:34:35,5,-73.980026245117188,40.765968322753906,-73.991203308105469,40.750350952148438,N,1151 +id2075052,1,2016-04-09 09:09:03,2016-04-09 09:20:03,1,-73.954498291015625,40.766807556152344,-73.987785339355469,40.720878601074219,N,660 +id3707411,1,2016-01-03 02:03:39,2016-01-03 02:17:02,1,-74.007728576660156,40.740608215332031,-73.983512878417969,40.737209320068359,N,803 +id1608545,1,2016-04-14 08:31:03,2016-04-14 09:03:37,1,-74.006797790527344,40.731071472167969,-73.974960327148438,40.758468627929687,N,1954 +id3517425,2,2016-01-16 20:34:06,2016-01-16 20:51:16,6,-73.980926513671875,40.755241394042969,-74.004554748535156,40.729652404785156,N,1030 +id3942917,1,2016-04-29 14:18:39,2016-04-29 15:05:36,4,-73.862777709960937,40.769313812255859,-73.986129760742188,40.748580932617188,N,2817 +id2000923,2,2016-03-29 06:07:38,2016-03-29 06:09:03,5,-73.987869262695312,40.765098571777344,-73.993606567382812,40.758949279785156,N,85 +id3564028,1,2016-01-02 01:16:42,2016-01-02 01:19:56,1,-73.954132080078125,40.774784088134766,-73.947418212890625,40.779632568359375,N,194 +id1233453,1,2016-02-05 17:28:07,2016-02-05 17:30:03,1,-73.972099304199219,40.782207489013672,-73.964515686035156,40.777549743652344,N,116 +id1372674,2,2016-05-22 13:08:24,2016-05-22 13:21:50,1,-73.97821044921875,40.77716064453125,-73.957626342773438,40.774547576904297,N,806 +id2806146,2,2016-05-28 21:31:24,2016-05-28 21:41:23,1,-73.983573913574219,40.738418579101563,-74.005485534667969,40.739559173583984,N,599 +id1832737,2,2016-03-06 10:53:26,2016-03-06 10:59:30,1,-73.984710693359375,40.760181427001953,-73.979560852050781,40.752704620361328,N,364 +id1489766,2,2016-05-31 19:53:33,2016-05-31 20:00:46,1,-73.989891052246094,40.747158050537109,-73.974945068359375,40.741744995117188,N,433 +id3308765,2,2016-05-17 18:00:27,2016-05-17 18:10:25,4,-73.863471984863281,40.769817352294922,-73.871536254882813,40.763103485107422,N,598 +id1935437,2,2016-04-24 09:09:20,2016-04-24 09:37:05,1,-73.975860595703125,40.757240295410156,-74.177597045898437,40.690948486328125,N,1665 +id2059551,2,2016-04-01 09:28:05,2016-04-01 09:42:03,1,-73.956657409667969,40.780769348144531,-73.969642639160156,40.800102233886719,N,838 +id2433939,1,2016-05-16 13:05:38,2016-05-16 13:33:57,3,-73.873008728027344,40.774120330810547,-73.97607421875,40.749912261962891,N,1699 +id2677357,2,2016-02-15 16:36:19,2016-02-15 16:41:50,2,-73.971633911132813,40.781963348388672,-73.981689453125,40.778995513916016,N,331 +id2336715,2,2016-01-01 00:09:03,2016-01-01 00:19:25,2,-73.984359741210937,40.748985290527344,-73.996284484863281,40.716056823730469,N,622 +id3525276,1,2016-03-24 18:27:14,2016-03-24 18:32:57,1,-73.970970153808594,40.764125823974609,-73.9622802734375,40.776180267333984,N,343 +id3729126,1,2016-01-04 14:20:21,2016-01-04 14:36:59,1,-73.866912841796875,40.771877288818359,-73.794692993164062,40.734790802001953,N,998 +id1073968,1,2016-03-15 09:44:58,2016-03-15 10:07:43,1,-73.955215454101563,40.780246734619141,-73.861831665039063,40.768455505371094,N,1365 +id0562336,2,2016-06-15 10:17:48,2016-06-15 10:27:40,2,-73.952743530273438,40.772258758544922,-73.977767944335937,40.739112854003906,N,592 +id1163958,1,2016-03-18 07:48:10,2016-03-18 07:53:23,1,-73.972579956054688,40.748905181884766,-73.961563110351562,40.760517120361328,N,313 +id1681877,1,2016-04-26 14:42:12,2016-04-26 14:57:02,1,-73.95526123046875,40.780242919921875,-73.969871520996094,40.789764404296875,N,890 +id0945119,2,2016-05-02 18:29:38,2016-05-02 18:38:56,6,-74.002838134765625,40.760360717773438,-73.988410949707031,40.778980255126953,N,558 +id2939783,1,2016-04-12 10:11:37,2016-04-12 10:34:46,1,-73.990066528320312,40.751934051513672,-73.989753723144531,40.723869323730469,N,1389 +id2050990,2,2016-06-20 21:05:09,2016-06-20 21:47:45,1,-73.990081787109375,40.756736755371094,-73.955131530761719,40.677524566650391,N,2556 +id3780362,2,2016-05-08 21:13:49,2016-05-08 21:16:04,2,-73.94952392578125,40.776611328125,-73.942672729492187,40.785968780517578,N,135 +id2233338,2,2016-01-14 19:14:29,2016-01-14 19:23:22,2,-73.995140075683594,40.75,-73.993698120117187,40.735500335693359,N,533 +id1445390,2,2016-01-19 08:00:19,2016-01-19 08:17:34,3,-73.960121154785156,40.781951904296875,-73.971969604492187,40.755039215087891,N,1035 +id0345679,2,2016-03-22 20:24:06,2016-03-22 20:33:40,1,-73.997520446777344,40.721240997314453,-73.988006591796875,40.720821380615234,N,574 +id0570525,1,2016-02-25 15:30:16,2016-02-25 15:35:20,1,-73.998374938964844,40.725925445556641,-73.990310668945313,40.731128692626953,N,304 +id0872662,2,2016-02-13 08:10:01,2016-02-13 08:12:19,3,-73.978309631347656,40.737159729003906,-73.973213195800781,40.743949890136719,N,138 +id3114338,2,2016-05-23 20:42:21,2016-05-23 20:51:40,1,-73.965110778808594,40.775089263916016,-73.952369689941406,40.766460418701172,N,559 +id2718231,1,2016-03-08 02:44:19,2016-03-08 03:04:35,1,-73.992500305175781,40.740444183349609,-73.840110778808594,40.719516754150391,N,1216 +id0618376,2,2016-01-11 06:21:39,2016-01-11 06:25:11,1,-74.006118774414063,40.717918395996094,-74.013504028320313,40.715682983398438,N,212 +id1697059,1,2016-06-26 15:10:46,2016-06-26 15:23:54,1,-73.958106994628906,40.742168426513672,-73.931709289550781,40.76806640625,N,788 +id1868620,2,2016-06-18 00:41:28,2016-06-18 01:10:34,1,-73.7818603515625,40.644683837890625,-73.961921691894531,40.767032623291016,N,1746 +id0000569,1,2016-01-03 19:51:38,2016-01-03 19:53:41,3,-73.96197509765625,40.767734527587891,-73.958587646484375,40.77301025390625,N,123 +id0952827,2,2016-03-25 00:22:07,2016-03-25 00:36:20,1,-73.998062133789063,40.674808502197266,-74.004440307617188,40.732650756835938,N,853 +id0464363,2,2016-04-25 19:43:15,2016-04-25 19:47:43,1,-73.951087951660156,40.711063385009766,-73.938926696777344,40.707386016845703,N,268 +id0608846,2,2016-05-25 13:45:57,2016-05-25 13:57:41,1,-73.9801025390625,40.753704071044922,-73.993316650390625,40.741611480712891,N,704 +id3567125,1,2016-04-10 03:13:02,2016-04-10 03:57:40,1,-73.981559753417969,40.766326904296875,-73.911590576171875,40.763885498046875,N,2678 +id3996183,1,2016-06-17 08:54:16,2016-06-17 09:06:11,1,-73.990310668945313,40.718864440917969,-73.99554443359375,40.736873626708984,N,715 +id1474156,1,2016-06-25 07:30:13,2016-06-25 07:48:14,2,-73.970466613769531,40.799175262451172,-74.0172119140625,40.705192565917969,N,1081 +id0695483,1,2016-02-06 16:02:38,2016-02-06 16:15:56,3,-74.002388000488281,40.749553680419922,-73.977783203125,40.754081726074219,N,798 +id3609971,1,2016-06-14 09:20:45,2016-06-14 09:43:13,1,-73.99090576171875,40.756271362304688,-73.976814270019531,40.759689331054688,N,1348 +id3956459,2,2016-03-05 10:23:45,2016-03-05 10:45:52,1,-73.986907958984375,40.761608123779297,-74.008407592773438,40.711620330810547,N,1327 +id0088231,2,2016-06-08 23:02:21,2016-06-08 23:19:31,3,-74.008171081542969,40.745002746582031,-73.955093383789063,40.804836273193359,N,1030 +id1957034,1,2016-02-02 18:28:23,2016-02-02 19:09:19,1,-73.994880676269531,40.750213623046875,-73.96221923828125,40.711620330810547,N,2456 +id1838067,2,2016-04-01 12:46:46,2016-04-01 12:52:12,1,-73.963180541992188,40.77423095703125,-73.955551147460937,40.778690338134766,N,326 +id3342568,1,2016-01-03 03:33:21,2016-01-03 04:09:20,1,-73.984848022460938,40.724334716796875,-73.884117126464844,40.716716766357422,N,2159 +id3487442,2,2016-02-29 18:39:12,2016-02-29 18:42:59,1,-73.981819152832031,40.768962860107422,-73.981819152832031,40.768962860107422,N,227 +id1401963,1,2016-06-18 06:53:43,2016-06-18 07:19:18,1,-73.976028442382813,40.776126861572266,-73.948387145996094,40.778156280517578,N,1535 +id1597742,2,2016-04-11 19:50:42,2016-04-11 19:58:52,5,-73.983795166015625,40.750705718994141,-73.97735595703125,40.766120910644531,N,490 +id3271420,2,2016-04-24 19:25:32,2016-04-24 19:32:10,4,-73.973464965820313,40.760879516601563,-73.966133117675781,40.761203765869141,N,398 +id0850673,2,2016-02-20 13:06:23,2016-02-20 13:23:37,1,-73.981330871582031,40.747268676757813,-74.0054931640625,40.739021301269531,N,1034 +id0171820,2,2016-05-25 06:40:04,2016-05-25 06:43:13,1,-74.004524230957031,40.724193572998047,-74.004493713378906,40.724666595458984,N,189 +id0514543,2,2016-02-26 18:45:39,2016-02-26 19:04:18,1,-73.982536315917969,40.775661468505859,-73.969451904296875,40.802089691162109,N,1119 +id1991106,1,2016-06-11 14:22:56,2016-06-11 14:31:03,1,-73.967788696289063,40.762699127197266,-73.981475830078125,40.742191314697266,N,487 +id2142187,1,2016-05-19 20:47:17,2016-05-19 20:59:08,1,-73.987068176269531,40.756633758544922,-73.960304260253906,40.780773162841797,N,711 +id0526379,1,2016-04-29 04:28:26,2016-04-29 04:39:20,1,-73.986099243164062,40.719486236572266,-73.945960998535156,40.711437225341797,N,654 +id2548131,1,2016-05-31 23:12:37,2016-05-31 23:28:24,2,-74.007781982421875,40.740943908691406,-73.971176147460938,40.800800323486328,N,947 +id2452855,2,2016-05-14 03:27:31,2016-05-14 03:51:36,1,-73.985069274902344,40.732204437255859,-73.910491943359375,40.696815490722656,N,1445 +id0315726,2,2016-06-04 03:14:11,2016-06-04 03:35:27,1,-73.983436584472656,40.731681823730469,-73.948005676269531,40.714160919189453,N,1276 +id2527828,2,2016-02-17 17:39:30,2016-02-17 18:08:38,1,-73.991157531738281,40.745780944824219,-73.983390808105469,40.771461486816406,N,1748 +id1630336,1,2016-04-25 23:18:24,2016-04-25 23:30:54,1,-73.982040405273438,40.759677886962891,-73.947052001953125,40.773159027099609,N,750 +id2353964,2,2016-04-30 07:44:24,2016-04-30 07:49:24,1,-73.961204528808594,40.76055908203125,-73.947135925292969,40.775932312011719,N,300 +id2393811,1,2016-03-10 18:52:40,2016-03-10 19:08:43,1,-73.9705810546875,40.799045562744141,-73.989814758300781,40.767246246337891,N,963 +id1774339,1,2016-04-11 17:41:07,2016-04-11 17:46:20,1,-73.949783325195313,40.780567169189453,-73.960067749023438,40.770408630371094,N,313 +id1610798,2,2016-01-25 23:32:14,2016-01-25 23:42:35,1,-73.987434387207031,40.760139465332031,-73.990982055664063,40.744861602783203,N,621 +id2452120,1,2016-04-18 18:27:14,2016-04-18 18:42:35,2,-73.974456787109375,40.756927490234375,-73.960906982421875,40.780143737792969,N,921 +id2693088,2,2016-04-23 23:28:09,2016-04-23 23:43:01,2,-73.975418090820313,40.787075042724609,-73.942657470703125,40.823551177978516,N,892 +id0828675,1,2016-06-23 07:16:24,2016-06-23 07:21:42,1,-73.994041442871094,40.751136779785156,-73.982635498046875,40.760688781738281,N,318 +id1636593,2,2016-04-25 17:37:13,2016-04-25 18:23:12,1,-73.790153503417969,40.646614074707031,-73.981918334960938,40.756679534912109,N,2759 +id0747713,2,2016-01-17 03:24:53,2016-01-17 03:27:29,1,-74.006690979003906,40.737640380859375,-74.003883361816406,40.738090515136719,N,156 +id3655477,2,2016-03-24 13:35:17,2016-03-24 13:48:28,1,-73.988029479980469,40.737819671630859,-73.972068786621094,40.746078491210937,N,791 +id0642318,2,2016-04-04 09:21:49,2016-04-04 09:37:51,1,-73.952522277832031,40.766269683837891,-73.983428955078125,40.734378814697266,N,962 +id2390585,1,2016-02-24 11:45:41,2016-02-24 12:08:39,1,-73.863784790039063,40.769744873046875,-73.946258544921875,40.780414581298828,N,1378 +id0369319,2,2016-02-08 18:24:38,2016-02-08 18:28:18,1,-73.986930847167969,40.750930786132813,-73.978309631347656,40.753261566162109,N,220 +id0720321,1,2016-06-21 18:09:27,2016-06-21 18:16:55,1,-73.962638854980469,40.768226623535156,-73.953559875488281,40.772823333740234,N,448 +id0860600,1,2016-01-06 15:23:44,2016-01-06 15:38:22,1,-74.0001220703125,40.717849731445313,-74.014579772949219,40.709674835205078,N,878 +id1977372,2,2016-04-01 13:33:57,2016-04-01 14:00:47,1,-73.869682312011719,40.772548675537109,-73.913406372070312,40.680778503417969,N,1610 +id2437858,2,2016-03-27 11:55:02,2016-03-27 12:05:06,5,-73.986831665039062,40.761829376220703,-73.977836608886719,40.792121887207031,N,604 +id2165807,1,2016-04-08 20:19:55,2016-04-08 20:23:06,2,-74.003929138183594,40.725795745849609,-73.998878479003906,40.734764099121094,N,191 +id1638921,1,2016-05-27 17:58:30,2016-05-27 18:16:23,1,-73.979713439941406,40.760562896728516,-73.993385314941406,40.736629486083984,N,1073 +id0631726,2,2016-04-23 15:58:46,2016-04-23 16:03:24,1,-73.961517333984375,40.766021728515625,-73.949722290039062,40.781929016113281,N,278 +id1947466,2,2016-04-21 12:32:31,2016-04-21 12:37:20,6,-73.981277465820313,40.780361175537109,-73.976150512695312,40.788600921630859,N,289 +id1723822,1,2016-06-16 12:35:11,2016-06-16 12:45:43,3,-73.956062316894531,40.764152526855469,-73.943443298339844,40.791183471679687,N,632 +id1144791,2,2016-01-06 13:39:04,2016-01-06 13:49:17,1,-73.991989135742187,40.743793487548828,-73.974700927734375,40.763401031494141,N,613 +id1497423,1,2016-02-25 13:40:47,2016-02-25 13:54:12,1,-73.988723754882813,40.736976623535156,-73.98272705078125,40.750343322753906,N,805 +id2917044,1,2016-04-02 15:35:02,2016-04-02 15:55:19,1,-74.017303466796875,40.705360412597656,-73.973930358886719,40.761566162109375,N,1217 +id2538816,1,2016-02-13 17:59:03,2016-02-13 18:03:48,1,-74.003982543945313,40.748470306396484,-73.99505615234375,40.742942810058594,N,285 +id2808378,1,2016-03-09 17:11:16,2016-03-09 17:28:43,1,-73.978645324707031,40.740932464599609,-74.0126953125,40.701587677001953,N,1047 +id2015130,2,2016-05-21 03:13:55,2016-05-21 03:20:39,1,-73.884040832519531,40.747608184814453,-73.904617309570312,40.747699737548828,N,404 +id1062725,1,2016-06-08 05:51:58,2016-06-08 05:57:54,1,-73.990364074707031,40.756240844726563,-73.972953796386719,40.757289886474609,N,356 +id3792892,1,2016-05-01 02:40:38,2016-05-01 03:02:30,1,-73.986663818359375,40.721683502197266,-73.972572326660156,40.685878753662109,N,1312 +id0924324,2,2016-05-10 18:07:52,2016-05-10 18:26:21,2,-73.959068298339844,40.775661468505859,-73.959068298339844,40.775661468505859,N,1109 +id1295254,1,2016-03-06 11:01:27,2016-03-06 11:08:29,1,-73.975982666015625,40.757747650146484,-73.982162475585937,40.740749359130859,N,422 +id0222570,2,2016-04-20 19:14:04,2016-04-20 19:29:30,1,-73.94769287109375,40.783298492431641,-73.961044311523438,40.75665283203125,N,926 +id3680395,1,2016-05-19 18:57:18,2016-05-19 18:59:13,1,-73.954788208007812,40.777965545654297,-73.947769165039063,40.779579162597656,N,115 +id0552144,2,2016-05-04 18:04:33,2016-05-04 18:38:33,1,-73.885231018066406,40.772941589355469,-73.946952819824219,40.775260925292969,N,2040 +id2034899,2,2016-02-11 11:03:50,2016-02-11 11:09:29,1,-73.989982604980469,40.751598358154297,-73.994430541992188,40.741001129150391,N,339 +id1283389,1,2016-04-06 00:52:41,2016-04-06 01:07:06,1,-74.004371643066406,40.742347717285156,-74.010726928710938,40.723617553710937,N,865 +id2040373,2,2016-03-18 07:54:56,2016-03-18 08:02:42,3,-73.961082458496094,40.769119262695313,-73.956947326660156,40.783420562744141,N,466 +id2124906,2,2016-05-03 08:28:38,2016-05-03 08:35:46,1,-73.980278015136719,40.770191192626953,-73.963783264160156,40.774131774902344,N,428 +id1660823,2,2016-03-01 06:40:18,2016-03-01 07:01:37,5,-73.982139587402344,40.775325775146484,-74.009849548339844,40.721698760986328,N,1279 +id0989891,1,2016-05-03 04:40:29,2016-05-03 04:51:45,2,-73.9893798828125,40.719825744628906,-73.98260498046875,40.757503509521484,N,676 +id2679117,1,2016-02-03 07:57:23,2016-02-03 08:02:15,1,-73.91998291015625,40.743572235107422,-73.926773071289063,40.755275726318359,N,292 +id2145001,2,2016-04-27 09:05:42,2016-04-27 09:12:17,1,-73.945297241210938,40.774349212646484,-73.955436706542969,40.778598785400391,N,395 +id3427182,1,2016-06-03 11:40:39,2016-06-03 11:57:24,1,-73.971923828125,40.791904449462891,-73.96954345703125,40.765300750732422,N,1005 +id2346299,2,2016-06-17 11:46:09,2016-06-17 11:57:54,1,-73.978660583496094,40.756301879882813,-73.988128662109375,40.737350463867188,N,705 +id0105984,1,2016-06-26 11:17:25,2016-06-26 11:30:33,1,-73.98583984375,40.726902008056641,-74.014274597167969,40.704067230224609,N,788 +id1587327,1,2016-03-29 21:19:24,2016-03-29 21:24:44,3,-74.007720947265625,40.743003845214844,-73.9893798828125,40.747844696044922,N,320 +id2519393,1,2016-06-25 13:48:37,2016-06-25 13:58:03,1,-73.994583129882813,40.702999114990234,-74.004127502441406,40.712928771972656,N,566 +id1009714,1,2016-06-20 22:40:07,2016-06-20 22:48:42,1,-73.979354858398438,40.756191253662109,-73.9791259765625,40.74298095703125,N,515 +id1027675,2,2016-01-23 08:46:42,2016-01-23 09:06:39,1,-73.969535827636719,40.755218505859375,-73.976524353027344,40.747947692871094,N,1197 +id0802391,1,2016-03-06 17:44:45,2016-03-06 17:52:14,1,-73.997207641601563,40.724071502685547,-74.000617980957031,40.732154846191406,N,449 +id2597894,1,2016-05-14 14:02:45,2016-05-14 14:27:02,1,-73.990409851074219,40.718795776367187,-73.986907958984375,40.750888824462891,N,1457 +id1949220,1,2016-04-02 04:24:27,2016-04-02 04:43:38,1,-73.987144470214844,40.729499816894531,-73.960708618164062,40.797470092773438,N,1151 +id3389249,2,2016-05-04 11:02:00,2016-05-04 11:12:03,1,-73.962188720703125,40.759132385253906,-73.962631225585937,40.773174285888672,N,603 +id3245042,2,2016-04-02 16:01:45,2016-04-02 16:13:49,1,-73.985496520996094,40.747451782226563,-73.979072570800781,40.728038787841797,N,724 +id1285469,2,2016-02-23 09:19:37,2016-02-23 09:39:35,1,-74.0164794921875,40.715408325195313,-74.01275634765625,40.706611633300781,N,1198 +id3482709,2,2016-03-21 11:22:48,2016-03-21 11:24:00,1,-73.955192565917969,40.779991149902344,-73.957801818847656,40.776508331298828,N,72 +id0496379,1,2016-03-24 16:19:17,2016-03-24 16:32:59,1,-73.961166381835937,40.77783203125,-73.966041564941406,40.763866424560547,N,822 +id1703171,2,2016-01-30 22:42:51,2016-01-30 23:23:44,5,-73.786216735839844,40.645286560058594,-73.993072509765625,40.729728698730469,N,2453 +id2268459,1,2016-03-02 07:02:21,2016-03-02 07:24:57,1,-73.985359191894531,40.738410949707031,-73.87042236328125,40.773681640625,N,1356 +id3013319,2,2016-02-15 22:28:54,2016-02-15 22:30:27,1,-73.981399536132812,40.778793334960938,-73.976524353027344,40.782497406005859,N,93 +id1265097,2,2016-05-13 02:21:54,2016-05-13 02:24:29,1,-73.989021301269531,40.718910217285156,-73.996482849121094,40.721179962158203,N,155 +id2954399,1,2016-06-27 11:22:37,2016-06-27 11:23:17,1,-74.001029968261719,40.75665283203125,-74.000999450683594,40.756626129150391,N,40 +id3152963,1,2016-04-09 22:33:22,2016-04-09 22:41:03,2,-73.955116271972656,40.769001007080078,-73.971542358398438,40.785369873046875,N,461 +id1904421,2,2016-06-11 17:48:40,2016-06-11 18:01:01,2,-73.983985900878906,40.737873077392578,-74.004669189453125,40.708389282226563,N,741 +id3611647,1,2016-05-19 10:44:15,2016-05-19 11:02:27,1,-73.9957275390625,40.754081726074219,-73.983932495117188,40.746543884277344,N,1092 +id0910982,1,2016-05-21 19:58:22,2016-05-21 20:10:11,1,-73.952377319335938,40.810768127441406,-73.976066589355469,40.781143188476563,N,709 +id2640178,1,2016-02-15 16:12:24,2016-02-15 16:31:27,1,-73.9539794921875,40.763858795166016,-73.996437072753906,40.715511322021484,N,1143 +id0030324,1,2016-01-09 06:26:46,2016-01-09 06:31:02,1,-73.939826965332031,40.699562072753906,-73.931999206542969,40.689132690429688,N,256 +id3883723,2,2016-02-25 01:46:34,2016-02-25 01:57:34,2,-73.979087829589844,40.759498596191406,-73.979560852050781,40.724334716796875,N,660 +id0674885,1,2016-06-30 07:37:35,2016-06-30 07:43:32,1,-73.965751647949219,40.759574890136719,-73.979118347167969,40.765102386474609,N,357 +id3260324,2,2016-02-07 08:24:25,2016-02-07 08:38:21,1,-73.932807922363281,40.758930206298828,-73.983207702636719,40.767009735107422,N,836 +id1561466,2,2016-04-29 20:21:28,2016-04-29 20:56:48,1,-73.965728759765625,40.768730163574219,-73.955879211425781,40.673080444335938,N,2120 +id2106816,1,2016-06-30 10:53:59,2016-06-30 11:03:29,1,-73.980880737304688,40.784336090087891,-73.956672668457031,40.780616760253906,N,570 +id2605569,1,2016-05-08 02:57:55,2016-05-08 03:02:48,2,-73.926284790039063,40.703285217285156,-73.938018798828125,40.700408935546875,N,293 +id3293082,2,2016-02-06 19:50:51,2016-02-06 20:04:17,5,-73.976486206054688,40.754989624023437,-73.991157531738281,40.75128173828125,N,806 +id0790613,1,2016-05-20 14:04:03,2016-05-20 14:33:41,1,-73.986305236816406,40.777023315429687,-73.985855102539063,40.776790618896484,N,1778 +id0202431,1,2016-02-17 12:02:29,2016-02-17 12:18:44,1,-74.004135131835938,40.742809295654297,-73.98779296875,40.744865417480469,N,975 +id2084457,2,2016-02-01 08:41:26,2016-02-01 08:49:10,3,-73.982536315917969,40.775081634521484,-73.971763610839844,40.784595489501953,N,464 +id2595331,2,2016-04-29 12:18:42,2016-04-29 12:29:03,1,-73.954696655273437,40.773979187011719,-73.968452453613281,40.761508941650391,N,621 +id3448735,1,2016-01-27 06:45:39,2016-01-27 06:51:12,1,-73.991500854492187,40.744892120361328,-73.9832763671875,40.760482788085937,N,333 +id1431322,1,2016-02-21 13:21:37,2016-02-21 13:34:26,2,-74.00970458984375,40.739654541015625,-73.999595642089844,40.728836059570313,N,769 +id0130751,1,2016-02-28 19:47:01,2016-02-28 20:29:35,1,-73.988197326660156,40.764289855957031,-73.872810363769531,40.774456024169922,N,2554 +id1444884,2,2016-01-06 18:15:26,2016-01-06 18:31:18,1,-73.996566772460938,40.731975555419922,-73.979011535644531,40.749900817871094,N,952 +id2797773,1,2016-03-08 08:33:35,2016-03-08 08:36:35,1,-73.967132568359375,40.793464660644531,-73.970390319824219,40.795749664306641,N,180 +id0861216,2,2016-01-18 13:00:37,2016-01-18 13:10:57,1,-73.990249633789063,40.757286071777344,-73.963981628417969,40.756919860839844,N,620 +id3833049,1,2016-06-22 09:47:49,2016-06-22 10:02:11,1,-73.994537353515625,40.766025543212891,-73.986381530761719,40.749061584472656,N,862 +id1633648,1,2016-06-20 14:19:16,2016-06-20 14:34:34,1,-73.9779052734375,40.754871368408203,-73.952774047851562,40.768165588378906,Y,918 +id3252664,2,2016-06-28 07:17:36,2016-06-28 07:22:36,1,-73.967514038085938,40.766155242919922,-73.960525512695312,40.771442413330078,N,300 +id3755869,2,2016-04-24 16:48:08,2016-04-24 17:04:41,3,-73.95294189453125,40.810188293457031,-73.945510864257813,40.778118133544922,N,993 +id2440671,2,2016-02-17 17:40:25,2016-02-17 18:13:13,1,-73.863655090332031,40.769622802734375,-73.913223266601562,40.872798919677734,N,1968 +id1489555,1,2016-05-06 10:37:59,2016-05-06 11:13:12,2,-73.944358825683594,40.808307647705078,-74.012313842773438,40.703845977783203,N,2113 +id0162579,2,2016-05-13 23:13:14,2016-05-13 23:19:50,1,-73.992202758789063,40.744968414306641,-73.981391906738281,40.746990203857422,N,396 +id3402983,2,2016-06-30 15:48:06,2016-06-30 17:31:13,1,-73.781898498535156,40.644771575927734,-73.985893249511719,40.760158538818359,N,6187 +id1713541,1,2016-05-23 00:09:18,2016-05-23 00:19:24,1,-73.96807861328125,40.759376525878906,-73.98486328125,40.768650054931641,N,606 +id2732066,2,2016-04-27 11:52:23,2016-04-27 12:16:49,2,-74.004478454589844,40.722690582275391,-73.871070861816406,40.774250030517578,N,1466 +id2445763,1,2016-02-20 23:45:51,2016-02-20 23:52:23,1,-73.983283996582031,40.77374267578125,-73.987380981445313,40.780372619628906,N,392 +id3972131,2,2016-06-06 13:43:22,2016-06-06 13:47:08,3,-73.982872009277344,40.744987487792969,-73.989288330078125,40.744674682617188,N,226 +id3779357,2,2016-02-22 19:02:08,2016-02-22 19:12:53,1,-73.966796875,40.767009735107422,-73.981788635253906,40.752288818359375,N,645 +id0931190,1,2016-04-20 14:02:28,2016-04-20 14:24:23,1,-73.982749938964844,40.754154205322266,-74.015388488769531,40.711246490478516,N,1315 +id1789034,1,2016-04-09 23:41:23,2016-04-09 23:51:42,1,-73.982559204101563,40.742351531982422,-73.992500305175781,40.725265502929688,N,619 +id0746372,2,2016-01-22 18:20:31,2016-01-22 18:23:26,1,-73.954597473144531,40.769618988037109,-73.949592590332031,40.777069091796875,N,175 +id2567660,2,2016-03-19 18:18:23,2016-03-19 18:33:29,1,-73.99554443359375,40.744010925292969,-73.983245849609375,40.763671875,N,906 +id1787258,1,2016-05-07 18:40:51,2016-05-07 18:46:33,2,-73.954475402832031,40.783695220947266,-73.963516235351563,40.770065307617187,N,342 +id0805117,2,2016-04-15 20:11:31,2016-04-15 20:22:44,3,-74.008659362792969,40.719608306884766,-73.998939514160156,40.727920532226563,N,673 +id2828691,2,2016-06-19 00:23:50,2016-06-19 00:34:35,2,-74.001251220703125,40.736324310302734,-74.008697509765625,40.706966400146484,N,645 +id2729614,2,2016-02-03 00:14:51,2016-02-03 00:39:35,1,-73.988388061523438,40.720024108886719,-73.992530822753906,40.659038543701172,N,1484 +id1249988,2,2016-06-10 01:48:13,2016-06-10 02:09:28,1,-73.975540161132813,40.735630035400391,-73.962936401367188,40.712009429931641,N,1275 +id2463869,2,2016-03-18 10:42:07,2016-03-18 10:51:56,1,-73.980384826660156,40.765644073486328,-73.991317749023437,40.774452209472656,N,589 +id2904820,1,2016-03-20 22:51:45,2016-03-20 23:14:07,1,-73.782424926757813,40.644287109375,-73.856582641601563,40.725502014160156,N,1342 +id0180594,2,2016-04-28 13:22:03,2016-04-28 13:30:50,1,-74.00067138671875,40.758258819580078,-73.994613647460938,40.750530242919922,N,527 +id0749370,1,2016-02-02 18:40:44,2016-02-02 18:45:58,1,-73.961944580078125,40.764541625976562,-73.968452453613281,40.763080596923828,N,314 +id2848070,2,2016-06-09 06:54:04,2016-06-09 07:02:27,3,-74.00103759765625,40.741519927978516,-73.980323791503906,40.760448455810547,N,503 +id3817493,2,2016-03-14 14:57:56,2016-03-14 15:15:26,1,-73.952880859375,40.766468048095703,-73.978630065917969,40.761920928955078,N,1050 +id3129802,1,2016-05-14 05:31:58,2016-05-14 05:52:31,1,-73.968124389648438,40.800437927246094,-73.865242004394531,40.770652770996094,N,1233 +id3167292,2,2016-01-05 09:53:39,2016-01-05 09:57:03,1,-73.981178283691406,40.720901489257813,-73.977386474609375,40.726085662841797,N,204 +id1924450,2,2016-02-27 19:09:23,2016-02-27 19:23:54,2,-74.005836486816406,40.745475769042969,-73.994026184082031,40.728401184082031,N,871 +id1794468,2,2016-06-17 14:40:16,2016-06-17 14:44:24,1,-73.95941162109375,40.774227142333984,-73.953468322753906,40.779422760009766,N,248 +id0204192,1,2016-02-25 02:35:07,2016-02-25 02:50:03,1,-73.870735168457031,40.773658752441406,-73.859916687011719,40.829090118408203,N,896 +id3190007,2,2016-01-07 15:26:03,2016-01-07 15:38:17,1,-73.978271484375,40.745655059814453,-73.965255737304688,40.758293151855469,N,734 +id3348726,1,2016-06-23 08:37:00,2016-06-23 08:40:41,1,-73.973716735839844,40.794696807861328,-73.974433898925781,40.789119720458984,N,221 +id3469446,2,2016-02-14 10:40:55,2016-02-14 10:46:45,6,-74.01300048828125,40.702438354492188,-74.014289855957031,40.712501525878906,N,350 +id1915949,2,2016-02-04 16:33:13,2016-02-04 16:54:12,1,-73.991813659667969,40.743778228759766,-73.971160888671875,40.792728424072266,N,1259 +id2899891,1,2016-04-08 15:26:22,2016-04-08 15:38:13,1,-73.974197387695313,40.757495880126953,-73.9598388671875,40.775489807128906,N,711 +id0942991,2,2016-02-03 07:32:19,2016-02-03 07:46:30,1,-73.947151184082031,40.776187896728516,-73.9730224609375,40.7554931640625,N,851 +id2772912,1,2016-01-28 15:31:01,2016-01-28 16:14:50,1,-73.885223388671875,40.772727966308594,-73.980583190917969,40.781665802001953,N,2629 +id2851756,2,2016-06-16 10:10:25,2016-06-16 10:19:36,1,-73.994117736816406,40.751083374023438,-73.972145080566406,40.763481140136719,N,551 +id0851036,1,2016-04-06 01:26:07,2016-04-06 01:36:57,1,-74.004035949707031,40.741973876953125,-73.973953247070312,40.764312744140625,N,650 +id0283106,1,2016-04-26 18:36:24,2016-04-26 18:59:00,1,-74.007965087890625,40.715099334716797,-73.9598388671875,40.770381927490234,N,1356 +id1697231,2,2016-05-16 19:17:33,2016-05-16 19:27:27,2,-73.982284545898437,40.778812408447266,-73.961288452148438,40.798618316650391,N,594 +id3385889,1,2016-02-12 09:44:22,2016-02-12 10:00:02,1,-73.972686767578125,40.755863189697266,-73.977333068847656,40.758674621582031,N,940 +id3591274,1,2016-02-06 10:24:17,2016-02-06 10:26:56,1,-73.961883544921875,40.756290435791016,-73.968025207519531,40.755714416503906,N,159 +id3269098,2,2016-01-21 15:29:37,2016-01-21 15:55:47,1,-73.992301940917969,40.750335693359375,-73.965408325195313,40.768886566162109,N,1570 +id3159798,1,2016-02-01 22:20:51,2016-02-01 22:34:19,1,-73.954887390136719,40.773296356201172,-73.969085693359375,40.802776336669922,N,808 +id0828941,2,2016-02-25 21:24:09,2016-02-25 21:47:26,2,-74.010162353515625,40.719921112060547,-73.974906921386719,40.756919860839844,N,1397 +id0995542,2,2016-02-06 06:03:59,2016-02-06 06:11:45,1,-74.0074462890625,40.733512878417969,-74.003608703613281,40.756412506103516,N,466 +id0661736,1,2016-05-18 13:54:45,2016-05-18 14:07:15,2,-73.975875854492187,40.760894775390625,-73.97186279296875,40.750152587890625,N,750 +id1408423,1,2016-04-30 15:40:21,2016-04-30 16:17:36,1,-73.973464965820313,40.784553527832031,-73.917518615722656,40.773857116699219,N,2235 +id2476509,2,2016-06-01 20:48:02,2016-06-01 21:08:21,1,-73.862846374511719,40.769065856933594,-73.967636108398438,40.756023406982422,N,1219 +id1575277,2,2016-06-11 16:59:15,2016-06-11 17:33:27,1,-73.999229431152344,40.722881317138672,-73.982879638671875,40.778297424316406,N,2052 +id0860703,1,2016-01-31 10:43:14,2016-01-31 10:56:37,1,-73.976036071777344,40.776172637939453,-73.959251403808594,40.759189605712891,N,803 +id3211119,1,2016-01-02 22:54:49,2016-01-02 23:05:55,1,-73.977127075195313,40.755878448486328,-73.938545227050781,40.809852600097656,N,666 +id2693863,1,2016-03-18 08:22:10,2016-03-18 09:47:19,1,-73.777183532714844,40.646499633789063,-73.985000610351563,40.760917663574219,N,5109 +id2379416,2,2016-02-14 01:05:51,2016-02-14 01:21:22,1,-73.989997863769531,40.719760894775391,-73.946258544921875,40.772960662841797,N,931 +id2452510,2,2016-02-21 19:20:51,2016-02-21 19:36:37,6,-73.987968444824219,40.728225708007813,-73.978492736816406,40.764766693115234,N,946 +id0040164,2,2016-06-14 11:48:32,2016-06-14 11:54:45,1,-73.964492797851563,40.763950347900391,-73.968032836914062,40.765350341796875,N,373 +id1145809,2,2016-05-16 23:15:13,2016-05-16 23:31:00,6,-73.808486938476562,40.687335968017578,-73.808486938476562,40.687335968017578,N,947 +id3214066,1,2016-03-21 20:14:22,2016-03-21 20:24:23,1,-73.982307434082031,40.775039672851563,-73.9561767578125,40.763744354248047,N,601 +id0651671,2,2016-02-05 14:56:07,2016-02-05 15:15:10,1,-73.952301025390625,40.783908843994141,-73.960853576660156,40.760818481445313,N,1143 +id0707492,2,2016-04-12 11:42:20,2016-04-12 11:48:30,1,-73.954345703125,40.786922454833984,-73.95867919921875,40.778396606445313,N,370 +id0599157,2,2016-02-24 20:21:50,2016-02-24 20:44:00,2,-73.995002746582031,40.739917755126953,-73.956298828125,40.747581481933594,N,1330 +id1309604,2,2016-04-23 16:10:54,2016-04-23 16:19:19,1,-73.969642639160156,40.677883148193359,-73.991264343261719,40.677703857421875,N,505 +id0183474,2,2016-02-14 20:58:15,2016-02-14 21:09:08,1,-73.956504821777344,40.771278381347656,-73.985603332519531,40.739891052246094,N,653 +id1399824,1,2016-05-18 18:59:08,2016-05-18 19:19:51,1,-73.995002746582031,40.740024566650391,-73.987083435058594,40.761966705322266,N,1243 +id0407071,1,2016-01-06 05:58:40,2016-01-06 06:28:17,3,-73.782234191894531,40.644573211669922,-73.808433532714844,40.736045837402344,N,1777 +id0353238,2,2016-06-23 19:41:29,2016-06-23 19:55:08,5,-74.003372192382813,40.748828887939453,-73.963104248046875,40.775825500488281,N,819 +id3974735,2,2016-06-08 00:45:53,2016-06-08 00:52:09,1,-73.991714477539062,40.764713287353516,-73.980049133300781,40.78363037109375,N,376 +id3151105,2,2016-01-12 18:55:35,2016-01-12 19:05:27,2,-73.978507995605469,40.755001068115234,-73.987716674804688,40.752799987792969,N,592 +id3009814,1,2016-01-28 12:28:23,2016-01-28 12:32:11,2,-73.953071594238281,40.78277587890625,-73.946334838867188,40.778820037841797,N,228 +id3148002,2,2016-02-16 16:52:37,2016-02-16 17:06:34,1,-74.010078430175781,40.720951080322266,-73.977989196777344,40.734291076660156,N,837 +id3453520,1,2016-04-13 19:14:15,2016-04-13 19:21:27,1,-73.953750610351563,40.785205841064453,-73.964187622070313,40.775558471679688,N,432 +id3225079,1,2016-01-14 09:24:37,2016-01-14 10:00:01,1,-74.016639709472656,40.709857940673828,-73.785713195800781,40.712226867675781,N,2124 +id3842035,1,2016-05-18 04:25:51,2016-05-18 04:43:40,1,-74.001426696777344,40.731006622314453,-73.9376220703125,40.698074340820313,N,1069 +id2722135,2,2016-02-20 11:43:07,2016-02-20 11:46:12,6,-73.975189208984375,40.765071868896484,-73.970191955566406,40.766040802001953,N,185 +id3684742,2,2016-05-24 13:21:48,2016-05-24 13:40:41,1,-73.97869873046875,40.755210876464844,-73.988227844238281,40.742729187011719,N,1133 +id2026236,1,2016-05-14 17:50:33,2016-05-14 18:23:41,1,-74.003639221191406,40.713619232177734,-73.979331970214844,40.78363037109375,N,1988 +id3924756,1,2016-02-22 21:34:01,2016-02-22 21:50:01,2,-74.004371643066406,40.742183685302734,-73.975479125976562,40.760425567626953,N,960 +id1384906,2,2016-02-25 22:17:03,2016-02-25 22:33:00,1,-73.991615295410156,40.759761810302734,-73.974227905273438,40.743175506591797,N,957 +id3588665,2,2016-02-14 14:37:23,2016-02-14 14:45:08,4,-73.990547180175781,40.745861053466797,-74.001571655273438,40.730991363525391,N,465 +id2840400,1,2016-02-23 21:10:52,2016-02-23 21:19:56,1,-73.991157531738281,40.734081268310547,-74.004989624023438,40.729690551757813,N,544 +id3355874,1,2016-02-04 11:24:26,2016-02-04 11:42:51,1,-73.984375,40.769687652587891,-73.954071044921875,40.764026641845703,N,1105 +id0363564,2,2016-05-21 12:29:39,2016-05-21 12:37:08,2,-73.997749328613281,40.756649017333984,-73.993026733398437,40.747138977050781,N,449 +id0883448,1,2016-04-22 20:10:58,2016-04-22 20:17:20,3,-74.000038146972656,40.73486328125,-74.007514953613281,40.733142852783203,N,382 +id1322536,1,2016-05-06 08:40:20,2016-05-06 08:48:41,1,-73.984451293945313,40.724967956542969,-73.99853515625,40.7340087890625,N,501 +id0559488,2,2016-03-30 08:52:07,2016-03-30 09:00:46,6,-73.9931640625,40.757694244384766,-73.989089965820313,40.769435882568359,N,519 +id3226823,2,2016-03-28 08:02:53,2016-03-28 08:14:28,3,-73.98284912109375,40.74462890625,-73.984947204589844,40.759330749511719,N,695 +id3791668,2,2016-01-06 17:25:15,2016-01-06 17:27:49,5,-73.962677001953125,40.775661468505859,-73.959442138671875,40.780288696289063,N,154 +id3170402,2,2016-03-20 07:50:36,2016-03-20 07:58:50,1,-73.959922790527344,40.758510589599609,-73.991790771484375,40.744121551513672,N,494 +id3815007,1,2016-05-20 22:05:08,2016-05-20 22:12:18,1,-73.969215393066406,40.754093170166016,-73.973655700683594,40.737838745117188,N,430 +id3443107,2,2016-02-12 15:26:58,2016-02-12 15:31:58,5,-73.96795654296875,40.768741607666016,-73.962959289550781,40.77825927734375,N,300 +id3942614,2,2016-06-22 04:26:04,2016-06-22 04:30:22,1,-73.985549926757813,40.747165679931641,-73.988059997558594,40.759574890136719,N,258 +id1459852,2,2016-05-18 08:22:01,2016-05-18 08:38:37,1,-73.984382629394531,40.770126342773438,-73.97027587890625,40.757720947265625,N,996 +id1382741,1,2016-05-11 20:29:36,2016-05-11 20:35:21,1,-74.008842468261719,40.713661193847656,-74.00042724609375,40.723617553710937,N,345 +id0531053,1,2016-02-02 09:32:44,2016-02-02 09:48:24,1,-73.991363525390625,40.749931335449219,-73.972824096679688,40.758663177490234,N,940 +id0580213,2,2016-03-24 06:57:51,2016-03-24 07:09:29,1,-73.994911193847656,40.725448608398438,-73.964271545410156,40.712741851806641,N,698 +id3656168,1,2016-03-28 07:41:16,2016-03-28 07:49:27,1,-73.999168395996094,40.749610900878906,-73.986091613769531,40.772613525390625,N,491 +id1971518,1,2016-03-12 13:04:28,2016-03-12 13:14:33,1,-73.988975524902344,40.759204864501953,-73.973991394042969,40.760589599609375,N,605 +id3911487,1,2016-03-03 17:56:45,2016-03-03 18:05:28,1,-73.962112426757813,40.776100158691406,-73.968521118164062,40.764408111572266,N,523 +id3748596,1,2016-02-28 13:18:07,2016-02-28 13:30:21,2,-73.969245910644531,40.766899108886719,-73.942718505859375,40.799812316894531,N,734 +id1485244,1,2016-02-24 23:04:32,2016-02-24 23:15:33,1,-73.999481201171875,40.7232666015625,-74.007286071777344,40.738151550292969,N,661 +id0002063,2,2016-04-02 20:48:33,2016-04-02 20:56:49,1,-73.994773864746094,40.754970550537109,-73.996467590332031,40.745277404785156,N,496 +id0920470,2,2016-04-12 14:41:00,2016-04-12 14:46:10,1,-73.968978881835938,40.757850646972656,-73.973480224609375,40.762500762939453,N,310 +id0487874,2,2016-01-19 10:11:03,2016-01-19 10:56:21,1,-74.007148742675781,40.713031768798828,-73.983428955078125,40.766273498535156,N,2718 +id1530336,2,2016-03-24 07:36:21,2016-03-24 07:50:14,1,-73.980697631835938,40.729946136474609,-74.00946044921875,40.715183258056641,N,833 +id3466354,1,2016-01-17 11:49:40,2016-01-17 11:56:46,1,-73.978797912597656,40.766731262207031,-73.961669921875,40.757801055908203,N,426 +id1545867,2,2016-03-17 19:27:42,2016-03-17 19:34:07,1,-73.991287231445313,40.723709106445313,-73.987892150878906,40.734451293945313,N,385 +id1196772,2,2016-06-28 12:08:13,2016-06-28 12:18:01,1,-73.982490539550781,40.762569427490234,-73.998626708984375,40.760608673095703,N,588 +id3276198,2,2016-03-14 20:31:12,2016-03-14 20:36:18,1,-73.981910705566406,40.766880035400391,-73.982597351074219,40.777179718017578,N,306 +id0739131,1,2016-04-19 21:37:21,2016-04-19 21:55:37,1,-73.97515869140625,40.759181976318359,-74.005264282226563,40.707370758056641,N,1096 +id1527676,1,2016-03-07 19:38:25,2016-03-07 19:54:35,2,-73.986129760742188,40.759719848632812,-74.001487731933594,40.736064910888672,N,970 +id1146853,2,2016-03-05 02:59:30,2016-03-05 03:20:50,4,-74.005393981933594,40.740810394287109,-73.950630187988281,40.821037292480469,N,1280 +id1891863,1,2016-04-11 14:42:15,2016-04-11 15:17:52,1,-73.99237060546875,40.737514495849609,-73.870841979980469,40.774078369140625,N,2137 +id0238963,2,2016-01-11 12:42:36,2016-01-11 13:09:38,1,-73.980018615722656,40.786018371582031,-73.976333618164062,40.759067535400391,N,1622 +id0865346,1,2016-04-03 15:10:27,2016-04-03 15:44:53,1,-73.987190246582031,40.750743865966797,-73.805458068847656,40.682220458984375,N,2066 +id1641073,2,2016-05-28 18:55:51,2016-05-28 19:09:53,1,-73.990737915039062,40.766227722167969,-73.994834899902344,40.750083923339844,N,842 +id0674512,1,2016-04-11 21:58:24,2016-04-11 22:16:33,1,-73.965408325195313,40.795379638671875,-74.0125732421875,40.701553344726563,N,1089 +id1709044,2,2016-03-19 11:23:42,2016-03-19 11:31:21,1,-73.985191345214844,40.729091644287109,-73.980964660644531,40.741783142089844,N,459 +id1637128,2,2016-02-13 09:22:20,2016-02-13 09:25:31,1,-73.955535888671875,40.779693603515625,-73.95355224609375,40.787971496582031,N,191 +id2166004,2,2016-01-08 22:03:18,2016-01-08 22:16:33,3,-74.009712219238281,40.720390319824219,-73.984931945800781,40.691978454589844,N,795 +id3714906,1,2016-03-01 08:33:57,2016-03-01 08:40:44,1,-73.989494323730469,40.753677368164063,-73.988334655761719,40.745948791503906,N,407 +id1002278,1,2016-04-10 01:17:32,2016-04-10 01:35:11,1,-73.944038391113281,40.711578369140625,-73.838386535644531,40.703369140625,N,1059 +id2248491,2,2016-04-10 14:43:06,2016-04-10 14:49:16,5,-73.990516662597656,40.730579376220703,-74.001739501953125,40.735210418701172,N,370 +id3813882,1,2016-04-23 04:12:01,2016-04-23 04:17:36,2,-74.006309509277344,40.744682312011719,-73.991683959960937,40.765033721923828,N,335 +id0290690,2,2016-05-27 18:58:47,2016-05-27 19:02:25,1,-73.98175048828125,40.768569946289063,-73.984817504882812,40.764419555664063,N,218 +id0872691,1,2016-04-01 17:08:28,2016-04-01 17:17:26,1,-73.98797607421875,40.7615966796875,-73.973739624023438,40.779636383056641,N,538 +id3812360,2,2016-05-31 20:42:16,2016-05-31 20:51:07,1,-73.99725341796875,40.725509643554688,-73.993942260742188,40.732540130615234,N,531 +id2111520,2,2016-02-03 20:15:47,2016-02-03 20:21:21,2,-73.988731384277344,40.74884033203125,-73.982963562011719,40.760120391845703,N,334 +id2378477,2,2016-02-19 18:23:11,2016-02-19 18:32:44,1,-73.971527099609375,40.795398712158203,-73.954879760742187,40.820209503173828,N,573 +id2653245,2,2016-05-20 01:33:30,2016-05-20 01:46:44,2,-73.992202758789063,40.721332550048828,-73.95440673828125,40.685863494873047,N,794 +id3908396,2,2016-06-28 13:54:08,2016-06-28 14:01:33,2,-73.96112060546875,40.771968841552734,-73.96575927734375,40.765430450439453,N,445 +id3105640,1,2016-01-24 20:35:19,2016-01-24 21:00:56,1,-73.977981567382812,40.684780120849609,-73.954132080078125,40.613346099853516,N,1537 +id1737882,2,2016-04-25 19:20:14,2016-04-25 19:34:17,1,-73.958969116210938,40.768009185791016,-73.982490539550781,40.766059875488281,N,843 +id0998101,2,2016-03-30 20:29:32,2016-03-30 20:32:26,6,-73.980926513671875,40.779697418212891,-73.975021362304688,40.784332275390625,N,174 +id0102349,2,2016-05-16 20:29:21,2016-05-16 20:45:03,2,-73.9705810546875,40.758731842041016,-73.998672485351563,40.749828338623047,N,942 +id3355382,1,2016-03-25 05:56:03,2016-03-25 06:06:07,1,-73.878822326660156,40.740196228027344,-73.935478210449219,40.743068695068359,N,604 +id3381901,1,2016-04-04 14:33:12,2016-04-04 15:06:58,1,-74.006294250488281,40.749904632568359,-73.967002868652344,40.761013031005859,N,2026 +id0214120,2,2016-05-11 13:03:29,2016-05-11 13:14:24,1,-73.976112365722656,40.776149749755859,-73.979316711425781,40.765338897705078,N,655 +id1506453,1,2016-06-16 10:23:25,2016-06-16 11:10:36,1,-73.990821838378906,40.755752563476562,-73.997528076171875,40.722434997558594,N,2831 +id3259541,2,2016-06-25 16:09:59,2016-06-25 16:34:17,1,-73.985382080078125,40.750251770019531,-74.010597229003906,40.709819793701172,N,1458 +id2194188,2,2016-06-10 22:16:14,2016-06-10 22:26:26,1,-73.986122131347656,40.726428985595703,-73.999420166015625,40.720249176025391,N,612 +id2042535,1,2016-02-12 12:36:38,2016-02-12 12:47:07,1,-73.978981018066406,40.756519317626953,-73.992164611816406,40.749202728271484,Y,629 +id2419613,1,2016-06-15 19:56:48,2016-06-15 20:14:07,1,-73.954750061035156,40.765514373779297,-73.991096496582031,40.726173400878906,N,1039 +id2695986,1,2016-05-22 00:59:21,2016-05-22 01:08:21,1,-73.955520629882813,40.779277801513672,-73.978904724121094,40.742778778076172,N,540 +id3247633,1,2016-06-29 20:44:44,2016-06-29 20:57:25,1,-73.955146789550781,40.782554626464844,-73.966636657714844,40.807975769042969,N,761 +id0194198,2,2016-05-15 14:44:09,2016-05-15 15:29:08,4,-73.862663269042969,40.768768310546875,-73.9752197265625,40.763511657714844,N,2699 +id0260905,1,2016-01-13 21:06:29,2016-01-13 21:18:20,1,-73.972297668457031,40.756065368652344,-73.990394592285156,40.771766662597656,N,711 +id0398807,2,2016-02-23 14:50:40,2016-02-23 15:07:24,6,-73.97357177734375,40.752166748046875,-73.974533081054687,40.730266571044922,N,1004 +id1428415,1,2016-02-14 20:13:17,2016-02-14 20:28:14,1,-73.98028564453125,40.734428405761719,-73.976341247558594,40.763988494873047,N,897 +id3920713,2,2016-01-16 17:56:52,2016-01-16 18:03:34,2,-73.97564697265625,40.741409301757813,-73.977241516113281,40.726371765136719,N,402 +id1287069,1,2016-01-12 14:32:54,2016-01-12 14:52:01,2,-73.989448547363281,40.74169921875,-73.98248291015625,40.767631530761719,N,1147 +id2654799,2,2016-05-06 04:23:10,2016-05-06 04:33:30,2,-74.00390625,40.741931915283203,-73.999504089355469,40.761333465576172,N,620 +id1504893,1,2016-01-11 19:16:41,2016-01-11 19:30:04,1,-73.977279663085938,40.758186340332031,-73.958351135253906,40.781501770019531,N,803 +id3838936,1,2016-02-15 00:21:31,2016-02-15 00:24:17,2,-73.994071960449219,40.741111755371094,-73.998672485351563,40.742256164550781,N,166 +id3953004,2,2016-06-03 20:36:14,2016-06-03 20:42:55,5,-73.984397888183594,40.728549957275391,-73.972190856933594,40.747570037841797,N,401 +id3539226,2,2016-05-05 02:49:46,2016-05-05 02:50:53,1,-74.007003784179688,40.739871978759766,-74.005897521972656,40.74017333984375,N,67 +id1385785,1,2016-04-01 23:31:26,2016-04-01 23:50:59,1,-73.9766845703125,40.788238525390625,-73.965545654296875,40.755252838134766,N,1173 +id1647538,1,2016-04-08 19:54:06,2016-04-08 20:05:41,1,-73.980941772460938,40.757831573486328,-73.991050720214844,40.760486602783203,N,695 +id3300666,2,2016-05-13 08:00:36,2016-05-13 08:05:22,1,-73.970718383789063,40.758808135986328,-73.975601196289063,40.752689361572266,N,286 +id0763508,1,2016-06-10 18:53:47,2016-06-10 19:02:00,1,-74.007568359375,40.732715606689453,-74.00250244140625,40.724803924560547,N,493 +id1638050,1,2016-04-11 23:27:02,2016-04-11 23:38:11,1,-74.009407043457031,40.706123352050781,-73.974632263183594,40.75115966796875,N,669 +id3468368,1,2016-02-19 07:22:32,2016-02-19 07:28:42,1,-73.958106994628906,40.769290924072266,-73.954208374023437,40.764114379882813,N,370 +id0556588,2,2016-02-15 19:50:44,2016-02-15 19:57:35,5,-73.991706848144531,40.747764587402344,-73.980323791503906,40.743236541748047,N,411 +id2975591,1,2016-01-06 12:26:54,2016-01-06 12:39:42,1,-73.993759155273438,40.732719421386719,-73.991279602050781,40.742263793945313,N,768 +id1348785,1,2016-01-21 10:33:51,2016-01-21 10:39:06,1,-73.962196350097656,40.767795562744141,-73.968940734863281,40.763557434082031,N,315 +id0938598,1,2016-04-30 03:58:43,2016-04-30 04:05:15,1,-73.978553771972656,40.736995697021484,-73.957130432128906,40.766151428222656,N,392 +id1937745,2,2016-03-07 18:51:46,2016-03-07 18:58:30,2,-73.990974426269531,40.760631561279297,-73.994720458984375,40.750450134277344,N,404 +id1245739,2,2016-05-31 22:34:15,2016-05-31 23:18:16,1,-73.782051086425781,40.644641876220703,-73.992759704589844,40.681339263916016,N,2641 +id3646418,1,2016-05-18 07:43:58,2016-05-18 08:05:10,1,-73.960220336914062,40.798000335693359,-73.98101806640625,40.761985778808594,N,1272 +id0610780,1,2016-06-10 08:14:42,2016-06-10 08:23:05,1,-73.975563049316406,40.781818389892578,-73.9755859375,40.760749816894531,N,503 +id1811004,1,2016-01-13 13:53:57,2016-01-13 14:05:43,1,-73.966140747070312,40.76214599609375,-73.956153869628906,40.767593383789063,N,706 +id3034691,2,2016-02-23 07:28:40,2016-02-23 07:41:26,1,-73.96710205078125,40.788307189941406,-73.9716796875,40.763923645019531,N,766 +id0815381,2,2016-06-24 15:00:05,2016-06-24 15:03:40,1,-73.949989318847656,40.784591674804688,-73.951705932617188,40.790508270263672,N,215 +id0257838,1,2016-06-16 19:18:01,2016-06-16 19:44:38,1,-73.961967468261719,40.768325805664063,-73.990364074707031,40.751029968261719,N,1597 +id0852257,2,2016-06-14 23:29:00,2016-06-14 23:48:22,1,-73.862678527832031,40.768901824951172,-73.885566711425781,40.741241455078125,N,1162 +id3193947,2,2016-06-08 21:27:19,2016-06-08 21:33:41,3,-73.985481262207031,40.758121490478516,-73.999656677246094,40.744159698486328,N,382 +id0309774,2,2016-01-14 19:54:38,2016-01-14 19:57:57,4,-73.996116638183594,40.763919830322266,-73.993637084960938,40.757331848144531,N,199 +id1611149,1,2016-03-26 19:07:49,2016-03-26 19:23:02,1,-73.969017028808594,40.754108428955078,-73.990333557128906,40.751445770263672,N,913 +id1290138,1,2016-06-04 08:43:29,2016-06-04 08:52:01,1,-73.990165710449219,40.77227783203125,-73.992721557617188,40.756084442138672,N,512 +id1719238,1,2016-05-21 02:41:20,2016-05-21 02:56:53,2,-73.989921569824219,40.729331970214844,-73.96697998046875,40.769126892089844,N,933 +id0317057,1,2016-05-03 22:39:45,2016-05-03 23:02:35,1,-73.9884033203125,40.749122619628906,-73.928627014160156,40.760757446289062,N,1370 +id3307903,2,2016-02-20 04:03:06,2016-02-21 03:33:00,3,-74.008102416992188,40.741489410400391,-74.009956359863281,40.714611053466797,N,84594 +id0021343,2,2016-03-17 19:44:23,2016-03-17 20:02:17,1,-73.944465637207031,40.779293060302734,-73.974540710449219,40.793418884277344,N,1074 +id2276933,1,2016-02-06 17:12:04,2016-02-06 17:27:02,2,-74.004890441894531,40.709064483642578,-73.997276306152344,40.721946716308594,N,898 +id2625436,2,2016-04-26 18:31:59,2016-04-26 18:38:21,1,-73.988975524902344,40.736671447753906,-74.00177001953125,40.740383148193359,N,382 +id2799386,1,2016-04-22 21:30:30,2016-04-22 21:44:02,1,-74.008628845214844,40.739459991455078,-73.981887817382812,40.771038055419922,N,812 +id3564443,2,2016-04-21 01:30:43,2016-04-21 01:34:51,1,-74.004386901855469,40.742340087890625,-73.994911193847656,40.750198364257813,N,248 +id2566177,1,2016-06-18 08:00:37,2016-06-18 08:05:20,2,-73.972694396972656,40.79339599609375,-73.960784912109375,40.797454833984375,N,283 +id0549263,2,2016-02-23 14:11:01,2016-02-23 14:31:39,2,-73.977706909179688,40.7523193359375,-74.005989074707031,40.74005126953125,N,1238 +id2835129,2,2016-02-01 17:45:30,2016-02-01 17:51:57,2,-73.936477661132812,40.814411163330078,-73.943275451660156,40.802658081054688,N,387 +id2487895,1,2016-06-16 10:15:02,2016-06-16 10:30:30,1,-73.995323181152344,40.749767303466797,-73.979057312011719,40.758964538574219,N,928 +id2067010,2,2016-03-22 12:36:22,2016-03-22 13:06:35,3,-73.96624755859375,40.767921447753906,-73.992317199707031,40.749401092529297,N,1813 +id2904998,2,2016-06-23 10:05:32,2016-06-23 10:24:11,1,-73.961631774902344,40.768501281738281,-73.989234924316406,40.714176177978516,N,1119 +id3405803,2,2016-04-02 14:34:57,2016-04-02 14:40:57,1,-73.95684814453125,40.766620635986328,-73.93890380859375,40.793308258056641,N,360 +id0645865,2,2016-01-01 03:49:48,2016-01-01 03:52:53,2,-73.953147888183594,40.791618347167969,-73.968208312988281,40.797229766845703,N,185 +id3545530,2,2016-02-08 09:12:04,2016-02-08 09:21:41,1,-74.006462097167969,40.743869781494141,-74.0155029296875,40.711341857910156,N,577 +id2139965,1,2016-01-08 17:13:21,2016-01-08 17:24:48,2,-74.003631591796875,40.713554382324219,-73.99139404296875,40.733306884765625,N,687 +id1801685,1,2016-02-12 20:59:59,2016-02-12 21:04:06,1,-73.975936889648438,40.751953125,-73.983680725097656,40.740924835205078,N,247 +id2004798,2,2016-06-12 14:38:15,2016-06-12 14:57:04,2,-73.982536315917969,40.772201538085937,-73.984626770019531,40.757068634033203,N,1129 +id3131928,2,2016-01-05 20:50:39,2016-01-05 20:55:38,2,-73.97845458984375,40.741306304931641,-73.976493835449219,40.732456207275391,N,299 +id0301361,1,2016-04-19 10:59:31,2016-04-19 11:07:10,1,-73.955718994140625,40.777946472167969,-73.962059020996094,40.773143768310547,N,459 +id3709717,2,2016-05-21 09:14:47,2016-05-21 09:25:23,1,-73.998908996582031,40.761070251464844,-73.960380554199219,40.803878784179688,N,636 +id0131920,2,2016-02-13 17:24:28,2016-02-13 17:56:13,1,-73.996604919433594,40.725509643554688,-73.996238708496094,40.725795745849609,N,1905 +id2873647,1,2016-01-18 12:54:42,2016-01-18 13:05:22,1,-73.980003356933594,40.785667419433594,-73.9644775390625,40.775932312011719,N,640 +id3949616,1,2016-04-28 08:51:07,2016-04-28 09:05:25,1,-73.990875244140625,40.756179809570312,-73.974044799804687,40.757358551025391,N,858 +id1773809,2,2016-05-21 19:23:02,2016-05-21 19:27:20,1,-73.955146789550781,40.773242950439453,-73.958900451660156,40.780605316162109,N,258 +id3630882,1,2016-01-17 00:24:42,2016-01-17 00:32:30,2,-73.973831176757813,40.763767242431641,-73.994766235351563,40.760208129882813,N,468 +id0868843,2,2016-03-20 13:55:05,2016-03-20 14:02:25,2,-74.002326965332031,40.739818572998047,-73.99761962890625,40.756568908691406,N,440 +id3806962,2,2016-01-01 15:48:58,2016-01-01 15:53:38,6,-74.005363464355469,40.722339630126953,-73.994697570800781,40.740139007568359,N,280 +id1256619,1,2016-01-25 03:24:46,2016-01-25 03:35:40,1,-73.999008178710938,40.728015899658203,-73.978096008300781,40.717502593994141,N,654 +id3940741,1,2016-01-26 17:50:27,2016-01-26 18:04:19,1,-73.984657287597656,40.768440246582031,-73.974845886230469,40.782867431640625,N,832 +id1135189,1,2016-06-14 09:27:37,2016-06-14 09:49:21,1,-74.000167846679688,40.734531402587891,-73.99114990234375,40.750877380371094,N,1304 +id0381402,1,2016-04-21 20:51:09,2016-04-21 21:04:00,2,-73.9906005859375,40.718681335449219,-73.956695556640625,40.717273712158203,N,771 +id3607196,2,2016-01-26 11:22:27,2016-01-26 12:20:57,1,-74.017250061035156,40.708477020263672,-73.979927062988281,40.761356353759766,N,3510 +id0544194,1,2016-06-09 19:45:26,2016-06-09 19:51:55,1,-73.968498229980469,40.764888763427734,-73.963104248046875,40.768974304199219,N,389 +id1138893,1,2016-01-29 12:21:51,2016-01-29 12:25:59,1,-73.960929870605469,40.769233703613281,-73.964973449707031,40.766536712646484,N,248 +id0473184,2,2016-01-14 18:16:30,2016-01-14 18:19:37,6,-73.945304870605469,40.774120330810547,-73.95416259765625,40.778987884521484,N,187 +id2672200,1,2016-03-08 10:59:46,2016-03-08 11:21:50,1,-73.964324951171875,40.773593902587891,-73.989768981933594,40.738483428955078,N,1324 +id2775619,1,2016-01-09 23:04:27,2016-01-09 23:19:51,2,-73.986946105957031,40.747749328613281,-73.979087829589844,40.787174224853516,N,924 +id0779024,2,2016-05-17 17:32:23,2016-05-17 17:46:56,1,-73.960426330566406,40.77862548828125,-73.965606689453125,40.805507659912109,N,873 +id2225999,2,2016-03-17 02:11:38,2016-03-17 02:22:37,2,-73.988395690917969,40.728809356689453,-74.002845764160156,40.749542236328125,N,659 +id1001293,1,2016-05-07 01:40:15,2016-05-07 01:41:39,1,-73.977752685546875,40.745738983154297,-73.981063842773438,40.747047424316406,N,84 +id2897593,2,2016-06-04 17:49:00,2016-06-04 18:01:54,1,-73.962799072265625,40.794429779052734,-73.977981567382812,40.780471801757813,N,774 +id0320308,2,2016-05-10 19:15:25,2016-05-10 19:25:24,1,-73.954322814941406,40.789901733398437,-73.954345703125,40.776420593261719,N,599 +id0654976,2,2016-05-21 14:35:19,2016-05-21 14:38:04,1,-73.972389221191406,40.794139862060547,-73.977821350097656,40.78704833984375,N,165 +id1378596,2,2016-02-19 18:00:42,2016-02-19 18:07:29,1,-73.97833251953125,40.741600036621094,-73.989662170410156,40.738338470458984,N,407 +id3783986,1,2016-06-24 23:16:30,2016-06-24 23:25:39,1,-74.003173828125,40.732986450195313,-74.008041381835938,40.711185455322266,N,549 +id3609969,2,2016-02-20 16:13:17,2016-02-20 16:18:29,6,-74.002754211425781,40.739589691162109,-74.002655029296875,40.750415802001953,N,312 +id0701532,1,2016-03-17 09:14:02,2016-03-17 09:42:52,1,-73.960838317871094,40.774757385253906,-73.970611572265625,40.758823394775391,N,1730 +id3887413,2,2016-05-02 08:43:40,2016-05-02 09:07:16,1,-73.958229064941406,40.764690399169922,-74.0010986328125,40.714691162109375,N,1416 +id0108955,1,2016-05-07 14:53:37,2016-05-07 15:03:30,4,-73.985275268554688,40.758243560791016,-74.001976013183594,40.738246917724609,N,593 +id3275625,2,2016-03-18 10:28:22,2016-03-18 10:40:50,2,-73.981986999511719,40.772586822509766,-73.971939086914063,40.766059875488281,N,748 +id3200728,2,2016-03-03 10:14:57,2016-03-03 10:32:51,1,-73.995880126953125,40.759189605712891,-73.979873657226562,40.752780914306641,N,1074 +id0965307,2,2016-04-01 02:46:25,2016-04-01 02:52:56,1,-73.986061096191406,40.747161865234375,-73.980270385742187,40.735149383544922,N,391 +id0422722,2,2016-05-11 13:49:33,2016-05-11 14:12:31,6,-74.012809753417969,40.708179473876953,-73.984977722167969,40.742088317871094,N,1378 +id0020892,1,2016-05-18 11:50:47,2016-05-18 12:14:36,1,-73.978050231933594,40.754093170166016,-73.984855651855469,40.774192810058594,N,1429 +id2778242,1,2016-02-13 10:27:22,2016-02-13 10:33:41,1,-73.990837097167969,40.755699157714844,-73.976165771484375,40.763870239257813,N,379 +id0851262,1,2016-02-04 14:54:24,2016-02-04 15:06:26,1,-73.970954895019531,40.748054504394531,-73.988655090332031,40.756381988525391,N,722 +id3741701,2,2016-06-26 14:03:08,2016-06-26 14:48:25,1,-73.872879028320312,40.774200439453125,-73.995796203613281,40.764350891113281,N,2717 +id2512157,1,2016-05-23 07:50:34,2016-05-23 08:05:07,1,-73.980308532714844,40.781558990478516,-73.958671569824219,40.778339385986328,N,873 +id1732495,2,2016-06-17 21:06:43,2016-06-17 21:26:23,2,-73.870887756347656,40.773811340332031,-73.836036682128906,40.705478668212891,N,1180 +id2742829,2,2016-03-11 23:23:52,2016-03-11 23:27:34,2,-74.009010314941406,40.718631744384766,-74.010757446289062,40.717491149902344,N,222 +id1647735,2,2016-06-04 21:58:59,2016-06-04 22:13:13,1,-73.939781188964844,40.790050506591797,-73.9163818359375,40.841957092285156,N,854 +id2657420,1,2016-01-23 00:06:25,2016-01-23 00:27:55,1,-73.982101440429688,40.745903015136719,-73.993843078613281,40.683250427246094,N,1290 +id1221003,2,2016-05-22 14:00:13,2016-05-22 14:03:49,2,-73.964767456054688,40.755668640136719,-73.9661865234375,40.762001037597656,N,216 +id2930554,2,2016-04-20 11:28:49,2016-04-20 11:37:36,1,-73.979377746582031,40.767131805419922,-73.972190856933594,40.781318664550781,N,527 +id2870933,2,2016-04-01 00:19:25,2016-04-01 00:22:39,2,-74.0028076171875,40.723587036132813,-73.999763488769531,40.730415344238281,N,194 +id3129935,1,2016-02-16 13:48:52,2016-02-16 14:00:29,2,-73.949119567871094,40.785259246826172,-73.946945190429688,40.795745849609375,N,697 +id0217206,2,2016-03-24 21:47:04,2016-03-24 21:56:07,1,-73.97509765625,40.754638671875,-73.995552062988281,40.735889434814453,N,543 +id0249249,1,2016-01-20 01:22:11,2016-01-20 01:25:42,1,-73.984695434570313,40.758468627929687,-73.992485046386719,40.744945526123047,N,211 +id3129705,2,2016-01-06 00:20:48,2016-01-06 00:24:43,1,-73.97271728515625,40.7493896484375,-73.967117309570313,40.756618499755859,N,235 +id1556806,1,2016-02-03 07:23:38,2016-02-03 07:35:43,1,-73.987319946289062,40.768505096435547,-73.974090576171875,40.75982666015625,N,725 +id2823249,2,2016-04-12 19:57:30,2016-04-12 20:10:34,1,-73.985054016113281,40.753280639648438,-73.990921020507812,40.770915985107422,N,784 +id1937747,2,2016-03-08 07:36:06,2016-03-08 07:40:08,6,-73.993133544921875,40.767856597900391,-73.983016967773437,40.767745971679688,N,242 +id1175263,1,2016-04-16 17:17:56,2016-04-16 17:29:43,1,-73.978309631347656,40.753471374511719,-73.991584777832031,40.750041961669922,N,707 +id1999486,1,2016-05-22 15:55:22,2016-05-22 16:05:45,2,-73.982246398925781,40.762218475341797,-73.995750427246094,40.743991851806641,N,623 +id1503926,1,2016-02-11 21:10:20,2016-02-11 21:23:07,1,-73.997177124023438,40.722015380859375,-73.965217590332031,40.716880798339844,N,767 +id3885431,1,2016-03-02 23:41:50,2016-03-03 00:10:43,2,-73.788261413574219,40.647361755371094,-74.0074462890625,40.577190399169922,N,1733 +id2116614,2,2016-04-04 19:14:50,2016-04-04 19:17:40,1,-73.97509765625,40.765121459960938,-73.970748901367188,40.760589599609375,N,170 +id0704699,1,2016-02-16 15:51:08,2016-02-16 16:01:14,1,-73.991043090820313,40.744915008544922,-73.979621887207031,40.760604858398438,N,606 +id0909228,1,2016-05-08 15:02:28,2016-05-08 15:17:54,1,-73.988510131835938,40.742935180664062,-74.0106201171875,40.723506927490234,Y,926 +id0846940,2,2016-05-09 14:07:50,2016-05-09 14:32:38,1,-74.002937316894531,40.728321075439453,-73.975227355957031,40.744518280029297,N,1488 +id2584470,1,2016-06-10 00:51:41,2016-06-10 01:07:31,1,-74.000389099121094,40.732421875,-73.9554443359375,40.765743255615234,N,950 +id1936858,1,2016-02-02 18:16:05,2016-02-02 18:18:47,1,-73.968292236328125,40.796787261962891,-73.962257385253906,40.802261352539063,N,162 +id2702727,1,2016-03-04 19:58:36,2016-03-04 20:07:52,1,-74.00677490234375,40.716182708740234,-73.992530822753906,40.724071502685547,N,556 +id1074936,1,2016-05-29 23:55:03,2016-05-30 00:00:21,1,-73.971923828125,40.747356414794922,-73.979995727539063,40.733524322509766,N,318 +id1613182,2,2016-02-25 21:36:30,2016-02-25 21:56:09,1,-74.005668640136719,40.717796325683594,-73.972053527832031,40.747325897216797,N,1179 +id2310579,1,2016-01-22 11:11:14,2016-01-22 11:37:41,1,-74.002891540527344,40.744777679443359,-73.963638305664063,40.765777587890625,N,1587 +id3783123,2,2016-01-25 17:06:05,2016-01-25 17:32:20,5,-73.87091064453125,40.773818969726563,-73.940963745117187,40.815910339355469,N,1575 +id1979413,2,2016-06-26 18:35:51,2016-06-26 18:46:21,5,-74.005500793457031,40.709388732910156,-73.980522155761719,40.721790313720703,N,630 +id0567555,2,2016-01-13 22:37:39,2016-01-13 22:53:45,3,-73.9788818359375,40.723960876464844,-73.942062377929688,40.795391082763672,N,966 +id2034134,1,2016-01-26 10:10:07,2016-01-26 10:18:40,1,-74.006202697753906,40.734130859375,-73.994430541992188,40.736396789550781,N,513 +id3152592,2,2016-02-25 12:25:30,2016-02-25 12:30:11,2,-73.988739013671875,40.751857757568359,-73.983734130859375,40.752861022949219,N,281 +id0856966,2,2016-04-25 10:50:04,2016-04-25 11:04:37,1,-73.990303039550781,40.7567138671875,-73.956695556640625,40.76800537109375,N,873 +id2235544,1,2016-01-12 21:53:05,2016-01-12 21:57:01,1,-73.944412231445313,40.714733123779297,-73.94482421875,40.7255859375,N,236 +id1623771,2,2016-03-10 11:33:42,2016-03-10 11:51:11,1,-74.000923156738281,40.731853485107422,-73.981727600097656,40.74945068359375,N,1049 +id3234283,2,2016-03-21 07:38:45,2016-03-21 07:43:37,1,-73.947273254394531,40.779918670654297,-73.955863952636719,40.779613494873047,N,292 +id1559226,2,2016-06-04 16:50:24,2016-06-04 17:11:57,1,-74.015754699707031,40.710884094238281,-73.978919982910156,40.75048828125,N,1293 +id0761430,2,2016-06-05 21:12:30,2016-06-05 21:19:20,2,-73.986099243164062,40.762100219726562,-73.968643188476562,40.756000518798828,N,410 +id1174904,2,2016-02-20 21:20:40,2016-02-20 21:23:19,5,-73.971412658691406,40.750911712646484,-73.976692199707031,40.743759155273438,N,159 +id2357219,2,2016-06-08 21:29:57,2016-06-08 21:48:45,1,-73.985321044921875,40.758026123046875,-74.017196655273438,40.711570739746094,N,1128 +id2560160,2,2016-02-14 10:59:09,2016-02-14 11:06:03,1,-73.991676330566406,40.737827301025391,-73.979690551757812,40.760883331298828,N,414 +id0244490,2,2016-03-12 09:04:16,2016-03-12 09:26:15,1,-73.985511779785156,40.760238647460937,-74.011474609375,40.714683532714844,N,1319 +id0476703,1,2016-03-01 16:31:02,2016-03-01 16:42:23,1,-73.9522705078125,40.824203491210938,-73.938041687011719,40.855506896972656,N,681 +id0205616,2,2016-06-20 21:03:07,2016-06-20 21:06:03,1,-73.959510803222656,40.782688140869141,-73.968795776367187,40.770042419433594,N,176 +id0015649,2,2016-01-22 23:11:19,2016-01-22 23:21:06,2,-73.978340148925781,40.745441436767578,-73.987266540527344,40.755672454833984,N,587 +id1622754,2,2016-02-01 20:46:25,2016-02-01 21:20:55,1,-73.982498168945313,40.747810363769531,-74.009658813476562,40.707855224609375,N,2070 +id3523588,1,2016-06-13 20:56:29,2016-06-13 21:11:50,1,-73.783622741699219,40.648647308349609,-73.848731994628906,40.738868713378906,N,921 +id0477521,1,2016-02-19 04:03:38,2016-02-19 04:12:42,1,-74.006431579589844,40.733543395996094,-73.97808837890625,40.736488342285156,N,544 +id0132454,2,2016-05-09 14:08:02,2016-05-09 14:30:42,1,-73.976058959960937,40.744724273681641,-74.009780883789063,40.722320556640625,N,1360 +id0331003,2,2016-04-15 07:38:09,2016-04-15 07:41:22,1,-73.9638671875,40.773738861083984,-73.956497192382812,40.784030914306641,N,193 +id1381183,1,2016-02-17 07:30:21,2016-02-17 07:38:24,1,-73.964630126953125,40.769718170166016,-73.946868896484375,40.771984100341797,N,483 +id3757027,2,2016-06-05 22:54:49,2016-06-05 23:06:04,1,-73.975456237792969,40.752559661865234,-74.010498046875,40.704570770263672,N,675 +id3843842,2,2016-06-28 23:31:21,2016-06-28 23:46:11,1,-73.981468200683594,40.778800964355469,-73.9405517578125,40.814399719238281,N,890 +id1937195,1,2016-06-16 08:21:41,2016-06-16 08:44:28,1,-74.009422302246094,40.712821960449219,-73.981346130371094,40.753810882568359,N,1367 +id1111113,2,2016-02-01 14:47:10,2016-02-01 15:18:57,1,-74.003921508789063,40.742221832275391,-73.957290649414063,40.805210113525391,N,1907 +id2463093,2,2016-01-17 00:55:08,2016-01-17 01:13:36,1,-74.000350952148438,40.730110168457031,-73.9781494140625,40.780471801757813,N,1108 +id3514394,2,2016-03-31 12:06:41,2016-03-31 12:16:01,1,-73.969367980957031,40.763267517089844,-73.952201843261719,40.78472900390625,N,560 +id0736521,1,2016-04-16 01:23:19,2016-04-16 01:29:16,2,-73.956977844238281,40.714599609375,-73.953636169433594,40.728885650634766,N,357 +id0153673,2,2016-05-25 08:00:03,2016-05-25 08:10:07,6,-74.007858276367188,40.705295562744141,-74.013481140136719,40.715263366699219,N,604 +id0412621,1,2016-04-09 20:41:09,2016-04-09 20:57:42,1,-73.979293823242187,40.763755798339844,-73.988578796386719,40.731269836425781,N,993 +id2084158,1,2016-03-08 11:54:17,2016-03-08 12:12:41,1,-73.985122680664062,40.741722106933594,-74.015472412109375,40.711505889892578,N,1104 +id0366084,2,2016-05-08 00:44:07,2016-05-08 00:50:42,1,-73.993309020996094,40.750190734863281,-74.004997253417969,40.742229461669922,N,395 +id3823253,2,2016-05-31 13:40:11,2016-05-31 13:53:30,1,-73.957481384277344,40.761531829833984,-73.870582580566406,40.773880004882812,N,799 +id2187774,2,2016-05-19 18:01:33,2016-05-19 18:32:43,3,-74.003005981445313,40.708248138427734,-73.959190368652344,40.720710754394531,N,1870 +id0564872,2,2016-01-20 19:23:52,2016-01-20 19:53:22,2,-73.992668151855469,40.75408935546875,-73.973182678222656,40.693260192871094,N,1770 +id2352567,1,2016-04-12 20:44:03,2016-04-12 20:58:29,1,-73.978263854980469,40.76287841796875,-73.965690612792969,40.800682067871094,N,866 +id0554991,1,2016-06-29 19:57:51,2016-06-29 20:08:17,1,-73.982948303222656,40.767917633056641,-73.965995788574219,40.768501281738281,N,626 +id2569084,1,2016-02-05 19:31:09,2016-02-05 19:39:43,1,-73.982437133789062,40.740314483642578,-73.960365295410156,40.761810302734375,N,514 +id2807512,2,2016-06-30 16:32:09,2016-06-30 17:09:35,5,-73.977302551269531,40.753761291503906,-74.006820678710938,40.730991363525391,N,2246 +id1518507,1,2016-04-21 18:57:59,2016-04-21 19:19:40,1,-74.005149841308594,40.75140380859375,-73.9677734375,40.766010284423828,N,1301 +id2305320,2,2016-03-03 21:41:01,2016-03-03 21:49:12,1,-73.997596740722656,40.756378173828125,-73.989280700683594,40.745510101318359,N,491 +id3823668,2,2016-04-25 15:59:02,2016-04-25 16:03:18,3,-73.949989318847656,40.789749145507812,-73.938766479492187,40.80474853515625,N,256 +id0037351,2,2016-06-08 19:16:48,2016-06-08 19:42:49,1,-73.953536987304687,40.766750335693359,-73.9951171875,40.743980407714844,N,1561 +id0573653,1,2016-04-20 18:18:08,2016-04-20 18:36:01,1,-73.955802917480469,40.764007568359375,-73.975364685058594,40.752330780029297,N,1073 +id1388849,2,2016-05-08 11:28:06,2016-05-08 11:53:05,1,-73.993400573730469,40.749710083007812,-73.998153686523438,40.720138549804687,N,1499 +id1000147,2,2016-06-10 15:55:33,2016-06-10 15:59:22,1,-73.997360229492188,40.746761322021484,-73.994476318359375,40.747520446777344,N,229 +id3033963,2,2016-01-12 00:29:11,2016-01-12 00:44:44,1,-73.937950134277344,40.812549591064453,-73.996070861816406,40.763950347900391,N,933 +id3164647,1,2016-03-09 10:40:15,2016-03-09 10:48:12,2,-73.991668701171875,40.7496337890625,-73.977272033691406,40.750690460205078,N,477 +id3177384,2,2016-06-13 18:15:52,2016-06-13 18:26:38,6,-73.970428466796875,40.749130249023438,-73.988571166992188,40.748668670654297,N,646 +id2553221,1,2016-02-16 23:05:23,2016-02-16 23:21:52,2,-73.994224548339844,40.726425170898437,-73.964111328125,40.773658752441406,N,989 +id1904594,1,2016-02-04 12:25:00,2016-02-04 12:35:19,4,-73.991058349609375,40.755531311035156,-73.987197875976563,40.759254455566406,N,619 +id1054281,2,2016-01-10 13:42:59,2016-01-10 13:53:52,1,-73.991233825683594,40.750007629394531,-73.987701416015625,40.760124206542969,N,653 +id3763686,2,2016-05-22 11:48:15,2016-05-22 12:05:21,1,-73.987594604492187,40.72161865234375,-73.96612548828125,40.761993408203125,N,1026 +id1696276,1,2016-01-05 18:59:47,2016-01-05 19:10:29,3,-73.972236633300781,40.759552001953125,-73.953475952148438,40.777011871337891,N,642 +id3908859,1,2016-03-05 00:01:24,2016-03-05 00:18:07,2,-73.963859558105469,40.761344909667969,-73.909042358398438,40.771663665771484,N,1003 +id1819147,2,2016-01-08 15:32:39,2016-01-08 15:42:49,1,-73.98553466796875,40.767837524414063,-73.998985290527344,40.753700256347656,N,610 +id3454179,1,2016-02-29 10:38:48,2016-02-29 11:10:33,1,-73.863548278808594,40.769809722900391,-73.972930908203125,40.749214172363281,N,1905 +id0350661,1,2016-05-22 00:30:12,2016-05-22 01:02:04,2,-73.949905395507813,40.780704498291016,-74.005279541015625,40.733341217041016,N,1912 +id2426559,1,2016-02-15 19:01:21,2016-02-15 19:13:05,2,-74.005882263183594,40.735877990722656,-73.999641418457031,40.723503112792969,N,704 +id1132903,1,2016-05-11 11:15:39,2016-05-11 11:48:35,1,-73.960227966308594,40.781253814697266,-73.975593566894531,40.758548736572266,N,1976 +id2920235,2,2016-06-05 01:00:29,2016-06-05 01:08:58,1,-74.005867004394531,40.740119934082031,-74.004020690917969,40.720890045166016,N,509 +id2171557,2,2016-03-13 14:48:46,2016-03-13 15:01:05,4,-73.960693359375,40.772491455078125,-73.984817504882812,40.736499786376953,N,739 +id2826811,2,2016-04-10 21:52:18,2016-04-10 22:02:53,1,-73.982154846191406,40.731861114501953,-73.951553344726563,40.770977020263672,N,635 +id1929994,1,2016-05-26 11:46:48,2016-05-26 11:55:32,1,-73.967178344726562,40.755916595458984,-73.959197998046875,40.763431549072266,N,524 +id3614343,1,2016-06-16 23:42:22,2016-06-16 23:47:34,1,-73.985198974609375,40.747779846191406,-73.979049682617188,40.741264343261719,N,312 +id0245800,2,2016-05-12 16:58:51,2016-05-12 17:23:41,5,-73.974441528320312,40.778026580810547,-73.986381530761719,40.753509521484375,N,1490 +id1212273,1,2016-02-14 17:34:48,2016-02-14 17:40:34,2,-73.981170654296875,40.720836639404297,-73.986167907714844,40.730178833007813,N,346 +id3404596,2,2016-03-02 08:56:29,2016-03-02 09:05:46,6,-73.989250183105469,40.756259918212891,-73.972129821777344,40.763408660888672,N,557 +id3171288,2,2016-03-20 20:31:32,2016-03-20 20:33:04,1,-73.98486328125,40.732551574707031,-73.988899230957031,40.726951599121094,N,92 +id2816240,1,2016-04-17 08:03:20,2016-04-17 08:17:04,1,-73.969573974609375,40.797863006591797,-73.99505615234375,40.749858856201172,N,824 +id3505430,1,2016-06-23 20:29:55,2016-06-23 20:38:57,1,-73.991043090820313,40.750537872314453,-74.004219055175781,40.720878601074219,N,542 +id0937319,1,2016-02-09 23:27:59,2016-02-09 23:30:18,1,-73.962776184082031,40.775493621826172,-73.951087951660156,40.786056518554688,N,139 +id1354053,1,2016-04-01 16:30:42,2016-04-01 16:33:12,2,-73.987167358398438,40.721080780029297,-73.982513427734375,40.719631195068359,N,150 +id3552614,1,2016-02-26 19:05:04,2016-02-26 19:21:06,1,-73.991920471191406,40.764606475830078,-73.95440673828125,40.767292022705078,N,962 +id0194083,2,2016-05-22 21:42:04,2016-05-22 22:00:50,4,-73.990119934082031,40.714168548583984,-74.006317138671875,40.733669281005859,N,1126 +id3522352,1,2016-03-16 00:24:02,2016-03-16 00:34:48,1,-74.001350402832031,40.731273651123047,-73.980735778808594,40.770858764648438,N,646 +id1951436,2,2016-06-06 20:02:51,2016-06-06 20:27:37,2,-74.007606506347656,40.712688446044922,-73.949699401855469,40.678680419921875,N,1486 +id2611097,2,2016-05-27 14:35:42,2016-05-27 15:04:46,1,-73.95526123046875,40.768741607666016,-73.988227844238281,40.747470855712891,N,1744 +id2623219,1,2016-06-17 08:38:56,2016-06-17 08:50:27,1,-73.982513427734375,40.762519836425781,-73.981925964355469,40.767719268798828,N,691 +id3617577,2,2016-03-26 18:27:52,2016-03-26 18:33:53,5,-73.954826354980469,40.767421722412109,-73.969924926757813,40.762302398681641,N,361 +id0808984,2,2016-04-26 19:52:52,2016-04-26 20:02:02,1,-73.967811584472656,40.762859344482422,-73.976600646972656,40.782333374023438,N,550 +id3499387,1,2016-01-25 19:45:12,2016-01-25 19:54:52,1,-73.786720275878906,40.647041320800781,-73.786720275878906,40.647041320800781,N,580 +id0265651,1,2016-06-22 16:46:14,2016-06-22 16:49:58,2,-73.986221313476563,40.747108459472656,-73.991012573242188,40.739646911621094,N,224 +id0633954,1,2016-04-06 18:10:09,2016-04-06 18:42:34,1,-73.967483520507813,40.762683868408203,-74.009376525878906,40.746673583984375,N,1945 +id1046492,2,2016-06-30 16:44:29,2016-06-30 16:53:16,2,-73.955177307128906,40.7830810546875,-73.969161987304688,40.7935791015625,N,527 +id3401416,2,2016-02-14 08:39:39,2016-02-14 08:49:29,1,-73.969413757324219,40.762699127197266,-73.994361877441406,40.732151031494141,N,590 +id1213658,2,2016-05-31 21:15:06,2016-05-31 21:20:19,1,-73.980491638183594,40.751026153564453,-73.972023010253906,40.762790679931641,N,313 +id0080798,2,2016-06-20 20:16:44,2016-06-20 20:26:09,1,-74.01513671875,40.714187622070313,-73.975395202636719,40.717613220214844,N,565 +id2403400,2,2016-04-13 11:27:18,2016-04-13 11:33:39,2,-73.96258544921875,40.767173767089844,-73.954833984375,40.780036926269531,N,381 +id3107458,1,2016-06-23 00:09:36,2016-06-23 00:15:01,1,-74.001396179199219,40.730934143066406,-73.994010925292969,40.746223449707031,N,325 +id2833082,1,2016-06-14 09:03:49,2016-06-14 09:49:32,1,-73.992584228515625,40.737293243408203,-73.776763916015625,40.644832611083984,N,2743 +id2584444,1,2016-04-09 18:03:15,2016-04-09 18:11:41,2,-73.955642700195312,40.809291839599609,-73.972404479980469,40.786346435546875,N,506 +id2523325,2,2016-05-25 13:42:28,2016-05-25 13:46:59,1,-73.973907470703125,40.793899536132812,-73.966766357421875,40.789081573486328,N,271 +id3658881,2,2016-02-23 12:16:42,2016-02-23 12:51:31,2,-73.862693786621094,40.768989562988281,-73.988670349121094,40.693691253662109,N,2089 +id3084276,2,2016-03-18 19:48:09,2016-03-18 19:52:56,6,-73.977264404296875,40.76434326171875,-73.982261657714844,40.774269104003906,N,287 +id1600477,1,2016-05-22 21:58:20,2016-05-22 22:11:50,1,-73.935806274414062,40.849971771240234,-73.923553466796875,40.846935272216797,N,810 +id1890300,2,2016-01-13 17:57:24,2016-01-13 18:07:29,1,-74.004531860351563,40.733310699462891,-74.007789611816406,40.703048706054688,N,605 +id0757676,1,2016-05-25 08:45:45,2016-05-25 08:49:05,1,-73.955909729003906,40.787883758544922,-73.958038330078125,40.782306671142578,N,200 +id1818483,1,2016-05-11 00:42:26,2016-05-11 00:49:27,1,-73.987037658691406,40.739223480224609,-73.977684020996094,40.725757598876953,N,421 +id2652837,1,2016-04-19 16:47:51,2016-04-19 16:54:46,3,-74.005714416503906,40.736736297607422,-74.002670288085937,40.748725891113281,N,415 +id1456458,2,2016-01-15 18:42:36,2016-01-15 18:49:06,1,-73.950141906738281,40.822021484375,-73.949943542480469,40.807960510253906,N,390 +id2704068,2,2016-03-05 23:39:44,2016-03-06 00:05:47,1,-73.972358703613281,40.765220642089844,-73.955238342285156,40.720088958740234,N,1563 +id3955115,2,2016-03-24 17:03:20,2016-03-24 17:08:38,1,-73.962669372558594,40.769718170166016,-73.962593078613281,40.764858245849609,N,318 +id0635524,2,2016-04-04 14:09:05,2016-04-04 14:33:20,1,-73.991767883300781,40.749179840087891,-73.968421936035156,40.760719299316406,N,1455 +id0711116,2,2016-01-17 22:47:02,2016-01-17 22:50:09,5,-73.986778259277344,40.72119140625,-73.981338500976563,40.728988647460938,N,187 +id1948930,2,2016-04-23 18:10:51,2016-04-23 18:15:03,1,-73.949966430664063,40.771240234375,-73.961700439453125,40.770290374755859,N,252 +id3480123,1,2016-01-26 17:22:28,2016-01-26 17:50:27,1,-73.986915588378906,40.758819580078125,-73.9730224609375,40.764877319335938,N,1679 +id2072841,2,2016-06-07 10:20:58,2016-06-07 10:43:56,1,-73.979278564453125,40.762481689453125,-73.991592407226562,40.750278472900391,N,1378 +id3633511,1,2016-05-09 23:05:32,2016-05-09 23:17:00,1,-73.956413269042969,40.771327972412109,-73.979568481445313,40.733058929443359,N,688 +id2827889,1,2016-03-19 19:07:20,2016-03-19 19:31:07,2,-73.994804382324219,40.729488372802734,-73.984184265136719,40.763149261474609,N,1427 +id0556653,2,2016-05-30 13:33:07,2016-05-30 13:41:03,2,-74.000747680664062,40.718280792236328,-73.996139526367188,40.690948486328125,N,476 +id0318778,1,2016-02-17 00:07:44,2016-02-17 00:50:30,1,-73.782386779785156,40.644512176513672,-73.982048034667969,40.771957397460938,N,2566 +id1922478,2,2016-04-05 13:18:31,2016-04-05 13:25:48,1,-73.954444885253906,40.821220397949219,-73.952789306640625,40.810791015625,N,437 +id1340693,1,2016-01-08 11:54:41,2016-01-08 11:58:10,1,-73.984970092773438,40.774242401123047,-73.980430603027344,40.780368804931641,N,209 +id0461973,2,2016-02-11 12:08:38,2016-02-11 12:46:54,1,-73.988922119140625,40.736831665039062,-73.982688903808594,40.776920318603516,N,2296 +id1374613,1,2016-04-20 21:31:30,2016-04-20 21:53:25,1,-73.997718811035156,40.740989685058594,-73.956230163574219,40.784477233886719,N,1315 +id0620947,1,2016-06-04 17:36:32,2016-06-04 17:46:16,2,-73.955215454101563,40.785854339599609,-73.954391479492188,40.8009033203125,N,584 +id0871223,1,2016-03-14 07:55:32,2016-03-14 08:08:48,1,-73.953887939453125,40.766952514648438,-73.953849792480469,40.787883758544922,N,796 +id3631567,1,2016-05-29 01:20:07,2016-05-29 01:41:39,2,-73.982398986816406,40.77691650390625,-73.938682556152344,40.833747863769531,N,1292 +id0931156,1,2016-06-21 08:22:21,2016-06-21 08:36:16,1,-73.98651123046875,40.661102294921875,-73.970573425292969,40.672435760498047,N,835 +id3307673,2,2016-03-22 06:31:31,2016-03-22 06:37:09,5,-73.979820251464844,40.740699768066406,-73.992057800292969,40.749248504638672,N,338 +id1203658,2,2016-05-21 14:26:38,2016-05-21 14:45:43,1,-74.009193420410156,40.713348388671875,-74.004470825195312,40.741561889648438,N,1145 +id2695306,1,2016-05-01 02:12:19,2016-05-01 02:15:53,1,-73.981117248535156,40.744426727294922,-73.975692749023438,40.751354217529297,N,214 +id0825711,2,2016-06-27 22:39:35,2016-06-27 22:52:47,1,-73.948631286621094,40.781517028808594,-73.973228454589844,40.783538818359375,N,792 +id0606164,1,2016-03-27 20:05:31,2016-03-27 20:32:58,1,-73.978103637695313,40.752277374267578,-73.993583679199219,40.696128845214844,N,1647 +id0047550,1,2016-05-17 17:10:50,2016-05-17 17:33:07,1,-73.976814270019531,40.750450134277344,-73.985443115234375,40.763332366943359,N,1337 +id3770788,2,2016-03-18 19:52:22,2016-03-18 19:56:33,1,-73.963386535644531,40.757957458496094,-73.953262329101563,40.771598815917969,N,251 +id0767781,1,2016-05-09 07:19:05,2016-05-09 07:28:54,1,-74.000221252441406,40.732818603515625,-73.985038757324219,40.760276794433594,N,589 +id1179349,1,2016-04-11 09:31:27,2016-04-11 09:47:43,2,-73.9716796875,40.755416870117187,-73.9871826171875,40.760387420654297,N,976 +id0560934,1,2016-06-13 14:32:01,2016-06-13 15:04:40,1,-73.870697021484375,40.773597717285156,-73.974784851074219,40.752140045166016,N,1959 +id0972813,2,2016-06-10 09:22:52,2016-06-10 09:45:43,1,-73.977668762207031,40.752170562744141,-73.871040344238281,40.774051666259766,N,1371 +id1201454,2,2016-01-03 12:20:24,2016-01-03 12:23:23,1,-73.972389221191406,40.745262145996094,-73.963409423828125,40.757495880126953,N,179 +id0744544,1,2016-01-22 22:44:56,2016-01-22 22:54:52,1,-73.986839294433594,40.760948181152344,-73.959007263183594,40.763813018798828,N,596 +id0923913,2,2016-06-03 16:22:45,2016-06-03 16:33:46,1,-73.981422424316406,40.768268585205078,-73.981040954589844,40.782150268554688,N,661 +id1761032,1,2016-04-22 09:11:12,2016-04-22 09:44:58,1,-73.944717407226563,40.779270172119141,-73.980003356933594,40.745811462402344,N,2026 +id1554407,2,2016-01-20 18:32:18,2016-01-20 18:47:40,2,-73.996665954589844,40.742725372314453,-73.985305786132812,40.7283935546875,N,922 +id2438420,1,2016-04-21 18:59:28,2016-04-21 19:05:37,1,-73.966255187988281,40.754066467285156,-73.957305908203125,40.768497467041016,N,369 +id1298927,2,2016-04-03 20:50:59,2016-04-03 20:58:45,1,-73.978813171386719,40.758739471435547,-73.982818603515625,40.742061614990234,N,466 +id1256991,2,2016-02-20 00:59:10,2016-02-20 01:06:31,1,-73.989120483398437,40.748626708984375,-73.982872009277344,40.746109008789063,N,441 +id0983980,1,2016-06-04 18:24:14,2016-06-04 18:37:25,1,-73.9730224609375,40.757747650146484,-73.983016967773437,40.761222839355469,N,791 +id2456902,1,2016-03-29 07:14:54,2016-03-29 07:27:59,1,-74.008369445800781,40.722118377685547,-73.976554870605469,40.751750946044922,N,785 +id1714757,1,2016-04-03 23:16:41,2016-04-03 23:31:28,4,-73.986686706542969,40.758407592773438,-74.005043029785156,40.723720550537109,N,887 +id1014588,1,2016-05-14 21:52:17,2016-05-14 22:21:54,4,-73.980010986328125,40.726711273193359,-74.010452270507813,40.713836669921875,N,1777 +id1003405,2,2016-06-02 14:32:06,2016-06-02 14:46:23,6,-74.00103759765625,40.718700408935547,-74.00775146484375,40.720142364501953,N,857 +id3885767,1,2016-02-17 17:20:01,2016-02-17 17:51:04,2,-73.966232299804687,40.768146514892578,-73.948501586914062,40.80902099609375,N,1863 +id2022146,2,2016-01-25 17:51:57,2016-01-25 18:06:28,1,-73.969833374023438,40.750679016113281,-73.940437316894531,40.808948516845703,N,871 +id0885168,2,2016-06-02 21:44:30,2016-06-02 21:59:57,1,-73.973533630371094,40.751678466796875,-73.948822021484375,40.773868560791016,N,927 +id3027389,1,2016-05-06 19:54:25,2016-05-06 19:59:28,1,-73.968772888183594,40.761249542236328,-73.97833251953125,40.763401031494141,N,303 +id2772572,1,2016-06-11 01:32:57,2016-06-11 01:46:11,1,-73.950469970703125,40.779586791992188,-73.89605712890625,40.816463470458984,N,794 +id3025140,2,2016-05-27 14:46:01,2016-05-27 14:50:51,2,-73.947006225585938,40.78009033203125,-73.946983337402344,40.771881103515625,N,290 +id2862186,2,2016-02-23 08:00:03,2016-02-23 08:23:26,2,-73.955810546875,40.782211303710938,-73.865219116210938,40.770698547363281,N,1403 +id1309210,1,2016-01-26 10:50:39,2016-01-26 11:03:46,1,-74.010551452636719,40.714065551757813,-74.005325317382812,40.719940185546875,N,787 +id1928326,1,2016-05-01 03:54:11,2016-05-01 03:58:07,1,-73.985542297363281,40.752658843994141,-73.996002197265625,40.758991241455078,N,236 +id3697489,1,2016-01-13 13:53:29,2016-01-13 14:08:21,1,-73.948982238769531,40.781578063964844,-73.982345581054687,40.778923034667969,Y,892 +id1790044,2,2016-06-17 07:47:01,2016-06-17 07:59:29,5,-73.993881225585937,40.731231689453125,-73.973052978515625,40.758049011230469,N,748 +id1887303,2,2016-01-05 21:25:54,2016-01-05 21:35:32,1,-73.9974365234375,40.719398498535156,-73.981353759765625,40.724800109863281,N,578 +id1978546,2,2016-03-06 14:34:05,2016-03-06 14:45:09,1,-73.962173461914063,40.77899169921875,-73.98809814453125,40.776996612548828,N,664 +id1216848,2,2016-04-17 21:37:29,2016-04-17 21:56:37,5,-73.984550476074219,40.760948181152344,-73.986473083496094,40.722221374511719,N,1148 +id1088749,1,2016-05-16 12:18:47,2016-05-16 12:33:52,1,-73.968292236328125,40.762252807617188,-73.988014221191406,40.741203308105469,N,905 +id1043917,2,2016-06-16 20:26:03,2016-06-16 20:52:05,1,-74.013778686523438,40.713977813720703,-73.957328796386719,40.720218658447266,N,1562 +id3923685,1,2016-02-07 01:50:08,2016-02-07 02:01:50,1,-73.98590087890625,40.746982574462891,-74.005279541015625,40.715629577636719,N,702 +id1683694,1,2016-05-07 23:43:48,2016-05-07 23:50:56,3,-73.988250732421875,40.727832794189453,-73.97607421875,40.740272521972656,N,428 +id1715659,2,2016-05-24 20:22:42,2016-05-24 20:28:34,3,-73.984870910644531,40.743118286132812,-73.999488830566406,40.737659454345703,N,352 +id0136242,1,2016-01-11 10:58:10,2016-01-11 11:10:02,1,-73.965507507324219,40.759128570556641,-73.988037109375,40.76043701171875,N,712 +id0408653,1,2016-03-10 22:43:50,2016-03-10 23:07:28,1,-73.983604431152344,40.726799011230469,-73.917610168457031,40.705146789550781,N,1418 +id2995631,2,2016-06-28 18:07:32,2016-06-28 18:20:08,1,-73.960845947265625,40.781051635742188,-73.974586486816406,40.764945983886719,N,756 +id2024551,2,2016-02-05 09:33:40,2016-02-05 09:50:57,1,-73.991836547851563,40.731193542480469,-73.984970092773438,40.747817993164063,N,1037 +id0000967,2,2016-02-27 15:30:56,2016-02-27 15:35:55,1,-73.972160339355469,40.755924224853516,-73.982284545898437,40.757041931152344,N,299 +id2674024,1,2016-03-26 14:43:55,2016-03-26 15:07:02,2,-73.873001098632813,40.774101257324219,-73.972221374511719,40.756961822509766,N,1387 +id2062480,2,2016-02-04 20:38:48,2016-02-04 21:10:09,1,-73.977882385253906,40.726005554199219,-73.988739013671875,40.774238586425781,N,1881 +id2039685,1,2016-03-21 22:02:35,2016-03-21 22:10:20,1,-73.963088989257813,40.774589538574219,-73.983055114746094,40.78411865234375,N,465 +id1816342,2,2016-01-19 17:56:19,2016-01-19 18:11:37,1,-73.973793029785156,40.756072998046875,-73.989669799804688,40.752235412597656,N,918 +id1537510,2,2016-03-26 08:19:39,2016-03-26 08:31:21,5,-73.977752685546875,40.745517730712891,-73.987007141113281,40.759487152099609,N,702 +id3382236,2,2016-01-23 10:38:43,2016-01-23 10:44:15,5,-73.97528076171875,40.760990142822266,-73.963180541992188,40.76776123046875,N,332 +id0984462,1,2016-03-09 14:47:00,2016-03-09 14:56:05,1,-73.992439270019531,40.745342254638672,-73.986434936523438,40.739830017089844,N,545 +id3041176,2,2016-05-13 01:30:05,2016-05-13 01:42:31,2,-74.000411987304688,40.730121612548828,-73.983413696289062,40.76593017578125,N,746 +id3358294,2,2016-02-23 16:35:23,2016-02-23 17:02:45,1,-73.981033325195313,40.733535766601563,-73.953605651855469,40.771003723144531,N,1642 +id0129235,1,2016-03-05 13:05:48,2016-03-05 13:16:56,2,-73.972610473632812,40.677421569824219,-73.972923278808594,40.652584075927734,N,668 +id0965422,2,2016-06-16 17:05:03,2016-06-16 17:12:14,2,-73.962287902832031,40.759101867675781,-73.955841064453125,40.77545166015625,N,431 +id0183040,2,2016-06-04 23:41:59,2016-06-04 23:50:08,2,-73.99432373046875,40.750621795654297,-73.985969543457031,40.767753601074219,N,489 +id2699058,1,2016-03-24 19:42:31,2016-03-24 19:54:28,1,-74.005363464355469,40.728481292724609,-73.987548828125,40.736675262451172,N,717 +id3967576,1,2016-04-07 04:09:50,2016-04-07 04:17:09,1,-73.996437072753906,40.737827301025391,-73.988090515136719,40.768878936767578,N,439 +id1497574,2,2016-03-01 18:42:04,2016-03-01 18:46:30,6,-73.953392028808594,40.782539367675781,-73.949165344238281,40.776885986328125,N,266 +id3147615,2,2016-05-10 16:57:51,2016-05-10 17:04:05,3,-73.986122131347656,40.740379333496094,-73.972587585449219,40.746719360351563,N,374 +id3765697,2,2016-02-16 19:57:01,2016-02-16 20:09:51,2,-73.989448547363281,40.665561676025391,-74.018447875976563,40.642749786376953,N,770 +id3461680,2,2016-06-01 12:03:54,2016-06-01 12:36:32,1,-73.993919372558594,40.745681762695313,-73.873199462890625,40.774360656738281,N,1958 +id3855917,2,2016-05-15 01:15:28,2016-05-15 01:24:53,1,-74.006591796875,40.744258880615234,-73.994331359863281,40.732120513916016,N,565 +id1920009,1,2016-03-07 18:56:40,2016-03-07 19:14:48,1,-73.990364074707031,40.752483367919922,-73.958587646484375,40.768791198730469,N,1088 +id3581820,2,2016-06-26 01:28:01,2016-06-26 01:38:20,1,-73.991386413574219,40.749881744384766,-73.964080810546875,40.764579772949219,N,619 +id3769681,1,2016-03-18 21:38:27,2016-03-18 21:46:16,2,-73.979248046875,40.771987915039063,-73.954498291015625,40.782428741455078,N,469 +id1122575,1,2016-02-19 11:26:47,2016-02-19 11:28:14,3,-73.957283020019531,40.774070739746094,-73.957229614257813,40.770275115966797,N,87 +id3834849,1,2016-04-26 12:34:46,2016-04-26 12:43:25,1,-73.990272521972656,40.755970001220703,-73.979835510253906,40.762222290039063,N,519 +id0498324,1,2016-06-05 15:19:20,2016-06-05 15:31:51,1,-73.973075866699219,40.748771667480469,-73.977813720703125,40.754631042480469,N,751 +id2587992,1,2016-06-15 18:34:54,2016-06-15 19:15:46,1,-74.009361267089844,40.709075927734375,-73.949783325195313,40.772617340087891,N,2452 +id0801359,2,2016-04-23 23:31:56,2016-04-23 23:55:01,1,-73.993309020996094,40.757339477539063,-74.003807067871094,40.715618133544922,N,1385 +id2735670,2,2016-01-30 19:30:16,2016-01-30 19:33:49,6,-73.98529052734375,40.768470764160156,-73.986457824707031,40.762489318847656,N,213 +id2941300,2,2016-01-21 07:27:11,2016-01-21 07:34:10,1,-73.960922241210937,40.770034790039063,-73.969741821289063,40.758426666259766,N,419 +id3775412,2,2016-02-22 21:35:12,2016-02-22 21:40:35,1,-73.977432250976563,40.758651733398438,-73.988937377929687,40.757881164550781,N,323 +id3452332,2,2016-06-06 18:59:01,2016-06-06 19:10:03,1,-73.985336303710938,40.758499145507813,-73.987350463867188,40.741600036621094,N,662 +id2598729,2,2016-03-05 17:47:21,2016-03-05 17:51:53,1,-73.947532653808594,40.775341033935547,-73.945289611816406,40.785961151123047,N,272 +id2762003,2,2016-05-01 11:22:52,2016-05-01 11:32:27,5,-73.968612670898437,40.754661560058594,-73.983200073242187,40.722549438476563,N,575 +id3602048,1,2016-01-02 09:05:44,2016-01-02 09:21:55,1,-74.007377624511719,40.707904815673828,-73.963363647460937,40.775112152099609,N,971 +id0159709,2,2016-04-17 08:42:43,2016-04-17 08:46:30,1,-73.968940734863281,40.764907836914062,-73.964698791503906,40.760063171386719,N,227 +id0571618,1,2016-05-30 13:08:31,2016-05-30 13:15:25,2,-74.005287170410156,40.719158172607422,-74.01544189453125,40.714435577392578,N,414 +id1454947,1,2016-06-04 23:43:59,2016-06-04 23:51:34,1,-73.972557067871094,40.760135650634766,-73.986091613769531,40.762451171875,N,455 +id1447105,1,2016-02-01 14:43:00,2016-02-01 14:52:09,1,-73.974418640136719,40.749114990234375,-73.983451843261719,40.726383209228516,N,549 +id3914400,2,2016-03-30 08:31:21,2016-03-30 08:38:16,5,-73.983749389648438,40.780601501464844,-73.983917236328125,40.770401000976562,N,415 +id2824917,2,2016-06-30 18:23:16,2016-06-30 18:33:18,6,-74.001335144042969,40.731109619140625,-73.984222412109375,40.739295959472656,N,602 +id1922839,2,2016-02-03 18:49:39,2016-02-03 18:52:32,5,-74.008354187011719,40.721515655517578,-74.006668090820312,40.730831146240234,N,173 +id1517243,2,2016-04-28 19:34:42,2016-04-28 19:52:05,1,-73.977340698242188,40.749660491943359,-74.00225830078125,40.726451873779297,N,1043 +id3066170,1,2016-01-15 14:54:44,2016-01-15 14:59:42,1,-73.957107543945313,40.783290863037109,-73.95916748046875,40.775100708007813,N,298 +id1169619,1,2016-04-18 15:03:37,2016-04-18 15:20:36,4,-74.002883911132813,40.760433197021484,-73.9920654296875,40.748298645019531,N,1019 +id0944696,2,2016-06-20 17:25:41,2016-06-20 17:34:40,5,-74.008407592773438,40.707649230957031,-74.005851745605469,40.714710235595703,N,539 +id2047925,1,2016-06-22 15:52:57,2016-06-22 16:16:36,1,-73.986320495605469,40.755634307861328,-73.968475341796875,40.762069702148438,N,1419 +id3471092,2,2016-03-17 18:12:19,2016-03-17 18:37:18,6,-73.968803405761719,40.750301361083984,-73.952362060546875,40.776466369628906,N,1499 +id1766678,1,2016-01-10 00:01:33,2016-01-10 00:11:57,1,-73.993965148925781,40.760696411132813,-73.964622497558594,40.76416015625,N,624 +id2018005,2,2016-04-17 01:44:27,2016-04-17 02:24:31,1,-73.992408752441406,40.750526428222656,-73.971687316894531,40.631504058837891,N,2404 +id0770935,2,2016-06-02 18:55:05,2016-06-02 19:01:28,2,-73.964210510253906,40.764759063720703,-73.952079772949219,40.781528472900391,N,383 +id1437834,2,2016-05-03 10:28:30,2016-05-03 11:17:57,2,-73.8709716796875,40.773818969726563,-74.000717163085938,40.757560729980469,N,2967 +id2432732,2,2016-01-11 14:24:39,2016-01-11 14:29:52,1,-73.97216796875,40.753829956054688,-73.981887817382812,40.758171081542969,N,313 +id3077475,2,2016-04-09 18:27:40,2016-04-09 18:32:04,1,-74.001220703125,40.731311798095703,-73.99755859375,40.726127624511719,N,264 +id3263580,2,2016-05-21 12:46:46,2016-05-21 12:46:49,2,-73.782371520996094,40.648765563964844,-73.782371520996094,40.648746490478516,N,3 +id2590470,2,2016-06-07 11:40:53,2016-06-07 12:05:35,2,-73.874977111816406,40.773841857910156,-73.953727722167969,40.770801544189453,N,1482 +id3817092,1,2016-03-20 22:11:33,2016-03-20 22:28:25,1,-73.862701416015625,40.76873779296875,-73.917198181152344,40.81982421875,N,1012 +id3918159,1,2016-03-21 17:43:43,2016-03-21 17:53:22,1,-73.984062194824219,40.720783233642578,-73.973800659179688,40.750461578369141,N,579 +id1026973,1,2016-06-25 21:53:30,2016-06-25 22:05:27,1,-73.982627868652344,40.762340545654297,-73.995536804199219,40.749778747558594,Y,717 +id0972338,1,2016-04-28 08:47:50,2016-04-28 08:50:53,2,-73.982040405273438,40.752117156982422,-73.981681823730469,40.746654510498047,N,183 +id0831844,1,2016-04-16 17:45:22,2016-04-16 17:52:00,1,-73.9891357421875,40.741413116455078,-74.005638122558594,40.748241424560547,N,398 +id3964626,2,2016-04-03 13:16:36,2016-04-03 13:54:24,1,-73.77734375,40.646640777587891,-73.980323791503906,40.738491058349609,N,2268 +id2386155,2,2016-01-24 12:42:54,2016-01-24 12:54:20,1,-73.983528137207031,40.738029479980469,-73.983238220214844,40.737949371337891,N,686 +id1272729,2,2016-04-24 01:59:01,2016-04-24 02:10:47,5,-73.922706604003906,40.754489898681641,-73.985603332519531,40.717891693115234,N,706 +id2576834,2,2016-06-02 20:47:18,2016-06-02 21:03:32,1,-73.985000610351563,40.768760681152344,-73.947242736816406,40.830661773681641,N,974 +id2730154,2,2016-03-29 22:39:46,2016-03-29 22:40:44,5,-73.982200622558594,40.7318115234375,-73.979949951171875,40.734813690185547,N,58 +id1872397,1,2016-06-05 11:44:54,2016-06-05 11:56:31,1,-73.948028564453125,40.774791717529297,-73.9659423828125,40.765342712402344,Y,697 +id3223960,1,2016-02-02 19:37:05,2016-02-02 19:54:31,1,-73.982879638671875,40.761646270751953,-74.003395080566406,40.723846435546875,N,1046 +id1911726,1,2016-05-17 00:20:23,2016-05-17 00:30:32,1,-74.004249572753906,40.742408752441406,-73.992263793945313,40.727611541748047,N,609 +id1160246,1,2016-05-14 03:56:14,2016-05-14 04:00:23,1,-73.971771240234375,40.794651031494141,-73.962120056152344,40.805370330810547,N,249 +id2061313,2,2016-05-21 12:55:21,2016-05-21 13:07:11,1,-73.991615295410156,40.738597869873047,-74.007728576660156,40.746665954589844,N,710 +id3308583,2,2016-03-04 11:34:57,2016-03-04 12:01:29,1,-73.974067687988281,40.764629364013672,-74.005653381347656,40.707530975341797,N,1592 +id1458308,2,2016-03-23 07:36:36,2016-03-23 07:53:17,1,-73.991363525390625,40.750419616699219,-73.971694946289063,40.758247375488281,N,1001 +id2029339,2,2016-01-22 14:13:46,2016-01-22 15:15:21,1,-73.873359680175781,40.77410888671875,-73.958114624023437,40.775558471679688,N,3695 +id3995989,2,2016-04-22 21:47:07,2016-04-22 22:00:58,2,-73.970558166503906,40.747871398925781,-73.948089599609375,40.778968811035156,N,831 +id0533499,2,2016-06-24 11:26:17,2016-06-24 11:41:16,1,-73.980026245117188,40.754360198974609,-73.994430541992188,40.740509033203125,N,899 +id3779756,1,2016-06-12 16:07:00,2016-06-12 16:40:36,1,-73.977165222167969,40.751815795898438,-73.983261108398438,40.693290710449219,N,2016 +id2768742,2,2016-01-28 06:44:59,2016-01-28 06:59:26,1,-73.978355407714844,40.778141021728516,-74.005683898925781,40.745731353759766,N,867 +id2425126,2,2016-01-10 19:44:33,2016-01-10 19:54:49,1,-73.983909606933594,40.743911743164063,-74.005668640136719,40.740169525146484,N,616 +id1676102,1,2016-01-19 20:41:15,2016-01-19 20:46:46,1,-73.972831726074219,40.756568908691406,-73.990165710449219,40.757476806640625,N,331 +id2243401,1,2016-03-30 07:07:26,2016-03-30 07:25:10,1,-74.008934020996094,40.702156066894531,-73.975959777832031,40.755542755126953,N,1064 +id0835080,2,2016-04-09 13:10:47,2016-04-09 13:25:46,2,-73.978866577148438,40.763969421386719,-73.991310119628906,40.750286102294922,N,899 +id3140569,2,2016-03-18 00:07:28,2016-03-18 00:21:47,2,-73.968490600585938,40.754859924316406,-73.931510925292969,40.757431030273437,N,859 +id2448137,2,2016-03-11 23:57:09,2016-03-12 00:08:30,1,-74.007553100585937,40.740821838378906,-73.987281799316406,40.750740051269531,N,681 +id3250285,2,2016-01-11 06:51:24,2016-01-11 06:58:53,1,-73.983070373535156,40.741737365722656,-74.006057739257813,40.716110229492188,N,449 +id0941676,1,2016-04-26 21:23:25,2016-04-26 21:33:06,1,-73.979629516601563,40.786396026611328,-73.997100830078125,40.762458801269531,N,581 +id0819471,2,2016-02-11 21:53:30,2016-02-11 22:04:13,5,-73.998802185058594,40.719463348388672,-73.981094360351563,40.729316711425781,N,643 +id1053165,2,2016-03-09 15:50:44,2016-03-09 15:58:45,1,-73.984359741210937,40.737228393554688,-73.976104736328125,40.748252868652344,N,481 +id2067435,1,2016-03-26 19:26:38,2016-03-26 19:43:31,1,-73.999824523925781,40.718235015869141,-74.014961242675781,40.709152221679688,N,1013 +id0048064,2,2016-03-18 08:48:49,2016-03-18 09:03:46,4,-73.962532043457031,40.772968292236328,-73.97869873046875,40.750991821289063,N,897 +id3076182,1,2016-06-19 01:41:14,2016-06-19 01:53:44,1,-73.9921875,40.724861145019531,-73.992607116699219,40.742725372314453,N,750 +id2624983,2,2016-03-21 15:11:05,2016-03-21 15:16:51,6,-73.989501953125,40.756446838378906,-73.98004150390625,40.766330718994141,N,346 +id3211344,1,2016-01-16 02:13:02,2016-01-16 02:16:25,1,-73.950546264648438,40.723121643066406,-73.940559387207031,40.724483489990234,N,203 +id0447228,2,2016-03-16 12:14:19,2016-03-16 12:19:49,1,-74.009666442871094,40.712848663330078,-74.0155029296875,40.714851379394531,N,330 +id2804134,1,2016-04-17 10:12:03,2016-04-17 10:15:32,1,-73.95281982421875,40.783393859863281,-73.962440490722656,40.770355224609375,N,209 +id0780314,1,2016-04-01 19:24:54,2016-04-01 19:26:37,1,-73.961380004882813,40.798530578613281,-73.966072082519531,40.794712066650391,N,103 +id2300050,1,2016-03-08 19:05:09,2016-03-08 19:38:34,2,-73.992820739746094,40.752689361572266,-73.984542846679688,40.691623687744141,N,2005 +id0632183,1,2016-02-10 20:12:24,2016-02-10 20:19:17,1,-73.971771240234375,40.750297546386719,-73.980697631835938,40.732280731201172,N,413 +id3739543,1,2016-03-17 06:26:14,2016-03-17 06:33:51,1,-73.949409484863281,40.784934997558594,-73.948722839355469,40.803146362304688,N,457 +id2401419,2,2016-03-04 21:35:01,2016-03-04 21:44:29,2,-73.981369018554688,40.6898193359375,-73.983589172363281,40.694110870361328,N,568 +id2987313,2,2016-01-01 09:47:11,2016-01-01 09:49:57,1,-73.994071960449219,40.75128173828125,-73.994293212890625,40.758525848388672,N,166 +id1804145,1,2016-02-27 16:37:35,2016-02-27 16:53:31,1,-73.991447448730469,40.750232696533203,-73.992263793945313,40.725387573242187,N,956 +id2377925,2,2016-06-12 01:24:01,2016-06-12 01:33:30,1,-73.988189697265625,40.723575592041016,-73.987213134765625,40.744808197021484,N,569 +id3560802,2,2016-02-12 15:14:53,2016-02-12 15:24:32,2,-73.991180419921875,40.73956298828125,-74.0020751953125,40.750698089599609,N,579 +id0183870,2,2016-03-02 10:07:41,2016-03-02 10:13:55,1,-73.970451354980469,40.762531280517578,-73.969688415527344,40.757320404052734,N,374 +id1757289,1,2016-06-17 20:17:14,2016-06-17 20:35:09,1,-73.954368591308594,40.763996124267578,-73.989402770996094,40.756980895996094,N,1075 +id1056653,2,2016-01-19 09:41:57,2016-01-19 09:58:36,1,-73.965774536132813,40.795124053955078,-73.942451477050781,40.841590881347656,N,999 +id0326349,1,2016-04-25 08:19:43,2016-04-25 08:38:10,1,-73.946586608886719,40.772354125976562,-73.982086181640625,40.768463134765625,N,1107 +id1859727,2,2016-02-09 07:35:22,2016-02-09 07:42:16,1,-73.985427856445313,40.751968383789063,-73.994453430175781,40.740978240966797,N,414 +id0769422,1,2016-02-04 22:12:24,2016-02-04 22:30:02,1,-73.982337951660156,40.772693634033203,-73.993629455566406,40.732513427734375,N,1058 +id2800526,2,2016-02-05 12:31:16,2016-02-05 12:38:53,1,-73.976158142089844,40.752281188964844,-73.981773376464844,40.755390167236328,N,457 +id0904672,2,2016-02-21 18:21:27,2016-02-21 18:31:58,1,-74.001579284667969,40.728618621826172,-74.003379821777344,40.739109039306641,N,631 +id0060684,2,2016-01-11 09:11:15,2016-01-11 09:21:20,6,-73.989677429199219,40.756725311279297,-73.99462890625,40.750492095947266,N,605 +id3712759,2,2016-04-21 06:53:51,2016-04-21 07:04:39,2,-73.985664367675781,40.743862152099609,-74.00384521484375,40.707790374755859,N,648 +id1853128,1,2016-01-13 18:38:25,2016-01-13 18:46:18,1,-73.978630065917969,40.777515411376953,-73.962562561035156,40.799137115478516,N,473 +id3675063,2,2016-05-08 15:30:40,2016-05-08 15:39:15,1,-73.954277038574219,40.784378051757813,-73.966827392578125,40.766712188720703,N,515 +id0234320,2,2016-06-09 14:53:48,2016-06-09 15:22:36,2,-73.977058410644531,40.754878997802734,-73.862037658691406,40.768650054931641,N,1728 +id3969005,1,2016-03-08 10:03:34,2016-03-08 10:12:16,1,-73.969192504882813,40.763858795166016,-73.961013793945313,40.777309417724609,N,522 +id2528829,1,2016-06-12 16:41:17,2016-06-12 16:52:38,1,-73.983131408691406,40.760345458984375,-73.9654541015625,40.763050079345703,N,681 +id0599523,1,2016-03-27 18:21:27,2016-03-27 18:35:11,4,-74.014495849609375,40.712539672851563,-74.005043029785156,40.747989654541016,N,824 +id2503542,1,2016-06-01 20:17:36,2016-06-01 20:32:43,1,-73.955169677734375,40.773170471191406,-73.976081848144531,40.741958618164063,N,907 +id2663024,1,2016-05-04 14:55:36,2016-05-04 15:05:13,3,-73.950332641601563,40.801300048828125,-73.964927673339844,40.806350708007812,N,577 +id2694422,2,2016-06-22 05:48:14,2016-06-22 06:04:05,6,-73.946052551269531,40.777179718017578,-74.015548706054687,40.711563110351563,N,951 +id1976927,1,2016-05-09 08:41:29,2016-05-09 09:02:23,1,-74.004104614257813,40.728527069091797,-73.983840942382813,40.768257141113281,N,1254 +id0843100,1,2016-01-27 17:02:01,2016-01-27 17:13:24,1,-73.985015869140625,40.758304595947266,-73.97991943359375,40.7457275390625,N,683 +id3151483,1,2016-06-02 12:36:57,2016-06-02 12:46:46,2,-73.985115051269531,40.766403198242188,-73.981460571289063,40.774394989013672,N,589 +id1085643,1,2016-04-07 07:48:00,2016-04-07 07:57:35,1,-73.97747802734375,40.766170501708984,-73.967979431152344,40.787044525146484,N,575 +id2388028,2,2016-01-20 19:36:19,2016-01-20 19:56:07,2,-73.985160827636719,40.762031555175781,-73.952186584472656,40.771198272705078,N,1188 +id3128481,2,2016-02-21 02:22:07,2016-02-21 02:45:20,1,-73.987266540527344,40.755748748779297,-73.985382080078125,40.690841674804688,N,1393 +id3137071,1,2016-04-11 09:20:21,2016-04-11 09:32:15,1,-74.005516052246094,40.717174530029297,-73.989532470703125,40.740684509277344,N,714 +id0283582,2,2016-05-16 16:07:54,2016-05-16 16:15:20,1,-73.978012084960938,40.757286071777344,-73.982986450195313,40.758464813232422,N,446 +id2351647,1,2016-05-20 18:54:05,2016-05-20 19:04:07,1,-73.994285583496094,40.702823638916016,-73.988906860351563,40.664501190185547,N,602 +id2342055,2,2016-03-16 20:08:22,2016-03-16 20:24:30,2,-73.979469299316406,40.745277404785156,-74.002372741699219,40.760662078857422,N,968 +id3207287,2,2016-04-29 09:05:55,2016-04-29 09:11:23,1,-73.964889526367187,40.791412353515625,-73.972633361816406,40.790016174316406,N,328 +id3137021,1,2016-01-18 11:44:25,2016-01-18 11:48:51,1,-73.967765808105469,40.801181793212891,-73.959396362304688,40.813953399658203,N,266 +id0059372,1,2016-02-25 17:23:13,2016-02-25 17:29:09,1,-73.989303588867187,40.736221313476563,-73.98602294921875,40.726528167724609,N,356 +id1009360,2,2016-01-14 15:08:08,2016-01-14 15:12:49,1,-73.988967895507813,40.748050689697266,-73.982231140136719,40.756599426269531,N,281 +id0866826,2,2016-01-13 11:33:08,2016-01-13 11:34:33,2,-73.953567504882813,40.779380798339844,-73.94940185546875,40.785041809082031,N,85 +id3203355,2,2016-06-15 18:23:02,2016-06-15 18:31:56,5,-73.949981689453125,40.772098541259766,-73.967018127441406,40.763778686523438,N,534 +id3796995,2,2016-05-19 18:06:31,2016-05-19 18:11:23,1,-73.962409973144531,40.758865356445313,-73.955024719238281,40.767246246337891,N,292 +id2370080,2,2016-05-17 08:04:18,2016-05-17 08:11:38,3,-73.998191833496094,40.735374450683594,-73.991943359375,40.749362945556641,N,440 +id2892400,1,2016-03-03 07:45:04,2016-03-03 07:52:12,1,-73.978752136230469,40.785377502441406,-73.979530334472656,40.771560668945313,N,428 +id2051212,2,2016-01-22 09:04:16,2016-01-22 09:15:53,1,-73.950202941894531,40.771697998046875,-73.974136352539062,40.787471771240234,N,697 +id1678366,1,2016-06-28 17:55:58,2016-06-28 18:30:47,1,-73.961753845214844,40.776016235351562,-73.995025634765625,40.733974456787109,N,2089 +id0862941,2,2016-01-11 18:06:01,2016-01-11 18:12:46,1,-73.97271728515625,40.785011291503906,-73.956520080566406,40.786849975585937,N,405 +id0469159,2,2016-02-23 18:57:27,2016-02-23 19:04:37,5,-73.956291198730469,40.781299591064453,-73.95166015625,40.774448394775391,N,430 +id1946987,2,2016-06-05 23:34:21,2016-06-05 23:56:37,2,-73.99005126953125,40.729473114013672,-73.962631225585937,40.654621124267578,N,1336 +id0098171,2,2016-01-21 10:29:09,2016-01-21 10:38:51,1,-73.983062744140625,40.765995025634766,-73.978683471679688,40.754348754882813,N,582 +id3451821,2,2016-03-18 20:21:19,2016-03-18 20:33:43,1,-73.979156494140625,40.744411468505859,-73.954269409179688,40.775485992431641,N,744 +id2573202,1,2016-02-11 22:22:51,2016-02-11 22:31:41,2,-73.968757629394531,40.791389465332031,-73.943862915039063,40.794536590576172,N,530 +id3340409,2,2016-01-27 06:38:55,2016-01-27 06:52:15,1,-73.977096557617187,40.743312835693359,-73.981689453125,40.768218994140625,N,800 +id3591396,2,2016-03-27 22:46:53,2016-03-27 22:55:49,2,-73.980766296386719,40.769840240478516,-73.989242553710938,40.747959136962891,N,536 +id1864783,2,2016-05-06 18:59:55,2016-05-06 19:39:51,2,-73.965736389160156,40.762413024902344,-73.907875061035156,40.88006591796875,N,2396 +id1201558,1,2016-06-05 18:07:19,2016-06-05 18:11:46,1,-73.982101440429688,40.773056030273438,-73.988365173339844,40.769313812255859,N,267 +id1462654,1,2016-02-14 17:29:17,2016-02-14 17:35:44,1,-73.99224853515625,40.748367309570313,-73.998054504394531,40.756126403808594,N,387 +id0047649,1,2016-06-06 21:04:36,2016-06-06 21:32:50,4,-73.885360717773437,40.773101806640625,-73.914543151855469,40.885860443115234,N,1694 +id0005214,2,2016-03-26 21:39:49,2016-03-26 21:52:20,2,-73.986068725585937,40.746501922607422,-73.962493896484375,40.76422119140625,N,751 +id3878193,2,2016-02-07 00:56:37,2016-02-07 01:04:13,5,-73.987220764160156,40.733329772949219,-73.982978820800781,40.744419097900391,N,456 +id2553871,1,2016-05-01 18:40:58,2016-05-01 18:45:15,1,-73.98388671875,40.749069213867188,-73.9847412109375,40.742885589599609,N,257 +id1527619,1,2016-01-01 03:20:59,2016-01-01 03:43:06,1,-73.996376037597656,40.748836517333984,-73.987129211425781,40.697566986083984,N,1327 +id3813398,1,2016-03-22 22:35:31,2016-03-22 22:41:15,1,-73.989158630371094,40.752986907958984,-74.005538940429687,40.738876342773437,N,344 +id0112070,2,2016-04-30 22:03:23,2016-04-30 22:06:17,2,-73.955238342285156,40.768848419189453,-73.958137512207031,40.773128509521484,N,174 +id0054578,1,2016-06-08 21:42:13,2016-06-08 21:52:09,1,-73.966720581054687,40.769916534423828,-73.94744873046875,40.775283813476563,N,596 +id3570508,1,2016-03-15 10:21:28,2016-03-15 10:41:09,2,-73.982284545898437,40.768199920654297,-73.978012084960938,40.751068115234375,N,1181 +id2952272,2,2016-04-27 09:28:21,2016-04-27 09:42:01,1,-73.974838256835938,40.782966613769531,-73.939781188964844,40.840972900390625,N,820 +id3413393,2,2016-01-25 21:40:01,2016-01-25 21:46:55,1,-73.982208251953125,40.768119812011719,-73.996116638183594,40.753700256347656,N,414 +id0823435,2,2016-03-19 01:20:01,2016-03-19 01:37:02,1,-74.000297546386719,40.711139678955078,-73.981941223144531,40.769119262695313,N,1021 +id0606104,2,2016-06-24 01:03:49,2016-06-24 01:15:59,6,-73.870872497558594,40.773746490478516,-73.954307556152344,40.719024658203125,N,730 +id2814984,1,2016-06-02 16:48:54,2016-06-02 16:58:14,1,-73.993850708007813,40.762256622314453,-73.982017517089844,40.766643524169922,N,560 +id3878816,2,2016-04-17 02:25:03,2016-04-17 02:34:23,5,-73.986869812011719,40.719608306884766,-73.957473754882813,40.718120574951172,N,560 +id1942347,1,2016-01-04 18:17:20,2016-01-04 18:22:06,1,-73.966903686523438,40.76727294921875,-73.971916198730469,40.759548187255859,N,286 +id1207558,1,2016-05-12 21:55:34,2016-05-12 22:21:32,1,-73.7767333984375,40.645168304443359,-73.911651611328125,40.705966949462891,N,1558 +id2019893,2,2016-04-26 06:11:41,2016-04-26 06:17:03,3,-73.99688720703125,40.742191314697266,-73.982475280761719,40.759933471679688,N,322 +id2575446,1,2016-06-19 09:55:40,2016-06-19 10:03:03,2,-73.987808227539062,40.7557373046875,-73.979888916015625,40.765548706054688,N,443 +id0394946,1,2016-03-16 23:06:45,2016-03-16 23:16:28,1,-73.997871398925781,40.746150970458984,-73.977302551269531,40.784629821777344,N,583 +id1868530,1,2016-05-20 19:01:48,2016-05-20 19:23:08,1,-73.973724365234375,40.763168334960938,-73.990837097167969,40.745498657226562,N,1280 +id2087588,2,2016-05-03 18:50:06,2016-05-03 19:03:24,5,-73.99884033203125,40.734455108642578,-73.980987548828125,40.75030517578125,N,798 +id0731416,2,2016-06-16 11:11:06,2016-06-16 11:40:50,1,-73.778968811035156,40.647361755371094,-73.829689025878906,40.713039398193359,N,1784 +id3133710,1,2016-03-19 22:09:25,2016-03-19 22:13:06,1,-73.994232177734375,40.741249084472656,-73.995330810546875,40.749629974365234,N,221 +id0382926,2,2016-05-26 19:22:14,2016-05-26 19:34:55,1,-74.000099182128906,40.760898590087891,-74.009002685546875,40.732585906982422,N,761 +id1632403,1,2016-06-21 22:22:14,2016-06-21 22:26:08,1,-73.987648010253906,40.760482788085937,-73.977027893066406,40.765186309814453,N,234 +id1507942,1,2016-01-10 17:54:43,2016-01-10 18:07:58,1,-73.97467041015625,40.752056121826172,-74.012138366699219,40.716953277587891,N,795 +id1751730,1,2016-05-29 21:37:42,2016-05-29 21:59:27,1,-73.924079895019531,40.743999481201172,-73.999069213867188,40.742446899414062,N,1305 +id2969048,1,2016-03-15 22:56:30,2016-03-15 23:01:00,2,-73.986434936523438,40.730472564697266,-73.991897583007812,40.732837677001953,N,270 +id3044235,2,2016-03-19 21:09:43,2016-03-19 21:18:24,1,-73.96453857421875,40.756465911865234,-73.981124877929688,40.762813568115234,N,521 +id3105039,2,2016-03-24 18:30:07,2016-03-24 18:32:10,2,-73.976806640625,40.764900207519531,-73.980339050292969,40.767536163330078,N,123 +id2299069,2,2016-04-08 00:26:47,2016-04-08 00:35:37,4,-73.983268737792969,40.757762908935547,-73.968132019042969,40.757316589355469,N,530 +id1772192,1,2016-03-20 19:25:47,2016-03-20 20:01:01,1,-73.776756286621094,40.6453857421875,-73.985595703125,40.731266021728516,N,2114 +id3579210,2,2016-01-25 21:05:42,2016-01-25 22:01:52,1,-73.782089233398437,40.644649505615234,-73.9742431640625,40.789760589599609,N,3370 +id2470556,2,2016-06-25 11:01:21,2016-06-25 11:18:26,1,-73.986289978027344,40.767192840576172,-73.973190307617187,40.746158599853516,N,1025 +id3660750,2,2016-06-16 14:10:08,2016-06-16 14:15:12,1,-73.975563049316406,40.755340576171875,-73.971290588378906,40.761028289794922,N,304 +id0627179,2,2016-02-05 05:48:08,2016-02-05 05:56:46,6,-74.001106262207031,40.739261627197266,-73.9818115234375,40.724590301513672,N,518 +id2743455,2,2016-03-17 20:33:17,2016-03-17 20:40:44,2,-73.980072021484375,40.784000396728516,-73.94476318359375,40.834407806396484,N,447 +id3481094,1,2016-04-18 17:23:58,2016-04-18 17:27:22,1,-73.972564697265625,40.758510589599609,-73.980384826660156,40.759765625,N,204 +id1240888,1,2016-02-19 12:29:56,2016-02-19 12:40:48,1,-73.981285095214844,40.759548187255859,-73.987510681152344,40.780307769775391,N,652 +id1850357,2,2016-03-13 19:38:04,2016-03-13 19:52:20,1,-74.000343322753906,40.721340179443359,-73.999710083007812,40.738563537597656,N,856 +id1282615,2,2016-05-01 11:49:32,2016-05-01 11:54:59,2,-73.999031066894531,40.739299774169922,-74.006507873535156,40.721530914306641,N,327 +id3600299,1,2016-01-18 15:52:47,2016-01-18 16:01:42,3,-73.977622985839844,40.779243469238281,-73.978759765625,40.759170532226563,N,535 +id0015493,1,2016-06-12 05:11:44,2016-06-12 05:52:35,1,-74.005485534667969,40.728618621826172,-73.643424987792969,40.670379638671875,N,2451 +id0671052,1,2016-04-24 00:19:46,2016-04-24 00:25:32,2,-73.980751037597656,40.729888916015625,-73.984123229980469,40.725410461425781,N,346 +id0702699,2,2016-01-04 21:09:10,2016-01-04 21:19:26,1,-73.978462219238281,40.783058166503906,-73.952651977539063,40.799919128417969,N,616 +id0862403,2,2016-04-08 07:05:14,2016-04-08 07:19:43,1,-73.982398986816406,40.777492523193359,-73.939620971679687,40.805263519287109,N,869 +id1442956,2,2016-01-12 09:07:30,2016-01-12 09:30:52,5,-74.005462646484375,40.745731353759766,-73.963638305664063,40.758689880371094,N,1402 +id1859156,1,2016-02-17 00:54:13,2016-02-17 01:36:27,3,-73.969253540039063,40.754047393798828,-73.593582153320313,41.043865203857422,N,2534 +id1774111,1,2016-06-16 08:38:03,2016-06-16 08:45:24,1,-73.988273620605469,40.774810791015625,-73.996124267578125,40.761631011962891,N,441 +id1333989,1,2016-04-11 10:59:10,2016-04-11 11:05:30,1,-73.983695983886719,40.744430541992188,-73.978324890136719,40.737735748291016,N,380 +id3812910,2,2016-05-25 13:50:26,2016-05-25 13:59:58,1,-73.982002258300781,40.73651123046875,-74.012710571289063,40.702178955078125,N,572 +id3740726,1,2016-05-20 10:53:52,2016-05-20 11:15:35,2,-74.012748718261719,40.717121124267578,-73.955787658691406,40.764362335205078,N,1303 +id3030554,1,2016-01-26 02:01:09,2016-01-26 02:24:31,1,-73.988128662109375,40.746021270751953,-73.923713684082031,40.767948150634766,N,1402 +id2891699,2,2016-03-17 11:51:09,2016-03-17 12:09:37,5,-73.994209289550781,40.761638641357422,-74.011993408203125,40.718929290771484,N,1108 +id3498529,1,2016-02-24 16:25:29,2016-02-24 16:30:04,1,-73.975341796875,40.787929534912109,-73.97747802734375,40.782871246337891,N,275 +id0244668,1,2016-02-13 21:41:23,2016-02-13 21:53:40,4,-73.993026733398437,40.733497619628906,-74.007255554199219,40.733879089355469,N,737 +id1963642,1,2016-03-29 14:46:36,2016-03-29 15:06:37,1,-73.982170104980469,40.760746002197266,-73.952445983886719,40.772186279296875,N,1201 +id1913200,1,2016-04-26 08:25:01,2016-04-26 08:52:06,1,-74.016105651855469,40.714916229248047,-73.988525390625,40.754756927490234,N,1625 +id3877674,1,2016-02-09 20:42:41,2016-02-09 21:06:45,1,-74.009788513183594,40.712364196777344,-73.836532592773437,40.719028472900391,N,1444 +id3892641,1,2016-05-09 20:18:42,2016-05-09 20:26:11,1,-73.974723815917969,40.761276245117188,-73.98480224609375,40.748275756835938,N,449 +id2287030,2,2016-04-02 00:00:33,2016-04-02 00:03:23,2,-73.993049621582031,40.762931823730469,-73.982551574707031,40.777500152587891,N,170 +id0838992,2,2016-03-21 12:58:05,2016-03-21 13:06:25,1,-73.99188232421875,40.75494384765625,-73.984397888183594,40.744277954101563,N,500 +id2551093,1,2016-05-08 10:59:20,2016-05-08 11:07:30,1,-73.782127380371094,40.64447021484375,-73.811302185058594,40.670211791992187,N,490 +id0721660,1,2016-02-29 21:32:19,2016-02-29 21:37:42,1,-73.963493347167969,40.774311065673828,-73.967216491699219,40.76025390625,N,323 +id3039752,1,2016-04-14 15:08:54,2016-04-14 15:56:02,1,-73.987380981445313,40.760707855224609,-73.871986389160156,40.774246215820313,N,2828 +id3808632,1,2016-02-05 03:41:36,2016-02-05 03:59:45,1,-73.992279052734375,40.739990234375,-73.942314147949219,40.837493896484375,N,1089 +id3921267,2,2016-04-14 23:10:38,2016-04-14 23:24:53,1,-73.8756103515625,40.771442413330078,-73.911514282226562,40.769378662109375,N,855 +id1723554,2,2016-06-14 07:46:49,2016-06-14 08:11:44,1,-73.955612182617188,40.768451690673828,-73.950706481933594,40.768985748291016,N,1495 +id3431423,1,2016-04-12 15:11:34,2016-04-12 15:48:49,1,-73.986137390136719,40.759880065917969,-73.865127563476563,40.77056884765625,N,2235 +id0057906,1,2016-03-18 22:54:18,2016-03-18 23:06:38,1,-73.989532470703125,40.757564544677734,-73.992362976074219,40.748359680175781,N,740 +id3003058,1,2016-05-08 02:32:00,2016-05-08 03:07:13,1,-73.996353149414063,40.766544342041016,-73.936416625976563,40.693885803222656,Y,2113 +id3447978,2,2016-05-16 02:14:42,2016-05-16 02:35:14,1,-73.996719360351563,40.737419128417969,-73.948173522949219,40.829799652099609,N,1232 +id0292522,1,2016-05-02 11:09:39,2016-05-02 11:12:30,1,-73.972846984863281,40.793354034423828,-73.967750549316406,40.802322387695313,N,171 +id0874521,2,2016-05-01 15:08:33,2016-05-01 15:20:54,5,-73.983901977539062,40.745880126953125,-74.003692626953125,40.737590789794922,N,741 +id1281190,1,2016-02-08 19:05:26,2016-02-08 19:10:01,1,-73.987174987792969,40.744960784912109,-73.980575561523438,40.742355346679687,N,275 +id0097914,1,2016-04-10 01:19:03,2016-04-10 01:23:23,1,-73.956779479980469,40.720947265625,-73.955970764160156,40.730022430419922,N,260 +id0824172,2,2016-06-02 14:21:49,2016-06-02 14:33:45,1,-73.948562622070313,40.776611328125,-73.952316284179687,40.789779663085938,N,716 +id2878643,1,2016-06-14 14:22:15,2016-06-14 14:29:29,1,-73.979156494140625,40.758987426757813,-73.976791381835938,40.750072479248047,N,434 +id2048446,1,2016-05-27 23:10:12,2016-05-27 23:17:02,1,-73.998748779296875,40.755390167236328,-73.980339050292969,40.780490875244141,N,410 +id1409321,2,2016-02-03 14:53:53,2016-02-03 14:59:53,5,-73.978767395019531,40.763950347900391,-73.977569580078125,40.773990631103516,N,360 +id3175157,2,2016-05-09 01:47:11,2016-05-09 02:16:10,1,-73.994682312011719,40.750389099121094,-73.86956787109375,40.859401702880859,N,1739 +id3194388,1,2016-06-02 06:12:57,2016-06-02 06:19:23,1,-73.990455627441406,40.7559814453125,-73.983757019042969,40.755180358886719,N,386 +id0822165,2,2016-05-07 14:08:05,2016-05-07 14:17:29,6,-73.997795104980469,40.750812530517578,-73.997787475585937,40.736175537109375,N,564 +id3613138,1,2016-02-07 19:11:19,2016-02-07 19:22:13,2,-73.999801635742187,40.730716705322266,-73.979049682617188,40.7525634765625,N,654 +id3647586,1,2016-02-09 14:19:23,2016-02-09 14:24:51,2,-73.954116821289062,40.778831481933594,-73.94708251953125,40.795127868652344,N,328 +id2063770,2,2016-02-24 21:27:30,2016-02-24 21:37:02,1,-73.980049133300781,40.735000610351563,-73.998611450195313,40.744911193847656,N,572 +id3922970,2,2016-04-22 18:23:18,2016-04-22 18:29:02,1,-73.981132507324219,40.780132293701172,-73.982139587402344,40.775672912597656,N,344 +id1211472,1,2016-05-12 14:11:19,2016-05-12 15:03:16,1,-73.951576232910156,40.791343688964844,-73.789146423339844,40.641677856445313,Y,3117 +id1649629,1,2016-01-02 11:52:09,2016-01-02 11:58:47,1,-73.979209899902344,40.765354156494141,-73.973274230957031,40.757591247558594,N,398 +id2449460,1,2016-02-04 23:28:41,2016-02-04 23:37:08,1,-73.981719970703125,40.763999938964844,-73.981544494628906,40.778766632080078,N,507 +id2585409,2,2016-04-06 11:23:37,2016-04-06 11:37:14,3,-73.964042663574219,40.757991790771484,-73.952507019042969,40.772560119628906,N,817 +id0382265,1,2016-02-02 21:39:22,2016-02-02 21:47:29,1,-73.950996398925781,40.77764892578125,-73.965255737304688,40.790637969970703,N,487 +id3890985,2,2016-06-02 10:46:26,2016-06-02 11:14:11,2,-73.956802368164062,40.7777099609375,-73.976806640625,40.759510040283203,N,1665 +id3294103,2,2016-06-07 19:46:03,2016-06-07 19:52:17,1,-73.986282348632812,40.760360717773438,-73.971122741699219,40.782810211181641,N,374 +id3015936,2,2016-04-08 11:42:50,2016-04-08 12:05:38,1,-73.990966796875,40.755828857421875,-73.962821960449219,40.764308929443359,N,1368 +id1241025,2,2016-06-06 10:28:15,2016-06-06 10:54:39,1,-73.994247436523438,40.751029968261719,-73.960601806640625,40.766250610351562,N,1584 +id0827964,1,2016-04-17 14:13:39,2016-04-17 14:31:43,1,-73.967758178710937,40.762962341308594,-73.994209289550781,40.750198364257813,N,1084 +id3977623,1,2016-01-15 15:08:59,2016-01-15 15:23:59,1,-73.980674743652344,40.748001098632813,-73.981925964355469,40.768825531005859,N,900 +id1905877,1,2016-04-15 22:22:15,2016-04-15 22:27:30,2,-73.983078002929688,40.773509979248047,-73.965744018554687,40.772686004638672,N,315 +id3963944,2,2016-03-07 19:16:34,2016-03-07 19:20:00,6,-73.985275268554688,40.747215270996094,-73.984466552734375,40.740047454833984,N,206 +id2522484,2,2016-05-07 17:49:40,2016-05-07 17:59:52,4,-73.976486206054688,40.788440704345703,-73.982681274414063,40.763351440429688,N,612 +id0438249,2,2016-02-24 07:45:39,2016-02-24 08:17:11,2,-74.001228332519531,40.736530303955078,-73.93975830078125,40.841060638427734,N,1892 +id1963796,2,2016-04-27 09:29:44,2016-04-27 09:40:57,1,-73.967765808105469,40.7559814453125,-73.975120544433594,40.741512298583984,N,673 +id0627431,1,2016-03-26 17:02:18,2016-03-26 17:13:38,1,-73.982032775878906,40.760837554931641,-73.971931457519531,40.782184600830078,N,680 +id2306610,1,2016-02-25 17:08:03,2016-02-25 17:11:31,1,-73.955764770507813,40.769424438476563,-73.949089050292969,40.780937194824219,N,208 +id1266110,1,2016-03-08 14:00:09,2016-03-08 14:10:18,1,-73.987457275390625,40.751998901367188,-73.980270385742187,40.762321472167969,N,609 +id1739324,2,2016-01-12 19:29:12,2016-01-12 19:42:19,5,-74.003959655761719,40.733390808105469,-73.987380981445313,40.735748291015625,N,787 +id1033335,1,2016-03-09 22:00:19,2016-03-09 22:12:55,1,-73.984138488769531,40.737449645996094,-73.976181030273438,40.750816345214844,N,756 +id0940927,2,2016-06-23 12:37:55,2016-06-23 13:08:45,5,-73.991645812988281,40.750099182128906,-73.954048156738281,40.765155792236328,N,1850 +id3273389,1,2016-05-01 07:18:12,2016-05-01 07:30:46,3,-73.962615966796875,40.758907318115234,-73.985069274902344,40.747207641601563,N,754 +id3787692,2,2016-05-24 10:50:03,2016-05-24 11:00:25,6,-73.972610473632812,40.749839782714844,-73.975494384765625,40.751720428466797,N,622 +id1345342,1,2016-05-22 00:17:56,2016-05-22 00:33:44,2,-74.009796142578125,40.73626708984375,-73.98193359375,40.770755767822266,N,948 +id0601012,2,2016-01-22 22:20:53,2016-01-22 22:30:17,2,-73.989326477050781,40.752555847167969,-73.995429992675781,40.760501861572266,N,564 +id0631822,2,2016-05-17 14:17:48,2016-05-17 15:26:06,1,-73.995582580566406,40.716949462890625,-73.789100646972656,40.642448425292969,N,4098 +id1707647,2,2016-02-13 19:07:06,2016-02-13 19:11:01,1,-73.978416442871094,40.745418548583984,-73.971977233886719,40.747215270996094,N,235 +id1591402,2,2016-02-24 11:37:53,2016-02-24 11:43:29,6,-73.957099914550781,40.762340545654297,-73.963539123535156,40.765769958496094,N,336 +id0445322,2,2016-06-30 08:41:24,2016-06-30 08:57:49,1,-73.967964172363281,40.755771636962891,-73.991874694824219,40.734554290771484,N,985 +id1960233,1,2016-03-20 23:20:17,2016-03-20 23:24:01,2,-73.977439880371094,40.763370513916016,-73.986404418945313,40.759841918945313,N,224 +id2540752,2,2016-06-04 08:22:28,2016-06-04 08:24:34,1,-73.963584899902344,40.761981964111328,-73.962783813476563,40.767986297607422,N,126 +id3947556,1,2016-05-19 13:03:49,2016-05-19 13:46:17,1,-73.975242614746094,40.754890441894531,-74.176628112792969,40.693641662597656,N,2548 +id1115559,2,2016-06-10 15:28:33,2016-06-10 15:39:23,1,-73.997344970703125,40.725852966308594,-74.007553100585937,40.740898132324219,N,650 +id1849448,1,2016-03-19 21:06:15,2016-03-19 21:08:47,1,-74.0068359375,40.741741180419922,-74.004020690917969,40.751060485839844,N,152 +id3863075,2,2016-05-19 20:37:49,2016-05-19 20:49:51,2,-73.983840942382813,40.747371673583984,-74.000213623046875,40.745288848876953,N,722 +id1597082,1,2016-01-07 12:06:50,2016-01-07 12:28:05,2,-73.976806640625,40.790386199951172,-73.956031799316406,40.773632049560547,N,1275 +id3854389,1,2016-03-26 20:36:43,2016-03-26 20:48:17,1,-74.008705139160156,40.739414215087891,-73.994178771972656,40.726474761962891,N,694 +id0583092,2,2016-05-29 14:58:17,2016-05-29 15:08:43,1,-74.001655578613281,40.756717681884766,-73.981536865234375,40.752117156982422,N,626 +id0234668,1,2016-01-08 23:35:54,2016-01-08 23:42:48,1,-73.981620788574219,40.7645263671875,-73.996063232421875,40.767295837402344,N,414 +id0052453,1,2016-05-06 11:49:29,2016-05-06 11:56:48,2,-73.990547180175781,40.75592041015625,-73.983184814453125,40.756954193115234,N,439 +id3959507,1,2016-04-04 20:15:24,2016-04-04 20:24:17,4,-73.985710144042969,40.749893188476562,-73.99139404296875,40.739284515380859,N,533 +id1923951,2,2016-05-10 15:20:49,2016-05-10 15:42:30,1,-73.960609436035156,40.772823333740234,-73.980567932128906,40.748210906982422,N,1301 +id0132701,1,2016-01-03 14:18:11,2016-01-03 14:29:21,1,-73.966445922851562,40.764442443847656,-73.989234924316406,40.736244201660156,N,670 +id0482797,2,2016-04-21 20:25:01,2016-04-21 20:29:43,1,-73.957023620605469,40.774810791015625,-73.954536437988281,40.786590576171875,N,282 +id3512763,2,2016-03-31 04:45:02,2016-03-31 04:59:33,1,-73.975753784179688,40.744678497314453,-73.844757080078125,40.721893310546875,N,871 +id1244516,1,2016-04-16 17:20:44,2016-04-16 17:39:22,1,-73.987106323242187,40.76068115234375,-73.950889587402344,40.802520751953125,N,1118 +id3500199,1,2016-06-20 04:24:29,2016-06-20 04:32:05,2,-73.998908996582031,40.728168487548828,-73.985206604003906,40.756984710693359,N,456 +id1511189,2,2016-05-14 19:27:50,2016-05-14 19:30:56,5,-73.996803283691406,40.725376129150391,-74.003738403320312,40.722434997558594,N,186 +id2262567,1,2016-06-10 10:29:38,2016-06-10 10:46:58,1,-73.99383544921875,40.741645812988281,-73.978271484375,40.747501373291016,N,1040 +id2928438,1,2016-06-10 13:59:14,2016-06-10 14:08:17,1,-73.987838745117188,40.769840240478516,-73.979705810546875,40.783935546875,N,543 +id2254486,1,2016-06-23 14:23:55,2016-06-23 14:39:24,1,-73.957527160644531,40.764350891113281,-73.973587036132812,40.763523101806641,N,929 +id3020057,2,2016-02-09 22:44:36,2016-02-09 22:53:43,1,-73.987808227539062,40.721031188964844,-73.989471435546875,40.730049133300781,N,547 +id3063610,2,2016-05-15 01:21:49,2016-05-15 01:31:20,1,-73.989631652832031,40.730239868164062,-74.003929138183594,40.742771148681641,N,571 +id2555994,2,2016-01-16 11:44:36,2016-01-16 11:54:23,1,-73.9813232421875,40.741241455078125,-73.953903198242188,40.778881072998047,N,587 +id1069649,2,2016-04-16 00:01:37,2016-04-16 00:25:11,1,-73.952186584472656,40.777305603027344,-73.922309875488281,40.760387420654297,N,1414 +id0965610,2,2016-03-03 04:11:23,2016-03-03 04:25:28,1,-74.002281188964844,40.733711242675781,-73.9783935546875,40.765178680419922,N,845 +id0976720,2,2016-01-29 12:06:19,2016-01-29 12:16:51,2,-73.962600708007812,40.772731781005859,-73.96209716796875,40.763748168945313,N,632 +id1287973,2,2016-05-28 15:07:18,2016-05-28 15:27:23,1,-74.010978698730469,40.710170745849609,-73.980903625488281,40.763957977294922,N,1205 +id3856418,2,2016-05-16 10:11:21,2016-05-16 10:28:33,1,-73.970108032226563,40.759597778320313,-73.992202758789063,40.737758636474609,N,1032 +id0775200,2,2016-04-26 21:40:40,2016-04-26 21:51:49,4,-73.992668151855469,40.730453491210938,-73.98345947265625,40.750282287597656,N,669 +id1324382,1,2016-01-07 18:12:52,2016-01-07 18:55:57,1,-73.7823486328125,40.644802093505859,-73.95465087890625,40.789146423339844,N,2585 +id2898385,2,2016-06-25 13:14:03,2016-06-25 13:40:36,1,-73.990150451660156,40.719409942626953,-73.981407165527344,40.773578643798828,N,1593 +id2917527,2,2016-05-25 00:53:56,2016-05-25 01:12:23,2,-74.003692626953125,40.737541198730469,-73.951789855957031,40.714012145996094,N,1107 +id0669943,2,2016-06-19 19:52:14,2016-06-19 19:55:55,2,-74.005409240722656,40.739959716796875,-74.004348754882813,40.7335205078125,N,221 +id0271964,2,2016-02-28 01:02:09,2016-02-28 01:20:02,5,-73.995391845703125,40.739490509033203,-73.99017333984375,40.761825561523438,N,1073 +id0075464,2,2016-04-23 15:52:00,2016-04-23 16:34:57,1,-74.008491516113281,40.713108062744141,-73.981094360351563,40.767814636230469,N,2577 +id2803684,1,2016-04-26 18:14:46,2016-04-26 18:28:37,1,-73.9805908203125,40.764461517333984,-73.989219665527344,40.745616912841797,N,831 +id0367406,2,2016-03-18 14:17:30,2016-03-18 14:37:44,1,-73.985702514648437,40.757640838623047,-73.959846496582031,40.779411315917969,N,1214 +id0231867,1,2016-05-15 18:19:54,2016-05-15 18:24:18,2,-73.951805114746094,40.781936645507812,-73.942756652832031,40.786022186279297,N,264 +id3913560,2,2016-01-11 22:48:55,2016-01-11 23:40:20,2,-74.012657165527344,40.702178955078125,-74.307762145996094,40.567340850830078,N,3085 +id0410614,1,2016-02-20 14:14:46,2016-02-20 14:31:27,1,-73.871009826660156,40.773857116699219,-73.971275329589844,40.745330810546875,N,1001 +id1515863,1,2016-06-04 16:37:47,2016-06-04 16:49:30,1,-73.953422546386719,40.807022094726563,-73.981285095214844,40.774261474609375,N,703 +id1458268,1,2016-05-28 22:39:33,2016-05-28 22:43:39,1,-73.992202758789063,40.749683380126953,-74.000396728515625,40.746700286865234,N,246 +id2147806,2,2016-02-12 06:50:15,2016-02-12 06:54:02,2,-73.971000671386719,40.760883331298828,-73.978683471679688,40.750934600830078,N,227 +id0743354,1,2016-05-19 09:47:39,2016-05-19 10:04:46,1,-73.974250793457031,40.751026153564453,-73.98529052734375,40.746433258056641,N,1027 +id0729156,2,2016-06-23 13:36:48,2016-06-23 13:36:50,3,-73.827659606933594,40.716175079345703,-73.822113037109375,40.711452484130859,N,2 +id1185529,1,2016-03-08 22:25:46,2016-03-08 22:34:10,1,-73.977310180664063,40.749767303466797,-73.997207641601563,40.724739074707031,N,504 +id1871156,1,2016-04-09 02:14:13,2016-04-09 02:24:56,1,-73.981880187988281,40.728450775146484,-73.994789123535156,40.7188720703125,N,643 +id0174798,1,2016-01-25 10:09:14,2016-01-25 10:17:41,1,-73.984771728515625,40.759033203125,-73.98138427734375,40.768768310546875,N,507 +id3808990,2,2016-02-12 10:07:42,2016-02-12 10:21:47,3,-74.0074462890625,40.710071563720703,-73.977424621582031,40.746353149414063,N,845 +id1763513,1,2016-02-08 23:06:25,2016-02-08 23:11:24,1,-73.962379455566406,40.804885864257813,-73.950119018554687,40.800045013427734,N,299 +id3893063,2,2016-06-02 17:32:41,2016-06-02 18:42:43,1,-73.948577880859375,40.778079986572266,-73.781791687011719,40.64678955078125,N,4202 +id1814949,1,2016-02-06 02:35:50,2016-02-06 02:56:23,1,-73.992584228515625,40.733970642089844,-73.960609436035156,40.686576843261719,N,1233 +id2453193,1,2016-03-19 11:25:03,2016-03-19 11:31:08,4,-73.977554321289063,40.752651214599609,-73.988174438476562,40.757228851318359,Y,365 +id1918237,2,2016-06-16 21:40:36,2016-06-16 21:53:10,5,-73.984458923339844,40.760383605957031,-74.000434875488281,40.762588500976562,N,754 +id3487746,1,2016-02-01 13:24:04,2016-02-01 13:29:27,1,-73.949111938476563,40.781570434570313,-73.949935913085938,40.772243499755859,N,323 +id1981369,2,2016-01-30 06:28:49,2016-01-30 06:32:00,1,-73.996788024902344,40.737270355224609,-73.985137939453125,40.732551574707031,N,191 +id3336474,2,2016-06-11 00:57:33,2016-06-11 01:03:34,1,-74.002487182617188,40.750049591064453,-74.006507873535156,40.743949890136719,N,361 +id3378098,1,2016-03-28 23:31:51,2016-03-28 23:45:17,1,-73.989349365234375,40.726444244384766,-74.007270812988281,40.705661773681641,N,806 +id1381256,2,2016-03-31 10:45:18,2016-03-31 10:54:11,1,-73.929161071777344,40.762630462646484,-73.953109741210937,40.742538452148438,N,533 +id2723985,2,2016-06-14 14:09:03,2016-06-14 14:12:19,2,-73.984893798828125,40.747348785400391,-73.989974975585937,40.738533020019531,N,196 +id1576914,1,2016-04-28 08:57:04,2016-04-28 09:03:23,1,-73.964431762695312,40.764511108398438,-73.962875366210938,40.776649475097656,N,379 +id3991516,1,2016-02-06 13:37:05,2016-02-06 14:00:24,4,-73.973052978515625,40.748703002929687,-74.0040283203125,40.733589172363281,N,1399 +id3340677,2,2016-05-21 00:51:40,2016-05-21 01:02:30,1,-73.987777709960937,40.719482421875,-73.945350646972656,40.707874298095703,N,650 +id3860883,1,2016-03-14 20:11:28,2016-03-14 20:24:37,1,-73.954124450683594,40.763881683349609,-73.97296142578125,40.764476776123047,N,789 +id3781075,2,2016-02-08 21:57:23,2016-02-08 22:34:54,1,-73.981216430664063,40.772506713867188,-73.782867431640625,40.648845672607422,N,2251 +id0782671,1,2016-06-06 17:57:15,2016-06-06 18:10:02,1,-73.979690551757812,40.737262725830078,-74.001510620117187,40.738517761230469,N,767 +id0114631,2,2016-03-06 11:49:27,2016-03-06 11:56:29,1,-73.986701965332031,40.750473022460938,-73.994056701660156,40.735336303710938,N,422 +id2991751,1,2016-05-11 16:06:09,2016-05-11 16:22:38,1,-73.971336364746094,40.750621795654297,-73.981979370117187,40.762592315673828,N,989 +id0036157,1,2016-04-11 19:27:41,2016-04-11 19:35:37,1,-73.965850830078125,40.754379272460938,-73.9647216796875,40.771675109863281,N,476 +id0558782,2,2016-01-11 00:56:13,2016-01-11 01:01:50,1,-73.987861633300781,40.749393463134766,-73.972740173339844,40.756706237792969,N,337 +id1478457,1,2016-03-23 21:04:23,2016-03-23 21:25:33,1,-74.009613037109375,40.710041046142578,-73.942779541015625,40.701271057128906,N,1270 +id1091477,2,2016-05-07 18:36:22,2016-05-08 18:32:11,1,-73.990242004394531,40.750919342041016,-73.976280212402344,40.750888824462891,N,86149 +id2980271,2,2016-04-12 18:48:44,2016-04-12 19:19:02,5,-74.002288818359375,40.72412109375,-73.954277038574219,40.77886962890625,N,1818 +id2881450,2,2016-04-05 10:23:41,2016-04-05 10:32:06,1,-73.969917297363281,40.789600372314453,-73.953399658203125,40.779861450195313,N,505 +id0394313,2,2016-05-22 11:28:36,2016-05-22 11:38:16,1,-73.958389282226563,40.768997192382813,-73.978530883789063,40.764892578125,N,580 +id0594563,2,2016-06-08 21:12:31,2016-06-08 21:19:57,1,-73.974189758300781,40.731029510498047,-73.993141174316406,40.727779388427734,N,446 +id0433216,1,2016-06-25 01:52:44,2016-06-25 01:57:58,1,-74.002372741699219,40.738849639892578,-73.9906005859375,40.740833282470703,N,314 +id1921215,2,2016-05-13 05:39:07,2016-05-13 06:10:48,5,-73.985816955566406,40.751758575439453,-73.964958190917969,40.576148986816406,N,1901 +id1392926,2,2016-04-10 20:18:52,2016-04-10 20:29:28,1,-73.963829040527344,40.773941040039063,-73.973289489746094,40.748291015625,N,636 +id1719421,2,2016-03-02 19:47:39,2016-03-02 19:53:05,1,-73.968467712402344,40.757190704345703,-73.96807861328125,40.765468597412109,N,326 +id3664558,2,2016-05-14 15:25:12,2016-05-14 15:30:12,1,-73.992294311523438,40.743682861328125,-73.991600036621094,40.7501220703125,N,300 +id2392441,1,2016-05-03 16:42:50,2016-05-03 17:00:21,2,-73.994125366210938,40.751060485839844,-73.974472045898438,40.75323486328125,N,1051 +id3563156,1,2016-02-13 13:39:33,2016-02-13 13:55:19,2,-73.980476379394531,40.688396453857422,-73.940040588378906,40.693099975585937,N,946 +id1282683,2,2016-06-30 09:01:21,2016-06-30 09:05:45,2,-73.987808227539062,40.7550048828125,-73.994354248046875,40.742874145507813,N,264 +id2620597,1,2016-01-19 05:56:10,2016-01-19 06:04:57,1,-73.99432373046875,40.7509765625,-73.977302551269531,40.760589599609375,N,527 +id2772654,1,2016-03-08 18:48:43,2016-03-08 18:51:04,1,-73.966911315917969,40.788639068603516,-73.971878051757812,40.786529541015625,N,141 +id1922759,1,2016-01-16 08:25:12,2016-01-16 08:31:00,4,-74.00604248046875,40.707759857177734,-73.975692749023438,40.719085693359375,N,348 +id1290999,2,2016-03-24 10:48:01,2016-03-24 11:10:40,5,-73.97467041015625,40.749809265136719,-74.017250061035156,40.704971313476562,N,1359 +id2057934,2,2016-03-30 13:48:54,2016-03-30 13:51:40,1,-73.980949401855469,40.747501373291016,-73.985450744628906,40.741798400878906,N,166 +id0841416,1,2016-02-20 19:13:10,2016-02-20 19:30:33,1,-73.997711181640625,40.720848083496094,-73.97821044921875,40.751338958740234,N,1043 +id1344493,1,2016-05-16 16:01:19,2016-05-16 16:03:20,1,-73.965133666992188,40.775154113769531,-73.961837768554687,40.776554107666016,N,121 +id2849723,1,2016-02-05 14:00:15,2016-02-05 14:07:00,1,-73.958839416503906,40.781002044677734,-73.939491271972656,40.805171966552734,N,405 +id1754536,2,2016-02-01 04:19:50,2016-02-01 04:41:22,1,-73.983070373535156,40.741802215576172,-73.958999633789063,40.670646667480469,N,1292 +id1163091,2,2016-04-01 20:26:06,2016-04-01 20:38:14,1,-73.986671447753906,40.751205444335938,-73.977256774902344,40.784587860107422,N,728 +id2021177,2,2016-06-10 18:45:46,2016-06-10 19:34:17,1,-73.787994384765625,40.6414794921875,-73.947265625,40.790836334228516,N,2911 +id3070072,1,2016-06-22 23:53:17,2016-06-23 00:05:53,1,-73.984321594238281,40.759906768798828,-73.978263854980469,40.752342224121094,N,756 +id0030923,2,2016-03-07 23:23:10,2016-03-07 23:27:40,2,-73.984779357910156,40.745468139648438,-73.972938537597656,40.74346923828125,N,270 +id1040844,1,2016-06-03 15:10:40,2016-06-03 16:36:32,3,-73.872970581054687,40.774124145507812,-73.975448608398438,40.765354156494141,N,5152 +id3442406,2,2016-01-02 12:41:23,2016-01-02 12:44:59,1,-73.993270874023438,40.743080139160156,-73.995590209960938,40.749240875244141,N,216 +id2636301,2,2016-01-23 01:16:58,2016-01-23 01:33:15,1,-74.004913330078125,40.728309631347656,-73.991523742675781,40.759864807128906,N,977 +id0635521,2,2016-01-24 22:14:39,2016-01-24 22:20:22,2,-73.956138610839844,40.775714874267578,-73.961021423339844,40.765312194824219,N,343 +id2338426,2,2016-04-27 22:05:37,2016-04-27 22:10:54,1,-73.993736267089844,40.741397857666016,-73.975517272949219,40.749103546142578,N,317 +id0055383,2,2016-04-08 08:29:10,2016-04-08 08:37:27,1,-74.018074035644531,40.709438323974609,-74.00189208984375,40.708187103271484,N,497 +id0288522,1,2016-06-14 21:51:33,2016-06-14 21:57:22,1,-73.989990234375,40.729793548583984,-73.977096557617187,40.747291564941406,N,349 +id0583651,2,2016-03-29 07:39:47,2016-03-29 07:49:21,2,-73.977996826171875,40.783008575439453,-73.988639831542969,40.772369384765625,N,574 +id3051132,2,2016-01-08 06:23:30,2016-01-08 06:28:36,1,-73.955497741699219,40.768241882324219,-73.966506958007812,40.764610290527344,N,306 +id3988789,2,2016-03-11 20:27:33,2016-03-11 20:46:36,1,-73.950759887695313,40.779342651367188,-73.991096496582031,40.713981628417969,N,1143 +id1965717,2,2016-03-15 14:55:37,2016-03-15 15:09:30,1,-73.9716796875,40.760635375976563,-73.98944091796875,40.736713409423828,N,833 +id1077219,2,2016-05-03 20:00:53,2016-05-03 20:03:06,2,-73.9957275390625,40.764381408691406,-73.989570617675781,40.766998291015625,N,133 +id2722978,2,2016-02-10 18:24:46,2016-02-10 19:13:22,2,-74.01031494140625,40.720867156982422,-73.7823486328125,40.64874267578125,N,2916 +id3018151,2,2016-05-30 12:13:20,2016-05-30 12:31:27,2,-73.870880126953125,40.773738861083984,-73.929061889648437,40.850849151611328,N,1087 +id0463969,2,2016-02-10 00:02:44,2016-02-10 00:08:43,1,-73.971420288085938,40.763149261474609,-73.948356628417969,40.782138824462891,N,359 +id2866012,1,2016-03-11 18:40:35,2016-03-11 18:51:47,1,-73.984573364257813,40.747550964355469,-74.001640319824219,40.7276611328125,N,672 +id3842544,1,2016-02-24 08:27:51,2016-02-24 08:46:55,1,-73.954849243164063,40.777637481689453,-73.97052001953125,40.759220123291016,N,1144 +id2776073,2,2016-06-06 20:13:17,2016-06-06 20:21:47,1,-73.976974487304688,40.758781433105469,-73.958587646484375,40.781837463378906,N,510 +id3622908,1,2016-02-14 15:45:42,2016-02-14 15:57:27,2,-73.982246398925781,40.750713348388672,-74.002357482910156,40.756008148193359,N,705 +id2271630,2,2016-05-02 23:51:53,2016-05-02 23:55:23,1,-73.9935302734375,40.724590301513672,-73.991828918457031,40.722347259521484,N,210 +id3276295,1,2016-03-10 21:12:59,2016-03-10 21:18:20,1,-73.994476318359375,40.740558624267578,-73.982666015625,40.748126983642578,N,321 +id3430968,2,2016-05-18 16:56:32,2016-05-18 17:05:45,1,-73.972343444824219,40.756229400634766,-73.965072631835938,40.759231567382812,N,553 +id0971699,1,2016-05-19 07:20:41,2016-05-19 07:21:22,1,-73.992729187011719,40.737503051757813,-73.99273681640625,40.737449645996094,N,41 +id2795297,1,2016-03-17 21:43:06,2016-03-17 21:51:54,1,-73.996627807617188,40.7391357421875,-74.01019287109375,40.714694976806641,N,528 +id1516894,1,2016-03-22 19:12:06,2016-03-22 19:44:41,2,-73.978836059570313,40.764942169189453,-73.998245239257813,40.724918365478516,N,1955 +id3695319,1,2016-05-20 07:58:18,2016-05-20 08:01:18,1,-74.016021728515625,40.715496063232422,-74.008781433105469,40.7196044921875,N,180 +id3116485,2,2016-01-04 12:31:30,2016-01-04 12:47:43,2,-74.001502990722656,40.751380920410156,-73.958763122558594,40.783458709716797,N,973 +id1653630,1,2016-01-26 07:16:40,2016-01-26 07:25:20,1,-73.9609375,40.756572723388672,-73.973175048828125,40.757907867431641,N,520 +id3524926,2,2016-06-03 18:28:20,2016-06-03 18:35:53,6,-73.967384338378906,40.78863525390625,-73.977859497070312,40.783668518066406,N,453 +id3519014,2,2016-06-03 06:37:09,2016-06-03 06:53:16,1,-73.984588623046875,40.769485473632812,-74.014976501464844,40.711177825927734,N,967 +id3533377,1,2016-03-11 14:45:33,2016-03-11 15:07:34,1,-73.995750427246094,40.754058837890625,-74.008934020996094,40.715377807617188,N,1321 +id1118533,1,2016-03-07 17:09:23,2016-03-07 17:15:08,1,-73.954360961914063,40.78411865234375,-73.959579467773438,40.771213531494141,N,345 +id0070454,1,2016-01-22 10:34:23,2016-01-22 10:52:28,1,-73.924850463867187,40.771903991699219,-73.93707275390625,40.802471160888672,N,1085 +id0143557,2,2016-04-04 15:51:28,2016-04-04 15:54:02,2,-73.985061645507813,40.724056243896484,-73.977676391601562,40.721305847167969,N,154 +id1798165,2,2016-03-10 09:46:25,2016-03-10 10:02:09,2,-73.972114562988281,40.756156921386719,-73.991546630859375,40.744270324707031,N,944 +id2132049,2,2016-05-25 06:30:07,2016-05-25 06:48:44,2,-73.980766296386719,40.729770660400391,-73.872337341308594,40.774341583251953,N,1117 +id3037145,1,2016-03-28 16:49:07,2016-03-28 17:00:10,1,-73.963371276855469,40.777687072753906,-73.982719421386719,40.774124145507812,N,663 +id2999777,2,2016-04-28 20:28:01,2016-04-28 20:33:57,1,-74.001296997070313,40.731128692626953,-73.997802734375,40.725620269775391,N,356 +id1618887,1,2016-05-11 16:02:35,2016-05-11 16:16:38,1,-74.008514404296875,40.745765686035156,-74.003387451171875,40.717544555664063,N,843 +id3350679,1,2016-04-26 15:01:04,2016-04-26 15:06:03,1,-73.969902038574219,40.765567779541016,-73.961936950683594,40.776340484619141,N,299 +id0024565,1,2016-02-08 17:45:17,2016-02-08 18:02:48,1,-73.982223510742188,40.765369415283203,-73.99505615234375,40.726352691650391,N,1051 +id3975607,2,2016-01-24 14:23:26,2016-01-24 14:28:37,1,-73.975090026855469,40.782630920410156,-73.984794616699219,40.769344329833984,N,311 +id2439067,2,2016-03-04 07:25:46,2016-03-04 07:38:02,2,-73.971763610839844,40.746143341064453,-73.994766235351563,40.745311737060547,N,736 +id2512903,2,2016-03-07 02:57:01,2016-03-07 03:03:58,2,-73.970710754394531,40.79608154296875,-73.94927978515625,40.807540893554687,N,417 +id3825472,2,2016-02-15 22:52:31,2016-02-15 22:58:16,2,-73.973228454589844,40.763950347900391,-73.963409423828125,40.765789031982422,N,345 +id3486216,2,2016-06-25 04:31:43,2016-06-25 04:49:24,1,-73.994056701660156,40.720333099365234,-73.957969665527344,40.642135620117188,N,1061 +id0892508,1,2016-06-04 21:21:34,2016-06-04 22:02:46,1,-73.966529846191406,40.800739288330078,-73.981658935546875,40.679695129394531,N,2472 +id2961850,2,2016-05-04 18:37:44,2016-05-04 19:03:11,2,-73.955741882324219,40.764236450195313,-73.997283935546875,40.725730895996094,N,1527 +id3409041,1,2016-04-12 21:07:49,2016-04-12 21:18:30,1,-73.976936340332031,40.755947113037109,-73.953903198242188,40.781623840332031,N,641 +id2534249,1,2016-02-11 18:57:02,2016-02-11 19:05:15,1,-73.9822998046875,40.775333404541016,-73.972305297851563,40.784046173095703,N,493 +id2702962,1,2016-03-13 03:54:54,2016-03-13 04:11:39,1,-73.999992370605469,40.738475799560547,-73.978683471679688,40.685386657714844,N,1005 +id2675348,2,2016-02-16 06:46:42,2016-02-16 06:58:22,1,-74.002273559570312,40.723930358886719,-73.974609375,40.755241394042969,N,700 +id3969833,2,2016-05-14 22:11:52,2016-05-14 22:32:02,1,-73.991653442382813,40.749729156494141,-73.964012145996094,40.802791595458984,N,1210 +id2835552,1,2016-05-17 09:53:15,2016-05-17 10:06:31,1,-73.964179992675781,40.760368347167969,-73.975082397460938,40.744461059570313,N,796 +id0204695,2,2016-05-25 19:15:11,2016-05-25 20:01:37,1,-73.788787841796875,40.641983032226562,-73.972686767578125,40.785671234130859,N,2786 +id0764224,1,2016-02-06 15:11:12,2016-02-06 15:19:51,1,-73.995307922363281,40.728996276855469,-73.98370361328125,40.721767425537109,N,519 +id1978091,2,2016-01-22 18:39:20,2016-01-22 18:46:33,3,-73.996223449707031,40.726398468017578,-74.008895874023438,40.720645904541016,N,433 +id0751011,2,2016-06-10 13:12:34,2016-06-10 13:45:57,5,-73.993072509765625,40.752849578857422,-73.97308349609375,40.740558624267578,N,2003 +id3311359,2,2016-03-02 21:51:22,2016-03-02 22:10:56,1,-73.988624572753906,40.763725280761719,-73.957206726074219,40.763343811035156,N,1174 +id3171343,2,2016-04-11 07:38:05,2016-04-11 07:55:42,1,-73.954681396484375,40.769821166992187,-73.966667175292969,40.788898468017578,N,1057 +id2791754,2,2016-01-09 00:05:34,2016-01-09 00:16:18,2,-73.986473083496094,40.740291595458984,-73.992706298828125,40.722724914550781,N,644 +id0572515,2,2016-06-15 19:44:21,2016-06-15 19:57:06,6,-73.984939575195313,40.751518249511719,-73.984367370605469,40.728893280029297,N,765 +id3620729,2,2016-01-16 20:53:38,2016-01-16 20:58:42,3,-73.965499877929688,40.762798309326172,-73.976890563964844,40.760871887207031,N,304 +id1880340,1,2016-01-02 21:37:44,2016-01-02 21:44:03,1,-73.988670349121094,40.756561279296875,-73.984771728515625,40.764179229736328,N,379 +id0905194,2,2016-03-25 13:43:47,2016-03-25 13:49:44,1,-73.965858459472656,40.754238128662109,-73.979728698730469,40.750858306884766,N,357 +id2272498,2,2016-04-29 12:21:46,2016-04-29 12:33:09,1,-74.010063171386719,40.720928192138672,-74.009468078613281,40.705215454101563,N,683 +id0763854,1,2016-04-07 21:49:53,2016-04-07 21:56:28,1,-73.995880126953125,40.754268646240234,-73.989173889160156,40.773468017578125,N,395 +id2529714,1,2016-02-19 22:42:24,2016-02-19 22:55:18,1,-73.994819641113281,40.725906372070312,-73.985015869140625,40.744606018066406,N,774 +id0666080,1,2016-05-24 08:43:25,2016-05-24 08:55:16,1,-73.991325378417969,40.744991302490234,-73.978317260742188,40.763179779052734,N,711 +id2722675,1,2016-04-28 07:56:57,2016-04-28 08:08:00,1,-73.987373352050781,40.768558502197266,-73.975540161132813,40.75811767578125,N,663 +id1677164,2,2016-05-06 23:45:24,2016-05-07 00:12:15,1,-73.973800659179688,40.755348205566406,-74.009773254394531,40.73529052734375,N,1611 +id1885352,2,2016-03-16 19:52:12,2016-03-16 19:59:34,1,-73.977592468261719,40.737861633300781,-73.960182189941406,40.762020111083984,N,442 +id0508659,2,2016-04-21 09:49:12,2016-04-21 09:53:35,1,-73.967620849609375,40.792957305908203,-73.962150573730469,40.805347442626953,N,263 +id2684070,2,2016-01-06 14:14:18,2016-01-06 14:25:24,1,-74.008056640625,40.722469329833984,-73.993110656738281,40.748580932617188,N,666 +id1483820,2,2016-03-01 17:40:13,2016-03-01 17:56:35,1,-73.978721618652344,40.737030029296875,-73.990592956542969,40.755958557128906,N,982 +id1623107,1,2016-05-05 15:22:09,2016-05-05 15:57:51,1,-74.00457763671875,40.746894836425781,-73.943122863769531,40.777317047119141,N,2142 +id2549441,1,2016-05-24 18:58:01,2016-05-24 19:15:18,1,-73.978736877441406,40.751247406005859,-73.955490112304688,40.776851654052734,N,1037 +id2762506,1,2016-01-16 17:07:34,2016-01-16 17:18:32,2,-73.962287902832031,40.779075622558594,-73.978805541992188,40.762168884277344,N,658 +id1868430,2,2016-05-01 12:33:45,2016-05-01 13:09:49,1,-73.979377746582031,40.782108306884766,-73.85003662109375,40.723468780517578,N,2164 +id3515780,1,2016-03-05 18:54:31,2016-03-05 19:04:14,1,-73.979133605957031,40.761493682861328,-73.98236083984375,40.772602081298828,N,583 +id3405361,1,2016-04-23 20:14:26,2016-04-23 20:33:35,2,-73.990081787109375,40.755912780761719,-73.976036071777344,40.741947174072266,N,1149 +id0681983,2,2016-05-24 23:52:25,2016-05-24 23:57:19,1,-74.005271911621094,40.728816986083984,-74.010780334472656,40.713626861572266,N,294 +id2448458,1,2016-06-23 00:11:21,2016-06-23 00:22:46,2,-73.990257263183594,40.724895477294922,-74.00933837890625,40.710391998291016,N,685 +id1427787,1,2016-02-07 14:03:38,2016-02-07 14:11:59,1,-73.989181518554688,40.756320953369141,-73.990585327148438,40.751426696777344,N,501 +id2333523,1,2016-04-07 19:01:48,2016-04-07 19:09:30,1,-73.990669250488281,40.718353271484375,-73.956123352050781,40.715328216552734,N,462 +id3457626,1,2016-04-24 21:14:50,2016-04-24 21:54:32,1,-73.789710998535156,40.647575378417969,-73.994796752929688,40.745254516601563,N,2382 +id1991110,1,2016-03-20 12:20:41,2016-03-20 12:34:04,2,-73.960891723632812,40.770050048828125,-73.989547729492188,40.773025512695313,N,803 +id2916620,1,2016-05-15 18:48:30,2016-05-15 19:14:07,2,-73.964248657226562,40.756584167480469,-73.919845581054688,40.707233428955078,N,1537 +id2553024,1,2016-04-23 13:43:33,2016-04-23 14:47:19,4,-73.78155517578125,40.644748687744141,-73.989707946777344,40.758983612060547,N,3826 +id2480094,2,2016-04-30 20:04:33,2016-04-30 20:25:28,1,-73.945968627929688,40.777793884277344,-74.010330200195313,40.715980529785156,N,1255 +id0117192,1,2016-05-25 14:33:48,2016-05-25 14:45:34,1,-73.952743530273438,40.768230438232422,-73.955062866210937,40.786670684814453,N,706 +id1508207,2,2016-06-09 09:00:16,2016-06-09 09:07:32,1,-73.959663391113281,40.782588958740234,-73.945419311523438,40.772491455078125,N,436 +id1273973,2,2016-01-07 19:56:58,2016-01-07 20:11:14,1,-73.993499755859375,40.741809844970703,-73.999542236328125,40.728580474853516,N,856 +id2950532,1,2016-05-14 08:26:49,2016-05-14 08:33:48,1,-73.954864501953125,40.733547210693359,-73.943092346191406,40.722724914550781,N,419 +id0266313,2,2016-02-09 11:57:11,2016-02-09 12:07:18,6,-73.983467102050781,40.755870819091797,-73.976951599121094,40.759052276611328,N,607 +id3191633,1,2016-02-17 06:54:09,2016-02-17 06:57:29,1,-73.989707946777344,40.756622314453125,-73.98046875,40.763275146484375,N,200 +id1296185,1,2016-06-13 08:01:37,2016-06-13 08:12:00,1,-73.961212158203125,40.780284881591797,-73.98040771484375,40.761096954345703,N,623 +id1081203,2,2016-05-19 06:11:12,2016-05-19 06:54:07,1,-73.78985595703125,40.646987915039062,-73.978446960449219,40.758861541748047,N,2575 +id0883984,1,2016-02-19 15:00:20,2016-02-19 15:10:37,1,-73.992881774902344,40.7373046875,-73.987663269042969,40.754898071289063,N,617 +id2179419,2,2016-01-30 14:43:44,2016-01-30 14:52:02,1,-73.983871459960937,40.754806518554687,-73.971954345703125,40.763408660888672,N,498 +id1962466,1,2016-02-05 17:52:37,2016-02-05 18:04:31,1,-73.956832885742188,40.782623291015625,-73.942794799804687,40.811519622802734,N,714 +id3072377,1,2016-02-20 14:21:26,2016-02-20 14:30:39,1,-74.003890991210937,40.725540161132812,-73.9912109375,40.727596282958984,N,553 +id2991764,2,2016-04-30 19:23:20,2016-04-30 19:26:14,1,-73.98602294921875,40.755378723144531,-73.989242553710938,40.756481170654297,N,174 +id0814825,1,2016-01-10 19:32:40,2016-01-10 19:41:29,1,-73.987953186035156,40.745723724365234,-74.003852844238281,40.747913360595703,N,529 +id3451216,1,2016-01-14 19:46:33,2016-01-14 20:11:11,1,-73.98394775390625,40.761524200439453,-73.916488647460938,40.766815185546875,N,1478 +id2398039,2,2016-06-22 07:53:03,2016-06-22 08:20:06,1,-73.972480773925781,40.786678314208984,-73.983482360839844,40.741310119628906,N,1623 +id3449667,2,2016-05-10 20:39:43,2016-05-10 21:06:09,1,-73.969871520996094,40.760196685791016,-74.006340026855469,40.742240905761719,N,1586 +id2997273,2,2016-04-14 10:25:16,2016-04-14 10:39:27,1,-74.004257202148438,40.742061614990234,-73.984703063964844,40.734779357910156,N,851 +id0969870,1,2016-01-27 15:13:29,2016-01-27 15:19:22,2,-73.950332641601563,40.801448822021484,-73.938827514648438,40.805095672607422,N,353 +id2931275,2,2016-06-24 13:13:59,2016-06-24 13:26:39,1,-73.989501953125,40.769561767578125,-73.999740600585938,40.745731353759766,N,760 +id0094271,1,2016-01-27 20:41:23,2016-01-27 21:14:04,1,-73.971664428710937,40.750057220458984,-73.992210388183594,40.689975738525391,N,1961 +id0329016,1,2016-05-06 01:08:10,2016-05-06 01:18:03,1,-73.978179931640625,40.752548217773438,-73.954414367675781,40.772289276123047,N,593 +id0531682,1,2016-01-21 21:14:17,2016-01-21 21:20:27,2,-73.982780456542969,40.777614593505859,-73.977775573730469,40.788963317871094,N,370 +id2993351,2,2016-03-12 15:02:38,2016-03-12 15:25:21,1,-73.982444763183594,40.763038635253906,-73.966720581054687,40.806877136230469,N,1363 +id3920129,2,2016-01-01 18:04:33,2016-01-01 18:09:44,5,-73.981086730957031,40.764335632324219,-73.980888366699219,40.771591186523438,N,311 +id3568240,2,2016-03-20 03:24:56,2016-03-20 03:43:32,1,-73.99993896484375,40.728515625,-73.947914123535156,40.77490234375,N,1116 +id1900163,1,2016-06-17 22:46:23,2016-06-17 22:59:18,1,-73.789932250976563,40.643665313720703,-73.790168762207031,40.688728332519531,N,775 +id0270658,2,2016-01-30 13:15:38,2016-01-30 13:30:38,2,-74.005577087402344,40.706550598144531,-73.983009338378906,40.747959136962891,N,900 +id0835670,2,2016-05-23 20:15:26,2016-05-23 20:23:24,3,-73.967025756835938,40.756961822509766,-73.961105346679688,40.772556304931641,N,478 +id2759061,2,2016-05-25 15:05:34,2016-05-25 15:10:29,1,-73.961509704589844,40.811492919921875,-73.967216491699219,40.799331665039063,N,295 +id0896335,1,2016-01-25 11:07:10,2016-01-25 12:04:58,1,-73.77679443359375,40.645473480224609,-73.958183288574219,40.673564910888672,N,3468 +id3334552,1,2016-01-07 07:25:30,2016-01-07 08:03:01,2,-73.980949401855469,40.764286041259766,-73.861846923828125,40.768486022949219,N,2251 +id3518358,2,2016-01-02 11:20:30,2016-01-02 11:25:07,6,-73.993240356445313,40.744010925292969,-74.000923156738281,40.729171752929688,N,277 +id1416710,2,2016-06-06 09:40:28,2016-06-06 09:56:21,1,-73.978279113769531,40.788108825683594,-73.963676452636719,40.764598846435547,N,953 +id1871392,2,2016-03-26 18:04:52,2016-03-26 18:25:23,1,-74.013961791992188,40.713821411132813,-73.991020202636719,40.760677337646484,N,1231 +id1016290,1,2016-06-22 14:21:20,2016-06-22 14:26:09,1,-73.954010009765625,40.787521362304688,-73.969795227050781,40.789432525634766,N,289 +id2909490,1,2016-02-22 05:36:09,2016-02-22 05:38:01,1,-73.969306945800781,40.758434295654297,-73.974807739257812,40.755695343017578,N,112 +id3644476,2,2016-03-06 16:40:24,2016-03-06 16:45:34,1,-73.971099853515625,40.767192840576172,-73.959297180175781,40.782051086425781,N,310 +id2155100,2,2016-04-05 20:52:02,2016-04-05 21:08:08,1,-73.970970153808594,40.756961822509766,-74.005691528320313,40.714599609375,N,966 +id2385726,1,2016-03-23 19:59:40,2016-03-23 20:48:04,1,-73.988037109375,40.7562255859375,-73.931724548339844,40.6949462890625,N,2904 +id3576216,2,2016-01-19 09:33:36,2016-01-19 09:37:53,2,-73.996353149414063,40.725421905517578,-74.007026672363281,40.726608276367188,N,257 +id2293651,2,2016-02-05 20:58:42,2016-02-05 21:17:48,1,-73.954681396484375,40.769561767578125,-73.988471984863281,40.716590881347656,N,1146 +id1426469,1,2016-05-17 18:07:56,2016-05-17 18:34:25,1,-73.96728515625,40.763343811035156,-73.991424560546875,40.749835968017578,N,1589 +id1378185,2,2016-06-21 22:32:02,2016-06-21 22:46:39,1,-73.984657287597656,40.756393432617188,-73.981773376464844,40.784690856933594,N,877 +id1930686,1,2016-06-13 22:11:00,2016-06-13 22:18:46,2,-73.967666625976562,40.763271331787109,-73.974853515625,40.7525634765625,N,466 +id2084773,1,2016-06-06 14:46:21,2016-06-06 15:06:27,1,-73.987289428710938,40.775981903076172,-73.955863952636719,40.784854888916016,N,1206 +id1095654,2,2016-06-14 01:29:12,2016-06-14 01:34:26,3,-73.962348937988281,40.770278930664063,-73.956619262695312,40.782501220703125,N,314 +id0306216,2,2016-02-08 16:49:18,2016-02-08 17:44:53,2,-73.975738525390625,40.758380889892578,-73.783271789550781,40.643829345703125,N,3335 +id3220036,2,2016-05-17 17:54:14,2016-05-17 18:04:32,1,-73.996131896972656,40.748130798339844,-74.002471923828125,40.755222320556641,N,618 +id0352199,2,2016-06-27 23:12:43,2016-06-27 23:26:06,1,-73.989830017089844,40.752140045166016,-73.999099731445313,40.760860443115234,N,803 +id3153115,2,2016-04-05 08:51:11,2016-04-05 08:56:46,2,-73.964393615722656,40.770320892333984,-73.958251953125,40.783241271972656,N,335 +id2637226,1,2016-06-02 00:28:01,2016-06-02 00:35:00,3,-73.982330322265625,40.764591217041016,-74.003082275390625,40.749687194824219,N,419 +id0274861,1,2016-01-18 19:11:52,2016-01-18 19:19:55,2,-73.959266662597656,40.767581939697266,-73.976837158203125,40.743503570556641,N,483 +id0348897,1,2016-05-14 14:49:53,2016-05-14 15:10:09,1,-73.978202819824219,40.749797821044922,-73.973625183105469,40.789268493652344,N,1216 +id1570805,2,2016-05-11 01:20:09,2016-05-11 01:24:58,1,-73.954658508300781,40.764354705810547,-73.962554931640625,40.767257690429687,N,289 +id1330086,1,2016-03-20 03:37:10,2016-03-20 03:58:44,1,-74.005599975585938,40.7376708984375,-73.94146728515625,40.716953277587891,N,1294 +id0957368,2,2016-04-13 23:48:07,2016-04-13 23:54:30,2,-73.984878540039063,40.759109497070313,-73.980613708496094,40.764888763427734,N,383 +id0336115,1,2016-02-13 20:51:30,2016-02-13 20:53:45,1,-73.982093811035156,40.778057098388672,-73.979339599609375,40.783554077148437,N,135 +id3197499,1,2016-02-20 17:20:26,2016-02-20 17:33:15,1,-73.996696472167969,40.742717742919922,-74.001823425292969,40.724456787109375,N,769 +id3799087,1,2016-06-04 00:20:12,2016-06-04 00:42:05,2,-73.979454040527344,40.761219024658203,-73.982955932617188,40.728183746337891,N,1313 +id0851323,2,2016-05-20 12:12:23,2016-05-20 12:20:04,5,-73.971969604492187,40.760845184326172,-73.967277526855469,40.766380310058594,N,461 +id2121853,1,2016-06-25 16:17:18,2016-06-25 16:19:34,1,-74.014198303222656,40.713687896728516,-74.011825561523438,40.722110748291016,N,136 +id3326503,2,2016-02-07 03:52:50,2016-02-07 03:58:27,1,-73.985122680664062,40.7418212890625,-73.989036560058594,40.726898193359375,N,337 +id0532324,2,2016-02-01 22:16:44,2016-02-01 22:21:59,2,-73.975555419921875,40.745338439941406,-73.980728149414063,40.729938507080078,N,315 +id0061021,2,2016-03-10 03:49:20,2016-03-10 04:05:24,6,-73.980781555175781,40.729938507080078,-73.95684814453125,40.685581207275391,N,964 +id0290365,2,2016-04-19 11:50:50,2016-04-19 12:11:26,5,-73.989471435546875,40.741645812988281,-73.970199584960938,40.762668609619141,N,1236 +id3206202,1,2016-03-24 21:44:32,2016-03-24 22:03:52,1,-73.981468200683594,40.778713226318359,-73.99322509765625,40.757572174072266,N,1160 +id3146691,1,2016-01-27 01:13:17,2016-01-27 01:25:09,1,-73.987777709960937,40.738063812255859,-74.007774353027344,40.736225128173828,N,712 +id0355270,1,2016-04-10 11:47:19,2016-04-10 11:53:24,1,-73.994720458984375,40.755596160888672,-73.994613647460938,40.741203308105469,N,365 +id3552680,2,2016-03-22 20:48:00,2016-03-22 20:54:26,1,-73.977310180664063,40.738750457763672,-73.981369018554688,40.713531494140625,N,386 +id0871912,2,2016-05-19 22:14:43,2016-05-19 22:27:38,5,-74.005958557128906,40.739891052246094,-73.992752075195313,40.763359069824219,N,775 +id0846849,2,2016-05-12 12:15:00,2016-05-12 12:27:41,1,-73.989509582519531,40.776432037353516,-73.984405517578125,40.766551971435547,N,761 +id0130048,1,2016-03-08 22:42:12,2016-03-08 23:03:19,1,-74.00762939453125,40.740207672119141,-73.907508850097656,40.726612091064453,N,1267 +id2506712,1,2016-05-23 19:46:05,2016-05-23 19:54:41,2,-73.978683471679688,40.758346557617188,-73.982109069824219,40.772575378417969,N,516 +id0926826,1,2016-03-18 18:11:36,2016-03-18 18:18:01,3,-73.940727233886719,40.792819976806641,-73.945632934570312,40.782814025878906,N,385 +id0647519,1,2016-05-14 11:36:58,2016-05-14 11:51:58,2,-73.995567321777344,40.750629425048828,-74.072906494140625,40.814990997314453,N,900 +id1481156,2,2016-01-12 23:40:11,2016-01-12 23:44:20,1,-73.958320617675781,40.764572143554687,-73.951995849609375,40.78167724609375,N,249 +id3491621,2,2016-03-30 11:10:51,2016-03-30 11:13:54,2,-73.982139587402344,40.778541564941406,-73.986953735351563,40.774318695068359,N,183 +id3176958,1,2016-05-08 02:43:10,2016-05-08 02:52:45,1,-73.993728637695313,40.720962524414063,-73.987449645996094,40.741405487060547,N,575 +id2208826,2,2016-04-03 10:57:39,2016-04-03 11:01:24,2,-73.985877990722656,40.767829895019531,-73.979652404785156,40.759521484375,N,225 +id3748817,2,2016-04-10 03:48:03,2016-04-10 03:54:30,1,-73.984657287597656,40.72821044921875,-73.976951599121094,40.74530029296875,N,387 +id3126063,2,2016-03-22 14:10:31,2016-03-22 15:01:06,1,-73.982307434082031,40.723171234130859,-73.807510375976563,40.655021667480469,N,3035 +id0059180,2,2016-02-10 13:46:00,2016-02-10 13:57:51,1,-73.974761962890625,40.765419006347656,-73.972648620605469,40.757118225097656,N,711 +id3188224,2,2016-04-23 21:45:26,2016-04-23 22:24:55,5,-73.782852172851562,40.646770477294922,-73.976921081542969,40.764198303222656,N,2369 +id0953001,1,2016-05-28 06:15:14,2016-05-28 06:15:54,1,-73.984039306640625,40.746639251708984,-73.98406982421875,40.746627807617188,N,40 +id2430981,1,2016-02-11 13:55:43,2016-02-11 14:05:10,3,-73.986701965332031,40.751590728759766,-73.982681274414063,40.765842437744141,N,567 +id0775739,1,2016-03-24 16:05:47,2016-03-24 16:18:23,1,-73.980995178222656,40.733528137207031,-73.965248107910156,40.754741668701172,Y,756 +id1014874,1,2016-01-13 08:57:49,2016-01-13 09:00:16,1,-73.957527160644531,40.782733917236328,-73.954421997070312,40.787067413330078,N,147 +id0606210,1,2016-05-16 13:02:02,2016-05-16 13:09:58,1,-73.958221435546875,40.784584045410156,-73.97760009765625,40.779132843017578,N,476 +id1843164,2,2016-02-23 14:03:16,2016-02-23 14:13:52,5,-73.989852905273438,40.747119903564453,-74.003669738769531,40.756599426269531,N,636 +id0669446,2,2016-04-08 22:38:29,2016-04-08 22:48:00,1,-73.990699768066406,40.750900268554687,-73.981803894042969,40.762874603271484,N,571 +id2990491,1,2016-01-16 13:52:45,2016-01-16 13:56:57,1,-73.954940795898438,40.788810729980469,-73.971961975097656,40.794853210449219,N,252 +id1688114,2,2016-04-30 09:21:19,2016-04-30 09:27:21,2,-73.977561950683594,40.729969024658203,-74.004493713378906,40.7406005859375,N,362 +id3226004,1,2016-05-22 12:46:53,2016-05-22 12:56:32,1,-73.962013244628906,40.778961181640625,-73.974197387695313,40.762615203857422,N,579 +id0649865,2,2016-02-12 22:30:36,2016-02-12 22:37:16,1,-73.973251342773438,40.763969421386719,-73.978424072265625,40.764072418212891,N,400 +id1185670,2,2016-04-22 19:34:25,2016-04-22 19:46:12,3,-73.990547180175781,40.739551544189453,-73.981582641601562,40.758449554443359,N,707 +id0663771,2,2016-02-19 22:19:26,2016-02-19 22:37:13,3,-73.966987609863281,40.793621063232422,-73.988739013671875,40.745380401611328,N,1067 +id1170003,2,2016-01-07 15:35:31,2016-01-07 15:42:53,1,-73.969398498535156,40.753700256347656,-73.982269287109375,40.748725891113281,N,442 +id3307901,1,2016-06-03 14:58:14,2016-06-03 15:06:34,2,-74.001144409179687,40.731403350830078,-73.985862731933594,40.734516143798828,N,500 +id0457772,2,2016-05-20 19:31:24,2016-05-20 19:40:31,1,-73.970420837402344,40.765048980712891,-73.981407165527344,40.780101776123047,N,547 +id3649866,1,2016-03-23 09:06:08,2016-03-23 09:09:48,1,-73.999504089355469,40.743911743164063,-73.98956298828125,40.740634918212891,N,220 +id2991963,1,2016-01-17 00:47:38,2016-01-17 00:55:07,1,-74.001670837402344,40.732437133789063,-73.991363525390625,40.75018310546875,N,449 +id2640104,2,2016-03-22 21:09:36,2016-03-22 21:16:47,1,-73.954452514648438,40.779060363769531,-73.976081848144531,40.776451110839844,N,431 +id1581755,2,2016-05-11 00:18:30,2016-05-11 00:38:07,6,-73.992050170898438,40.750049591064453,-73.98309326171875,40.696258544921875,N,1177 +id2612036,1,2016-04-03 00:11:12,2016-04-03 00:29:28,1,-74.008750915527344,40.740917205810547,-73.973686218261719,40.752117156982422,N,1096 +id0011327,2,2016-01-11 22:00:07,2016-01-11 22:25:45,1,-73.790321350097656,40.643829345703125,-73.924423217773438,40.669418334960938,N,1538 +id3996225,1,2016-05-08 08:52:58,2016-05-08 09:10:52,2,-73.873077392578125,40.774204254150391,-73.95831298828125,40.760589599609375,N,1074 +id3669208,2,2016-04-09 22:33:52,2016-04-09 22:56:53,1,-73.992652893066406,40.723789215087891,-74.004249572753906,40.742458343505859,N,1381 +id0844850,2,2016-02-13 15:17:49,2016-02-13 15:27:23,1,-73.984764099121094,40.769306182861328,-73.978042602539063,40.753589630126953,N,574 +id1412157,2,2016-03-14 10:52:01,2016-03-14 11:24:35,1,-73.862754821777344,40.768833160400391,-73.9884033203125,40.734615325927734,N,1954 +id1047300,2,2016-01-09 18:11:27,2016-01-09 18:30:01,6,-73.983421325683594,40.770168304443359,-73.982429504394531,40.736839294433594,N,1114 +id1895783,2,2016-05-01 14:10:02,2016-05-01 14:21:25,1,-73.941848754882813,40.798721313476562,-73.959922790527344,40.762840270996094,N,683 +id0346643,2,2016-03-30 17:28:05,2016-03-30 17:35:31,1,-73.952957153320313,40.783031463623047,-73.962310791015625,40.798179626464844,N,446 +id1782289,2,2016-01-13 21:34:35,2016-01-13 21:41:27,1,-73.982353210449219,40.751377105712891,-73.980735778808594,40.739585876464844,N,412 +id0031910,1,2016-06-29 18:34:50,2016-06-29 18:44:38,1,-74.012435913085938,40.720371246337891,-74.003395080566406,40.729354858398438,N,588 +id1516400,2,2016-03-26 05:54:15,2016-03-26 06:33:36,2,-73.782142639160156,40.644680023193359,-73.993240356445313,40.688468933105469,N,2361 +id1027528,2,2016-02-11 13:47:33,2016-02-11 13:58:53,1,-73.966201782226563,40.758319854736328,-73.978706359863281,40.737018585205078,N,680 +id2703151,2,2016-04-16 14:51:04,2016-04-16 14:59:17,1,-73.991569519042969,40.750038146972656,-73.979469299316406,40.761100769042969,N,493 +id3942712,1,2016-06-23 10:05:59,2016-06-23 10:16:59,1,-73.998268127441406,40.733783721923828,-73.995018005371094,40.750030517578125,N,660 +id1982079,2,2016-01-13 22:41:33,2016-01-13 23:01:52,6,-73.966819763183594,40.77001953125,-74.0025634765625,40.7381591796875,N,1219 +id0802436,2,2016-03-24 16:23:12,2016-03-24 16:24:13,1,-73.980857849121094,40.737018585205078,-73.978828430175781,40.736640930175781,N,61 +id3197488,2,2016-06-04 18:32:59,2016-06-04 18:41:30,1,-73.973831176757813,40.763950347900391,-73.977035522460938,40.759300231933594,N,511 +id0102886,1,2016-04-19 23:43:08,2016-04-19 23:52:27,1,-73.972824096679688,40.758403778076172,-73.986236572265625,40.727947235107422,N,559 +id3444837,2,2016-04-15 18:31:50,2016-04-15 18:52:02,2,-73.991020202636719,40.764240264892578,-73.9794921875,40.761390686035156,N,1212 +id1743228,2,2016-01-20 09:28:35,2016-01-20 09:32:47,4,-73.979537963867188,40.776603698730469,-73.979660034179688,40.7813720703125,N,252 +id1403611,1,2016-05-24 12:21:39,2016-05-24 12:38:59,2,-73.984283447265625,40.749229431152344,-73.998420715332031,40.722663879394531,N,1040 +id1908361,2,2016-01-21 23:28:40,2016-01-21 23:38:11,6,-73.939956665039063,40.851428985595703,-73.954261779785156,40.821491241455078,N,571 +id0463572,2,2016-05-11 16:55:59,2016-05-11 17:02:13,2,-73.946258544921875,40.772689819335938,-73.956687927246094,40.783649444580078,N,374 +id2295021,2,2016-04-10 17:39:50,2016-04-10 18:48:17,6,-73.903511047363281,40.63916015625,-73.903106689453125,40.639209747314453,N,4107 +id2810751,1,2016-01-12 11:59:11,2016-01-12 12:10:38,1,-73.966171264648438,40.766361236572266,-73.954490661621094,40.766143798828125,N,687 +id0845090,1,2016-03-10 20:41:22,2016-03-10 20:50:18,2,-73.98992919921875,40.734668731689453,-73.984794616699219,40.743499755859375,N,536 +id2083747,2,2016-03-26 19:47:00,2016-03-26 19:50:09,3,-73.97052001953125,40.751869201660156,-73.980361938476562,40.742687225341797,N,189 +id3164619,1,2016-04-21 07:22:17,2016-04-21 07:26:04,1,-73.980079650878906,40.785568237304688,-73.986274719238281,40.776992797851563,N,227 +id1904103,2,2016-06-05 04:58:04,2016-06-05 05:23:19,1,-73.777442932128906,40.646640777587891,-73.935775756835938,40.848472595214844,N,1515 +id1710392,2,2016-05-22 02:14:21,2016-05-22 02:33:36,2,-74.005027770996094,40.719200134277344,-73.929740905761719,40.70294189453125,N,1155 +id1889133,1,2016-04-16 05:53:45,2016-04-16 06:03:46,1,-73.985870361328125,40.735202789306641,-73.947029113769531,40.791011810302734,N,601 +id0965867,1,2016-05-13 06:32:50,2016-05-13 06:41:58,1,-73.969886779785156,40.753208160400391,-73.989616394042969,40.764461517333984,N,548 +id2054300,1,2016-03-25 15:40:55,2016-03-25 16:33:23,1,-73.790184020996094,40.646781921386719,-73.962722778320312,40.75872802734375,N,3148 +id0349374,1,2016-03-28 17:29:22,2016-03-28 17:34:10,1,-73.988433837890625,40.737178802490234,-73.981063842773438,40.73883056640625,N,288 +id3187576,2,2016-01-06 07:29:02,2016-01-06 07:49:21,1,-73.966827392578125,40.80426025390625,-73.972389221191406,40.759941101074219,N,1219 +id3821644,2,2016-02-23 20:40:59,2016-02-23 20:49:39,1,-73.98028564453125,40.765403747558594,-73.977607727050781,40.782768249511719,N,520 +id3227284,1,2016-06-29 14:59:41,2016-06-29 15:12:45,4,-73.99127197265625,40.749675750732422,-73.9759521484375,40.776233673095703,N,784 +id2582091,1,2016-05-24 07:43:17,2016-05-24 08:12:24,1,-73.94927978515625,40.773040771484375,-73.988029479980469,40.769012451171875,N,1747 +id2618907,1,2016-05-31 18:51:21,2016-05-31 19:10:59,1,-73.977256774902344,40.789745330810547,-74.00250244140625,40.718906402587891,N,1178 +id2944655,2,2016-02-07 17:56:08,2016-02-07 18:10:49,1,-74.001449584960938,40.733638763427734,-74.01275634765625,40.716217041015625,N,881 +id3286220,1,2016-03-21 16:36:56,2016-03-21 17:42:45,1,-73.948822021484375,40.773197174072266,-73.782997131347656,40.643905639648438,N,3949 +id1221898,1,2016-05-05 18:42:19,2016-05-05 18:45:11,1,-73.969169616699219,40.761184692382813,-73.968841552734375,40.754825592041016,N,172 +id1302836,2,2016-03-19 02:00:01,2016-03-19 02:19:44,5,-73.956939697265625,40.770721435546875,-73.864326477050781,40.756099700927734,N,1183 +id2959226,1,2016-02-03 19:39:51,2016-02-03 19:51:22,1,-73.989921569824219,40.733600616455078,-73.976554870605469,40.748226165771484,N,691 +id3916261,1,2016-03-24 15:09:00,2016-03-24 15:22:26,1,-73.974647521972656,40.75628662109375,-73.989036560058594,40.7349853515625,N,806 +id3680449,1,2016-04-04 13:45:01,2016-04-04 13:55:41,1,-73.986763000488281,40.742702484130859,-73.976058959960937,40.751247406005859,N,640 +id2052028,1,2016-02-29 11:49:05,2016-02-29 12:02:56,1,-73.991096496582031,40.770828247070313,-73.988494873046875,40.754463195800781,N,831 +id3507184,2,2016-03-14 15:32:44,2016-03-14 15:45:59,2,-73.95941162109375,40.779960632324219,-73.980690002441406,40.782768249511719,N,795 +id0015889,1,2016-04-17 23:44:59,2016-04-17 23:53:29,1,-73.970222473144531,40.757648468017578,-73.993309020996094,40.747203826904297,N,510 +id1554405,2,2016-05-09 00:22:34,2016-05-09 00:26:44,2,-74.004493713378906,40.741878509521484,-73.993637084960938,40.746921539306641,N,250 +id1559962,2,2016-01-21 10:23:01,2016-01-21 10:30:29,5,-73.993972778320312,40.746250152587891,-73.986518859863281,40.742870330810547,N,448 +id0455846,2,2016-02-25 22:35:54,2016-02-25 22:53:28,6,-73.986740112304688,40.729778289794922,-73.994682312011719,40.751911163330078,N,1054 +id1240503,2,2016-05-07 11:46:37,2016-05-07 11:50:05,5,-73.979965209960937,40.784099578857422,-73.982208251953125,40.778732299804688,N,208 +id0771988,2,2016-02-21 04:36:44,2016-02-21 04:39:38,1,-73.95050048828125,40.669502258300781,-73.946578979492187,40.673225402832031,N,174 +id0312426,2,2016-04-22 11:45:58,2016-04-22 12:01:27,1,-73.977897644042969,40.773391723632813,-73.963333129882813,40.761920928955078,N,929 +id3820242,2,2016-01-13 06:34:44,2016-01-13 06:37:12,1,-73.976272583007812,40.74822998046875,-73.97564697265625,40.755519866943359,N,148 +id1033867,1,2016-02-23 11:11:58,2016-02-23 11:23:02,1,-73.973892211914063,40.750682830810547,-73.988258361816406,40.751354217529297,N,664 +id2854832,2,2016-04-23 13:28:57,2016-04-23 13:34:54,3,-73.982803344726563,40.766975402832031,-73.974586486816406,40.778236389160156,N,357 +id3189856,1,2016-04-13 13:52:55,2016-04-13 14:14:13,1,-73.962875366210938,40.770137786865234,-73.985061645507813,40.732151031494141,N,1278 +id2455681,1,2016-04-16 00:26:39,2016-04-16 01:10:41,3,-73.972183227539063,40.764598846435547,-73.975372314453125,40.686569213867188,N,2642 +id2365625,2,2016-04-06 10:38:05,2016-04-06 10:49:27,1,-73.986282348632812,40.746726989746094,-74.004615783691406,40.741527557373047,N,682 +id0656022,1,2016-05-01 11:14:01,2016-05-01 11:22:28,2,-73.966094970703125,40.770980834960938,-73.973419189453125,40.750465393066406,N,507 +id3161034,1,2016-03-10 21:13:35,2016-03-10 21:37:14,1,-74.007095336914063,40.740032196044922,-73.986732482910156,40.702312469482422,N,1419 +id3347941,1,2016-01-16 14:15:33,2016-01-16 15:03:49,2,-73.956352233886719,40.781509399414063,-73.956222534179687,40.781604766845703,N,2896 +id3370806,2,2016-02-17 09:39:53,2016-02-17 10:03:20,1,-73.986358642578125,40.730308532714844,-73.973274230957031,40.74981689453125,N,1407 +id2284215,2,2016-06-23 12:26:42,2016-06-23 12:31:34,1,-73.981956481933594,40.769111633300781,-73.988449096679687,40.774539947509766,N,292 +id2214277,2,2016-03-17 22:25:35,2016-03-17 22:54:15,1,-73.978302001953125,40.756561279296875,-73.996017456054687,40.762203216552734,N,1720 +id3872048,1,2016-01-25 19:04:32,2016-01-25 19:13:18,1,-73.973075866699219,40.754539489746094,-73.981170654296875,40.754295349121094,N,526 +id3200872,1,2016-05-25 10:37:18,2016-05-25 10:45:45,1,-73.991813659667969,40.749378204345703,-73.982635498046875,40.756492614746094,N,507 +id3582105,2,2016-05-05 10:44:52,2016-05-05 10:56:23,1,-73.987518310546875,40.728641510009766,-74.009300231933594,40.701938629150391,N,691 +id0433641,1,2016-06-24 22:10:17,2016-06-24 22:23:04,1,-73.986831665039062,40.747928619384766,-73.962188720703125,40.767475128173828,N,767 +id3663449,1,2016-03-07 21:06:48,2016-03-07 21:25:09,2,-73.982307434082031,40.768543243408203,-73.97747802734375,40.733936309814453,N,1101 +id0130326,2,2016-05-27 11:30:35,2016-05-27 11:41:36,1,-73.955955505371094,40.781925201416016,-73.939476013183594,40.805187225341797,N,661 +id2370814,1,2016-04-05 05:06:38,2016-04-05 05:19:20,1,-73.977554321289063,40.746219635009766,-73.941207885742188,40.805019378662109,N,762 +id2769875,1,2016-06-30 01:51:45,2016-06-30 02:03:23,1,-73.99444580078125,40.750785827636719,-74.012107849121094,40.706718444824219,N,698 +id3905825,2,2016-02-13 05:22:28,2016-02-13 05:30:45,6,-73.955520629882813,40.681171417236328,-73.928733825683594,40.679531097412109,N,497 +id0079986,2,2016-06-26 19:27:06,2016-06-26 19:36:55,1,-73.961349487304688,40.769191741943359,-73.968658447265625,40.797588348388672,N,589 +id1143122,1,2016-04-28 21:02:37,2016-04-28 21:24:40,1,-74.00250244140625,40.733966827392578,-73.965141296386719,40.759933471679688,N,1323 +id0650475,2,2016-06-17 05:56:06,2016-06-17 06:12:26,1,-73.972938537597656,40.795768737792969,-74.011695861816406,40.713890075683594,N,980 +id3338793,2,2016-01-09 15:00:36,2016-01-09 15:08:08,5,-73.976150512695312,40.789096832275391,-73.989967346191406,40.776077270507812,N,452 +id2898427,1,2016-02-03 05:44:26,2016-02-03 05:58:03,1,-73.940452575683594,40.793327331542969,-73.97869873046875,40.740932464599609,N,817 +id3010650,2,2016-04-26 15:22:00,2016-04-26 15:33:24,1,-73.9732666015625,40.763908386230469,-73.986396789550781,40.745670318603516,N,684 +id2520113,2,2016-06-02 21:16:39,2016-06-02 21:34:40,1,-73.987098693847656,40.742710113525391,-73.980239868164062,40.765609741210938,N,1081 +id2647877,2,2016-06-25 23:57:39,2016-06-26 00:08:04,2,-73.999549865722656,40.738521575927734,-73.992332458496094,40.75836181640625,N,625 +id3006690,2,2016-01-15 18:10:01,2016-01-15 18:40:10,1,-73.942298889160156,40.711959838867188,-73.982505798339844,40.723041534423828,N,1809 +id2839015,2,2016-02-07 18:09:03,2016-02-07 18:21:57,2,-73.974067687988281,40.757869720458984,-73.999725341796875,40.734706878662109,N,774 +id2255384,2,2016-04-10 19:02:17,2016-04-10 19:11:38,1,-73.976112365722656,40.740028381347656,-73.983299255371094,40.750560760498047,N,561 +id1892369,1,2016-05-17 12:40:37,2016-05-17 12:56:57,1,-73.9970703125,40.737621307373047,-73.993118286132812,40.724216461181641,N,980 +id3933659,1,2016-04-02 10:23:50,2016-04-02 10:40:09,1,-73.988723754882813,40.721504211425781,-73.976387023925781,40.761081695556641,N,979 +id3349387,2,2016-05-19 07:57:55,2016-05-19 08:02:38,1,-73.990859985351563,40.756187438964844,-73.984596252441406,40.76312255859375,N,283 +id0208123,1,2016-01-12 17:06:24,2016-01-12 17:14:20,2,-73.989860534667969,40.772151947021484,-73.974952697753906,40.792858123779297,N,476 +id2911097,2,2016-06-19 02:56:19,2016-06-19 03:17:32,5,-73.943328857421875,40.789459228515625,-73.896041870117187,40.744720458984375,N,1273 +id3176373,2,2016-05-22 23:22:12,2016-05-22 23:50:43,1,-73.789459228515625,40.646999359130859,-73.981880187988281,40.670551300048828,N,1711 +id3072336,1,2016-03-08 17:48:11,2016-03-08 17:58:31,1,-73.978225708007813,40.762931823730469,-73.976829528808594,40.782455444335937,N,620 +id3983319,1,2016-06-05 13:48:14,2016-06-05 14:22:22,1,-73.974227905273438,40.756664276123047,-73.789863586425781,40.643119812011719,N,2048 +id1529528,1,2016-02-23 09:36:01,2016-02-23 09:54:21,1,-73.960464477539063,40.772743225097656,-73.980087280273437,40.760993957519531,N,1100 +id1416976,2,2016-06-03 07:28:39,2016-06-03 07:43:46,1,-73.951667785644531,40.769805908203125,-73.9814453125,40.756919860839844,N,907 +id3465832,1,2016-06-30 09:58:46,2016-06-30 10:03:04,2,-73.953521728515625,40.778594970703125,-73.948684692382812,40.778247833251953,N,258 +id0913911,2,2016-04-07 21:12:27,2016-04-07 21:45:37,1,-73.969833374023438,40.762722015380859,-73.994529724121094,40.690231323242188,N,1990 +id1503971,1,2016-06-27 12:50:52,2016-06-27 13:02:02,3,-73.96099853515625,40.769157409667969,-73.982032775878906,40.7763671875,N,670 +id1089531,2,2016-04-16 16:12:42,2016-04-16 16:20:38,5,-73.995292663574219,40.759929656982422,-73.979820251464844,40.777759552001953,N,476 +id0823099,2,2016-02-18 10:13:13,2016-02-18 10:17:29,2,-73.972633361816406,40.786697387695312,-73.980842590332031,40.774520874023438,N,256 +id0161373,2,2016-01-29 16:17:17,2016-01-29 16:27:18,1,-74.004386901855469,40.728565216064453,-73.995368957519531,40.730812072753906,N,601 +id0035658,1,2016-01-25 08:36:43,2016-01-25 08:41:09,1,-73.981681823730469,40.770503997802734,-73.981948852539063,40.777103424072266,N,266 +id1517235,2,2016-06-10 17:01:07,2016-06-10 17:26:15,2,-73.981208801269531,40.759231567382812,-73.966117858886719,40.801521301269531,N,1508 +id3214849,1,2016-03-17 17:24:20,2016-03-17 17:30:51,1,-73.963768005371094,40.771221160888672,-73.95849609375,40.778549194335938,N,391 +id2147494,2,2016-04-02 22:45:52,2016-04-02 22:56:36,2,-73.970230102539062,40.749870300292969,-73.952140808105469,40.781360626220703,N,644 +id1875770,1,2016-06-30 08:40:52,2016-06-30 09:09:18,1,-73.955215454101563,40.786106109619141,-73.981735229492188,40.752128601074219,N,1706 +id0002413,1,2016-04-09 19:33:48,2016-04-09 19:48:12,1,-74.004425048828125,40.728546142578125,-73.990623474121094,40.7459716796875,N,864 +id0230634,1,2016-02-02 00:08:41,2016-02-02 00:15:24,1,-73.969528198242188,40.675365447998047,-73.977409362792969,40.696575164794922,N,403 +id0022211,2,2016-02-16 11:45:32,2016-02-16 11:55:13,1,-73.982093811035156,40.743118286132812,-73.987678527832031,40.750789642333984,N,581 +id0334829,2,2016-04-15 07:56:24,2016-04-15 08:08:58,1,-73.975967407226562,40.743980407714844,-73.970588684082031,40.756641387939453,N,754 +id3106879,2,2016-01-24 09:59:36,2016-01-24 10:06:50,1,-73.982528686523437,40.61279296875,-73.993171691894531,40.602607727050781,N,434 +id3836712,2,2016-03-08 20:39:43,2016-03-08 20:51:21,2,-73.964218139648437,40.770477294921875,-73.941108703613281,40.814273834228516,N,698 +id0180457,2,2016-03-17 22:16:51,2016-03-17 22:27:39,1,-73.980743408203125,40.750629425048828,-73.99407958984375,40.7489013671875,N,648 +id3237210,1,2016-01-20 21:56:38,2016-01-20 22:17:33,1,-74.003898620605469,40.713150024414063,-73.992874145507813,40.697780609130859,N,1255 +id2643287,2,2016-05-14 02:41:10,2016-05-14 03:05:06,1,-73.988792419433594,40.734893798828125,-73.950263977050781,40.722793579101563,N,1436 +id0308395,2,2016-03-25 16:45:02,2016-03-25 17:00:58,1,-73.992599487304688,40.723869323730469,-73.964408874511719,40.719539642333984,N,956 +id0572918,2,2016-01-09 21:21:41,2016-01-09 21:29:38,6,-73.975296020507812,40.749565124511719,-73.974624633789063,40.762020111083984,N,477 +id3779894,2,2016-06-14 06:04:52,2016-06-14 06:12:00,1,-73.980781555175781,40.779865264892578,-73.981681823730469,40.752391815185547,N,428 +id0178578,2,2016-05-16 19:51:03,2016-05-16 20:01:20,1,-73.980567932128906,40.751201629638672,-73.978355407714844,40.730857849121094,N,617 +id1161637,2,2016-05-03 09:31:58,2016-05-03 09:56:46,1,-73.967010498046875,40.766761779785156,-73.940391540527344,40.840599060058594,N,1488 +id1280024,1,2016-05-13 10:51:07,2016-05-13 10:59:02,1,-73.969375610351562,40.766311645507813,-73.959144592285156,40.780540466308594,N,475 +id3619640,1,2016-04-08 09:28:39,2016-04-08 10:01:59,1,-73.863601684570313,40.769767761230469,-73.977485656738281,40.759193420410156,Y,2000 +id2962654,2,2016-05-13 10:16:48,2016-05-13 10:32:21,1,-73.982223510742188,40.76763916015625,-73.956977844238281,40.783271789550781,N,933 +id1280441,1,2016-05-16 14:09:05,2016-05-16 14:12:23,1,-73.968177795410156,40.75982666015625,-73.960884094238281,40.768230438232422,N,198 +id1686397,1,2016-02-08 15:43:03,2016-02-08 16:30:53,1,-73.863235473632812,40.770038604736328,-74.013771057128906,40.709129333496094,N,2870 +id3166896,1,2016-04-05 21:57:01,2016-04-05 22:00:46,1,-73.960220336914062,40.773139953613281,-73.949546813964844,40.770229339599609,N,225 +id3295265,1,2016-03-15 08:45:05,2016-03-15 08:50:02,1,-73.94580078125,40.812843322753906,-73.952621459960937,40.811069488525391,N,297 +id1111530,2,2016-04-05 23:10:57,2016-04-05 23:25:03,1,-73.982208251953125,40.769241333007813,-73.959922790527344,40.7822265625,N,846 +id1711870,2,2016-05-13 22:08:53,2016-05-13 22:20:18,3,-73.960578918457031,40.769660949707031,-73.977020263671875,40.749828338623047,N,685 +id2084456,2,2016-04-03 15:48:27,2016-04-03 16:03:14,1,-73.992149353027344,40.749538421630859,-73.985931396484375,40.729400634765625,N,887 +id0067459,2,2016-04-22 11:55:21,2016-04-22 12:50:38,1,-73.945899963378906,40.786090850830078,-73.885215759277344,40.679943084716797,N,3317 +id1804993,2,2016-06-29 14:44:46,2016-06-29 15:12:37,1,-73.982109069824219,40.770389556884766,-73.977752685546875,40.757038116455078,N,1671 +id3397528,2,2016-05-30 04:01:54,2016-05-30 04:16:24,5,-73.993293762207031,40.722450256347656,-73.999221801757812,40.673259735107422,N,870 +id3502622,2,2016-04-17 17:41:49,2016-04-17 17:46:33,2,-73.965919494628906,40.758468627929687,-73.965835571289063,40.753650665283203,N,284 +id0148335,2,2016-05-13 20:09:08,2016-05-13 20:24:40,6,-73.977378845214844,40.738613128662109,-74.001953125,40.731498718261719,N,932 +id2456838,1,2016-01-13 20:11:46,2016-01-13 20:11:53,1,-73.793441772460938,40.644813537597656,-73.795242309570313,40.644668579101563,N,7 +id2293051,1,2016-05-19 07:57:40,2016-05-19 08:09:38,2,-73.985450744628906,40.73583984375,-74.000694274902344,40.7479248046875,N,718 +id0302166,2,2016-04-27 21:33:32,2016-04-27 21:46:22,3,-73.977081298828125,40.764472961425781,-73.974800109863281,40.755950927734375,N,770 +id2002130,2,2016-05-29 01:11:25,2016-05-29 01:21:50,1,-73.982986450195313,40.767902374267578,-74.002365112304687,40.756008148193359,N,625 +id0718143,2,2016-04-15 23:16:07,2016-04-15 23:29:12,1,-73.986717224121094,40.757236480712891,-73.977859497070312,40.74578857421875,N,785 +id1284462,1,2016-01-29 16:10:38,2016-01-29 16:16:59,1,-73.982902526855469,40.756778717041016,-73.991264343261719,40.750083923339844,N,381 +id1903539,1,2016-02-11 15:58:11,2016-02-11 16:10:51,1,-73.982101440429688,40.765369415283203,-73.990142822265625,40.756698608398438,N,760 +id2412768,1,2016-06-01 12:40:08,2016-06-01 12:54:07,4,-73.994125366210938,40.746009826660156,-73.995262145996094,40.726802825927734,N,839 +id2171759,2,2016-04-04 11:52:29,2016-04-04 11:57:41,3,-74.002822875976563,40.749557495117187,-73.993423461914062,40.755409240722656,N,312 +id0203370,1,2016-02-17 10:46:39,2016-02-17 11:08:15,1,-73.995002746582031,40.725383758544922,-73.988296508789063,40.753826141357422,N,1296 +id3363716,1,2016-06-12 04:08:29,2016-06-12 04:15:42,1,-73.989067077636719,40.718959808349609,-73.9755859375,40.745426177978516,N,433 +id0375039,1,2016-06-08 23:32:19,2016-06-08 23:40:26,2,-73.991096496582031,40.745010375976563,-73.969261169433594,40.752010345458984,N,487 +id2130929,2,2016-01-27 11:23:55,2016-01-27 11:40:28,1,-73.995391845703125,40.739471435546875,-73.989692687988281,40.734268188476563,N,993 +id0593374,1,2016-05-30 23:02:53,2016-05-30 23:31:42,2,-73.776718139648438,40.645107269287109,-73.917182922363281,40.700546264648438,N,1729 +id0021298,1,2016-02-10 18:41:54,2016-02-10 18:54:08,1,-74.0062255859375,40.723308563232422,-73.986320495605469,40.730743408203125,N,734 +id3223792,2,2016-05-11 23:28:43,2016-05-11 23:33:44,2,-74.010398864746094,40.719570159912109,-74.004142761230469,40.730167388916016,N,301 +id0305250,2,2016-04-16 13:22:38,2016-04-16 13:37:55,6,-73.989448547363281,40.741710662841797,-73.983596801757812,40.762260437011719,N,917 +id3106803,2,2016-02-29 14:10:56,2016-02-29 14:17:21,6,-74.011650085449219,40.710269927978516,-74.004676818847656,40.727123260498047,N,385 +id3855990,1,2016-02-05 14:08:10,2016-02-05 14:17:24,1,-73.95233154296875,40.777797698974609,-73.9635009765625,40.761909484863281,N,554 +id0673326,2,2016-06-08 02:30:02,2016-06-08 02:31:47,3,-73.98797607421875,40.732131958007813,-73.979820251464844,40.743350982666016,N,105 +id3338337,2,2016-06-23 12:16:11,2016-06-23 12:28:06,2,-73.950332641601563,40.779708862304688,-73.95806884765625,40.773391723632813,N,715 +id2470185,2,2016-05-02 22:07:17,2016-05-02 22:14:19,1,-73.931953430175781,40.744525909423828,-73.912002563476562,40.761943817138672,N,422 +id1293377,1,2016-01-02 14:36:08,2016-01-02 14:51:15,2,-73.95989990234375,40.773574829101563,-73.990463256835938,40.750984191894531,N,907 +id0984063,1,2016-03-12 15:54:03,2016-03-12 16:00:05,1,-73.958351135253906,40.780746459960937,-73.964988708496094,40.766803741455078,N,362 +id1796409,1,2016-06-24 20:36:33,2016-06-24 20:40:55,2,-73.960853576660156,40.760772705078125,-73.968147277832031,40.762672424316406,N,262 +id2736967,2,2016-01-17 23:31:45,2016-01-17 23:51:20,1,-73.992576599121094,40.748580932617188,-73.950187683105469,40.806549072265625,N,1175 +id1822105,1,2016-06-29 05:22:53,2016-06-29 05:31:19,1,-74.003150939941406,40.733654022216797,-73.989799499511719,40.762676239013672,N,506 +id3955378,2,2016-05-15 14:14:40,2016-05-15 14:42:10,1,-73.979026794433594,40.789470672607422,-73.984703063964844,40.763160705566406,N,1650 +id1839547,2,2016-01-11 12:23:40,2016-01-11 12:29:23,1,-73.958335876464844,40.774795532226563,-73.956382751464844,40.783134460449219,N,343 +id1629416,1,2016-02-29 10:04:11,2016-02-29 10:59:56,1,-73.786102294921875,40.639755249023438,-74.003875732421875,40.716850280761719,N,3345 +id0783698,1,2016-04-13 21:24:24,2016-04-13 21:35:42,3,-74.000213623046875,40.727203369140625,-73.988578796386719,40.745613098144531,N,678 +id1765312,2,2016-04-15 07:58:25,2016-04-15 08:03:26,1,-73.996002197265625,40.725139617919922,-73.987876892089844,40.73223876953125,N,301 +id2387896,2,2016-03-03 12:36:05,2016-03-03 12:50:57,1,-73.980674743652344,40.730636596679688,-74.006797790527344,40.719928741455078,N,892 +id3806158,1,2016-01-24 20:55:16,2016-01-24 21:05:26,1,-73.987991333007812,40.731594085693359,-74.003883361816406,40.707660675048828,N,610 +id0445112,2,2016-03-11 08:25:33,2016-03-11 08:37:10,1,-73.968955993652344,40.761081695556641,-73.982749938964844,40.750278472900391,N,697 +id3180887,1,2016-04-19 20:56:39,2016-04-19 20:57:49,1,-73.975433349609375,40.787834167480469,-73.969436645507813,40.785545349121094,N,70 +id1546031,1,2016-05-16 21:21:28,2016-05-16 21:37:24,2,-73.983070373535156,40.773452758789063,-73.953269958496094,40.77239990234375,N,956 +id0551212,1,2016-02-12 09:30:57,2016-02-12 09:41:13,1,-73.996498107910156,40.733818054199219,-74.0089111328125,40.719951629638672,N,616 +id0486362,1,2016-02-13 10:32:16,2016-02-13 10:52:22,1,-73.987281799316406,40.770908355712891,-73.993629455566406,40.734130859375,N,1206 +id0297286,2,2016-03-24 22:33:54,2016-03-24 23:25:02,5,-73.983299255371094,40.766410827636719,-73.936111450195313,40.697360992431641,N,3068 +id0253881,2,2016-03-23 21:35:27,2016-03-23 21:43:19,2,-74.003021240234375,40.7269287109375,-73.987777709960937,40.737819671630859,N,472 +id2661055,1,2016-05-12 18:56:34,2016-05-12 19:08:02,1,-73.971969604492187,40.762603759765625,-73.955734252929687,40.772335052490234,N,688 +id2397759,1,2016-04-04 14:39:03,2016-04-04 14:46:32,1,-73.98114013671875,40.774559020996094,-73.973419189453125,40.764068603515625,N,449 +id3935934,2,2016-04-13 21:36:37,2016-04-13 21:58:00,2,-73.989021301269531,40.745349884033203,-73.961769104003906,40.768291473388672,N,1283 +id1592313,2,2016-05-19 08:16:40,2016-05-19 08:27:03,2,-73.953628540039063,40.767116546630859,-73.974617004394531,40.737106323242187,N,623 +id1699173,2,2016-02-05 15:17:01,2016-02-05 15:22:27,1,-73.978569030761719,40.756553649902344,-73.989822387695313,40.739349365234375,N,326 +id2281954,1,2016-03-18 16:01:05,2016-03-18 16:01:54,1,-73.949623107910156,40.780830383300781,-73.950386047363281,40.777309417724609,N,49 +id3016351,2,2016-04-07 06:28:01,2016-04-07 06:33:30,1,-73.958427429199219,40.713188171386719,-73.950950622558594,40.721569061279297,N,329 +id1001017,2,2016-03-18 19:47:59,2016-03-18 19:50:55,5,-73.956687927246094,40.800861358642578,-73.953033447265625,40.807491302490234,N,176 +id2180361,1,2016-03-11 18:20:22,2016-03-11 18:48:25,2,-73.993576049804688,40.747108459472656,-73.996223449707031,40.711433410644531,N,1683 +id1983599,1,2016-04-13 07:42:22,2016-04-13 07:58:48,1,-73.926536560058594,40.765522003173828,-73.968238830566406,40.751285552978516,N,986 +id2521968,2,2016-02-06 14:34:26,2016-02-06 14:58:04,2,-73.982559204101563,40.771942138671875,-74.005020141601563,40.731838226318359,N,1418 +id0928834,1,2016-04-13 22:19:03,2016-04-13 22:35:11,2,-73.99359130859375,40.721378326416016,-73.997474670410156,40.695514678955078,N,968 +id0944060,2,2016-06-02 17:57:06,2016-06-02 18:18:59,1,-73.974090576171875,40.763198852539062,-73.982559204101563,40.774444580078125,N,1313 +id0767725,1,2016-05-19 14:56:44,2016-05-19 15:06:14,1,-74.005722045898437,40.738239288330078,-73.992088317871094,40.735492706298828,N,570 +id2319437,1,2016-04-27 13:26:46,2016-04-27 13:45:04,1,-74.003814697265625,40.732028961181641,-73.956649780273438,40.713409423828125,N,1098 +id1383635,2,2016-04-07 19:41:19,2016-04-07 19:50:09,5,-73.989158630371094,40.739799499511719,-73.97369384765625,40.747989654541016,N,530 +id2935220,1,2016-05-15 11:31:52,2016-05-15 11:43:10,1,-73.99652099609375,40.725414276123047,-73.993515014648437,40.690048217773437,N,678 +id1337326,1,2016-05-20 17:14:16,2016-05-20 17:44:34,2,-73.944900512695313,40.808792114257813,-73.980545043945313,40.761531829833984,N,1818 +id0283282,2,2016-04-30 23:06:52,2016-04-30 23:14:18,1,-73.987838745117188,40.732242584228516,-73.995429992675781,40.743919372558594,N,446 +id0624186,2,2016-03-20 10:24:43,2016-03-20 10:27:54,1,-74.002311706542969,40.726470947265625,-74.010452270507813,40.720138549804687,N,191 +id1097627,2,2016-04-14 22:38:17,2016-04-14 22:48:33,1,-73.977958679199219,40.725467681884766,-74.006393432617188,40.708572387695313,N,616 +id1649909,2,2016-01-06 12:48:11,2016-01-06 13:04:38,1,-73.986488342285156,40.777900695800781,-73.964439392089844,40.771675109863281,N,987 +id2182053,2,2016-03-02 07:48:15,2016-03-02 08:10:58,3,-73.99542236328125,40.687881469726563,-73.9730224609375,40.754222869873047,N,1363 +id1181547,2,2016-03-30 00:55:28,2016-03-30 01:03:42,1,-74.000572204589844,40.729885101318359,-73.980560302734375,40.746463775634766,N,494 +id2536948,1,2016-01-30 14:11:34,2016-01-30 14:26:01,1,-73.989013671875,40.731101989746094,-73.969039916992188,40.755226135253906,N,867 +id1416074,2,2016-03-10 13:34:52,2016-03-10 13:49:16,1,-73.973579406738281,40.789730072021484,-73.974830627441406,40.790290832519531,N,864 +id3566418,1,2016-06-24 11:10:23,2016-06-24 11:32:02,2,-73.994468688964844,40.750389099121094,-73.968917846679688,40.760372161865234,N,1299 +id1228222,1,2016-03-09 11:06:15,2016-03-09 11:18:56,3,-73.993179321289063,40.741325378417969,-73.985328674316406,40.759529113769531,N,761 +id0445877,2,2016-05-19 10:24:20,2016-05-19 10:32:50,1,-73.984786987304688,40.736454010009766,-73.975204467773438,40.747913360595703,N,510 +id2203808,1,2016-06-10 20:54:02,2016-06-10 20:57:13,2,-73.975334167480469,40.761482238769531,-73.98345947265625,40.750026702880859,N,191 +id1530556,2,2016-02-04 09:18:07,2016-02-04 09:35:01,2,-73.993293762207031,40.752872467041016,-73.987724304199219,40.770111083984375,N,1014 +id3114699,2,2016-06-08 09:35:10,2016-06-08 09:59:05,3,-73.995353698730469,40.688144683837891,-74.002716064453125,40.718166351318359,N,1435 +id1039417,1,2016-03-17 10:30:51,2016-03-17 10:33:51,1,-74.0042724609375,40.713096618652344,-74.007713317871094,40.71453857421875,N,180 +id2176844,2,2016-01-12 13:14:34,2016-01-12 13:24:28,1,-73.989875793457031,40.746925354003906,-73.993011474609375,40.752731323242188,N,594 +id3315494,2,2016-01-04 15:09:16,2016-01-04 15:28:40,3,-73.972709655761719,40.790916442871094,-73.964691162109375,40.767169952392578,N,1164 +id3267154,1,2016-03-14 20:08:12,2016-03-14 20:19:54,1,-73.970069885253906,40.78955078125,-73.950248718261719,40.776401519775391,N,702 +id0025094,2,2016-06-27 10:38:23,2016-06-27 10:49:00,3,-74.015693664550781,40.711448669433594,-74.010452270507813,40.730762481689453,N,637 +id2843664,1,2016-02-06 15:27:14,2016-02-06 15:28:01,1,-73.984947204589844,40.751949310302734,-73.983558654785156,40.751552581787109,N,47 +id2186224,2,2016-02-06 22:12:03,2016-02-06 22:25:48,1,-73.99371337890625,40.741622924804688,-73.990127563476563,40.768081665039063,N,825 +id3683408,1,2016-05-08 10:24:38,2016-05-08 10:43:51,1,-73.953788757324219,40.775012969970703,-74.0020751953125,40.750984191894531,N,1153 +id1571463,1,2016-05-19 23:44:10,2016-05-20 00:14:38,1,-74.002983093261719,40.728042602539063,-73.935684204101563,40.683467864990234,N,1828 +id3486120,1,2016-02-11 10:02:43,2016-02-11 10:38:51,1,-74.010208129882813,40.709941864013672,-73.9852294921875,40.759723663330078,N,2168 +id1584169,1,2016-02-18 10:16:28,2016-02-18 10:34:12,1,-73.981498718261719,40.758598327636719,-74.000999450683594,40.746299743652344,N,1064 +id0273291,2,2016-04-05 12:36:20,2016-04-05 12:58:37,2,-73.982048034667969,40.757049560546875,-73.954483032226563,40.767429351806641,N,1337 +id3528245,1,2016-05-13 15:38:29,2016-05-13 16:00:21,1,-73.959197998046875,40.771560668945313,-73.976066589355469,40.744670867919922,N,1312 +id0090483,2,2016-03-12 20:11:48,2016-03-12 20:13:12,1,-73.977783203125,40.745990753173828,-73.9742431640625,40.751316070556641,N,84 +id3272308,1,2016-02-25 22:37:56,2016-02-25 22:44:02,1,-73.964302062988281,40.773521423339844,-73.9403076171875,40.805629730224609,N,366 +id0526486,1,2016-05-09 19:52:31,2016-05-09 19:59:58,1,-73.975227355957031,40.761650085449219,-73.968246459960937,40.755661010742187,N,447 +id2621910,2,2016-02-09 23:40:31,2016-02-09 23:57:25,1,-73.989906311035156,40.756633758544922,-73.928756713867187,40.864433288574219,N,1014 +id1678263,2,2016-03-10 10:43:18,2016-03-10 10:52:11,5,-73.982231140136719,40.7489013671875,-73.97222900390625,40.754199981689453,N,533 +id1513384,2,2016-06-05 09:54:09,2016-06-05 10:02:43,1,-73.97637939453125,40.759040832519531,-73.988616943359375,40.742710113525391,N,514 +id0892671,1,2016-05-11 21:17:38,2016-05-11 21:22:09,1,-73.982025146484375,40.777107238769531,-73.974746704101563,40.787796020507812,N,271 +id0800363,2,2016-03-04 01:52:45,2016-03-04 02:00:50,3,-73.992607116699219,40.718719482421875,-73.962043762207031,40.713211059570313,N,485 +id1491328,2,2016-03-04 21:34:51,2016-03-04 21:44:42,5,-73.965728759765625,40.766860961914062,-73.95513916015625,40.785690307617188,N,591 +id3416268,2,2016-05-24 06:43:20,2016-05-24 06:47:59,1,-73.954872131347656,40.767520904541016,-73.963371276855469,40.775188446044922,N,279 +id0998516,2,2016-05-15 19:09:40,2016-05-15 19:26:11,4,-73.9923095703125,40.751689910888672,-73.96630859375,40.758098602294922,N,991 +id3639134,2,2016-06-11 19:09:27,2016-06-11 19:22:19,1,-73.984664916992188,40.748046875,-73.9854736328125,40.757808685302734,N,772 +id3050329,1,2016-06-07 21:17:49,2016-06-07 21:19:32,1,-73.980552673339844,40.747634887695313,-73.979316711425781,40.749782562255859,N,103 +id1826407,2,2016-05-29 18:00:51,2016-05-29 18:12:05,5,-73.98565673828125,40.735321044921875,-73.999725341796875,40.750865936279297,N,674 +id3772927,2,2016-02-11 18:53:15,2016-02-11 19:00:50,2,-73.966339111328125,40.753158569335938,-73.959327697753906,40.766738891601563,N,455 +id3370214,2,2016-05-20 03:55:24,2016-05-20 03:59:47,1,-73.980331420898438,40.751380920410156,-73.982475280761719,40.73931884765625,N,263 +id0294906,1,2016-05-06 21:58:42,2016-05-06 22:17:35,1,-73.981742858886719,40.764293670654297,-73.973457336425781,40.738269805908203,N,1133 +id3019548,2,2016-01-09 11:34:06,2016-01-09 11:39:08,1,-73.974235534667969,40.756790161132813,-73.958717346191406,40.764274597167969,N,302 +id2466703,1,2016-05-27 00:15:22,2016-05-27 00:31:57,1,-73.954208374023437,40.764419555664063,-73.981407165527344,40.73004150390625,N,995 +id1287942,1,2016-06-13 20:31:53,2016-06-13 20:35:45,2,-74.005401611328125,40.745895385742187,-73.994682312011719,40.745796203613281,N,232 +id2754572,2,2016-06-25 17:21:37,2016-06-25 17:25:41,5,-73.961341857910156,40.780361175537109,-73.954261779785156,40.778148651123047,N,244 +id3945886,2,2016-03-02 09:39:13,2016-03-02 09:46:04,5,-73.991172790527344,40.732921600341797,-73.99920654296875,40.720081329345703,N,411 +id3505043,2,2016-05-07 16:31:10,2016-05-07 16:44:18,1,-73.987945556640625,40.759731292724609,-73.96356201171875,40.774295806884766,N,788 +id1551292,1,2016-01-18 19:55:19,2016-01-18 20:04:07,2,-73.953758239746094,40.763584136962891,-73.951492309570313,40.782073974609375,N,528 +id3013776,2,2016-03-29 15:40:26,2016-03-29 15:52:00,2,-73.979644775390625,40.760883331298828,-73.970909118652344,40.756301879882813,N,694 +id2985214,1,2016-06-09 05:25:35,2016-06-09 05:26:54,1,-73.95013427734375,40.780006408691406,-73.955482482910156,40.776958465576172,N,79 +id1515631,1,2016-03-25 23:56:00,2016-03-26 00:09:52,1,-73.99981689453125,40.743457794189453,-73.965446472167969,40.754589080810547,N,832 +id2782862,1,2016-02-14 18:55:15,2016-02-14 19:00:52,1,-73.930335998535156,40.7615966796875,-73.916656494140625,40.764541625976562,N,337 +id0001881,1,2016-04-05 18:09:01,2016-04-05 18:34:57,1,-74.008163452148438,40.740512847900391,-73.989921569824219,40.712306976318359,N,1556 +id3169714,2,2016-05-27 12:50:32,2016-05-27 12:59:56,1,-73.991691589355469,40.738582611083984,-74.000625610351563,40.720779418945313,N,564 +id1710899,2,2016-04-08 23:48:32,2016-04-09 00:27:42,1,-73.9764404296875,40.763473510742188,-73.909622192382813,40.840988159179688,N,2350 +id2104297,2,2016-06-30 20:56:09,2016-06-30 21:00:52,1,-74.006301879882813,40.739669799804688,-73.997611999511719,40.7410888671875,N,283 +id0324418,2,2016-04-18 11:01:11,2016-04-18 11:52:40,1,-73.782066345214844,40.644733428955078,-73.939979553222656,40.841205596923828,N,3089 +id2727533,1,2016-02-11 20:53:41,2016-02-11 21:00:16,1,-73.953575134277344,40.771080017089844,-73.959938049316406,40.762485504150391,N,395 +id3263358,2,2016-02-06 01:39:14,2016-02-06 01:44:26,1,-73.988800048828125,40.719219207763672,-73.991622924804687,40.726810455322266,N,312 +id3057665,1,2016-05-20 00:04:32,2016-05-20 01:40:36,1,-73.982429504394531,40.756622314453125,-73.915901184082031,40.618385314941406,N,5764 +id3483574,2,2016-05-30 18:50:20,2016-05-30 19:05:08,6,-74.008491516113281,40.716480255126953,-73.994270324707031,40.722530364990234,N,888 +id3159347,2,2016-05-07 21:58:37,2016-05-07 22:01:55,5,-73.973159790039063,40.744220733642578,-73.972183227539063,40.752643585205078,N,198 +id1980917,1,2016-05-13 17:34:43,2016-05-13 17:50:20,1,-73.9537353515625,40.767280578613281,-73.985153198242188,40.73809814453125,N,937 +id1018810,2,2016-01-25 14:58:47,2016-01-25 15:15:14,3,-74.001731872558594,40.741985321044922,-74.010826110839844,40.704551696777344,N,987 +id0717835,1,2016-05-26 12:52:19,2016-05-26 13:43:45,1,-73.985916137695313,40.736003875732422,-73.789840698242188,40.647041320800781,N,3086 +id2244288,1,2016-02-25 01:52:08,2016-02-25 02:03:56,3,-73.992317199707031,40.718791961669922,-74.008842468261719,40.738624572753906,N,708 +id0753277,1,2016-01-27 22:29:31,2016-01-27 22:29:58,1,-74.209854125976563,40.816852569580078,-74.209854125976563,40.816852569580078,N,27 +id0008448,2,2016-01-29 20:04:54,2016-01-29 20:18:24,1,-73.993881225585937,40.732654571533203,-74.009521484375,40.714069366455078,N,810 +id0544521,1,2016-01-02 20:45:27,2016-01-02 20:56:31,2,-73.945426940917969,40.774105072021484,-73.963020324707031,40.769321441650391,N,664 +id3936105,1,2016-04-26 05:24:55,2016-04-26 05:29:45,1,-73.965705871582031,40.765270233154297,-73.954139709472656,40.763896942138672,N,290 +id3089596,2,2016-03-19 15:22:55,2016-03-19 15:30:52,1,-73.963943481445312,40.770221710205078,-73.976417541503906,40.755058288574219,N,477 +id0041995,1,2016-04-20 14:15:33,2016-04-20 14:30:56,1,-73.939140319824219,40.805099487304688,-73.962921142578125,40.805122375488281,N,923 +id1214345,1,2016-05-13 08:53:23,2016-05-13 08:55:39,2,-73.999679565429688,40.738574981689453,-73.999870300292969,40.743633270263672,N,136 +id0877508,1,2016-04-16 01:03:53,2016-04-16 01:12:43,1,-74.006454467773438,40.739631652832031,-74.000801086425781,40.728885650634766,N,530 +id2867913,2,2016-05-17 22:22:02,2016-05-17 22:24:21,1,-74.001930236816406,40.750831604003906,-73.995063781738281,40.76025390625,N,139 +id2211380,1,2016-04-24 03:38:33,2016-04-24 03:40:57,1,-73.982948303222656,40.738819122314453,-73.975898742675781,40.746547698974609,N,144 +id0401519,1,2016-05-11 23:27:40,2016-05-11 23:39:59,2,-73.972633361816406,40.756671905517578,-73.984237670898438,40.778030395507812,N,739 +id2959103,1,2016-05-31 14:06:56,2016-05-31 14:36:53,1,-74.007545471191406,40.704944610595703,-73.971534729003906,40.765617370605469,N,1797 +id0302042,1,2016-02-15 09:24:11,2016-02-15 09:45:06,1,-74.015068054199219,40.715953826904297,-73.979850769042969,40.76470947265625,N,1255 +id1546156,2,2016-05-19 21:11:13,2016-05-19 21:47:39,4,-73.991729736328125,40.744403839111328,-73.934379577636719,40.755035400390625,N,2186 +id0713662,1,2016-01-09 01:14:53,2016-01-09 01:18:04,1,-73.988288879394531,40.759471893310547,-73.983993530273437,40.769752502441406,N,191 +id1810587,1,2016-04-23 16:32:49,2016-04-23 16:36:16,1,-73.986259460449219,40.750858306884766,-73.982284545898437,40.757118225097656,N,207 +id2118414,2,2016-04-11 20:33:45,2016-04-11 20:51:45,1,-73.953834533691406,40.766548156738281,-73.980659484863281,40.749275207519531,N,1080 +id3346816,1,2016-01-10 06:38:38,2016-01-10 06:45:23,1,-73.971656799316406,40.759117126464844,-73.982025146484375,40.739242553710938,N,405 +id1847873,2,2016-02-08 22:36:42,2016-02-08 22:56:14,2,-73.95458984375,40.773971557617187,-74.004318237304688,40.733261108398437,N,1172 +id2519585,1,2016-04-16 06:25:44,2016-04-16 06:33:30,1,-73.969551086425781,40.753532409667969,-73.990036010742188,40.756961822509766,N,466 +id2603534,1,2016-06-10 21:33:21,2016-06-10 21:42:25,2,-73.963066101074219,40.774089813232422,-73.980209350585938,40.767494201660156,N,544 +id3150239,2,2016-06-16 20:47:37,2016-06-16 20:50:16,2,-73.968780517578125,40.764358520507813,-73.964500427246094,40.757980346679688,N,159 +id1075414,1,2016-02-08 15:53:42,2016-02-08 15:59:55,1,-73.973991394042969,40.783981323242187,-73.965484619140625,40.792022705078125,N,373 +id1051420,1,2016-04-10 14:53:21,2016-04-10 15:06:54,1,-73.973602294921875,40.784587860107422,-73.99212646484375,40.759326934814453,N,813 +id0753381,1,2016-03-21 22:22:11,2016-03-21 22:51:13,1,-74.002182006835937,40.72821044921875,-73.916275024414063,40.690723419189453,N,1742 +id3604983,1,2016-03-15 09:55:18,2016-03-15 10:02:41,1,-73.969551086425781,40.753238677978516,-73.979782104492187,40.746177673339844,N,443 +id2875770,1,2016-02-13 11:12:43,2016-02-13 11:23:35,1,-74.000358581542969,40.73760986328125,-73.983627319335938,40.728366851806641,N,652 +id0448011,2,2016-01-30 14:38:47,2016-01-30 14:54:05,1,-73.964256286621094,40.760871887207031,-73.995819091796875,40.764328002929688,N,918 +id2745579,1,2016-03-31 18:17:05,2016-03-31 18:32:47,1,-73.9705810546875,40.762218475341797,-73.983329772949219,40.744468688964844,N,942 +id0184392,1,2016-03-01 21:03:37,2016-03-01 21:22:23,1,-73.974967956542969,40.752887725830078,-74.009590148925781,40.720817565917969,N,1126 +id0629554,1,2016-05-24 14:10:42,2016-05-24 14:34:14,1,-73.954696655273437,40.765647888183594,-73.980255126953125,40.765384674072266,N,1412 +id2193271,1,2016-03-07 13:05:37,2016-03-07 13:21:10,2,-73.968124389648438,40.762729644775391,-73.968116760253906,40.79205322265625,N,933 +id3148312,1,2016-02-14 09:38:27,2016-02-14 09:43:10,1,-73.99090576171875,40.734745025634766,-74.001846313476563,40.733650207519531,N,283 +id3193566,2,2016-03-30 20:04:37,2016-03-30 20:18:07,1,-74.008049011230469,40.738578796386719,-73.997230529785156,40.722530364990234,N,810 +id0837551,2,2016-04-02 20:48:41,2016-04-02 20:54:13,1,-74.000999450683594,40.747138977050781,-74.000167846679688,40.737888336181641,N,332 +id3698282,2,2016-02-12 08:55:28,2016-02-12 09:11:24,1,-73.979560852050781,40.746631622314453,-73.981307983398437,40.758739471435547,N,956 +id1778128,2,2016-04-04 21:11:26,2016-04-04 21:16:07,2,-73.995590209960938,40.724700927734375,-73.987220764160156,40.722377777099609,N,281 +id2058187,2,2016-06-25 04:07:15,2016-06-25 04:40:18,6,-73.965980529785156,40.756229400634766,-73.93438720703125,40.649810791015625,N,1983 +id3840447,1,2016-03-04 16:11:10,2016-03-04 16:22:56,1,-73.977104187011719,40.765312194824219,-73.952659606933594,40.776660919189453,N,706 +id2256500,1,2016-02-07 23:39:14,2016-02-07 23:43:16,4,-73.992057800292969,40.684440612792969,-73.992935180664062,40.697509765625,N,242 +id2485237,1,2016-06-14 22:39:00,2016-06-14 22:44:23,1,-73.983154296875,40.770992279052734,-73.977287292480469,40.789684295654297,N,323 +id0565379,1,2016-02-12 22:46:00,2016-02-12 22:51:14,2,-73.9801025390625,40.74298095703125,-73.970291137695313,40.756195068359375,N,314 +id3229648,1,2016-05-24 11:36:28,2016-05-24 11:45:20,1,-73.946380615234375,40.777263641357422,-73.960365295410156,40.775276184082031,N,532 +id1038418,2,2016-02-25 07:21:45,2016-02-25 07:29:19,1,-73.991729736328125,40.756233215332031,-73.976409912109375,40.757415771484375,N,454 +id1850153,1,2016-01-15 19:38:13,2016-01-15 19:46:20,1,-73.982444763183594,40.762115478515625,-73.994827270507813,40.760456085205078,N,487 +id1257977,2,2016-05-04 20:23:40,2016-05-04 20:40:57,6,-74.007713317871094,40.704944610595703,-73.9473876953125,40.77557373046875,N,1037 +id0923414,2,2016-02-25 07:17:27,2016-02-25 07:23:35,1,-73.958633422851563,40.800819396972656,-73.95306396484375,40.814113616943359,N,368 +id3077077,2,2016-05-04 07:02:19,2016-05-04 07:09:26,1,-73.978126525878906,40.752349853515625,-73.994392395019531,40.750129699707031,N,427 +id2077985,2,2016-04-12 21:43:25,2016-04-12 21:54:33,2,-73.978401184082031,40.763664245605469,-73.986396789550781,40.736175537109375,N,668 +id0617119,2,2016-01-17 11:00:47,2016-01-17 11:10:27,2,-73.937934875488281,40.812339782714844,-73.954620361328125,40.777847290039063,N,580 +id0859652,1,2016-03-07 22:27:47,2016-03-07 22:43:24,1,-73.874580383300781,40.774162292480469,-73.993881225585937,40.720565795898437,N,937 +id2134177,1,2016-06-04 12:43:38,2016-06-04 12:44:55,1,-73.965675354003906,40.805286407470703,-73.963577270507813,40.80621337890625,N,77 +id1749339,2,2016-05-11 11:54:06,2016-05-11 12:00:08,1,-73.980186462402344,40.778980255126953,-73.984062194824219,40.770709991455078,N,362 +id3986622,2,2016-02-25 23:34:19,2016-02-25 23:38:55,6,-73.998741149902344,40.724239349365234,-74.005340576171875,40.715248107910156,N,276 +id1880555,2,2016-05-26 20:36:52,2016-05-26 21:09:47,5,-74.005058288574219,40.722976684570313,-73.97772216796875,40.791473388671875,N,1975 +id0864265,1,2016-01-28 18:31:19,2016-01-28 18:58:43,2,-73.998603820800781,40.760818481445313,-73.989799499511719,40.718906402587891,N,1644 +id1044534,2,2016-03-31 21:22:20,2016-03-31 21:36:07,2,-73.971420288085938,40.756931304931641,-73.979240417480469,40.789920806884766,N,827 +id0077828,2,2016-03-07 21:37:08,2016-03-07 21:41:44,5,-73.957740783691406,40.785171508789062,-73.969093322753906,40.769538879394531,N,276 +id3017112,1,2016-06-02 19:53:00,2016-06-02 20:01:20,2,-73.986671447753906,40.732830047607422,-74.000900268554688,40.729480743408203,N,500 +id3229838,1,2016-05-20 08:10:59,2016-05-20 08:20:15,1,-73.99468994140625,40.734722137451172,-73.982810974121094,40.745212554931641,N,556 +id3773505,2,2016-01-16 00:48:59,2016-01-16 01:03:56,4,-73.988746643066406,40.722560882568359,-73.991073608398438,40.749870300292969,N,897 +id0501198,1,2016-05-22 14:57:41,2016-05-22 15:08:39,1,-73.977996826171875,40.786533355712891,-73.94842529296875,40.784934997558594,N,658 +id1694064,2,2016-06-06 23:35:36,2016-06-06 23:42:21,2,-73.999000549316406,40.744609832763672,-74.003433227539062,40.727771759033203,N,405 +id1435811,2,2016-06-06 17:02:36,2016-06-06 17:12:53,1,-73.989578247070313,40.752700805664062,-74.009246826171875,40.71527099609375,N,617 +id3503814,2,2016-01-22 14:35:14,2016-01-22 14:52:16,2,-73.954925537109375,40.789085388183594,-73.955802917480469,40.772357940673828,N,1022 +id1442965,1,2016-03-30 15:54:40,2016-03-30 16:29:15,2,-73.971542358398438,40.7635498046875,-73.872161865234375,40.7742919921875,N,2075 +id1349840,1,2016-01-10 19:08:04,2016-01-10 19:13:46,1,-73.942771911621094,40.794265747070313,-73.942138671875,40.809688568115234,N,342 +id1673792,1,2016-06-15 00:23:52,2016-06-15 00:48:45,1,-73.981033325195313,40.721107482910156,-73.896347045898437,40.705123901367188,N,1493 +id2248179,1,2016-06-06 22:29:58,2016-06-06 22:45:15,1,-74.005119323730469,40.719089508056641,-73.968070983886719,40.688888549804688,N,917 +id1435090,2,2016-03-19 15:01:24,2016-03-19 15:13:21,4,-74.000526428222656,40.732181549072266,-73.987442016601563,40.7589111328125,N,717 +id0069907,1,2016-04-12 06:05:04,2016-04-12 06:07:38,1,-73.98193359375,40.757743835449219,-73.990280151367188,40.761569976806641,N,154 +id3456526,2,2016-05-07 04:11:52,2016-05-07 04:21:05,2,-73.950126647949219,40.784034729003906,-73.979965209960937,40.76080322265625,N,553 +id1201071,1,2016-01-25 17:37:32,2016-01-25 17:49:58,2,-73.979743957519531,40.771198272705078,-73.97149658203125,40.787647247314453,N,746 +id3428414,2,2016-03-09 16:56:02,2016-03-09 17:09:13,1,-73.997520446777344,40.722438812255859,-74.002296447753906,40.747779846191406,N,791 +id2994610,2,2016-03-12 18:58:47,2016-03-12 19:23:33,6,-74.002113342285156,40.7506103515625,-74.005447387695312,40.719989776611328,N,1486 +id1261506,2,2016-01-04 08:45:43,2016-01-04 08:57:27,2,-73.986869812011719,40.736846923828125,-73.972091674804688,40.7596435546875,N,704 +id1319576,1,2016-01-17 17:02:15,2016-01-17 17:17:38,1,-73.958419799804687,40.7833251953125,-73.985336303710938,40.770492553710937,N,923 +id0106612,1,2016-05-18 17:43:33,2016-05-18 17:57:00,1,-73.974395751953125,40.763378143310547,-73.952705383300781,40.768321990966797,N,807 +id0431388,2,2016-01-21 20:25:33,2016-01-21 20:38:26,1,-73.980232238769531,40.742908477783203,-73.96807861328125,40.756301879882813,N,773 +id2603152,2,2016-06-03 13:04:08,2016-06-03 13:33:43,1,-73.977462768554688,40.757843017578125,-73.872688293457031,40.774482727050781,N,1775 +id2947100,2,2016-01-05 18:11:50,2016-01-05 18:22:15,1,-74.011383056640625,40.703285217285156,-73.977241516113281,40.734046936035156,N,625 +id2279548,2,2016-06-02 21:04:21,2016-06-02 21:09:46,1,-73.9541015625,40.770477294921875,-73.957931518554687,40.782028198242187,N,325 +id3514507,2,2016-01-04 13:32:22,2016-01-04 13:51:39,1,-73.989921569824219,40.756210327148438,-73.949234008789063,40.771015167236328,N,1157 +id1161259,2,2016-05-27 20:39:45,2016-05-27 20:47:42,2,-73.991470336914063,40.749691009521484,-73.983749389648438,40.749919891357422,N,477 +id0278886,2,2016-06-16 22:06:27,2016-06-16 22:10:05,2,-73.996269226074219,40.738380432128906,-73.99041748046875,40.749137878417969,N,218 +id1947952,2,2016-04-15 21:40:13,2016-04-15 22:18:46,1,-73.790199279785156,40.643791198730469,-73.871742248535156,40.729000091552734,N,2313 +id0573172,2,2016-02-16 15:50:53,2016-02-16 16:09:31,2,-73.96490478515625,40.766433715820312,-73.985343933105469,40.749622344970703,N,1118 +id2273224,1,2016-02-21 09:49:04,2016-02-21 09:57:51,1,-73.982460021972656,40.768337249755859,-73.9940185546875,40.769729614257813,N,527 +id0501634,2,2016-06-10 09:35:50,2016-06-10 09:39:36,2,-73.983291625976562,40.734748840332031,-73.991508483886719,40.726978302001953,N,226 +id2191547,1,2016-05-22 01:26:46,2016-05-22 01:28:59,1,-73.982940673828125,40.771671295166016,-73.988662719726563,40.764030456542969,N,133 +id1010304,2,2016-06-02 19:00:49,2016-06-02 19:12:25,6,-73.987297058105469,40.749591827392578,-73.966133117675781,40.753990173339844,N,696 +id3938950,1,2016-03-20 08:56:23,2016-03-20 09:02:22,1,-73.981636047363281,40.778633117675781,-73.966285705566406,40.804084777832031,N,359 +id0158328,2,2016-02-04 11:00:44,2016-02-04 11:09:50,1,-74.01171875,40.703788757324219,-74.012275695800781,40.713878631591797,N,546 +id1652144,1,2016-06-27 12:24:54,2016-06-27 12:31:26,1,-73.974151611328125,40.731468200683594,-74.004531860351563,40.707084655761719,N,392 +id0082224,1,2016-01-07 10:26:41,2016-01-07 10:42:35,1,-73.96527099609375,40.754985809326172,-74.013816833496094,40.713546752929688,N,954 +id1558123,2,2016-06-05 18:09:42,2016-06-05 18:13:32,1,-73.953544616699219,40.779502868652344,-73.93975830078125,40.794376373291016,N,230 +id2403350,2,2016-01-30 20:44:37,2016-01-30 21:11:52,1,-73.7835693359375,40.648670196533203,-73.936004638671875,40.697471618652344,N,1635 +id1297383,1,2016-05-06 23:59:25,2016-05-07 00:50:42,1,-74.005775451660156,40.733085632324219,-73.813446044921875,40.71044921875,N,3077 +id2509513,1,2016-02-12 15:20:26,2016-02-12 16:11:35,1,-73.870948791503906,40.773811340332031,-74.008216857910156,40.733921051025391,N,3069 +id1721766,2,2016-06-18 11:40:57,2016-06-18 11:52:45,1,-73.9722900390625,40.763256072998047,-73.984855651855469,40.748264312744141,N,708 +id1032450,1,2016-04-20 17:59:16,2016-04-20 18:05:09,1,-73.979484558105469,40.784339904785156,-73.982177734375,40.770965576171875,N,353 +id3163239,2,2016-03-14 13:51:47,2016-03-14 14:01:33,1,-73.988655090332031,40.769016265869141,-73.979408264160156,40.759422302246094,N,586 +id3170174,2,2016-04-21 10:51:22,2016-04-21 11:28:20,6,-73.966567993164063,40.773429870605469,-74.00225830078125,40.74871826171875,N,2218 +id3913020,1,2016-01-12 21:01:42,2016-01-12 21:03:43,1,-73.955558776855469,40.768478393554688,-73.948890686035156,40.777675628662109,N,121 +id1579651,1,2016-06-16 16:10:08,2016-06-16 16:17:17,1,-73.951873779296875,40.790172576904297,-73.935890197753906,40.796127319335938,N,429 +id0880914,1,2016-03-28 23:41:58,2016-03-29 00:14:19,1,-73.995864868164063,40.743988037109375,-73.744270324707031,40.707782745361328,N,1941 +id1771245,1,2016-05-07 17:36:09,2016-05-07 18:03:07,1,-73.98260498046875,40.768310546875,-73.984359741210937,40.754787445068359,N,1618 +id2495452,1,2016-03-09 12:46:11,2016-03-09 12:57:00,1,-73.986053466796875,40.726875305175781,-74.002311706542969,40.729320526123047,N,649 +id2134482,1,2016-01-22 16:13:01,2016-01-22 16:13:20,1,-73.776313781738281,40.645454406738281,-73.776313781738281,40.645454406738281,N,19 +id1451408,2,2016-04-17 10:30:17,2016-04-17 10:40:51,1,-73.969581604003906,40.790420532226562,-73.947547912597656,40.772850036621094,N,634 +id2941810,2,2016-05-18 15:37:52,2016-05-18 15:54:27,1,-73.982063293457031,40.772701263427734,-73.95440673828125,40.772918701171875,N,995 +id0294995,1,2016-05-07 17:25:38,2016-05-07 17:37:57,1,-73.982398986816406,40.771404266357422,-73.956764221191406,40.773166656494141,N,739 +id3468467,2,2016-05-31 22:37:06,2016-05-31 22:51:12,1,-73.975387573242187,40.751735687255859,-73.978164672851562,40.788536071777344,N,846 +id0257758,1,2016-03-25 03:40:19,2016-03-25 03:53:52,1,-74.004615783691406,40.721183776855469,-73.983352661132813,40.765796661376953,N,813 +id0166122,2,2016-01-18 21:24:57,2016-01-18 21:52:55,1,-74.002899169921875,40.733566284179688,-73.935371398925781,40.767280578613281,N,1678 +id0946936,2,2016-03-13 19:33:44,2016-03-13 19:42:26,5,-73.991287231445313,40.730930328369141,-74.005783081054688,40.736530303955078,N,522 +id3299654,2,2016-06-22 11:18:26,2016-06-22 11:41:18,6,-73.988006591796875,40.754951477050781,-73.978492736816406,40.787990570068359,N,1372 +id0313638,2,2016-03-30 19:48:12,2016-03-30 20:16:49,1,-73.983810424804688,40.743961334228516,-73.948478698730469,40.718418121337891,N,1717 +id1994657,2,2016-02-07 18:01:20,2016-02-07 18:09:04,4,-74.008071899414063,40.739231109619141,-73.993614196777344,40.732826232910156,N,464 +id1663173,1,2016-03-29 19:12:21,2016-03-29 19:28:49,1,-73.988601684570313,40.768821716308594,-73.953460693359375,40.772510528564453,N,988 +id2327331,1,2016-03-31 09:08:07,2016-03-31 09:16:19,1,-73.983543395996094,40.760467529296875,-73.988899230957031,40.752681732177734,N,492 +id1818723,2,2016-05-26 18:16:39,2016-05-26 18:26:11,1,-73.95330810546875,40.772491455078125,-73.965652465820312,40.768661499023438,N,572 +id2100038,1,2016-06-26 16:29:59,2016-06-26 16:46:26,1,-73.970573425292969,40.7677001953125,-73.985130310058594,40.730667114257813,N,987 +id1301135,1,2016-06-30 23:34:53,2016-06-30 23:54:08,1,-73.790229797363281,40.646827697753906,-73.904609680175781,40.66094970703125,N,1155 +id3742811,1,2016-06-10 04:05:04,2016-06-10 04:12:58,1,-73.952011108398437,40.776687622070312,-73.978569030761719,40.772285461425781,N,474 +id3340818,2,2016-03-31 19:54:06,2016-03-31 20:03:00,2,-73.983268737792969,40.767791748046875,-73.962303161621094,40.767330169677734,N,534 +id2083885,1,2016-04-02 09:54:14,2016-04-02 10:06:37,1,-73.964179992675781,40.767726898193359,-73.985939025878906,40.741054534912109,Y,743 +id3677906,1,2016-03-17 21:25:58,2016-03-17 21:46:03,1,-73.995758056640625,40.73870849609375,-73.972930908203125,40.793479919433594,N,1205 +id0647440,1,2016-01-19 09:49:00,2016-01-19 09:59:34,1,-73.977424621582031,40.789463043212891,-73.961196899414063,40.811569213867188,N,634 +id3201360,2,2016-03-26 00:03:07,2016-03-26 00:12:50,1,-73.986778259277344,40.761520385742187,-73.994728088378906,40.751792907714844,N,583 +id0180862,2,2016-04-08 18:41:24,2016-04-08 18:53:30,5,-74.003166198730469,40.727672576904297,-73.992225646972656,40.71533203125,N,726 +id2978563,2,2016-06-18 02:57:57,2016-06-18 03:14:42,1,-73.987663269042969,40.733608245849609,-73.978790283203125,40.782310485839844,N,1005 +id1726054,2,2016-02-25 14:27:17,2016-02-25 14:34:57,2,-73.995338439941406,40.743831634521484,-73.97735595703125,40.743732452392578,N,460 +id0494116,1,2016-04-14 08:26:43,2016-04-14 08:35:02,1,-74.016090393066406,40.704967498779297,-74.013603210449219,40.715118408203125,N,499 +id1556923,1,2016-03-11 10:18:49,2016-03-11 10:40:34,1,-74.004920959472656,40.74151611328125,-73.978889465332031,40.762397766113281,N,1305 +id1274952,2,2016-03-04 09:12:07,2016-03-04 09:48:40,2,-73.977767944335937,40.786983489990234,-73.976715087890625,40.739707946777344,N,2193 +id0257293,2,2016-02-26 20:27:11,2016-02-26 20:32:16,5,-73.999923706054687,40.734661102294922,-74.007102966308594,40.742580413818359,N,305 +id1771623,1,2016-04-08 16:17:28,2016-04-08 16:24:59,2,-73.989654541015625,40.756099700927734,-73.97900390625,40.759765625,N,451 +id3183407,2,2016-01-21 17:09:49,2016-01-21 17:16:36,2,-73.997940063476563,40.756420135498047,-73.995506286621094,40.761390686035156,N,407 +id3262116,2,2016-03-25 17:22:25,2016-03-25 17:47:36,5,-73.913322448730469,40.756500244140625,-73.842758178710938,40.721118927001953,N,1511 +id2391275,1,2016-02-26 22:42:33,2016-02-26 22:57:08,1,-73.997505187988281,40.721027374267578,-73.995498657226562,40.678733825683594,N,875 +id3570588,2,2016-04-30 03:46:39,2016-04-30 03:55:27,2,-74.001106262207031,40.730918884277344,-73.98779296875,40.721179962158203,N,528 +id2474425,2,2016-03-13 00:23:48,2016-03-13 00:30:57,6,-73.970863342285156,40.758628845214844,-73.982467651367188,40.747711181640625,N,429 +id2029519,2,2016-03-08 09:18:43,2016-03-08 09:31:59,1,-73.963005065917969,40.774932861328125,-73.969596862792969,40.762821197509766,N,796 +id3852188,1,2016-01-07 16:20:39,2016-01-07 16:21:27,1,-73.97882080078125,40.747699737548828,-73.977630615234375,40.747272491455078,N,48 +id0159476,2,2016-04-06 07:31:37,2016-04-06 07:39:21,1,-73.9940185546875,40.751358032226563,-73.978065490722656,40.754680633544922,N,464 +id3943856,2,2016-01-17 04:13:10,2016-01-17 04:30:29,5,-74.003402709960938,40.743728637695313,-73.961051940917969,40.711353302001953,N,1039 +id1616085,1,2016-04-26 21:27:30,2016-04-26 21:34:25,1,-73.984291076660156,40.768901824951172,-73.977958679199219,40.783603668212891,N,415 +id0531308,2,2016-04-15 19:10:59,2016-04-15 19:24:14,1,-73.954017639160156,40.766483306884766,-73.975883483886719,40.788867950439453,N,795 +id2892749,1,2016-01-18 15:24:43,2016-01-18 15:28:57,5,-73.954666137695313,40.821002960205078,-73.954666137695313,40.821002960205078,Y,254 +id1092604,2,2016-01-06 19:12:45,2016-01-06 19:33:13,1,-74.007431030273437,40.704952239990234,-73.987083435058594,40.747112274169922,N,1228 +id1703239,2,2016-05-10 20:15:06,2016-05-10 20:25:54,1,-73.966629028320312,40.766490936279297,-73.945884704589844,40.773628234863281,N,648 +id2290661,2,2016-03-01 20:47:22,2016-03-01 20:54:56,1,-73.985183715820313,40.760360717773438,-73.971046447753906,40.752880096435547,N,454 +id1088649,1,2016-01-15 00:07:24,2016-01-15 00:20:18,4,-74.001060485839844,40.717910766601563,-73.984100341796875,40.746414184570313,N,774 +id0730614,1,2016-04-07 23:37:06,2016-04-07 23:40:37,1,-73.989006042480469,40.730743408203125,-73.981842041015625,40.740589141845703,N,211 +id3122387,1,2016-04-17 12:46:09,2016-04-17 12:55:50,1,-73.967964172363281,40.771213531494141,-73.983558654785156,40.750484466552734,N,581 +id3255428,2,2016-04-14 18:38:43,2016-04-14 18:47:21,1,-73.986549377441406,40.740303039550781,-73.993896484375,40.735652923583984,N,518 +id0740677,1,2016-03-19 01:49:39,2016-03-19 01:53:27,1,-73.960014343261719,40.776359558105469,-73.952056884765625,40.777202606201172,N,228 +id3183253,1,2016-02-18 07:39:40,2016-02-18 07:50:01,2,-73.995719909667969,40.749172210693359,-73.976455688476562,40.757183074951172,N,621 +id0924079,1,2016-02-23 12:59:46,2016-02-23 13:08:35,1,-74.002975463867188,40.728286743164062,-73.993202209472656,40.742565155029297,N,529 +id2941949,1,2016-04-14 17:08:37,2016-04-14 17:20:45,1,-74.008331298828125,40.735527038574219,-74.015045166015625,40.715339660644531,N,728 +id0004421,2,2016-03-17 11:02:01,2016-03-17 11:47:28,6,-73.977836608886719,40.729602813720703,-73.776405334472656,40.645256042480469,N,2727 +id2408333,1,2016-03-15 09:04:19,2016-03-15 09:48:30,1,-73.874465942382813,40.774078369140625,-73.964347839355469,40.764003753662109,N,2651 +id0329362,1,2016-01-05 19:55:58,2016-01-05 20:13:20,1,-73.975128173828125,40.749759674072266,-73.986343383789062,40.778877258300781,N,1042 +id0499128,2,2016-02-29 15:19:57,2016-02-29 15:24:26,4,-73.979393005371094,40.754398345947266,-73.985427856445313,40.746738433837891,N,269 +id2140851,2,2016-04-09 04:36:47,2016-04-09 04:54:01,4,-73.954658508300781,40.69024658203125,-73.919303894042969,40.749382019042969,N,1034 +id2895174,1,2016-06-14 11:22:32,2016-06-14 11:28:45,1,-73.974739074707031,40.729816436767578,-73.989219665527344,40.730064392089844,N,373 +id0135004,1,2016-04-07 17:37:05,2016-04-07 17:45:01,3,-73.944992065429687,40.778938293457031,-73.960945129394531,40.770034790039063,N,476 +id3177154,1,2016-06-24 06:25:54,2016-06-24 06:31:48,1,-73.969688415527344,40.797740936279297,-73.97247314453125,40.786296844482422,N,354 +id2011363,1,2016-03-20 22:11:14,2016-03-20 22:15:39,1,-73.990882873535156,40.729793548583984,-73.980941772460938,40.721031188964844,N,265 +id1814732,2,2016-05-21 09:36:35,2016-05-21 09:45:28,5,-73.966522216796875,40.804229736328125,-73.945083618164062,40.824119567871094,N,533 +id2482024,1,2016-01-20 11:41:36,2016-01-20 11:46:39,1,-73.9449462890625,40.7747802734375,-73.956069946289063,40.775379180908203,N,303 +id1185545,2,2016-04-15 23:09:54,2016-04-15 23:17:12,1,-73.983390808105469,40.773555755615234,-73.965774536132813,40.763801574707031,N,438 +id2618127,1,2016-05-05 12:04:51,2016-05-05 12:18:56,1,-73.972587585449219,40.754230499267578,-73.968116760253906,40.7623291015625,N,845 +id1434601,2,2016-06-20 22:39:13,2016-06-20 22:44:27,2,-73.978767395019531,40.724250793457031,-73.978691101074219,40.713649749755859,N,314 +id2278919,1,2016-06-09 07:06:32,2016-06-09 07:13:25,1,-73.980972290039063,40.774505615234375,-73.954559326171875,40.786613464355469,N,413 +id0032585,2,2016-04-27 17:30:01,2016-04-27 17:51:11,1,-73.982254028320312,40.766017913818359,-73.991462707519531,40.750431060791016,N,1270 +id2355297,2,2016-01-15 09:35:33,2016-01-15 09:48:38,1,-73.951866149902344,40.781204223632813,-73.954444885253906,40.765945434570313,N,785 +id3952563,1,2016-01-30 20:48:10,2016-01-30 21:14:41,1,-74.010688781738281,40.710338592529297,-73.988052368164063,40.759674072265625,N,1591 +id1626132,1,2016-05-22 04:57:36,2016-05-22 04:59:05,1,-73.982818603515625,40.726898193359375,-73.979927062988281,40.730880737304688,N,89 +id2568497,2,2016-06-24 21:15:52,2016-06-24 21:31:02,1,-73.992805480957031,40.723335266113281,-73.958839416503906,40.718837738037109,N,910 +id3451596,2,2016-04-25 15:01:38,2016-04-25 15:06:31,1,-73.990592956542969,40.750946044921875,-73.998138427734375,40.740737915039062,N,293 +id1218468,2,2016-02-05 08:31:30,2016-02-05 08:51:12,1,-73.989906311035156,40.725688934326172,-73.969619750976563,40.762969970703125,N,1182 +id1619064,1,2016-05-18 17:39:21,2016-05-18 18:03:08,2,-73.960006713867188,40.771343231201172,-73.970977783203125,40.789295196533203,N,1427 +id3856772,2,2016-06-22 10:53:02,2016-06-22 11:05:00,1,-73.974449157714844,40.762298583984375,-73.991020202636719,40.747211456298828,N,718 +id2451300,1,2016-03-18 22:21:06,2016-03-18 22:49:06,2,-73.982406616210938,40.754001617431641,-73.940269470214844,40.79791259765625,N,1680 +id3670632,2,2016-02-01 17:06:46,2016-02-01 17:22:18,1,-73.972816467285156,40.760906219482422,-73.987434387207031,40.748832702636719,N,932 +id2564186,2,2016-01-26 19:43:55,2016-01-26 19:50:20,5,-73.9505615234375,40.777355194091797,-73.953262329101563,40.766849517822266,N,385 +id0922626,1,2016-03-07 08:45:54,2016-03-07 08:49:12,1,-73.93829345703125,40.847141265869141,-73.940345764160156,40.841426849365234,N,198 +id2298533,2,2016-01-14 14:12:15,2016-01-14 14:21:09,1,-73.97918701171875,40.763099670410156,-73.99163818359375,40.754119873046875,N,534 +id3289160,2,2016-06-11 13:16:55,2016-06-11 14:09:27,1,-73.981948852539063,40.761753082275391,-73.981300354003906,40.760810852050781,N,3152 +id0837443,2,2016-06-20 15:31:24,2016-06-20 15:47:43,2,-73.973731994628906,40.743930816650391,-73.991188049316406,40.754863739013672,N,979 +id2632426,1,2016-04-18 00:10:59,2016-04-18 00:17:15,1,-73.999992370605469,40.73046875,-73.982086181640625,40.757759094238281,N,376 +id3657128,1,2016-03-27 20:52:23,2016-03-27 20:57:46,4,-73.996971130371094,40.732627868652344,-74.005744934082031,40.735958099365234,N,323 +id0462114,2,2016-05-13 15:25:02,2016-05-13 15:33:05,1,-73.989608764648437,40.757720947265625,-73.990386962890625,40.751239776611328,N,483 +id1332738,2,2016-05-26 17:22:32,2016-05-26 17:24:14,1,-74.002632141113281,40.728580474853516,-73.998199462890625,40.735561370849609,N,102 +id0838755,2,2016-05-10 11:25:01,2016-05-10 11:42:44,2,-73.973136901855469,40.751140594482422,-73.987106323242187,40.703788757324219,N,1063 +id2334982,1,2016-05-03 08:43:31,2016-05-03 09:00:08,1,-73.970184326171875,40.784221649169922,-73.976951599121094,40.758716583251953,N,997 +id1513877,1,2016-03-20 04:14:43,2016-03-20 04:38:12,1,-73.982803344726563,40.731510162353516,-73.954719543457031,40.656009674072266,N,1409 +id1702122,1,2016-02-24 16:24:47,2016-02-24 16:32:54,1,-73.986557006835938,40.73046875,-73.99969482421875,40.737640380859375,N,487 +id1107195,1,2016-02-19 23:37:47,2016-02-19 23:53:39,2,-73.989509582519531,40.719188690185547,-73.957077026367188,40.732921600341797,N,952 +id2528985,1,2016-02-09 17:04:22,2016-02-09 17:34:56,1,-73.776718139648438,40.645740509033203,-73.97576904296875,40.747554779052734,N,1834 +id2229264,1,2016-04-20 08:25:52,2016-04-20 08:49:08,1,-73.957679748535156,40.765586853027344,-74.011360168457031,40.701702117919922,N,1396 +id0474147,1,2016-04-23 06:40:13,2016-04-23 06:52:42,1,-73.99798583984375,40.735893249511719,-73.954933166503906,40.76531982421875,N,749 +id0412987,2,2016-01-20 15:07:57,2016-01-20 15:16:49,5,-74.006416320800781,40.732833862304688,-74.011711120605469,40.714981079101562,N,532 +id2509119,1,2016-05-16 19:34:32,2016-05-16 20:17:17,1,-73.783714294433594,40.648670196533203,-73.985397338867187,40.759708404541016,N,2565 +id2587113,2,2016-06-05 17:27:07,2016-06-05 17:33:19,2,-73.98876953125,40.744979858398437,-73.990921020507812,40.748638153076172,N,372 +id0033611,2,2016-02-24 19:30:25,2016-02-24 19:48:09,6,-73.979232788085938,40.784610748291016,-73.944343566894531,40.837020874023438,N,1064 +id3687638,2,2016-02-05 21:49:47,2016-02-05 21:56:11,2,-73.974830627441406,40.743350982666016,-73.988006591796875,40.733600616455078,N,384 +id3774911,2,2016-02-23 09:17:53,2016-02-23 09:31:31,1,-73.980827331542969,40.753231048583984,-73.973709106445313,40.758560180664063,N,818 +id3621795,2,2016-01-20 19:46:04,2016-01-20 20:07:51,1,-73.98175048828125,40.748863220214844,-73.977729797363281,40.783981323242187,N,1307 +id1518762,2,2016-05-04 18:18:52,2016-05-04 18:33:57,1,-73.978439331054687,40.762760162353516,-73.946968078613281,40.776130676269531,N,905 +id2684478,1,2016-02-16 10:11:46,2016-02-16 10:28:41,2,-73.994064331054688,40.751224517822266,-73.974288940429688,40.759716033935547,N,1015 +id3625338,2,2016-05-19 13:18:33,2016-05-19 14:01:50,1,-74.017807006835938,40.706520080566406,-73.976661682128906,40.757461547851563,N,2597 +id0218155,1,2016-01-30 18:12:13,2016-01-30 18:18:11,1,-73.888763427734375,40.746990203857422,-73.876731872558594,40.742733001708984,N,358 +id0389910,2,2016-04-28 04:30:23,2016-04-28 04:48:48,1,-73.986007690429688,40.722911834716797,-73.872711181640625,40.774520874023438,N,1105 +id1086694,2,2016-03-09 16:01:23,2016-03-09 16:05:19,1,-73.989662170410156,40.74176025390625,-73.999473571777344,40.739269256591797,N,236 +id1188331,2,2016-03-04 10:15:04,2016-03-04 10:28:04,6,-73.950752258300781,40.782360076904297,-73.962516784667969,40.763172149658203,N,780 +id3005914,2,2016-03-24 19:45:42,2016-03-24 20:00:19,1,-74.010032653808594,40.712940216064453,-73.979568481445313,40.727329254150391,N,877 +id3128500,2,2016-03-20 15:37:18,2016-03-20 15:52:50,4,-73.963043212890625,40.711761474609375,-73.997207641601563,40.722209930419922,N,932 +id3006223,1,2016-03-18 21:56:01,2016-03-18 22:02:54,1,-73.9835205078125,40.771217346191406,-73.976173400878906,40.792396545410156,N,413 +id3614647,2,2016-05-28 19:12:02,2016-05-28 19:20:14,2,-73.987060546875,40.750938415527344,-73.974533081054687,40.757274627685547,N,492 +id0946130,1,2016-05-24 07:48:49,2016-05-24 08:02:51,1,-73.975135803222656,40.741725921630859,-73.989364624023438,40.751045227050781,N,842 +id2219057,2,2016-03-03 14:44:16,2016-03-03 14:57:11,1,-73.988128662109375,40.738430023193359,-73.993011474609375,40.752487182617188,N,775 +id1638934,2,2016-04-25 23:26:37,2016-04-25 23:48:30,1,-73.97869873046875,40.744976043701172,-73.933433532714844,40.696632385253906,N,1313 +id3939386,2,2016-06-30 02:09:30,2016-06-30 02:14:30,1,-73.990501403808594,40.724811553955078,-73.977561950683594,40.718429565429687,N,300 +id1644674,1,2016-02-23 18:59:13,2016-02-23 19:42:08,1,-73.8729248046875,40.7740478515625,-73.988128662109375,40.759162902832031,N,2575 +id3784207,1,2016-05-13 19:09:13,2016-05-13 19:40:20,1,-73.955352783203125,40.768295288085937,-73.9678955078125,40.688480377197266,N,1867 +id3012999,1,2016-05-27 17:27:46,2016-05-27 17:45:24,2,-73.995391845703125,40.761428833007812,-73.973678588867187,40.763149261474609,N,1058 +id2562530,1,2016-02-10 09:20:17,2016-02-10 09:32:32,1,-73.949272155761719,40.773189544677734,-73.971832275390625,40.750518798828125,N,735 +id3782269,1,2016-06-22 18:07:21,2016-06-22 18:16:01,1,-73.967132568359375,40.756927490234375,-73.976722717285156,40.747714996337891,N,520 +id2893144,1,2016-06-02 11:31:31,2016-06-02 11:41:40,1,-73.954307556152344,40.778980255126953,-73.96240234375,40.7723388671875,N,609 +id1212821,2,2016-05-13 15:33:52,2016-05-13 16:35:02,1,-73.872917175292969,40.774200439453125,-73.982276916503906,40.739410400390625,N,3670 +id1446014,2,2016-04-02 23:19:38,2016-04-02 23:24:54,6,-73.907859802246094,40.774116516113281,-73.889778137207031,40.769451141357422,N,316 +id2416818,1,2016-06-24 07:36:59,2016-06-24 07:42:08,1,-73.965423583984375,40.755077362060547,-73.966964721679688,40.760776519775391,N,309 +id0712971,2,2016-04-11 20:45:15,2016-04-11 20:50:05,2,-73.978057861328125,40.763797760009766,-73.975662231445312,40.757766723632812,N,290 +id2842263,1,2016-01-05 01:48:10,2016-01-05 02:04:56,1,-73.957939147949219,40.72186279296875,-73.806877136230469,40.716796875,N,1006 +id1187929,1,2016-04-07 14:14:06,2016-04-07 14:17:38,1,-73.98150634765625,40.78082275390625,-73.974212646484375,40.790569305419922,N,212 +id0221938,1,2016-04-30 16:37:23,2016-04-30 16:55:33,1,-73.983741760253906,40.721576690673828,-73.997657775878906,40.756637573242188,N,1090 +id3002925,2,2016-06-17 19:36:51,2016-06-17 19:45:46,2,-73.996261596679687,40.742740631103516,-73.987678527832031,40.732738494873047,N,535 +id3450737,2,2016-06-01 13:48:57,2016-06-01 14:11:40,1,-73.970664978027344,40.758968353271484,-74.010185241699219,40.721462249755859,N,1363 +id0977048,2,2016-05-17 18:36:47,2016-05-17 18:57:03,5,-73.955856323242188,40.764217376708984,-73.9910888671875,40.750545501708984,N,1216 +id1441739,2,2016-05-01 09:50:11,2016-05-01 09:54:07,4,-73.968093872070313,40.762271881103516,-73.95721435546875,40.770107269287109,N,236 +id1268779,1,2016-06-02 19:37:51,2016-06-02 19:46:13,2,-73.951896667480469,40.773677825927734,-73.964408874511719,40.769840240478516,Y,502 +id2514689,1,2016-05-08 00:56:40,2016-05-08 00:59:20,1,-74.003250122070312,40.715877532958984,-73.999732971191406,40.719051361083984,N,160 +id3431345,2,2016-06-07 12:58:48,2016-06-08 12:58:00,6,-73.9549560546875,40.77764892578125,-73.981033325195313,40.74371337890625,N,86352 +id3729754,1,2016-01-17 17:23:21,2016-01-17 17:29:15,3,-73.982101440429688,40.773750305175781,-73.975906372070313,40.783119201660156,N,354 +id3043907,1,2016-02-09 19:43:46,2016-02-09 19:54:53,1,-73.984634399414062,40.768501281738281,-73.972953796386719,40.785343170166016,N,667 +id0904100,1,2016-01-01 16:41:17,2016-01-01 16:53:23,3,-73.965225219726563,40.774868011474609,-73.9932861328125,40.757408142089844,N,726 +id1725933,1,2016-05-14 13:41:21,2016-05-14 13:51:50,1,-73.999382019042969,40.733856201171875,-73.985588073730469,40.756210327148438,N,629 +id2641288,2,2016-04-03 08:34:32,2016-04-03 08:49:58,1,-73.789840698242188,40.646961212158203,-73.872817993164063,40.774250030517578,N,926 +id3424870,1,2016-02-25 11:04:04,2016-02-25 11:07:40,1,-73.983963012695312,40.749351501464844,-73.990684509277344,40.739978790283203,N,216 +id2743302,2,2016-03-22 07:57:12,2016-03-22 08:00:33,1,-73.961891174316406,40.763938903808594,-73.954856872558594,40.765369415283203,N,201 +id3651562,1,2016-05-07 12:27:03,2016-05-07 12:32:51,1,-73.960639953613281,40.781501770019531,-73.975936889648438,40.788127899169922,N,348 +id2445562,1,2016-04-08 13:12:44,2016-04-08 13:18:42,1,-73.99822998046875,40.745716094970703,-73.995002746582031,40.7464599609375,N,358 +id1039731,1,2016-02-24 21:36:38,2016-02-24 21:46:59,1,-74.001663208007813,40.735523223876953,-73.984596252441406,40.738540649414062,N,621 +id0333816,1,2016-04-20 07:56:36,2016-04-20 08:01:28,1,-73.992050170898438,40.749141693115234,-73.987838745117188,40.741004943847656,N,292 +id1582499,2,2016-03-25 13:25:34,2016-03-25 13:42:17,1,-73.993858337402344,40.735321044921875,-73.977073669433594,40.760108947753906,N,1003 +id0103178,1,2016-03-15 07:27:28,2016-03-15 07:34:46,1,-73.959541320800781,40.770111083984375,-73.972518920898437,40.75909423828125,N,438 +id0665766,2,2016-04-30 14:07:24,2016-04-30 14:22:11,6,-74.001106262207031,40.739120483398437,-73.985008239746094,40.72821044921875,N,887 +id3638060,2,2016-03-24 09:32:56,2016-03-24 09:47:32,5,-73.991432189941406,40.749900817871094,-73.972572326660156,40.762248992919922,N,876 +id1566978,1,2016-06-20 14:39:25,2016-06-20 14:48:11,2,-73.975303649902344,40.765182495117188,-73.962196350097656,40.767959594726562,N,526 +id3899530,1,2016-02-27 00:13:39,2016-02-27 00:14:37,1,-73.982521057128906,40.727420806884766,-73.980583190917969,40.730060577392578,N,58 +id1424850,2,2016-02-14 11:08:05,2016-02-14 11:20:59,1,-73.992912292480469,40.736736297607422,-73.957237243652344,40.778438568115234,N,774 +id1655693,1,2016-04-26 12:58:43,2016-04-26 13:07:33,1,-73.957756042480469,40.768867492675781,-73.95440673828125,40.764202117919922,N,530 +id1187986,2,2016-05-20 19:54:32,2016-05-20 19:58:02,5,-73.980911254882812,40.729560852050781,-73.979667663574219,40.735420227050781,N,210 +id3302648,2,2016-01-18 11:05:51,2016-01-18 11:10:43,1,-73.982902526855469,40.764736175537109,-73.989898681640625,40.752216339111328,N,292 +id1998734,1,2016-05-05 19:50:58,2016-05-05 20:21:42,1,-73.972091674804688,40.743659973144531,-74.011146545410156,40.678886413574219,N,1844 +id1111690,1,2016-04-27 09:55:25,2016-04-27 10:09:24,1,-73.963630676269531,40.774330139160156,-73.974220275878906,40.762947082519531,N,839 +id2123160,1,2016-01-16 14:49:56,2016-01-16 15:08:21,1,-74.001754760742188,40.737552642822266,-73.964149475097656,40.754646301269531,N,1105 +id3131721,2,2016-03-05 22:17:47,2016-03-05 22:58:28,3,-73.982185363769531,40.763679504394531,-73.785469055175781,40.6497802734375,N,2441 +id0590457,2,2016-03-10 13:57:37,2016-03-10 14:08:04,1,-73.945709228515625,40.773670196533203,-73.955368041992188,40.782489776611328,N,627 +id1471849,1,2016-05-01 14:04:57,2016-05-01 14:14:55,1,-73.984664916992188,40.742778778076172,-73.976760864257813,40.765914916992188,N,598 +id2499555,1,2016-05-27 10:24:53,2016-05-27 10:29:13,1,-73.986534118652344,40.725925445556641,-73.974349975585937,40.730243682861328,N,260 +id2822310,1,2016-06-02 22:35:44,2016-06-02 22:54:40,1,-73.986915588378906,40.760929107666016,-73.993293762207031,40.727954864501953,N,1136 +id2088360,2,2016-02-13 00:08:26,2016-02-13 00:25:41,1,-73.985603332519531,40.763233184814453,-74.015853881835938,40.711593627929688,N,1035 +id0551408,1,2016-04-04 07:27:57,2016-04-04 07:50:20,1,-73.9666748046875,40.753261566162109,-73.989730834960938,40.772781372070313,N,1343 +id1286147,1,2016-03-15 23:47:33,2016-03-15 23:49:54,1,-73.983184814453125,40.771335601806641,-73.983848571777344,40.767135620117188,N,141 +id0616918,2,2016-06-14 09:00:24,2016-06-14 09:20:10,1,-73.996078491210937,40.732681274414063,-73.975479125976562,40.756000518798828,N,1186 +id3478687,2,2016-01-29 16:16:56,2016-01-29 16:26:32,1,-73.955856323242188,40.787807464599609,-73.974708557128906,40.790061950683594,N,576 +id1549243,2,2016-06-16 15:38:11,2016-06-16 16:29:06,1,-73.87091064453125,40.773765563964844,-73.978500366210938,40.788238525390625,N,3055 +id0419920,1,2016-04-17 15:58:22,2016-04-17 16:10:02,1,-73.957077026367188,40.770618438720703,-73.977424621582031,40.745624542236328,N,700 +id1043770,1,2016-01-10 13:01:55,2016-01-10 13:08:22,1,-73.981452941894531,40.778926849365234,-73.982170104980469,40.769073486328125,N,387 +id0270389,1,2016-04-20 10:52:58,2016-04-20 11:18:49,1,-73.975196838378906,40.787441253662109,-73.958930969238281,40.768115997314453,N,1551 +id3713279,2,2016-06-04 15:47:52,2016-06-04 15:58:29,1,-73.992210388183594,40.749187469482422,-73.988311767578125,40.727668762207031,N,637 +id0089817,1,2016-05-15 18:34:10,2016-05-15 18:35:48,4,-73.986488342285156,40.755363464355469,-73.990890502929688,40.750030517578125,N,98 +id3743730,1,2016-05-27 15:01:29,2016-05-27 15:03:45,1,-74.00030517578125,40.735183715820313,-74.003120422363281,40.738182067871094,N,136 +id2179617,1,2016-04-05 17:44:40,2016-04-05 18:08:01,1,-73.967910766601563,40.771221160888672,-73.989707946777344,40.730270385742188,N,1401 +id0122811,2,2016-02-21 15:50:55,2016-02-21 15:58:10,1,-73.99578857421875,40.764869689941406,-73.98236083984375,40.775081634521484,N,435 +id2019806,2,2016-04-19 20:46:53,2016-04-19 21:08:57,1,-73.969047546386719,40.754280090332031,-74.003654479980469,40.72259521484375,N,1324 +id3709828,2,2016-02-21 02:33:21,2016-02-21 02:41:07,1,-73.985122680664062,40.748519897460938,-73.984893798828125,40.767658233642578,N,466 +id0044133,1,2016-06-28 21:28:53,2016-06-28 21:35:11,1,-73.979789733886719,40.660770416259766,-73.961082458496094,40.655208587646484,Y,378 +id1519803,2,2016-02-13 17:13:33,2016-02-13 17:19:22,1,-73.984710693359375,40.764274597167969,-73.984962463378906,40.773963928222656,N,349 +id1468547,2,2016-05-25 13:46:52,2016-05-25 13:52:55,5,-73.971000671386719,40.794239044189453,-73.966911315917969,40.789199829101563,N,363 +id3167636,1,2016-03-23 09:06:12,2016-03-23 09:12:11,1,-73.988639831542969,40.722160339355469,-73.991256713867188,40.730903625488281,N,359 +id1093203,2,2016-01-05 14:58:30,2016-01-05 15:29:28,6,-73.87451171875,40.77410888671875,-74.004066467285156,40.742111206054688,N,1858 +id0934062,2,2016-06-22 23:30:41,2016-06-22 23:56:08,1,-73.9871826171875,40.692218780517578,-73.949073791503906,40.777351379394531,N,1527 +id3247844,2,2016-05-18 09:48:22,2016-05-18 10:44:47,1,-73.983993530273437,40.758960723876953,-73.776351928710937,40.645095825195313,N,3385 +id0875217,1,2016-03-31 19:56:40,2016-03-31 20:12:50,1,-73.990440368652344,40.766712188720703,-73.953056335449219,40.780162811279297,N,970 +id0533237,2,2016-05-17 08:03:07,2016-05-17 08:10:45,1,-73.967338562011719,40.763328552246094,-73.972640991210937,40.755359649658203,N,458 +id0455193,1,2016-01-01 16:47:37,2016-01-01 17:13:15,4,-73.998504638671875,40.717086791992188,-73.981826782226563,40.761295318603516,N,1538 +id3992845,2,2016-03-06 14:14:21,2016-03-06 14:21:33,1,-73.991523742675781,40.76776123046875,-73.990226745605469,40.761749267578125,N,432 +id1631034,2,2016-02-02 15:24:17,2016-02-02 15:32:37,1,-73.948593139648437,40.794384002685547,-73.932357788085938,40.794883728027344,N,500 +id0975106,2,2016-01-11 07:51:28,2016-01-11 08:02:46,6,-73.991416931152344,40.75006103515625,-73.989486694335938,40.747688293457031,N,678 +id3767847,2,2016-04-29 22:28:42,2016-04-29 22:50:45,1,-73.983131408691406,40.747894287109375,-73.9761962890625,40.788341522216797,N,1323 +id2982084,2,2016-05-15 02:55:18,2016-05-15 02:56:52,1,-73.982368469238281,40.775302886962891,-73.978752136230469,40.780769348144531,N,94 +id0669997,2,2016-05-03 04:50:14,2016-05-03 04:58:16,1,-73.98907470703125,40.763408660888672,-73.98541259765625,40.74462890625,N,482 +id0509665,1,2016-04-21 11:14:30,2016-04-21 11:28:14,1,-73.972755432128906,40.677722930908203,-74.000457763671875,40.716808319091797,N,824 +id0268330,2,2016-01-16 00:11:27,2016-01-16 00:24:02,1,-74.008010864257813,40.717151641845703,-73.988685607910156,40.731136322021484,N,755 +id2642595,2,2016-02-12 16:35:07,2016-02-12 16:50:54,1,-73.990364074707031,40.731063842773437,-74.005203247070313,40.728481292724609,N,947 +id0243844,2,2016-02-08 14:44:47,2016-02-08 15:11:06,1,-73.98583984375,40.753089904785156,-74.177230834960938,40.69110107421875,N,1579 +id2630621,2,2016-06-15 14:34:13,2016-06-15 14:40:58,2,-73.982780456542969,40.726970672607422,-73.989212036132812,40.734291076660156,N,405 +id2622029,2,2016-04-11 07:18:37,2016-04-11 07:24:15,1,-73.985260009765625,40.744609832763672,-73.972320556640625,40.762241363525391,N,338 +id3074088,1,2016-06-27 15:34:56,2016-06-27 15:49:48,2,-73.960960388183594,40.780628204345703,-73.975753784179688,40.75958251953125,N,892 +id3833288,1,2016-01-11 18:18:50,2016-01-11 18:31:04,1,-73.979011535644531,40.75341796875,-74.000175476074219,40.728683471679688,N,734 +id0535062,1,2016-04-14 12:00:58,2016-04-14 12:17:26,1,-73.984512329101563,40.751968383789063,-73.981117248535156,40.755912780761719,N,988 +id0619230,1,2016-04-28 15:49:53,2016-04-28 16:25:31,1,-73.990638732910156,40.755992889404297,-73.872734069824219,40.774295806884766,Y,2138 +id0992282,1,2016-01-25 07:17:15,2016-01-25 07:21:32,1,-74.013298034667969,40.716472625732422,-74.015678405761719,40.711326599121094,N,257 +id3475428,1,2016-03-10 00:08:34,2016-03-10 00:27:35,1,-73.986526489257813,40.719566345214844,-73.992828369140625,40.763248443603516,N,1141 +id2920613,2,2016-06-25 16:26:31,2016-06-25 16:30:09,2,-73.981895446777344,40.769847869873047,-73.980033874511719,40.762783050537109,N,218 +id0664421,2,2016-03-08 20:44:08,2016-03-08 20:57:13,2,-73.998786926269531,40.760269165039063,-73.995903015136719,40.726421356201172,N,785 +id2818775,1,2016-03-28 07:46:15,2016-03-28 07:51:12,1,-73.986129760742188,40.751846313476562,-73.976242065429687,40.75653076171875,N,297 +id1240777,2,2016-04-04 11:23:01,2016-04-04 11:34:38,1,-73.99114990234375,40.732978820800781,-74.004341125488281,40.716110229492188,N,697 +id3470045,2,2016-02-03 08:26:37,2016-02-03 08:33:32,6,-73.972328186035156,40.786220550537109,-73.981964111328125,40.77313232421875,N,415 +id3716308,2,2016-03-20 23:23:23,2016-03-20 23:31:19,5,-73.991592407226562,40.726909637451172,-73.995330810546875,40.7440185546875,N,476 +id0038165,1,2016-02-05 13:04:11,2016-02-05 13:22:19,1,-73.960617065429687,40.811649322509766,-73.967781066894531,40.772121429443359,N,1088 +id2773325,2,2016-03-17 23:16:58,2016-03-18 00:00:15,1,-73.967399597167969,40.756450653076172,-73.956466674804688,40.619701385498047,N,2597 +id3657769,2,2016-04-23 09:23:43,2016-04-23 09:28:17,1,-74.004058837890625,40.733020782470703,-74.005378723144531,40.716682434082031,N,274 +id2867874,1,2016-02-28 03:44:23,2016-02-28 03:53:05,1,-73.987586975097656,40.719818115234375,-73.972549438476562,40.749374389648438,N,522 +id2137081,2,2016-06-09 06:06:36,2016-06-09 06:16:00,4,-73.975021362304688,40.756866455078125,-73.996543884277344,40.736381530761719,N,564 +id0204898,2,2016-01-14 14:47:41,2016-01-14 15:04:24,1,-73.946746826171875,40.772247314453125,-73.970100402832031,40.764732360839844,N,1003 +id0581053,2,2016-04-20 16:40:00,2016-04-20 16:54:36,1,-73.978782653808594,40.740970611572266,-74.002532958984375,40.706668853759766,N,876 +id2208624,2,2016-01-18 13:28:52,2016-01-18 13:44:28,1,-73.978912353515625,40.765708923339844,-73.961822509765625,40.805538177490234,N,936 +id3478777,1,2016-04-24 15:52:41,2016-04-24 16:19:18,1,-73.961738586425781,40.811149597167969,-73.973663330078125,40.757575988769531,N,1597 +id0299771,2,2016-04-25 20:21:31,2016-04-25 20:40:56,5,-73.959220886230469,40.770030975341797,-73.991722106933594,40.749710083007812,N,1165 +id3274717,1,2016-02-10 14:01:25,2016-02-10 14:09:37,1,-73.988990783691406,40.753776550292969,-73.98583984375,40.74456787109375,N,492 +id3829159,2,2016-06-03 08:04:23,2016-06-03 08:14:54,4,-73.990379333496094,40.740383148193359,-74.009895324707031,40.721786499023438,N,631 +id2160767,1,2016-04-22 12:07:34,2016-04-22 12:17:07,1,-73.987678527832031,40.718547821044922,-74.002693176269531,40.715450286865234,N,573 +id2784061,1,2016-01-06 06:47:26,2016-01-06 06:50:04,1,-73.985496520996094,40.744834899902344,-73.979316711425781,40.752639770507813,N,158 +id3145753,2,2016-04-15 09:36:14,2016-04-15 09:53:41,1,-73.988761901855469,40.763893127441406,-73.988227844238281,40.740966796875,N,1047 +id0508736,1,2016-03-30 08:05:38,2016-03-30 08:05:41,1,-73.964096069335938,40.777172088623047,-73.964088439941406,40.777156829833984,N,3 +id0641167,1,2016-02-24 18:26:49,2016-02-24 18:35:01,1,-73.968833923339844,40.750171661376953,-73.95843505859375,40.759979248046875,N,492 +id1035334,2,2016-02-24 05:57:52,2016-02-24 06:05:30,6,-73.789802551269531,40.647228240966797,-73.809501647949219,40.670158386230469,N,458 +id3343832,1,2016-03-12 21:08:11,2016-03-12 21:18:12,3,-73.99005126953125,40.741863250732422,-73.978530883789063,40.752357482910156,N,601 +id1514948,1,2016-01-29 16:29:25,2016-01-29 16:39:48,1,-74.003738403320312,40.742103576660156,-74.007255554199219,40.741100311279297,N,623 +id0740190,1,2016-03-04 10:03:40,2016-03-04 10:09:13,1,-73.989662170410156,40.756813049316406,-73.982627868652344,40.758831024169922,N,333 +id0126513,1,2016-01-06 14:11:37,2016-01-06 14:26:06,2,-73.982170104980469,40.751609802246094,-73.995315551757812,40.762096405029297,N,869 +id1338223,1,2016-03-04 21:58:34,2016-03-04 22:09:57,1,-73.984947204589844,40.753631591796875,-73.948875427246094,40.770847320556641,N,683 +id0335019,2,2016-02-27 23:25:11,2016-02-27 23:35:50,1,-73.980583190917969,40.774929046630859,-73.956443786621094,40.785758972167969,N,639 +id3001635,2,2016-06-05 01:23:30,2016-06-05 01:28:35,2,-73.999191284179688,40.749652862548828,-74.000152587890625,40.742755889892578,N,305 +id3830698,1,2016-02-18 18:49:34,2016-02-18 18:56:01,1,-73.980972290039063,40.771114349365234,-73.9779052734375,40.783836364746094,N,387 +id1160227,2,2016-02-20 18:41:21,2016-02-20 18:45:21,1,-73.969261169433594,40.797840118408203,-73.96624755859375,40.804969787597656,N,240 +id3073782,1,2016-03-05 00:18:45,2016-03-05 00:26:34,1,-74.00860595703125,40.715930938720703,-74.016204833984375,40.706027984619141,N,469 +id0301773,1,2016-04-15 14:33:00,2016-04-15 14:44:43,1,-73.962196350097656,40.779125213623047,-73.977943420410156,40.788780212402344,N,703 +id3400624,2,2016-05-02 14:45:34,2016-05-02 15:29:54,1,-73.789802551269531,40.647090911865234,-73.983375549316406,40.750312805175781,N,2660 +id2693192,2,2016-02-22 14:16:11,2016-02-22 14:21:58,5,-73.991691589355469,40.759941101074219,-73.993751525878906,40.742599487304687,N,347 +id1679858,1,2016-03-23 21:05:31,2016-03-23 21:14:53,1,-73.975105285644531,40.752456665039063,-73.989273071289063,40.729343414306641,N,562 +id3929561,1,2016-01-19 16:01:58,2016-01-19 16:48:18,1,-73.790359497070313,40.644023895263672,-73.93902587890625,40.716094970703125,N,2780 +id1518330,1,2016-05-26 07:49:14,2016-05-26 07:56:46,1,-73.965354919433594,40.763587951660156,-73.959030151367188,40.775043487548828,N,452 +id0796871,1,2016-02-18 13:00:44,2016-02-18 13:06:08,1,-74.004432678222656,40.729770660400391,-73.996452331542969,40.725288391113281,N,324 +id1669543,2,2016-04-27 08:49:59,2016-04-27 08:57:38,1,-73.949760437011719,40.771961212158203,-73.976272583007812,40.737651824951172,N,459 +id2076445,2,2016-05-10 18:16:01,2016-05-10 18:24:13,5,-74.008453369140625,40.720809936523438,-73.993049621582031,40.730888366699219,N,492 +id3100150,2,2016-04-14 23:53:30,2016-04-14 23:59:43,1,-73.995857238769531,40.767227172851563,-73.980018615722656,40.770572662353516,N,373 +id2769170,2,2016-01-05 10:00:06,2016-01-05 10:06:07,1,-73.961860656738281,40.765251159667969,-73.972061157226562,40.764987945556641,N,361 +id0863268,2,2016-01-08 10:33:48,2016-01-08 10:54:00,5,-73.966499328613281,40.772243499755859,-74.010276794433594,40.702110290527344,N,1212 +id3895407,2,2016-04-23 00:01:47,2016-04-23 00:22:39,6,-74.008041381835938,40.723651885986328,-73.955657958984375,40.715831756591797,N,1252 +id1961512,1,2016-02-21 17:25:05,2016-02-21 17:35:18,1,-73.992393493652344,40.746879577636719,-73.979873657226562,40.767185211181641,N,613 +id0552992,2,2016-05-13 05:31:59,2016-05-13 05:37:03,3,-73.971641540527344,40.762676239013672,-73.98138427734375,40.764598846435547,N,304 +id3048673,1,2016-05-12 21:34:33,2016-05-12 21:39:04,1,-73.984481811523438,40.764171600341797,-73.976638793945313,40.777477264404297,N,271 +id1895810,2,2016-04-04 00:32:53,2016-04-04 00:33:33,2,-73.979988098144531,40.687759399414062,-73.978553771972656,40.68524169921875,N,40 +id2921495,2,2016-05-29 16:32:06,2016-05-29 16:50:46,5,-73.972946166992188,40.780498504638672,-73.979225158691406,40.746044158935547,N,1120 +id2476641,2,2016-01-25 05:15:30,2016-01-25 05:33:13,1,-73.948921203613281,40.774116516113281,-73.991050720214844,40.744625091552734,N,1063 +id2879747,2,2016-02-08 00:16:21,2016-02-08 00:41:23,1,-73.782218933105469,40.644649505615234,-73.9498291015625,40.679008483886719,N,1502 +id0428218,1,2016-03-31 21:02:10,2016-03-31 21:21:14,1,-73.987213134765625,40.753532409667969,-74.011802673339844,40.715057373046875,N,1144 +id3587572,2,2016-01-22 09:27:24,2016-01-22 09:35:49,5,-73.971908569335938,40.763099670410156,-73.955902099609375,40.784950256347656,N,505 +id3191524,2,2016-06-22 18:42:20,2016-06-22 18:52:31,1,-73.963668823242188,40.761730194091797,-73.973899841308594,40.748710632324219,N,611 +id2399783,1,2016-01-30 22:08:46,2016-01-30 22:59:23,2,-73.998161315917969,40.735649108886719,-74.173347473144531,40.796890258789063,N,3037 +id0110347,1,2016-02-21 17:22:44,2016-02-21 17:31:37,1,-73.992645263671875,40.748497009277344,-73.975517272949219,40.758167266845703,N,533 +id3955283,1,2016-04-05 20:59:30,2016-04-05 21:22:28,1,-74.00433349609375,40.741523742675781,-73.991523742675781,40.692615509033203,N,1378 +id2650678,1,2016-04-24 08:27:23,2016-04-24 08:48:55,1,-73.99176025390625,40.726402282714844,-73.945259094238281,40.823265075683594,N,1292 +id3509622,1,2016-04-26 11:27:10,2016-04-26 11:33:33,1,-73.955474853515625,40.779857635498047,-73.963897705078125,40.773937225341797,N,383 +id2221580,1,2016-03-08 09:04:55,2016-03-08 09:12:49,1,-73.978752136230469,40.729770660400391,-73.997276306152344,40.737556457519531,N,474 +id3278795,2,2016-03-11 06:24:53,2016-03-11 06:28:34,1,-73.989982604980469,40.756946563720703,-73.979385375976562,40.761253356933594,N,221 +id2072297,2,2016-03-05 11:34:01,2016-03-05 11:45:17,1,-73.987472534179688,40.732921600341797,-73.987724304199219,40.721332550048828,N,676 +id3765039,2,2016-05-28 13:55:23,2016-05-28 14:09:33,2,-73.992416381835938,40.750141143798828,-73.9742431640625,40.750587463378906,N,850 +id0125377,1,2016-04-13 21:57:14,2016-04-13 22:28:33,1,-73.979011535644531,40.762081146240234,-73.892608642578125,40.769252777099609,N,1879 +id1110813,2,2016-01-24 20:03:03,2016-01-24 20:15:48,1,-73.965858459472656,40.758651733398438,-73.988998413085938,40.77764892578125,N,765 +id0606229,2,2016-01-16 11:42:47,2016-01-16 11:57:23,2,-73.959686279296875,40.808887481689453,-73.955619812011719,40.772499084472656,N,876 +id0454719,1,2016-03-13 21:21:15,2016-03-13 21:28:52,1,-74.006050109863281,40.735374450683594,-73.993766784667969,40.758895874023438,N,457 +id2799983,2,2016-03-10 21:22:42,2016-03-10 21:40:39,6,-73.975753784179688,40.760528564453125,-73.978652954101563,40.729640960693359,N,1077 +id1906260,2,2016-06-11 18:26:44,2016-06-11 18:42:38,1,-73.965171813964844,40.763427734375,-73.988723754882813,40.775032043457031,N,954 +id1126131,2,2016-02-19 22:02:35,2016-02-19 22:20:38,1,-73.980430603027344,40.753639221191406,-73.996223449707031,40.722061157226563,N,1083 +id3723194,1,2016-06-19 02:54:27,2016-06-19 03:04:24,1,-74.009658813476562,40.73876953125,-73.986137390136719,40.730487823486328,N,597 +id2501176,2,2016-02-28 12:51:00,2016-02-28 13:08:21,1,-74.017753601074219,40.706531524658203,-73.978736877441406,40.750659942626953,N,1041 +id2634920,2,2016-01-05 06:04:59,2016-01-05 06:07:52,1,-74.005134582519531,40.737213134765625,-73.995445251464844,40.747928619384766,N,173 +id2955872,2,2016-02-10 15:59:55,2016-02-10 16:28:10,6,-73.990570068359375,40.7510986328125,-73.942970275878906,40.799270629882813,N,1695 +id1144060,2,2016-03-26 21:49:06,2016-03-26 21:57:50,1,-73.964958190917969,40.755710601806641,-73.984298706054688,40.739459991455078,N,524 +id0753496,1,2016-01-29 15:57:02,2016-01-29 16:18:22,1,-73.954353332519531,40.799846649169922,-73.950103759765625,40.787216186523438,N,1280 +id2633363,2,2016-02-27 21:40:04,2016-02-27 22:18:11,5,-73.978622436523437,40.686790466308594,-73.978851318359375,40.777446746826172,N,2287 +id3208232,1,2016-03-02 16:55:22,2016-03-02 17:01:35,1,-73.971435546875,40.755329132080078,-73.964500427246094,40.76458740234375,N,373 +id0554273,1,2016-04-26 14:39:18,2016-04-26 14:43:09,1,-73.981582641601562,40.737129211425781,-73.993202209472656,40.731674194335937,N,231 +id1925002,1,2016-01-05 17:33:45,2016-01-05 18:02:45,1,-73.972908020019531,40.785682678222656,-73.979217529296875,40.744701385498047,N,1740 +id0145674,2,2016-01-21 20:36:35,2016-01-21 20:47:17,1,-73.982933044433594,40.730823516845703,-73.993331909179687,40.74163818359375,N,642 +id2203936,2,2016-02-06 13:18:47,2016-02-06 13:25:30,2,-73.987068176269531,40.733829498291016,-73.992111206054687,40.740928649902344,N,403 +id2366364,1,2016-06-24 17:49:05,2016-06-24 17:52:58,1,-73.984146118164063,40.726295471191406,-73.98675537109375,40.729793548583984,N,233 +id3368172,1,2016-04-06 07:04:49,2016-04-06 07:14:06,1,-73.983489990234375,40.69476318359375,-73.985069274902344,40.721725463867188,N,557 +id0719799,2,2016-04-30 15:57:41,2016-04-30 16:18:07,1,-74.002937316894531,40.760368347167969,-73.984367370605469,40.746658325195313,N,1226 +id3624818,2,2016-05-22 18:46:57,2016-05-22 18:54:18,1,-73.981475830078125,40.758705139160156,-73.984756469726563,40.748332977294922,N,441 +id2030322,2,2016-06-29 14:05:05,2016-06-29 14:33:00,1,-74.007308959960938,40.727298736572266,-73.984367370605469,40.766731262207031,N,1675 +id3211280,2,2016-06-11 15:04:19,2016-06-11 15:08:21,5,-74.00140380859375,40.707180023193359,-73.987602233886719,40.710468292236328,N,242 +id1741892,1,2016-06-06 19:19:35,2016-06-06 19:41:39,2,-73.872657775878906,40.774265289306641,-73.959701538085938,40.768909454345703,N,1324 +id0346834,1,2016-06-24 13:25:06,2016-06-24 13:38:14,1,-73.970550537109375,40.756000518798828,-73.953681945800781,40.779178619384766,N,788 +id1167485,1,2016-03-26 15:28:26,2016-03-26 15:58:51,1,-73.783500671386719,40.648712158203125,-73.995315551757812,40.574348449707031,N,1825 +id1570012,2,2016-03-31 14:02:55,2016-03-31 15:06:17,1,-73.776763916015625,40.645046234130859,-74.00201416015625,40.720645904541016,N,3802 +id1298277,2,2016-05-04 02:08:31,2016-05-04 02:17:05,1,-73.987022399902344,40.766109466552734,-73.967445373535156,40.760448455810547,N,514 +id0342366,2,2016-03-11 17:53:55,2016-03-11 18:04:02,1,-73.96612548828125,40.765182495117188,-73.974769592285156,40.751998901367188,N,607 +id3900855,1,2016-04-22 10:12:56,2016-04-22 10:42:09,1,-73.863128662109375,40.769927978515625,-73.949676513671875,40.713264465332031,N,1753 +id2757597,1,2016-02-15 05:59:41,2016-02-15 06:02:39,1,-73.970924377441406,40.798526763916016,-73.973831176757813,40.7921142578125,N,178 +id3178164,1,2016-01-11 14:45:07,2016-01-11 15:02:07,1,-74.017196655273438,40.705257415771484,-74.010581970214844,40.718784332275391,N,1020 +id3245557,1,2016-05-03 13:57:17,2016-05-03 14:25:00,1,-74.008491516113281,40.720455169677734,-73.974822998046875,40.697971343994141,N,1663 +id0797830,2,2016-05-01 22:53:57,2016-05-01 22:59:34,3,-73.99127197265625,40.750221252441406,-73.979682922363281,40.752677917480469,N,337 +id1508931,2,2016-05-08 15:23:22,2016-05-08 16:35:24,1,-73.990447998046875,40.691169738769531,-73.776329040527344,40.645389556884766,N,4322 +id2792625,1,2016-06-04 00:45:58,2016-06-04 01:11:59,1,-74.002754211425781,40.728557586669922,-73.996131896972656,40.753395080566406,N,1561 +id2155359,1,2016-06-20 20:05:57,2016-06-20 20:12:08,1,-73.963737487792969,40.7769775390625,-73.970954895019531,40.793037414550781,N,371 +id2422756,2,2016-05-01 13:41:43,2016-05-01 13:50:18,1,-73.966560363769531,40.762119293212891,-73.971183776855469,40.747661590576172,N,515 +id1877742,2,2016-05-23 19:26:11,2016-05-23 19:41:24,1,-73.993568420410156,40.767410278320313,-73.963478088378906,40.774211883544922,N,913 +id3438200,2,2016-04-30 14:16:29,2016-04-30 14:44:03,1,-74.012489318847656,40.707111358642578,-73.963912963867188,40.678260803222656,N,1654 +id3133421,1,2016-06-08 22:49:43,2016-06-08 23:00:12,1,-73.983505249023437,40.765617370605469,-73.960212707519531,40.798126220703125,N,629 +id1117231,1,2016-05-09 08:51:17,2016-05-09 08:57:57,1,-73.981758117675781,40.774051666259766,-73.982826232910156,40.764236450195313,N,400 +id1132928,1,2016-01-18 19:42:55,2016-01-18 19:50:04,1,-73.978279113769531,40.773246765136719,-73.980728149414063,40.759235382080078,N,429 +id3460584,2,2016-04-12 22:49:28,2016-04-12 23:18:44,1,-73.97796630859375,40.725223541259766,-73.956878662109375,40.687103271484375,N,1756 +id2696509,2,2016-04-13 16:42:10,2016-04-13 16:57:48,6,-73.966392517089844,40.760990142822266,-73.972869873046875,40.793209075927734,N,938 +id2288887,2,2016-02-06 00:25:32,2016-02-06 00:27:57,5,-73.991691589355469,40.726200103759766,-73.988563537597656,40.729930877685547,N,145 +id0187694,1,2016-01-29 19:48:25,2016-01-29 19:55:31,1,-73.97265625,40.794151306152344,-73.960609436035156,40.809989929199219,N,426 +id1445613,1,2016-01-30 12:50:40,2016-01-30 13:09:12,1,-73.971267700195313,40.793060302734375,-73.961593627929688,40.761859893798828,N,1112 +id3458579,1,2016-04-14 07:14:39,2016-04-14 07:21:52,1,-73.989692687988281,40.774459838867188,-73.975967407226562,40.764736175537109,N,433 +id0439591,2,2016-02-23 10:06:21,2016-02-23 10:15:11,1,-73.966636657714844,40.788871765136719,-73.953689575195313,40.775390625,N,530 +id1230333,1,2016-04-28 05:30:20,2016-04-28 05:36:43,1,-73.990989685058594,40.755943298339844,-73.973480224609375,40.760299682617188,N,383 +id2758673,2,2016-02-26 15:56:09,2016-02-26 16:04:53,2,-73.982078552246094,40.74603271484375,-73.98382568359375,40.752635955810547,N,524 +id0859122,2,2016-01-10 11:44:07,2016-01-10 11:48:05,2,-73.951828002929687,40.777698516845703,-73.954704284667969,40.787506103515625,N,238 +id3177141,2,2016-04-20 12:46:07,2016-04-20 12:51:57,2,-73.988914489746094,40.752880096435547,-73.984764099121094,40.747478485107422,N,350 +id1495657,2,2016-01-07 19:17:30,2016-01-07 19:22:46,5,-73.992179870605469,40.725112915039063,-73.984184265136719,40.737293243408203,N,316 +id2061665,1,2016-02-26 23:48:44,2016-02-27 00:01:44,4,-73.987663269042969,40.732730865478516,-73.963363647460937,40.766040802001953,N,780 +id1162080,1,2016-01-11 20:51:52,2016-01-11 20:56:17,1,-73.987220764160156,40.733116149902344,-73.998947143554687,40.732463836669922,N,265 +id1756874,2,2016-05-03 15:44:01,2016-05-03 15:55:21,1,-73.983596801757812,40.755241394042969,-73.986068725585937,40.765590667724609,N,680 +id0457109,1,2016-03-05 13:46:55,2016-03-05 13:52:33,1,-73.972763061523438,40.760917663574219,-73.961624145507813,40.774127960205078,N,338 +id1253899,2,2016-04-17 19:01:50,2016-04-17 19:15:42,1,-73.965934753417969,40.801486968994141,-73.996147155761719,40.762508392333984,N,832 +id0108681,1,2016-01-11 06:21:29,2016-01-11 06:24:52,1,-73.982711791992188,40.739437103271484,-73.969688415527344,40.758098602294922,N,203 +id2643929,2,2016-05-05 21:33:26,2016-05-05 21:45:00,5,-73.991630554199219,40.754798889160156,-74.008003234863281,40.739559173583984,N,694 +id2255783,2,2016-01-09 17:58:10,2016-01-09 18:03:48,5,-73.978599548339844,40.785961151123047,-73.981437683105469,40.775020599365234,N,338 +id3032153,2,2016-03-30 21:58:20,2016-03-30 22:06:39,2,-73.990745544433594,40.69287109375,-73.984184265136719,40.696575164794922,N,499 +id2667230,1,2016-06-11 03:58:30,2016-06-11 04:07:31,1,-73.983444213867188,40.726234436035156,-73.999519348144531,40.741550445556641,N,541 +id1613391,1,2016-04-10 01:20:12,2016-04-10 01:23:40,2,-73.9727783203125,40.756130218505859,-73.985336303710938,40.755352020263672,N,208 +id0492041,2,2016-05-24 09:12:09,2016-05-24 09:32:47,1,-73.986137390136719,40.734821319580078,-73.973220825195313,40.759449005126953,N,1238 +id3957042,2,2016-03-25 14:41:18,2016-03-25 14:44:00,1,-73.972076416015625,40.782131195068359,-73.963958740234375,40.777069091796875,N,162 +id2285639,2,2016-05-28 04:24:05,2016-05-28 04:35:50,5,-73.98809814453125,40.748649597167969,-73.93359375,40.763168334960938,N,705 +id0506560,2,2016-04-27 16:39:32,2016-04-27 16:53:20,1,-73.9605712890625,40.775539398193359,-73.971588134765625,40.746326446533203,N,828 +id2993810,2,2016-02-27 11:11:46,2016-02-27 11:28:41,1,-73.956100463867188,40.785560607910156,-73.979721069335938,40.765037536621094,N,1015 +id0651183,1,2016-06-28 16:49:40,2016-06-28 17:07:03,3,-73.989738464355469,40.734405517578125,-73.982002258300781,40.711437225341797,N,1043 +id0287159,1,2016-03-17 17:30:36,2016-03-17 17:52:21,4,-73.991828918457031,40.726028442382813,-73.978691101074219,40.758144378662109,N,1305 +id1291662,2,2016-01-13 20:12:32,2016-01-13 20:29:56,1,-73.863937377929688,40.769588470458984,-73.962425231933594,40.720790863037109,N,1044 +id2856162,2,2016-06-30 21:43:29,2016-06-30 22:02:11,6,-73.98345947265625,40.761459350585938,-74.016448974609375,40.711139678955078,N,1122 +id3120786,2,2016-03-12 16:01:47,2016-03-12 16:09:45,6,-73.982688903808594,40.731113433837891,-73.96478271484375,40.755588531494141,N,478 +id3778751,2,2016-06-11 03:57:45,2016-06-11 04:04:53,3,-73.987228393554688,40.714508056640625,-73.985893249511719,40.72283935546875,N,428 +id0188364,2,2016-02-14 09:57:52,2016-02-14 10:13:47,3,-73.983108520507812,40.738746643066406,-73.960678100585938,40.717098236083984,N,955 +id1775420,1,2016-04-23 04:50:12,2016-04-23 04:51:44,1,-73.856109619140625,40.751434326171875,-73.854530334472656,40.745719909667969,N,92 +id2278315,1,2016-05-18 21:52:15,2016-05-18 22:02:06,1,-73.989288330078125,40.748306274414063,-73.983650207519531,40.761913299560547,N,591 +id0931199,2,2016-05-04 22:28:43,2016-05-04 22:32:51,1,-73.954627990722656,40.777179718017578,-73.954627990722656,40.777179718017578,N,248 +id1144582,1,2016-04-01 07:41:21,2016-04-01 07:47:12,1,-73.958793640136719,40.768287658691406,-73.966201782226563,40.75823974609375,N,351 +id2255999,1,2016-01-02 18:55:50,2016-01-02 19:03:21,2,-73.9786376953125,40.754352569580078,-73.988716125488281,40.737236022949219,N,451 +id2588128,1,2016-06-24 02:02:38,2016-06-24 02:19:41,2,-74.002845764160156,40.733551025390625,-74.026138305664063,40.635570526123047,N,1023 +id3573494,2,2016-01-18 20:34:59,2016-01-18 20:37:44,3,-73.975898742675781,40.754970550537109,-73.981552124023438,40.746349334716797,N,165 +id2093801,2,2016-04-12 22:33:06,2016-04-12 23:12:33,6,-73.984214782714844,40.754928588867188,-73.845428466796875,40.774417877197266,N,2367 +id0660744,2,2016-05-06 10:19:18,2016-05-06 10:31:10,1,-73.972984313964844,40.755134582519531,-73.975494384765625,40.741371154785156,N,712 +id2562892,2,2016-06-30 12:58:06,2016-06-30 13:20:16,1,-73.98956298828125,40.769298553466797,-73.945518493652344,40.790531158447266,N,1330 +id1415119,1,2016-02-28 07:51:47,2016-02-28 08:03:41,1,-73.9122314453125,40.7459716796875,-73.963050842285156,40.774982452392578,N,714 +id3859993,2,2016-02-05 07:46:04,2016-02-05 07:48:45,2,-73.985847473144531,40.746498107910156,-73.992431640625,40.737510681152344,N,161 +id2046783,2,2016-03-11 22:22:40,2016-03-11 22:31:04,1,-73.959907531738281,40.813873291015625,-73.973579406738281,40.792045593261719,N,504 +id1141347,1,2016-01-10 01:43:26,2016-01-10 02:05:18,1,-73.959617614746094,40.718196868896484,-73.866409301757813,40.738025665283203,N,1312 +id1370739,1,2016-01-09 15:21:05,2016-01-09 15:30:03,1,-73.991127014160156,40.755825042724609,-74.000526428222656,40.759143829345703,N,538 +id1749926,1,2016-06-01 23:36:00,2016-06-01 23:57:29,1,-73.998092651367188,40.726146697998047,-73.941276550292969,40.682121276855469,N,1289 +id3958095,2,2016-02-01 19:15:06,2016-02-01 19:28:56,6,-73.971809387207031,40.75775146484375,-73.947807312011719,40.779460906982422,N,830 +id0050198,2,2016-03-05 22:21:15,2016-03-05 22:27:24,1,-73.99298095703125,40.742118835449219,-73.984611511230469,40.73291015625,N,369 +id1505071,1,2016-05-30 13:02:11,2016-05-30 13:05:25,1,-73.991279602050781,40.76025390625,-73.99493408203125,40.750034332275391,N,194 +id0525487,1,2016-02-26 12:20:22,2016-02-26 12:29:53,1,-73.965278625488281,40.801277160644531,-73.951087951660156,40.798515319824219,N,571 +id3830258,2,2016-01-31 19:10:09,2016-01-31 19:19:09,1,-73.984489440917969,40.745304107666016,-73.999481201171875,40.7388916015625,N,540 +id1173542,2,2016-02-12 22:27:30,2016-02-12 22:34:00,2,-73.982124328613281,40.740211486816406,-73.968467712402344,40.7591552734375,N,390 +id0864053,2,2016-03-08 20:27:21,2016-03-08 20:31:28,2,-73.96844482421875,40.764888763427734,-73.979270935058594,40.767055511474609,N,247 +id0175260,1,2016-02-23 09:54:02,2016-02-23 10:09:20,1,-73.978248596191406,40.752220153808594,-73.99609375,40.743297576904297,N,918 +id0103523,2,2016-03-13 14:27:59,2016-03-13 14:50:38,3,-73.958999633789063,40.718715667724609,-73.982742309570313,40.731086730957031,N,1359 +id0435314,1,2016-04-16 12:28:14,2016-04-16 12:37:10,1,-73.975318908691406,40.777156829833984,-73.969589233398438,40.763587951660156,N,536 +id1158076,1,2016-02-22 21:01:36,2016-02-22 21:05:56,1,-73.993232727050781,40.742240905761719,-73.991920471191406,40.749477386474609,N,260 +id0948392,1,2016-05-04 20:53:10,2016-05-04 21:22:06,2,-73.885231018066406,40.773025512695313,-73.988754272460938,40.7576904296875,N,1736 +id0423629,2,2016-03-18 01:08:30,2016-03-18 01:21:59,3,-73.999092102050781,40.730091094970703,-73.985427856445313,40.758811950683594,N,809 +id3860751,1,2016-02-19 09:04:51,2016-02-19 09:11:02,1,-73.971481323242187,40.746414184570313,-73.955780029296875,40.764049530029297,N,371 +id3197590,1,2016-04-20 10:30:06,2016-04-20 11:21:57,1,-73.885353088378906,40.773086547851563,-74.004058837890625,40.721038818359375,N,3111 +id1051165,1,2016-01-31 22:56:02,2016-01-31 23:03:13,1,-73.991828918457031,40.750091552734375,-73.976722717285156,40.7452392578125,N,431 +id1464294,1,2016-03-05 14:08:48,2016-03-05 14:27:49,1,-74.015274047851562,40.714305877685547,-73.97589111328125,40.683506011962891,N,1141 +id1108256,1,2016-03-05 15:17:05,2016-03-05 15:22:40,1,-73.979240417480469,40.758049011230469,-73.979644775390625,40.748950958251953,N,335 +id1792501,2,2016-02-04 23:33:55,2016-02-04 23:40:33,2,-74,40.734439849853516,-73.983718872070313,40.725288391113281,N,398 +id2628035,1,2016-06-05 17:11:30,2016-06-05 17:39:55,1,-73.962692260742187,40.775463104248047,-73.999702453613281,40.753791809082031,N,1705 +id2351562,1,2016-06-27 07:37:01,2016-06-27 07:44:57,1,-73.99920654296875,40.734302520751953,-73.978195190429688,40.752449035644531,N,476 +id3118525,2,2016-05-18 08:34:41,2016-05-18 08:39:32,1,-73.977584838867187,40.749691009521484,-73.983352661132813,40.747207641601563,N,291 +id3581087,2,2016-04-09 02:23:00,2016-04-09 02:38:23,1,-73.982917785644531,40.727020263671875,-73.983131408691406,40.74993896484375,N,923 +id3034802,2,2016-03-18 15:16:00,2016-03-18 15:26:57,1,-73.967430114746094,40.79278564453125,-73.949180603027344,40.783023834228516,N,657 +id0118178,2,2016-01-03 13:33:21,2016-01-03 13:48:31,2,-73.981048583984375,40.758811950683594,-73.99871826171875,40.722751617431641,N,910 +id2841793,1,2016-04-15 18:48:55,2016-04-15 18:58:07,2,-73.997161865234375,40.757228851318359,-73.982368469238281,40.767513275146484,N,552 +id0166019,2,2016-03-09 13:11:57,2016-03-09 13:25:11,1,-73.985076904296875,40.7481689453125,-74.002578735351563,40.724018096923828,N,794 +id3272996,2,2016-01-24 08:13:27,2016-01-24 08:21:21,1,-74.000801086425781,40.758148193359375,-73.989791870117187,40.747058868408203,N,474 +id3346789,1,2016-03-20 17:38:22,2016-03-20 18:13:44,1,-73.872871398925781,40.774257659912109,-74.013816833496094,40.708633422851563,N,2122 +id0299633,1,2016-03-09 13:56:37,2016-03-09 14:28:32,1,-73.95855712890625,40.7686767578125,-73.983230590820313,40.765457153320313,N,1915 +id0541151,1,2016-02-23 10:01:30,2016-02-23 10:06:17,1,-73.980247497558594,40.765716552734375,-73.990692138671875,40.770057678222656,N,287 +id1107876,1,2016-06-25 21:18:01,2016-06-25 21:35:29,1,-74.001388549804688,40.730873107910156,-73.959800720214844,40.762306213378906,N,1048 +id0620020,2,2016-02-11 21:45:17,2016-02-11 22:02:40,5,-74.005172729492188,40.719520568847656,-73.9794921875,40.672664642333984,N,1043 +id1461518,1,2016-02-19 17:52:53,2016-02-19 18:11:25,1,-73.974388122558594,40.756488800048828,-73.986747741699219,40.776580810546875,N,1112 +id2682626,1,2016-01-14 22:39:37,2016-01-14 22:57:36,2,-73.863471984863281,40.769672393798828,-73.975837707519531,40.744667053222656,N,1079 +id3816828,2,2016-05-15 17:34:48,2016-05-15 17:44:09,1,-73.994560241699219,40.736488342285156,-73.982940673828125,40.722640991210938,N,561 +id0925242,2,2016-03-16 20:36:13,2016-03-16 20:39:33,4,-73.975730895996094,40.752010345458984,-73.981239318847656,40.747978210449219,N,200 +id3363119,2,2016-03-08 14:06:44,2016-03-08 14:22:22,1,-74.004722595214844,40.741718292236328,-73.990570068359375,40.750270843505859,N,938 +id3847293,1,2016-06-15 18:25:57,2016-06-15 18:32:20,1,-73.9761962890625,40.764030456542969,-73.976028442382813,40.760238647460937,N,383 +id3326961,1,2016-06-14 13:44:32,2016-06-14 13:52:26,1,-74.004730224609375,40.723716735839844,-73.9920654296875,40.740161895751953,N,474 +id1463761,1,2016-02-29 09:07:15,2016-02-29 09:24:17,1,-73.990203857421875,40.756904602050781,-73.974212646484375,40.749984741210937,N,1022 +id0729228,1,2016-03-23 22:47:15,2016-03-23 23:00:41,1,-74.005905151367188,40.706027984619141,-73.951644897460937,40.780422210693359,N,806 +id0112330,2,2016-03-04 00:18:38,2016-03-04 00:20:40,1,-73.98638916015625,40.755828857421875,-73.97930908203125,40.752609252929687,N,122 +id0166926,2,2016-02-03 07:30:02,2016-02-03 07:35:12,1,-73.991561889648438,40.744941711425781,-73.983413696289062,40.755905151367188,N,310 +id3625826,1,2016-04-02 12:00:40,2016-04-02 12:17:02,1,-73.948684692382812,40.774745941162109,-73.980911254882812,40.773452758789063,N,982 +id1615064,2,2016-04-01 11:38:33,2016-04-01 11:53:11,2,-73.961715698242188,40.77691650390625,-73.977012634277344,40.755947113037109,N,878 +id0384239,1,2016-02-22 19:58:24,2016-02-22 20:05:10,1,-73.978668212890625,40.761062622070313,-73.982208251953125,40.774822235107422,N,406 +id0556596,1,2016-06-27 12:28:01,2016-06-27 13:01:05,1,-74.011184692382813,40.709560394287109,-73.973983764648438,40.764617919921875,N,1984 +id1765800,2,2016-01-14 14:52:42,2016-01-14 15:37:17,1,-73.991912841796875,40.749908447265625,-73.919181823730469,40.760150909423828,N,2675 +id1137266,2,2016-04-29 06:12:52,2016-04-29 06:14:48,1,-73.977073669433594,40.755958557128906,-73.978973388671875,40.762229919433594,N,116 +id2216578,1,2016-01-01 15:10:36,2016-01-01 15:17:34,2,-73.978050231933594,40.757480621337891,-73.983650207519531,40.744247436523438,N,418 +id1594106,2,2016-05-06 18:14:31,2016-05-06 18:19:37,1,-73.94677734375,40.826480865478516,-73.959129333496094,40.809490203857422,N,306 +id0617676,1,2016-03-05 10:47:25,2016-03-05 10:57:32,1,-73.988494873046875,40.758724212646484,-73.991462707519531,40.749763488769531,N,607 +id0948200,2,2016-06-14 10:20:45,2016-06-14 10:24:17,1,-74.000457763671875,40.742420196533203,-74.000541687011719,40.747859954833984,N,212 +id2956835,2,2016-06-11 09:39:06,2016-06-11 09:51:57,2,-73.972282409667969,40.757568359375,-73.979057312011719,40.781745910644531,N,771 +id1153201,1,2016-06-05 11:21:24,2016-06-05 11:25:40,1,-74.015106201171875,40.709545135498047,-74.009773254394531,40.715694427490234,N,256 +id0187208,1,2016-02-07 14:59:17,2016-02-07 15:10:36,1,-73.987327575683594,40.750518798828125,-73.972969055175781,40.780311584472656,N,679 +id3788081,2,2016-05-01 19:43:57,2016-05-01 19:50:08,1,-73.952064514160156,40.824462890625,-73.95574951171875,40.812934875488281,N,371 +id2887173,2,2016-01-08 19:21:19,2016-01-08 19:28:52,2,-73.97747802734375,40.729290008544922,-73.971656799316406,40.743598937988281,N,453 +id2948172,1,2016-06-13 15:45:05,2016-06-13 15:48:22,1,-73.962478637695313,40.76702880859375,-73.955223083496094,40.765712738037109,N,197 +id1691916,2,2016-06-11 15:55:40,2016-06-11 16:02:34,1,-73.926620483398438,40.751956939697266,-73.911033630371094,40.744747161865234,N,414 +id3359290,1,2016-06-24 14:06:42,2016-06-24 14:08:17,1,-73.939964294433594,40.798122406005859,-73.94134521484375,40.799110412597656,N,95 +id2561259,2,2016-03-01 08:05:30,2016-03-01 08:24:42,5,-73.996009826660156,40.748851776123047,-74.015098571777344,40.711349487304688,N,1152 +id0236281,2,2016-01-10 15:49:57,2016-01-10 16:00:48,1,-73.971450805664063,40.797714233398437,-73.982345581054687,40.774887084960938,N,651 +id3630408,2,2016-02-03 09:45:54,2016-02-03 09:52:20,1,-73.965957641601562,40.758476257324219,-73.975166320800781,40.751010894775391,N,386 +id2565302,2,2016-01-13 17:56:24,2016-01-13 18:08:21,1,-73.93499755859375,40.800731658935547,-73.923721313476562,40.814540863037109,N,717 +id1233671,2,2016-05-29 03:02:17,2016-05-29 03:05:09,4,-73.927932739257813,40.697952270507813,-73.937835693359375,40.698375701904297,N,172 +id0190506,1,2016-06-01 13:50:34,2016-06-01 14:01:34,1,-73.992141723632813,40.764274597167969,-73.993690490722656,40.747406005859375,N,660 +id0664355,2,2016-06-26 11:40:12,2016-06-26 11:51:07,5,-74.000373840332031,40.758186340332031,-73.986946105957031,40.760814666748047,N,655 +id1610214,2,2016-02-20 03:04:00,2016-02-20 03:26:09,3,-73.982986450195313,40.725040435791016,-73.933387756347656,40.697868347167969,N,1329 +id2071174,2,2016-01-05 21:14:05,2016-01-05 21:17:41,5,-73.982643127441406,40.739341735839844,-73.973800659179688,40.751705169677734,N,216 +id1224983,2,2016-06-13 13:04:58,2016-06-13 13:09:57,1,-73.983787536621094,40.754920959472656,-73.975593566894531,40.756038665771484,N,299 +id3013573,1,2016-01-16 18:43:17,2016-01-16 18:47:50,1,-74.002876281738281,40.733474731445313,-74.009666442871094,40.71990966796875,N,273 +id3758615,1,2016-06-02 17:52:39,2016-06-02 17:57:05,1,-73.964805603027344,40.769634246826172,-73.95135498046875,40.782379150390625,N,266 +id0103078,2,2016-03-20 01:37:53,2016-03-20 01:48:38,6,-73.977867126464844,40.725360870361328,-73.997840881347656,40.718269348144531,N,645 +id1490608,1,2016-05-31 19:07:28,2016-05-31 19:14:57,1,-73.980056762695312,40.785724639892578,-73.960075378417969,40.775390625,N,449 +id0331611,2,2016-05-03 14:50:31,2016-05-03 15:18:42,1,-73.974128723144531,40.787609100341797,-73.965156555175781,40.760120391845703,N,1691 +id1492581,2,2016-04-08 22:23:18,2016-04-08 22:33:39,1,-73.983680725097656,40.762935638427734,-73.99969482421875,40.761695861816406,N,621 +id1442986,2,2016-01-03 13:05:29,2016-01-03 13:29:36,5,-73.973350524902344,40.792739868164063,-73.873085021972656,40.774269104003906,N,1447 +id0391442,1,2016-02-14 20:46:29,2016-02-14 20:59:15,2,-74.005996704101563,40.739963531494141,-73.984748840332031,40.768592834472656,N,766 +id0474774,2,2016-05-01 21:07:12,2016-05-01 21:10:14,2,-73.996551513671875,40.742889404296875,-73.995979309082031,40.7352294921875,N,182 +id2203178,2,2016-06-15 03:44:32,2016-06-15 03:46:48,1,-73.992973327636719,40.742794036865234,-73.989517211914062,40.7518310546875,N,136 +id1840526,2,2016-04-13 12:46:24,2016-04-13 12:51:30,3,-73.959449768066406,40.779781341552734,-73.961929321289062,40.776569366455078,N,306 +id3474429,2,2016-06-11 20:41:19,2016-06-11 20:53:06,3,-73.961341857910156,40.760288238525391,-73.989723205566406,40.7169189453125,N,707 +id2639612,2,2016-02-01 08:05:01,2016-02-01 08:12:51,1,-73.984283447265625,40.769729614257813,-73.973258972167969,40.757877349853516,N,470 +id0045059,1,2016-04-07 11:58:46,2016-04-07 12:08:04,1,-73.95989990234375,40.798473358154297,-73.962387084960938,40.779014587402344,N,558 +id2855355,1,2016-05-20 23:29:44,2016-05-20 23:37:14,2,-73.985816955566406,40.76300048828125,-73.996284484863281,40.766597747802734,N,450 +id2824681,2,2016-06-17 19:00:17,2016-06-17 19:11:47,6,-73.973823547363281,40.763431549072266,-73.971336364746094,40.782485961914063,N,690 +id1204314,1,2016-05-25 23:11:18,2016-05-25 23:19:38,3,-74.008880615234375,40.719295501708984,-73.991966247558594,40.745082855224609,N,500 +id3068181,2,2016-03-20 03:51:28,2016-03-20 03:59:12,1,-73.950828552246094,40.779251098632813,-73.980827331542969,40.764961242675781,N,464 +id3668502,1,2016-04-04 19:28:18,2016-04-04 19:44:05,1,-73.983062744140625,40.781829833984375,-73.98760986328125,40.759746551513672,N,947 +id1792311,2,2016-04-27 23:05:35,2016-04-27 23:33:46,1,-73.873214721679688,40.773948669433594,-73.989303588867187,40.768238067626953,N,1691 +id0236667,1,2016-04-08 08:02:42,2016-04-08 08:29:13,1,-73.992355346679687,40.768829345703125,-73.99029541015625,40.734397888183594,N,1591 +id2082215,1,2016-02-19 18:15:06,2016-02-19 18:20:04,1,-74.00677490234375,40.705509185791016,-73.997268676757813,40.71429443359375,N,298 +id1691115,2,2016-01-21 15:27:20,2016-01-21 15:40:27,1,-73.973159790039063,40.750072479248047,-73.991287231445313,40.750293731689453,N,787 +id2318400,2,2016-06-08 07:02:14,2016-06-08 07:09:16,2,-73.956329345703125,40.768131256103516,-73.9527587890625,40.78662109375,N,422 +id3439623,2,2016-04-23 09:24:04,2016-04-23 09:30:29,1,-73.973991394042969,40.784076690673828,-73.957328796386719,40.782951354980469,N,385 +id1271190,2,2016-01-29 17:28:17,2016-01-29 17:42:25,3,-73.98516845703125,40.768150329589844,-73.984443664550781,40.751239776611328,N,848 +id3935890,2,2016-04-17 00:32:34,2016-04-17 00:35:58,2,-73.980819702148437,40.774681091308594,-73.983642578125,40.780956268310547,N,204 +id2451015,1,2016-01-18 19:24:51,2016-01-18 19:29:43,1,-73.9951171875,40.745166778564453,-74.004386901855469,40.732097625732422,N,292 +id0044578,2,2016-02-03 09:42:37,2016-02-03 10:13:10,1,-73.981941223144531,40.728153228759766,-74.001197814941406,40.716350555419922,N,1833 +id1860120,1,2016-06-17 09:17:31,2016-06-17 09:39:48,1,-73.948020935058594,40.770576477050781,-73.99017333984375,40.745086669921875,N,1337 +id2812322,1,2016-06-13 21:27:53,2016-06-13 21:41:39,1,-73.972908020019531,40.749984741210937,-73.989715576171875,40.691207885742188,N,826 +id0422138,1,2016-04-09 15:23:31,2016-04-09 15:31:31,1,-73.9739990234375,40.764274597167969,-73.960693359375,40.768100738525391,N,480 +id1791029,2,2016-03-28 19:59:03,2016-03-28 20:15:39,2,-73.968894958496094,40.757404327392578,-73.955375671386719,40.769306182861328,N,996 +id1019370,2,2016-06-21 04:57:18,2016-06-21 05:04:26,1,-73.872833251953125,40.773960113525391,-73.831596374511719,40.762840270996094,N,428 +id2619415,1,2016-06-21 17:22:06,2016-06-21 17:32:05,1,-73.970298767089844,40.752666473388672,-73.986778259277344,40.745403289794922,N,599 +id2807487,1,2016-05-07 04:30:52,2016-05-07 04:41:45,1,-73.940109252929687,40.793987274169922,-73.982131958007813,40.751567840576172,N,653 +id3653441,1,2016-05-14 19:36:22,2016-05-14 19:43:43,1,-73.979537963867188,40.755268096923828,-73.993705749511719,40.7353515625,N,441 +id1097176,1,2016-05-27 15:24:46,2016-05-27 15:40:04,1,-73.989662170410156,40.737636566162109,-74.00018310546875,40.725376129150391,N,918 +id2755337,1,2016-06-16 21:19:45,2016-06-16 21:28:12,1,-73.982131958007813,40.774089813232422,-73.991897583007812,40.759315490722656,N,507 +id1491699,2,2016-06-23 16:00:09,2016-06-23 16:17:21,1,-73.983139038085938,40.763809204101562,-73.9964599609375,40.753170013427734,N,1032 +id0472034,1,2016-06-10 08:58:31,2016-06-10 09:06:39,1,-73.962310791015625,40.766868591308594,-73.97076416015625,40.761604309082031,N,488 +id3101656,2,2016-02-26 17:32:08,2016-02-26 17:37:22,1,-73.951332092285156,40.743446350097656,-73.95196533203125,40.731452941894531,N,314 +id1604789,1,2016-06-30 18:14:26,2016-06-30 18:28:08,1,-73.987510681152344,40.758918762207031,-73.981063842773438,40.784500122070313,N,822 +id3891800,2,2016-03-05 00:54:26,2016-03-05 01:01:34,2,-73.95172119140625,40.714973449707031,-73.954353332519531,40.730724334716797,N,428 +id0779025,2,2016-05-06 18:42:27,2016-05-06 18:58:56,1,-73.954559326171875,40.765567779541016,-73.987411499023437,40.740585327148438,N,989 +id2268759,2,2016-03-19 19:55:41,2016-03-19 20:09:25,2,-73.997840881347656,40.741188049316406,-73.999488830566406,40.727264404296875,N,824 +id0816368,2,2016-05-26 22:02:30,2016-05-26 22:09:44,1,-73.979110717773437,40.755519866943359,-73.982673645019531,40.742618560791016,N,434 +id0084649,2,2016-03-07 10:31:21,2016-03-07 10:36:04,1,-73.969291687011719,40.785488128662109,-73.979080200195313,40.785350799560547,N,283 +id1161874,1,2016-05-23 10:49:17,2016-05-23 11:19:21,1,-73.863601684570313,40.769439697265625,-73.961448669433594,40.711292266845703,N,1804 +id0996782,1,2016-02-14 10:11:56,2016-02-14 10:13:48,1,-73.996864318847656,40.754501342773438,-74.001678466796875,40.756481170654297,N,112 +id2512426,1,2016-05-09 14:39:38,2016-05-09 14:44:10,1,-73.967994689941406,40.762523651123047,-73.965972900390625,40.764701843261719,N,272 +id3839715,1,2016-05-15 17:00:11,2016-05-15 17:07:53,1,-73.955657958984375,40.768436431884766,-73.962577819824219,40.766586303710937,N,462 +id0664373,2,2016-02-25 17:35:52,2016-02-25 17:56:02,1,-73.96795654296875,40.756088256835937,-73.98931884765625,40.756431579589844,N,1210 +id1350107,1,2016-02-25 09:45:40,2016-02-25 09:54:36,1,-73.960586547851563,40.772640228271484,-73.953201293945313,40.788627624511719,N,536 +id2859354,2,2016-06-23 22:55:01,2016-06-23 23:04:26,1,-73.992042541503906,40.731071472167969,-74.006187438964844,40.739902496337891,N,565 +id2944973,2,2016-03-05 14:55:31,2016-03-05 15:08:30,6,-73.985488891601562,40.727371215820313,-73.972930908203125,40.7530517578125,N,779 +id0671892,1,2016-03-14 14:27:05,2016-03-14 14:38:25,1,-74.003227233886719,40.713901519775391,-73.994163513183594,40.724826812744141,N,680 +id2881305,1,2016-02-21 16:38:09,2016-02-21 16:43:44,2,-73.980987548828125,40.753421783447266,-73.992584228515625,40.758502960205078,N,335 +id0574472,2,2016-01-09 02:12:55,2016-01-09 02:17:12,4,-73.986015319824219,40.732585906982422,-73.983474731445313,40.726207733154297,N,257 +id3217131,2,2016-04-05 08:42:58,2016-04-05 09:04:44,1,-74.003196716308594,40.708267211914063,-73.971878051757812,40.749778747558594,N,1306 +id2874117,2,2016-02-18 20:38:40,2016-02-18 21:31:07,1,-73.951873779296875,40.784465789794922,-73.988327026367188,40.666648864746094,N,3147 +id3585762,1,2016-03-12 12:30:04,2016-03-12 12:39:38,1,-73.977928161621094,40.729598999023438,-74.015716552734375,40.709926605224609,N,574 +id3425041,1,2016-02-29 12:39:38,2016-02-29 13:14:19,4,-73.863533020019531,40.770050048828125,-73.970741271972656,40.757961273193359,N,2081 +id0385466,1,2016-02-04 15:28:48,2016-02-04 15:41:16,1,-73.995491027832031,40.749176025390625,-73.983436584472656,40.763126373291016,N,748 +id2659559,2,2016-04-14 21:58:46,2016-04-14 22:10:59,1,-73.983123779296875,40.749366760253906,-74.007438659667969,40.741016387939453,N,733 +id3779792,1,2016-05-15 18:31:33,2016-05-15 18:40:01,1,-74.001167297363281,40.741851806640625,-73.98974609375,40.756797790527344,N,508 +id0189939,1,2016-03-22 16:38:42,2016-03-22 16:54:05,1,-73.964225769042969,40.776123046875,-73.973915100097656,40.763374328613281,N,923 +id0323437,1,2016-02-26 06:42:36,2016-02-26 06:53:13,1,-73.985908508300781,40.726772308349609,-73.985328674316406,40.753208160400391,N,637 +id3788233,2,2016-05-07 18:09:49,2016-05-07 18:29:11,1,-73.988800048828125,40.748542785644531,-73.980491638183594,40.785308837890625,N,1162 +id3777815,2,2016-03-16 17:38:12,2016-03-16 17:50:07,1,-73.987907409667969,40.755031585693359,-73.998497009277344,40.724708557128906,N,715 +id0223808,2,2016-06-18 19:19:00,2016-06-18 19:43:59,5,-73.937309265136719,40.797679901123047,-73.984695434570313,40.729637145996094,N,1499 +id1391668,2,2016-05-24 07:36:48,2016-05-24 07:40:58,2,-74.009956359863281,40.711448669433594,-74.004753112792969,40.716178894042969,N,250 +id0578675,2,2016-03-27 16:06:31,2016-03-27 16:30:46,1,-73.862983703613281,40.768482208251953,-73.974029541015625,40.750511169433594,N,1455 +id0922165,2,2016-01-10 08:54:46,2016-01-10 08:57:52,1,-73.981163024902344,40.779411315917969,-73.981338500976563,40.773872375488281,N,186 +id2342238,2,2016-05-26 12:32:16,2016-05-26 12:37:53,1,-73.982521057128906,40.757129669189453,-73.981704711914063,40.764728546142578,N,337 +id2073730,1,2016-05-07 22:05:47,2016-05-07 22:09:13,1,-73.988563537597656,40.738468170166016,-73.996757507324219,40.736610412597656,N,206 +id1111993,2,2016-06-28 18:14:40,2016-06-28 18:21:50,3,-73.992599487304688,40.727031707763672,-73.980964660644531,40.73333740234375,N,430 +id3928938,2,2016-01-02 21:48:47,2016-01-02 22:05:27,1,-73.993148803710938,40.733467102050781,-73.948776245117187,40.771621704101563,N,1000 +id2057510,1,2016-02-04 20:03:44,2016-02-04 20:05:40,1,-73.960258483886719,40.769699096679688,-73.957130432128906,40.774669647216797,N,116 +id3142216,2,2016-06-29 23:19:17,2016-06-29 23:34:17,2,-73.987869262695312,40.733749389648438,-73.963142395019531,40.716670989990234,N,900 +id1941510,2,2016-01-18 22:43:01,2016-01-18 22:48:12,5,-73.983863830566406,40.765659332275391,-73.980400085449219,40.780521392822266,N,311 +id3243826,2,2016-05-08 14:22:43,2016-05-08 14:36:19,2,-73.997337341308594,40.736686706542969,-73.982620239257813,40.763385772705078,N,816 +id0279036,1,2016-04-09 19:52:41,2016-04-09 19:59:42,1,-73.951766967773438,40.76947021484375,-73.955467224121094,40.776988983154297,N,421 +id0150248,2,2016-01-12 21:59:22,2016-01-12 22:03:58,5,-73.966758728027344,40.766960144042969,-73.955070495605469,40.783149719238281,N,276 +id3172262,2,2016-03-25 12:58:11,2016-03-25 13:01:28,2,-73.9490966796875,40.781173706054687,-73.956588745117187,40.771156311035156,N,197 +id0865057,1,2016-06-09 19:34:18,2016-06-09 19:50:04,1,-73.983772277832031,40.740985870361328,-73.994850158691406,40.760387420654297,N,946 +id1066468,2,2016-01-25 22:22:16,2016-01-25 22:39:22,1,-73.970924377441406,40.759090423583984,-73.984756469726563,40.724346160888672,N,1026 +id3887780,2,2016-05-09 07:03:14,2016-05-09 07:06:57,1,-73.988471984863281,40.723091125488281,-73.974761962890625,40.742130279541016,N,223 +id2158669,1,2016-05-04 21:24:28,2016-05-04 21:43:21,1,-73.96258544921875,40.772804260253906,-73.956382751464844,40.74664306640625,N,1133 +id1767473,2,2016-04-04 20:02:05,2016-04-04 20:14:10,5,-74.008491516113281,40.734142303466797,-73.990890502929688,40.736316680908203,N,725 +id1697706,1,2016-04-02 17:21:56,2016-04-02 17:28:38,1,-73.965736389160156,40.76220703125,-73.944473266601563,40.791671752929687,N,402 +id3213557,2,2016-05-04 23:25:28,2016-05-04 23:40:32,2,-73.86541748046875,40.770648956298828,-73.986091613769531,40.722438812255859,N,904 +id2697813,1,2016-02-15 11:25:34,2016-02-15 11:59:01,1,-73.776802062988281,40.645332336425781,-73.883415222167969,40.678798675537109,N,2007 +id1491523,2,2016-01-30 19:56:06,2016-01-30 20:20:06,5,-74.000312805175781,40.730281829833984,-73.977630615234375,40.747211456298828,N,1440 +id0287714,1,2016-06-05 18:36:27,2016-06-05 18:39:20,1,-73.982421875,40.772590637207031,-73.986282348632812,40.767303466796875,N,173 +id2272789,2,2016-03-15 19:57:13,2016-03-15 20:05:29,5,-73.963226318359375,40.774211883544922,-73.96356201171875,40.758419036865234,N,496 +id3528732,2,2016-01-01 14:26:46,2016-01-01 14:31:34,1,-73.96099853515625,40.760921478271484,-73.974098205566406,40.747058868408203,N,288 +id0177485,2,2016-04-05 00:00:32,2016-04-05 00:12:26,3,-73.989761352539063,40.729518890380859,-73.954086303710938,40.778900146484375,N,714 +id3883177,2,2016-02-27 02:39:56,2016-02-27 02:46:51,1,-73.989509582519531,40.717975616455078,-74.004104614257813,40.716056823730469,N,415 +id1293712,1,2016-01-04 17:16:42,2016-01-04 17:22:07,1,-73.981849670410156,40.770683288574219,-73.978523254394531,40.777297973632813,N,325 +id0618966,1,2016-03-31 21:10:27,2016-03-31 21:38:44,1,-74.005584716796875,40.725673675537109,-73.987754821777344,40.663539886474609,N,1697 +id0224280,2,2016-03-29 21:03:27,2016-03-29 21:08:25,2,-73.974639892578125,40.783039093017578,-73.968017578125,40.792285919189453,N,298 +id1612755,2,2016-03-30 15:08:45,2016-03-30 15:31:15,2,-73.957542419433594,40.769390106201172,-73.991500854492187,40.750011444091797,N,1350 +id3409154,2,2016-05-31 17:38:30,2016-05-31 17:42:54,1,-73.955215454101563,40.788810729980469,-73.952774047851562,40.783168792724609,N,264 +id0800285,2,2016-03-18 17:33:09,2016-03-18 17:59:25,1,-74.001426696777344,40.751571655273438,-73.870849609375,40.774040222167969,N,1576 +id1952270,2,2016-05-01 13:41:12,2016-05-01 13:45:02,1,-73.969390869140625,40.758136749267578,-73.961067199707031,40.764247894287109,N,230 +id1892341,1,2016-03-10 15:46:27,2016-03-10 15:53:41,1,-73.991744995117188,40.749401092529297,-74.001632690429687,40.735801696777344,N,434 +id1167799,2,2016-06-03 20:36:43,2016-06-03 20:49:55,1,-74.005607604980469,40.748191833496094,-73.97637939453125,40.753421783447266,N,792 +id0546701,2,2016-03-17 19:22:35,2016-03-17 19:31:34,1,-73.979042053222656,40.752891540527344,-73.953330993652344,40.788421630859375,N,539 +id0346526,2,2016-01-08 12:08:33,2016-01-08 12:27:00,1,-73.982048034667969,40.769649505615234,-73.963821411132813,40.807849884033203,N,1107 +id2899205,2,2016-02-17 09:24:13,2016-02-17 09:25:57,3,-73.996696472167969,40.737319946289063,-73.991058349609375,40.736530303955078,N,104 +id2825944,1,2016-01-05 16:26:00,2016-01-05 16:59:56,1,-73.990707397460938,40.717365264892578,-73.998703002929688,40.659122467041016,N,2036 +id1791837,1,2016-03-12 17:32:23,2016-03-12 17:43:06,1,-73.991630554199219,40.719547271728516,-73.954795837402344,40.722419738769531,N,643 +id0431863,2,2016-04-29 12:28:04,2016-04-29 12:54:36,1,-73.973312377929688,40.763710021972656,-74.0064697265625,40.705551147460938,N,1592 +id0607423,2,2016-04-15 07:06:59,2016-04-15 07:12:28,1,-73.947235107421875,40.775749206542969,-73.955108642578125,40.765003204345703,N,329 +id2784470,2,2016-05-20 00:13:54,2016-05-20 00:27:24,1,-73.964630126953125,40.761520385742187,-73.918510437011719,40.742961883544922,N,810 +id3575539,2,2016-01-14 18:31:10,2016-01-14 18:48:30,1,-73.97393798828125,40.751480102539063,-73.987922668457031,40.754257202148438,N,1040 +id0160092,2,2016-05-12 12:01:36,2016-05-12 12:10:30,2,-73.976837158203125,40.743499755859375,-73.99407958984375,40.732608795166016,N,534 +id3199440,2,2016-04-25 08:37:09,2016-04-25 08:46:34,3,-73.998237609863281,40.720230102539062,-74.001060485839844,40.731449127197266,N,565 +id2431333,2,2016-04-04 13:19:32,2016-04-04 13:24:21,4,-73.956245422363281,40.784492492675781,-73.947296142578125,40.779884338378906,N,289 +id0745319,2,2016-05-04 08:13:05,2016-05-04 08:15:40,1,-73.958366394042969,40.772998809814453,-73.952293395996094,40.780918121337891,N,155 +id3475280,2,2016-05-15 03:19:44,2016-05-15 03:26:59,1,-73.986412048339844,40.732994079589844,-73.994682312011719,40.748580932617188,N,435 +id2261176,1,2016-03-11 18:51:44,2016-03-11 19:05:31,2,-73.965400695800781,40.755958557128906,-73.980453491210937,40.75750732421875,N,827 +id0473517,1,2016-01-05 01:41:17,2016-01-05 01:44:14,1,-73.982078552246094,40.731212615966797,-73.985679626464844,40.723159790039063,N,177 +id0133515,2,2016-02-11 21:51:07,2016-02-11 21:59:17,1,-73.971633911132813,40.757862091064453,-73.984687805175781,40.738670349121094,N,490 +id2168577,2,2016-03-19 06:07:31,2016-03-19 06:14:01,1,-73.988029479980469,40.739280700683594,-73.986236572265625,40.757568359375,N,390 +id0309818,2,2016-01-31 12:50:07,2016-01-31 13:02:47,1,-73.966331481933594,40.767818450927734,-73.990913391113281,40.750659942626953,N,760 +id0684226,1,2016-05-27 13:54:55,2016-05-27 14:12:02,2,-73.986915588378906,40.745094299316406,-74.012046813964844,40.721622467041016,N,1027 +id2704960,1,2016-02-01 17:19:27,2016-02-01 17:28:06,1,-73.974807739257812,40.763717651367188,-73.978843688964844,40.772453308105469,N,519 +id0731375,2,2016-06-03 18:01:29,2016-06-03 18:14:57,1,-73.962928771972656,40.764739990234375,-73.974472045898438,40.761428833007812,N,808 +id0169514,2,2016-04-29 15:31:53,2016-04-29 15:44:31,2,-73.974143981933594,40.754016876220703,-73.987335205078125,40.728984832763672,N,758 +id3410896,1,2016-06-29 22:58:00,2016-06-29 23:31:51,1,-73.988014221191406,40.7437744140625,-73.928604125976563,40.854507446289063,N,2031 +id2969775,1,2016-02-07 23:58:45,2016-02-08 00:10:01,1,-73.971900939941406,40.794391632080078,-73.939796447753906,40.811637878417969,N,676 +id3075671,2,2016-05-05 19:47:57,2016-05-05 19:51:19,1,-73.989189147949219,40.722995758056641,-73.982093811035156,40.719470977783203,N,202 +id3991996,2,2016-06-14 12:55:36,2016-06-14 13:26:13,5,-73.993988037109375,40.751480102539063,-73.97125244140625,40.766731262207031,N,1837 +id3201199,2,2016-02-13 18:41:39,2016-02-13 18:47:24,3,-73.967880249023438,40.755561828613281,-73.969192504882813,40.764320373535156,N,345 +id0425992,2,2016-06-23 20:52:26,2016-06-23 21:01:16,1,-74.006240844726563,40.740482330322266,-73.992790222167969,40.748584747314453,N,530 +id2685811,1,2016-01-26 18:58:12,2016-01-26 19:04:50,1,-74.006492614746094,40.731472015380859,-74.000053405761719,40.741989135742188,N,398 +id2745017,2,2016-06-27 11:05:29,2016-06-27 11:15:37,1,-73.965797424316406,40.762451171875,-73.95599365234375,40.78717041015625,N,608 +id3417635,2,2016-02-15 15:29:31,2016-02-15 15:39:18,3,-73.988418579101563,40.755111694335938,-74.000930786132813,40.757450103759766,N,587 +id0108599,2,2016-03-27 22:53:48,2016-03-27 23:09:07,1,-73.992698669433594,40.748039245605469,-73.978767395019531,40.724258422851563,N,919 +id1895882,2,2016-05-09 17:00:54,2016-05-09 17:33:21,1,-73.955680847167969,40.782192230224609,-74.01019287109375,40.720012664794922,N,1947 +id3432220,2,2016-05-27 09:51:59,2016-05-27 10:01:58,1,-73.982887268066406,40.756145477294922,-73.9649658203125,40.755535125732422,N,599 +id0310728,1,2016-06-13 20:27:11,2016-06-13 20:41:41,3,-73.984817504882812,40.760181427001953,-73.994583129882813,40.73211669921875,N,870 +id3966402,1,2016-01-06 15:28:44,2016-01-06 15:38:46,2,-73.959274291992188,40.771873474121094,-73.966148376464844,40.765510559082031,N,602 +id0137735,2,2016-06-24 22:43:44,2016-06-24 23:07:56,1,-73.969161987304688,40.757492065429688,-73.994499206542969,40.761745452880859,N,1452 +id0130508,1,2016-03-02 07:04:14,2016-03-02 07:16:57,1,-73.945953369140625,40.777667999267578,-74.007827758789063,40.703411102294922,N,763 +id3091956,1,2016-06-05 12:25:50,2016-06-05 13:01:27,1,-73.984657287597656,40.736423492431641,-73.958244323730469,40.778602600097656,N,2137 +id3171058,1,2016-01-28 08:55:48,2016-01-28 09:06:59,1,-73.94854736328125,40.777809143066406,-73.938949584960937,40.804542541503906,N,671 +id3334394,2,2016-06-01 14:51:52,2016-06-01 15:10:43,5,-74.015953063964844,40.711128234863281,-73.997940063476563,40.725830078125,N,1131 +id3225120,2,2016-05-27 15:58:22,2016-05-27 16:26:03,1,-73.991806030273437,40.742420196533203,-73.969085693359375,40.761089324951172,N,1661 +id0169350,1,2016-03-30 21:45:41,2016-03-30 21:59:52,1,-73.989723205566406,40.739456176757813,-73.983894348144531,40.755290985107422,N,851 +id1391011,1,2016-04-27 02:40:32,2016-04-27 03:07:15,1,-73.999687194824219,40.733306884765625,-73.815071105957031,40.775123596191406,N,1603 +id3461256,1,2016-03-26 18:30:23,2016-03-26 18:41:21,1,-73.968696594238281,40.767131805419922,-73.986083984375,40.776744842529297,N,658 +id2782515,2,2016-03-15 23:33:23,2016-03-15 23:36:23,1,-73.971023559570313,40.755748748779297,-73.961952209472656,40.76776123046875,N,180 +id0361579,1,2016-04-14 19:43:32,2016-04-14 20:05:55,1,-73.977203369140625,40.758689880371094,-73.982826232910156,40.758506774902344,N,1343 +id1375671,2,2016-02-29 15:10:46,2016-02-29 15:15:28,2,-73.972007751464844,40.791595458984375,-73.966316223144531,40.795780181884766,N,282 +id1952448,1,2016-01-01 00:34:33,2016-01-01 00:50:57,1,-73.956878662109375,40.777881622314453,-73.983650207519531,40.7340087890625,N,984 +id0977379,2,2016-04-16 21:19:13,2016-04-16 21:43:28,1,-74.003936767578125,40.70758056640625,-74.001632690429687,40.73712158203125,N,1455 +id0760361,2,2016-06-22 16:26:52,2016-06-22 18:02:11,1,-73.863418579101562,40.769977569580078,-73.976203918457031,40.673961639404297,N,5719 +id1179829,2,2016-02-18 01:08:55,2016-02-18 01:34:10,6,-73.789398193359375,40.647220611572266,-73.983619689941406,40.727733612060547,N,1515 +id1505030,1,2016-03-25 19:23:33,2016-03-25 19:37:15,1,-73.970527648925781,40.758579254150391,-73.992485046386719,40.758125305175781,N,822 +id3830345,1,2016-02-13 19:37:56,2016-02-13 19:44:18,1,-73.982452392578125,40.764209747314453,-73.970634460449219,40.759136199951172,N,382 +id3597114,2,2016-03-31 22:21:44,2016-03-31 22:25:56,1,-74.006217956542969,40.740409851074219,-73.998741149902344,40.745059967041016,N,252 +id0614352,2,2016-01-28 11:13:16,2016-01-28 11:28:23,1,-73.978248596191406,40.729610443115234,-74.002220153808594,40.740318298339844,N,907 +id2807635,2,2016-04-20 13:19:28,2016-04-20 13:25:34,1,-73.982192993164063,40.748771667480469,-73.977256774902344,40.756160736083984,N,366 +id0247481,2,2016-03-01 10:00:08,2016-03-01 10:31:08,1,-73.955718994140625,40.772663116455078,-74.000144958496094,40.736171722412109,N,1860 +id1699374,2,2016-04-18 22:34:22,2016-04-18 22:38:44,5,-74.0029296875,40.749317169189453,-73.989555358886719,40.757495880126953,N,262 +id0360229,1,2016-04-16 15:21:20,2016-04-16 15:28:38,1,-73.956230163574219,40.767921447753906,-73.971809387207031,40.762256622314453,N,438 +id3744017,2,2016-06-17 07:57:57,2016-06-17 08:01:14,1,-73.958671569824219,40.780754089355469,-73.952445983886719,40.778312683105469,N,197 +id3606203,2,2016-03-12 15:51:40,2016-03-12 16:00:15,2,-73.994438171386719,40.740657806396484,-74.002151489257813,40.7506103515625,N,515 +id2716370,2,2016-02-26 08:38:44,2016-02-26 09:12:23,1,-73.863990783691406,40.769905090332031,-73.965530395507813,40.756118774414063,N,2019 +id1862104,1,2016-06-21 09:13:00,2016-06-21 09:29:44,1,-73.998138427734375,40.756484985351563,-74.010025024414063,40.721275329589844,N,1004 +id1667544,2,2016-04-30 16:37:00,2016-04-30 16:38:53,5,-73.968399047851563,40.791580200195313,-73.973114013671875,40.7869873046875,N,113 +id1940923,2,2016-05-06 18:08:58,2016-05-06 18:46:29,1,-73.871002197265625,40.773811340332031,-73.976478576660156,40.728729248046875,N,2251 +id0136371,1,2016-02-11 08:24:06,2016-02-11 08:33:27,1,-73.956123352050781,40.771732330322266,-73.968856811523438,40.763679504394531,N,561 +id1087362,1,2016-04-06 16:03:40,2016-04-06 16:22:07,1,-74.005996704101563,40.742118835449219,-73.981063842773438,40.758594512939453,N,1107 +id3342376,2,2016-01-09 21:00:38,2016-01-09 21:04:24,1,-73.984649658203125,40.75274658203125,-73.990257263183594,40.756263732910156,N,226 +id0571141,1,2016-01-07 12:00:58,2016-01-07 12:20:55,1,-73.9742431640625,40.753810882568359,-73.996116638183594,40.726249694824219,N,1197 +id3473440,1,2016-02-14 11:02:53,2016-02-14 11:19:48,1,-73.776802062988281,40.645061492919922,-73.817367553710937,40.742256164550781,N,1015 +id0508232,1,2016-04-12 21:20:46,2016-04-12 21:40:33,1,-73.999656677246094,40.738380432128906,-73.949386596679688,40.785007476806641,N,1187 +id3173377,1,2016-06-20 18:33:07,2016-06-20 18:39:37,1,-73.988693237304688,40.773990631103516,-73.977890014648437,40.786167144775391,N,390 +id1800757,1,2016-06-01 09:26:11,2016-06-01 09:46:17,1,-73.992469787597656,40.753597259521484,-73.972053527832031,40.762680053710937,N,1206 +id2165653,1,2016-02-12 07:19:01,2016-02-12 07:32:53,1,-74.008438110351563,40.733482360839844,-73.979515075683594,40.760734558105469,N,832 +id1386965,1,2016-01-13 06:06:36,2016-01-13 06:13:59,1,-73.979415893554688,40.786853790283203,-73.984809875488281,40.760410308837891,N,443 +id0112221,2,2016-04-10 13:55:08,2016-04-10 14:01:50,1,-73.962509155273437,40.770442962646484,-73.965560913085937,40.765731811523438,N,402 +id1604006,1,2016-03-19 20:22:00,2016-03-19 20:41:35,1,-73.986625671386719,40.76678466796875,-73.952423095703125,40.808387756347656,N,1175 +id0034684,2,2016-01-20 19:16:18,2016-01-20 19:27:42,1,-73.985061645507813,40.744682312011719,-73.96923828125,40.755699157714844,N,684 +id0149396,1,2016-06-15 06:00:52,2016-06-15 06:20:15,1,-73.89984130859375,40.741203308105469,-73.905197143554687,40.853626251220703,N,1163 +id0449568,1,2016-03-29 23:44:31,2016-03-30 00:07:30,1,-73.942253112792969,40.754287719726563,-73.896018981933594,40.885292053222656,N,1379 +id1897811,2,2016-04-03 20:31:47,2016-04-03 20:35:06,1,-73.983306884765625,40.755970001220703,-73.975540161132813,40.762641906738281,N,199 +id3163620,2,2016-05-26 09:18:25,2016-05-26 09:50:35,1,-73.997848510742188,40.740383148193359,-74.177665710449219,40.690422058105469,N,1930 +id1995493,1,2016-06-21 22:06:56,2016-06-21 22:26:25,1,-73.863494873046875,40.769660949707031,-73.959983825683594,40.773750305175781,N,1169 +id0752995,2,2016-05-01 01:10:00,2016-05-01 01:21:32,1,-73.98162841796875,40.748363494873047,-73.989669799804688,40.730293273925781,N,692 +id1211273,2,2016-04-29 11:06:29,2016-04-29 11:22:18,1,-73.958404541015625,40.781440734863281,-73.990776062011719,40.770069122314453,N,949 +id3689822,1,2016-06-15 07:14:30,2016-06-15 07:26:48,1,-73.970375061035156,40.785762786865234,-73.97882080078125,40.752128601074219,N,738 +id0563929,2,2016-01-13 08:09:48,2016-01-13 08:37:31,1,-73.863197326660156,40.769748687744141,-73.955337524414063,40.785228729248047,N,1663 +id2761428,2,2016-03-20 00:06:09,2016-03-20 00:13:10,1,-74.005546569824219,40.738483428955078,-74.002952575683594,40.749458312988281,N,421 +id1334416,2,2016-05-11 09:57:18,2016-05-11 10:05:14,1,-73.982566833496094,40.731288909912109,-73.981552124023438,40.746429443359375,N,476 +id1709332,2,2016-03-21 09:15:46,2016-03-21 09:38:21,5,-74.008331298828125,40.721836090087891,-73.978973388671875,40.745857238769531,N,1355 +id3312761,1,2016-05-02 14:34:49,2016-05-02 14:40:46,1,-73.990592956542969,40.750110626220703,-73.995849609375,40.759445190429688,N,357 +id3662898,1,2016-02-09 17:42:56,2016-02-09 17:54:27,1,-73.987388610839844,40.733161926269531,-73.986595153808594,40.715782165527344,N,691 +id2970188,2,2016-04-29 23:10:36,2016-04-29 23:13:23,1,-73.98175048828125,40.730960845947266,-73.974319458007813,40.726139068603516,N,167 +id0349876,1,2016-05-12 20:02:48,2016-05-12 20:25:19,3,-73.990531921386719,40.751522064208984,-73.986427307128906,40.731277465820313,N,1351 +id2679591,1,2016-05-27 00:24:48,2016-05-27 00:39:48,1,-73.984519958496094,40.768913269042969,-73.98223876953125,40.743083953857422,N,900 +id2022084,2,2016-05-25 14:01:08,2016-05-25 14:25:12,1,-73.981582641601562,40.778545379638672,-73.980293273925781,40.755523681640625,N,1444 +id0921079,2,2016-05-22 23:13:10,2016-05-22 23:18:53,2,-73.9573974609375,40.782718658447266,-73.940757751464844,40.807563781738281,N,343 +id0129980,2,2016-02-01 18:31:51,2016-02-01 18:38:59,1,-73.961021423339844,40.767341613769531,-73.95599365234375,40.782871246337891,N,428 +id1838488,1,2016-03-26 02:11:31,2016-03-26 02:16:58,2,-73.990142822265625,40.756572723388672,-73.994644165039062,40.750514984130859,N,327 +id0018117,1,2016-05-12 08:26:09,2016-05-12 08:55:24,2,-73.985183715820313,40.759307861328125,-74.016647338867188,40.705673217773438,N,1755 +id1582400,2,2016-06-01 14:01:43,2016-06-01 14:06:14,1,-73.955856323242188,40.780471801757813,-73.954521179199219,40.786636352539063,N,271 +id1211862,2,2016-05-21 10:52:43,2016-05-21 10:55:21,4,-73.986213684082031,40.762069702148438,-73.982048034667969,40.770900726318359,N,158 +id3484598,1,2016-01-16 09:00:48,2016-01-16 09:08:24,1,-73.979209899902344,40.740509033203125,-73.99395751953125,40.750164031982422,N,456 +id2412180,2,2016-02-04 23:45:58,2016-02-04 23:51:58,2,-73.995452880859375,40.724918365478516,-73.978279113769531,40.720649719238281,N,360 +id2897485,2,2016-03-31 03:39:36,2016-03-31 03:51:39,1,-73.991729736328125,40.715248107910156,-73.927787780761719,40.701869964599609,N,723 +id1610486,2,2016-05-17 19:34:36,2016-05-17 19:43:40,1,-73.9949951171875,40.741291046142578,-73.982101440429688,40.744010925292969,N,544 +id2530294,2,2016-06-24 12:49:03,2016-06-24 13:23:28,1,-73.992088317871094,40.729148864746094,-73.968116760253906,40.786899566650391,N,2065 +id3294587,2,2016-04-08 16:34:22,2016-04-08 16:39:43,6,-73.9918212890625,40.738636016845703,-74.001205444335938,40.740161895751953,N,321 +id3073882,1,2016-05-04 23:14:17,2016-05-04 23:26:23,1,-73.978202819824219,40.763092041015625,-73.945220947265625,40.779880523681641,N,726 +id2181610,2,2016-04-05 08:25:11,2016-04-05 08:40:41,1,-73.983978271484375,40.754314422607422,-73.95452880859375,40.780570983886719,N,930 +id2695936,1,2016-04-13 17:11:00,2016-04-13 17:15:15,1,-73.99468994140625,40.740821838378906,-74.001518249511719,40.737312316894531,N,255 +id1042137,1,2016-03-11 22:42:20,2016-03-11 22:46:12,1,-73.998367309570312,40.735130310058594,-73.997077941894531,40.741607666015625,N,232 +id3640771,2,2016-06-24 11:24:17,2016-06-24 11:44:48,5,-73.9776611328125,40.750701904296875,-73.872421264648438,40.774459838867188,N,1231 +id3084059,1,2016-02-22 13:00:50,2016-02-22 13:13:48,1,-73.963150024414063,40.768329620361328,-73.979347229003906,40.760387420654297,N,778 +id2927707,1,2016-06-01 17:04:37,2016-06-01 17:19:03,1,-73.97943115234375,40.764984130859375,-73.957328796386719,40.782981872558594,N,866 +id0272248,1,2016-01-29 23:36:39,2016-01-29 23:58:55,1,-73.99725341796875,40.722160339355469,-73.964607238769531,40.682010650634766,N,1336 +id1157589,1,2016-06-22 02:36:17,2016-06-22 02:57:40,1,-73.996238708496094,40.732204437255859,-73.954261779785156,40.664531707763672,N,1283 +id0908935,1,2016-03-05 07:31:53,2016-03-05 07:39:28,1,-73.956169128417969,40.764236450195313,-73.9510498046875,40.785987854003906,N,455 +id3422536,2,2016-06-17 15:24:58,2016-06-17 15:56:34,5,-73.956649780273438,40.781158447265625,-73.9923095703125,40.730678558349609,N,1896 +id1181047,2,2016-03-20 21:26:49,2016-03-20 21:31:41,1,-73.98956298828125,40.733509063720703,-73.980476379394531,40.744300842285156,N,292 +id2396418,1,2016-01-29 21:17:32,2016-01-29 21:27:23,2,-73.974227905273438,40.753826141357422,-73.991134643554687,40.750461578369141,N,591 +id0387651,2,2016-06-09 17:42:41,2016-06-09 17:49:24,5,-73.95147705078125,40.769969940185547,-73.959846496582031,40.773719787597656,N,403 +id0295214,2,2016-01-08 14:54:05,2016-01-08 15:08:30,1,-73.956069946289063,40.775409698486328,-73.972457885742187,40.765628814697266,N,865 +id2228955,1,2016-01-14 07:00:19,2016-01-14 07:08:35,1,-73.974273681640625,40.747493743896484,-73.982231140136719,40.759681701660156,N,496 +id3729213,1,2016-01-19 13:11:29,2016-01-19 13:18:22,1,-73.968009948730469,40.771102905273438,-73.973869323730469,40.763259887695313,N,413 +id1093137,2,2016-04-17 17:14:45,2016-04-17 17:27:11,1,-74.001991271972656,40.750812530517578,-73.991569519042969,40.733352661132812,N,746 +id1000535,1,2016-01-05 15:35:54,2016-01-05 15:45:48,1,-73.949409484863281,40.781150817871094,-73.958885192871094,40.763797760009766,N,594 +id2501700,1,2016-01-17 11:17:48,2016-01-17 11:23:13,1,-73.978080749511719,40.752265930175781,-73.982551574707031,40.756881713867188,N,325 +id1249474,1,2016-05-03 03:44:59,2016-05-03 03:49:59,2,-73.985595703125,40.719341278076172,-73.979446411132813,40.723556518554688,N,300 +id3340674,1,2016-01-21 23:32:18,2016-01-21 23:37:58,1,-73.975921630859375,40.751258850097656,-73.976760864257813,40.739356994628906,N,340 +id0364380,2,2016-02-21 09:15:49,2016-02-21 09:22:14,1,-73.984687805175781,40.759151458740234,-74.000755310058594,40.758304595947266,N,385 +id0483528,1,2016-03-19 17:57:07,2016-03-19 18:09:56,1,-73.988166809082031,40.720211029052734,-74.008445739746094,40.713710784912109,N,769 +id2311936,2,2016-01-04 23:36:45,2016-01-04 23:40:00,1,-73.992103576660156,40.738040924072266,-73.988471984863281,40.748310089111328,N,195 +id2827329,2,2016-05-08 09:28:16,2016-05-08 09:37:54,6,-73.9713134765625,40.758232116699219,-73.990425109863281,40.751091003417969,N,578 +id3530664,2,2016-01-14 18:58:59,2016-01-14 19:09:11,1,-73.991447448730469,40.729850769042969,-74.01019287109375,40.711479187011719,N,612 +id1387834,1,2016-01-28 07:53:14,2016-01-28 07:58:29,1,-73.990943908691406,40.750591278076172,-73.999961853027344,40.738174438476562,N,315 +id3508412,2,2016-01-24 13:49:14,2016-01-24 14:02:09,1,-73.9874267578125,40.778995513916016,-73.962554931640625,40.776420593261719,N,775 +id1062006,2,2016-03-06 03:51:39,2016-03-06 04:05:17,2,-73.988197326660156,40.723621368408203,-73.94732666015625,40.791080474853516,N,818 +id2266297,2,2016-06-30 00:58:22,2016-06-30 01:02:17,1,-73.99102783203125,40.756198883056641,-73.997688293457031,40.760578155517578,N,235 +id1297068,1,2016-05-04 03:21:56,2016-05-04 03:27:05,2,-73.977279663085938,40.750125885009766,-73.990142822265625,40.748481750488281,N,309 +id2487205,2,2016-03-07 16:03:27,2016-03-07 16:08:04,5,-73.977081298828125,40.78759765625,-73.970977783203125,40.786052703857422,N,277 +id3345753,1,2016-04-17 19:28:28,2016-04-17 19:46:28,1,-73.960365295410156,40.715251922607422,-73.993583679199219,40.724666595458984,N,1080 +id1245718,2,2016-06-26 01:56:52,2016-06-26 02:07:10,5,-73.987022399902344,40.729408264160156,-74.002372741699219,40.742221832275391,N,618 +id0630316,1,2016-02-15 16:44:29,2016-02-15 17:02:35,2,-73.979446411132813,40.752162933349609,-73.964279174804688,40.759716033935547,N,1086 +id1493972,1,2016-03-12 18:38:18,2016-03-12 19:00:33,1,-73.969551086425781,40.760551452636719,-73.984817504882812,40.720310211181641,N,1335 +id2840238,2,2016-04-18 16:58:22,2016-04-18 17:09:11,1,-73.944572448730469,40.779979705810547,-73.956367492675781,40.763271331787109,N,649 +id1376164,1,2016-03-16 12:48:44,2016-03-16 13:04:06,3,-73.975753784179688,40.752353668212891,-73.95654296875,40.76641845703125,N,922 +id3190388,1,2016-02-21 19:14:52,2016-02-21 19:19:02,1,-73.989646911621094,40.734424591064453,-73.98486328125,40.742244720458984,N,250 +id2465650,2,2016-02-07 17:41:23,2016-02-07 17:55:52,5,-73.985252380371094,40.727588653564453,-74.007728576660156,40.734882354736328,N,869 +id3395293,2,2016-01-03 02:00:40,2016-01-03 02:14:38,2,-73.987747192382813,40.721176147460938,-74.0081787109375,40.738140106201172,N,838 +id0225155,2,2016-04-13 21:47:25,2016-04-13 22:03:43,1,-73.974662780761719,40.750930786132813,-73.959938049316406,40.770755767822266,N,978 +id1993030,1,2016-06-03 15:48:16,2016-06-03 16:09:32,1,-73.995903015136719,40.720157623291016,-73.990409851074219,40.746124267578125,N,1276 +id3463387,2,2016-03-08 21:07:28,2016-03-08 21:17:10,5,-73.9937744140625,40.738632202148437,-73.980903625488281,40.759193420410156,N,582 +id2314710,1,2016-05-23 21:29:43,2016-05-23 21:45:14,4,-74.012802124023438,40.71661376953125,-73.983047485351563,40.693656921386719,N,931 +id1820311,1,2016-04-10 03:13:00,2016-04-10 03:20:44,2,-74.00238037109375,40.733741760253906,-74.0010986328125,40.740116119384766,N,464 +id0467328,1,2016-05-17 07:34:35,2016-05-17 07:46:38,1,-73.980194091796875,40.775684356689453,-73.97393798828125,40.757221221923828,N,723 +id0189270,1,2016-04-05 23:08:20,2016-04-05 23:23:31,2,-73.982170104980469,40.773517608642578,-73.966438293457031,40.759860992431641,N,911 +id2014985,1,2016-04-20 21:36:36,2016-04-20 21:49:07,1,-73.974754333496094,40.790142059326172,-73.939323425292969,40.805068969726563,N,751 +id2251007,2,2016-05-23 14:20:49,2016-05-23 14:20:57,1,-73.781829833984375,40.644699096679687,-73.781829833984375,40.644699096679687,N,8 +id1059801,1,2016-03-01 23:21:59,2016-03-01 23:23:07,1,-73.963233947753906,40.762203216552734,-73.964439392089844,40.760398864746094,N,68 +id0751765,2,2016-03-19 03:26:56,2016-03-19 03:33:28,5,-73.975799560546875,40.751331329345703,-73.956787109375,40.777618408203125,N,392 +id2611272,2,2016-04-27 18:56:22,2016-04-27 19:25:02,2,-73.994773864746094,40.750076293945312,-73.99005126953125,40.737773895263672,N,1720 +id1744570,2,2016-02-09 12:43:27,2016-02-09 13:10:57,6,-73.981842041015625,40.752254486083984,-73.959068298339844,40.767372131347656,N,1650 +id1989571,1,2016-06-14 06:22:22,2016-06-14 06:29:11,1,-73.990974426269531,40.750350952148438,-73.983772277832031,40.761653900146484,N,409 +id3707212,2,2016-05-29 18:26:26,2016-05-29 18:35:07,1,-73.969871520996094,40.763191223144531,-73.978103637695313,40.753868103027344,N,521 +id3299683,2,2016-05-05 22:55:46,2016-05-05 23:04:14,1,-73.977203369140625,40.743091583251953,-74.011795043945313,40.702518463134766,N,508 +id3174862,2,2016-01-16 16:24:37,2016-01-16 16:36:55,1,-73.990036010742188,40.734836578369141,-73.969993591308594,40.756980895996094,N,738 +id0956162,1,2016-01-16 08:17:56,2016-01-16 08:25:02,1,-73.946617126464844,40.772472381591797,-73.960700988769531,40.778274536132812,N,426 +id0884032,2,2016-06-30 06:44:19,2016-06-30 06:54:05,2,-73.956672668457031,40.784019470214844,-73.975227355957031,40.755859375,N,586 +id2210879,1,2016-06-10 17:33:36,2016-06-10 17:41:48,1,-73.990478515625,40.740192413330078,-74.007240295410156,40.735721588134766,N,492 +id3410374,1,2016-06-22 21:20:08,2016-06-22 21:49:43,1,-73.87091064453125,40.773616790771484,-73.961051940917969,40.672256469726562,N,1775 +id2018140,1,2016-06-13 01:07:05,2016-06-13 01:10:41,2,-73.997261047363281,40.724727630615234,-74.014686584472656,40.718021392822266,N,216 +id3185408,2,2016-03-14 18:47:13,2016-03-14 18:52:57,1,-73.969871520996094,40.762630462646484,-73.974380493164063,40.755790710449219,N,344 +id1407252,1,2016-02-22 17:54:55,2016-02-22 18:29:02,1,-73.993293762207031,40.724491119384766,-73.9595947265625,40.798973083496094,N,2047 +id2423857,2,2016-02-15 00:24:20,2016-02-15 00:42:43,2,-73.776756286621094,40.645309448242188,-73.826553344726563,40.691108703613281,N,1103 +id3831162,2,2016-02-18 20:26:11,2016-02-18 20:27:08,4,-74.007530212402344,40.725425720214844,-74.006858825683594,40.729900360107422,N,57 +id3655653,1,2016-03-02 10:24:00,2016-03-02 10:34:03,1,-73.995437622070312,40.74957275390625,-74.00445556640625,40.749542236328125,N,603 +id3429467,1,2016-03-01 22:43:27,2016-03-01 22:49:21,1,-73.981048583984375,40.761711120605469,-73.991493225097656,40.759788513183594,N,354 +id3480786,2,2016-03-30 20:44:37,2016-03-30 21:22:18,2,-73.790374755859375,40.646472930908203,-73.994003295898437,40.738548278808594,N,2261 +id3784926,1,2016-02-28 23:00:20,2016-02-28 23:08:59,1,-73.982070922851562,40.760025024414063,-73.982345581054687,40.776882171630859,N,519 +id0144975,2,2016-06-06 17:24:01,2016-06-06 17:32:11,1,-73.998092651367188,40.756038665771484,-73.991226196289062,40.770420074462891,N,490 +id3984294,2,2016-02-22 08:43:07,2016-02-22 08:52:29,1,-74.014381408691406,40.703903198242188,-74.010818481445313,40.718826293945313,N,562 +id2613859,1,2016-04-24 18:44:01,2016-04-24 18:59:51,1,-73.995346069335938,40.744144439697266,-73.977790832519531,40.783817291259766,N,950 +id1118568,2,2016-03-07 13:35:49,2016-03-07 13:53:42,1,-73.992759704589844,40.768451690673828,-73.991218566894531,40.750320434570312,N,1073 +id2339089,1,2016-04-24 22:04:50,2016-04-24 22:11:04,1,-74.000457763671875,40.727237701416016,-73.983909606933594,40.7254638671875,N,374 +id0388732,2,2016-01-05 09:54:31,2016-01-05 10:05:48,1,-73.962440490722656,40.766353607177734,-73.983566284179688,40.775405883789063,N,677 +id0415855,2,2016-02-28 17:44:37,2016-02-28 17:58:19,6,-73.9764404296875,40.788463592529297,-73.951690673828125,40.773281097412109,N,822 +id2000146,2,2016-04-30 20:40:01,2016-04-30 21:05:18,1,-73.78204345703125,40.644691467285156,-73.735946655273437,40.770168304443359,N,1517 +id3345162,2,2016-02-15 00:51:57,2016-02-15 00:53:03,3,-73.965667724609375,40.762557983398438,-73.960563659667969,40.769767761230469,N,66 +id0942966,1,2016-04-14 11:59:03,2016-04-14 12:20:05,2,-73.973411560058594,40.750431060791016,-73.959098815917969,40.799514770507813,N,1262 +id3408580,2,2016-06-27 09:08:01,2016-06-27 09:23:37,1,-73.962539672851562,40.759021759033203,-74.011528015136719,40.703861236572266,N,936 +id0446424,1,2016-05-11 19:39:18,2016-05-11 19:52:58,1,-73.975212097167969,40.763690948486328,-73.979400634765625,40.737186431884766,N,820 +id0147634,2,2016-03-07 09:21:25,2016-03-07 09:41:06,1,-73.9599609375,40.770595550537109,-73.97723388671875,40.757907867431641,N,1181 +id2340563,2,2016-01-29 08:58:31,2016-01-29 09:00:53,1,-73.986984252929688,40.776466369628906,-73.982528686523437,40.779048919677734,N,142 +id3594680,1,2016-06-02 23:11:15,2016-06-02 23:44:45,1,-73.776763916015625,40.645252227783203,-73.985908508300781,40.722774505615234,N,2010 +id2456489,1,2016-03-20 16:05:14,2016-03-20 16:47:33,1,-73.781867980957031,40.644557952880859,-73.961204528808594,40.812034606933594,N,2539 +id3025824,1,2016-02-09 18:21:56,2016-02-09 18:26:42,1,-74.005226135253906,40.720920562744141,-73.999893188476562,40.723545074462891,N,286 +id0274457,2,2016-02-04 09:36:08,2016-02-04 09:42:01,1,-73.96600341796875,40.754680633544922,-73.974082946777344,40.751491546630859,N,353 +id1319274,2,2016-05-14 10:10:13,2016-05-14 10:16:02,1,-73.979637145996094,40.786399841308594,-73.959083557128906,40.815273284912109,N,349 +id1307672,2,2016-05-15 18:11:19,2016-05-15 18:17:33,1,-73.988311767578125,40.748161315917969,-73.978851318359375,40.741020202636719,N,374 +id1497110,2,2016-03-16 19:27:28,2016-03-16 19:36:35,1,-73.954490661621094,40.781177520751953,-73.965202331542969,40.766441345214844,N,547 +id2050896,2,2016-04-06 05:18:31,2016-04-06 05:27:15,1,-73.987571716308594,40.724128723144531,-74.01220703125,40.701400756835938,N,524 +id3474380,1,2016-04-10 03:45:26,2016-04-10 03:51:06,1,-73.999855041503906,40.74334716796875,-73.984764099121094,40.738651275634766,N,340 +id1112835,2,2016-04-20 05:26:49,2016-04-20 05:37:06,1,-73.989921569824219,40.775871276855469,-73.994789123535156,40.750110626220703,N,617 +id0417263,2,2016-02-07 01:31:25,2016-02-07 01:35:16,1,-73.976058959960937,40.750858306884766,-73.978096008300781,40.744895935058594,N,231 +id1307765,2,2016-05-16 13:08:48,2016-05-16 13:32:44,1,-74.011833190917969,40.714454650878906,-73.97705078125,40.745304107666016,N,1436 +id2608549,1,2016-03-30 07:51:44,2016-03-30 08:13:13,1,-73.991279602050781,40.696987152099609,-73.975494384765625,40.755489349365234,N,1289 +id0624479,1,2016-06-07 07:42:40,2016-06-07 08:06:58,1,-73.948051452636719,40.783260345458984,-73.97528076171875,40.755790710449219,N,1458 +id0527623,1,2016-05-28 21:59:12,2016-05-28 22:05:21,2,-73.975196838378906,40.752388000488281,-73.987861633300781,40.741233825683594,N,369 +id0599733,2,2016-03-20 03:38:47,2016-03-20 03:48:11,1,-73.988456726074219,40.728172302246094,-74.00384521484375,40.737876892089844,N,564 +id1328595,1,2016-02-19 17:46:10,2016-02-19 17:54:32,1,-73.994041442871094,40.731273651123047,-73.981704711914063,40.728481292724609,N,502 +id2871280,1,2016-02-06 01:27:27,2016-02-06 01:35:35,1,-73.993507385253906,40.718685150146484,-74.0089111328125,40.707557678222656,N,488 +id1787561,2,2016-05-20 13:59:47,2016-05-20 14:26:06,1,-73.974510192871094,40.763263702392578,-74.002540588378906,40.760711669921875,N,1579 +id0607198,1,2016-01-04 18:51:44,2016-01-04 19:04:23,2,-74.004768371582031,40.751628875732422,-73.995773315429688,40.732696533203125,N,759 +id3771610,2,2016-02-13 12:12:12,2016-02-13 12:31:28,1,-73.990089416503906,40.7330322265625,-73.989280700683594,40.7420654296875,N,1156 +id1981720,1,2016-04-01 16:07:32,2016-04-01 16:12:34,1,-73.970985412597656,40.765235900878906,-73.959548950195312,40.780117034912109,N,302 +id2128267,1,2016-03-14 07:58:44,2016-03-14 08:07:41,1,-73.960235595703125,40.798133850097656,-73.974601745605469,40.788280487060547,N,537 +id3052943,1,2016-05-27 09:29:55,2016-05-27 09:41:49,3,-73.97479248046875,40.761470794677734,-73.984931945800781,40.747920989990234,N,714 +id2849558,2,2016-04-22 19:50:42,2016-04-22 20:03:01,1,-73.980888366699219,40.763866424560547,-73.968597412109375,40.754970550537109,N,739 +id2482091,2,2016-03-15 21:36:23,2016-03-15 21:41:29,2,-73.989501953125,40.720603942871094,-73.980941772460938,40.7333984375,N,306 +id1277887,2,2016-04-02 11:58:43,2016-04-02 12:00:33,1,-73.9735107421875,40.794631958007813,-73.973594665527344,40.792213439941406,N,110 +id1026972,2,2016-02-05 20:33:53,2016-02-05 20:43:45,1,-73.984054565429687,40.765148162841797,-74.000991821289063,40.746219635009766,N,592 +id3727245,2,2016-06-08 10:08:15,2016-06-08 10:19:14,1,-73.995521545410156,40.759441375732422,-73.983802795410156,40.767208099365234,N,659 +id3262133,1,2016-03-01 19:50:38,2016-03-01 19:58:00,1,-74.003555297851563,40.734134674072266,-73.995941162109375,40.748641967773438,N,442 +id3119282,2,2016-01-22 11:21:16,2016-01-22 11:23:21,1,-74.009979248046875,40.705341339111328,-74.006881713867188,40.708080291748047,N,125 +id1058597,2,2016-04-12 06:44:05,2016-04-12 06:52:45,1,-73.982772827148438,40.719760894775391,-74.013839721679688,40.713661193847656,N,520 +id0829526,1,2016-02-17 19:29:20,2016-02-17 19:49:56,2,-73.986198425292969,40.755989074707031,-73.998313903808594,40.725028991699219,N,1236 +id3095436,2,2016-06-08 17:57:09,2016-06-08 18:42:41,1,-73.994216918945313,40.745990753173828,-73.956398010253906,40.763080596923828,N,2732 +id1469440,1,2016-06-01 16:12:50,2016-06-01 16:18:42,2,-73.999832153320312,40.724411010742188,-73.991806030273437,40.726139068603516,N,352 +id2248714,2,2016-01-19 18:57:33,2016-01-19 19:05:01,2,-73.968635559082031,40.750560760498047,-73.979751586914063,40.75506591796875,N,448 +id0390103,1,2016-02-05 17:12:41,2016-02-05 17:20:57,1,-73.97064208984375,40.751853942871094,-73.987007141113281,40.729312896728516,N,496 +id1360366,2,2016-05-11 09:35:03,2016-05-11 10:03:11,5,-73.956512451171875,40.781410217285156,-73.980621337890625,40.760997772216797,N,1688 +id1900716,2,2016-03-14 14:01:26,2016-03-14 14:03:15,1,-73.948524475097656,40.778095245361328,-73.945724487304687,40.780353546142578,N,109 +id2333775,2,2016-02-04 08:58:00,2016-02-04 09:03:07,1,-73.947982788085938,40.798229217529297,-73.946510314941406,40.792331695556641,N,307 +id2476580,1,2016-01-15 06:59:56,2016-01-15 07:03:05,1,-73.981704711914063,40.747737884521484,-73.976226806640625,40.754966735839844,N,189 +id1704338,1,2016-01-19 09:10:35,2016-01-19 09:22:28,1,-73.984054565429687,40.743270874023438,-73.977912902832031,40.7596435546875,N,713 +id1357484,1,2016-05-13 07:34:18,2016-05-13 07:44:24,1,-74.001815795898437,40.730300903320312,-73.986457824707031,40.74017333984375,N,606 +id1345144,2,2016-04-22 14:21:22,2016-04-22 14:30:43,1,-73.96221923828125,40.779678344726563,-73.95172119140625,40.766468048095703,N,561 +id0481034,1,2016-01-04 06:48:36,2016-01-04 06:52:03,1,-73.994148254394531,40.719940185546875,-73.990028381347656,40.729503631591797,N,207 +id1010295,1,2016-02-03 23:46:19,2016-02-04 00:04:29,1,-73.863189697265625,40.769912719726562,-73.982406616210938,40.746696472167969,N,1090 +id2941903,1,2016-01-28 10:32:57,2016-01-28 10:57:55,1,-73.992210388183594,40.743526458740234,-73.971908569335938,40.759872436523438,N,1498 +id1769396,2,2016-01-07 21:20:28,2016-01-07 21:27:31,1,-73.969680786132813,40.797679901123047,-73.980247497558594,40.783748626708984,N,423 +id3623400,2,2016-06-14 04:23:50,2016-06-14 04:49:54,5,-74.001533508300781,40.730705261230469,-73.880783081054687,40.751075744628906,N,1564 +id3659916,2,2016-05-07 10:57:24,2016-05-07 11:10:55,1,-73.980369567871094,40.783729553222656,-73.975692749023438,40.759159088134766,N,811 +id3180177,2,2016-06-09 09:05:16,2016-06-09 09:19:43,6,-73.985511779785156,40.750480651855469,-73.972511291503906,40.761669158935547,N,867 +id1268074,1,2016-04-15 16:24:22,2016-04-15 16:30:16,1,-73.988250732421875,40.748542785644531,-73.992149353027344,40.738189697265625,N,354 +id2278616,1,2016-03-18 10:38:13,2016-03-18 11:29:43,2,-73.874595642089844,40.774112701416016,-73.982391357421875,40.7716064453125,N,3090 +id3071494,2,2016-05-08 18:47:14,2016-05-08 18:55:48,6,-74.005180358886719,40.74053955078125,-73.988723754882813,40.731849670410156,N,514 +id1718265,1,2016-02-18 18:54:17,2016-02-18 18:58:08,1,-73.992416381835938,40.750946044921875,-74.004013061523438,40.742355346679687,N,231 +id0680761,1,2016-04-28 19:24:50,2016-04-28 19:31:41,1,-73.958564758300781,40.778221130371094,-73.943809509277344,40.776676177978516,N,411 +id2186387,2,2016-03-24 10:13:48,2016-03-24 10:38:20,1,-73.966758728027344,40.794021606445313,-73.978294372558594,40.751422882080078,N,1472 +id3585132,1,2016-04-05 00:29:11,2016-04-05 00:41:20,1,-73.969223022460938,40.689426422119141,-73.931198120117188,40.699275970458984,N,729 +id3537428,1,2016-05-14 17:18:40,2016-05-14 17:24:50,1,-73.987289428710938,40.780471801757813,-73.981483459472656,40.773723602294922,N,370 +id0789825,1,2016-01-09 09:41:47,2016-01-09 09:49:03,1,-73.985542297363281,40.744247436523438,-73.966720581054687,40.758293151855469,N,436 +id1974072,2,2016-04-18 13:45:11,2016-04-18 13:58:07,1,-73.989509582519531,40.746913909912109,-74.008583068847656,40.719383239746094,N,776 +id0280174,2,2016-03-12 22:10:33,2016-03-12 22:34:43,1,-73.963111877441406,40.769210815429687,-73.996246337890625,40.690940856933594,N,1450 +id0134360,2,2016-02-23 17:38:43,2016-02-23 17:57:37,1,-74.015449523925781,40.711490631103516,-73.983329772949219,40.732608795166016,N,1134 +id2348833,1,2016-06-14 19:07:10,2016-06-14 19:13:21,1,-73.966682434082031,40.768321990966797,-73.959426879882813,40.772323608398438,N,371 +id3477867,1,2016-04-28 21:39:42,2016-04-28 21:49:05,1,-73.996131896972656,40.738456726074219,-73.979804992675781,40.758018493652344,N,563 +id3758366,2,2016-03-14 17:19:42,2016-03-14 17:26:17,1,-73.993095397949219,40.747917175292969,-74.006340026855469,40.734405517578125,N,395 +id0652669,2,2016-06-16 13:37:37,2016-06-16 14:18:46,1,-74.000198364257813,40.758449554443359,-73.865211486816406,40.770648956298828,N,2469 +id1681037,2,2016-01-04 15:45:53,2016-01-04 16:04:46,6,-73.99951171875,40.72515869140625,-73.973487854003906,40.760940551757813,N,1133 +id1085096,1,2016-05-11 20:59:35,2016-05-11 21:07:17,2,-73.972892761230469,40.755802154541016,-73.962432861328125,40.764762878417969,N,462 +id3749060,2,2016-01-12 20:13:41,2016-01-12 20:24:17,1,-73.973197937011719,40.763988494873047,-73.968772888183594,40.790889739990234,N,636 +id3146869,2,2016-02-11 19:03:26,2016-02-11 19:12:23,2,-73.863296508789063,40.7698974609375,-73.874320983886719,40.757946014404297,N,537 +id1236420,2,2016-03-06 08:34:53,2016-03-06 08:45:33,1,-73.994941711425781,40.760269165039063,-73.986709594726563,40.759239196777344,N,640 +id2986821,1,2016-02-29 07:33:10,2016-02-29 07:47:20,1,-73.974349975585937,40.761981964111328,-73.957778930664063,40.779209136962891,N,850 +id1712364,1,2016-03-04 09:31:08,2016-03-04 09:55:20,1,-73.953506469726563,40.767387390136719,-74.012359619140625,40.716770172119141,N,1452 +id1367097,1,2016-05-21 22:04:51,2016-05-21 22:11:20,1,-73.975746154785156,40.744968414306641,-73.975013732910156,40.756553649902344,N,389 +id2508236,2,2016-03-04 20:47:19,2016-03-04 20:59:51,4,-73.984489440917969,40.767513275146484,-73.954368591308594,40.788196563720703,N,752 +id0006564,1,2016-05-24 08:49:35,2016-05-24 09:03:02,1,-73.981735229492188,40.740833282470703,-73.976165771484375,40.753631591796875,N,807 +id1594474,1,2016-06-09 12:41:39,2016-06-09 13:04:25,1,-73.958869934082031,40.774265289306641,-73.994125366210938,40.72650146484375,N,1366 +id3322296,1,2016-02-09 23:48:40,2016-02-09 23:58:08,1,-73.894294738769531,40.669818878173828,-73.864707946777344,40.667675018310547,N,568 +id2974644,2,2016-05-19 20:11:06,2016-05-19 20:25:35,1,-74.004150390625,40.721946716308594,-73.989151000976563,40.726596832275391,N,869 +id3486978,1,2016-03-31 21:49:16,2016-03-31 22:00:49,1,-73.980926513671875,40.767684936523438,-73.986015319824219,40.746330261230469,N,693 +id3050243,2,2016-05-25 13:48:51,2016-05-25 14:09:33,1,-73.871528625488281,40.774150848388672,-73.979461669921875,40.740009307861328,N,1242 +id0955640,2,2016-01-18 00:18:13,2016-01-18 00:25:53,1,-73.972770690917969,40.752670288085938,-73.991668701171875,40.755870819091797,N,460 +id1774061,1,2016-01-03 13:22:47,2016-01-03 13:25:29,1,-73.965850830078125,40.754478454589844,-73.97381591796875,40.7476806640625,N,162 +id3314517,2,2016-01-01 02:41:42,2016-01-01 02:57:34,3,-73.954566955566406,40.716751098632812,-73.978675842285156,40.67913818359375,N,952 +id3556010,1,2016-05-21 20:02:01,2016-05-21 20:17:41,1,-73.985946655273438,40.740810394287109,-73.950996398925781,40.771663665771484,N,940 +id2832598,2,2016-06-26 17:34:33,2016-06-26 17:47:06,2,-73.863548278808594,40.769901275634766,-73.800323486328125,40.791801452636719,N,753 +id3172170,2,2016-02-23 06:33:30,2016-02-23 06:47:48,1,-73.964637756347656,40.755867004394531,-73.990943908691406,40.750621795654297,N,858 +id3902074,1,2016-03-26 19:24:28,2016-03-26 19:41:44,3,-74.000137329101563,40.758518218994141,-73.987594604492187,40.760120391845703,N,1036 +id3047231,1,2016-04-03 12:49:56,2016-04-03 13:01:43,1,-73.992691040039063,40.740478515625,-74.010368347167969,40.719158172607422,N,707 +id1837685,2,2016-05-16 08:52:03,2016-05-16 08:52:22,1,-73.950813293457031,40.802562713623047,-73.9501953125,40.8023681640625,N,19 +id1391504,1,2016-06-05 01:34:21,2016-06-05 02:05:16,2,-73.951339721679688,40.774360656738281,-73.888984680175781,40.749305725097656,N,1855 +id1721684,1,2016-03-14 22:26:12,2016-03-14 22:28:51,1,-73.97119140625,40.757057189941406,-73.970977783203125,40.750926971435547,N,159 +id3051167,1,2016-01-08 18:53:45,2016-01-08 19:14:30,1,-73.939262390136719,40.693424224853516,-73.940452575683594,40.698673248291016,N,1245 +id3681784,2,2016-06-29 08:54:27,2016-06-29 09:02:45,1,-73.985832214355469,40.746730804443359,-73.978279113769531,40.751380920410156,N,498 +id2494046,1,2016-03-30 14:14:38,2016-03-30 14:41:33,1,-74.010597229003906,40.704166412353516,-73.974655151367188,40.748348236083984,N,1615 +id3086060,1,2016-01-19 21:44:54,2016-01-19 21:56:36,1,-73.986061096191406,40.743186950683594,-73.991600036621094,40.759082794189453,N,702 +id1017064,1,2016-06-03 21:43:50,2016-06-03 22:10:09,2,-73.990409851074219,40.729221343994141,-73.925559997558594,40.70965576171875,N,1579 +id0073899,2,2016-05-07 16:16:58,2016-05-07 16:29:23,6,-73.971565246582031,40.766288757324219,-73.980377197265625,40.749973297119141,N,745 +id2012077,2,2016-04-25 19:49:56,2016-04-25 20:05:53,5,-73.990211486816406,40.761646270751953,-73.985595703125,40.731483459472656,N,957 +id0420535,1,2016-04-30 17:24:46,2016-04-30 17:31:43,1,-73.983856201171875,40.725536346435547,-73.988662719726563,40.736896514892578,N,417 +id1867316,2,2016-03-24 21:35:16,2016-03-24 21:38:08,1,-73.986076354980469,40.734481811523438,-73.982635498046875,40.738624572753906,N,172 +id3222611,2,2016-04-24 22:13:07,2016-04-24 22:25:56,2,-73.921630859375,40.771026611328125,-73.866722106933594,40.752605438232422,N,769 +id0111685,1,2016-03-09 14:20:16,2016-03-09 14:31:36,1,-73.980758666992188,40.770263671875,-73.961524963378906,40.773723602294922,N,680 +id3830097,2,2016-03-29 16:57:41,2016-03-29 17:03:24,1,-73.983848571777344,40.764919281005859,-73.974998474121094,40.777420043945313,N,343 +id3884234,1,2016-02-07 14:53:30,2016-02-07 15:00:57,2,-73.952903747558594,40.780693054199219,-73.961997985839844,40.763904571533203,N,447 +id1109104,2,2016-02-11 15:41:12,2016-02-11 15:45:34,6,-73.96539306640625,40.795341491699219,-73.95465087890625,40.805820465087891,N,262 +id2832938,2,2016-03-06 03:16:50,2016-03-06 03:22:29,1,-73.985809326171875,40.731273651123047,-74.002471923828125,40.727695465087891,N,339 +id0903333,2,2016-04-07 08:56:34,2016-04-07 09:13:02,1,-73.961158752441406,40.766761779785156,-73.981582641601562,40.746269226074219,N,988 +id2087833,2,2016-01-07 20:32:02,2016-01-07 20:37:23,2,-73.982177734375,40.773460388183594,-73.972305297851563,40.791366577148438,N,321 +id0642820,2,2016-06-07 21:56:11,2016-06-07 22:19:28,1,-74.003204345703125,40.732837677001953,-73.964141845703125,40.792346954345703,N,1397 +id2944394,1,2016-03-19 19:37:25,2016-03-19 19:47:24,1,-74.007438659667969,40.740966796875,-73.989356994628906,40.743003845214844,N,599 +id0351623,2,2016-06-14 08:04:07,2016-06-14 08:13:10,2,-73.976280212402344,40.751560211181641,-73.991508483886719,40.750091552734375,N,543 +id0167202,1,2016-05-23 19:50:55,2016-05-23 20:00:54,2,-73.984275817871094,40.758380889892578,-73.982139587402344,40.774200439453125,N,599 +id0957251,1,2016-05-29 19:58:26,2016-05-29 20:02:11,1,-73.937347412109375,40.819080352783203,-73.93988037109375,40.809841156005859,N,225 +id3557237,1,2016-02-14 15:27:04,2016-02-14 15:54:43,2,-73.874542236328125,40.773891448974609,-73.975082397460938,40.765300750732422,N,1659 +id3674566,2,2016-05-19 21:45:36,2016-05-19 22:13:09,4,-73.862709045410156,40.769073486328125,-73.978530883789063,40.789115905761719,N,1653 +id2284774,2,2016-03-15 08:41:22,2016-03-15 08:49:12,2,-74.0164794921875,40.716388702392578,-74.008506774902344,40.728359222412109,N,470 +id3434592,2,2016-04-16 12:57:29,2016-04-16 13:00:17,1,-73.960960388183594,40.806842803955078,-73.966239929199219,40.8048095703125,N,168 +id2997546,2,2016-03-22 10:34:00,2016-03-22 10:51:46,2,-73.983436584472656,40.693851470947266,-74.010009765625,40.720859527587891,N,1066 +id3499099,2,2016-03-23 22:44:05,2016-03-23 22:46:54,5,-74.009208679199219,40.705646514892578,-74.004798889160156,40.709648132324219,N,169 +id2459823,2,2016-02-18 20:18:22,2016-02-18 20:31:04,1,-73.983390808105469,40.766941070556641,-73.983070373535156,40.750907897949219,N,762 +id0333995,2,2016-03-22 09:11:57,2016-03-22 09:53:36,1,-73.970748901367188,40.75811767578125,-74.013572692871094,40.714809417724609,N,2499 +id1782966,1,2016-03-24 07:26:11,2016-03-24 07:31:53,1,-73.96710205078125,40.793464660644531,-73.982315063476563,40.775238037109375,N,342 +id2451745,2,2016-06-16 22:26:58,2016-06-16 23:17:53,1,-73.862884521484375,40.768867492675781,-73.976585388183594,40.751640319824219,N,3055 +id3163200,1,2016-03-13 14:50:29,2016-03-13 14:53:14,1,-73.980308532714844,40.780590057373047,-73.975204467773438,40.787448883056641,N,165 +id3546421,1,2016-04-29 12:50:34,2016-04-29 12:58:31,1,-73.961982727050781,40.759746551513672,-73.950241088867188,40.771968841552734,N,477 +id1402087,2,2016-05-12 18:47:10,2016-05-12 18:58:13,1,-74.005691528320313,40.750923156738281,-74.010246276855469,40.715961456298828,N,663 +id1217391,1,2016-06-11 16:09:27,2016-06-11 16:22:58,1,-74.014686584472656,40.715373992919922,-74.001800537109375,40.723110198974609,N,811 +id0808929,2,2016-05-13 18:44:48,2016-05-13 18:49:04,3,-73.967803955078125,40.762313842773438,-73.977806091308594,40.764633178710937,N,256 +id3794157,2,2016-03-17 10:02:06,2016-03-17 10:30:37,1,-73.989707946777344,40.741317749023438,-74.001487731933594,40.707927703857422,N,1711 +id3518268,1,2016-03-10 07:31:59,2016-03-10 07:40:08,1,-73.975448608398438,40.787803649902344,-73.95623779296875,40.776439666748047,N,489 +id1992673,2,2016-03-02 20:10:41,2016-03-02 20:30:53,5,-73.875312805175781,40.773681640625,-73.875312805175781,40.773681640625,N,1212 +id1561421,1,2016-01-13 14:18:52,2016-01-13 14:39:58,1,-73.973884582519531,40.759922027587891,-73.946174621582031,40.773700714111328,N,1266 +id2836095,2,2016-01-16 13:29:54,2016-01-16 13:35:29,1,-74.006950378417969,40.716320037841797,-74.005256652832031,40.728340148925781,N,335 +id3026732,2,2016-04-14 21:18:30,2016-04-14 21:25:18,4,-73.983634948730469,40.773422241210938,-73.969924926757813,40.796474456787109,N,408 +id1181350,2,2016-02-25 23:42:34,2016-02-25 23:51:13,1,-73.986190795898437,40.762111663818359,-74.002227783203125,40.745311737060547,N,519 +id1911328,2,2016-01-01 12:18:52,2016-01-01 12:23:18,1,-73.9818115234375,40.740528106689453,-73.972976684570313,40.755760192871094,N,266 +id1247160,2,2016-02-05 10:08:00,2016-02-05 10:13:22,5,-73.995742797851563,40.7369384765625,-73.991706848144531,40.742458343505859,N,322 +id1516430,1,2016-05-09 00:28:44,2016-05-09 00:45:22,2,-73.994758605957031,40.750137329101563,-73.978729248046875,40.724231719970703,N,998 +id0396267,1,2016-03-02 22:47:41,2016-03-02 23:06:13,1,-73.973793029785156,40.693363189697266,-73.988739013671875,40.759410858154297,N,1112 +id0056716,1,2016-01-30 11:21:59,2016-01-30 11:26:18,1,-73.861854553222656,40.730239868164062,-73.844955444335938,40.721500396728516,N,259 +id2131398,2,2016-03-04 20:34:03,2016-03-04 20:40:26,1,-74.005577087402344,40.740711212158203,-73.994468688964844,40.750740051269531,N,383 +id2200145,2,2016-03-15 08:24:48,2016-03-15 08:47:36,1,-73.972404479980469,40.754837036132813,-73.994308471679688,40.750141143798828,N,1368 +id2698755,1,2016-03-16 18:15:48,2016-03-16 18:44:57,1,-73.967506408691406,40.78802490234375,-73.97454833984375,40.75067138671875,N,1749 +id1990852,1,2016-05-30 21:17:15,2016-05-30 21:25:48,1,-73.963081359863281,40.762336730957031,-73.981719970703125,40.764511108398438,N,513 +id1178104,2,2016-03-09 19:37:38,2016-03-09 19:56:18,1,-73.983497619628906,40.765998840332031,-73.945281982421875,40.780101776123047,N,1120 +id0949521,1,2016-04-14 20:11:13,2016-04-14 20:31:22,1,-73.966361999511719,40.766429901123047,-73.984878540039063,40.757572174072266,N,1209 +id3885040,1,2016-04-18 12:55:14,2016-04-18 12:55:20,1,-73.788238525390625,40.641475677490234,-73.788238525390625,40.641475677490234,N,6 +id0734242,2,2016-06-16 07:58:12,2016-06-16 08:09:35,4,-73.815147399902344,40.702468872070313,-73.817062377929688,40.706008911132813,N,683 +id1122635,2,2016-02-25 01:05:08,2016-02-25 01:07:44,1,-73.9586181640625,40.764118194580078,-73.951309204101563,40.776889801025391,N,156 +id2250922,2,2016-04-26 18:19:14,2016-04-26 18:24:29,1,-73.992698669433594,40.739692687988281,-74.006263732910156,40.731636047363281,N,315 +id3265064,2,2016-01-06 09:34:50,2016-01-06 09:48:15,2,-74.014930725097656,40.715957641601563,-73.997238159179687,40.725364685058594,N,805 +id0786254,1,2016-01-26 20:42:41,2016-01-26 20:52:52,1,-73.993339538574219,40.743328094482422,-73.981025695800781,40.730705261230469,N,611 +id3985153,1,2016-04-03 17:56:52,2016-04-03 17:58:51,1,-73.960227966308594,40.703361511230469,-73.964401245117188,40.707134246826172,N,119 +id3637906,2,2016-04-01 15:16:03,2016-04-01 15:42:08,1,-73.981483459472656,40.7794189453125,-73.987632751464844,40.745708465576172,N,1565 +id0942395,2,2016-03-27 14:08:31,2016-03-27 14:15:37,2,-73.979476928710937,40.784595489501953,-73.97674560546875,40.765895843505859,N,426 +id2415172,2,2016-03-30 07:07:04,2016-03-30 07:30:38,1,-73.970046997070312,40.784408569335937,-73.98175048828125,40.732608795166016,N,1414 +id3353685,1,2016-02-19 23:34:02,2016-02-19 23:48:25,1,-73.994590759277344,40.750667572021484,-73.957862854003906,40.765243530273437,N,863 +id1055401,2,2016-01-22 19:28:08,2016-01-22 19:32:51,5,-73.987602233886719,40.750152587890625,-73.979415893554688,40.758052825927734,N,283 +id0240791,2,2016-01-16 17:36:46,2016-01-16 17:44:14,1,-74.001220703125,40.741340637207031,-73.990669250488281,40.755832672119141,N,448 +id0727448,1,2016-01-13 09:18:29,2016-01-13 09:39:13,1,-73.97589111328125,40.748989105224609,-73.950096130371094,40.785594940185547,N,1244 +id3545147,2,2016-03-23 20:13:36,2016-03-23 20:41:16,4,-73.95037841796875,40.784782409667969,-73.994857788085938,40.726947784423828,N,1660 +id1480472,1,2016-06-04 00:37:43,2016-06-04 00:44:57,1,-73.967979431152344,40.755596160888672,-73.99053955078125,40.735000610351563,N,434 +id2218236,1,2016-03-02 12:28:29,2016-03-02 12:47:58,1,-73.968452453613281,40.750991821289063,-73.981765747070312,40.762454986572266,N,1169 +id0627106,2,2016-02-21 17:00:36,2016-02-21 17:10:16,3,-73.955177307128906,40.780101776123047,-73.982139587402344,40.7781982421875,N,580 +id3430075,1,2016-04-13 08:08:49,2016-04-13 08:30:46,1,-73.969551086425781,40.759994506835937,-73.862129211425781,40.768264770507813,N,1317 +id2180126,2,2016-05-23 16:41:57,2016-05-23 17:36:34,2,-73.77679443359375,40.645130157470703,-73.898979187011719,40.820987701416016,N,3277 +id3550007,1,2016-04-24 17:13:55,2016-04-24 17:30:36,2,-73.975631713867188,40.744842529296875,-74.002372741699219,40.755050659179688,N,1001 +id1978850,1,2016-04-11 15:46:13,2016-04-11 16:10:55,1,-74.012710571289063,40.701850891113281,-73.989364624023438,40.753242492675781,N,1482 +id3882536,2,2016-04-13 17:22:24,2016-04-13 17:37:14,1,-73.962799072265625,40.766429901123047,-73.983932495117188,40.774669647216797,N,890 +id3207832,2,2016-05-18 16:36:39,2016-05-18 16:48:42,2,-73.953178405761719,40.791458129882813,-73.945541381835938,40.778701782226563,N,723 +id2961274,2,2016-04-08 19:04:02,2016-04-08 19:08:40,1,-73.967948913574219,40.792350769042969,-73.975532531738281,40.789768218994141,N,278 +id1380889,2,2016-04-26 22:19:50,2016-04-26 22:28:19,2,-73.972152709960937,40.765476226806641,-73.971275329589844,40.749954223632812,N,509 +id1830970,1,2016-03-05 23:26:23,2016-03-05 23:31:44,2,-73.971916198730469,40.757297515869141,-73.984489440917969,40.748447418212891,N,321 +id0913387,2,2016-04-29 01:38:54,2016-04-29 01:44:58,1,-73.993423461914062,40.747180938720703,-73.984283447265625,40.743160247802734,N,364 +id0815216,1,2016-02-12 21:28:10,2016-02-12 21:39:43,1,-73.977226257324219,40.753986358642578,-73.989997863769531,40.767047882080078,N,693 +id0263077,2,2016-06-27 10:16:00,2016-06-27 10:35:46,1,-73.984893798828125,40.760822296142578,-74.000221252441406,40.758407592773438,N,1186 +id2504816,2,2016-02-18 13:32:18,2016-02-18 13:44:45,1,-74.002105712890625,40.740367889404297,-74.010017395019531,40.715061187744141,N,747 +id3491702,1,2016-04-19 18:12:12,2016-04-19 18:18:23,1,-73.995162963867188,40.744838714599609,-73.996070861816406,40.729297637939453,N,371 +id2077035,1,2016-01-10 01:49:55,2016-01-10 02:01:16,1,-74.000885009765625,40.729068756103516,-73.979957580566406,40.743305206298828,N,681 +id1765114,1,2016-04-25 09:18:23,2016-04-25 09:23:45,1,-73.977142333984375,40.789951324462891,-73.967582702636719,40.802425384521484,Y,322 +id2542488,2,2016-04-26 19:27:59,2016-04-26 19:33:09,1,-74.006317138671875,40.740501403808594,-74.004981994628906,40.748081207275391,N,310 +id2323220,1,2016-05-25 20:41:19,2016-05-25 20:52:00,1,-73.981193542480469,40.764198303222656,-73.995758056640625,40.759685516357422,N,641 +id1082712,1,2016-06-24 08:45:58,2016-06-24 08:57:51,1,-73.9644775390625,40.764110565185547,-73.976051330566406,40.750411987304687,N,713 +id3778074,2,2016-04-17 04:18:17,2016-04-17 04:22:10,1,-74.002090454101563,40.735012054443359,-74.005645751953125,40.726547241210938,N,233 +id0081294,1,2016-06-26 23:24:45,2016-06-26 23:43:20,1,-73.954200744628906,40.730300903320312,-73.997528076171875,40.756404876708984,N,1115 +id2960830,2,2016-04-30 21:21:59,2016-04-30 21:36:16,6,-73.980888366699219,40.764755249023438,-73.986381530761719,40.750564575195312,N,857 +id3532004,1,2016-01-28 08:43:31,2016-01-28 08:55:28,1,-73.979881286621094,40.746284484863281,-73.971260070800781,40.761619567871094,N,717 +id3060690,1,2016-06-03 21:25:42,2016-06-03 21:37:39,4,-73.998374938964844,40.745571136474609,-73.9776611328125,40.784225463867188,N,717 +id3180975,1,2016-02-24 15:21:09,2016-02-24 15:47:02,1,-73.977325439453125,40.788959503173828,-73.994880676269531,40.734836578369141,N,1553 +id2261834,2,2016-04-15 12:51:26,2016-04-15 12:55:09,5,-73.968246459960937,40.784900665283203,-73.959793090820313,40.779563903808594,N,223 +id3349670,2,2016-01-13 16:49:09,2016-01-13 17:34:08,1,-73.781745910644531,40.644901275634766,-73.983329772949219,40.725265502929688,N,2699 +id3105887,1,2016-06-30 18:33:28,2016-06-30 18:36:44,1,-73.971534729003906,40.766265869140625,-73.965072631835938,40.772266387939453,N,196 +id0563558,1,2016-06-23 15:38:19,2016-06-23 15:43:06,1,-73.966567993164063,40.764781951904297,-73.969612121582031,40.768569946289063,N,287 +id0465728,2,2016-02-16 15:50:58,2016-02-16 15:59:54,1,-73.9901123046875,40.733669281005859,-73.981651306152344,40.743808746337891,N,536 +id0032868,2,2016-06-04 11:14:11,2016-06-04 11:40:22,1,-73.952339172363281,40.777061462402344,-73.991317749023437,40.750484466552734,N,1571 +id3423245,1,2016-04-05 20:57:18,2016-04-05 21:02:49,2,-73.975349426269531,40.761188507080078,-73.967315673828125,40.769447326660156,N,331 +id3447784,1,2016-03-30 09:20:43,2016-03-30 09:46:14,1,-73.991188049316406,40.750263214111328,-73.969680786132813,40.759292602539063,N,1531 +id1432610,2,2016-02-09 22:01:15,2016-02-09 22:11:58,1,-74.007308959960938,40.743389129638672,-73.977691650390625,40.753181457519531,N,643 +id1924095,2,2016-04-01 16:50:13,2016-04-01 17:11:03,1,-74.001838684082031,40.735218048095703,-73.991432189941406,40.754783630371094,N,1250 +id0302863,1,2016-02-05 19:03:34,2016-02-05 19:06:13,1,-73.983619689941406,40.744094848632813,-73.97857666015625,40.751445770263672,N,159 +id1490650,2,2016-06-20 11:12:01,2016-06-20 11:47:30,5,-73.870849609375,40.773750305175781,-73.986839294433594,40.753860473632812,N,2129 +id0571034,1,2016-03-26 19:39:48,2016-03-26 19:49:51,2,-73.972412109375,40.765110015869141,-73.946327209472656,40.778816223144531,N,603 +id2891608,2,2016-03-31 12:44:36,2016-03-31 13:07:02,2,-73.998649597167969,40.735111236572266,-73.987403869628906,40.760444641113281,N,1346 +id0057197,2,2016-03-19 21:02:44,2016-03-19 21:14:05,2,-73.97637939453125,40.739768981933594,-73.966766357421875,40.762550354003906,N,681 +id2845527,2,2016-03-29 00:47:59,2016-03-29 01:13:00,3,-73.782417297363281,40.644603729248047,-73.982215881347656,40.742931365966797,N,1501 +id1050311,1,2016-04-12 13:23:41,2016-04-12 13:38:29,1,-73.979927062988281,40.739105224609375,-73.965423583984375,40.757728576660156,N,888 +id0408829,2,2016-04-09 18:10:25,2016-04-09 18:23:55,1,-74.008003234863281,40.7403564453125,-73.985260009765625,40.731792449951172,N,810 +id2924165,2,2016-04-19 12:31:36,2016-04-19 13:15:17,1,-74.005073547363281,40.735794067382813,-73.87237548828125,40.774288177490234,N,2621 +id2376501,1,2016-03-19 09:11:28,2016-03-19 09:22:35,3,-74.00274658203125,40.760509490966797,-74.013664245605469,40.713706970214844,N,667 +id1858711,2,2016-04-05 19:43:05,2016-04-05 19:49:23,2,-73.987701416015625,40.737583160400391,-73.991096496582031,40.748981475830078,N,378 +id3766750,1,2016-02-02 16:56:03,2016-02-02 17:01:38,1,-73.9644775390625,40.760158538818359,-73.970771789550781,40.764125823974609,N,335 +id3404299,2,2016-03-08 21:52:00,2016-03-08 22:01:25,1,-73.982452392578125,40.731449127197266,-73.979438781738281,40.749378204345703,N,565 +id1111516,2,2016-01-22 12:09:18,2016-01-22 12:22:51,1,-73.999244689941406,40.724952697753906,-73.989471435546875,40.736751556396484,N,813 +id2310430,1,2016-04-25 18:01:04,2016-04-25 18:05:25,1,-74.004356384277344,40.722023010253906,-73.997428894042969,40.7298583984375,N,261 +id0506803,1,2016-05-31 22:14:34,2016-05-31 22:18:44,1,-73.953720092773438,40.7669677734375,-73.961982727050781,40.773941040039063,N,250 +id2884890,2,2016-01-11 10:56:44,2016-01-11 11:00:23,2,-73.971649169921875,40.782711029052734,-73.968399047851563,40.790679931640625,N,219 +id0996180,2,2016-03-26 00:15:37,2016-03-26 00:29:50,2,-73.99176025390625,40.727191925048828,-73.968467712402344,40.756580352783203,N,853 +id2680471,1,2016-02-17 14:21:38,2016-02-17 14:25:20,3,-74.014816284179688,40.704883575439453,-74.013931274414063,40.713710784912109,N,222 +id1136580,2,2016-06-10 18:11:47,2016-06-10 18:18:40,1,-73.983352661132813,40.775661468505859,-73.982086181640625,40.763362884521484,N,413 +id3004017,1,2016-01-05 18:24:48,2016-01-05 18:33:27,2,-73.955490112304688,40.779212951660156,-73.959770202636719,40.763679504394531,N,519 +id2052345,2,2016-05-30 19:48:45,2016-05-30 19:53:54,1,-73.962730407714844,40.775459289550781,-73.964149475097656,40.770099639892578,N,309 +id2485216,2,2016-01-09 21:44:15,2016-01-09 21:49:37,1,-73.967971801757813,40.765251159667969,-73.973777770996094,40.764331817626953,N,322 +id3824790,2,2016-02-20 21:40:02,2016-02-20 21:41:18,2,-73.954025268554687,40.770416259765625,-73.950096130371094,40.775886535644531,N,76 +id2498806,1,2016-05-25 20:29:12,2016-05-25 20:37:13,2,-74.0020751953125,40.727867126464844,-73.990936279296875,40.723434448242187,N,481 +id0894836,1,2016-01-22 23:13:12,2016-01-22 23:23:59,4,-73.989608764648437,40.754428863525391,-73.990257263183594,40.767673492431641,N,647 +id3631975,1,2016-04-29 14:02:29,2016-04-29 14:28:53,1,-73.991477966308594,40.750171661376953,-73.951034545898438,40.777782440185547,N,1584 +id0297092,1,2016-04-11 08:24:39,2016-04-11 08:46:25,1,-73.929161071777344,40.762691497802734,-73.9730224609375,40.755374908447266,N,1306 +id1846667,2,2016-01-15 23:08:58,2016-01-15 23:39:55,1,-74.008430480957031,40.745750427246094,-73.987632751464844,40.721611022949219,N,1857 +id3134392,2,2016-05-27 11:17:19,2016-05-27 11:34:01,1,-73.991767883300781,40.750316619873047,-73.976303100585938,40.759418487548828,N,1002 +id2801192,2,2016-04-05 18:00:57,2016-04-05 18:10:32,2,-73.994117736816406,40.720069885253906,-73.982780456542969,40.731418609619141,N,575 +id1091159,1,2016-01-30 19:07:20,2016-01-30 19:27:34,1,-73.951423645019531,40.778800964355469,-73.987510681152344,40.748912811279297,N,1214 +id0111601,1,2016-02-02 00:48:37,2016-02-02 00:51:49,1,-73.945365905761719,40.751598358154297,-73.945281982421875,40.751537322998047,N,192 +id1310604,2,2016-01-27 10:38:45,2016-01-27 11:21:53,3,-73.7899169921875,40.646629333496094,-73.924278259277344,40.837440490722656,N,2588 +id1838795,1,2016-06-02 19:18:58,2016-06-02 19:38:30,1,-73.993034362792969,40.727981567382813,-73.988899230957031,40.750923156738281,N,1172 +id3441750,2,2016-04-19 17:16:07,2016-04-19 17:22:04,1,-73.981521606445313,40.774440765380859,-73.974029541015625,40.782939910888672,N,357 +id0683624,1,2016-05-02 11:05:35,2016-05-02 11:21:06,1,-73.974205017089844,40.764766693115234,-73.989372253417969,40.740535736083984,N,931 +id3101601,1,2016-06-03 20:26:46,2016-06-03 20:38:26,1,-73.990249633789063,40.738563537597656,-73.990653991699219,40.756092071533203,N,700 +id0809370,2,2016-06-07 18:18:36,2016-06-07 18:21:10,1,-73.977767944335937,40.751060485839844,-73.981193542480469,40.744419097900391,N,154 +id1555825,1,2016-04-02 08:47:28,2016-04-02 08:53:00,1,-74.001441955566406,40.731014251708984,-74.007118225097656,40.718036651611328,N,332 +id3258497,1,2016-02-11 22:07:08,2016-02-11 22:14:49,1,-73.9908447265625,40.750774383544922,-73.977188110351562,40.750560760498047,N,461 +id1287193,2,2016-02-19 20:46:56,2016-02-19 20:54:53,1,-73.986534118652344,40.733104705810547,-73.990814208984375,40.740375518798828,N,477 +id3904354,1,2016-03-05 22:40:36,2016-03-05 22:56:30,1,-73.982513427734375,40.764553070068359,-73.991584777832031,40.744495391845703,N,954 +id0301411,2,2016-03-19 13:54:11,2016-03-19 14:09:15,1,-73.953742980957031,40.784889221191406,-73.986396789550781,40.718700408935547,N,904 +id1148412,2,2016-05-13 17:26:48,2016-05-13 17:38:11,2,-74.000663757324219,40.74224853515625,-73.990928649902344,40.745681762695313,N,683 +id2901854,1,2016-05-12 10:36:03,2016-05-12 10:48:14,1,-73.983848571777344,40.725605010986328,-73.969078063964844,40.750114440917969,N,731 +id0542263,1,2016-02-17 10:02:19,2016-02-17 10:05:50,1,-73.986854553222656,40.761215209960938,-73.980125427246094,40.770431518554688,N,211 +id2049478,2,2016-04-19 11:05:05,2016-04-19 11:11:41,1,-74.001869201660156,40.734477996826172,-73.990150451660156,40.737232208251953,N,396 +id0767145,1,2016-06-08 15:46:07,2016-06-08 16:02:23,1,-73.989364624023438,40.772899627685547,-73.968536376953125,40.786666870117188,N,976 +id3950051,2,2016-03-22 09:48:28,2016-03-22 09:54:56,1,-73.974533081054687,40.753238677978516,-73.962966918945313,40.757953643798828,N,388 +id3468182,1,2016-01-07 13:32:41,2016-01-07 13:48:27,2,-73.978607177734375,40.764190673828125,-73.987342834472656,40.765220642089844,N,946 +id0203114,1,2016-04-14 08:42:20,2016-04-14 08:48:04,1,-73.962547302246094,40.767055511474609,-73.952949523925781,40.782688140869141,N,344 +id1979636,2,2016-03-15 15:55:01,2016-03-15 16:00:33,2,-73.961593627929688,40.768344879150391,-73.951881408691406,40.773628234863281,N,332 +id1928232,1,2016-06-21 17:04:05,2016-06-21 17:10:48,1,-73.834335327148437,40.766262054443359,-73.834228515625,40.766094207763672,N,403 +id1544519,1,2016-04-11 16:18:14,2016-04-11 16:25:58,2,-73.99859619140625,40.739795684814453,-73.98712158203125,40.747772216796875,N,464 +id0945786,1,2016-05-27 14:26:38,2016-05-27 14:46:02,1,-73.987838745117188,40.723979949951172,-73.991493225097656,40.748687744140625,N,1164 +id1752205,2,2016-02-06 19:16:54,2016-02-06 19:27:47,1,-73.987289428710938,40.747150421142578,-74.000053405761719,40.733089447021484,N,653 +id1952514,1,2016-05-21 10:26:17,2016-05-21 10:31:31,1,-73.969009399414063,40.764663696289063,-73.959274291992188,40.779640197753906,N,314 +id3080217,2,2016-04-08 13:41:17,2016-04-08 13:45:01,1,-73.984878540039063,40.779266357421875,-73.9833984375,40.773525238037109,N,224 +id1231853,1,2016-04-26 23:28:40,2016-04-26 23:34:35,1,-74.003372192382813,40.734119415283203,-74.001251220703125,40.751247406005859,N,355 +id3065701,2,2016-03-26 21:13:44,2016-03-26 21:30:32,1,-73.990798950195313,40.725059509277344,-74.013999938964844,40.709590911865234,N,1008 +id3371120,1,2016-02-27 17:38:15,2016-02-27 17:40:50,1,-73.953895568847656,40.779075622558594,-73.9539794921875,40.787086486816406,N,155 +id0530793,1,2016-03-24 14:54:56,2016-03-24 15:13:54,1,-73.994087219238281,40.75115966796875,-73.973068237304688,40.761417388916016,N,1138 +id0938191,2,2016-02-04 23:56:26,2016-02-05 00:06:28,2,-73.994331359863281,40.719566345214844,-73.973281860351562,40.748287200927734,N,602 +id3361372,1,2016-01-13 12:20:24,2016-01-13 12:23:58,1,-73.999671936035156,40.749923706054688,-74.005439758300781,40.749919891357422,N,214 +id2557409,1,2016-02-24 08:28:28,2016-02-24 08:41:27,1,-73.991386413574219,40.745559692382813,-74.01348876953125,40.715675354003906,N,779 +id2606167,2,2016-05-22 13:34:31,2016-05-22 13:52:31,3,-73.982803344726563,40.776889801025391,-73.968399047851563,40.786571502685547,N,1080 +id2244803,1,2016-03-05 22:00:28,2016-03-05 22:11:57,1,-73.969688415527344,40.785591125488281,-73.98297119140625,40.761161804199219,N,689 +id3106797,2,2016-02-29 09:22:02,2016-02-29 09:32:46,1,-73.973541259765625,40.779701232910156,-73.97406005859375,40.760631561279297,N,644 +id1400532,1,2016-02-25 01:06:58,2016-02-25 01:26:52,1,-74.002288818359375,40.733669281005859,-73.969070434570313,40.797828674316406,N,1194 +id1741380,1,2016-03-16 11:21:37,2016-03-16 11:30:19,1,-73.973625183105469,40.763423919677734,-73.973701477050781,40.755390167236328,N,522 +id0378001,2,2016-02-11 18:24:38,2016-02-11 18:53:31,1,-73.871170043945313,40.773918151855469,-73.960800170898437,40.805778503417969,N,1733 +id2796648,1,2016-06-25 15:17:24,2016-06-25 15:23:21,1,-73.97894287109375,40.782325744628906,-73.967414855957031,40.806430816650391,N,357 +id3071334,1,2016-03-09 17:46:27,2016-03-09 17:57:27,2,-74.002052307128906,40.739646911621094,-73.988922119140625,40.758556365966797,N,660 +id3331736,2,2016-02-02 11:02:09,2016-02-02 11:15:52,6,-73.970367431640625,40.761878967285156,-73.979377746582031,40.736530303955078,N,823 +id0775765,1,2016-01-20 03:39:13,2016-01-20 03:41:32,1,-73.99798583984375,40.756156921386719,-73.99786376953125,40.761642456054688,N,139 +id3375050,1,2016-03-12 15:49:31,2016-03-12 16:17:34,1,-73.962356567382813,40.758903503417969,-73.855247497558594,40.732025146484375,N,1683 +id3376163,2,2016-04-27 08:36:56,2016-04-27 08:47:40,2,-73.966148376464844,40.757946014404297,-73.976455688476562,40.75433349609375,N,644 +id2046890,1,2016-03-29 07:56:23,2016-03-29 08:09:58,1,-73.956153869628906,40.784538269042969,-73.973861694335937,40.755390167236328,N,815 +id2772915,1,2016-04-27 12:17:28,2016-04-27 12:31:18,1,-73.989982604980469,40.714088439941406,-73.963203430175781,40.757686614990234,N,830 +id2427247,1,2016-04-20 20:09:32,2016-04-20 20:36:07,1,-73.991554260253906,40.730781555175781,-73.968582153320313,40.800739288330078,N,1595 +id0835776,1,2016-02-01 14:52:48,2016-02-01 14:57:31,2,-73.958709716796875,40.775497436523438,-73.963729858398438,40.768386840820312,N,283 +id2399565,1,2016-01-20 06:46:01,2016-01-20 06:54:21,1,-73.965782165527344,40.758838653564453,-73.990226745605469,40.734722137451172,N,500 +id3564867,2,2016-06-14 09:28:45,2016-06-14 09:35:44,1,-73.983062744140625,40.75836181640625,-73.973358154296875,40.761959075927734,N,419 +id2874955,2,2016-05-02 00:00:18,2016-05-02 00:27:35,1,-73.990242004394531,40.757080078125,-73.9599609375,40.636959075927734,N,1637 +id1000149,1,2016-04-19 14:30:49,2016-04-19 14:38:29,1,-73.955650329589844,40.779376983642578,-73.959541320800781,40.766033172607422,N,460 +id1915591,1,2016-06-21 13:08:06,2016-06-21 13:14:31,1,-73.972419738769531,40.793949127197266,-73.982902526855469,40.779922485351563,N,385 +id1515803,1,2016-02-20 19:56:31,2016-02-20 20:01:34,1,-73.980148315429687,40.783805847167969,-73.982528686523437,40.772468566894531,N,303 +id1243464,2,2016-06-22 16:02:45,2016-06-22 16:08:39,1,-73.980216979980469,40.743301391601563,-73.990989685058594,40.733638763427734,N,354 +id3106270,2,2016-01-29 21:57:43,2016-01-29 22:19:20,1,-73.992225646972656,40.747695922851562,-73.966293334960938,40.793281555175781,N,1297 +id1841174,2,2016-06-23 21:31:59,2016-06-23 22:15:17,1,-73.78948974609375,40.647003173828125,-73.9849853515625,40.748435974121094,N,2598 +id2271178,1,2016-01-22 14:23:57,2016-01-22 14:34:43,1,-73.978080749511719,40.753440856933594,-73.986808776855469,40.761585235595703,N,646 +id0883772,1,2016-06-17 22:50:45,2016-06-17 23:20:37,1,-73.9923095703125,40.724674224853516,-73.977363586425781,40.777687072753906,N,1792 +id2039542,2,2016-04-24 09:48:18,2016-04-24 09:51:47,1,-73.972740173339844,40.796089172363281,-73.979476928710937,40.785381317138672,N,209 +id3499938,2,2016-06-21 19:13:50,2016-06-21 19:22:13,1,-73.998489379882813,40.740310668945313,-74.014236450195313,40.710868835449219,N,503 +id2193007,1,2016-02-16 00:47:48,2016-02-16 00:52:20,1,-73.981025695800781,40.753334045410156,-73.991065979003906,40.750331878662109,N,272 +id2898868,1,2016-03-03 18:39:26,2016-03-03 18:55:09,1,-73.99591064453125,40.733596801757813,-73.994430541992188,40.750633239746094,N,943 +id2078756,1,2016-03-16 16:51:49,2016-03-16 16:54:06,1,-73.973609924316406,40.789501190185547,-73.968971252441406,40.796043395996094,N,137 +id3044908,1,2016-03-26 11:20:29,2016-03-26 11:25:10,1,-73.981559753417969,40.750144958496094,-73.9876708984375,40.739067077636719,N,281 +id1533682,2,2016-02-17 15:00:16,2016-02-17 15:10:18,1,-73.972702026367188,40.759246826171875,-73.97930908203125,40.750835418701172,N,602 +id3702896,1,2016-02-24 17:39:07,2016-02-24 17:47:22,1,-73.962730407714844,40.769912719726562,-73.951644897460937,40.766338348388672,N,495 +id3396539,1,2016-06-03 21:46:50,2016-06-03 21:54:03,1,-73.952308654785156,40.766036987304688,-73.958999633789063,40.777427673339844,N,433 +id1537682,1,2016-04-03 00:28:30,2016-04-03 00:42:59,1,-74.0064697265625,40.744430541992188,-74.002632141113281,40.718544006347656,N,869 +id0564953,2,2016-03-11 08:31:13,2016-03-11 08:39:49,5,-73.973617553710938,40.757011413574219,-73.976127624511719,40.744480133056641,N,516 +id1051452,2,2016-05-10 12:56:56,2016-05-10 13:02:44,1,-73.963691711425781,40.765678405761719,-73.962638854980469,40.771541595458984,N,348 +id2154967,2,2016-01-03 16:24:18,2016-01-03 16:27:16,1,-73.995376586914063,40.725231170654297,-74.003265380859375,40.726963043212891,N,178 +id0305344,1,2016-06-10 06:14:28,2016-06-10 06:14:34,1,-73.790184020996094,40.646636962890625,-73.790184020996094,40.646640777587891,N,6 +id2684830,2,2016-06-22 07:04:29,2016-06-22 07:07:14,1,-73.986961364746094,40.762672424316406,-73.994331359863281,40.766433715820312,N,165 +id0122664,1,2016-01-21 20:46:43,2016-01-21 21:06:25,1,-73.967758178710937,40.755760192871094,-74.002632141113281,40.760593414306641,N,1182 +id3838973,1,2016-03-12 21:25:27,2016-03-12 21:31:23,3,-73.987129211425781,40.749660491943359,-73.97174072265625,40.744640350341797,N,356 +id1282488,2,2016-04-03 11:27:59,2016-04-03 11:33:12,5,-73.979118347167969,40.771888732910156,-73.970420837402344,40.783859252929688,N,313 +id2046372,2,2016-02-23 20:33:07,2016-02-23 20:39:54,5,-73.969886779785156,40.756988525390625,-73.967758178710937,40.752048492431641,N,407 +id1780450,2,2016-04-08 19:54:23,2016-04-08 20:01:06,2,-73.996673583984375,40.729671478271484,-73.997047424316406,40.720611572265625,N,403 +id2786770,1,2016-01-04 18:10:03,2016-01-04 18:17:01,1,-73.999595642089844,40.754779815673828,-74.004196166992188,40.751197814941406,N,418 +id0463198,2,2016-04-05 11:45:39,2016-04-05 12:03:04,1,-73.939323425292969,40.805168151855469,-73.973785400390625,40.784633636474609,N,1045 +id2830155,2,2016-04-20 11:28:03,2016-04-20 11:48:41,6,-73.984733581542969,40.769538879394531,-73.953033447265625,40.786121368408203,N,1238 +id3373970,1,2016-02-11 23:00:33,2016-02-11 23:07:12,2,-73.985313415527344,40.741771697998047,-73.980690002441406,40.729900360107422,N,399 +id2013468,1,2016-02-19 06:28:30,2016-02-19 06:41:19,3,-73.943618774414062,40.789009094238281,-73.976814270019531,40.740276336669922,N,769 +id2053084,1,2016-04-29 21:18:03,2016-04-29 21:28:07,3,-74.002525329589844,40.656261444091797,-74.023269653320312,40.633438110351563,N,604 +id0985803,2,2016-04-28 21:49:39,2016-04-28 21:57:29,2,-73.968917846679688,40.755691528320313,-73.955093383789063,40.777309417724609,N,470 +id1342298,1,2016-02-27 23:04:28,2016-02-27 23:10:01,2,-73.98382568359375,40.773765563964844,-73.975517272949219,40.765125274658203,N,333 +id3160693,2,2016-06-16 15:02:44,2016-06-16 15:19:47,1,-73.978408813476563,40.752342224121094,-74.000030517578125,40.758621215820312,N,1023 +id2375153,2,2016-06-10 12:09:49,2016-06-10 12:31:19,1,-73.970352172851562,40.752490997314453,-73.991310119628906,40.748981475830078,N,1290 +id1868571,2,2016-03-15 07:20:17,2016-03-15 07:23:14,1,-74.002250671386719,40.755550384521484,-74.006080627441406,40.745040893554687,N,177 +id0995043,2,2016-05-08 04:20:25,2016-05-08 04:34:17,1,-74.004318237304688,40.742366790771484,-73.98883056640625,40.720901489257813,N,832 +id0029454,1,2016-04-03 04:34:00,2016-04-03 04:44:02,1,-73.949813842773438,40.782867431640625,-73.975067138671875,40.719821929931641,N,602 +id1100015,1,2016-02-26 10:36:42,2016-02-26 10:43:57,1,-73.962150573730469,40.773738861083984,-73.960891723632812,40.780670166015625,N,435 +id2228861,2,2016-04-14 11:05:14,2016-04-14 11:20:28,1,-73.97235107421875,40.763790130615234,-73.952529907226563,40.769775390625,N,914 +id1764829,1,2016-05-08 16:28:34,2016-05-08 16:46:19,2,-73.991264343261719,40.749626159667969,-73.962654113769531,40.77386474609375,N,1065 +id2839440,1,2016-03-16 12:13:16,2016-03-16 12:22:56,1,-73.967628479003906,40.760482788085937,-73.960121154785156,40.778854370117188,N,580 +id2875894,2,2016-02-16 21:33:58,2016-02-16 21:57:03,1,-73.977943420410156,40.75323486328125,-73.978553771972656,40.776508331298828,N,1385 +id1605089,1,2016-04-21 09:59:34,2016-04-21 10:32:03,1,-74.010902404785156,40.716670989990234,-73.981536865234375,40.758403778076172,N,1949 +id1813138,2,2016-04-28 10:20:27,2016-04-28 10:39:27,5,-73.998908996582031,40.761138916015625,-73.978561401367188,40.757701873779297,N,1140 +id0364623,1,2016-04-03 02:31:54,2016-04-03 02:39:37,3,-74.002853393554687,40.728538513183594,-73.97784423828125,40.746238708496094,N,463 +id1777520,1,2016-03-29 13:57:25,2016-03-29 14:03:21,1,-73.994956970214844,40.731716156005859,-73.988533020019531,40.736976623535156,N,356 +id3334419,2,2016-06-14 22:49:41,2016-06-14 23:00:36,1,-73.993659973144531,40.762016296386719,-73.970024108886719,40.79718017578125,N,655 +id0669875,1,2016-06-08 22:30:26,2016-06-08 22:42:23,1,-73.950218200683594,40.783866882324219,-73.972335815429687,40.793182373046875,N,717 +id3762146,1,2016-05-07 16:58:12,2016-05-07 17:05:07,4,-73.973983764648438,40.764183044433594,-73.981529235839844,40.768592834472656,N,415 +id3816691,2,2016-04-07 14:25:39,2016-04-07 14:40:16,5,-73.989479064941406,40.740478515625,-73.997817993164062,40.721546173095703,N,877 +id2030691,1,2016-01-22 07:42:05,2016-01-22 07:48:57,1,-73.999961853027344,40.76165771484375,-73.98773193359375,40.769683837890625,N,412 +id1493518,1,2016-02-28 16:23:12,2016-02-28 17:31:43,1,-73.789215087890625,40.641502380371094,-73.956787109375,40.770538330078125,N,4111 +id0248430,1,2016-03-17 21:43:07,2016-03-17 21:51:38,1,-73.980537414550781,40.742603302001953,-73.9918212890625,40.748989105224609,N,511 +id1820848,1,2016-04-14 15:11:04,2016-04-14 15:36:15,1,-73.983734130859375,40.749755859375,-73.963447570800781,40.774528503417969,N,1511 +id3744058,2,2016-05-11 08:56:54,2016-05-11 09:02:09,5,-73.981071472167969,40.782081604003906,-73.989189147949219,40.773471832275391,N,315 +id1991034,1,2016-06-18 11:23:05,2016-06-18 11:29:39,1,-73.997581481933594,40.757091522216797,-74.001190185546875,40.742500305175781,N,394 +id0740625,1,2016-02-01 22:49:25,2016-02-01 22:54:40,1,-73.972816467285156,40.75848388671875,-73.963569641113281,40.774505615234375,N,315 +id2288905,2,2016-03-25 15:00:52,2016-03-25 15:20:45,1,-73.985260009765625,40.741390228271484,-73.978248596191406,40.761451721191406,N,1193 +id2210510,1,2016-03-10 21:11:04,2016-03-10 21:33:17,1,-73.99383544921875,40.749191284179688,-73.946968078613281,40.772552490234375,N,1333 +id2703819,2,2016-02-21 00:33:51,2016-02-21 00:59:25,5,-73.981246948242188,40.763858795166016,-74.001327514648437,40.717510223388672,N,1534 +id0998366,1,2016-01-14 09:35:15,2016-01-14 09:39:29,1,-73.966590881347656,40.757308959960938,-73.972885131835938,40.7467041015625,N,254 +id2054251,1,2016-03-15 12:47:56,2016-03-15 12:51:41,1,-73.989799499511719,40.741382598876953,-73.993614196777344,40.734077453613281,N,225 +id3432758,2,2016-04-25 14:48:04,2016-04-25 15:06:21,1,-73.989158630371094,40.752532958984375,-73.993431091308594,40.733184814453125,N,1097 +id2226953,2,2016-03-25 11:24:10,2016-03-25 11:32:12,1,-73.982246398925781,40.77386474609375,-73.977523803710938,40.758419036865234,N,482 +id0258807,1,2016-06-23 21:46:09,2016-06-23 21:57:19,2,-73.981658935546875,40.773609161376953,-73.956634521484375,40.772968292236328,N,670 +id0096410,2,2016-04-14 18:56:07,2016-04-14 19:22:54,1,-73.863533020019531,40.769577026367188,-73.950767517089844,40.779243469238281,N,1607 +id3585038,1,2016-05-23 11:54:37,2016-05-23 12:25:46,1,-73.96234130859375,40.772819519042969,-74.008926391601563,40.708789825439453,N,1869 +id0206267,1,2016-04-23 12:17:22,2016-04-23 12:22:58,1,-73.961418151855469,40.764358520507813,-73.97088623046875,40.751205444335938,N,336 +id1965607,2,2016-03-14 08:59:23,2016-03-14 09:19:35,6,-73.870887756347656,40.773738861083984,-73.827377319335937,40.791339874267578,N,1212 +id2441836,2,2016-06-23 07:59:11,2016-06-23 08:04:41,1,-73.993110656738281,40.729679107666016,-74.007308959960938,40.726570129394531,N,330 +id0753608,1,2016-03-10 20:43:43,2016-03-10 21:04:42,1,-73.988601684570313,40.722732543945313,-73.967437744140625,40.771785736083984,N,1259 +id0523672,1,2016-06-01 09:58:53,2016-06-01 10:03:35,1,-73.991264343261719,40.749927520751953,-73.993141174316406,40.739086151123047,N,282 +id3242497,2,2016-05-21 13:53:52,2016-05-21 14:24:07,1,-74.004463195800781,40.727840423583984,-73.976226806640625,40.784011840820313,N,1815 +id3616278,2,2016-02-26 16:29:02,2016-02-26 16:38:21,1,-73.987258911132813,40.751380920410156,-73.986236572265625,40.758129119873047,N,559 +id2766311,1,2016-05-19 19:06:30,2016-05-19 19:48:30,1,-73.862747192382812,40.769031524658203,-73.994476318359375,40.760902404785156,N,2520 +id1872413,2,2016-05-21 13:47:49,2016-05-21 13:52:35,1,-73.961051940917969,40.760776519775391,-73.952438354492188,40.772994995117188,N,286 +id0575759,1,2016-05-23 23:05:14,2016-05-23 23:31:35,1,-73.993721008300781,40.745769500732422,-73.93267822265625,40.684463500976562,N,1581 +id3872975,1,2016-05-19 23:42:00,2016-05-19 23:48:16,1,-73.952125549316406,40.777320861816406,-73.967231750488281,40.767581939697266,N,376 +id1473047,2,2016-01-11 08:04:57,2016-01-11 08:35:16,2,-73.885299682617188,40.772979736328125,-73.97955322265625,40.752590179443359,N,1819 +id3493493,2,2016-01-20 07:12:46,2016-01-20 07:19:57,1,-73.946868896484375,40.771858215332031,-73.966423034667969,40.764785766601563,N,431 +id0387386,2,2016-03-29 17:25:40,2016-03-29 17:28:01,1,-73.966987609863281,40.793846130371094,-73.971916198730469,40.787330627441406,N,141 +id0304412,2,2016-03-28 11:47:40,2016-03-28 12:01:59,1,-73.971939086914063,40.781959533691406,-73.944267272949219,40.775501251220703,N,859 +id1786215,1,2016-03-05 02:28:04,2016-03-05 02:57:55,1,-73.990913391113281,40.724235534667969,-73.860298156738281,40.739025115966797,N,1791 +id2329140,1,2016-03-06 12:19:01,2016-03-06 12:59:17,1,-73.776817321777344,40.645145416259766,-73.999847412109375,40.748645782470703,N,2416 +id1496135,2,2016-04-29 22:37:48,2016-04-29 22:50:27,1,-74.005889892578125,40.740234375,-73.997329711914062,40.727272033691406,N,759 +id3113624,1,2016-06-03 20:41:53,2016-06-03 20:56:00,1,-74.002662658691406,40.7447509765625,-73.994148254394531,40.724414825439453,N,847 +id2021361,1,2016-06-10 03:14:28,2016-06-10 03:22:34,1,-73.99224853515625,40.721416473388672,-73.970787048339844,40.755813598632812,N,486 +id1097651,2,2016-06-13 00:35:33,2016-06-13 00:59:54,2,-73.7823486328125,40.644615173339844,-73.91717529296875,40.706588745117187,N,1461 +id1038456,1,2016-06-04 14:49:03,2016-06-04 14:52:02,1,-73.982154846191406,40.778419494628906,-73.982368469238281,40.771575927734375,N,179 +id0082644,1,2016-01-29 00:45:41,2016-01-29 01:09:37,1,-73.993896484375,40.743877410888672,-73.945663452148438,40.72552490234375,N,1436 +id0457138,2,2016-06-15 22:07:58,2016-06-15 22:27:42,1,-73.991172790527344,40.749641418457031,-73.980621337890625,40.775009155273438,N,1184 +id1471795,1,2016-02-07 08:38:14,2016-02-07 08:40:25,1,-73.996734619140625,40.742755889892578,-74.002525329589844,40.733280181884766,N,131 +id2485834,2,2016-02-26 18:58:23,2016-02-26 19:39:34,1,-73.996711730957031,40.715141296386719,-73.831268310546875,40.761859893798828,N,2471 +id0997526,1,2016-02-11 10:58:47,2016-02-11 11:08:05,1,-73.969696044921875,40.762672424316406,-73.977981567382812,40.764595031738281,N,558 +id1170500,1,2016-05-03 16:49:48,2016-05-03 17:23:25,1,-74.01507568359375,40.713771820068359,-73.978385925292969,40.756229400634766,N,2017 +id3050195,2,2016-04-20 13:48:58,2016-04-20 13:57:46,1,-73.989387512207031,40.739891052246094,-73.99713134765625,40.744731903076172,N,528 +id2438053,1,2016-04-11 07:15:51,2016-04-11 07:21:21,1,-73.98291015625,40.766532897949219,-73.967964172363281,40.760749816894531,N,330 +id2795810,2,2016-06-19 00:45:04,2016-06-19 01:12:13,1,-73.786216735839844,40.643215179443359,-73.934432983398438,40.756076812744141,N,1629 +id3126787,2,2016-02-18 21:46:56,2016-02-18 21:53:20,1,-73.951492309570313,40.799690246582031,-73.965156555175781,40.796188354492187,N,384 +id1762281,1,2016-06-21 17:58:51,2016-06-21 18:17:16,1,-73.970123291015625,40.762798309326172,-73.9849853515625,40.745048522949219,N,1105 +id2898089,2,2016-01-16 09:53:59,2016-01-16 10:12:44,5,-73.992530822753906,40.7493896484375,-73.959388732910156,40.774421691894531,N,1125 +id3906292,1,2016-03-10 02:04:57,2016-03-10 02:26:07,3,-74.001121520996094,40.7315673828125,-73.934303283691406,40.848487854003906,N,1270 +id1629444,1,2016-01-11 05:49:46,2016-01-11 05:53:29,1,-73.990409851074219,40.731586456298828,-73.990234375,40.740180969238281,N,223 +id1106368,1,2016-01-19 10:48:12,2016-01-19 11:09:39,1,-74.001052856445312,40.757396697998047,-74.008750915527344,40.731037139892578,N,1287 +id1382972,1,2016-03-27 00:44:28,2016-03-27 01:05:17,1,-73.991104125976563,40.750740051269531,-74.014404296875,40.708595275878906,N,1249 +id1097067,1,2016-03-10 13:33:16,2016-03-10 13:46:43,1,-73.985328674316406,40.768718719482422,-73.953300476074219,40.786991119384766,N,807 +id1870184,2,2016-05-20 10:02:48,2016-05-20 10:15:31,1,-74.007026672363281,40.707965850830078,-74.008377075195312,40.720001220703125,N,763 +id2342391,1,2016-04-02 20:19:14,2016-04-02 20:25:17,2,-74.004035949707031,40.713214874267578,-74.015975952148438,40.715065002441406,N,363 +id1181462,2,2016-01-28 20:55:40,2016-01-28 21:21:26,1,-73.994949340820312,40.725658416748047,-73.981536865234375,40.778831481933594,N,1546 +id2062443,1,2016-03-27 09:36:46,2016-03-27 09:40:58,1,-73.981643676757813,40.746471405029297,-73.991218566894531,40.748886108398437,N,252 +id2406197,1,2016-04-12 10:49:58,2016-04-12 11:04:06,1,-73.9813232421875,40.759414672851563,-73.95916748046875,40.783435821533203,N,848 +id0485644,2,2016-03-22 22:55:15,2016-03-22 23:11:39,2,-73.986671447753906,40.759368896484375,-73.9482421875,40.770488739013672,N,984 +id3289253,2,2016-05-05 09:26:58,2016-05-05 09:39:15,5,-73.983268737792969,40.764869689941406,-73.961456298828125,40.765159606933594,N,737 +id1149222,2,2016-01-12 22:51:29,2016-01-12 22:58:14,4,-74.003059387207031,40.728141784667969,-73.997978210449219,40.716548919677734,N,405 +id1167583,1,2016-01-04 02:11:00,2016-01-04 02:18:12,2,-73.994552612304687,40.761142730712891,-73.990676879882813,40.750755310058594,N,432 +id0165382,2,2016-06-21 01:07:30,2016-06-21 01:26:47,3,-73.996208190917969,40.767368316650391,-73.919326782226562,40.829631805419922,N,1157 +id0852880,1,2016-03-29 17:16:43,2016-03-29 17:29:18,1,-74.006233215332031,40.734214782714844,-73.995643615722656,40.764373779296875,N,755 +id2088851,1,2016-04-30 23:48:32,2016-04-30 23:55:37,1,-73.990516662597656,40.757411956787109,-74.002647399902344,40.749813079833984,N,425 +id2271374,2,2016-05-17 12:41:06,2016-05-17 13:16:39,1,-73.978218078613281,40.763088226318359,-73.86529541015625,40.7706298828125,N,2133 +id3698250,1,2016-05-15 16:36:44,2016-05-15 17:31:35,1,-73.776741027832031,40.645298004150391,-73.951469421386719,40.759696960449219,N,3291 +id1133118,1,2016-01-31 13:39:49,2016-01-31 13:45:23,1,-73.98291015625,40.764881134033203,-73.991813659667969,40.749614715576172,N,334 +id0275399,2,2016-01-18 14:02:07,2016-01-18 14:05:42,1,-73.99951171875,40.743961334228516,-73.994575500488281,40.750747680664062,N,215 +id1347873,1,2016-03-26 21:23:11,2016-03-26 21:37:17,4,-73.972404479980469,40.759075164794922,-73.98809814453125,40.748203277587891,N,846 +id0831347,1,2016-04-15 23:15:41,2016-04-15 23:37:13,1,-73.988388061523438,40.731517791748047,-73.987007141113281,40.761207580566406,N,1292 +id1538728,2,2016-05-27 23:45:21,2016-05-28 00:16:44,1,-73.993118286132812,40.747753143310547,-73.942001342773437,40.814693450927734,N,1883 +id0110646,1,2016-06-26 05:05:45,2016-06-26 05:10:51,1,-73.995498657226562,40.7593994140625,-73.999870300292969,40.748428344726563,N,306 +id3826210,2,2016-04-15 00:35:15,2016-04-15 00:40:32,1,-73.981857299804688,40.690670013427734,-73.969856262207031,40.695598602294922,N,317 +id0410541,1,2016-02-18 10:09:08,2016-02-18 10:20:05,1,-73.95574951171875,40.779430389404297,-73.95989990234375,40.773624420166016,Y,657 +id0961618,2,2016-01-01 11:12:39,2016-01-01 11:17:16,3,-73.9530029296875,40.77252197265625,-73.957916259765625,40.765228271484375,N,277 +id0399697,1,2016-02-29 18:20:00,2016-02-29 18:41:14,1,-73.991104125976563,40.733142852783203,-73.997123718261719,40.679710388183594,N,1274 +id3945032,2,2016-05-31 06:48:14,2016-05-31 06:56:33,6,-73.975540161132813,40.752628326416016,-73.999221801757812,40.723049163818359,N,499 +id1119347,2,2016-04-12 23:06:31,2016-04-12 23:18:20,1,-73.973007202148438,40.75640869140625,-73.991195678710938,40.756305694580078,N,709 +id1526407,2,2016-05-19 20:35:54,2016-05-19 20:49:39,2,-73.985298156738281,40.761043548583984,-74.011192321777344,40.728641510009766,N,825 +id1923168,2,2016-01-21 08:27:45,2016-01-21 08:35:31,1,-73.988410949707031,40.748912811279297,-73.996681213378906,40.756038665771484,N,466 +id0313424,1,2016-05-12 22:21:20,2016-05-12 22:46:18,1,-73.863609313964844,40.769767761230469,-73.970306396484375,40.786518096923828,N,1498 +id0971925,2,2016-06-08 23:03:55,2016-06-08 23:21:42,4,-73.984260559082031,40.743267059326172,-73.987396240234375,40.779396057128906,N,1067 +id2757358,1,2016-03-14 22:12:57,2016-03-14 22:21:53,1,-73.978370666503906,40.751899719238281,-73.958518981933594,40.779106140136719,N,536 +id0667772,1,2016-02-26 17:52:02,2016-02-26 18:03:53,1,-73.955955505371094,40.772010803222656,-73.974662780761719,40.756011962890625,N,711 +id3342121,1,2016-06-27 10:36:18,2016-06-27 10:48:50,3,-73.993995666503906,40.726810455322266,-74.005577087402344,40.710311889648437,N,752 +id0584529,2,2016-02-28 17:50:48,2016-02-28 18:01:20,1,-73.979362487792969,40.783531188964844,-73.95953369140625,40.774173736572266,N,632 +id2917593,2,2016-02-07 21:40:08,2016-02-07 21:45:35,1,-73.991409301757812,40.739711761474609,-73.991554260253906,40.747806549072266,N,327 +id1828186,2,2016-04-21 20:38:26,2016-04-21 20:50:39,1,-73.974830627441406,40.756271362304688,-73.987716674804688,40.749710083007812,N,733 +id3328460,1,2016-01-11 06:37:12,2016-01-11 06:48:33,1,-73.959236145019531,40.7601318359375,-73.989997863769531,40.771583557128906,N,681 +id3650880,1,2016-05-22 14:41:05,2016-05-22 14:47:09,1,-73.991111755371094,40.742153167724609,-73.980323791503906,40.736827850341797,N,364 +id0402106,2,2016-03-13 16:33:02,2016-03-13 16:41:15,2,-73.96234130859375,40.779106140136719,-73.956619262695312,40.768890380859375,N,493 +id1202971,1,2016-06-14 14:16:47,2016-06-14 14:23:29,1,-73.963424682617188,40.765918731689453,-73.946273803710938,40.772762298583984,N,402 +id1380401,2,2016-06-24 11:35:44,2016-06-24 11:38:11,5,-73.999771118164063,40.726936340332031,-74.000595092773438,40.732093811035156,N,147 +id2409289,2,2016-03-13 14:49:58,2016-03-13 14:52:50,1,-73.980819702148437,40.779884338378906,-73.979568481445313,40.780342102050781,N,172 +id2067667,2,2016-03-08 17:06:40,2016-03-08 17:13:10,1,-73.977653503417969,40.748031616210937,-73.98468017578125,40.751117706298828,N,390 +id2257104,1,2016-06-02 19:32:47,2016-06-02 19:48:49,1,-73.985214233398437,40.744621276855469,-73.96600341796875,40.761600494384766,N,962 +id3725047,2,2016-06-29 20:30:12,2016-06-29 20:40:33,1,-73.977218627929688,40.7591552734375,-73.9923095703125,40.749668121337891,N,621 +id1405956,2,2016-06-25 09:08:53,2016-06-25 09:17:14,1,-74.000885009765625,40.742019653320312,-73.978713989257812,40.752597808837891,N,501 +id3679166,1,2016-02-11 15:52:29,2016-02-11 16:15:18,1,-73.981643676757813,40.778461456298828,-73.962425231933594,40.757049560546875,N,1369 +id3748663,2,2016-01-18 16:58:27,2016-01-18 17:02:48,1,-73.951950073242188,40.777748107910156,-73.953636169433594,40.770771026611328,N,261 +id3021890,1,2016-05-24 17:47:46,2016-05-24 18:03:43,1,-73.987312316894531,40.721881866455078,-74.007186889648438,40.740787506103516,N,957 +id1425662,1,2016-05-28 12:48:09,2016-05-28 12:53:08,1,-73.99761962890625,40.746639251708984,-73.993850708007813,40.741535186767578,N,299 +id0093416,1,2016-06-11 23:01:54,2016-06-11 23:09:01,1,-73.990745544433594,40.740020751953125,-74.006568908691406,40.721172332763672,N,427 +id1783880,2,2016-01-05 14:33:15,2016-01-05 14:47:26,5,-73.971702575683594,40.795005798339844,-74.005683898925781,40.745704650878906,N,851 +id1762979,1,2016-01-21 10:53:28,2016-01-21 11:11:38,2,-73.956695556640625,40.771064758300781,-73.978721618652344,40.756675720214844,N,1090 +id0536822,1,2016-05-09 13:59:12,2016-05-09 14:09:53,1,-73.981170654296875,40.753398895263672,-73.984634399414062,40.759952545166016,N,641 +id2093500,2,2016-03-04 20:03:17,2016-03-04 20:06:34,1,-73.969711303710938,40.765998840332031,-73.958892822265625,40.77484130859375,N,197 +id2623551,2,2016-05-04 10:27:22,2016-05-04 10:42:49,2,-73.980880737304688,40.755638122558594,-73.988449096679687,40.741020202636719,N,927 +id3946099,2,2016-04-06 22:59:45,2016-04-06 23:04:09,1,-74.002090454101563,40.755603790283203,-73.994384765625,40.745658874511719,N,264 +id1524738,2,2016-02-02 15:32:21,2016-02-02 15:42:59,2,-73.956756591796875,40.7833251953125,-73.960838317871094,40.769878387451172,N,638 +id3344026,1,2016-01-22 08:49:19,2016-01-22 09:02:07,1,-73.978515625,40.753715515136719,-73.980194091796875,40.764301300048828,N,768 +id2842399,2,2016-03-16 22:47:37,2016-03-16 22:57:54,1,-73.982894897460938,40.764385223388672,-73.970314025878906,40.75244140625,N,617 +id0624574,2,2016-04-06 19:48:11,2016-04-06 20:09:49,1,-74.00762939453125,40.711677551269531,-73.987777709960937,40.765209197998047,N,1298 +id0587510,2,2016-03-21 07:28:36,2016-03-21 07:41:13,5,-73.99407958984375,40.751258850097656,-73.957847595214844,40.782211303710938,N,757 +id2448468,2,2016-02-23 11:35:47,2016-02-23 11:41:53,5,-73.97021484375,40.799491882324219,-73.97564697265625,40.792766571044922,N,366 +id2516866,2,2016-02-01 00:43:38,2016-02-01 00:53:10,1,-73.983612060546875,40.743000030517578,-73.947853088378906,40.788795471191406,N,572 +id1279716,2,2016-01-21 10:32:27,2016-01-21 10:47:55,1,-74.001708984375,40.746780395507813,-73.981071472167969,40.747280120849609,N,928 +id1375484,1,2016-01-16 09:14:38,2016-01-16 09:33:49,1,-73.874458312988281,40.774074554443359,-73.984306335449219,40.691570281982422,N,1151 +id0714585,2,2016-02-08 18:26:55,2016-02-08 19:07:08,1,-73.974411010742188,40.758819580078125,-73.875938415527344,40.827133178710937,N,2413 +id3093203,1,2016-05-27 17:10:12,2016-05-27 17:18:30,1,-73.975662231445312,40.757316589355469,-73.962287902832031,40.759326934814453,N,498 +id1171130,2,2016-01-06 20:31:15,2016-01-06 20:50:25,1,-73.998039245605469,40.720298767089844,-73.990669250488281,40.756328582763672,N,1150 +id1930546,2,2016-03-06 13:21:04,2016-03-06 13:27:35,1,-73.991233825683594,40.738536834716797,-73.979232788085938,40.744251251220703,N,391 +id1052930,1,2016-01-16 13:46:07,2016-01-16 13:52:48,1,-73.9765625,40.765193939208984,-73.976715087890625,40.777488708496094,N,401 +id2078759,2,2016-03-17 09:24:47,2016-03-17 09:40:06,1,-74.006278991699219,40.733692169189453,-73.99847412109375,40.755359649658203,N,919 +id0725940,1,2016-01-02 18:38:57,2016-01-02 18:44:25,1,-73.997543334960938,40.736526489257813,-73.991752624511719,40.744438171386719,N,328 +id0262690,1,2016-06-06 20:15:01,2016-06-06 20:35:20,1,-73.988899230957031,40.736576080322266,-73.978065490722656,40.777717590332031,N,1219 +id2044062,2,2016-02-06 16:37:03,2016-02-06 16:55:10,6,-73.973007202148438,40.755401611328125,-74.013999938964844,40.713699340820312,N,1087 +id0215164,2,2016-01-10 03:19:06,2016-01-10 03:25:08,5,-73.985008239746094,40.73223876953125,-73.970077514648438,40.749031066894531,N,362 +id0477640,1,2016-04-12 23:29:54,2016-04-12 23:50:02,1,-73.973678588867187,40.762588500976562,-74.009223937988281,40.708816528320313,N,1208 +id2858357,2,2016-03-19 06:13:43,2016-03-19 06:25:57,2,-73.982032775878906,40.757240295410156,-73.942672729492187,40.789070129394531,N,734 +id3797401,1,2016-04-23 16:39:34,2016-04-23 16:56:16,2,-74.004203796386719,40.752803802490234,-74.016677856445312,40.704662322998047,N,1002 +id1796662,1,2016-02-24 18:12:46,2016-02-24 18:28:58,1,-73.975944519042969,40.751224517822266,-73.983078002929688,40.719104766845703,N,972 +id3675250,2,2016-06-26 09:02:16,2016-06-26 09:16:20,3,-73.974929809570313,40.790489196777344,-73.9444580078125,40.8271484375,N,844 +id1597586,1,2016-06-28 13:56:21,2016-06-28 14:08:50,1,-73.955986022949219,40.778831481933594,-73.963180541992188,40.767677307128906,N,749 +id0340828,2,2016-05-07 17:53:02,2016-05-07 17:57:02,5,-73.9615478515625,40.774349212646484,-73.959709167480469,40.766998291015625,N,240 +id2995522,2,2016-03-23 20:49:55,2016-03-23 20:54:06,5,-73.97747802734375,40.738239288330078,-73.985069274902344,40.742298126220703,N,251 +id1265788,2,2016-01-31 23:02:06,2016-01-31 23:12:35,2,-73.982086181640625,40.773517608642578,-73.952919006347656,40.780021667480469,N,629 +id3046344,2,2016-03-24 13:04:14,2016-03-24 13:11:34,1,-73.963088989257813,40.765659332275391,-73.953521728515625,40.782421112060547,N,440 +id3650943,2,2016-02-14 11:30:26,2016-02-14 11:46:40,4,-73.973739624023438,40.763278961181641,-74.002639770507813,40.724811553955078,N,974 +id2442531,2,2016-03-23 07:33:34,2016-03-23 07:45:33,1,-73.989250183105469,40.774379730224609,-73.978340148925781,40.758659362792969,N,719 +id1673252,1,2016-03-03 12:42:26,2016-03-03 12:59:23,1,-73.981315612792969,40.746067047119141,-73.991188049316406,40.754295349121094,N,1017 +id3169781,1,2016-01-13 23:48:08,2016-01-13 23:53:07,1,-73.983978271484375,40.743423461914063,-73.973831176757813,40.755558013916016,N,299 +id3503112,2,2016-03-16 14:14:02,2016-03-16 14:34:24,1,-73.973808288574219,40.757621765136719,-73.99285888671875,40.726070404052734,N,1222 +id0501081,1,2016-03-21 23:07:03,2016-03-21 23:15:23,2,-73.983451843261719,40.742393493652344,-74.002540588378906,40.735038757324219,N,500 +id1398829,2,2016-04-12 22:25:18,2016-04-12 22:29:48,1,-73.990226745605469,40.756401062011719,-74.001083374023438,40.746776580810547,N,270 +id2412222,1,2016-01-12 09:36:48,2016-01-12 09:44:56,1,-73.965797424316406,40.765342712402344,-73.956405639648437,40.766239166259766,N,488 +id0227827,1,2016-04-30 14:10:16,2016-04-30 14:29:28,1,-73.980522155761719,40.742893218994141,-73.980926513671875,40.778419494628906,N,1152 +id1951726,1,2016-03-03 09:28:37,2016-03-03 09:31:24,1,-73.987495422363281,40.755100250244141,-73.991943359375,40.749202728271484,N,167 +id0927861,1,2016-04-20 01:20:15,2016-04-20 01:29:18,1,-73.99310302734375,40.735866546630859,-73.990234375,40.755901336669922,N,543 +id3264786,2,2016-03-16 19:35:34,2016-03-16 19:48:25,2,-74.007606506347656,40.740859985351563,-74.001609802246094,40.727653503417969,N,771 +id3354082,2,2016-06-03 17:54:38,2016-06-03 18:02:20,1,-73.944633483886719,40.775058746337891,-73.954116821289062,40.767459869384766,N,462 +id2560328,2,2016-02-27 21:43:09,2016-02-27 21:52:00,5,-73.956253051757813,40.767967224121094,-73.981178283691406,40.778385162353516,N,531 +id0616063,2,2016-01-09 13:57:53,2016-01-09 14:04:22,1,-73.978309631347656,40.752201080322266,-73.98162841796875,40.762664794921875,N,389 +id0187879,1,2016-04-08 22:02:36,2016-04-08 22:42:33,3,-73.988182067871094,40.736965179443359,-73.977676391601562,40.5965576171875,N,2397 +id3308464,1,2016-03-31 13:29:22,2016-03-31 13:49:23,1,-73.990554809570313,40.731121063232422,-73.981292724609375,40.751049041748047,N,1201 +id0230557,1,2016-05-14 21:35:30,2016-05-14 21:47:26,3,-73.992317199707031,40.725666046142578,-73.989173889160156,40.718624114990234,N,716 +id2795181,2,2016-01-31 03:34:54,2016-01-31 04:15:54,2,-73.992019653320313,40.721942901611328,-73.895027160644531,40.667800903320313,N,2460 +id2067678,2,2016-06-14 17:30:42,2016-06-14 17:52:49,1,-74.003448486328125,40.749828338623047,-73.961189270019531,40.769298553466797,N,1327 +id2239031,1,2016-04-27 10:09:26,2016-04-27 10:16:26,1,-73.949256896972656,40.773353576660156,-73.956436157226563,40.763256072998047,N,420 +id1438721,2,2016-06-27 10:58:40,2016-06-27 11:06:15,1,-73.96978759765625,40.762619018554687,-73.980911254882812,40.747169494628906,N,455 +id0630594,1,2016-03-14 21:55:20,2016-03-14 22:08:56,1,-73.968536376953125,40.754993438720703,-73.991851806640625,40.715019226074219,N,816 +id2827069,2,2016-02-28 15:39:08,2016-02-28 15:41:16,2,-73.955574035644531,40.776603698730469,-73.947830200195312,40.779598236083984,N,128 +id1671870,1,2016-01-29 20:28:43,2016-01-29 20:35:11,3,-74.005569458007813,40.716880798339844,-74.004898071289063,40.706871032714844,N,388 +id2335025,2,2016-05-13 23:06:59,2016-05-13 23:22:26,2,-73.983283996582031,40.764541625976562,-73.948287963867188,40.774677276611328,N,927 +id1887050,1,2016-04-20 16:53:46,2016-04-20 17:05:36,1,-73.988471984863281,40.723106384277344,-73.974929809570313,40.749668121337891,N,710 +id0710481,1,2016-04-01 12:49:38,2016-04-01 12:58:02,1,-73.973258972167969,40.792751312255859,-73.955780029296875,40.786277770996094,N,504 +id0423024,2,2016-03-30 20:01:46,2016-03-30 20:07:15,1,-73.968498229980469,40.763263702392578,-73.956672668457031,40.766780853271484,N,329 +id1050066,2,2016-05-25 22:03:10,2016-05-25 22:13:21,1,-73.9737548828125,40.750450134277344,-73.986801147460938,40.729915618896484,N,611 +id3839831,1,2016-05-05 13:40:07,2016-05-05 13:43:46,1,-73.959945678710937,40.779438018798828,-73.953125,40.783420562744141,N,219 +id1707516,1,2016-06-11 22:17:07,2016-06-11 22:24:54,1,-73.979446411132813,40.737480163574219,-73.989555358886719,40.735458374023438,N,467 +id0506249,1,2016-04-14 18:14:25,2016-04-14 18:46:49,1,-73.863632202148438,40.769741058349609,-73.948638916015625,40.781505584716797,N,1944 +id2830943,1,2016-06-16 14:48:19,2016-06-16 15:03:54,1,-73.98394775390625,40.754905700683594,-73.984725952148437,40.769161224365234,N,935 +id1280012,1,2016-02-26 16:02:17,2016-02-26 16:11:07,1,-73.955223083496094,40.779327392578125,-73.966636657714844,40.767284393310547,N,530 +id2222721,1,2016-02-28 13:21:35,2016-02-28 13:35:41,1,-73.982048034667969,40.772510528564453,-73.950485229492187,40.793167114257813,N,846 +id2526826,1,2016-03-15 20:44:01,2016-03-15 20:57:47,1,-74.0045166015625,40.733818054199219,-74.007286071777344,40.705104827880859,N,826 +id3544860,1,2016-05-19 19:11:32,2016-05-19 19:22:30,1,-73.990463256835938,40.731521606445313,-74.009223937988281,40.73760986328125,N,658 +id3916251,2,2016-03-06 21:30:34,2016-03-06 21:44:46,3,-73.992713928222656,40.748661041259766,-73.951873779296875,40.776348114013672,N,852 +id3923289,2,2016-02-16 15:37:51,2016-02-16 16:02:21,2,-73.943832397460938,40.747539520263672,-73.95819091796875,40.775791168212891,N,1470 +id1387399,2,2016-04-02 23:45:15,2016-04-02 23:48:01,1,-73.982818603515625,40.738689422607422,-73.972770690917969,40.736721038818359,N,166 +id1416429,1,2016-06-22 14:05:20,2016-06-22 14:13:54,1,-73.974967956542969,40.787887573242188,-73.96014404296875,40.776268005371094,N,514 +id1976060,2,2016-02-12 11:55:46,2016-02-12 12:00:34,1,-74.003761291503906,40.743293762207031,-74.000297546386719,40.738719940185547,N,288 +id3693320,2,2016-06-05 11:06:50,2016-06-05 11:26:36,5,-73.989486694335938,40.747299194335938,-73.983039855957031,40.766635894775391,N,1186 +id2660620,1,2016-02-12 21:21:36,2016-02-12 21:39:52,2,-73.987350463867188,40.733062744140625,-73.951187133789063,40.727611541748047,N,1096 +id3941986,2,2016-02-17 14:04:06,2016-02-17 14:17:35,6,-73.995002746582031,40.750370025634766,-73.988273620605469,40.77484130859375,N,809 +id3065096,2,2016-02-06 18:19:28,2016-02-06 18:34:21,6,-73.970809936523438,40.758827209472656,-73.944427490234375,40.748775482177734,N,893 +id3157198,2,2016-01-25 08:05:06,2016-01-25 08:16:49,2,-73.985252380371094,40.75921630859375,-73.974838256835938,40.763450622558594,N,703 +id2071333,1,2016-01-01 04:04:33,2016-01-01 04:32:08,2,-73.927764892578125,40.692790985107422,-74.011634826660156,40.644096374511719,N,1655 +id2656790,1,2016-04-15 16:18:06,2016-04-15 17:23:29,1,-73.782180786132812,40.644428253173828,-74.007240295410156,40.704921722412109,N,3923 +id3730474,2,2016-02-29 06:11:43,2016-02-29 06:17:10,1,-73.976982116699219,40.741157531738281,-73.991989135742187,40.749469757080078,N,327 +id2511964,2,2016-04-11 14:25:50,2016-04-11 14:38:42,1,-73.984413146972656,40.756999969482422,-73.997604370117187,40.741401672363281,N,772 +id3164617,1,2016-02-27 18:03:22,2016-02-27 18:11:48,1,-73.953765869140625,40.770923614501953,-73.949211120605469,40.789283752441406,N,506 +id1954862,1,2016-06-11 03:40:45,2016-06-11 03:51:29,1,-73.956375122070313,40.763721466064453,-73.970924377441406,40.795684814453125,N,644 +id2662771,1,2016-02-16 09:11:02,2016-02-16 09:25:47,1,-73.981185913085938,40.781242370605469,-73.974624633789063,40.760898590087891,N,885 +id3206922,2,2016-04-24 18:38:34,2016-04-24 18:48:32,1,-73.98516845703125,40.736259460449219,-73.98516845703125,40.736259460449219,N,598 +id3607535,1,2016-02-19 09:27:26,2016-02-19 09:38:43,1,-73.963188171386719,40.762069702148438,-73.971717834472656,40.763603210449219,N,677 +id0126297,2,2016-06-21 21:46:29,2016-06-21 22:05:38,4,-74.016227722167969,40.712200164794922,-73.984161376953125,40.663829803466797,N,1149 +id2889465,2,2016-06-10 21:24:38,2016-06-10 21:32:27,1,-73.951187133789063,40.7860107421875,-73.970840454101563,40.793411254882813,N,469 +id1195941,2,2016-04-12 16:28:57,2016-04-12 16:36:26,1,-73.965667724609375,40.762443542480469,-73.980819702148437,40.745956420898438,N,449 +id3366880,1,2016-04-02 13:26:32,2016-04-02 13:35:30,1,-73.9761962890625,40.739383697509766,-73.983299255371094,40.731754302978516,N,538 +id1717516,2,2016-05-03 15:28:52,2016-05-03 16:20:22,3,-73.789382934570313,40.646999359130859,-74.002670288085937,40.718429565429687,N,3090 +id1284813,1,2016-06-20 13:56:43,2016-06-20 14:11:35,2,-73.984054565429687,40.721652984619141,-74.002342224121094,40.718955993652344,N,892 +id0339353,1,2016-06-25 02:17:40,2016-06-25 02:29:23,1,-73.972412109375,40.761581420898437,-73.990333557128906,40.734672546386719,N,703 +id1938933,1,2016-02-01 10:13:45,2016-02-01 10:25:31,2,-73.990310668945313,40.756664276123047,-74.006317138671875,40.742378234863281,N,706 +id0617940,2,2016-02-21 21:46:05,2016-02-21 21:54:42,2,-73.96807861328125,40.801235198974609,-73.98193359375,40.779495239257813,N,517 +id2063456,2,2016-03-13 00:22:34,2016-03-13 00:30:52,1,-73.995201110839844,40.727451324462891,-74.015556335449219,40.706329345703125,N,498 +id0691620,1,2016-05-18 10:54:50,2016-05-18 11:18:23,1,-73.983451843261719,40.760902404785156,-73.972396850585938,40.781288146972656,N,1413 +id0332533,2,2016-03-21 13:37:44,2016-03-21 13:41:47,1,-73.956680297851563,40.775230407714844,-73.949241638183594,40.775115966796875,N,243 +id3153045,2,2016-03-15 07:50:29,2016-03-15 08:02:03,1,-73.993255615234375,40.736373901367188,-73.990455627441406,40.756221771240234,N,694 +id2882813,2,2016-05-06 17:29:11,2016-05-06 17:37:28,1,-74.001991271972656,40.724433898925781,-74.001358032226563,40.737087249755859,N,497 +id0448481,2,2016-03-13 20:42:36,2016-03-13 20:46:58,1,-73.991767883300781,40.727149963378906,-74.001052856445312,40.731658935546875,N,262 +id3870128,1,2016-06-08 03:01:31,2016-06-08 03:03:23,1,-73.993896484375,40.736213684082031,-74.001548767089844,40.739406585693359,N,112 +id2072385,2,2016-04-23 03:24:36,2016-04-23 03:46:36,1,-73.988227844238281,40.732021331787109,-73.999794006347656,40.657001495361328,N,1320 +id2308994,2,2016-01-16 23:12:41,2016-01-16 23:22:14,1,-73.979499816894531,40.776336669921875,-73.950263977050781,40.78955078125,N,573 +id3778906,1,2016-02-03 19:40:43,2016-02-03 19:44:52,1,-73.993896484375,40.756385803222656,-74.00384521484375,40.753181457519531,N,249 +id0875979,2,2016-06-27 12:39:48,2016-06-27 12:53:29,3,-73.979637145996094,40.760749816894531,-73.97283935546875,40.790611267089844,N,821 +id1481116,2,2016-02-11 22:01:07,2016-02-11 22:21:07,1,-73.983711242675781,40.726898193359375,-73.957275390625,40.722183227539062,N,1200 +id2344112,1,2016-05-20 06:03:23,2016-05-20 06:07:43,1,-73.989990234375,40.755710601806641,-73.978904724121094,40.763866424560547,N,260 +id3176688,2,2016-04-25 20:17:06,2016-04-25 20:24:37,3,-73.977729797363281,40.755146026611328,-73.977790832519531,40.742103576660156,N,451 +id2586149,2,2016-04-26 23:36:16,2016-04-26 23:56:06,1,-73.994239807128906,40.727588653564453,-73.957077026367188,40.732135772705078,N,1190 +id1062842,1,2016-06-05 19:53:02,2016-06-05 20:23:51,2,-73.993873596191406,40.761806488037109,-73.901054382324219,40.739509582519531,N,1849 +id3808524,2,2016-05-22 14:33:27,2016-05-22 14:46:02,1,-73.991622924804687,40.759750366210938,-73.985626220703125,40.747150421142578,N,755 +id2206138,1,2016-01-21 12:07:45,2016-01-21 12:07:51,1,-73.78271484375,40.643966674804688,-73.78271484375,40.643966674804688,N,6 +id0942123,2,2016-03-08 17:17:48,2016-03-08 17:28:40,6,-74.011772155761719,40.703525543212891,-74.00933837890625,40.71527099609375,N,652 +id0500971,1,2016-05-04 17:14:14,2016-05-04 17:28:26,1,-74.0015869140625,40.741062164306641,-73.988273620605469,40.728736877441406,N,852 +id1955631,2,2016-03-04 19:22:38,2016-03-04 19:26:40,1,-74.009956359863281,40.719215393066406,-74.004364013671875,40.721038818359375,N,242 +id1609491,2,2016-01-03 13:49:53,2016-01-03 13:59:23,2,-73.959640502929687,40.763225555419922,-73.982734680175781,40.738716125488281,N,570 +id3510769,2,2016-01-12 06:09:26,2016-01-12 06:17:42,1,-73.975936889648438,40.760173797607422,-73.980690002441406,40.780727386474609,N,496 +id1085846,1,2016-02-03 07:40:19,2016-02-03 07:56:29,1,-73.961990356445313,40.767826080322266,-73.973312377929688,40.789886474609375,N,970 +id0750103,1,2016-01-26 13:14:45,2016-01-26 13:35:46,1,-74.002845764160156,40.730968475341797,-73.984298706054688,40.722461700439453,N,1261 +id1013088,2,2016-02-19 20:46:00,2016-02-19 20:49:05,3,-73.958282470703125,40.772682189941406,-73.949249267578125,40.781791687011719,N,185 +id1475853,1,2016-02-07 12:58:50,2016-02-07 13:05:50,2,-73.976264953613281,40.760044097900391,-73.987129211425781,40.745330810546875,N,420 +id2048243,2,2016-01-28 09:00:12,2016-01-28 09:07:14,1,-73.991180419921875,40.755615234375,-73.982032775878906,40.757656097412109,N,422 +id1060448,1,2016-01-07 21:46:40,2016-01-07 21:57:48,1,-73.970802307128906,40.758655548095703,-73.985275268554688,40.726043701171875,N,668 +id3329980,2,2016-03-19 18:46:45,2016-03-19 18:49:54,1,-73.981803894042969,40.747272491455078,-73.975868225097656,40.741596221923828,N,189 +id0385327,1,2016-06-12 00:55:46,2016-06-12 01:07:03,1,-73.983535766601563,40.738418579101563,-73.993194580078125,40.719940185546875,N,677 +id3186572,1,2016-06-15 09:51:56,2016-06-15 10:08:54,1,-73.969635009765625,40.75408935546875,-73.983001708984375,40.734874725341797,N,1018 +id0403714,1,2016-04-10 04:21:13,2016-04-10 04:57:42,1,-73.989166259765625,40.731605529785156,-73.914749145507813,40.760204315185547,N,2189 +id1098340,1,2016-05-12 18:22:20,2016-05-12 18:28:26,4,-73.961143493652344,40.778480529785156,-73.949554443359375,40.772624969482422,N,366 +id2138598,2,2016-01-20 11:29:40,2016-01-20 11:45:34,6,-73.963813781738281,40.807952880859375,-73.962867736816406,40.774131774902344,N,954 +id1308817,1,2016-02-19 21:50:37,2016-02-19 21:59:29,1,-73.963356018066406,40.774505615234375,-73.965484619140625,40.802982330322266,N,532 +id2461598,2,2016-06-06 23:49:58,2016-06-07 00:02:20,1,-73.9674072265625,40.802833557128906,-73.939468383789063,40.826068878173828,N,742 +id1377230,2,2016-05-26 16:44:27,2016-05-26 16:54:31,3,-73.962158203125,40.805290222167969,-73.977630615234375,40.78411865234375,N,604 +id2298073,1,2016-01-25 10:54:35,2016-01-25 10:59:29,1,-73.954116821289062,40.787460327148437,-73.965141296386719,40.7911376953125,N,294 +id1236370,2,2016-05-21 01:34:50,2016-05-21 01:42:23,1,-73.978530883789063,40.728759765625,-73.987709045410156,40.721359252929688,N,453 +id1000776,1,2016-01-22 08:30:09,2016-01-22 08:34:24,1,-73.983619689941406,40.770221710205078,-73.983078002929688,40.760906219482422,N,255 +id0906502,1,2016-06-11 01:51:01,2016-06-11 01:57:45,1,-73.996368408203125,40.690723419189453,-73.986618041992188,40.703182220458984,N,404 +id3078420,2,2016-05-08 01:30:24,2016-05-08 01:37:23,6,-73.985603332519531,40.735279083251953,-74.003250122070312,40.742660522460938,N,419 +id3176485,2,2016-02-03 06:24:21,2016-02-03 06:31:03,1,-73.984664916992188,40.736545562744141,-73.978553771972656,40.753681182861328,N,402 +id2625908,2,2016-01-19 07:33:20,2016-01-19 07:51:42,2,-74.008140563964844,40.722141265869141,-73.972488403320313,40.759548187255859,N,1102 +id2857295,2,2016-01-28 23:34:01,2016-01-28 23:34:09,6,-73.994422912597656,40.734809875488281,-73.993751525878906,40.73455810546875,N,8 +id0883185,2,2016-06-20 12:59:51,2016-06-20 13:14:02,1,-73.980178833007812,40.745906829833984,-73.994117736816406,40.720127105712891,N,851 +id0058950,2,2016-05-09 13:30:44,2016-05-09 13:42:22,1,-73.980758666992188,40.747920989990234,-73.984130859375,40.750740051269531,N,698 +id2193144,1,2016-05-11 14:59:11,2016-05-11 15:34:03,2,-74.006195068359375,40.711837768554687,-73.989646911621094,40.756172180175781,N,2092 +id2672322,2,2016-06-23 06:20:09,2016-06-23 07:01:18,1,-73.778938293457031,40.647380828857422,-73.986869812011719,40.626003265380859,N,2469 +id1368344,1,2016-06-23 13:52:44,2016-06-23 14:23:48,1,-73.993064880371094,40.752323150634766,-73.967231750488281,40.639873504638672,N,1864 +id1805328,1,2016-02-17 15:10:21,2016-02-17 15:31:03,3,-73.9927978515625,40.754425048828125,-73.963165283203125,40.774253845214844,N,1242 +id1358649,1,2016-01-16 19:51:31,2016-01-16 20:00:12,1,-73.991310119628906,40.760715484619141,-73.978759765625,40.777301788330078,Y,521 +id3906970,2,2016-03-25 20:55:39,2016-03-25 21:03:00,1,-74.005790710449219,40.740238189697266,-73.9986572265625,40.742259979248047,N,441 +id2049599,2,2016-02-08 07:03:01,2016-02-08 07:09:02,1,-73.978767395019531,40.744888305664062,-73.974716186523438,40.755939483642578,N,361 +id0910427,1,2016-06-22 17:57:25,2016-06-22 18:00:42,1,-73.998161315917969,40.732963562011719,-73.992774963378906,40.734001159667969,N,197 +id3378609,1,2016-05-17 16:59:55,2016-05-17 17:11:48,1,-73.990951538085938,40.748134613037109,-73.9783935546875,40.752639770507813,N,713 +id2004186,2,2016-03-29 08:37:19,2016-03-29 08:43:39,4,-73.998527526855469,40.681571960449219,-73.996078491210937,40.694488525390625,N,380 +id1521187,2,2016-01-29 12:26:54,2016-01-29 12:35:21,2,-73.977470397949219,40.764278411865234,-73.979476928710937,40.777740478515625,N,507 +id2862272,2,2016-01-18 11:44:57,2016-01-18 12:08:02,1,-74.013679504394531,40.708061218261719,-73.979972839355469,40.760658264160156,N,1385 +id0327684,2,2016-04-09 20:38:13,2016-04-09 20:49:01,4,-73.973289489746094,40.763698577880859,-73.948814392089844,40.785678863525391,N,648 +id2266840,2,2016-05-29 19:41:22,2016-05-29 19:44:32,2,-73.990028381347656,40.751682281494141,-73.999183654785156,40.750232696533203,N,190 +id2360691,2,2016-02-25 23:10:14,2016-02-25 23:25:43,3,-73.981460571289063,40.773880004882812,-74.006599426269531,40.735809326171875,N,929 +id1147327,2,2016-06-08 07:20:00,2016-06-08 07:34:30,1,-73.945831298828125,40.777782440185547,-74.008041381835938,40.702785491943359,N,870 +id1508947,2,2016-06-09 22:07:39,2016-06-09 22:17:53,1,-73.980232238769531,40.770660400390625,-73.964248657226562,40.760391235351563,N,614 +id3882573,2,2016-04-01 00:43:11,2016-04-01 01:10:36,1,-73.985397338867187,40.760189056396484,-73.957489013671875,40.722259521484375,N,1645 +id3023884,2,2016-03-12 12:56:00,2016-03-12 13:17:46,5,-73.983779907226562,40.725688934326172,-74.007026672363281,40.746448516845703,N,1306 +id0296060,2,2016-06-16 08:07:39,2016-06-16 10:11:39,2,-73.779083251953125,40.647491455078125,-74.006996154785156,40.708522796630859,N,7440 +id2008429,2,2016-05-12 13:54:13,2016-05-12 14:01:31,6,-73.977638244628906,40.758628845214844,-73.988372802734375,40.748020172119141,N,438 +id0587853,1,2016-03-16 18:52:13,2016-03-16 18:59:45,1,-73.957000732421875,40.774879455566406,-73.952400207519531,40.791290283203125,N,452 +id0364870,2,2016-06-30 18:50:47,2016-06-30 19:47:02,5,-73.989486694335938,40.735851287841797,-73.967071533203125,40.803558349609375,N,3375 +id0361480,2,2016-01-18 00:41:37,2016-01-18 00:46:52,2,-73.990341186523438,40.757423400878906,-74.000938415527344,40.742359161376953,N,315 +id0483339,2,2016-01-19 07:36:30,2016-01-19 07:40:59,1,-73.956802368164062,40.775127410888672,-73.947074890136719,40.780086517333984,N,269 +id1758205,2,2016-05-01 21:42:51,2016-05-01 21:47:19,1,-73.97552490234375,40.752689361572266,-73.980636596679688,40.737850189208984,N,268 +id0429416,1,2016-05-03 21:42:46,2016-05-03 22:12:29,1,-74.004402160644531,40.706573486328125,-73.914329528808594,40.760631561279297,N,1783 +id0823715,1,2016-01-07 11:39:13,2016-01-07 11:51:45,1,-73.957611083984375,40.785293579101563,-73.987106323242187,40.770065307617187,N,752 +id1281638,1,2016-03-03 22:54:20,2016-03-03 22:58:01,2,-73.98358154296875,40.765518188476563,-73.9769287109375,40.774971008300781,N,221 +id1652478,2,2016-04-13 16:16:48,2016-04-13 16:43:03,1,-73.970787048339844,40.764320373535156,-73.976585388183594,40.775428771972656,N,1575 +id0845447,2,2016-05-02 23:45:26,2016-05-03 00:21:27,1,-74.011383056640625,40.703239440917969,-73.846336364746094,40.717781066894531,N,2161 +id1971744,1,2016-06-15 00:52:48,2016-06-15 00:59:35,1,-73.968193054199219,40.770656585693359,-73.992347717285156,40.767368316650391,N,407 +id2434491,2,2016-06-08 19:28:29,2016-06-08 20:07:57,2,-73.954231262207031,40.784599304199219,-74.003196716308594,40.73162841796875,N,2368 +id1976080,2,2016-06-04 13:32:04,2016-06-04 13:53:01,6,-73.990043640136719,40.738067626953125,-74.010322570800781,40.718776702880859,N,1257 +id3543398,1,2016-01-21 15:43:53,2016-01-21 15:49:29,1,-73.982490539550781,40.764919281005859,-73.990097045898437,40.751449584960938,N,336 +id1920776,1,2016-05-18 14:28:49,2016-05-18 15:05:39,2,-73.790374755859375,40.644115447998047,-73.93951416015625,40.680713653564453,N,2210 +id2039435,1,2016-03-22 18:09:22,2016-03-22 18:19:35,1,-73.983543395996094,40.773681640625,-73.971092224121094,40.788097381591797,N,613 +id2188291,1,2016-05-16 12:05:12,2016-05-16 12:32:00,1,-74.013687133789063,40.7127685546875,-73.983894348144531,40.752452850341797,N,1608 +id1450731,1,2016-02-14 03:27:07,2016-02-14 03:39:44,1,-73.994346618652344,40.721164703369141,-73.951759338378906,40.727264404296875,N,757 +id1354780,2,2016-02-16 08:44:38,2016-02-16 08:54:15,1,-73.977310180664063,40.757579803466797,-73.982948303222656,40.771705627441406,N,577 +id1542930,2,2016-03-07 14:22:23,2016-03-07 14:29:40,1,-73.959068298339844,40.774761199951172,-73.967613220214844,40.762950897216797,N,437 +id1483489,2,2016-04-10 00:50:22,2016-04-10 00:58:46,1,-73.97845458984375,40.752426147460938,-73.998283386230469,40.733901977539063,N,504 +id1295889,1,2016-05-03 22:43:30,2016-05-03 23:20:11,1,-73.790550231933594,40.644107818603516,-73.988182067871094,40.745670318603516,N,2201 +id3530199,2,2016-06-19 18:33:50,2016-06-19 18:58:53,5,-73.99627685546875,40.720970153808594,-73.980789184570313,40.764919281005859,N,1503 +id2536715,1,2016-02-11 12:26:53,2016-02-11 12:34:06,1,-73.974937438964844,40.790920257568359,-73.981986999511719,40.776939392089844,N,433 +id0532098,1,2016-04-29 23:40:32,2016-04-29 23:46:16,1,-73.9844970703125,40.748306274414063,-73.985404968261719,40.754554748535156,N,344 +id2924789,2,2016-05-13 15:07:45,2016-05-13 15:29:14,5,-73.9810791015625,40.741580963134766,-73.994560241699219,40.748531341552734,N,1289 +id0495612,2,2016-02-06 11:31:45,2016-02-06 11:44:11,5,-73.99224853515625,40.725009918212891,-73.968536376953125,40.758430480957031,N,746 +id0640196,2,2016-01-29 14:43:42,2016-01-29 15:30:40,6,-73.994766235351563,40.740131378173828,-73.87042236328125,40.773426055908203,N,2818 +id2663474,1,2016-06-21 17:44:29,2016-06-21 18:23:09,2,-73.9913330078125,40.754989624023437,-73.924179077148438,40.759586334228516,N,2320 +id2992408,1,2016-04-29 16:09:56,2016-04-29 16:25:04,2,-73.87310791015625,40.774089813232422,-73.890586853027344,40.747455596923828,N,908 +id0771862,1,2016-04-30 22:54:13,2016-04-30 23:05:31,2,-73.974418640136719,40.750278472900391,-73.985580444335937,40.728893280029297,N,678 +id3008164,2,2016-04-05 21:43:07,2016-04-05 21:45:03,1,-74.002296447753906,40.728343963623047,-73.997047424316406,40.736911773681641,N,116 +id1472480,2,2016-05-04 03:08:08,2016-05-04 03:22:57,2,-73.973709106445313,40.763469696044922,-74.013519287109375,40.70220947265625,N,889 +id0470646,1,2016-01-14 17:37:12,2016-01-14 17:48:56,1,-73.964332580566406,40.756237030029297,-73.978324890136719,40.758228302001953,N,704 +id1259507,2,2016-03-26 12:30:37,2016-03-26 12:38:24,1,-73.983650207519531,40.746742248535156,-73.976921081542969,40.764186859130859,N,467 +id3109047,1,2016-03-11 13:57:58,2016-03-11 14:13:17,1,-74.000747680664062,40.725906372070312,-73.977821350097656,40.750541687011719,N,919 +id3031973,2,2016-03-18 07:16:37,2016-03-18 07:20:27,6,-73.954597473144531,40.773128509521484,-73.946739196777344,40.772163391113281,N,230 +id2042948,2,2016-04-12 20:38:11,2016-04-12 20:47:37,6,-73.987228393554688,40.722366333007813,-73.961128234863281,40.712024688720703,N,566 +id1247315,1,2016-05-12 18:37:42,2016-05-12 18:42:29,1,-73.959487915039063,40.771286010742188,-73.958602905273437,40.781185150146484,N,287 +id0270400,1,2016-03-03 09:11:20,2016-03-03 09:21:22,1,-73.95654296875,40.766952514648438,-73.93212890625,40.795078277587891,N,602 +id3589261,2,2016-03-15 18:52:44,2016-03-15 19:36:54,1,-73.863578796386719,40.769737243652344,-73.994735717773437,40.764205932617188,N,2650 +id1250664,1,2016-06-17 09:46:48,2016-06-17 09:52:32,1,-73.998985290527344,40.734447479248047,-73.991020202636719,40.738090515136719,N,344 +id2479320,1,2016-06-20 23:06:18,2016-06-20 23:16:16,1,-73.983497619628906,40.761161804199219,-73.995941162109375,40.735282897949219,N,598 +id1381430,2,2016-05-17 20:51:19,2016-05-17 20:57:32,1,-73.972366333007812,40.762439727783203,-73.981452941894531,40.774398803710937,N,373 +id0800011,2,2016-02-12 07:04:43,2016-02-12 07:10:57,1,-73.974342346191406,40.743301391601563,-73.970588684082031,40.756259918212891,N,374 +id0370868,2,2016-03-12 11:51:44,2016-03-12 12:06:08,6,-73.960403442382812,40.770286560058594,-73.964897155761719,40.8016357421875,N,864 +id2732966,1,2016-06-10 23:05:31,2016-06-10 23:14:05,1,-73.974754333496094,40.791072845458984,-73.986923217773437,40.766189575195313,N,514 +id3698873,2,2016-04-02 10:18:33,2016-04-02 10:22:08,2,-73.950401306152344,40.771583557128906,-73.956283569335938,40.772178649902344,N,215 +id2127501,2,2016-06-13 12:04:31,2016-06-13 12:37:20,5,-73.980461120605469,40.78253173828125,-73.864936828613281,40.770465850830078,N,1969 +id2139138,1,2016-04-05 23:46:31,2016-04-06 00:12:12,2,-73.983161926269531,40.763435363769531,-73.982803344726563,40.70172119140625,N,1541 +id2703415,1,2016-05-06 20:33:33,2016-05-06 20:43:12,1,-74.002830505371094,40.760585784912109,-73.980888366699219,40.774795532226563,N,579 +id3315273,2,2016-02-10 08:15:19,2016-02-10 08:21:03,2,-73.99395751953125,40.751491546630859,-73.984443664550781,40.758251190185547,N,344 +id0060444,2,2016-02-15 19:11:41,2016-02-15 19:24:38,1,-73.975860595703125,40.756828308105469,-73.98748779296875,40.728729248046875,N,777 +id0579932,1,2016-06-24 07:03:04,2016-06-24 07:19:49,1,-73.956039428710937,40.776107788085938,-73.991325378417969,40.750064849853516,N,1005 +id2464159,1,2016-01-12 13:11:43,2016-01-12 13:20:39,1,-73.985397338867187,40.758567810058594,-73.994895935058594,40.750091552734375,N,536 +id0642668,2,2016-04-23 11:18:25,2016-04-23 11:33:03,3,-73.959388732910156,40.799018859863281,-73.952880859375,40.767230987548828,N,878 +id0214036,2,2016-06-22 12:48:55,2016-06-22 12:53:45,1,-73.969749450683594,40.765419006347656,-73.96356201171875,40.767711639404297,N,290 +id1203615,1,2016-05-30 10:37:19,2016-05-30 10:41:15,1,-73.999855041503906,40.743312835693359,-74.001167297363281,40.7318115234375,N,236 +id2098528,2,2016-04-20 11:29:53,2016-04-20 11:50:31,1,-74.002838134765625,40.760410308837891,-73.98272705078125,40.756618499755859,N,1238 +id0857261,1,2016-01-31 07:34:27,2016-01-31 07:42:01,1,-73.990196228027344,40.756217956542969,-73.972099304199219,40.760555267333984,N,454 +id1587936,1,2016-04-02 09:49:24,2016-04-02 10:04:51,1,-73.974510192871094,40.793087005615234,-73.966384887695313,40.764713287353516,N,927 +id2036714,1,2016-02-04 22:30:45,2016-02-04 22:57:47,2,-73.955314636230469,40.772815704345703,-73.973945617675781,40.742496490478516,N,1622 +id3653721,2,2016-06-23 14:43:03,2016-06-23 14:57:17,1,-73.959930419921875,40.766651153564453,-73.983283996582031,40.780239105224609,N,854 +id3603906,1,2016-05-06 19:18:05,2016-05-06 19:22:50,1,-73.957901000976563,40.765464782714844,-73.946456909179688,40.781410217285156,N,285 +id2707560,1,2016-05-18 03:34:10,2016-05-18 03:36:19,1,-73.9715576171875,40.75714111328125,-73.977821350097656,40.746498107910156,N,129 +id0669470,1,2016-05-03 23:33:02,2016-05-04 00:20:12,2,-74.001228332519531,40.746322631835938,-73.921714782714844,40.703163146972656,N,2830 +id3861044,1,2016-06-01 13:17:54,2016-06-01 13:20:17,1,-73.972747802734375,40.764743804931641,-73.975044250488281,40.761161804199219,N,143 +id3733782,1,2016-04-02 13:06:00,2016-04-02 13:10:34,1,-73.979545593261719,40.777824401855469,-73.987701416015625,40.779449462890625,N,274 +id1897612,2,2016-04-20 08:57:17,2016-04-20 09:01:42,1,-73.987289428710938,40.733409881591797,-73.990989685058594,40.726741790771484,N,265 +id3649295,1,2016-05-21 19:05:56,2016-05-21 19:29:59,1,-73.974784851074219,40.758350372314453,-74.002799987792969,40.760562896728516,N,1443 +id0653946,1,2016-03-26 19:46:28,2016-03-26 19:54:18,1,-73.980941772460938,40.764381408691406,-73.977752685546875,40.753288269042969,N,470 +id3627575,2,2016-06-05 20:35:03,2016-06-05 20:51:41,2,-73.966850280761719,40.757251739501953,-73.906486511230469,40.75946044921875,N,998 +id0614319,1,2016-02-10 08:03:28,2016-02-10 08:13:05,2,-73.956108093261719,40.780025482177734,-73.972869873046875,40.790092468261719,N,577 +id3921410,2,2016-05-13 05:03:40,2016-05-13 05:24:30,2,-73.981163024902344,40.741535186767578,-73.802581787109375,40.707298278808594,N,1250 +id1122181,2,2016-04-08 13:13:09,2016-04-08 13:24:09,2,-73.996017456054687,40.740268707275391,-73.987007141113281,40.743778228759766,N,660 +id2775134,1,2016-05-16 02:11:27,2016-05-16 02:24:03,1,-73.996994018554688,40.722206115722656,-73.978057861328125,40.671249389648438,N,756 +id3462172,2,2016-04-20 13:22:31,2016-04-20 13:35:53,4,-73.987991333007812,40.752090454101563,-73.982467651367188,40.768310546875,N,802 +id1402939,2,2016-04-11 19:59:06,2016-04-11 20:46:52,1,-73.993942260742188,40.74639892578125,-73.907928466796875,40.849708557128906,N,2866 +id3140282,2,2016-03-24 11:54:54,2016-03-24 12:19:56,2,-74.013580322265625,40.716526031494141,-73.977134704589844,40.746337890625,N,1502 +id1222663,1,2016-06-25 17:53:27,2016-06-25 18:08:25,1,-73.985130310058594,40.763446807861328,-73.952064514160156,40.781211853027344,N,898 +id3935792,2,2016-02-07 21:00:15,2016-02-07 21:24:22,1,-73.9959716796875,40.726520538330078,-73.952072143554688,40.791385650634766,N,1447 +id2557605,2,2016-03-15 19:33:24,2016-03-15 19:42:16,2,-73.972023010253906,40.759788513183594,-73.955528259277344,40.782386779785156,N,532 +id1572910,2,2016-05-07 14:52:39,2016-05-07 15:23:15,6,-74.01544189453125,40.711795806884766,-73.982940673828125,40.773246765136719,N,1836 +id0793966,1,2016-01-31 08:57:16,2016-01-31 09:03:12,2,-73.982231140136719,40.740196228027344,-73.991462707519531,40.743118286132812,N,356 +id3662314,1,2016-04-28 06:52:29,2016-04-28 07:08:51,1,-73.989227294921875,40.769462585449219,-73.998046875,40.722675323486328,N,982 +id0891853,1,2016-04-30 11:31:06,2016-04-30 11:51:53,1,-73.998321533203125,40.74530029296875,-73.963699340820313,40.808071136474609,N,1247 +id3746338,2,2016-01-03 10:04:05,2016-01-03 10:09:32,2,-74.004020690917969,40.725391387939453,-73.986221313476563,40.731109619140625,N,327 +id3067763,2,2016-06-08 16:55:44,2016-06-08 16:59:55,1,-74.008171081542969,40.731010437011719,-73.996711730957031,40.735439300537109,N,251 +id1641045,1,2016-04-23 12:29:15,2016-04-23 12:31:37,1,-73.98724365234375,40.770698547363281,-73.98016357421875,40.774810791015625,N,142 +id2804643,1,2016-03-06 02:57:48,2016-03-06 03:15:29,1,-73.985176086425781,40.727642059326172,-73.987388610839844,40.770969390869141,N,1061 +id3893473,2,2016-06-07 23:10:18,2016-06-07 23:13:46,1,-73.9854736328125,40.735530853271484,-73.977897644042969,40.744029998779297,N,208 +id2330639,1,2016-01-27 08:14:26,2016-01-27 08:21:37,1,-73.99102783203125,40.733345031738281,-73.9998779296875,40.721916198730469,N,431 +id2376983,1,2016-01-30 00:20:47,2016-01-30 00:39:33,1,-74.009063720703125,40.710758209228516,-73.983047485351563,40.761249542236328,N,1126 +id3374937,1,2016-03-06 21:37:22,2016-03-06 21:48:11,1,-73.966697692871094,40.794124603271484,-73.941162109375,40.829181671142578,N,649 +id3176832,2,2016-05-14 11:56:10,2016-05-14 12:03:49,2,-73.969764709472656,40.797405242919922,-73.962074279785156,40.801448822021484,N,459 +id2793950,2,2016-05-22 12:44:23,2016-05-22 13:00:57,2,-73.977668762207031,40.783805847167969,-73.961112976074219,40.770008087158203,N,994 +id1761290,1,2016-03-04 14:16:45,2016-03-04 14:30:56,1,-73.971580505371094,40.760292053222656,-73.982719421386719,40.754524230957031,N,851 +id2342195,2,2016-02-28 13:14:26,2016-02-28 13:19:00,5,-73.96630859375,40.765190124511719,-73.97564697265625,40.752578735351563,N,274 +id1199515,1,2016-02-20 19:32:06,2016-02-20 19:46:17,2,-74.0101318359375,40.714176177978516,-73.999290466308594,40.727512359619141,N,851 +id2576315,2,2016-04-03 00:47:18,2016-04-03 00:54:01,3,-74.006271362304688,40.734268188476563,-74.000762939453125,40.727500915527344,N,403 +id1588809,2,2016-06-08 14:03:25,2016-06-08 14:19:48,1,-73.98223876953125,40.778770446777344,-73.95111083984375,40.827831268310547,N,983 +id3755005,1,2016-02-08 00:51:04,2016-02-08 01:09:18,1,-74.003875732421875,40.737861633300781,-73.960151672363281,40.814918518066406,N,1094 +id2699976,1,2016-04-20 07:44:09,2016-04-20 07:49:36,1,-73.991287231445313,40.765182495117188,-73.980751037597656,40.774448394775391,N,327 +id0914756,2,2016-03-21 15:30:16,2016-03-21 15:36:16,6,-73.983894348144531,40.755638122558594,-73.975341796875,40.765384674072266,N,360 +id1215541,1,2016-06-19 03:46:01,2016-06-19 04:01:50,1,-73.989875793457031,40.719139099121094,-73.940933227539063,40.682140350341797,N,949 +id1159603,2,2016-03-07 05:48:41,2016-03-07 05:53:37,1,-73.969474792480469,40.757408142089844,-73.960479736328125,40.773956298828125,N,296 +id1518609,1,2016-06-24 19:17:22,2016-06-24 19:42:31,1,-73.996513366699219,40.723457336425781,-73.978294372558594,40.755252838134766,N,1509 +id1223496,2,2016-01-29 20:41:10,2016-01-29 20:48:28,1,-73.954597473144531,40.763980865478516,-73.967941284179687,40.762680053710937,N,438 +id0082195,2,2016-02-15 03:43:22,2016-02-15 03:51:11,6,-74.004020690917969,40.742099761962891,-73.992652893066406,40.756710052490234,N,469 +id3896470,1,2016-02-07 23:32:18,2016-02-07 23:35:42,1,-73.991447448730469,40.72698974609375,-73.990165710449219,40.734600067138672,N,204 +id0431342,2,2016-01-26 07:39:55,2016-01-26 08:18:42,1,-74.008323669433594,40.721549987792969,-73.946083068847656,40.776561737060547,N,2327 +id2628439,2,2016-04-20 06:27:40,2016-04-20 06:34:31,1,-73.982147216796875,40.762191772460937,-73.97247314453125,40.754837036132813,N,411 +id1192025,2,2016-02-16 22:12:48,2016-02-16 22:22:49,5,-73.975173950195313,40.749988555908203,-73.955093383789063,40.741523742675781,N,601 +id1631608,2,2016-03-09 16:17:38,2016-03-09 16:28:25,1,-73.973587036132812,40.761421203613281,-73.9913330078125,40.750370025634766,N,647 +id1821369,2,2016-05-03 13:25:56,2016-05-03 13:39:20,5,-73.975028991699219,40.764389038085937,-73.961662292480469,40.765350341796875,N,804 +id1062003,1,2016-06-27 09:27:19,2016-06-27 09:50:34,1,-73.789627075195313,40.643486022949219,-73.869239807128906,40.755458831787109,N,1395 +id0871768,2,2016-03-14 04:56:38,2016-03-14 05:15:52,1,-73.967826843261719,40.787288665771484,-73.865531921386719,40.770858764648438,N,1154 +id3418639,1,2016-06-21 16:24:24,2016-06-21 16:32:15,1,-73.954551696777344,40.765853881835938,-73.953140258789063,40.785720825195313,N,471 +id1394171,2,2016-06-28 23:27:33,2016-06-28 23:32:34,6,-73.954978942871094,40.765800476074219,-73.967201232910156,40.756988525390625,N,301 +id3295731,2,2016-05-23 01:11:23,2016-05-23 01:16:17,1,-73.925010681152344,40.698150634765625,-73.905853271484375,40.689239501953125,N,294 +id2335600,1,2016-03-03 13:04:40,2016-03-03 13:10:27,1,-73.957893371582031,40.773914337158203,-73.959121704101563,40.781883239746094,N,347 +id2404839,1,2016-05-13 07:55:52,2016-05-13 08:29:26,1,-73.955665588378906,40.782180786132812,-73.992279052734375,40.754997253417969,N,2014 +id0353273,2,2016-03-12 21:23:11,2016-03-12 21:30:10,1,-74.006736755371094,40.735908508300781,-74.001190185546875,40.731773376464844,N,419 +id3719344,1,2016-02-27 18:46:04,2016-02-27 18:51:47,1,-73.972427368164062,40.7530517578125,-73.966499328613281,40.761440277099609,N,343 +id1107589,1,2016-03-12 20:17:35,2016-03-12 20:36:02,1,-74.004226684570313,40.742229461669922,-74.004257202148438,40.707366943359375,N,1107 +id0702225,2,2016-04-16 03:37:31,2016-04-16 03:50:10,1,-73.97625732421875,40.763847351074219,-73.93212890625,40.759777069091797,N,759 +id0453535,1,2016-06-28 05:11:39,2016-06-28 05:40:41,2,-73.780494689941406,40.646141052246094,-73.979057312011719,40.772159576416016,N,1742 +id1824554,2,2016-03-17 18:44:43,2016-03-17 18:47:20,1,-73.986213684082031,40.730350494384766,-73.989852905273438,40.73455810546875,N,157 +id0666946,2,2016-05-21 01:30:57,2016-05-21 02:12:25,6,-74.005363464355469,40.709209442138672,-73.869438171386719,40.860198974609375,N,2488 +id0832695,2,2016-06-24 07:18:11,2016-06-24 07:29:56,2,-73.957649230957031,40.765998840332031,-73.979728698730469,40.749629974365234,N,705 +id1994155,1,2016-06-22 11:59:59,2016-06-22 12:12:52,1,-74.001617431640625,40.756515502929687,-73.9840087890625,40.761631011962891,N,773 +id3475521,1,2016-05-02 08:31:24,2016-05-02 08:35:16,1,-73.975532531738281,40.75225830078125,-73.982307434082031,40.748477935791016,N,232 +id1723444,2,2016-04-08 15:37:27,2016-04-08 15:52:05,1,-73.989753723144531,40.767570495605469,-73.970649719238281,40.79376220703125,N,878 +id2626700,1,2016-01-01 12:14:00,2016-01-01 12:23:17,1,-74.00140380859375,40.73126220703125,-73.980972290039063,40.744640350341797,N,557 +id3311992,2,2016-04-17 04:13:19,2016-04-17 04:28:19,1,-73.97119140625,40.762821197509766,-74.013908386230469,40.709575653076172,N,900 +id3930440,1,2016-06-01 14:29:00,2016-06-01 15:44:28,1,-73.987869262695312,40.748218536376953,-73.783760070800781,40.643600463867188,N,4528 +id3094932,1,2016-01-14 13:51:45,2016-01-14 14:04:54,1,-73.960830688476562,40.770000457763672,-73.974151611328125,40.762802124023438,N,789 +id0267131,1,2016-06-25 11:07:55,2016-06-25 11:25:44,3,-73.976097106933594,40.776096343994141,-73.946907043457031,40.82171630859375,N,1069 +id3733470,2,2016-03-01 06:10:14,2016-03-01 06:15:06,2,-73.972686767578125,40.743518829345703,-73.977142333984375,40.751949310302734,N,292 +id1456189,1,2016-01-05 23:11:16,2016-01-05 23:14:33,1,-73.982414245605469,40.768222808837891,-73.978813171386719,40.762355804443359,N,197 +id0618149,1,2016-05-18 18:03:38,2016-05-18 18:08:17,1,-74.001548767089844,40.741226196289063,-73.996566772460938,40.745479583740234,N,279 +id3148819,1,2016-06-29 23:29:00,2016-06-29 23:58:40,1,-73.981674194335937,40.761859893798828,-73.958595275878906,40.712890625,N,1780 +id1301899,2,2016-04-22 11:04:50,2016-04-22 11:50:26,3,-73.781806945800781,40.644805908203125,-73.956108093261719,40.778648376464844,N,2736 +id3160047,2,2016-03-27 10:27:32,2016-03-27 10:37:22,1,-74.011306762695313,40.714797973632812,-73.999641418457031,40.734020233154297,N,590 +id1936721,1,2016-03-29 16:15:01,2016-03-29 16:22:26,1,-74.00030517578125,40.726341247558594,-74.003623962402344,40.717437744140625,N,445 +id3230570,2,2016-05-17 14:50:26,2016-05-17 15:06:35,2,-73.994674682617188,40.750576019287109,-73.974983215332031,40.755237579345703,N,969 +id0949418,1,2016-01-10 13:01:35,2016-01-10 13:05:45,1,-73.987113952636719,40.776039123535156,-73.982673645019531,40.767036437988281,N,250 +id3006041,2,2016-05-09 19:02:41,2016-05-09 19:14:28,1,-73.973838806152344,40.759780883789063,-73.9586181640625,40.777969360351563,N,707 +id2102197,1,2016-03-16 15:41:59,2016-03-16 15:49:55,3,-74.008537292480469,40.719760894775391,-74.001625061035156,40.740940093994141,N,476 +id3174610,1,2016-03-06 09:30:47,2016-03-06 09:35:43,1,-73.99224853515625,40.749366760253906,-74.0010986328125,40.756278991699219,N,296 +id3644667,2,2016-05-02 20:50:47,2016-05-02 21:00:25,1,-73.979766845703125,40.761508941650391,-73.999397277832031,40.744049072265625,N,578 +id3117617,2,2016-03-04 03:06:21,2016-03-04 03:15:10,1,-73.960174560546875,40.762012481689453,-73.98516845703125,40.761325836181641,N,529 +id1111302,1,2016-06-03 12:56:24,2016-06-03 13:10:42,1,-73.999649047851563,40.733356475830078,-73.9761962890625,40.748245239257813,N,858 +id1456867,1,2016-04-05 06:26:33,2016-04-05 06:29:27,1,-73.978134155273438,40.749553680419922,-73.981460571289063,40.754589080810547,N,174 +id0061544,1,2016-06-10 15:39:58,2016-06-10 16:33:25,1,-73.973609924316406,40.745750427246094,-73.790199279785156,40.646903991699219,N,3207 +id3583075,1,2016-05-25 08:12:01,2016-05-25 08:20:40,1,-73.981864929199219,40.770458221435547,-73.984779357910156,40.760692596435547,N,519 +id2690781,1,2016-02-10 23:48:34,2016-02-10 23:56:40,1,-73.990615844726563,40.760913848876953,-73.979743957519531,40.751960754394531,N,486 +id2349636,1,2016-04-18 06:50:28,2016-04-18 06:54:40,1,-73.954620361328125,40.773941040039063,-73.947463989257813,40.782913208007813,N,252 +id1323112,2,2016-05-08 15:22:59,2016-05-08 15:29:09,5,-73.994880676269531,40.7447509765625,-73.997726440429687,40.749904632568359,N,370 +id1075547,2,2016-03-03 20:30:33,2016-03-03 20:44:55,1,-74.013198852539063,40.705848693847656,-73.983428955078125,40.694400787353516,N,862 +id0410049,2,2016-01-01 00:42:13,2016-01-01 01:03:07,1,-73.98858642578125,40.745151519775391,-73.973320007324219,40.784481048583984,N,1254 +id1457215,1,2016-03-22 22:42:00,2016-03-22 22:55:37,1,-73.985641479492188,40.762920379638672,-73.955734252929687,40.805515289306641,N,817 +id3087116,1,2016-05-24 10:34:37,2016-05-24 10:45:06,1,-73.97845458984375,40.745014190673828,-73.972938537597656,40.753753662109375,N,629 +id0414537,1,2016-05-21 11:11:15,2016-05-21 11:25:14,2,-73.977554321289063,40.746627807617188,-73.946640014648438,40.780654907226563,N,839 +id1472234,2,2016-01-14 21:16:45,2016-01-14 21:22:44,6,-73.989837646484375,40.729480743408203,-73.976959228515625,40.746929168701172,N,359 +id2285137,2,2016-02-20 22:42:26,2016-02-20 22:49:50,1,-73.953041076660156,40.782791137695312,-73.9718017578125,40.786918640136719,N,444 +id0852364,2,2016-01-20 13:43:58,2016-01-20 13:50:48,2,-73.95294189453125,40.786270141601562,-73.965568542480469,40.774448394775391,N,410 +id1606138,2,2016-04-27 15:14:54,2016-04-27 15:15:01,2,-74.177780151367188,40.690280914306641,-74.177780151367188,40.690280914306641,N,7 +id2185841,2,2016-06-04 13:05:02,2016-06-04 13:11:48,1,-73.982498168945313,40.775180816650391,-73.972640991210937,40.782218933105469,N,406 +id0576668,1,2016-05-08 12:43:34,2016-05-08 12:51:33,1,-73.958198547363281,40.784751892089844,-73.974990844726563,40.789756774902344,N,479 +id2591887,2,2016-05-23 19:46:09,2016-05-23 19:57:25,2,-74.009895324707031,40.721530914306641,-73.991851806640625,40.746551513671875,N,676 +id0450001,2,2016-05-07 03:51:02,2016-05-07 03:57:09,3,-73.986213684082031,40.751651763916016,-73.992462158203125,40.757480621337891,N,367 +id3975967,2,2016-06-08 14:40:46,2016-06-08 15:55:13,1,-73.789352416992188,40.643436431884766,-73.991836547851563,40.746665954589844,N,4467 +id1049392,1,2016-03-09 09:12:00,2016-03-09 09:32:28,1,-73.988723754882813,40.773998260498047,-73.98712158203125,40.754295349121094,N,1228 +id3824422,2,2016-06-22 18:03:05,2016-06-22 18:17:04,1,-73.992828369140625,40.733909606933594,-74.004714965820313,40.751289367675781,N,839 +id2830956,1,2016-05-21 08:14:48,2016-05-21 08:20:27,1,-73.996963500976563,40.757663726806641,-73.980857849121094,40.761215209960938,N,339 +id2490167,2,2016-02-13 17:06:57,2016-02-13 17:39:29,1,-74.006919860839844,40.711795806884766,-73.9949951171875,40.751857757568359,N,1952 +id3280681,1,2016-06-22 08:15:24,2016-06-22 08:29:12,1,-73.984077453613281,40.738269805908203,-73.97235107421875,40.758945465087891,N,828 +id2518970,1,2016-05-12 10:29:28,2016-05-12 10:53:11,2,-73.989143371582031,40.740570068359375,-73.969100952148438,40.762355804443359,N,1423 +id2310167,1,2016-01-28 21:31:02,2016-01-28 21:55:05,1,-74.003128051757812,40.734519958496094,-73.974006652832031,40.650123596191406,N,1443 +id2764773,2,2016-03-12 21:55:55,2016-03-12 22:07:19,2,-73.990150451660156,40.756000518798828,-73.977508544921875,40.750770568847656,N,684 +id2164655,2,2016-04-22 11:56:06,2016-04-22 12:10:55,5,-74.002059936523438,40.741188049316406,-73.992355346679687,40.732166290283203,N,889 +id0104625,1,2016-04-03 15:45:07,2016-04-03 16:08:51,3,-74.00457763671875,40.741947174072266,-73.9752197265625,40.777690887451172,N,1424 +id2796547,2,2016-04-12 20:58:00,2016-04-12 21:07:08,5,-73.984527587890625,40.760265350341797,-73.987594604492187,40.745761871337891,N,548 +id0931793,2,2016-04-12 20:43:31,2016-04-12 20:51:29,1,-73.995330810546875,40.756900787353516,-73.986106872558594,40.777488708496094,N,478 +id1236453,2,2016-04-29 08:10:42,2016-04-29 08:32:31,5,-73.999786376953125,40.735240936279297,-74.013381958007813,40.715099334716797,N,1309 +id3004650,1,2016-06-19 20:47:45,2016-06-19 20:49:29,1,-73.982681274414063,40.739734649658203,-73.979484558105469,40.741386413574219,N,104 +id1692658,2,2016-05-05 10:10:28,2016-05-05 10:14:00,1,-73.987899780273437,40.719081878662109,-73.983871459960937,40.725578308105469,N,212 +id1326325,1,2016-01-29 15:46:42,2016-01-29 15:50:15,1,-73.985069274902344,40.741985321044922,-73.977447509765625,40.738945007324219,N,213 +id0496326,2,2016-01-10 21:37:28,2016-01-10 21:57:11,1,-73.86279296875,40.768478393554688,-73.99725341796875,40.691947937011719,N,1183 +id3127775,1,2016-05-10 20:32:15,2016-05-10 20:33:29,1,-73.97589111328125,40.760143280029297,-73.978683471679688,40.757213592529297,N,74 +id2531587,2,2016-04-10 01:49:49,2016-04-10 01:58:00,1,-73.995040893554687,40.743778228759766,-73.967971801757813,40.768379211425781,N,491 +id3490014,2,2016-04-21 20:23:44,2016-04-21 20:37:36,1,-73.977218627929688,40.763900756835938,-73.956657409667969,40.785739898681641,N,832 +id0477486,1,2016-04-29 11:35:11,2016-04-29 11:59:29,1,-73.925285339355469,40.86822509765625,-73.965003967285156,40.759838104248047,N,1458 +id0475951,2,2016-04-04 07:22:22,2016-04-04 07:29:54,5,-73.973289489746094,40.743690490722656,-73.975410461425781,40.755165100097656,N,452 +id3581277,1,2016-05-17 19:57:30,2016-05-17 20:17:36,1,-73.788856506347656,40.641845703125,-73.896827697753906,40.642696380615234,N,1206 +id0354480,1,2016-06-23 20:48:29,2016-06-23 21:01:52,1,-73.982429504394531,40.742599487304687,-73.954780578613281,40.777721405029297,N,803 +id1814843,2,2016-03-28 08:17:00,2016-03-28 08:33:31,1,-73.986930847167969,40.768459320068359,-74.008186340332031,40.744888305664062,N,991 +id3303635,1,2016-02-19 05:56:16,2016-02-19 06:07:27,1,-73.943519592285156,40.799167633056641,-73.979827880859375,40.781333923339844,N,671 +id2883053,2,2016-06-25 20:02:25,2016-06-25 20:20:36,2,-73.990837097167969,40.75244140625,-73.955543518066406,40.769405364990234,N,1091 +id3419960,1,2016-01-03 14:12:55,2016-01-03 14:18:42,1,-73.962882995605469,40.810752868652344,-73.97161865234375,40.794837951660156,N,347 +id0159314,2,2016-05-07 21:55:20,2016-05-07 22:03:36,1,-73.999526977539062,40.761310577392578,-74.0052490234375,40.740688323974609,N,496 +id1109160,2,2016-01-07 22:00:19,2016-01-07 22:03:42,1,-73.987342834472656,40.724784851074219,-73.979034423828125,40.724948883056641,N,203 +id3967485,2,2016-04-05 00:38:48,2016-04-05 00:44:45,1,-73.9619140625,40.762691497802734,-73.957504272460938,40.779743194580078,N,357 +id0074760,2,2016-06-21 21:50:45,2016-06-21 22:08:07,1,-73.988189697265625,40.72808837890625,-73.990669250488281,40.755908966064453,N,1042 +id1503951,2,2016-04-11 19:46:52,2016-04-11 19:52:52,2,-73.981529235839844,40.755699157714844,-73.975540161132813,40.751899719238281,N,360 +id2338490,1,2016-02-28 07:26:18,2016-02-28 07:32:41,1,-73.984298706054688,40.746562957763672,-73.972267150878906,40.746475219726563,N,383 +id0299540,1,2016-01-28 19:03:18,2016-01-28 19:12:41,1,-73.99755859375,40.721248626708984,-73.965782165527344,40.710529327392578,N,563 +id2627508,2,2016-03-28 11:23:15,2016-03-28 11:27:08,2,-73.974922180175781,40.741718292236328,-73.976310729980469,40.735988616943359,N,233 +id0701022,2,2016-04-22 19:20:54,2016-04-22 19:32:03,1,-73.991256713867188,40.722980499267578,-73.989906311035156,40.729259490966797,N,669 +id0567575,2,2016-04-03 01:10:51,2016-04-03 01:31:13,1,-73.986747741699219,40.729793548583984,-73.927696228027344,40.764328002929688,N,1222 +id0210376,1,2016-05-10 14:08:36,2016-05-10 14:08:42,1,-73.796432495117188,40.645236968994141,-73.797706604003906,40.645401000976563,N,6 +id1046738,2,2016-01-13 09:39:54,2016-01-13 09:47:31,6,-74.015464782714844,40.709995269775391,-74.009208679199219,40.731246948242187,N,457 +id1853630,2,2016-06-04 23:16:27,2016-06-04 23:36:49,2,-73.994636535644531,40.750514984130859,-73.953269958496094,40.782611846923828,N,1222 +id2887072,2,2016-04-19 14:40:45,2016-04-19 14:43:16,2,-73.953681945800781,40.775173187255859,-73.958168029785156,40.768943786621094,N,151 +id0940860,2,2016-06-29 10:31:21,2016-06-29 10:35:15,3,-73.969612121582031,40.785438537597656,-73.962837219238281,40.778388977050781,N,234 +id0558759,2,2016-02-27 01:32:59,2016-02-27 01:41:35,1,-74.002975463867188,40.734100341796875,-73.993194580078125,40.75640869140625,N,516 +id0686078,1,2016-03-25 00:46:20,2016-03-25 01:04:10,1,-73.985321044921875,40.769035339355469,-73.922721862792969,40.762500762939453,N,1070 +id0818284,1,2016-02-16 05:24:44,2016-02-16 05:28:22,1,-73.985847473144531,40.684989929199219,-73.991111755371094,40.688610076904297,N,218 +id0838546,1,2016-01-17 00:47:33,2016-01-17 00:58:56,1,-73.991867065429688,40.722515106201172,-73.958061218261719,40.710910797119141,N,683 +id2270672,1,2016-05-11 19:13:52,2016-05-11 19:43:28,2,-73.992530822753906,40.726669311523438,-73.986396789550781,40.760658264160156,N,1776 +id0699864,1,2016-06-29 20:23:55,2016-06-29 20:36:51,1,-74.015861511230469,40.711212158203125,-73.991195678710938,40.728015899658203,N,776 +id2668919,1,2016-01-20 08:53:06,2016-01-20 09:25:28,1,-73.992385864257813,40.691841125488281,-74.001075744628906,40.731487274169922,N,1942 +id0293885,1,2016-04-13 09:22:02,2016-04-13 09:25:56,1,-73.977378845214844,40.753208160400391,-73.983642578125,40.749366760253906,N,234 +id3699233,1,2016-01-08 00:21:03,2016-01-08 00:27:38,1,-73.962806701660156,40.766399383544922,-73.979377746582031,40.765243530273437,N,395 +id0731601,2,2016-03-17 23:33:14,2016-03-17 23:51:39,2,-73.952377319335938,40.777122497558594,-73.991683959960937,40.727054595947266,N,1105 +id3744996,1,2016-02-12 00:17:14,2016-02-12 00:22:06,1,-73.940711975097656,40.839881896972656,-73.950950622558594,40.825897216796875,N,292 +id3232709,1,2016-02-22 08:04:43,2016-02-22 08:33:11,1,-73.970176696777344,40.794204711914063,-73.966964721679688,40.764255523681641,N,1708 +id2067226,1,2016-01-12 16:40:09,2016-01-12 16:49:17,1,-73.973648071289063,40.74786376953125,-73.992782592773438,40.726871490478516,N,548 +id3736072,2,2016-05-16 19:18:26,2016-05-16 19:36:36,1,-73.976860046386719,40.750129699707031,-74.003013610839844,40.729648590087891,N,1090 +id1599881,1,2016-02-19 07:00:43,2016-02-19 07:06:35,1,-73.987815856933594,40.764968872070313,-73.97735595703125,40.758354187011719,N,352 +id1493339,2,2016-04-24 02:17:07,2016-04-24 02:28:34,2,-73.983543395996094,40.73944091796875,-74.00634765625,40.706565856933594,N,687 +id2777508,1,2016-05-31 19:14:06,2016-05-31 19:23:40,1,-73.978065490722656,40.751560211181641,-73.965812683105469,40.762184143066406,N,574 +id0785342,2,2016-04-02 01:12:11,2016-04-02 01:18:46,1,-74.002861022949219,40.739795684814453,-73.988418579101563,40.748706817626953,N,395 +id3708938,1,2016-05-05 07:33:48,2016-05-05 07:49:34,1,-74.007148742675781,40.715850830078125,-73.983253479003906,40.756069183349609,N,946 +id0340228,2,2016-04-11 21:47:31,2016-04-11 22:03:09,1,-73.982711791992188,40.731098175048828,-73.940940856933594,40.711189270019531,N,938 +id2193596,1,2016-03-07 13:47:31,2016-03-07 13:55:08,1,-73.994590759277344,40.728115081787109,-73.9888916015625,40.734088897705078,N,457 +id0378219,1,2016-04-15 00:00:22,2016-04-15 00:05:04,3,-73.99322509765625,40.719272613525391,-74.000907897949219,40.720138549804687,N,282 +id0541099,2,2016-04-24 13:33:38,2016-04-24 13:39:34,5,-73.968978881835938,40.764408111572266,-73.953857421875,40.779239654541016,N,356 +id1518275,2,2016-01-14 17:28:22,2016-01-14 17:31:59,1,-73.969520568847656,40.760417938232422,-73.974853515625,40.752632141113281,N,217 +id2639059,1,2016-04-13 19:43:51,2016-04-13 19:49:18,1,-73.982521057128906,40.742542266845703,-73.989738464355469,40.735713958740234,N,327 +id2301013,1,2016-06-18 15:21:56,2016-06-18 15:37:42,1,-73.968589782714844,40.754608154296875,-73.978324890136719,40.772441864013672,N,946 +id0903147,1,2016-05-20 18:12:02,2016-05-20 18:38:54,2,-73.975608825683594,40.760631561279297,-73.999107360839844,40.738372802734375,N,1612 +id2686877,1,2016-04-13 11:13:00,2016-04-13 11:25:30,1,-73.990188598632812,40.761734008789063,-73.992721557617188,40.754154205322266,N,750 +id1664415,1,2016-02-23 09:58:50,2016-02-23 10:10:39,1,-73.982185363769531,40.772052764892578,-73.96075439453125,40.807197570800781,N,709 +id0887783,1,2016-02-29 21:55:44,2016-02-29 22:08:41,1,-73.960464477539063,40.757492065429688,-73.987342834472656,40.716346740722656,N,777 +id2743448,2,2016-01-10 03:34:13,2016-01-10 03:59:24,1,-73.985633850097656,40.727165222167969,-73.929763793945313,40.686492919921875,N,1511 +id0618092,2,2016-01-30 23:06:32,2016-01-30 23:13:01,1,-73.973197937011719,40.79534912109375,-73.963783264160156,40.807910919189453,N,389 +id2520414,2,2016-03-16 11:44:02,2016-03-16 12:07:37,1,-74.008018493652344,40.739505767822266,-73.957626342773438,40.818660736083984,N,1415 +id2029396,2,2016-06-20 10:59:39,2016-06-20 11:28:53,3,-73.988853454589844,40.75311279296875,-73.990577697753906,40.714572906494141,N,1754 +id2336103,2,2016-01-30 19:09:22,2016-01-30 19:29:43,1,-73.963722229003906,40.756969451904297,-73.986076354980469,40.7222900390625,N,1221 +id2671080,2,2016-03-01 08:19:11,2016-03-01 08:32:30,1,-73.981178283691406,40.764705657958984,-73.986549377441406,40.743030548095703,N,799 +id0042559,1,2016-02-08 22:33:31,2016-02-08 22:57:26,1,-73.985206604003906,40.718772888183594,-73.948707580566406,40.803504943847656,N,1435 +id2099276,1,2016-04-22 08:08:29,2016-04-22 08:38:39,1,-73.952423095703125,40.823738098144531,-73.974525451660156,40.755367279052734,N,1810 +id2091268,2,2016-05-14 22:33:59,2016-05-14 22:38:39,1,-73.980613708496094,40.733856201171875,-73.974014282226563,40.742897033691406,N,280 +id1953680,1,2016-01-27 18:27:32,2016-01-27 18:38:54,1,-73.986557006835938,40.761741638183594,-74.00244140625,40.7607421875,N,682 +id0135106,1,2016-06-23 16:07:05,2016-06-23 16:38:31,1,-74.010124206542969,40.720466613769531,-73.968551635742187,40.793327331542969,N,1886 +id2504648,2,2016-03-23 00:16:24,2016-03-23 00:21:37,1,-73.992156982421875,40.725212097167969,-73.983924865722656,40.730171203613281,N,313 +id2566676,2,2016-04-30 15:01:20,2016-04-30 15:02:07,3,-73.863914489746094,40.769924163818359,-73.86553955078125,40.770263671875,N,47 +id3576870,2,2016-06-06 18:40:36,2016-06-06 19:04:57,1,-73.873031616210938,40.774188995361328,-73.9713134765625,40.756221771240234,N,1461 +id2427371,1,2016-05-24 07:52:34,2016-05-24 08:02:13,1,-73.98779296875,40.718662261962891,-74.003341674804687,40.706336975097656,N,579 +id2037418,2,2016-03-12 18:56:32,2016-03-12 19:19:47,1,-73.9525146484375,40.772361755371094,-73.940170288085938,40.833763122558594,N,1395 +id3836792,1,2016-01-18 15:19:03,2016-01-18 15:22:01,1,-73.973991394042969,40.764266967773438,-73.977714538574219,40.758655548095703,N,178 +id2050404,2,2016-03-03 00:12:10,2016-03-03 00:16:57,2,-73.969123840332031,40.790790557861328,-73.957450866699219,40.778579711914063,N,287 +id3061623,2,2016-04-10 01:36:45,2016-04-10 01:48:45,5,-73.991966247558594,40.7216796875,-73.987533569335938,40.738681793212891,N,720 +id3592169,1,2016-02-26 22:26:25,2016-02-26 22:39:29,1,-73.988418579101563,40.759220123291016,-73.962196350097656,40.762229919433594,N,784 +id0665572,1,2016-04-25 16:07:15,2016-04-25 16:14:40,1,-74.007743835449219,40.725292205810547,-73.994033813476563,40.736309051513672,N,445 +id1823518,2,2016-04-20 08:26:54,2016-04-20 08:32:34,1,-73.984413146972656,40.737049102783203,-73.981353759765625,40.746250152587891,N,340 +id2908765,2,2016-01-01 16:22:39,2016-01-01 16:27:48,5,-73.973442077636719,40.763744354248047,-73.975265502929688,40.752178192138672,N,309 +id3016496,1,2016-01-02 23:08:16,2016-01-02 23:19:12,1,-73.985298156738281,40.762577056884766,-73.988800048828125,40.774280548095703,N,656 +id2627414,2,2016-06-27 14:40:25,2016-06-27 14:59:03,1,-73.967880249023438,40.759735107421875,-73.979904174804688,40.785690307617188,N,1118 +id2089875,2,2016-01-09 22:59:02,2016-01-09 23:05:43,2,-73.982887268066406,40.756210327148438,-73.962471008300781,40.775718688964844,N,401 +id3577160,2,2016-02-26 06:48:06,2016-02-26 06:51:07,2,-73.983535766601563,40.775955200195313,-73.977432250976563,40.784408569335937,N,181 +id2299916,2,2016-06-13 13:02:21,2016-06-13 13:21:53,1,-73.992019653320313,40.743919372558594,-74.008148193359375,40.722801208496094,N,1172 +id2064884,2,2016-05-10 11:17:28,2016-05-10 11:35:31,2,-73.988265991210937,40.739334106445313,-73.98431396484375,40.751605987548828,N,1083 +id2321285,2,2016-03-21 13:27:35,2016-03-21 13:48:49,6,-73.982437133789062,40.772388458251953,-73.992942810058594,40.729999542236328,N,1274 +id1929364,2,2016-06-30 15:34:57,2016-06-30 15:45:04,1,-73.995567321777344,40.72479248046875,-74.0081787109375,40.730400085449219,N,607 +id0404050,2,2016-04-29 17:36:28,2016-04-29 18:02:17,1,-74.015083312988281,40.711410522460937,-73.977149963378906,40.757980346679688,N,1549 +id2851113,2,2016-04-07 17:19:11,2016-04-07 17:22:43,2,-73.996772766113281,40.7398681640625,-74.002899169921875,40.730991363525391,N,212 +id0717420,2,2016-06-06 18:55:06,2016-06-06 19:04:41,3,-74.006301879882813,40.739604949951172,-73.992141723632813,40.743568420410156,N,575 +id1606060,2,2016-02-08 16:40:15,2016-02-08 16:43:45,1,-73.999778747558594,40.743667602539063,-73.994270324707031,40.751068115234375,N,210 +id2719460,2,2016-06-17 22:20:36,2016-06-17 22:30:36,1,-73.979362487792969,40.665542602539062,-74.001411437988281,40.6856689453125,N,600 +id3044464,1,2016-05-11 18:23:57,2016-05-11 18:30:50,1,-73.983573913574219,40.769485473632812,-73.9888916015625,40.777755737304688,N,413 +id0279475,2,2016-06-05 03:08:27,2016-06-05 03:18:32,1,-74.005813598632812,40.740280151367188,-73.978073120117187,40.742340087890625,N,605 +id3233702,1,2016-02-12 06:31:12,2016-02-12 06:38:25,1,-73.988960266113281,40.758358001708984,-73.975936889648438,40.751441955566406,N,433 +id2967878,1,2016-03-22 19:24:40,2016-03-22 19:28:17,1,-73.962486267089844,40.772880554199219,-73.952827453613281,40.783226013183594,N,217 +id0059006,1,2016-04-13 18:39:44,2016-04-13 18:42:48,1,-73.910964965820313,40.776348114013672,-73.918846130371094,40.780548095703125,N,184 +id1602344,2,2016-05-19 11:23:40,2016-05-19 11:56:32,1,-73.994560241699219,40.703041076660156,-73.985664367675781,40.744010925292969,N,1972 +id0087372,1,2016-03-28 02:05:26,2016-03-28 02:09:11,1,-73.986152648925781,40.762344360351562,-73.976799011230469,40.777557373046875,N,225 +id0638397,2,2016-02-20 20:53:06,2016-02-20 21:00:38,1,-73.955039978027344,40.773479461669922,-73.980552673339844,40.774971008300781,N,452 +id3469750,1,2016-05-16 20:52:50,2016-05-16 21:00:23,1,-73.984504699707031,40.758358001708984,-74.00250244140625,40.747047424316406,N,453 +id2411119,1,2016-04-02 23:16:34,2016-04-03 00:08:47,2,-73.993812561035156,40.745670318603516,-73.917953491210938,40.765663146972656,N,3133 +id2174844,1,2016-05-17 18:35:57,2016-05-17 18:50:36,1,-73.974372863769531,40.783168792724609,-73.954788208007812,40.769493103027344,N,879 +id2419489,2,2016-01-27 17:34:18,2016-01-27 17:53:44,5,-74.003707885742187,40.721668243408203,-73.990119934082031,40.748470306396484,N,1166 +id0489579,1,2016-02-23 20:52:46,2016-02-23 20:58:12,1,-73.972946166992188,40.764091491699219,-73.961227416992188,40.769863128662109,N,326 +id1982028,1,2016-03-20 02:36:09,2016-03-20 02:41:40,2,-73.998870849609375,40.744636535644531,-73.985565185546875,40.763893127441406,N,331 +id2893582,2,2016-01-09 03:05:58,2016-01-09 03:09:59,2,-73.991378784179688,40.735000610351563,-73.987045288085938,40.729701995849609,N,241 +id2521544,2,2016-06-06 14:56:12,2016-06-06 15:01:46,5,-73.982131958007813,40.778118133544922,-73.973892211914063,40.788883209228516,N,334 +id0692201,2,2016-05-16 14:18:07,2016-05-16 14:27:29,1,-73.998771667480469,40.745510101318359,-74.008186340332031,40.737758636474609,N,562 +id2798929,1,2016-06-12 11:57:33,2016-06-12 12:09:23,1,-74.015983581542969,40.705093383789063,-74.004966735839844,40.733894348144531,N,710 +id3870506,2,2016-03-07 12:44:20,2016-03-07 13:04:23,2,-73.973968505859375,40.756423950195312,-73.871101379394531,40.773902893066406,N,1203 +id1186093,2,2016-01-20 22:43:35,2016-01-20 22:53:33,1,-73.990409851074219,40.686901092529297,-73.957023620605469,40.718341827392578,N,598 +id1904650,2,2016-02-13 12:48:23,2016-02-13 13:13:27,1,-73.978065490722656,40.752433776855469,-73.969161987304688,40.674995422363281,N,1504 +id1421491,1,2016-02-23 07:55:09,2016-02-23 08:03:31,1,-73.972175598144531,40.756622314453125,-73.96502685546875,40.769180297851563,N,502 +id0786089,1,2016-02-17 22:03:48,2016-02-17 22:26:54,1,-73.98822021484375,40.7608642578125,-74.014984130859375,40.709396362304688,N,1386 +id0937070,1,2016-01-26 10:08:13,2016-01-26 10:33:29,1,-73.965873718261719,40.752880096435547,-73.973716735839844,40.74749755859375,N,1516 +id1443586,2,2016-04-19 10:08:16,2016-04-19 10:44:36,5,-73.984329223632813,40.743091583251953,-73.983840942382813,40.767227172851563,N,2180 +id2403524,1,2016-02-10 20:59:00,2016-02-10 21:08:41,1,-73.983047485351563,40.766498565673828,-73.968368530273438,40.796867370605469,N,581 +id1049223,1,2016-01-25 15:20:28,2016-01-25 15:37:35,1,-73.991767883300781,40.754573822021484,-73.972915649414063,40.784191131591797,N,1027 +id1487991,2,2016-02-20 17:15:14,2016-02-20 17:26:15,1,-73.951499938964844,40.780223846435547,-73.963592529296875,40.803192138671875,N,661 +id2445915,1,2016-05-31 22:01:09,2016-05-31 22:17:15,1,-74.001579284667969,40.7410888671875,-73.97235107421875,40.76080322265625,N,966 +id0851047,2,2016-04-22 21:45:58,2016-04-22 21:52:50,2,-73.990089416503906,40.726409912109375,-73.979698181152344,40.721271514892578,N,412 +id1343609,1,2016-03-23 19:14:05,2016-03-23 19:17:23,1,-73.976364135742187,40.780540466308594,-73.974159240722656,40.788833618164063,N,198 +id3870594,1,2016-04-30 17:34:49,2016-04-30 17:36:16,2,-73.956924438476563,40.779693603515625,-73.958091735839844,40.781845092773437,N,87 +id1064321,1,2016-03-03 20:11:21,2016-03-03 20:32:12,3,-74.009292602539063,40.716861724853516,-73.982765197753906,40.758335113525391,N,1251 +id3200399,1,2016-03-29 16:01:48,2016-03-29 16:06:07,1,-73.978309631347656,40.773002624511719,-73.981597900390625,40.779468536376953,N,259 +id1652404,1,2016-02-12 21:25:24,2016-02-12 21:32:50,2,-73.984489440917969,40.7457275390625,-73.98919677734375,40.741161346435547,N,446 +id1842265,2,2016-03-26 13:35:33,2016-03-26 13:44:28,3,-73.975677490234375,40.760829925537109,-73.987747192382813,40.738460540771484,N,535 +id1260544,2,2016-03-28 23:37:46,2016-03-28 23:43:47,1,-73.977767944335937,40.764499664306641,-73.9910888671875,40.760528564453125,N,361 +id0516631,1,2016-01-30 19:56:05,2016-01-30 19:58:29,1,-73.947471618652344,40.783744812011719,-73.952476501464844,40.776859283447266,N,144 +id1963201,1,2016-04-09 12:53:50,2016-04-09 13:08:27,2,-73.961647033691406,40.755680084228516,-73.973220825195313,40.785324096679688,N,877 +id0337895,2,2016-01-02 11:04:49,2016-01-02 11:14:25,1,-74.005912780761719,40.736045837402344,-73.97955322265625,40.759559631347656,N,576 +id2724500,1,2016-01-16 00:11:09,2016-01-16 00:42:38,1,-73.982093811035156,40.771495819091797,-73.945541381835938,40.711521148681641,N,1889 +id0073173,1,2016-02-21 14:51:19,2016-02-21 14:59:40,1,-73.99945068359375,40.743827819824219,-73.978683471679688,40.752674102783203,N,501 +id0651252,1,2016-05-01 05:58:44,2016-05-01 06:19:08,1,-73.789924621582031,40.646987915039062,-73.935874938964844,40.684154510498047,N,1224 +id0359413,2,2016-03-12 11:21:32,2016-03-12 11:23:57,1,-73.965568542480469,40.768730163574219,-73.9656982421875,40.7711181640625,N,145 +id1165404,2,2016-05-15 13:51:15,2016-05-15 14:03:24,1,-74.005393981933594,40.715061187744141,-73.993507385253906,40.733448028564453,N,729 +id0888922,2,2016-05-01 13:14:17,2016-05-01 13:39:17,2,-73.984237670898438,40.736919403076172,-73.915802001953125,40.699115753173828,N,1500 +id1063193,2,2016-02-25 19:29:27,2016-02-25 19:32:12,1,-73.964347839355469,40.764858245849609,-73.967613220214844,40.770149230957031,N,165 +id1928266,2,2016-04-09 08:13:44,2016-04-09 08:15:33,1,-73.98089599609375,40.781944274902344,-73.976631164550781,40.787986755371094,N,109 +id1541917,1,2016-01-27 16:06:32,2016-01-27 16:17:30,1,-74.005691528320313,40.725612640380859,-73.98712158203125,40.733345031738281,N,658 +id3773040,2,2016-06-19 17:05:56,2016-06-19 17:15:02,2,-74.000022888183594,40.723579406738281,-74.00091552734375,40.733917236328125,N,546 +id2815387,2,2016-02-22 21:05:02,2016-02-22 21:28:08,1,-73.862716674804688,40.768898010253906,-73.9794921875,40.727462768554688,N,1386 +id2374313,2,2016-03-20 14:46:02,2016-03-20 15:00:06,1,-73.982124328613281,40.772735595703125,-73.954765319824219,40.778194427490234,N,844 +id1041626,2,2016-03-20 19:55:30,2016-03-20 20:00:33,1,-73.990028381347656,40.740749359130859,-74.003211975097656,40.740100860595703,N,303 +id2316936,1,2016-06-06 19:59:17,2016-06-06 20:03:37,1,-73.985000610351563,40.747886657714844,-73.988899230957031,40.738937377929688,N,260 +id0600264,2,2016-06-07 12:30:09,2016-06-07 12:42:42,1,-73.981826782226563,40.756572723388672,-73.972175598144531,40.7615966796875,N,753 +id3230066,1,2016-04-26 10:15:51,2016-04-26 10:40:08,1,-74.009963989257813,40.720062255859375,-73.975616455078125,40.749546051025391,N,1457 +id1802183,2,2016-04-05 08:27:04,2016-04-05 08:31:06,2,-73.951431274414063,40.774101257324219,-73.951057434082031,40.782810211181641,N,242 +id2117779,2,2016-04-05 18:09:57,2016-04-05 18:24:29,1,-73.981201171875,40.746936798095703,-73.960899353027344,40.769405364990234,N,872 +id1841140,2,2016-02-17 08:31:27,2016-02-17 08:41:31,1,-73.987319946289062,40.766021728515625,-73.983451843261719,40.757728576660156,N,604 +id0666682,2,2016-01-18 15:13:04,2016-01-18 15:23:45,5,-73.974166870117187,40.764228820800781,-73.985374450683594,40.778617858886719,N,641 +id2211214,2,2016-03-22 18:03:23,2016-03-22 18:10:26,1,-73.975502014160156,40.782131195068359,-73.960899353027344,40.776668548583984,N,423 +id2304859,2,2016-05-19 10:13:27,2016-05-19 10:42:17,1,-73.973793029785156,40.784423828125,-74.010993957519531,40.714176177978516,N,1730 +id3526225,2,2016-02-03 05:26:18,2016-02-03 05:36:51,6,-74.004898071289063,40.737560272216797,-73.996681213378906,40.766498565673828,N,633 +id1682724,1,2016-04-01 23:34:00,2016-04-01 23:38:03,1,-73.986000061035156,40.730918884277344,-73.98968505859375,40.725948333740234,N,243 +id1514854,1,2016-03-08 14:49:37,2016-03-08 15:00:05,1,-73.974617004394531,40.752388000488281,-73.991477966308594,40.754020690917969,N,628 +id0849174,2,2016-06-27 07:37:41,2016-06-27 07:44:53,1,-73.990364074707031,40.7562255859375,-73.978622436523437,40.756801605224609,N,432 +id1487069,2,2016-02-13 00:21:49,2016-02-14 00:19:05,1,-73.968589782714844,40.799217224121094,-73.979583740234375,40.784713745117188,N,86236 +id0486703,2,2016-01-19 08:33:58,2016-01-19 08:48:12,3,-73.980186462402344,40.765388488769531,-73.96636962890625,40.770599365234375,N,854 +id1118315,2,2016-04-18 19:06:03,2016-04-18 19:18:25,1,-73.966766357421875,40.757221221923828,-73.994575500488281,40.755184173583984,N,742 +id0434099,2,2016-05-03 11:29:44,2016-05-03 11:40:55,1,-73.965202331542969,40.774898529052734,-73.976226806640625,40.76422119140625,N,671 +id3524512,2,2016-02-15 13:23:21,2016-02-15 13:27:03,1,-73.982902526855469,40.774211883544922,-73.987823486328125,40.771537780761719,N,222 +id3093893,2,2016-02-28 05:49:18,2016-02-28 06:19:45,5,-73.996421813964844,40.763481140136719,-73.783538818359375,40.648830413818359,N,1827 +id0143755,1,2016-04-28 12:04:49,2016-04-28 12:33:31,2,-73.958656311035156,40.763805389404297,-73.989593505859375,40.748542785644531,N,1722 +id2339318,1,2016-03-09 13:00:05,2016-03-09 13:29:42,1,-73.980369567871094,40.763210296630859,-73.871101379394531,40.774200439453125,N,1777 +id2343359,1,2016-05-25 23:32:18,2016-05-25 23:43:21,3,-73.995635986328125,40.764438629150391,-73.964179992675781,40.757965087890625,N,663 +id3011568,2,2016-02-28 18:42:14,2016-02-28 18:47:38,1,-73.991249084472656,40.735118865966797,-73.988868713378906,40.739616394042969,N,324 +id2591445,1,2016-05-04 00:50:14,2016-05-04 01:29:10,1,-73.995933532714844,40.767246246337891,-73.912559509277344,40.688438415527344,N,2336 +id0109911,1,2016-06-15 09:42:32,2016-06-15 10:00:10,1,-74.008140563964844,40.722408294677734,-73.993080139160156,40.742546081542969,N,1058 +id1612749,2,2016-05-14 08:23:33,2016-05-14 09:03:16,1,-73.9752197265625,40.752231597900391,-73.789688110351563,40.647018432617188,N,2383 +id3244790,2,2016-03-07 08:23:52,2016-03-07 08:29:42,1,-73.992431640625,40.768798828125,-73.974540710449219,40.763771057128906,N,350 +id1378783,2,2016-06-16 14:54:36,2016-06-16 15:00:03,2,-73.973625183105469,40.789623260498047,-73.978469848632812,40.777851104736328,N,327 +id0006043,2,2016-06-20 22:25:00,2016-06-20 22:32:43,1,-73.989700317382812,40.757190704345703,-73.978256225585937,40.75177001953125,N,463 +id1418061,1,2016-06-26 06:13:43,2016-06-26 06:27:41,1,-73.988174438476562,40.744411468505859,-73.956092834472656,40.772209167480469,N,838 +id1771291,2,2016-05-19 18:46:18,2016-05-19 19:11:18,1,-73.9613037109375,40.764671325683594,-73.994033813476563,40.732128143310547,N,1500 +id2148148,1,2016-02-27 12:50:06,2016-02-27 13:03:17,1,-73.979507446289063,40.784523010253906,-73.952728271484375,40.780117034912109,N,791 +id1244547,1,2016-05-18 22:12:52,2016-05-18 22:20:30,2,-73.985145568847656,40.727714538574219,-73.970733642578125,40.747566223144531,N,458 +id1509926,2,2016-03-18 18:47:34,2016-03-18 18:53:32,1,-73.996833801269531,40.752780914306641,-73.9901123046875,40.739280700683594,N,358 +id1780007,2,2016-01-16 16:58:29,2016-01-16 17:05:09,3,-73.985267639160156,40.727508544921875,-73.981681823730469,40.739997863769531,N,400 +id0173897,1,2016-03-04 08:05:15,2016-03-04 08:12:44,1,-73.986869812011719,40.745189666748047,-74.003196716308594,40.7491455078125,N,449 +id0244172,1,2016-01-29 11:07:20,2016-01-29 11:20:36,1,-73.991401672363281,40.745197296142578,-73.975425720214844,40.744564056396484,N,796 +id0139648,1,2016-01-20 22:34:39,2016-01-20 22:44:23,1,-73.990875244140625,40.750728607177734,-73.973640441894531,40.751529693603516,N,584 +id0407367,2,2016-04-19 19:37:13,2016-04-19 19:39:11,6,-73.974433898925781,40.750335693359375,-73.975601196289063,40.745277404785156,N,118 +id2140363,2,2016-02-06 01:09:50,2016-02-06 01:13:34,1,-73.999397277832031,40.728240966796875,-74.004241943359375,40.730289459228516,N,224 +id3907920,1,2016-01-01 20:23:23,2016-01-01 20:38:16,2,-73.993980407714844,40.746650695800781,-73.989204406738281,40.730209350585938,N,893 +id1299526,2,2016-06-26 10:49:51,2016-06-26 11:04:02,1,-73.936805725097656,40.759979248046875,-73.884346008300781,40.750396728515625,N,851 +id2190862,1,2016-04-03 13:28:23,2016-04-03 13:41:56,2,-74.01116943359375,40.710159301757813,-73.990821838378906,40.738006591796875,N,813 +id0579981,1,2016-01-27 19:59:18,2016-01-27 20:05:14,1,-73.973831176757813,40.762069702148438,-73.959037780761719,40.780654907226563,N,356 +id3241249,2,2016-01-16 08:39:59,2016-01-16 08:59:14,1,-73.951057434082031,40.770729064941406,-74.000328063964844,40.734050750732422,N,1155 +id3057763,1,2016-05-05 14:17:53,2016-05-05 14:26:40,1,-73.986068725585937,40.744216918945313,-73.996627807617188,40.737380981445313,N,527 +id0998410,1,2016-04-18 07:25:00,2016-04-18 07:33:52,1,-73.951789855957031,40.773399353027344,-73.967201232910156,40.762660980224609,N,532 +id3869873,2,2016-04-18 06:37:52,2016-04-18 06:58:46,2,-73.961517333984375,40.764350891113281,-73.865386962890625,40.770641326904297,N,1254 +id0977677,1,2016-05-09 10:28:55,2016-05-09 10:35:42,1,-73.982254028320312,40.777210235595703,-73.978736877441406,40.764278411865234,N,407 +id1706148,2,2016-04-29 08:07:28,2016-04-29 08:22:30,6,-73.970252990722656,40.795772552490234,-73.899124145507813,40.892921447753906,N,902 +id1326506,2,2016-04-14 17:52:50,2016-04-14 18:01:10,1,-73.950088500976563,40.776073455810547,-73.966201782226563,40.767147064208984,N,500 +id1622938,1,2016-04-03 13:08:49,2016-04-03 13:08:59,1,-73.987228393554688,40.739524841308594,-73.987228393554688,40.739528656005859,N,10 +id3550711,1,2016-04-14 20:50:32,2016-04-14 20:56:53,1,-73.970375061035156,40.756134033203125,-73.956207275390625,40.775951385498047,N,381 +id0054958,1,2016-02-27 21:04:33,2016-02-27 21:09:06,1,-73.985908508300781,40.735141754150391,-73.992767333984375,40.741344451904297,N,273 +id2269334,2,2016-01-08 10:56:54,2016-01-08 11:20:34,1,-73.989105224609375,40.755912780761719,-74.011184692382813,40.713375091552734,N,1420 +id3955867,2,2016-01-21 18:51:50,2016-01-21 19:06:38,3,-73.982688903808594,40.761768341064453,-73.976692199707031,40.780780792236328,N,888 +id3473361,1,2016-01-22 14:55:47,2016-01-22 15:17:19,1,-73.9598388671875,40.762649536132813,-74.002494812011719,40.724994659423828,N,1292 +id0252677,2,2016-01-23 00:19:01,2016-01-23 00:35:22,5,-73.99310302734375,40.692939758300781,-73.964149475097656,40.672229766845703,N,981 +id2263405,1,2016-05-08 01:57:53,2016-05-08 02:10:48,1,-73.981498718261719,40.741050720214844,-74.011970520019531,40.7073974609375,N,775 +id0133038,2,2016-02-21 16:45:19,2016-02-21 16:51:51,5,-74.004158020019531,40.747589111328125,-74.003097534179688,40.733219146728516,N,392 +id2981619,1,2016-03-25 12:06:52,2016-03-25 12:16:46,1,-73.984214782714844,40.743736267089844,-73.977638244628906,40.759807586669922,N,594 +id2205976,1,2016-04-30 03:42:02,2016-04-30 03:51:08,1,-73.983016967773437,40.730690002441406,-74.006050109863281,40.707855224609375,N,546 +id0603052,2,2016-01-16 23:47:52,2016-01-16 23:54:59,5,-73.98809814453125,40.738346099853516,-73.989753723144531,40.726268768310547,N,427 +id0548531,1,2016-05-24 18:14:34,2016-05-24 18:25:53,1,-73.981422424316406,40.762847900390625,-73.986557006835938,40.756084442138672,N,679 +id2309201,1,2016-06-12 19:47:05,2016-06-12 19:52:03,1,-73.984657287597656,40.7484130859375,-73.991996765136719,40.749397277832031,N,298 +id3110846,2,2016-01-18 17:01:32,2016-01-18 17:37:20,1,-73.863471984863281,40.769649505615234,-73.966209411621094,40.689739227294922,N,2148 +id2485591,1,2016-02-25 22:54:18,2016-02-25 22:59:22,1,-73.976554870605469,40.682769775390625,-73.979461669921875,40.687042236328125,N,304 +id0963988,1,2016-05-26 18:40:08,2016-05-26 19:25:15,1,-73.788246154785156,40.641654968261719,-73.948738098144531,40.773944854736328,N,2707 +id2904491,2,2016-03-22 09:40:56,2016-03-22 09:50:28,1,-73.987762451171875,40.724178314208984,-73.998298645019531,40.730098724365234,N,572 +id1350721,1,2016-06-02 10:44:55,2016-06-02 10:48:15,1,-73.990928649902344,40.750438690185547,-73.998466491699219,40.740207672119141,N,200 +id3124471,2,2016-03-29 15:18:15,2016-03-29 15:26:11,4,-73.966346740722656,40.764701843261719,-73.954429626464844,40.770561218261719,N,476 +id2033114,2,2016-02-17 22:29:41,2016-02-17 22:49:01,1,-73.979408264160156,40.761669158935547,-73.99664306640625,40.719058990478516,N,1160 +id3017705,1,2016-01-13 20:11:10,2016-01-13 20:29:17,1,-74.009140014648437,40.718654632568359,-73.973808288574219,40.792301177978516,N,1087 +id3532377,1,2016-01-11 20:03:37,2016-01-11 20:08:49,1,-73.988784790039063,40.736957550048828,-73.987358093261719,40.742935180664062,N,312 +id0107210,1,2016-03-09 14:56:43,2016-03-09 15:21:58,2,-73.977401733398437,40.774421691894531,-73.992889404296875,40.730770111083984,N,1515 +id2336897,1,2016-05-17 03:19:27,2016-05-17 03:32:53,1,-74.003524780273437,40.741756439208984,-73.981269836425781,40.782424926757813,N,806 +id3051856,2,2016-02-07 16:28:20,2016-02-07 16:41:58,1,-73.956153869628906,40.767501831054687,-73.985061645507813,40.747184753417969,N,818 +id1061062,2,2016-04-16 10:40:27,2016-04-16 10:49:59,3,-73.978584289550781,40.787982940673828,-73.953750610351563,40.784950256347656,N,572 +id0323687,1,2016-03-26 15:14:10,2016-03-26 15:27:38,1,-73.981330871582031,40.747043609619141,-74.005622863769531,40.737674713134766,N,808 +id0754986,2,2016-01-25 11:32:44,2016-01-25 12:11:58,1,-73.953933715820312,40.790550231933594,-73.776809692382813,40.644763946533203,N,2354 +id0445300,2,2016-03-28 13:09:08,2016-03-28 13:15:18,1,-73.971656799316406,40.765331268310547,-73.981773376464844,40.767055511474609,N,370 +id0065007,2,2016-02-09 19:04:59,2016-02-09 19:19:46,6,-73.964859008789063,40.775524139404297,-73.983047485351563,40.774223327636719,N,887 +id1872234,2,2016-05-31 05:24:08,2016-05-31 05:32:03,6,-73.943656921386719,40.788951873779297,-73.966819763183594,40.764118194580078,N,475 +id3485178,1,2016-04-21 04:22:39,2016-04-21 04:38:12,1,-73.999931335449219,40.738731384277344,-73.954475402832031,40.820648193359375,N,933 +id2899276,2,2016-02-15 14:52:20,2016-02-15 14:55:17,1,-73.983932495117188,40.76806640625,-73.974555969238281,40.764507293701172,N,177 +id1262458,1,2016-03-28 09:08:36,2016-03-28 09:27:49,1,-73.956985473632812,40.783195495605469,-73.955543518066406,40.785354614257813,N,1153 +id0882921,1,2016-01-30 18:53:57,2016-01-30 19:05:03,1,-73.97265625,40.785625457763672,-73.95428466796875,40.772132873535156,N,666 +id2941495,1,2016-06-12 23:21:51,2016-06-12 23:30:08,2,-73.983650207519531,40.747062683105469,-73.984458923339844,40.7591552734375,N,497 +id2698335,1,2016-03-23 15:23:29,2016-03-23 15:33:29,1,-73.990402221679688,40.756412506103516,-74.000411987304688,40.758007049560547,Y,600 +id1463916,2,2016-03-06 10:28:19,2016-03-06 10:37:17,1,-73.979194641113281,40.771686553955078,-73.957260131835937,40.771663665771484,N,538 +id1034891,2,2016-01-17 02:09:57,2016-01-17 02:13:45,2,-73.992172241210937,40.725730895996094,-73.993232727050781,40.719501495361328,N,228 +id0305824,2,2016-03-19 02:35:43,2016-03-19 03:05:34,5,-73.9912109375,40.723594665527344,-73.947723388671875,40.830371856689453,N,1791 +id1529347,2,2016-01-28 08:54:43,2016-01-28 09:06:47,5,-73.98944091796875,40.752426147460938,-73.973800659179688,40.757568359375,N,724 +id3033333,2,2016-01-05 03:33:18,2016-01-05 03:49:36,1,-73.954627990722656,40.764019012451172,-73.915122985839844,40.821739196777344,N,978 +id0808330,2,2016-03-05 16:30:26,2016-03-05 16:40:20,1,-73.977180480957031,40.758499145507813,-73.958686828613281,40.768398284912109,N,594 +id3902441,1,2016-02-20 20:47:40,2016-02-20 20:49:16,1,-74.000984191894531,40.747016906738281,-74.003768920898438,40.743110656738281,N,96 +id0761072,2,2016-05-26 05:52:14,2016-05-26 06:03:12,1,-73.950546264648438,40.775417327880859,-73.925300598144531,40.817306518554688,N,658 +id1403513,2,2016-03-08 21:35:35,2016-03-08 21:46:56,1,-73.997398376464844,40.713390350341797,-73.978500366210938,40.724689483642578,N,681 +id0097682,1,2016-06-28 09:43:27,2016-06-28 10:13:52,2,-73.977699279785156,40.778839111328125,-73.982330322265625,40.755683898925781,N,1825 +id3968171,1,2016-03-31 23:17:51,2016-03-31 23:25:29,1,-73.983024597167969,40.761707305908203,-73.978530883789063,40.754306793212891,N,458 +id2962993,1,2016-05-17 21:35:59,2016-05-17 21:42:28,1,-73.990028381347656,40.737743377685547,-73.997817993164062,40.721576690673828,N,389 +id1943398,1,2016-04-09 18:18:50,2016-04-09 18:35:06,2,-73.951980590820313,40.777641296386719,-73.975486755371094,40.752307891845703,N,976 +id3488889,2,2016-01-10 16:23:15,2016-01-10 16:28:17,1,-73.977912902832031,40.684833526611328,-73.982574462890625,40.693630218505859,N,302 +id0142124,1,2016-06-10 06:48:05,2016-06-10 06:54:42,1,-73.991203308105469,40.755367279052734,-73.972137451171875,40.7625732421875,N,397 +id3050934,1,2016-03-21 07:21:44,2016-03-21 07:30:19,1,-73.97247314453125,40.745891571044922,-73.985618591308594,40.744853973388672,N,515 +id1123173,1,2016-01-13 19:45:04,2016-01-13 20:05:37,1,-73.972663879394531,40.756359100341797,-73.887672424316406,40.752552032470703,N,1233 +id3425799,1,2016-06-02 07:11:02,2016-06-02 07:21:21,1,-73.972496032714844,40.74658203125,-73.970130920410156,40.76544189453125,N,619 +id3935310,1,2016-06-21 21:56:02,2016-06-21 22:13:11,1,-73.974479675292969,40.755603790283203,-73.992515563964844,40.758407592773438,N,1029 +id2711528,1,2016-02-01 19:36:04,2016-02-01 19:45:29,1,-74.005683898925781,40.7255859375,-73.99066162109375,40.719257354736328,N,565 +id3448427,1,2016-05-05 07:49:22,2016-05-05 07:58:47,1,-73.991737365722656,40.754680633544922,-73.979789733886719,40.752021789550781,N,565 +id1387012,1,2016-01-13 18:45:06,2016-01-13 18:52:00,2,-73.964950561523438,40.759296417236328,-73.980087280273437,40.749160766601563,N,414 +id2912627,1,2016-06-24 22:30:39,2016-06-24 22:51:34,1,-73.996711730957031,40.737434387207031,-73.977798461914063,40.716526031494141,Y,1255 +id3688309,1,2016-01-04 17:40:26,2016-01-04 18:12:30,1,-74.0159912109375,40.711219787597656,-73.91693115234375,40.872425079345703,N,1924 +id1228402,1,2016-01-15 13:33:30,2016-01-15 13:47:49,1,-74.006591796875,40.716327667236328,-73.992881774902344,40.749332427978516,N,859 +id2918195,1,2016-02-29 02:36:07,2016-02-29 02:43:01,2,-73.978904724121094,40.736312866210937,-73.951416015625,40.774105072021484,Y,414 +id2017996,2,2016-04-29 00:12:25,2016-04-29 00:22:41,2,-73.969657897949219,40.757217407226563,-73.9888916015625,40.748115539550781,N,616 +id0201477,2,2016-04-06 14:38:24,2016-04-06 14:57:32,1,-73.979698181152344,40.755100250244141,-73.99761962890625,40.724609375,N,1148 +id1424219,1,2016-05-08 01:28:32,2016-05-08 01:35:41,1,-74.006393432617188,40.73931884765625,-74.006538391113281,40.744247436523438,N,429 +id3998592,2,2016-06-30 06:55:18,2016-06-30 07:05:43,1,-73.953269958496094,40.782569885253906,-73.972976684570313,40.762611389160156,N,625 +id3007695,1,2016-03-29 22:14:45,2016-03-29 22:18:45,1,-73.974723815917969,40.790462493896484,-73.972869873046875,40.798442840576172,N,240 +id1954597,1,2016-01-05 17:13:10,2016-01-05 17:14:21,1,-73.96588134765625,40.758266448974609,-73.97003173828125,40.753044128417969,N,71 +id3692480,2,2016-02-16 20:14:27,2016-02-16 20:16:48,3,-73.995269775390625,40.750480651855469,-74.001518249511719,40.745639801025391,N,141 +id3807735,2,2016-06-07 18:55:22,2016-06-07 19:05:02,4,-73.992500305175781,40.760059356689453,-73.992218017578125,40.742610931396484,N,580 +id2252064,1,2016-04-15 09:50:32,2016-04-15 10:10:20,1,-73.987518310546875,40.7384033203125,-73.95501708984375,40.766006469726562,N,1188 +id1702733,2,2016-02-12 19:56:18,2016-02-12 20:07:27,1,-73.982139587402344,40.731903076171875,-73.95733642578125,40.765907287597656,N,669 +id1492077,1,2016-01-28 12:26:47,2016-01-28 12:43:50,1,-73.986358642578125,40.751541137695313,-73.995834350585938,40.76934814453125,N,1023 +id1759298,1,2016-06-16 14:07:21,2016-06-16 14:14:32,1,-73.9747314453125,40.729671478271484,-73.981086730957031,40.736232757568359,N,431 +id0987703,2,2016-04-15 15:42:46,2016-04-15 15:55:22,2,-73.982048034667969,40.764671325683594,-73.977867126464844,40.753978729248047,N,756 +id3109972,2,2016-04-13 20:51:39,2016-04-13 20:55:30,2,-73.95458984375,40.7740478515625,-73.963279724121094,40.765670776367188,N,231 +id1365474,1,2016-04-26 16:24:10,2016-04-26 17:24:13,1,-73.992050170898438,40.751514434814453,-73.7900390625,40.646957397460938,N,3603 +id2270529,1,2016-02-24 11:08:43,2016-02-24 11:22:51,1,-73.975242614746094,40.7501220703125,-73.970649719238281,40.761829376220703,N,848 +id3277602,1,2016-01-04 08:02:30,2016-01-04 08:11:54,2,-73.971138000488281,40.762054443359375,-73.995796203613281,40.736301422119141,N,564 +id3321959,2,2016-03-18 01:45:30,2016-03-18 02:03:26,1,-73.992950439453125,40.747520446777344,-73.989959716796875,40.744899749755859,N,1076 +id1122881,1,2016-01-19 10:23:05,2016-01-19 10:24:52,1,-73.990211486816406,40.741710662841797,-73.995429992675781,40.743881225585937,N,107 +id0623832,1,2016-04-07 06:58:10,2016-04-07 07:03:36,1,-74.00469970703125,40.716392517089844,-73.997062683105469,40.719310760498047,N,326 +id2559432,1,2016-01-17 19:29:45,2016-01-17 19:42:12,1,-74.003608703613281,40.732406616210937,-73.99285888671875,40.720359802246094,N,747 +id1716031,1,2016-04-02 12:00:49,2016-04-02 12:08:20,2,-73.991600036621094,40.717308044433594,-74.005401611328125,40.704689025878906,N,451 +id0486882,2,2016-05-31 17:36:29,2016-05-31 17:44:38,1,-73.95166015625,40.769832611083984,-73.959724426269531,40.760360717773438,N,489 +id2650954,1,2016-01-31 01:46:51,2016-01-31 01:53:29,1,-73.990081787109375,40.733238220214844,-73.976554870605469,40.745136260986328,N,398 +id3240558,1,2016-02-09 17:43:24,2016-02-09 17:55:19,1,-73.999465942382813,40.722461700439453,-74.009117126464844,40.707809448242188,N,715 +id0661578,2,2016-06-18 23:20:37,2016-06-18 23:23:23,5,-73.994422912597656,40.693061828613281,-73.996330261230469,40.686851501464844,N,166 +id1616243,2,2016-05-09 18:52:55,2016-05-09 19:07:18,5,-73.971458435058594,40.757530212402344,-73.998283386230469,40.760860443115234,N,863 +id0384869,2,2016-02-11 15:09:25,2016-02-11 15:15:52,1,-73.989387512207031,40.742805480957031,-73.9844970703125,40.735530853271484,N,387 +id1282719,1,2016-04-14 10:39:02,2016-04-14 10:58:44,1,-73.977043151855469,40.757194519042969,-74.009063720703125,40.705303192138672,N,1182 +id1001652,1,2016-04-14 22:58:31,2016-04-14 23:22:26,1,-73.976593017578125,40.747638702392578,-73.957252502441406,40.765918731689453,N,1435 +id0809688,1,2016-04-14 07:06:32,2016-04-14 07:16:57,1,-73.998634338378906,40.722949981689453,-73.979095458984375,40.752948760986328,N,625 +id1176864,1,2016-06-12 17:44:28,2016-06-12 17:56:49,2,-73.986152648925781,40.740463256835938,-74.011306762695313,40.708583831787109,N,741 +id3458223,2,2016-04-28 19:16:30,2016-04-28 19:27:01,1,-73.948966979980469,40.78253173828125,-73.952728271484375,40.804489135742187,N,631 +id2012902,2,2016-03-29 09:43:37,2016-03-29 10:03:18,2,-73.950096130371094,40.777061462402344,-73.992080688476562,40.759212493896484,N,1181 +id0942581,2,2016-04-26 12:21:37,2016-04-26 12:31:41,1,-73.983993530273437,40.763328552246094,-73.9898681640625,40.756320953369141,N,604 +id3319415,2,2016-05-26 12:38:06,2016-05-26 12:53:55,1,-74.008026123046875,40.739181518554688,-74.012496948242188,40.715202331542969,N,949 +id1663272,1,2016-02-22 21:59:51,2016-02-22 22:11:22,2,-74.007347106933594,40.7437744140625,-73.975189208984375,40.791030883789063,N,691 +id3102355,1,2016-01-28 20:52:14,2016-01-28 20:55:37,2,-73.99993896484375,40.723613739013672,-74.004539489746094,40.721549987792969,N,203 +id2732809,2,2016-02-12 18:54:08,2016-02-12 19:06:15,2,-73.988136291503906,40.731941223144531,-73.998924255371094,40.729419708251953,N,727 +id2119273,1,2016-01-17 21:16:33,2016-01-17 21:18:00,1,-73.988922119140625,40.753269195556641,-73.988937377929687,40.753276824951172,N,87 +id3293252,2,2016-04-07 09:49:16,2016-04-07 09:55:23,4,-73.976081848144531,40.751113891601563,-73.985809326171875,40.738182067871094,N,367 +id3583814,1,2016-01-13 18:13:28,2016-01-13 18:17:42,1,-73.984657287597656,40.76849365234375,-73.983695983886719,40.760231018066406,N,254 +id3874888,2,2016-01-08 19:54:45,2016-01-08 20:10:46,1,-73.870773315429687,40.773712158203125,-73.956253051757813,40.747207641601563,N,961 +id3762085,2,2016-01-06 02:53:03,2016-01-06 03:19:20,4,-74.000450134277344,40.737499237060547,-73.915092468261719,40.672428131103516,N,1577 +id2282323,1,2016-06-11 04:26:09,2016-06-11 04:37:42,1,-74.004234313964844,40.742286682128906,-73.979248046875,40.729045867919922,N,693 +id3642430,2,2016-02-17 20:12:05,2016-02-17 20:46:23,1,-73.98773193359375,40.736099243164063,-73.976280212402344,40.788921356201172,N,2058 +id3069486,1,2016-05-23 19:11:53,2016-05-23 19:21:11,1,-73.989280700683594,40.741989135742188,-73.978225708007813,40.72943115234375,N,558 +id3205796,1,2016-02-24 18:57:42,2016-02-24 19:09:51,1,-73.974540710449219,40.793285369873047,-73.949943542480469,40.780559539794922,N,729 +id0370747,2,2016-02-12 18:08:34,2016-02-12 19:18:48,1,-73.979606628417969,40.762683868408203,-73.782417297363281,40.644264221191406,N,4214 +id0503560,1,2016-02-04 19:38:13,2016-02-04 19:43:47,1,-73.975364685058594,40.760650634765625,-73.983329772949219,40.74969482421875,N,334 +id3787301,1,2016-06-11 17:34:22,2016-06-11 17:53:47,2,-73.991188049316406,40.750259399414063,-73.988731384277344,40.721115112304688,N,1165 +id2351739,1,2016-04-05 12:20:27,2016-04-05 12:25:40,1,-73.983001708984375,40.757518768310547,-73.977882385253906,40.764266967773438,N,313 +id2516630,2,2016-06-21 19:46:52,2016-06-21 19:57:01,2,-73.97393798828125,40.757770538330078,-73.981552124023438,40.730850219726563,N,609 +id0996113,1,2016-04-13 21:55:02,2016-04-13 21:57:06,1,-73.964691162109375,40.760234832763672,-73.961822509765625,40.756935119628906,N,124 +id3447607,2,2016-01-01 21:11:40,2016-01-01 21:16:29,1,-73.961929321289062,40.770740509033203,-73.947349548339844,40.7794189453125,N,289 +id3971984,2,2016-02-15 21:23:50,2016-02-15 21:28:52,1,-73.949287414550781,40.705028533935547,-73.936203002929688,40.697441101074219,N,302 +id1085743,1,2016-05-14 00:54:12,2016-05-14 00:55:06,1,-73.946174621582031,40.777328491210938,-73.947067260742187,40.774181365966797,N,54 +id2388437,2,2016-02-08 19:28:07,2016-02-08 19:41:15,1,-73.97900390625,40.757049560546875,-73.975639343261719,40.786827087402344,N,788 +id1838770,2,2016-03-05 12:28:58,2016-03-05 12:39:37,1,-73.976142883300781,40.791454315185547,-73.980209350585938,40.775501251220703,N,639 +id0037086,1,2016-04-29 18:48:36,2016-04-29 19:13:05,1,-73.990348815917969,40.760902404785156,-74.006195068359375,40.734821319580078,N,1469 +id1081775,2,2016-06-04 04:37:23,2016-06-04 04:42:55,2,-73.987220764160156,40.721931457519531,-73.992691040039063,40.713718414306641,N,332 +id0112833,1,2016-03-23 23:55:30,2016-03-24 00:03:33,1,-73.93011474609375,40.854259490966797,-73.925735473632812,40.867446899414063,N,483 +id2712435,2,2016-04-12 11:23:35,2016-04-12 11:41:41,1,-73.964027404785156,40.757480621337891,-73.980857849121094,40.753711700439453,N,1086 +id0727165,1,2016-03-05 19:32:44,2016-03-05 20:19:34,1,-73.781944274902344,40.644725799560547,-73.946640014648438,40.700099945068359,N,2810 +id1695274,1,2016-06-26 00:36:19,2016-06-26 00:39:46,1,-73.967376708984375,40.760349273681641,-73.955917358398438,40.772380828857422,N,207 +id3714968,1,2016-02-24 08:10:12,2016-02-24 08:36:43,1,-74.009788513183594,40.720977783203125,-73.971473693847656,40.760887145996094,N,1591 +id0068745,2,2016-05-26 17:25:41,2016-05-26 17:35:45,2,-73.952056884765625,40.790050506591797,-73.952056884765625,40.790050506591797,N,604 +id3269945,2,2016-05-18 08:59:55,2016-05-18 09:16:16,1,-73.973709106445313,40.747898101806641,-74.003829956054687,40.707771301269531,N,981 +id0853375,2,2016-06-17 12:22:14,2016-06-17 12:37:51,1,-73.991279602050781,40.749702453613281,-73.982894897460938,40.755756378173828,N,937 +id3835921,1,2016-06-16 10:04:38,2016-06-16 10:16:57,1,-73.973243713378906,40.743629455566406,-73.978385925292969,40.754604339599609,N,739 +id0758576,2,2016-02-14 14:05:52,2016-02-14 14:47:45,3,-73.776779174804688,40.645362854003906,-73.974235534667969,40.756698608398438,N,2513 +id2239615,2,2016-04-18 04:14:47,2016-04-18 04:26:57,2,-74.006317138671875,40.709659576416016,-73.954818725585937,40.775009155273438,N,730 +id3562669,2,2016-06-05 20:17:01,2016-06-05 20:39:06,1,-73.961189270019531,40.760585784912109,-73.940330505371094,40.749637603759766,N,1325 +id1999935,2,2016-01-11 19:21:30,2016-01-11 19:31:53,1,-73.978439331054687,40.753955841064453,-73.968475341796875,40.765651702880859,N,623 +id3166856,2,2016-06-29 16:18:34,2016-06-29 16:30:52,1,-73.961578369140625,40.774028778076172,-73.983558654785156,40.782760620117188,N,738 +id0558315,1,2016-06-16 12:52:29,2016-06-16 12:54:33,1,-73.99554443359375,40.759712219238281,-73.98858642578125,40.769176483154297,N,124 +id1991943,2,2016-01-08 09:44:46,2016-01-08 09:50:03,1,-73.989280700683594,40.75830078125,-73.993209838867187,40.764438629150391,N,317 +id2168488,2,2016-04-29 10:48:35,2016-04-29 10:58:32,1,-73.973884582519531,40.779155731201172,-73.955223083496094,40.779335021972656,N,597 +id3733831,1,2016-02-14 11:14:45,2016-02-14 11:20:33,1,-73.978073120117187,40.745773315429688,-73.965301513671875,40.766201019287109,N,348 +id2084975,1,2016-04-29 17:51:34,2016-04-29 18:06:22,1,-73.987319946289062,40.756088256835937,-73.984962463378906,40.759567260742187,N,888 +id2207086,2,2016-05-08 12:43:40,2016-05-08 12:56:00,1,-73.952545166015625,40.776920318603516,-73.978248596191406,40.783084869384766,N,740 +id1755953,2,2016-03-03 15:50:39,2016-03-03 15:58:10,1,-73.962287902832031,40.795261383056641,-73.950851440429688,40.791881561279297,N,451 +id2764370,1,2016-01-28 10:36:30,2016-01-28 10:39:42,1,-73.969085693359375,40.764091491699219,-73.968910217285156,40.759986877441406,N,192 +id3356554,1,2016-03-22 21:26:07,2016-03-22 21:44:06,1,-73.983757019042969,40.765491485595703,-73.937187194824219,40.854469299316406,N,1079 +id3280570,1,2016-06-04 18:14:00,2016-06-04 18:22:46,2,-73.946701049804687,40.753189086914063,-73.925956726074219,40.762157440185547,N,526 +id2446498,1,2016-01-02 17:19:37,2016-01-02 17:48:10,3,-73.986923217773437,40.761295318603516,-74.005027770996094,40.707096099853516,N,1713 +id1441341,1,2016-05-03 01:50:28,2016-05-03 01:58:12,1,-73.973869323730469,40.752521514892578,-73.996429443359375,40.761093139648437,N,464 +id0310328,2,2016-01-20 22:35:15,2016-01-20 22:45:38,1,-73.986068725585937,40.757278442382812,-73.972953796386719,40.755020141601563,N,623 +id2767359,1,2016-05-24 20:49:34,2016-05-24 21:00:52,1,-73.999496459960938,40.748981475830078,-74.014167785644531,40.713726043701172,N,678 +id1134739,1,2016-01-22 18:12:17,2016-01-22 18:23:40,2,-73.968299865722656,40.761402130126953,-73.987556457519531,40.753074645996094,N,683 +id1041398,2,2016-01-06 08:55:30,2016-01-06 09:15:51,1,-74.0054931640625,40.720001220703125,-73.979019165039063,40.762413024902344,N,1221 +id1581463,2,2016-05-13 18:40:05,2016-05-13 18:49:25,1,-73.955856323242188,40.779018402099609,-73.975959777832031,40.787235260009766,N,560 +id3569657,1,2016-04-27 14:39:21,2016-04-27 14:57:03,1,-74.007354736328125,40.727092742919922,-73.980873107910156,40.745151519775391,N,1062 +id1270281,1,2016-03-20 19:28:01,2016-03-20 19:31:12,1,-73.998779296875,40.744754791259766,-73.993278503417969,40.748863220214844,N,191 +id1874476,1,2016-04-27 18:40:41,2016-04-27 19:03:51,1,-73.969245910644531,40.758583068847656,-74.006767272949219,40.708049774169922,N,1390 +id3217813,2,2016-02-23 14:45:11,2016-02-23 15:08:29,1,-73.959114074707031,40.783271789550781,-73.995513916015625,40.758926391601563,N,1398 +id3116393,1,2016-04-06 06:13:40,2016-04-06 06:16:15,1,-73.975296020507812,40.75201416015625,-73.974777221679688,40.744327545166016,N,155 +id0765126,2,2016-05-13 23:23:14,2016-05-13 23:31:20,3,-73.987625122070313,40.721416473388672,-73.981071472167969,40.7332763671875,N,486 +id3194676,2,2016-02-01 13:18:03,2016-02-01 13:23:46,1,-73.960685729980469,40.775634765625,-73.955978393554688,40.784717559814453,N,343 +id1671146,2,2016-05-27 01:23:36,2016-05-27 01:28:47,1,-73.941764831542969,40.838558197021484,-73.9500732421875,40.825401306152344,N,311 +id1093959,1,2016-03-29 15:58:39,2016-03-29 16:01:44,1,-73.978927612304688,40.7821044921875,-73.971427917480469,40.792694091796875,N,185 +id3981303,1,2016-06-20 09:11:56,2016-06-20 09:21:26,1,-73.96575927734375,40.774436950683594,-73.976821899414063,40.759452819824219,N,570 +id2933516,1,2016-06-28 09:21:30,2016-06-28 09:36:49,1,-73.990997314453125,40.755630493164063,-73.9627685546875,40.768898010253906,N,919 +id3603537,2,2016-03-30 14:10:44,2016-03-30 14:27:12,1,-73.98388671875,40.746170043945313,-73.971031188964844,40.762420654296875,N,988 +id3479566,1,2016-04-13 16:30:27,2016-04-13 16:43:01,1,-73.962348937988281,40.769767761230469,-73.976005554199219,40.750583648681641,N,754 +id0878372,1,2016-05-21 21:50:00,2016-05-21 21:55:08,1,-73.9423828125,40.837677001953125,-73.949592590332031,40.827869415283203,N,308 +id3497500,1,2016-02-17 18:02:52,2016-02-17 18:36:57,1,-73.870765686035156,40.773639678955078,-73.963546752929688,40.679298400878906,N,2045 +id3125977,1,2016-02-12 13:45:26,2016-02-12 13:54:14,1,-73.962028503417969,40.767932891845703,-73.972496032714844,40.759788513183594,N,528 +id0779108,2,2016-06-25 10:32:04,2016-06-25 10:37:15,1,-73.984634399414062,40.735481262207031,-73.993064880371094,40.727024078369141,N,311 +id1315039,1,2016-01-20 20:36:51,2016-01-20 20:51:26,1,-73.982368469238281,40.740142822265625,-73.981246948242188,40.7711181640625,N,875 +id0312324,1,2016-04-13 12:54:57,2016-04-13 13:38:54,1,-73.95458984375,40.765506744384766,-73.974845886230469,40.783084869384766,N,2637 +id1598108,2,2016-02-26 12:50:13,2016-02-26 12:56:57,6,-73.985794067382812,40.761417388916016,-74.004798889160156,40.751937866210937,N,404 +id0619846,2,2016-03-13 20:26:22,2016-03-13 20:46:01,2,-73.863937377929688,40.770038604736328,-73.978401184082031,40.748226165771484,N,1179 +id3831886,2,2016-05-10 01:18:27,2016-05-10 01:25:16,1,-73.981727600097656,40.758045196533203,-74.001640319824219,40.745735168457031,N,409 +id0986178,1,2016-04-24 01:53:40,2016-04-24 02:07:21,2,-73.988075256347656,40.764636993408203,-73.956977844238281,40.766502380371094,N,821 +id1569398,1,2016-02-20 04:16:10,2016-02-20 04:21:37,1,-73.958206176757813,40.800861358642578,-73.941787719726563,40.817657470703125,N,327 +id1558037,1,2016-04-27 18:14:57,2016-04-27 18:31:24,1,-73.957809448242188,40.768611907958984,-73.982086181640625,40.768882751464844,N,987 +id2988964,2,2016-01-06 12:27:53,2016-01-06 12:38:32,6,-73.9912109375,40.734996795654297,-74.008026123046875,40.739688873291016,N,639 +id2214633,2,2016-03-26 00:09:24,2016-03-26 00:25:46,5,-73.961906433105469,40.709789276123047,-73.972038269042969,40.744838714599609,N,982 +id3861699,2,2016-04-06 15:12:12,2016-04-06 15:25:33,1,-73.983757019042969,40.756740570068359,-73.973770141601562,40.764228820800781,N,801 +id3721379,2,2016-06-11 07:18:23,2016-06-11 07:34:53,2,-73.986579895019531,40.750408172607422,-73.871040344238281,40.774166107177734,N,990 +id1115780,1,2016-06-13 10:48:43,2016-06-13 11:07:44,1,-73.988014221191406,40.731964111328125,-73.971511840820313,40.755035400390625,N,1141 +id1517924,2,2016-05-10 08:01:30,2016-05-10 08:10:06,2,-74.006904602050781,40.731533050537109,-73.993339538574219,40.747276306152344,N,516 +id1467997,1,2016-01-04 14:56:49,2016-01-04 15:54:20,1,-73.78204345703125,40.644874572753906,-73.988410949707031,40.759113311767578,N,3451 +id2484170,2,2016-02-27 15:14:14,2016-02-27 15:36:52,1,-73.986000061035156,40.768028259277344,-73.980636596679688,40.742748260498047,N,1358 +id2818810,1,2016-01-06 20:34:48,2016-01-06 20:45:59,1,-73.975593566894531,40.748611450195313,-73.948539733886719,40.778118133544922,N,671 +id1477912,1,2016-01-07 07:01:53,2016-01-07 07:07:17,1,-73.987861633300781,40.755950927734375,-73.976478576660156,40.755149841308594,N,324 +id2693371,2,2016-03-10 00:00:08,2016-03-10 00:17:16,2,-73.9527587890625,40.772121429443359,-73.989418029785156,40.758049011230469,N,1028 +id3261475,2,2016-01-25 21:45:08,2016-01-25 21:49:43,2,-73.985015869140625,40.769031524658203,-73.978302001953125,40.766475677490234,N,275 +id0606867,1,2016-06-09 09:11:48,2016-06-09 09:48:25,1,-73.955650329589844,40.785003662109375,-73.991844177246094,40.731151580810547,N,2197 +id3719691,2,2016-04-07 21:52:59,2016-04-07 21:58:43,1,-73.983322143554688,40.760704040527344,-73.975051879882813,40.758804321289063,N,344 +id3296861,2,2016-04-01 18:14:13,2016-04-01 18:16:54,1,-74.005119323730469,40.728588104248047,-74.001121520996094,40.731559753417969,N,161 +id0125862,1,2016-05-19 11:37:10,2016-05-19 11:48:53,2,-73.987693786621094,40.749881744384766,-73.973068237304688,40.757137298583984,N,703 +id0979296,1,2016-01-21 18:44:25,2016-01-21 18:52:09,1,-74.005027770996094,40.737396240234375,-73.989898681640625,40.74261474609375,N,464 +id0698724,2,2016-06-10 19:24:27,2016-06-10 19:40:34,2,-73.976951599121094,40.788051605224609,-73.998207092285156,40.761051177978516,N,967 +id0138100,2,2016-03-03 18:11:00,2016-03-03 18:16:11,1,-73.955978393554688,40.783100128173828,-73.959716796875,40.775310516357422,N,311 +id1894503,1,2016-03-03 18:16:04,2016-03-03 18:21:19,1,-73.966392517089844,40.794334411621094,-73.979476928710937,40.781951904296875,N,315 +id3638930,1,2016-04-12 14:39:35,2016-04-12 14:49:08,1,-73.980560302734375,40.757083892822266,-73.973106384277344,40.750358581542969,N,573 +id0103513,2,2016-02-15 04:10:30,2016-02-15 04:37:15,5,-73.991378784179688,40.744911193847656,-74.018898010253906,40.640361785888672,N,1605 +id2563205,2,2016-04-28 19:57:38,2016-04-28 20:04:10,3,-73.989860534667969,40.738422393798828,-73.989265441894531,40.726390838623047,N,392 +id1132856,1,2016-03-19 03:48:31,2016-03-19 04:04:09,2,-73.933181762695313,40.703075408935547,-74.007301330566406,40.707649230957031,N,938 +id2009909,2,2016-03-28 08:39:29,2016-03-28 08:45:58,1,-73.990463256835938,40.7718505859375,-73.973838806152344,40.7646484375,N,389 +id3064097,2,2016-06-15 13:33:21,2016-06-15 13:39:40,1,-73.985771179199219,40.741008758544922,-73.975517272949219,40.755130767822266,N,379 +id3208799,2,2016-03-03 21:32:07,2016-03-03 21:42:05,2,-73.980690002441406,40.774696350097656,-73.9730224609375,40.755340576171875,N,598 +id1473511,2,2016-05-22 23:25:47,2016-05-22 23:27:30,1,-73.996879577636719,40.737331390380859,-73.989349365234375,40.747890472412109,N,103 +id1520977,1,2016-01-20 13:45:02,2016-01-20 14:13:03,1,-73.977691650390625,40.757076263427734,-74.010299682617188,40.711475372314453,N,1681 +id2295782,2,2016-02-02 13:14:44,2016-02-02 13:39:32,2,-73.870964050292969,40.773815155029297,-73.954124450683594,40.787281036376953,N,1488 +id3172404,2,2016-02-03 21:30:44,2016-02-03 21:38:58,1,-73.972854614257813,40.753253936767578,-73.954193115234375,40.787193298339844,N,494 +id0088551,2,2016-06-07 19:19:44,2016-06-07 19:23:31,6,-73.961479187011719,40.771320343017578,-73.956375122070313,40.784202575683594,N,227 +id2313333,1,2016-04-22 23:05:37,2016-04-22 23:18:18,1,-73.999099731445313,40.726551055908203,-73.998916625976563,40.745510101318359,N,761 +id0082053,2,2016-02-17 19:13:01,2016-02-17 19:29:20,1,-73.973052978515625,40.754478454589844,-74.004653930664062,40.740680694580078,N,979 +id0040073,2,2016-02-15 18:50:58,2016-02-15 18:57:36,2,-73.975143432617188,40.751960754394531,-73.961456298828125,40.756763458251953,N,398 +id2979542,2,2016-01-08 12:03:00,2016-01-08 12:20:00,2,-73.977760314941406,40.778781890869141,-73.974769592285156,40.761756896972656,N,1020 +id1340269,2,2016-01-21 01:48:22,2016-01-21 01:52:31,2,-73.954376220703125,40.777881622314453,-73.936500549316406,40.799781799316406,N,249 +id3116877,2,2016-02-15 17:57:22,2016-02-15 18:10:57,1,-74.009536743164062,40.712539672851563,-73.987983703613281,40.728160858154297,N,815 +id1218518,1,2016-06-28 08:44:03,2016-06-28 08:51:18,2,-73.962532043457031,40.767246246337891,-73.947364807128906,40.779857635498047,N,435 +id3699924,2,2016-02-02 11:45:35,2016-02-02 11:47:36,1,-73.965377807617187,40.768833160400391,-73.965736389160156,40.771026611328125,N,121 +id3580544,1,2016-05-21 12:37:14,2016-05-21 12:45:41,1,-73.975639343261719,40.781913757324219,-73.989883422851562,40.762355804443359,N,507 +id1538591,1,2016-06-03 19:53:48,2016-06-03 20:11:40,2,-73.992210388183594,40.753810882568359,-73.949844360351563,40.784450531005859,N,1072 +id3397343,1,2016-01-06 07:20:24,2016-01-06 07:24:40,1,-73.955894470214844,40.779735565185547,-73.952713012695312,40.791660308837891,N,256 +id1823202,2,2016-05-03 19:40:28,2016-05-03 19:50:22,1,-73.988563537597656,40.758930206298828,-73.983238220214844,40.781669616699219,N,594 +id1458877,2,2016-01-27 10:23:38,2016-01-27 10:31:49,2,-73.958534240722656,40.76483154296875,-73.981147766113281,40.774272918701172,N,491 +id0671859,1,2016-01-30 18:34:56,2016-01-30 18:38:28,1,-73.989631652832031,40.757045745849609,-73.987930297851563,40.764888763427734,N,212 +id1987064,1,2016-06-17 09:19:54,2016-06-17 09:44:34,1,-73.986610412597656,40.729373931884766,-73.990623474121094,40.750171661376953,N,1480 +id1006773,1,2016-02-04 20:57:54,2016-02-04 20:58:06,1,-73.998756408691406,40.760257720947266,-73.998764038085938,40.760227203369141,N,12 +id2325371,2,2016-05-28 01:22:15,2016-05-28 01:36:48,6,-74.004035949707031,40.741981506347656,-73.977622985839844,40.765243530273437,N,873 +id1089627,1,2016-06-16 09:26:52,2016-06-16 09:49:20,1,-73.989997863769531,40.772136688232422,-73.973686218261719,40.753753662109375,N,1348 +id3897837,2,2016-01-14 08:05:15,2016-01-14 08:10:09,1,-73.939231872558594,40.816539764404297,-73.948928833007813,40.813388824462891,N,294 +id2049299,1,2016-02-17 22:25:19,2016-02-17 22:31:14,1,-73.9658203125,40.762161254882813,-73.946586608886719,40.782367706298828,N,355 +id3976079,1,2016-01-22 13:04:48,2016-01-22 13:23:49,1,-73.966224670410156,40.7677001953125,-73.986503601074219,40.737186431884766,N,1141 +id3390155,2,2016-03-30 20:35:08,2016-03-30 20:51:06,1,-73.985435485839844,40.744163513183594,-73.949249267578125,40.779449462890625,N,958 +id3453053,2,2016-03-16 15:30:48,2016-03-16 15:50:46,1,-74.005058288574219,40.706764221191406,-73.985565185546875,40.744514465332031,N,1198 +id1233566,2,2016-06-15 21:41:49,2016-06-15 21:47:45,1,-73.98150634765625,40.7440185546875,-73.996040344238281,40.737930297851562,N,356 +id3009400,2,2016-01-22 20:55:09,2016-01-22 21:11:28,1,-73.9783935546875,40.782718658447266,-73.9801025390625,40.745819091796875,N,979 +id2786818,2,2016-06-20 10:21:31,2016-06-20 10:27:55,1,-73.9886474609375,40.778430938720703,-73.976539611816406,40.78662109375,N,384 +id2583905,1,2016-03-12 11:12:43,2016-03-12 11:21:21,1,-73.96124267578125,40.771926879882813,-73.978866577148438,40.781673431396484,N,518 +id3937466,2,2016-02-14 23:49:16,2016-02-14 23:54:38,1,-73.987373352050781,40.720291137695313,-73.983055114746094,40.714611053466797,N,322 +id1690418,1,2016-02-27 19:12:23,2016-02-27 19:32:06,1,-73.972480773925781,40.796634674072266,-73.977981567382812,40.763957977294922,N,1183 +id2691110,1,2016-06-08 00:47:41,2016-06-08 00:52:16,1,-73.982269287109375,40.762348175048828,-73.977897644042969,40.753810882568359,N,275 +id1080914,2,2016-06-07 19:34:33,2016-06-07 19:49:42,1,-74.012580871582031,40.702541351318359,-73.998847961425781,40.730640411376953,N,909 +id3415466,2,2016-02-22 15:14:58,2016-02-22 15:24:02,1,-74.004646301269531,40.724159240722656,-74.010612487792969,40.709018707275391,N,544 +id3926370,2,2016-02-28 01:47:43,2016-02-28 02:01:23,1,-73.930107116699219,40.754505157470703,-73.900169372558594,40.777660369873047,N,820 +id3521581,1,2016-02-16 07:28:56,2016-02-16 07:39:36,1,-73.991294860839844,40.749748229980469,-73.975921630859375,40.754253387451172,N,640 +id0310374,2,2016-05-27 18:54:24,2016-05-27 19:03:35,2,-73.931373596191406,40.814266204833984,-73.9384765625,40.824771881103516,N,551 +id3177158,1,2016-03-04 07:04:03,2016-03-04 07:09:27,1,-73.979408264160156,40.781673431396484,-73.985702514648437,40.770442962646484,N,324 +id1963410,1,2016-06-30 21:43:52,2016-06-30 21:50:36,2,-73.989547729492188,40.744350433349609,-73.985321044921875,40.731884002685547,N,404 +id2850623,2,2016-06-22 17:26:16,2016-06-22 17:29:48,1,-73.980514526367188,40.754341125488281,-73.988029479980469,40.748992919921875,N,212 +id3401826,1,2016-04-27 10:20:02,2016-04-27 11:01:32,2,-73.992538452148438,40.756557464599609,-73.789756774902344,40.643001556396484,N,2490 +id2904991,2,2016-02-10 19:34:39,2016-02-10 20:15:29,1,-73.776756286621094,40.645233154296875,-73.997955322265625,40.732967376708984,N,2450 +id3267705,2,2016-03-08 22:51:30,2016-03-08 23:05:29,5,-73.989631652832031,40.757591247558594,-74.016212463378906,40.716339111328125,N,839 +id3999175,1,2016-02-14 20:25:12,2016-02-14 20:31:23,1,-74.017158508300781,40.705429077148438,-74.016029357910156,40.715019226074219,N,371 +id3316669,2,2016-06-17 13:41:23,2016-06-17 13:55:39,1,-74.003532409667969,40.748451232910156,-73.991928100585938,40.765548706054688,N,856 +id1571311,2,2016-05-16 21:57:06,2016-05-16 22:09:54,1,-73.9832763671875,40.744358062744141,-73.947898864746094,40.774715423583984,N,768 +id1415229,1,2016-05-14 16:36:36,2016-05-14 16:44:48,4,-74.014198303222656,40.713588714599609,-74.004470825195312,40.721652984619141,N,492 +id1841568,1,2016-05-27 16:36:44,2016-05-27 16:47:00,1,-74.007400512695313,40.743156433105469,-73.986480712890625,40.766891479492188,N,616 +id1696336,2,2016-01-19 11:26:57,2016-01-19 11:45:57,1,-73.979141235351563,40.762149810791016,-73.995170593261719,40.749763488769531,N,1140 +id0715856,1,2016-03-13 04:58:52,2016-03-13 05:01:39,4,-73.995643615722656,40.764610290527344,-73.991592407226562,40.764820098876953,N,167 +id0855416,2,2016-05-22 11:40:24,2016-05-22 11:50:45,1,-73.994651794433594,40.750526428222656,-73.977180480957031,40.763889312744141,N,621 +id1100001,2,2016-04-05 20:33:57,2016-04-05 20:43:05,1,-73.994171142578125,40.756240844726563,-73.982307434082031,40.762199401855469,N,548 +id2592532,1,2016-04-10 21:17:46,2016-04-10 21:22:23,1,-73.919944763183594,40.766029357910156,-73.91705322265625,40.755958557128906,N,277 +id1725341,2,2016-04-30 21:50:22,2016-04-30 22:08:40,1,-73.984779357910156,40.697578430175781,-73.97491455078125,40.741729736328125,N,1098 +id2679677,2,2016-04-13 18:01:55,2016-04-13 18:12:44,5,-73.975578308105469,40.757991790771484,-73.964607238769531,40.770061492919922,N,649 +id3795475,2,2016-06-22 19:21:41,2016-06-22 19:33:38,1,-73.974716186523438,40.746540069580078,-73.925270080566406,40.738788604736328,N,717 +id1377941,2,2016-05-23 04:29:12,2016-05-23 04:59:25,1,-73.954246520996094,40.805671691894531,-73.776657104492187,40.644889831542969,N,1813 +id0316786,2,2016-02-21 00:22:52,2016-02-21 00:27:14,1,-73.978050231933594,40.763301849365234,-73.984809875488281,40.759521484375,N,262 +id1845927,1,2016-02-10 19:37:08,2016-02-10 19:48:58,1,-73.978935241699219,40.765228271484375,-73.970466613769531,40.751815795898438,N,710 +id1792693,1,2016-01-31 10:41:34,2016-01-31 10:58:03,1,-74.005531311035156,40.706424713134766,-73.976181030273438,40.760543823242188,N,989 +id3099394,1,2016-05-31 20:44:18,2016-05-31 20:52:07,1,-73.986404418945313,40.740028381347656,-73.981048583984375,40.729484558105469,N,469 +id2001045,1,2016-05-05 07:13:38,2016-05-05 07:23:54,1,-73.990730285644531,40.750812530517578,-73.996749877929687,40.726837158203125,N,616 +id2425940,1,2016-05-25 07:00:28,2016-05-25 07:10:52,1,-73.964462280273438,40.761394500732422,-73.985160827636719,40.753273010253906,N,624 +id1998898,1,2016-01-30 03:35:49,2016-01-30 03:48:32,1,-74.000701904296875,40.731636047363281,-73.960319519042969,40.761924743652344,N,763 +id1429499,2,2016-03-12 18:15:58,2016-03-12 18:29:15,1,-73.982513427734375,40.748199462890625,-74.005523681640625,40.738899230957031,N,797 +id1062146,1,2016-06-25 01:47:52,2016-06-25 01:59:51,1,-73.985336303710938,40.759525299072266,-74.00274658203125,40.749755859375,N,719 +id0258690,1,2016-05-24 02:11:56,2016-05-24 02:19:16,1,-73.957366943359375,40.769878387451172,-73.942420959472656,40.789764404296875,N,440 +id1209881,2,2016-05-21 18:32:59,2016-05-21 18:36:13,1,-73.959053039550781,40.771678924560547,-73.956413269042969,40.781261444091797,N,194 +id2824426,1,2016-01-13 17:24:58,2016-01-13 17:32:01,1,-74.001266479492188,40.727779388427734,-74.008583068847656,40.720481872558594,N,423 +id1579870,2,2016-05-10 15:57:34,2016-05-10 16:13:17,1,-73.9544677734375,40.783771514892578,-73.973709106445313,40.792301177978516,N,943 +id0087742,1,2016-03-05 21:11:34,2016-03-05 21:18:40,1,-73.978240966796875,40.724876403808594,-73.991615295410156,40.726825714111328,N,426 +id0578918,2,2016-01-31 08:11:06,2016-01-31 08:15:21,2,-73.992271423339844,40.730724334716797,-73.998588562011719,40.721866607666016,N,255 +id1743857,1,2016-03-18 21:50:58,2016-03-18 21:56:39,3,-73.976898193359375,40.759056091308594,-73.986640930175781,40.746692657470703,N,341 +id2056544,2,2016-06-15 07:07:37,2016-06-15 07:33:42,6,-73.992210388183594,40.694793701171875,-73.992362976074219,40.749275207519531,N,1565 +id0967424,1,2016-05-14 00:58:54,2016-05-14 01:13:38,1,-73.992546081542969,40.715221405029297,-73.956169128417969,40.681324005126953,N,884 +id3745982,1,2016-03-19 04:32:48,2016-03-19 04:56:33,1,-73.980018615722656,40.760787963867188,-73.855079650878906,40.704399108886719,N,1425 +id3509810,2,2016-02-14 01:36:14,2016-02-14 01:45:33,1,-73.97882080078125,40.724208831787109,-74.0169677734375,40.707710266113281,N,559 +id0674054,1,2016-04-17 02:50:10,2016-04-17 02:58:33,1,-73.952720642089844,40.806545257568359,-73.935554504394531,40.821224212646484,N,503 +id2152955,2,2016-03-02 22:08:40,2016-03-02 22:12:09,1,-74.00006103515625,40.726581573486328,-73.999549865722656,40.73345947265625,N,209 +id2033465,2,2016-02-14 19:21:49,2016-02-14 19:32:40,2,-73.988067626953125,40.759529113769531,-73.990806579589844,40.750469207763672,N,651 +id2864380,1,2016-03-27 04:12:31,2016-03-27 04:28:53,1,-73.876182556152344,40.768230438232422,-73.944847106933594,40.823581695556641,N,982 +id0567903,2,2016-05-17 09:39:39,2016-05-17 09:54:25,1,-73.966094970703125,40.789852142333984,-73.957748413085937,40.768608093261719,N,886 +id3748685,1,2016-05-14 15:34:31,2016-05-14 15:38:20,1,-73.997474670410156,40.737602233886719,-74.007858276367188,40.742607116699219,N,229 +id1663509,1,2016-02-12 17:08:38,2016-02-12 17:11:19,1,-73.970016479492188,40.765071868896484,-73.96356201171875,40.774227142333984,N,161 +id2420297,2,2016-02-15 00:14:04,2016-02-15 00:26:07,1,-73.975379943847656,40.761608123779297,-73.965728759765625,40.803859710693359,N,723 +id0271704,2,2016-02-22 17:49:20,2016-02-22 17:56:44,1,-73.953262329101563,40.782703399658203,-73.964584350585938,40.770133972167969,N,444 +id0204196,2,2016-03-22 20:39:41,2016-03-22 20:50:05,1,-73.985816955566406,40.759613037109375,-73.971031188964844,40.752643585205078,N,624 +id3022285,2,2016-01-04 07:28:17,2016-01-04 07:35:09,2,-73.991386413574219,40.749858856201172,-73.982650756835938,40.739749908447266,N,412 +id1114129,1,2016-03-08 20:50:22,2016-03-08 21:20:54,1,-74.008323669433594,40.716579437255859,-73.952957153320313,40.776763916015625,N,1832 +id2472585,1,2016-05-05 07:29:06,2016-05-05 07:56:43,1,-73.973625183105469,40.794757843017578,-73.993934631347656,40.743953704833984,N,1657 +id3287225,2,2016-06-19 18:38:03,2016-06-19 18:43:16,1,-73.992996215820313,40.752971649169922,-74.005073547363281,40.756259918212891,N,313 +id3457898,1,2016-02-04 22:36:30,2016-02-04 22:53:37,1,-73.964042663574219,40.763748168945313,-74.016326904296875,40.708011627197266,N,1027 +id0097497,2,2016-05-27 03:01:31,2016-05-27 03:06:03,1,-73.985427856445313,40.758380889892578,-73.989089965820313,40.743080139160156,N,272 +id3348045,1,2016-05-19 06:49:23,2016-05-19 06:53:02,2,-73.991928100585938,40.749813079833984,-73.988502502441406,40.740951538085938,N,219 +id2175073,1,2016-03-14 10:45:05,2016-03-14 10:58:27,1,-73.991439819335938,40.750247955322266,-73.9820556640625,40.746051788330078,N,802 +id3070278,2,2016-02-16 14:00:07,2016-02-16 14:24:18,1,-73.969940185546875,40.688579559326172,-73.965843200683594,40.714500427246094,N,1451 +id3006489,1,2016-01-17 22:39:27,2016-01-17 22:58:21,1,-73.96575927734375,40.754356384277344,-73.856475830078125,40.73748779296875,N,1134 +id0206832,2,2016-02-04 10:48:07,2016-02-04 11:18:33,1,-74.008445739746094,40.729579925537109,-73.980415344238281,40.751331329345703,N,1826 +id3274160,2,2016-06-10 06:04:50,2016-06-10 06:16:59,2,-73.996116638183594,40.738216400146484,-73.956367492675781,40.764545440673828,N,729 +id2411836,1,2016-02-22 08:02:56,2016-02-22 08:49:24,1,-73.862747192382812,40.768951416015625,-73.982925415039062,40.750373840332031,N,2788 +id2574806,2,2016-01-19 19:46:11,2016-01-19 20:23:35,2,-73.874534606933594,40.774101257324219,-74.004043579101563,40.748081207275391,N,2244 +id0548963,1,2016-05-01 11:03:32,2016-05-01 11:07:51,1,-73.955307006835938,40.782962799072266,-73.957504272460938,40.774261474609375,N,259 +id3294169,1,2016-02-05 07:02:12,2016-02-05 07:11:37,1,-74.010360717773438,40.718681335449219,-73.989669799804688,40.702362060546875,N,565 +id0347809,2,2016-03-18 00:10:41,2016-03-18 00:29:27,1,-73.982963562011719,40.76763916015625,-73.95751953125,40.729843139648438,N,1126 +id0170161,2,2016-05-07 23:06:51,2016-05-07 23:20:47,1,-73.988838195800781,40.758098602294922,-73.97705078125,40.764610290527344,N,836 +id0963173,2,2016-03-26 12:24:39,2016-03-26 12:37:48,1,-73.960189819335938,40.776348114013672,-73.977005004882812,40.746898651123047,N,789 +id3209718,1,2016-06-16 19:16:57,2016-06-16 19:22:44,1,-74.003097534179688,40.749130249023438,-73.995620727539062,40.759899139404297,N,347 +id2403788,1,2016-02-10 04:32:30,2016-02-10 04:44:30,1,-73.98321533203125,40.762855529785156,-74.006782531738281,40.715236663818359,N,720 +id0234187,1,2016-04-19 20:33:21,2016-04-19 20:40:25,1,-73.973541259765625,40.754501342773438,-73.987442016601563,40.738975524902344,N,424 +id2498887,1,2016-05-19 06:52:26,2016-05-19 07:13:25,1,-73.965301513671875,40.771434783935547,-74.007957458496094,40.705783843994141,N,1259 +id0597143,1,2016-02-29 19:17:59,2016-02-29 19:26:54,1,-73.989395141601562,40.733470916748047,-73.986640930175781,40.752208709716797,N,535 +id0295275,1,2016-05-25 21:22:37,2016-05-25 21:39:35,2,-73.956817626953125,40.745735168457031,-73.990333557128906,40.730304718017578,N,1018 +id1844035,1,2016-02-18 08:21:25,2016-02-18 08:30:27,3,-74.008659362792969,40.71893310546875,-74.003005981445313,40.749599456787109,N,542 +id2389704,1,2016-06-14 22:41:15,2016-06-14 22:47:48,1,-73.971298217773438,40.756431579589844,-73.963630676269531,40.771759033203125,N,393 +id2319604,1,2016-02-03 12:14:44,2016-02-03 12:18:34,1,-74.005691528320313,40.726364135742188,-74.009468078613281,40.715232849121094,N,230 +id3046575,1,2016-03-28 21:32:43,2016-03-28 21:38:24,1,-73.967903137207031,40.759323120117188,-73.947708129882813,40.775096893310547,N,341 +id1862623,2,2016-01-22 06:17:19,2016-01-22 06:23:50,6,-73.992050170898438,40.7513427734375,-73.975784301757812,40.751411437988281,N,391 +id3904145,1,2016-05-16 16:37:27,2016-05-16 16:52:21,1,-73.991767883300781,40.726215362548828,-74.005363464355469,40.7449951171875,N,894 +id0752534,2,2016-02-03 14:47:25,2016-02-03 14:58:30,5,-74.008323669433594,40.714111328125,-73.993911743164062,40.727470397949219,N,665 +id3136294,2,2016-06-28 20:30:51,2016-06-28 20:36:30,3,-73.961540222167969,40.776939392089844,-73.947792053222656,40.781131744384766,N,339 +id1157976,2,2016-04-16 19:16:20,2016-04-16 19:31:36,4,-74.000022888183594,40.743133544921875,-73.989540100097656,40.761360168457031,N,916 +id0206721,2,2016-05-21 11:45:55,2016-05-21 12:06:13,3,-73.975296020507812,40.751609802246094,-73.989936828613281,40.767047882080078,N,1218 +id2244620,1,2016-01-22 20:55:23,2016-01-22 21:01:22,1,-73.970748901367188,40.758388519287109,-73.960578918457031,40.771419525146484,N,359 +id2434061,2,2016-04-11 11:26:41,2016-04-11 11:34:24,1,-73.958381652832031,40.772712707519531,-73.953445434570312,40.78814697265625,N,463 +id3156446,1,2016-04-06 22:33:44,2016-04-06 22:46:36,1,-73.991218566894531,40.750038146972656,-73.987663269042969,40.724212646484375,N,772 +id1878188,2,2016-01-13 18:02:12,2016-01-13 18:09:57,1,-73.974960327148438,40.741691589355469,-73.988296508789063,40.734668731689453,N,465 +id2228486,2,2016-03-05 22:53:52,2016-03-05 23:01:15,1,-73.9788818359375,40.756050109863281,-73.987937927246094,40.743408203125,N,443 +id2465018,1,2016-06-22 15:33:28,2016-06-22 15:58:45,1,-74.006004333496094,40.706645965576172,-73.977157592773438,40.752277374267578,N,1517 +id1209356,2,2016-03-08 13:58:17,2016-03-08 14:07:49,1,-73.992607116699219,40.758609771728516,-74.003707885742187,40.74285888671875,N,572 +id2750783,1,2016-05-22 18:15:57,2016-05-22 18:29:05,1,-73.991340637207031,40.765090942382813,-73.964607238769531,40.772960662841797,N,788 +id2376856,2,2016-04-24 14:09:56,2016-04-24 14:11:51,1,-73.954551696777344,40.778156280517578,-73.9510498046875,40.782627105712891,N,115 +id3018651,1,2016-05-10 13:28:01,2016-05-10 13:39:16,4,-73.973541259765625,40.763698577880859,-73.982330322265625,40.762332916259766,N,675 +id3708782,1,2016-05-20 20:11:18,2016-05-20 20:16:41,1,-73.961929321289062,40.770977020263672,-73.968673706054688,40.764694213867188,N,323 +id0438695,2,2016-01-12 08:31:27,2016-01-12 08:37:13,1,-73.981971740722656,40.765388488769531,-73.97186279296875,40.760318756103516,N,346 +id3350388,2,2016-02-26 01:33:14,2016-02-26 01:37:08,1,-73.977958679199219,40.75775146484375,-73.978668212890625,40.750980377197266,N,234 +id3898359,1,2016-06-12 10:16:36,2016-06-12 10:24:10,1,-73.992546081542969,40.749294281005859,-73.98199462890625,40.766445159912109,N,454 +id2682431,1,2016-06-10 10:17:59,2016-06-10 10:24:21,1,-73.971038818359375,40.761447906494141,-73.980514526367188,40.770065307617187,N,382 +id2898746,2,2016-02-23 07:51:01,2016-02-23 07:58:03,1,-73.953590393066406,40.790840148925781,-73.968421936035156,40.787391662597656,N,422 +id1613333,2,2016-02-29 18:28:08,2016-02-29 18:33:53,6,-73.987770080566406,40.750213623046875,-73.988319396972656,40.755382537841797,N,345 +id2731018,2,2016-05-08 21:00:09,2016-05-08 21:08:40,6,-73.973457336425781,40.757869720458984,-73.967910766601563,40.787071228027344,N,511 +id3546111,1,2016-01-07 00:08:51,2016-01-07 00:21:41,1,-73.979293823242187,40.752815246582031,-73.980659484863281,40.788253784179688,N,770 +id1989736,1,2016-04-16 02:56:31,2016-04-16 03:05:20,1,-73.977653503417969,40.745948791503906,-73.978836059570313,40.761890411376953,N,529 +id3867200,2,2016-06-12 00:49:09,2016-06-12 01:12:42,2,-74.005363464355469,40.741085052490234,-73.953315734863281,40.776756286621094,N,1413 +id1278777,2,2016-05-18 22:21:27,2016-05-18 22:36:35,6,-73.976982116699219,40.743339538574219,-73.988433837890625,40.720191955566406,N,908 +id1717622,1,2016-02-25 14:08:57,2016-02-25 14:19:10,1,-73.95159912109375,40.774200439453125,-73.9571533203125,40.762405395507813,N,613 +id0784505,1,2016-04-05 08:00:49,2016-04-05 08:05:12,1,-73.9913330078125,40.749832153320313,-73.989128112792969,40.743152618408203,N,263 +id3498943,2,2016-05-05 19:20:32,2016-05-05 19:36:06,1,-74.006843566894531,40.730331420898438,-73.994461059570312,40.718196868896484,N,934 +id3972553,1,2016-05-20 11:15:54,2016-05-20 11:27:59,1,-73.9638671875,40.766117095947266,-73.976020812988281,40.75750732421875,N,725 +id1864279,1,2016-03-02 11:08:22,2016-03-02 11:29:51,1,-73.954193115234375,40.764064788818359,-73.971366882324219,40.794559478759766,N,1289 +id1107147,2,2016-03-06 03:21:48,2016-03-06 03:52:15,1,-74.005821228027344,40.740238189697266,-73.811119079589844,40.742145538330078,N,1827 +id2709671,1,2016-05-19 19:26:35,2016-05-19 19:35:42,1,-73.990959167480469,40.736278533935547,-74.002113342285156,40.7337646484375,N,547 +id0534927,1,2016-05-07 15:50:37,2016-05-07 16:11:49,3,-73.992446899414062,40.730281829833984,-73.95184326171875,40.723251342773438,N,1272 +id2561929,1,2016-06-24 11:07:57,2016-06-24 11:12:00,1,-73.987571716308594,40.775501251220703,-73.978782653808594,40.772136688232422,N,243 +id2176009,2,2016-03-26 01:33:25,2016-03-26 01:43:56,1,-73.990432739257813,40.756008148193359,-73.971717834472656,40.798870086669922,N,631 +id2989108,2,2016-06-06 20:19:46,2016-06-06 20:24:25,1,-73.975502014160156,40.750339508056641,-73.981758117675781,40.736671447753906,N,279 +id1214618,1,2016-04-12 09:29:13,2016-04-12 10:02:35,1,-73.959564208984375,40.777729034423828,-74.000541687011719,40.7423095703125,N,2002 +id1870644,1,2016-03-28 09:01:53,2016-03-28 09:13:44,1,-73.952583312988281,40.772567749023438,-73.966926574707031,40.759773254394531,Y,711 +id1831274,2,2016-06-05 02:16:25,2016-06-05 02:40:01,4,-73.782470703125,40.644798278808594,-73.917587280273437,40.657131195068359,N,1416 +id0036068,2,2016-04-07 08:17:39,2016-04-07 08:32:44,3,-73.9747314453125,40.751621246337891,-74.011322021484375,40.702419281005859,N,905 +id2083859,1,2016-01-13 17:08:05,2016-01-13 17:13:41,1,-74.000259399414063,40.742965698242188,-73.989860534667969,40.7393798828125,N,336 +id0771212,1,2016-06-04 01:32:19,2016-06-04 01:39:06,1,-73.993301391601563,40.727916717529297,-73.9814453125,40.745349884033203,N,407 +id1915384,1,2016-05-03 14:50:14,2016-05-03 15:17:23,1,-73.980079650878906,40.775661468505859,-73.950157165527344,40.784076690673828,N,1629 +id1177171,2,2016-04-14 22:38:00,2016-04-14 22:51:04,1,-73.978271484375,40.7772216796875,-73.952217102050781,40.781448364257813,N,784 +id1033478,2,2016-06-16 02:25:38,2016-06-16 02:27:15,6,-74.007484436035156,40.742973327636719,-74.002670288085937,40.749691009521484,N,97 +id3287084,1,2016-05-10 15:19:01,2016-05-10 16:12:52,2,-73.985809326171875,40.722755432128906,-73.787673950195313,40.647510528564453,N,3231 +id2380825,2,2016-06-08 21:39:13,2016-06-08 22:05:25,1,-73.982940673828125,40.74468994140625,-73.930412292480469,40.770011901855469,N,1572 +id3770855,2,2016-04-30 21:33:18,2016-04-30 21:37:42,1,-74.003028869628906,40.731128692626953,-74.005729675292969,40.720298767089844,N,264 +id2259046,1,2016-06-17 11:13:31,2016-06-17 11:26:45,1,-73.97125244140625,40.748115539550781,-73.988761901855469,40.733989715576172,N,794 +id3968643,1,2016-05-22 00:23:29,2016-05-22 00:37:38,2,-74.00946044921875,40.708965301513672,-73.994766235351563,40.743820190429688,N,849 +id3474490,2,2016-05-04 14:36:14,2016-05-04 14:44:04,1,-73.959953308105469,40.762290954589844,-73.974517822265625,40.736629486083984,N,470 +id1713507,2,2016-03-06 03:27:49,2016-03-06 03:48:39,3,-73.988998413085938,40.748176574707031,-73.969696044921875,40.79119873046875,N,1250 +id2757789,2,2016-06-29 22:51:27,2016-06-29 23:00:12,1,-74.004890441894531,40.737461090087891,-74.000846862792969,40.727069854736328,N,525 +id3605434,2,2016-01-22 16:24:28,2016-01-22 16:32:57,1,-73.964447021484375,40.772987365722656,-73.979660034179688,40.783847808837891,N,509 +id3751319,1,2016-06-24 18:14:20,2016-06-24 19:31:06,1,-73.932876586914063,40.795520782470703,-73.884330749511719,40.850494384765625,N,4606 +id1981503,1,2016-03-27 11:26:21,2016-03-27 11:33:34,1,-74.001251220703125,40.736595153808594,-74.0020751953125,40.72637939453125,N,433 +id2745189,2,2016-04-16 19:54:04,2016-04-16 20:07:07,1,-74.008407592773438,40.734771728515625,-73.999656677246094,40.7283935546875,N,783 +id2303526,1,2016-02-07 17:29:21,2016-02-07 17:33:05,1,-73.979728698730469,40.78387451171875,-73.974075317382812,40.787155151367188,N,224 +id2964479,1,2016-05-26 09:06:50,2016-05-26 09:14:48,1,-73.961967468261719,40.767932891845703,-73.948722839355469,40.773937225341797,N,478 +id0851134,2,2016-03-04 12:54:56,2016-03-04 13:02:22,1,-73.950668334960938,40.771446228027344,-73.958908081054687,40.780990600585937,N,446 +id2068574,2,2016-04-06 11:54:27,2016-04-06 12:14:45,1,-73.955337524414063,40.783031463623047,-73.960296630859375,40.757919311523438,N,1218 +id0046709,1,2016-05-06 23:17:38,2016-05-06 23:26:10,2,-73.971343994140625,40.757411956787109,-73.981880187988281,40.743293762207031,N,512 +id2742295,1,2016-01-30 04:23:15,2016-01-30 04:37:08,3,-74.002723693847656,40.749870300292969,-74.007621765136719,40.705631256103516,N,833 +id0893680,2,2016-02-01 17:48:53,2016-02-01 18:01:16,5,-73.984306335449219,40.740009307861328,-73.999168395996094,40.754539489746094,N,743 +id1579024,2,2016-06-06 23:12:30,2016-06-06 23:16:30,2,-73.993698120117187,40.735260009765625,-74.001960754394531,40.732990264892578,N,240 +id2472781,2,2016-05-11 16:58:14,2016-05-11 17:02:24,1,-73.976676940917969,40.787960052490234,-73.97149658203125,40.782428741455078,N,250 +id0278215,2,2016-06-21 16:05:46,2016-06-21 16:19:40,1,-73.974815368652344,40.754871368408203,-74.002342224121094,40.738594055175781,N,834 +id2679347,2,2016-02-20 01:34:43,2016-02-20 01:43:18,6,-73.955535888671875,40.779911041259766,-73.988357543945313,40.746616363525391,N,515 +id2841158,2,2016-03-10 19:03:37,2016-03-10 19:41:36,1,-73.874435424804688,40.773983001708984,-74.005271911621094,40.748126983642578,N,2279 +id3306253,1,2016-05-23 22:00:24,2016-05-23 22:23:55,3,-73.978614807128906,40.777824401855469,-73.981300354003906,40.7274169921875,N,1411 +id1710374,1,2016-01-26 22:49:14,2016-01-26 23:03:25,2,-73.978408813476563,40.752201080322266,-73.957252502441406,40.770057678222656,N,851 +id0497306,1,2016-03-04 16:55:00,2016-03-04 17:05:15,1,-73.982437133789062,40.742816925048828,-73.98822021484375,40.724098205566406,N,615 +id3336983,2,2016-02-01 08:44:55,2016-02-01 08:57:51,1,-73.990875244140625,40.765853881835938,-73.986190795898437,40.756450653076172,N,776 +id1356391,2,2016-03-31 18:56:47,2016-03-31 19:02:46,1,-73.96697998046875,40.793628692626953,-73.952812194824219,40.790889739990234,N,359 +id0737015,2,2016-05-20 11:30:44,2016-05-20 11:54:03,1,-73.975051879882813,40.792903900146484,-74.009971618652344,40.721412658691406,N,1399 +id2274346,1,2016-05-24 01:08:30,2016-05-24 01:18:45,1,-73.974937438964844,40.757450103759766,-73.9918212890625,40.746669769287109,N,615 +id1981384,2,2016-06-21 12:02:00,2016-06-21 12:28:56,5,-73.98675537109375,40.734172821044922,-73.872604370117187,40.774440765380859,N,1616 +id0380179,1,2016-03-30 18:03:25,2016-03-30 18:20:17,1,-73.963127136230469,40.769176483154297,-73.972648620605469,40.746509552001953,N,1012 +id2000623,1,2016-04-08 14:23:02,2016-04-08 14:41:48,1,-73.982925415039062,40.755794525146484,-73.961738586425781,40.779621124267578,N,1126 +id2529196,1,2016-05-24 15:58:58,2016-05-24 16:16:07,1,-73.970802307128906,40.764381408691406,-73.967498779296875,40.787803649902344,N,1029 +id1801996,1,2016-02-27 16:42:45,2016-02-27 16:49:53,2,-73.993736267089844,40.733371734619141,-74.004104614257813,40.734012603759766,N,428 +id2994895,1,2016-06-21 10:30:53,2016-06-21 10:57:48,3,-74.002853393554687,40.760417938232422,-74.009750366210937,40.706272125244141,N,1615 +id1921321,1,2016-04-07 17:00:02,2016-04-07 17:07:01,1,-73.991714477539062,40.749111175537109,-73.990493774414063,40.756141662597656,N,419 +id1358935,2,2016-03-04 21:45:33,2016-03-04 21:59:40,1,-73.988319396972656,40.749988555908203,-73.967369079589844,40.756008148193359,N,847 +id3265427,2,2016-03-01 13:31:16,2016-03-01 13:51:14,2,-73.9764404296875,40.788261413574219,-73.982467651367188,40.751480102539063,N,1198 +id1405784,2,2016-04-01 22:00:26,2016-04-01 22:07:00,1,-74.015167236328125,40.716011047363281,-74.005111694335938,40.705978393554687,N,394 +id1160659,1,2016-04-02 13:55:00,2016-04-02 14:04:22,1,-74.007286071777344,40.741012573242188,-74.016395568847656,40.704704284667969,N,562 +id2363238,1,2016-06-16 17:10:19,2016-06-16 17:17:31,1,-74.000686645507813,40.725841522216797,-74.007904052734375,40.731887817382813,N,432 +id0286641,2,2016-05-13 13:49:27,2016-05-13 13:59:12,1,-73.980026245117188,40.760787963867188,-73.985610961914062,40.775405883789063,N,585 +id0967078,2,2016-01-16 18:47:32,2016-01-16 18:51:03,1,-73.979743957519531,40.786403656005859,-73.976097106933594,40.781322479248047,N,211 +id2907558,1,2016-04-29 22:58:00,2016-04-29 23:04:16,1,-74.006919860839844,40.707920074462891,-73.995330810546875,40.717506408691406,N,376 +id1196917,2,2016-02-21 22:40:03,2016-02-21 22:54:53,1,-73.962928771972656,40.762439727783203,-74.003517150878906,40.726959228515625,N,890 +id2702152,1,2016-05-31 22:37:30,2016-05-31 22:49:57,1,-73.991317749023437,40.760929107666016,-73.998664855957031,40.732288360595703,N,747 +id2786163,2,2016-01-18 13:43:00,2016-01-18 13:50:05,6,-74.008186340332031,40.714626312255859,-74.0013427734375,40.733810424804688,N,425 +id3595254,1,2016-04-16 12:31:33,2016-04-16 12:37:52,2,-73.941780090332031,40.754676818847656,-73.953269958496094,40.745388031005859,N,379 +id0149814,1,2016-06-30 21:38:35,2016-06-30 21:45:53,1,-73.996528625488281,40.747909545898438,-73.993812561035156,40.762767791748047,N,438 +id1137924,2,2016-02-18 16:10:00,2016-02-18 16:25:05,2,-74.015907287597656,40.711517333984375,-73.994728088378906,40.750556945800781,N,905 +id0169821,2,2016-02-02 17:56:28,2016-02-02 18:08:48,1,-73.979362487792969,40.756088256835937,-73.9942626953125,40.730178833007813,N,740 +id1541772,2,2016-02-29 20:45:57,2016-02-29 20:56:03,5,-73.97747802734375,40.764461517333984,-74.006172180175781,40.749298095703125,N,606 +id2723655,1,2016-03-06 07:59:00,2016-03-06 08:02:36,1,-73.988746643066406,40.723091125488281,-74.000938415527344,40.728294372558594,N,216 +id0774363,1,2016-04-02 12:36:28,2016-04-02 12:50:32,1,-73.968673706054688,40.799293518066406,-73.942146301269531,40.786769866943359,N,844 +id2243399,2,2016-04-05 08:36:26,2016-04-05 08:44:43,2,-73.991111755371094,40.749423980712891,-73.982460021972656,40.745136260986328,N,497 +id0948239,2,2016-04-14 20:26:36,2016-04-14 20:32:18,1,-73.994895935058594,40.725551605224609,-73.9874267578125,40.735610961914063,N,342 +id1688412,2,2016-04-14 19:30:41,2016-04-14 20:11:31,1,-73.962745666503906,40.772445678710937,-73.926948547363281,40.699123382568359,N,2450 +id2424050,2,2016-03-09 17:09:59,2016-03-09 17:20:28,1,-73.983116149902344,40.771389007568359,-73.965972900390625,40.77410888671875,N,629 +id2155143,1,2016-06-29 22:14:10,2016-06-29 22:32:54,2,-73.9798583984375,40.764785766601563,-73.987007141113281,40.733638763427734,N,1124 +id0730618,1,2016-03-20 08:58:37,2016-03-20 09:15:19,1,-73.865249633789063,40.770137786865234,-73.967903137207031,40.688739776611328,N,1002 +id3485060,2,2016-04-21 16:55:32,2016-04-21 17:17:27,1,-73.997268676757813,40.721878051757813,-73.988677978515625,40.686813354492188,N,1315 +id2911256,2,2016-03-16 20:18:18,2016-03-16 20:25:57,1,-73.956329345703125,40.781269073486328,-73.959831237792969,40.770759582519531,N,459 +id3848267,2,2016-02-09 19:46:17,2016-02-09 19:52:27,1,-74.004722595214844,40.709991455078125,-74.008460998535156,40.721035003662109,N,370 +id2898329,2,2016-01-13 09:18:07,2016-01-13 09:25:17,2,-74.012840270996094,40.716922760009766,-74.006507873535156,40.751327514648438,N,430 +id1593113,2,2016-05-03 14:57:25,2016-05-03 15:05:26,1,-73.990318298339844,40.714450836181641,-74.007423400878906,40.705158233642578,N,481 +id3805363,2,2016-05-01 17:48:08,2016-05-01 18:07:55,5,-73.969093322753906,40.790771484375,-73.989013671875,40.745521545410156,N,1187 +id1375668,1,2016-05-25 18:21:29,2016-05-25 18:45:49,1,-73.994216918945313,40.751201629638672,-73.963333129882813,40.772041320800781,N,1460 +id1942192,1,2016-02-26 08:09:33,2016-02-26 08:40:34,1,-73.968544006347656,40.78662109375,-73.991020202636719,40.7333984375,N,1861 +id3755789,1,2016-02-24 10:53:56,2016-02-24 11:05:12,1,-73.973709106445313,40.779556274414063,-73.981590270996094,40.766368865966797,N,676 +id0886825,1,2016-03-26 17:02:57,2016-03-26 17:20:29,1,-73.922843933105469,40.771198272705078,-73.972702026367188,40.760711669921875,N,1052 +id1196187,2,2016-02-17 17:51:31,2016-02-17 17:59:40,1,-73.988616943359375,40.737159729003906,-73.996360778808594,40.719261169433594,N,489 +id2481174,1,2016-02-06 12:36:41,2016-02-06 12:40:17,1,-73.980384826660156,40.754364013671875,-73.988182067871094,40.743495941162109,N,216 +id0262030,1,2016-02-17 21:42:06,2016-02-17 22:13:50,1,-73.783271789550781,40.648609161376953,-74.004165649414063,40.720985412597656,N,1904 +id0269863,2,2016-02-19 09:41:22,2016-02-19 09:47:41,1,-73.986923217773437,40.756362915039063,-73.995468139648438,40.743110656738281,N,379 +id1931141,2,2016-03-13 11:44:39,2016-03-13 11:58:06,1,-73.957656860351563,40.776790618896484,-73.984710693359375,40.739791870117188,N,807 +id3701328,2,2016-06-06 22:39:03,2016-06-06 22:48:29,1,-73.986351013183594,40.742900848388672,-73.990768432617188,40.755908966064453,N,566 +id0662593,1,2016-06-21 12:58:56,2016-06-21 13:37:02,1,-73.991401672363281,40.750026702880859,-73.948753356933594,40.654148101806641,N,2286 +id1193280,2,2016-03-23 09:47:40,2016-03-23 09:59:21,3,-73.973091125488281,40.756656646728516,-73.973915100097656,40.763114929199219,N,701 +id1362300,2,2016-01-28 11:38:13,2016-01-28 11:54:16,1,-73.991645812988281,40.744659423828125,-73.981651306152344,40.764850616455078,N,963 +id0164656,2,2016-06-29 13:23:01,2016-06-29 13:42:15,3,-73.992729187011719,40.758319854736328,-73.976600646972656,40.748348236083984,N,1154 +id2238347,2,2016-03-15 09:09:17,2016-03-15 09:18:07,5,-73.994789123535156,40.760265350341797,-73.981529235839844,40.766029357910156,N,530 +id1393685,1,2016-03-12 14:50:29,2016-03-12 15:07:14,1,-73.975479125976562,40.741081237792969,-73.986213684082031,40.761539459228516,N,1005 +id2058812,1,2016-04-05 23:41:41,2016-04-05 23:42:28,1,-73.929534912109375,40.659721374511719,-73.929580688476563,40.659683227539063,N,47 +id0531069,1,2016-02-17 09:55:12,2016-02-17 10:25:28,1,-73.973838806152344,40.764266967773438,-74.014320373535156,40.703754425048828,N,1816 +id0567402,1,2016-05-07 11:39:11,2016-05-07 11:52:42,2,-73.983009338378906,40.781932830810547,-73.951118469238281,40.786064147949219,N,811 +id3245074,2,2016-01-08 09:47:38,2016-01-08 09:56:23,1,-74.00384521484375,40.725791931152344,-73.987693786621094,40.722545623779297,N,525 +id2841652,2,2016-03-07 15:59:13,2016-03-07 16:16:34,1,-73.961112976074219,40.769378662109375,-73.967620849609375,40.804573059082031,N,1041 +id0032289,1,2016-01-07 19:17:39,2016-01-07 19:28:30,1,-74.001777648925781,40.746578216552734,-74.004714965820313,40.729572296142578,N,651 +id3579592,2,2016-06-02 13:04:17,2016-06-02 13:50:00,5,-73.866378784179687,40.770023345947266,-73.989608764648437,40.757431030273437,N,2743 +id3970029,2,2016-02-04 16:10:24,2016-02-04 16:25:05,1,-73.991050720214844,40.734786987304688,-73.990509033203125,40.75067138671875,N,881 +id1752907,1,2016-06-11 19:31:43,2016-06-11 20:12:18,1,-73.994842529296875,40.750125885009766,-73.919212341308594,40.768051147460938,N,2435 +id1719194,2,2016-06-22 23:11:02,2016-06-22 23:34:26,2,-73.789268493652344,40.646919250488281,-73.957099914550781,40.745651245117187,N,1404 +id2834477,2,2016-04-16 02:05:53,2016-04-16 02:16:18,5,-73.844001770019531,40.721958160400391,-73.867149353027344,40.732810974121094,N,625 +id0449978,2,2016-02-10 09:47:51,2016-02-10 09:53:05,1,-74.0084228515625,40.714401245117188,-74.001174926757813,40.7164306640625,N,314 +id2670348,2,2016-03-19 00:59:23,2016-03-19 01:25:51,1,-73.987098693847656,40.720409393310547,-73.982040405273438,40.769859313964844,N,1588 +id1300030,1,2016-02-19 17:00:30,2016-02-19 17:07:56,1,-73.998504638671875,40.726364135742188,-73.998092651367188,40.740543365478516,N,446 +id3683774,1,2016-02-24 14:10:06,2016-02-24 14:14:17,1,-73.972587585449219,40.762599945068359,-73.97674560546875,40.764636993408203,N,251 +id1946910,1,2016-04-13 08:25:13,2016-04-13 08:41:06,1,-73.984840393066406,40.736244201660156,-73.985816955566406,40.753314971923828,N,953 +id3898508,1,2016-01-30 03:01:14,2016-01-30 03:06:20,1,-73.997413635253906,40.722972869873047,-73.986930847167969,40.729835510253906,N,306 +id3221370,2,2016-05-21 04:24:08,2016-05-21 04:33:37,5,-74.00762939453125,40.740840911865234,-73.98583984375,40.750659942626953,N,569 +id0137215,2,2016-02-04 07:47:29,2016-02-04 07:57:35,2,-73.99273681640625,40.735679626464844,-73.990440368652344,40.756038665771484,N,606 +id3741069,1,2016-05-20 20:02:25,2016-05-20 20:09:27,2,-73.994209289550781,40.720447540283203,-74.010047912597656,40.720138549804687,N,422 +id1972296,1,2016-03-19 21:21:21,2016-03-19 21:32:10,1,-73.980934143066406,40.744613647460938,-74.003738403320312,40.707839965820312,N,649 +id0768869,2,2016-05-04 11:19:28,2016-05-04 11:31:27,1,-74.013168334960937,40.704788208007812,-74.008110046386719,40.712211608886719,N,719 +id1001397,2,2016-03-15 19:33:17,2016-03-15 19:41:16,1,-73.97393798828125,40.757404327392578,-73.956497192382812,40.768043518066406,N,479 +id1233791,1,2016-01-17 13:58:55,2016-01-17 14:44:47,1,-73.863395690917969,40.769695281982422,-73.984275817871094,40.758167266845703,N,2752 +id3285183,2,2016-05-07 13:24:25,2016-05-07 13:32:22,1,-73.961662292480469,40.768379211425781,-73.9652099609375,40.760101318359375,N,477 +id1504924,2,2016-05-07 08:37:18,2016-05-07 08:42:00,1,-73.984321594238281,40.768108367919922,-73.974250793457031,40.778282165527344,N,282 +id0069847,1,2016-06-23 10:41:46,2016-06-23 10:55:58,2,-73.968017578125,40.80267333984375,-73.961982727050781,40.779937744140625,N,852 +id0572523,2,2016-02-14 17:19:34,2016-02-14 18:00:41,1,-73.980987548828125,40.782276153564453,-73.916519165039063,40.699920654296875,N,2467 +id1244340,2,2016-02-24 08:50:41,2016-02-24 09:09:07,1,-73.995559692382813,40.718643188476563,-74.006782531738281,40.751300811767578,N,1106 +id1322244,2,2016-01-09 08:20:38,2016-01-09 08:24:36,1,-73.955459594726563,40.779609680175781,-73.952842712402344,40.7918701171875,N,238 +id3404456,1,2016-05-22 13:30:17,2016-05-22 13:37:06,1,-73.98486328125,40.755050659179688,-73.993919372558594,40.756359100341797,N,409 +id3168276,1,2016-06-07 00:07:22,2016-06-07 00:14:28,1,-73.986076354980469,40.727878570556641,-73.971031188964844,40.748191833496094,N,426 +id1231857,1,2016-03-26 21:54:53,2016-03-26 22:09:28,1,-74.006744384765625,40.740467071533203,-73.981689453125,40.763576507568359,N,875 +id0521266,2,2016-06-01 08:55:37,2016-06-01 09:01:47,5,-73.984718322753906,40.748661041259766,-73.98016357421875,40.743431091308594,N,370 +id3174799,2,2016-02-28 22:09:31,2016-02-28 22:20:42,5,-73.99530029296875,40.744659423828125,-74.007301330566406,40.710361480712891,N,671 +id3561097,2,2016-02-16 11:23:06,2016-02-16 11:39:26,1,-73.987274169921875,40.768543243408203,-73.991317749023437,40.750228881835938,N,980 +id1984014,2,2016-01-16 15:20:46,2016-01-16 15:35:44,5,-73.985153198242188,40.736057281494141,-73.958633422851563,40.764087677001953,N,898 +id3207095,1,2016-02-01 08:09:33,2016-02-01 08:34:48,6,-73.985679626464844,40.753948211669922,-73.870452880859375,40.773651123046875,N,1515 +id0610168,1,2016-01-31 13:23:47,2016-01-31 13:27:59,1,-73.975990295410156,40.765911102294922,-73.968429565429687,40.767681121826172,N,252 +id0383397,2,2016-06-17 13:44:12,2016-06-17 13:54:51,1,-73.986709594726563,40.756221771240234,-73.979400634765625,40.765918731689453,N,639 +id2946510,1,2016-04-30 14:39:16,2016-04-30 14:46:10,1,-73.951530456542969,40.766567230224609,-73.965217590332031,40.762733459472656,N,414 +id0173148,1,2016-04-03 13:35:27,2016-04-03 13:48:17,1,-73.959075927734375,40.767013549804687,-73.969863891601562,40.754985809326172,N,770 +id2016058,2,2016-03-05 18:58:49,2016-03-05 19:12:05,2,-73.998649597167969,40.761161804199219,-74.00299072265625,40.739978790283203,N,796 +id3427577,2,2016-02-26 09:21:02,2016-02-26 09:28:15,1,-73.964622497558594,40.773059844970703,-73.970512390136719,40.764919281005859,N,433 +id1562517,2,2016-02-10 09:59:57,2016-02-10 10:06:00,1,-73.976119995117188,40.791389465332031,-73.986732482910156,40.777011871337891,N,363 +id3141996,2,2016-01-12 16:36:33,2016-01-12 16:43:43,1,-73.988212585449219,40.743507385253906,-73.977676391601562,40.751468658447266,N,430 +id1913170,1,2016-03-01 22:31:45,2016-03-01 22:49:16,1,-73.985038757324219,40.732479095458984,-73.993392944335938,40.682258605957031,N,1051 +id2765766,2,2016-02-17 17:09:07,2016-02-17 17:41:07,1,-73.782173156738281,40.644718170166016,-73.980323791503906,40.746601104736328,N,1920 +id1702081,2,2016-04-21 17:30:44,2016-04-21 17:34:31,1,-73.986701965332031,40.761386871337891,-73.9788818359375,40.766757965087891,N,227 +id0906699,1,2016-02-13 07:20:10,2016-02-13 07:22:19,1,-73.965789794921875,40.754390716552734,-73.95849609375,40.764415740966797,N,129 +id0024955,2,2016-05-04 06:43:23,2016-05-04 06:47:51,1,-73.997482299804688,40.757053375244141,-73.988616943359375,40.768825531005859,N,268 +id2219471,2,2016-03-06 08:56:47,2016-03-06 08:59:22,1,-74.00469970703125,40.734378814697266,-74.006195068359375,40.72235107421875,N,155 +id2765056,1,2016-06-25 13:47:34,2016-06-25 14:16:21,1,-74.015937805175781,40.711528778076172,-73.98260498046875,40.766731262207031,N,1727 +id3004654,2,2016-05-25 17:37:27,2016-05-25 17:46:49,1,-73.974456787109375,40.76043701171875,-73.961280822753906,40.76873779296875,N,562 +id1034458,2,2016-06-09 06:30:31,2016-06-09 06:31:40,6,-73.981590270996094,40.740821838378906,-73.976600646972656,40.747917175292969,N,69 +id0217373,2,2016-01-19 20:47:51,2016-01-19 20:59:51,1,-73.974021911621094,40.753009796142578,-73.991096496582031,40.7652587890625,N,720 +id0838710,2,2016-04-07 10:43:12,2016-04-07 10:54:59,1,-73.96966552734375,40.749965667724609,-73.955474853515625,40.770378112792969,N,707 +id1047172,1,2016-02-09 09:01:37,2016-02-09 09:11:30,1,-73.966346740722656,40.764636993408203,-73.953804016113281,40.783340454101563,N,593 +id0135006,1,2016-06-24 22:38:07,2016-06-24 22:39:56,1,-73.983024597167969,40.71734619140625,-73.9786376953125,40.719963073730469,N,109 +id1810894,1,2016-04-23 05:11:52,2016-04-23 05:17:30,1,-73.982414245605469,40.742656707763672,-73.994346618652344,40.750072479248047,N,338 +id0330309,2,2016-01-12 20:09:30,2016-01-12 20:23:24,1,-74.014633178710938,40.714103698730469,-73.984359741210937,40.738483428955078,N,834 +id3437789,2,2016-05-04 22:00:03,2016-05-04 22:05:29,1,-73.98858642578125,40.718803405761719,-73.997879028320313,40.716705322265625,N,326 +id2912295,1,2016-03-13 23:16:00,2016-03-13 23:20:43,2,-73.966278076171875,40.764835357666016,-73.950210571289062,40.780628204345703,N,283 +id1853052,1,2016-02-08 08:22:24,2016-02-08 08:33:47,1,-74.014419555664063,40.716968536376953,-73.995941162109375,40.738803863525391,N,683 +id3805978,2,2016-01-08 13:01:35,2016-01-08 13:16:05,1,-73.961479187011719,40.764808654785156,-74.006736755371094,40.705501556396484,N,870 +id2245240,2,2016-02-17 10:09:30,2016-02-17 10:11:04,1,-73.919868469238281,40.766021728515625,-73.915260314941406,40.763969421386719,N,94 +id3040508,1,2016-04-05 08:56:42,2016-04-05 09:05:15,1,-73.983726501464844,40.749641418457031,-73.988014221191406,40.753826141357422,N,513 +id1915763,2,2016-05-10 22:00:15,2016-05-10 22:08:15,5,-73.978141784667969,40.752880096435547,-73.976837158203125,40.745170593261719,N,480 +id0568284,1,2016-02-27 06:43:54,2016-02-27 06:52:29,1,-73.98822021484375,40.719989776611328,-73.954833984375,40.692813873291016,N,515 +id3389870,1,2016-03-29 15:42:53,2016-03-29 15:51:07,1,-73.994476318359375,40.751014709472656,-74.0015869140625,40.756549835205078,N,494 +id0548274,2,2016-04-04 10:41:50,2016-04-04 11:02:04,1,-73.985450744628906,40.758960723876953,-73.954872131347656,40.764011383056641,N,1214 +id2164671,1,2016-02-16 14:52:40,2016-02-16 14:59:18,1,-73.967903137207031,40.759349822998047,-73.952812194824219,40.772674560546875,N,398 +id0874823,2,2016-03-08 22:42:36,2016-03-08 23:08:03,1,-73.993255615234375,40.727825164794922,-73.915351867675781,40.692543029785156,N,1527 +id1191795,1,2016-06-29 22:51:56,2016-06-29 23:10:07,1,-74.0081787109375,40.747516632080078,-73.988304138183594,40.728042602539063,N,1091 +id1882860,1,2016-05-06 12:48:07,2016-05-06 13:00:31,1,-73.981109619140625,40.769302368164062,-73.972053527832031,40.759468078613281,N,744 +id0809782,1,2016-01-15 12:53:17,2016-01-15 12:59:11,1,-73.957931518554687,40.765068054199219,-73.968093872070313,40.765701293945313,N,354 +id2732629,1,2016-02-26 22:00:29,2016-02-26 22:06:41,1,-73.974693298339844,40.750076293945312,-73.987648010253906,40.756412506103516,N,372 +id2634407,1,2016-02-07 19:57:39,2016-02-07 20:05:11,1,-73.994613647460938,40.750228881835938,-74.004165649414063,40.734073638916016,N,452 +id1937776,1,2016-06-03 19:36:42,2016-06-03 19:41:56,1,-74.004196166992188,40.747642517089844,-73.999519348144531,40.76165771484375,N,314 +id2756373,2,2016-01-10 20:11:20,2016-01-10 20:23:11,2,-74.006248474121094,40.734359741210937,-74.008308410644531,40.707500457763672,N,711 +id0501527,1,2016-02-06 16:09:00,2016-02-06 16:21:57,1,-73.99359130859375,40.721584320068359,-74.014633178710938,40.709598541259766,N,777 +id2506221,1,2016-05-16 10:22:32,2016-05-16 10:28:18,1,-73.962226867675781,40.772109985351562,-73.950584411621094,40.785797119140625,N,346 +id1058163,2,2016-03-19 11:20:16,2016-03-19 11:26:42,1,-74.008636474609375,40.731082916259766,-74.0084228515625,40.719306945800781,N,386 +id2070005,1,2016-06-29 20:51:28,2016-06-29 21:03:36,1,-73.982131958007813,40.763168334960938,-73.986846923828125,40.747947692871094,N,728 +id0062694,1,2016-02-16 14:55:19,2016-02-16 14:57:49,1,-73.974655151367188,40.756641387939453,-73.972923278808594,40.759086608886719,N,150 +id3203112,2,2016-01-11 20:25:25,2016-01-11 20:37:15,1,-73.972976684570313,40.759201049804688,-73.99188232421875,40.744361877441406,N,710 +id0988076,1,2016-02-18 11:23:16,2016-02-18 12:09:52,1,-73.87298583984375,40.773956298828125,-73.992630004882813,40.7567138671875,N,2796 +id1688631,2,2016-05-19 20:50:32,2016-05-19 21:09:36,1,-73.966758728027344,40.757793426513672,-73.958206176757813,40.715415954589844,N,1144 +id0583628,2,2016-05-04 06:25:52,2016-05-04 06:49:59,1,-73.995719909667969,40.732761383056641,-73.918701171875,40.871383666992187,N,1447 +id0398866,2,2016-04-15 15:08:55,2016-04-15 15:32:48,1,-73.979621887207031,40.743797302246094,-73.950538635253906,40.775386810302734,N,1433 +id1335610,1,2016-05-22 00:03:07,2016-05-22 00:29:04,1,-73.782951354980469,40.644306182861328,-73.980072021484375,40.744071960449219,Y,1557 +id2309508,2,2016-02-07 22:34:47,2016-02-07 22:48:09,1,-73.991691589355469,40.744121551513672,-73.97796630859375,40.778011322021484,N,802 +id3199061,2,2016-05-07 10:26:21,2016-05-07 10:34:01,1,-73.987289428710938,40.7276611328125,-74.002113342285156,40.727943420410156,N,460 +id0134961,1,2016-05-03 15:39:42,2016-05-03 16:09:33,1,-73.976371765136719,40.7593994140625,-74.006584167480469,40.749275207519531,N,1791 +id0454893,1,2016-02-10 18:10:32,2016-02-10 18:15:03,1,-73.945762634277344,40.781826019287109,-73.9405517578125,40.79327392578125,N,271 +id0025890,1,2016-06-07 17:56:48,2016-06-07 18:08:20,1,-73.977851867675781,40.763545989990234,-73.957199096679688,40.783332824707031,N,692 +id1804388,2,2016-05-22 18:15:25,2016-05-22 18:23:53,1,-73.969032287597656,40.764228820800781,-73.955062866210937,40.767219543457031,N,508 +id2546496,2,2016-03-15 08:37:47,2016-03-15 08:50:34,2,-73.980987548828125,40.737701416015625,-73.995750427246094,40.714191436767578,N,767 +id0543569,1,2016-05-10 12:50:50,2016-05-10 13:03:11,1,-73.983871459960937,40.746692657470703,-73.992706298828125,40.758926391601563,N,741 +id0752161,1,2016-03-01 07:15:52,2016-03-01 07:41:55,2,-73.996994018554688,40.688976287841797,-73.972511291503906,40.7537841796875,N,1563 +id2310880,1,2016-02-04 19:00:29,2016-02-04 19:19:03,1,-73.968597412109375,40.786472320556641,-73.995048522949219,40.747970581054688,N,1114 +id1920360,2,2016-01-30 23:03:29,2016-01-30 23:10:46,1,-73.962661743164063,40.774124145507812,-73.973098754882812,40.755653381347656,N,437 +id0964076,1,2016-02-26 06:48:18,2016-02-26 06:58:48,1,-73.994155883789063,40.751106262207031,-73.974945068359375,40.75439453125,N,630 +id0419839,2,2016-02-22 22:38:37,2016-02-22 22:45:35,5,-73.972129821777344,40.76531982421875,-73.988388061523438,40.755401611328125,N,418 +id2174189,1,2016-04-19 22:25:45,2016-04-19 22:29:55,3,-73.978553771972656,40.753353118896484,-73.968955993652344,40.753528594970703,N,250 +id1503726,2,2016-03-16 18:09:51,2016-03-16 18:23:25,1,-73.957527160644531,40.774471282958984,-73.983070373535156,40.781051635742188,N,814 +id0261800,2,2016-02-12 11:20:45,2016-02-12 11:39:27,5,-73.977256774902344,40.743091583251953,-73.996383666992188,40.71575927734375,N,1122 +id3452652,1,2016-02-09 06:27:49,2016-02-09 06:31:36,1,-73.970291137695313,40.759719848632812,-73.959342956542969,40.773212432861328,N,227 +id3014433,2,2016-04-09 19:37:51,2016-04-09 20:10:06,4,-73.996566772460938,40.737693786621094,-73.905685424804687,40.877559661865234,N,1935 +id1937955,2,2016-04-12 13:11:11,2016-04-12 13:29:26,1,-73.966598510742188,40.764041900634766,-73.951927185058594,40.766021728515625,N,1095 +id2233727,2,2016-03-17 23:26:01,2016-03-17 23:31:40,1,-73.978233337402344,40.729541778564453,-73.9805908203125,40.721721649169922,N,339 +id2636930,2,2016-05-17 20:31:15,2016-05-17 20:41:24,1,-73.974876403808594,40.742298126220703,-73.993751525878906,40.736400604248047,N,609 +id0730829,2,2016-01-21 14:47:32,2016-01-21 14:57:26,2,-73.976860046386719,40.756198883056641,-73.991310119628906,40.750373840332031,N,594 +id3843707,2,2016-01-25 19:07:11,2016-01-25 19:07:40,1,-73.990943908691406,40.73956298828125,-73.99029541015625,40.739391326904297,N,29 +id0536145,1,2016-04-29 12:20:49,2016-04-29 12:48:15,1,-73.978668212890625,40.767566680908203,-73.99700927734375,40.724872589111328,N,1646 +id0690683,2,2016-02-08 18:16:56,2016-02-08 18:20:28,1,-73.953529357910156,40.775688171386719,-73.961936950683594,40.763900756835938,N,212 +id1322898,1,2016-04-19 20:33:50,2016-04-19 20:35:00,1,-73.980690002441406,40.770145416259766,-73.983161926269531,40.771141052246094,N,70 +id2735830,2,2016-05-27 21:19:56,2016-05-27 21:24:43,2,-73.982147216796875,40.773868560791016,-73.974517822265625,40.76483154296875,N,287 +id0590979,1,2016-03-25 00:45:59,2016-03-25 00:56:13,1,-73.987037658691406,40.725929260253906,-73.99462890625,40.712314605712891,N,614 +id3861452,2,2016-06-26 17:44:11,2016-06-26 18:06:16,2,-73.863372802734375,40.76995849609375,-73.863372802734375,40.76995849609375,N,1325 +id3483336,1,2016-05-13 20:29:51,2016-05-13 20:38:00,2,-73.994224548339844,40.740932464599609,-73.998565673828125,40.725070953369141,N,489 +id0015523,1,2016-05-20 08:40:27,2016-05-20 08:58:13,1,-73.996124267578125,40.754108428955078,-74.015518188476563,40.708648681640625,N,1066 +id0955531,1,2016-04-29 11:02:19,2016-04-29 11:14:15,1,-73.974868774414063,40.746269226074219,-73.991050720214844,40.739166259765625,N,716 +id3906207,2,2016-06-09 16:48:59,2016-06-09 17:33:13,1,-74.012763977050781,40.702915191650391,-73.971237182617188,40.756790161132813,N,2654 +id2713607,1,2016-04-05 17:18:31,2016-04-05 17:21:51,2,-74.0048828125,40.706874847412109,-74.005653381347656,40.707908630371094,N,200 +id0480092,1,2016-05-14 11:28:49,2016-05-14 11:42:37,2,-73.9681396484375,40.757259368896484,-73.981170654296875,40.773326873779297,N,828 +id2210006,2,2016-03-15 16:57:44,2016-03-15 17:17:24,1,-73.981552124023438,40.732799530029297,-73.962303161621094,40.767921447753906,N,1180 +id0447088,2,2016-05-27 23:53:22,2016-05-28 00:01:33,1,-73.995101928710938,40.739898681640625,-73.989051818847656,40.758281707763672,N,491 +id0183568,1,2016-06-01 19:34:31,2016-06-01 19:36:38,1,-73.974113464355469,40.747154235839844,-73.978515625,40.741317749023438,N,127 +id0622434,2,2016-01-14 07:42:39,2016-01-14 07:48:45,6,-73.961715698242188,40.767860412597656,-73.972633361816406,40.759750366210938,N,366 +id3991515,2,2016-05-23 17:43:07,2016-05-23 17:54:41,6,-73.993301391601563,40.736011505126953,-73.992019653320313,40.748863220214844,N,694 +id3927605,2,2016-05-22 19:49:29,2016-05-22 20:09:08,1,-73.992362976074219,40.721176147460938,-73.981002807617187,40.763671875,N,1179 +id0025422,2,2016-06-18 13:22:28,2016-06-18 13:32:10,4,-73.970169067382813,40.761451721191406,-73.984527587890625,40.739711761474609,N,582 +id2439918,2,2016-05-27 15:03:57,2016-05-27 15:17:01,1,-73.989166259765625,40.758071899414063,-73.982940673828125,40.776832580566406,N,784 +id2021735,2,2016-05-12 21:05:55,2016-05-12 21:15:00,1,-73.997039794921875,40.733310699462891,-73.992050170898438,40.729206085205078,N,545 +id3732819,1,2016-02-08 20:24:09,2016-02-08 20:38:51,1,-73.9835205078125,40.75640869140625,-73.956489562988281,40.774864196777344,N,882 +id2295677,2,2016-04-01 16:23:32,2016-04-01 16:49:41,1,-74.00421142578125,40.747688293457031,-73.982383728027344,40.768318176269531,N,1569 +id2556377,2,2016-06-09 15:35:25,2016-06-09 15:42:36,1,-73.97509765625,40.755481719970703,-73.964729309082031,40.769691467285156,N,431 +id1228496,1,2016-04-28 01:39:36,2016-04-28 01:50:43,1,-73.923538208007812,40.764225006103516,-73.956626892089844,40.775417327880859,N,667 +id2080270,1,2016-04-23 21:39:42,2016-04-23 21:54:22,1,-73.970512390136719,40.752464294433594,-73.975791931152344,40.786708831787109,N,880 +id0234224,1,2016-04-07 22:35:36,2016-04-07 23:21:13,1,-74.014518737792969,40.704608917236328,-73.898078918457031,40.676494598388672,N,2737 +id2815367,1,2016-03-19 13:37:22,2016-03-19 13:54:02,1,-73.990341186523438,40.766651153564453,-73.955390930175781,40.776962280273438,N,1000 +id2604564,1,2016-02-23 09:33:47,2016-02-23 09:40:04,1,-73.98486328125,40.732551574707031,-73.999710083007812,40.731037139892578,N,377 +id0084208,2,2016-04-07 21:55:59,2016-04-07 22:23:21,1,-73.990303039550781,40.71453857421875,-73.966011047363281,40.646701812744141,N,1642 +id3817335,2,2016-04-20 16:22:14,2016-04-20 16:44:30,2,-73.98699951171875,40.738868713378906,-73.974891662597656,40.761768341064453,N,1336 +id0880084,2,2016-06-30 18:28:53,2016-06-30 19:00:02,2,-73.978965759277344,40.785366058349609,-73.981735229492188,40.783493041992188,N,1869 +id2347053,1,2016-03-13 21:08:19,2016-03-13 21:12:59,1,-73.987144470214844,40.739326477050781,-73.978996276855469,40.753322601318359,N,280 +id0990042,1,2016-02-05 20:45:01,2016-02-05 20:56:56,2,-73.958786010742187,40.775035858154297,-73.977294921875,40.751724243164063,N,715 +id2850160,1,2016-02-03 20:34:47,2016-02-03 20:46:43,1,-73.959243774414063,40.776950836181641,-73.977294921875,40.75372314453125,N,716 +id3146477,2,2016-03-05 21:42:14,2016-03-05 22:07:13,1,-73.986549377441406,40.71954345703125,-73.991310119628906,40.749042510986328,N,1499 +id1468406,1,2016-05-10 10:41:10,2016-05-10 10:54:39,1,-74.006851196289062,40.730236053466797,-73.984107971191406,40.729240417480469,N,809 +id0966204,1,2016-06-26 09:25:09,2016-06-26 09:30:10,1,-73.997344970703125,40.741615295410156,-74.001472473144531,40.756534576416016,N,301 +id2214784,1,2016-04-12 13:15:40,2016-04-12 13:25:28,1,-73.997200012207031,40.724555969238281,-73.993637084960938,40.737724304199219,N,588 +id3696491,2,2016-02-11 19:30:34,2016-02-11 19:32:48,1,-73.981880187988281,40.732391357421875,-73.981231689453125,40.738079071044922,N,134 +id3039838,2,2016-02-07 00:33:59,2016-02-07 00:39:28,1,-73.999649047851563,40.733448028564453,-73.987983703613281,40.728626251220703,N,329 +id1911033,2,2016-06-05 18:07:51,2016-06-05 18:32:32,1,-73.953994750976563,40.766197204589844,-73.913108825683594,40.848239898681641,N,1481 +id2362593,2,2016-02-08 07:58:28,2016-02-08 08:14:47,4,-73.96954345703125,40.763378143310547,-73.953590393066406,40.787971496582031,N,979 +id0885316,2,2016-03-13 01:08:24,2016-03-13 01:15:52,6,-73.989402770996094,40.726211547851563,-73.998779296875,40.734020233154297,N,448 +id1323278,1,2016-06-22 23:38:17,2016-06-22 23:47:31,1,-74.003952026367188,40.738231658935547,-73.987823486328125,40.759632110595703,N,554 +id0766287,2,2016-01-21 19:05:31,2016-01-21 19:31:21,2,-73.963706970214844,40.76837158203125,-73.996421813964844,40.722061157226563,N,1550 +id0895137,1,2016-05-08 00:01:15,2016-05-08 00:19:31,2,-73.783157348632812,40.646633148193359,-73.749237060546875,40.736572265625,N,1096 +id0909642,2,2016-01-22 20:24:58,2016-01-22 20:48:25,1,-74.000930786132813,40.731849670410156,-73.952018737792969,40.781940460205078,N,1407 +id2134837,1,2016-03-21 09:57:05,2016-03-21 10:03:59,1,-73.950408935546875,40.775531768798828,-73.961875915527344,40.763809204101562,N,414 +id3918527,2,2016-03-18 23:12:32,2016-03-18 23:50:01,2,-73.948715209960938,40.773857116699219,-73.996688842773438,40.762615203857422,N,2249 +id2785408,2,2016-03-28 20:42:01,2016-03-28 20:54:36,1,-73.978919982910156,40.776912689208984,-73.979087829589844,40.747657775878906,N,755 +id1982154,2,2016-06-04 13:17:08,2016-06-04 13:42:10,4,-73.967071533203125,40.803691864013672,-73.988922119140625,40.756862640380859,N,1502 +id3395571,2,2016-03-20 15:31:02,2016-03-20 15:42:07,5,-73.989982604980469,40.734371185302734,-74.003509521484375,40.738899230957031,N,665 +id3068819,1,2016-02-28 02:06:41,2016-02-28 02:17:04,2,-73.993026733398437,40.741020202636719,-73.988716125488281,40.724006652832031,N,623 +id2917075,2,2016-02-16 17:00:52,2016-02-16 17:11:22,2,-73.969322204589844,40.7666015625,-73.966873168945313,40.800258636474609,N,630 +id0388927,1,2016-03-08 11:39:27,2016-03-08 12:08:01,2,-73.9986572265625,40.723342895507813,-73.979072570800781,40.755321502685547,N,1714 +id1387613,2,2016-06-12 04:56:46,2016-06-12 04:59:03,1,-73.97802734375,40.745540618896484,-73.980171203613281,40.742469787597656,N,137 +id3637696,1,2016-05-18 17:54:11,2016-05-18 18:04:27,1,-73.957084655761719,40.774127960205078,-73.971389770507812,40.764289855957031,N,616 +id3138713,2,2016-01-15 20:31:25,2016-01-15 20:32:59,2,-73.978424072265625,40.7454833984375,-73.9771728515625,40.747127532958984,N,94 +id2875551,2,2016-06-29 19:00:02,2016-06-29 19:22:17,5,-73.972457885742187,40.756416320800781,-74.006454467773438,40.735805511474609,N,1335 +id2718553,2,2016-03-14 07:30:11,2016-03-14 07:33:44,1,-73.991371154785156,40.749401092529297,-73.989852905273438,40.741920471191406,N,213 +id3906434,2,2016-04-22 08:58:06,2016-04-22 09:22:47,1,-73.981544494628906,40.770500183105469,-73.998916625976563,40.739593505859375,N,1481 +id0184757,2,2016-06-19 17:33:10,2016-06-19 17:38:32,1,-73.982109069824219,40.778579711914063,-73.973991394042969,40.763870239257813,N,322 +id3788730,1,2016-03-26 14:30:31,2016-03-26 14:49:53,1,-73.986480712890625,40.759895324707031,-73.990997314453125,40.755786895751953,N,1162 +id2356641,2,2016-01-16 22:39:10,2016-01-16 23:00:14,2,-73.992019653320313,40.758201599121094,-73.971481323242187,40.750751495361328,N,1264 +id2849163,2,2016-06-24 11:38:00,2016-06-24 11:58:20,2,-73.98583984375,40.731098175048828,-74.003166198730469,40.749378204345703,N,1220 +id3767622,1,2016-06-16 06:41:49,2016-06-16 06:54:51,1,-73.964019775390625,40.765281677246094,-73.985466003417969,40.752883911132813,N,782 +id0107463,1,2016-03-04 20:34:54,2016-03-04 20:49:07,1,-73.982101440429688,40.740192413330078,-73.988533020019531,40.75848388671875,N,853 +id0868037,1,2016-05-26 06:47:12,2016-05-26 06:49:41,1,-73.966651916503906,40.757709503173828,-73.975044250488281,40.7520751953125,N,149 +id1366845,1,2016-03-11 17:15:17,2016-03-11 17:22:56,1,-74.006050109863281,40.705593109130859,-73.976631164550781,40.719215393066406,N,459 +id2404378,2,2016-04-21 10:53:53,2016-04-21 11:25:25,3,-73.981941223144531,40.753742218017578,-73.86175537109375,40.768325805664063,N,1892 +id3396606,1,2016-04-23 18:50:02,2016-04-23 19:12:24,1,-74.007453918457031,40.740940093994141,-73.9781494140625,40.760662078857422,N,1342 +id2702654,2,2016-02-21 13:26:43,2016-02-21 13:35:54,1,-73.967987060546875,40.79241943359375,-73.977569580078125,40.784450531005859,N,551 +id3111750,1,2016-06-01 22:59:45,2016-06-01 23:11:56,2,-73.976722717285156,40.749652862548828,-73.987373352050781,40.742084503173828,N,731 +id0490611,2,2016-06-15 07:25:26,2016-06-15 07:51:42,1,-74.016838073730469,40.708118438720703,-73.981903076171875,40.758060455322266,N,1576 +id1093713,1,2016-03-11 22:05:16,2016-03-11 22:24:05,2,-73.986923217773437,40.725246429443359,-73.9970703125,40.683563232421875,N,1129 +id3651923,2,2016-02-08 20:20:56,2016-02-08 20:45:59,1,-73.98211669921875,40.765121459960938,-73.966522216796875,40.713748931884766,N,1503 +id3301129,2,2016-05-29 20:43:40,2016-05-29 21:20:11,5,-73.776779174804688,40.645427703857422,-73.951858520507813,40.732234954833984,N,2191 +id0821712,1,2016-01-29 08:09:15,2016-01-29 08:16:50,1,-73.9844970703125,40.745685577392578,-73.988868713378906,40.736576080322266,N,455 +id1427884,1,2016-05-31 17:14:23,2016-05-31 17:21:22,4,-73.9832763671875,40.741214752197266,-73.979522705078125,40.751796722412109,N,419 +id0594442,2,2016-04-20 03:07:29,2016-04-20 03:33:58,1,-73.95831298828125,40.67962646484375,-73.768028259277344,40.711212158203125,N,1589 +id2753023,1,2016-03-23 10:08:00,2016-03-23 10:20:11,1,-73.98919677734375,40.741924285888672,-73.9888916015625,40.749019622802734,N,731 +id0593078,2,2016-01-04 18:05:47,2016-01-04 18:11:12,1,-73.986679077148438,40.761493682861328,-73.997833251953125,40.751243591308594,N,325 +id2679933,2,2016-02-06 23:01:48,2016-02-06 23:08:27,1,-73.991897583007812,40.749118804931641,-73.978729248046875,40.752670288085938,N,399 +id1200979,1,2016-04-05 13:14:28,2016-04-05 13:37:35,2,-73.978179931640625,40.749160766601563,-73.942390441894531,40.786399841308594,N,1387 +id0762049,1,2016-02-09 11:28:02,2016-02-09 11:42:54,1,-73.979049682617188,40.762081146240234,-73.956092834472656,40.781421661376953,N,892 +id3844808,2,2016-01-18 20:54:31,2016-01-18 21:01:18,1,-73.983062744140625,40.762214660644531,-73.971824645996094,40.756595611572266,N,407 +id3389822,1,2016-05-12 10:34:29,2016-05-12 11:16:35,1,-73.999221801757812,40.720096588134766,-73.854835510253906,40.697334289550781,N,2526 +id3900035,2,2016-01-28 12:12:50,2016-01-28 12:26:59,1,-73.974967956542969,40.755382537841797,-73.964691162109375,40.772327423095703,N,849 +id3648460,1,2016-03-22 16:42:37,2016-03-22 17:00:19,1,-73.977439880371094,40.763626098632812,-73.953628540039063,40.767005920410156,N,1062 +id1482730,1,2016-06-17 07:23:45,2016-06-17 07:33:18,1,-73.990341186523438,40.75616455078125,-73.991859436035156,40.73822021484375,N,573 +id0151881,1,2016-02-03 16:43:24,2016-02-03 17:32:17,1,-73.985572814941406,40.758457183837891,-73.885307312011719,40.773044586181641,N,2933 +id0670791,2,2016-01-13 16:58:29,2016-01-13 17:14:11,1,-73.964431762695312,40.807491302490234,-73.94000244140625,40.846370697021484,N,942 +id0408637,1,2016-05-06 05:51:40,2016-05-06 06:00:34,1,-73.981025695800781,40.764312744140625,-73.990135192871094,40.743389129638672,N,534 +id0686937,1,2016-06-08 22:23:23,2016-06-08 22:40:46,1,-74.008811950683594,40.713741302490234,-74.002754211425781,40.760639190673828,N,1043 +id2454385,2,2016-06-26 09:23:00,2016-06-26 09:28:19,2,-73.999107360839844,40.761318206787109,-73.985679626464844,40.763801574707031,N,319 +id3411552,1,2016-05-10 15:24:38,2016-05-10 15:47:45,1,-73.990257263183594,40.761688232421875,-74.011192321777344,40.729042053222656,N,1387 +id1160773,2,2016-06-08 11:41:47,2016-06-08 11:49:44,1,-73.986396789550781,40.752429962158203,-73.974662780761719,40.759040832519531,N,477 +id1589627,2,2016-01-10 10:48:37,2016-01-10 10:58:24,1,-73.975723266601563,40.789268493652344,-73.955223083496094,40.773490905761719,N,587 +id2750346,2,2016-01-26 19:42:59,2016-01-26 19:52:50,1,-73.989822387695313,40.733699798583984,-73.979667663574219,40.74810791015625,N,591 +id3602175,1,2016-05-07 22:16:32,2016-05-07 22:30:29,1,-73.951042175292969,40.77447509765625,-73.979591369628906,40.755313873291016,N,837 +id1684890,1,2016-04-12 08:47:46,2016-04-12 08:56:25,1,-74.007888793945313,40.715049743652344,-73.997825622558594,40.725650787353516,N,519 +id2308637,1,2016-05-22 12:42:48,2016-05-22 13:06:53,1,-73.981208801269531,40.759597778320313,-73.94842529296875,40.784290313720703,N,1445 +id0654528,1,2016-01-15 13:18:26,2016-01-15 13:31:07,1,-73.966598510742188,40.764778137207031,-73.965286254882813,40.790920257568359,N,761 +id2961070,1,2016-04-19 08:43:01,2016-04-19 08:45:08,2,-73.978988647460938,40.753303527832031,-73.974784851074219,40.758998870849609,N,127 +id3695064,1,2016-04-11 15:30:02,2016-04-11 15:30:19,1,-73.7940673828125,40.657173156738281,-73.7940673828125,40.657173156738281,N,17 +id0138655,1,2016-02-21 17:01:16,2016-02-21 17:09:49,1,-74.008903503417969,40.71417236328125,-73.99755859375,40.725788116455078,N,513 +id2564452,1,2016-02-18 19:44:59,2016-02-18 19:53:38,1,-73.967674255371094,40.693279266357422,-73.960174560546875,40.721839904785156,N,519 +id2977620,2,2016-03-13 15:59:53,2016-03-13 16:06:17,2,-73.982002258300781,40.776931762695312,-73.972000122070313,40.794490814208984,N,384 +id1573916,2,2016-01-31 19:15:21,2016-01-31 19:23:13,1,-73.986549377441406,40.776958465576172,-73.964248657226562,40.802261352539063,N,472 +id0495881,2,2016-04-14 17:01:39,2016-04-14 17:12:34,5,-73.961326599121094,40.764923095703125,-73.975357055664063,40.752281188964844,N,655 +id0013162,2,2016-05-12 08:18:00,2016-05-12 08:29:37,1,-73.976539611816406,40.775352478027344,-73.971977233886719,40.756381988525391,N,697 +id2784027,1,2016-02-14 18:29:43,2016-02-14 18:33:58,1,-73.9454345703125,40.774326324462891,-73.95379638671875,40.777843475341797,N,255 +id1727239,1,2016-02-05 17:19:06,2016-02-05 17:30:22,1,-73.963249206542969,40.762138366699219,-73.953521728515625,40.744579315185547,N,676 +id0058962,1,2016-01-08 18:51:53,2016-01-08 19:03:58,1,-73.991706848144531,40.735187530517578,-73.976715087890625,40.739372253417969,N,725 +id3891160,1,2016-06-15 18:03:00,2016-06-15 18:10:09,1,-73.985450744628906,40.741725921630859,-73.978713989257812,40.751045227050781,N,429 +id3946569,2,2016-01-07 12:45:31,2016-01-07 12:47:25,1,-73.997573852539063,40.741397857666016,-74.000236511230469,40.737743377685547,N,114 +id0383953,2,2016-04-28 06:47:40,2016-04-28 06:59:24,1,-73.978126525878906,40.752426147460938,-74.001457214355469,40.751510620117187,N,704 +id1271427,1,2016-06-26 13:52:10,2016-06-26 13:52:30,1,-73.9515380859375,40.781154632568359,-73.951530456542969,40.781154632568359,N,20 +id3674870,2,2016-03-18 11:54:20,2016-03-19 11:34:17,1,-73.989089965820313,40.736991882324219,-73.972335815429687,40.751510620117187,N,85197 +id3967741,1,2016-01-09 03:32:37,2016-01-09 03:43:53,1,-73.999809265136719,40.71490478515625,-73.986244201660156,40.718803405761719,N,676 +id2542624,1,2016-01-16 18:49:20,2016-01-16 18:54:16,1,-73.999794006347656,40.720455169677734,-74.011024475097656,40.713382720947266,N,296 +id2525213,2,2016-06-20 01:20:18,2016-06-20 01:22:35,3,-73.957359313964844,40.765998840332031,-73.949020385742188,40.777206420898438,N,137 +id1028122,1,2016-06-02 11:24:16,2016-06-02 11:40:00,1,-73.970413208007813,40.796379089355469,-73.938766479492187,40.799697875976563,N,944 +id2373688,2,2016-05-01 17:05:32,2016-05-01 17:16:43,3,-73.999198913574219,40.725101470947266,-73.988624572753906,40.748764038085938,N,671 +id3933936,1,2016-01-20 14:26:22,2016-01-20 14:58:02,1,-73.873100280761719,40.774135589599609,-73.983108520507812,40.726818084716797,N,1900 +id1361530,1,2016-06-29 22:58:38,2016-06-29 23:03:10,1,-74.002578735351563,40.749458312988281,-74.005401611328125,40.739574432373047,N,272 +id1163558,1,2016-04-14 15:48:38,2016-04-14 15:50:59,1,-73.983078002929688,40.75628662109375,-73.982559204101563,40.757301330566406,N,141 +id2557047,2,2016-02-17 20:09:50,2016-02-17 20:12:47,2,-73.955253601074219,40.779346466064453,-73.947784423828125,40.779121398925781,N,177 +id0260477,1,2016-04-15 19:09:23,2016-04-15 19:20:53,1,-73.997322082519531,40.736709594726563,-73.978950500488281,40.761741638183594,N,690 +id2914089,2,2016-01-12 10:46:10,2016-01-12 10:59:01,1,-73.968032836914062,40.802158355712891,-73.952743530273438,40.792060852050781,N,771 +id2957326,2,2016-04-21 23:33:56,2016-04-21 23:39:08,1,-74.00579833984375,40.717670440673828,-74.009086608886719,40.725868225097656,N,312 +id1663072,2,2016-01-12 10:03:16,2016-01-12 10:12:53,1,-74.007530212402344,40.727649688720703,-74.001838684082031,40.751026153564453,N,577 +id3122708,2,2016-06-02 13:17:08,2016-06-02 13:32:03,1,-73.980278015136719,40.765350341796875,-74.001808166503906,40.761829376220703,N,895 +id2236504,2,2016-05-15 10:12:44,2016-05-15 10:18:42,2,-73.989921569824219,40.729583740234375,-73.975440979003906,40.751964569091797,N,358 +id2242882,1,2016-02-04 00:22:01,2016-02-04 00:24:26,1,-73.980758666992188,40.734058380126953,-73.971824645996094,40.744888305664062,N,145 +id1521605,1,2016-04-16 00:58:55,2016-04-16 01:06:05,1,-73.985115051269531,40.758087158203125,-73.978759765625,40.765163421630859,N,430 +id2725424,2,2016-03-30 09:39:02,2016-03-30 10:19:33,2,-73.907928466796875,40.753311157226563,-73.987251281738281,40.756797790527344,N,2431 +id3413505,2,2016-02-26 07:43:18,2016-02-26 07:46:25,2,-73.963470458984375,40.765834808349609,-73.9705810546875,40.758136749267578,N,187 +id2332883,1,2016-06-06 19:11:32,2016-06-06 19:23:52,1,-73.994552612304687,40.746204376220703,-73.978004455566406,40.729396820068359,N,740 +id0878481,2,2016-03-17 06:20:43,2016-03-17 06:56:59,1,-73.781768798828125,40.644638061523438,-73.883529663085938,40.760936737060547,N,2176 +id2943362,2,2016-03-03 09:37:46,2016-03-03 09:46:19,5,-74.00811767578125,40.73065185546875,-73.995376586914063,40.725082397460938,N,513 +id1308852,2,2016-01-16 15:35:11,2016-01-16 15:47:23,1,-73.969375610351562,40.763881683349609,-73.985847473144531,40.735153198242187,N,732 +id2744168,2,2016-01-22 10:13:10,2016-01-22 10:27:41,2,-73.975105285644531,40.755668640136719,-73.961502075195313,40.773895263671875,N,871 +id0889732,2,2016-04-16 18:35:15,2016-04-16 18:49:00,1,-73.964241027832031,40.792388916015625,-73.957748413085937,40.761486053466797,N,825 +id1268565,2,2016-01-01 12:48:13,2016-01-01 12:54:37,1,-73.984527587890625,40.759159088134766,-73.9952392578125,40.752891540527344,N,384 +id0831848,2,2016-04-17 15:13:14,2016-04-17 16:02:03,3,-73.977760314941406,40.764488220214844,-73.780311584472656,40.645259857177734,N,2929 +id3988601,2,2016-06-25 21:01:58,2016-06-25 21:08:39,1,-74.003089904785156,40.727439880371094,-73.992012023925781,40.723880767822266,N,401 +id0005376,2,2016-03-09 13:49:24,2016-03-09 14:04:31,2,-73.988937377929687,40.753726959228516,-73.96990966796875,40.758758544921875,N,907 +id1419792,2,2016-03-26 13:08:41,2016-03-26 13:36:48,1,-73.981269836425781,40.763900756835938,-74.011642456054687,40.714611053466797,N,1687 +id2342413,2,2016-06-03 21:07:58,2016-06-03 21:23:44,1,-73.977836608886719,40.752162933349609,-74.007377624511719,40.740066528320312,N,946 +id0893962,2,2016-02-03 16:03:46,2016-02-03 16:14:29,5,-73.977760314941406,40.763275146484375,-73.954185485839844,40.770481109619141,N,643 +id1104773,1,2016-05-31 11:41:14,2016-05-31 11:50:24,1,-74.004974365234375,40.719047546386719,-74.014579772949219,40.713920593261719,N,550 +id1308508,1,2016-03-02 12:00:35,2016-03-02 12:20:37,2,-73.993568420410156,40.749885559082031,-73.998855590820312,40.7247314453125,N,1202 +id1499731,2,2016-01-15 14:55:31,2016-01-15 15:28:36,1,-73.86358642578125,40.769325256347656,-73.943695068359375,40.746685028076172,N,1985 +id2066390,1,2016-02-02 20:46:59,2016-02-02 21:11:10,1,-73.974365234375,40.764022827148438,-73.990921020507812,40.724292755126953,N,1451 +id0175385,1,2016-02-27 03:09:22,2016-02-27 03:24:06,1,-73.981559753417969,40.764900207519531,-73.930091857910156,40.754356384277344,N,884 +id3595550,2,2016-04-28 17:34:58,2016-04-28 17:39:44,1,-73.978263854980469,40.785930633544922,-73.968597412109375,40.798923492431641,N,286 +id3630597,1,2016-06-26 11:55:47,2016-06-26 11:59:57,1,-73.980117797851563,40.746143341064453,-73.981491088867187,40.746891021728516,N,250 +id0532944,1,2016-03-14 08:42:04,2016-03-14 09:01:04,1,-73.946632385253906,40.777675628662109,-73.97381591796875,40.751377105712891,N,1140 +id0274398,1,2016-04-26 08:50:55,2016-04-26 09:04:03,1,-73.991943359375,40.744186401367188,-73.982353210449219,40.75225830078125,N,788 +id0580878,1,2016-02-25 21:10:39,2016-02-25 21:33:56,1,-73.981712341308594,40.747005462646484,-74.01751708984375,40.708202362060547,N,1397 +id2128336,1,2016-03-08 18:44:09,2016-03-08 18:54:42,1,-73.989799499511719,40.741573333740234,-73.983688354492187,40.721538543701172,N,633 +id2084023,2,2016-01-14 08:14:15,2016-01-14 08:19:39,1,-73.960189819335938,40.766330718994141,-73.971138000488281,40.761085510253906,N,324 +id1693416,2,2016-01-12 22:57:13,2016-01-12 23:33:06,1,-73.979324340820313,40.727630615234375,-74.074028015136719,40.640224456787109,N,2153 +id2466756,1,2016-01-10 21:47:22,2016-01-10 22:04:13,1,-73.885322570800781,40.773086547851563,-73.985054016113281,40.759815216064453,N,1011 +id0943317,2,2016-03-14 20:34:12,2016-03-14 20:54:09,2,-74.003921508789063,40.748268127441406,-73.953651428222656,40.809455871582031,N,1197 +id3202231,2,2016-03-24 05:21:44,2016-03-24 05:36:12,2,-73.9378662109375,40.848281860351563,-73.968101501464844,40.762290954589844,N,868 +id2515517,1,2016-05-03 20:09:31,2016-05-03 20:18:22,1,-73.981956481933594,40.752059936523438,-73.96539306640625,40.755008697509766,N,531 +id0195648,1,2016-02-16 21:27:47,2016-02-16 21:53:16,1,-73.790069580078125,40.646705627441406,-73.986328125,40.750301361083984,N,1529 +id3725414,1,2016-06-25 02:32:17,2016-06-25 02:38:59,1,-74.002769470214844,40.733768463134766,-73.985748291015625,40.727577209472656,N,402 +id3432094,2,2016-06-23 13:52:58,2016-06-23 13:58:00,2,-73.99114990234375,40.723812103271484,-73.992515563964844,40.728515625,N,302 +id1470076,1,2016-06-05 11:30:18,2016-06-05 11:36:44,1,-73.961471557617188,40.760311126708984,-73.945419311523438,40.780208587646484,N,386 +id0619722,2,2016-02-02 17:11:14,2016-02-02 17:15:50,1,-73.966423034667969,40.804859161376953,-73.974403381347656,40.793258666992188,N,276 +id0100501,1,2016-01-14 01:34:24,2016-01-14 01:50:42,1,-73.987342834472656,40.728404998779297,-73.91766357421875,40.760860443115234,N,978 +id3103828,2,2016-06-20 08:18:42,2016-06-20 08:26:23,1,-73.955856323242188,40.781932830810547,-73.951171875,40.770278930664063,N,461 +id1948030,2,2016-03-18 15:58:27,2016-03-18 16:09:19,5,-73.992782592773438,40.742851257324219,-73.995208740234375,40.727577209472656,N,652 +id2421965,2,2016-06-26 13:53:28,2016-06-26 14:04:15,6,-73.977462768554688,40.778583526611328,-73.967903137207031,40.800640106201172,N,647 +id2868710,2,2016-03-22 23:44:13,2016-03-22 23:57:36,4,-73.968093872070313,40.757190704345703,-73.968742370605469,40.796161651611328,N,803 +id1096547,2,2016-05-10 18:04:02,2016-05-10 18:19:05,1,-74.00433349609375,40.750431060791016,-73.978477478027344,40.752391815185547,N,903 +id2541431,1,2016-04-15 21:32:37,2016-04-15 21:42:53,1,-74.001289367675781,40.739200592041016,-74.003684997558594,40.750698089599609,N,616 +id1741921,1,2016-06-30 18:30:21,2016-06-30 19:10:48,1,-73.999061584472656,40.675060272216797,-73.982795715332031,40.745292663574219,N,2427 +id0078039,1,2016-05-03 10:05:23,2016-05-03 10:19:52,1,-73.99237060546875,40.749073028564453,-73.986015319824219,40.743946075439453,N,869 +id1084603,1,2016-05-16 13:15:03,2016-05-16 13:22:02,1,-73.971778869628906,40.759288787841797,-73.961433410644531,40.760372161865234,N,419 +id3218845,2,2016-03-26 14:21:44,2016-03-26 14:29:21,1,-73.976356506347656,40.756992340087891,-73.963905334472656,40.773521423339844,N,457 +id2008482,2,2016-01-30 18:59:55,2016-01-30 19:02:30,6,-73.965614318847656,40.805801391601563,-73.969505310058594,40.800468444824219,N,155 +id1540029,1,2016-03-24 18:24:18,2016-03-24 18:39:15,1,-73.956947326660156,40.766403198242188,-73.940414428710938,40.802909851074219,N,897 +id3643300,2,2016-01-06 06:46:53,2016-01-06 06:58:09,1,-73.988540649414062,40.774139404296875,-73.969558715820312,40.800159454345703,N,676 +id3498804,1,2016-03-17 08:37:14,2016-03-17 09:09:38,1,-73.951866149902344,40.77191162109375,-73.98126220703125,40.759407043457031,N,1944 +id3917080,2,2016-04-24 10:23:23,2016-04-24 10:26:40,1,-73.952255249023438,40.781337738037109,-73.947738647460938,40.775119781494141,N,197 +id1588891,1,2016-03-14 15:51:57,2016-03-14 15:58:14,2,-73.960617065429687,40.766197204589844,-73.970458984375,40.756664276123047,N,377 +id0204072,1,2016-05-12 22:15:17,2016-05-12 22:25:04,2,-73.976409912109375,40.674575805664063,-73.96185302734375,40.648563385009766,N,587 +id3804145,1,2016-01-09 20:47:09,2016-01-09 21:31:42,2,-73.790054321289063,40.643878936767578,-73.975875854492187,40.785541534423828,N,2673 +id2199683,1,2016-03-15 19:29:39,2016-03-15 19:40:39,1,-73.985641479492188,40.752128601074219,-73.964775085449219,40.756557464599609,N,660 +id0302845,1,2016-03-13 13:31:23,2016-03-13 13:38:09,2,-73.952865600585938,40.768177032470703,-73.96795654296875,40.753128051757812,N,406 +id2159358,1,2016-06-05 19:19:40,2016-06-05 19:40:02,1,-73.99224853515625,40.694446563720703,-73.9632568359375,40.716716766357422,N,1222 +id2156772,2,2016-05-09 22:51:01,2016-05-09 23:03:20,1,-74.00665283203125,40.735790252685547,-73.983627319335938,40.730941772460938,N,739 +id0962838,2,2016-03-18 13:11:03,2016-03-18 13:26:59,1,-73.953399658203125,40.767730712890625,-73.870582580566406,40.773941040039063,N,956 +id0662114,2,2016-05-31 11:25:24,2016-05-31 11:36:27,1,-73.973312377929688,40.757793426513672,-73.980430603027344,40.733615875244141,N,663 +id2659776,2,2016-01-11 07:51:55,2016-01-11 08:14:09,5,-74.015602111816406,40.709506988525391,-73.969352722167969,40.760658264160156,N,1334 +id1700819,2,2016-01-08 19:01:26,2016-01-08 19:05:19,1,-73.955520629882813,40.779350280761719,-73.949256896972656,40.782051086425781,N,233 +id0679987,1,2016-06-04 20:24:28,2016-06-04 21:03:00,1,-73.980003356933594,40.739131927490234,-73.975784301757812,40.667411804199219,N,2312 +id3557013,2,2016-06-23 12:00:40,2016-06-23 12:08:47,5,-73.977615356445313,40.763408660888672,-73.972686767578125,40.780620574951172,N,487 +id1225611,1,2016-02-19 01:14:02,2016-02-19 01:15:47,1,-73.953849792480469,40.779022216796875,-73.947700500488281,40.788726806640625,N,105 +id3098925,1,2016-05-17 20:34:45,2016-05-17 20:52:43,2,-73.982223510742188,40.778533935546875,-73.952743530273438,40.825813293457031,N,1078 +id3369033,2,2016-05-26 01:37:43,2016-05-26 01:51:34,5,-73.989028930664062,40.764400482177734,-73.945701599121094,40.79302978515625,N,831 +id2601457,2,2016-05-23 21:06:06,2016-05-23 21:15:49,1,-73.983909606933594,40.755203247070313,-73.952392578125,40.791328430175781,N,583 +id3966669,2,2016-04-26 14:16:01,2016-04-26 14:30:24,2,-73.995895385742187,40.764350891113281,-73.979507446289063,40.754226684570312,N,863 +id1347595,2,2016-01-23 01:53:10,2016-01-23 02:02:25,6,-73.971015930175781,40.751220703125,-73.95257568359375,40.77252197265625,N,555 +id0365565,1,2016-01-31 00:34:38,2016-01-31 00:51:51,3,-73.99114990234375,40.760814666748047,-73.985374450683594,40.732204437255859,N,1033 +id2961709,2,2016-02-12 18:51:00,2016-02-12 18:57:32,6,-73.98773193359375,40.744190216064453,-73.983001708984375,40.735019683837891,N,392 +id1382179,2,2016-04-25 07:01:59,2016-04-25 07:11:56,2,-74.012931823730469,40.707630157470703,-73.993179321289063,40.742851257324219,N,597 +id0145134,1,2016-01-02 13:48:39,2016-01-02 14:06:48,1,-73.955642700195312,40.779613494873047,-73.995841979980469,40.743671417236328,N,1089 +id2488850,2,2016-01-06 10:56:02,2016-01-06 10:58:34,1,-73.993339538574219,40.736099243164063,-73.991241455078125,40.732780456542969,N,152 +id2096156,1,2016-05-04 18:26:30,2016-05-04 18:44:28,1,-73.980667114257813,40.774829864501953,-73.95623779296875,40.763740539550781,N,1078 +id1867766,2,2016-01-03 14:40:32,2016-01-03 15:09:16,1,-73.982429504394531,40.768230438232422,-73.994186401367188,40.722728729248047,N,1724 +id0364312,2,2016-02-05 08:50:30,2016-02-05 08:59:47,1,-73.979438781738281,40.746498107910156,-73.988624572753906,40.754280090332031,N,557 +id3973585,2,2016-04-27 08:16:53,2016-04-27 08:26:50,1,-73.988639831542969,40.700691223144531,-74.010749816894531,40.716243743896484,N,597 +id1668148,2,2016-04-30 19:32:01,2016-04-30 19:41:52,5,-73.990097045898437,40.748100280761719,-73.97418212890625,40.743152618408203,N,591 +id0812345,1,2016-03-24 21:22:45,2016-03-24 21:35:40,1,-73.967582702636719,40.756004333496094,-73.987556457519531,40.743686676025391,N,775 +id3879460,2,2016-01-18 22:28:52,2016-01-18 22:34:32,1,-73.998016357421875,40.734550476074219,-73.985519409179688,40.738868713378906,N,340 +id3047905,2,2016-05-21 15:55:01,2016-05-21 16:10:28,1,-73.981315612792969,40.741233825683594,-73.9908447265625,40.760169982910156,N,927 +id0975144,2,2016-01-20 21:52:44,2016-01-20 22:09:18,1,-74.014801025390625,40.715671539306641,-73.981117248535156,40.763668060302734,N,994 +id2827246,2,2016-03-07 11:34:09,2016-03-07 11:48:44,1,-73.978683471679688,40.777278900146484,-73.952888488769531,40.776679992675781,N,875 +id1363671,2,2016-05-29 14:18:13,2016-05-29 14:26:38,1,-73.973617553710938,40.755519866943359,-73.985069274902344,40.763038635253906,N,505 +id1877873,2,2016-02-26 20:08:11,2016-02-26 20:40:35,1,-74.001678466796875,40.730751037597656,-73.956138610839844,40.80340576171875,N,1944 +id3047585,2,2016-03-01 20:22:30,2016-03-01 20:44:57,6,-73.950546264648438,40.821323394775391,-73.991371154785156,40.750076293945312,N,1347 +id0930788,1,2016-03-29 17:17:16,2016-03-29 17:27:41,1,-73.975326538085938,40.749576568603516,-73.986709594726563,40.755123138427734,N,625 +id3245298,2,2016-03-10 02:53:00,2016-03-10 03:15:50,1,-73.980888366699219,40.760398864746094,-73.841064453125,40.671806335449219,N,1370 +id1783589,2,2016-03-15 22:15:08,2016-03-15 22:44:42,1,-73.98504638671875,40.747406005859375,-73.979507446289063,40.658832550048828,N,1774 +id3953674,1,2016-03-21 10:53:34,2016-03-21 10:59:38,1,-74.008224487304688,40.737819671630859,-73.998222351074219,40.75604248046875,N,364 +id1723277,1,2016-06-23 04:43:37,2016-06-23 04:46:12,1,-73.975860595703125,40.745025634765625,-73.987602233886719,40.737617492675781,N,155 +id0034983,1,2016-05-01 18:54:38,2016-05-01 18:58:20,1,-73.941505432128906,40.798728942871094,-73.939125061035156,40.802295684814453,N,222 +id3910455,2,2016-01-11 15:59:56,2016-01-11 16:11:51,1,-73.982513427734375,40.748561859130859,-74.002723693847656,40.741630554199219,N,715 +id0709915,1,2016-06-25 17:41:44,2016-06-25 18:05:11,3,-73.94012451171875,40.751285552978516,-74.011085510253906,40.701629638671875,N,1407 +id1937416,1,2016-01-22 18:37:24,2016-01-22 18:53:21,1,-73.981918334960938,40.770023345947266,-73.953155517578125,40.785812377929688,N,957 +id2746376,2,2016-03-20 12:34:01,2016-03-20 12:38:32,1,-74.004257202148438,40.751785278320313,-73.998161315917969,40.745109558105469,N,271 +id3664832,1,2016-02-01 15:05:36,2016-02-01 15:17:51,2,-73.981361389160156,40.761867523193359,-73.992286682128906,40.750144958496094,N,735 +id3398421,1,2016-03-12 21:47:38,2016-03-12 22:02:57,1,-73.982376098632812,40.771297454833984,-73.978271484375,40.749961853027344,N,919 +id3107922,1,2016-06-19 10:01:35,2016-06-19 10:10:03,3,-73.938835144042969,40.799716949462891,-73.951675415039063,40.809539794921875,N,508 +id3987451,2,2016-05-14 14:28:36,2016-05-14 14:37:11,3,-73.994087219238281,40.7510986328125,-73.978233337402344,40.752552032470703,N,515 +id2898960,1,2016-06-19 19:11:28,2016-06-19 19:21:14,3,-74.005294799804688,40.722366333007813,-73.995391845703125,40.7498779296875,N,586 +id0918617,2,2016-06-26 13:24:09,2016-06-26 13:34:40,1,-73.972549438476562,40.780960083007813,-73.954154968261719,40.77862548828125,N,631 +id0560377,2,2016-06-11 10:15:50,2016-06-11 10:27:02,5,-73.986122131347656,40.734703063964844,-73.994270324707031,40.746173858642578,N,672 +id0119338,2,2016-02-21 14:01:19,2016-02-21 14:51:44,1,-73.983352661132813,40.766700744628906,-73.788948059082031,40.641590118408203,N,3025 +id3934761,1,2016-04-07 00:52:24,2016-04-07 01:04:15,1,-74.010017395019531,40.720062255859375,-74.008598327636719,40.704437255859375,N,711 +id2866799,2,2016-06-18 12:25:07,2016-06-18 12:36:18,2,-73.978118896484375,40.749080657958984,-73.987007141113281,40.745361328125,N,671 +id2449596,2,2016-01-11 08:23:18,2016-01-11 08:43:46,3,-74.003425598144531,40.726688385009766,-73.940803527832031,40.794136047363281,N,1228 +id1850802,1,2016-01-14 10:26:43,2016-01-14 10:36:21,1,-73.952995300292969,40.786075592041016,-73.962623596191406,40.774761199951172,N,578 +id0306908,1,2016-01-12 21:55:06,2016-01-12 22:03:12,1,-73.98663330078125,40.759593963623047,-73.982421875,40.747913360595703,N,486 +id2393976,1,2016-02-18 14:03:17,2016-02-18 14:07:36,1,-73.985885620117187,40.741680145263672,-73.97564697265625,40.741424560546875,N,259 +id1787725,1,2016-04-27 10:09:01,2016-04-27 10:32:32,2,-73.994697570800781,40.740821838378906,-73.973884582519531,40.749160766601563,N,1411 +id0855337,1,2016-01-26 12:14:33,2016-01-26 12:26:09,1,-73.96734619140625,40.754280090332031,-73.952507019042969,40.766033172607422,N,696 +id1403054,2,2016-01-09 18:20:56,2016-01-09 18:27:42,1,-73.954818725585937,40.765308380126953,-73.972061157226562,40.743400573730469,N,406 +id1260726,1,2016-06-26 23:42:39,2016-06-26 23:47:53,1,-73.968948364257813,40.754310607910156,-73.953666687011719,40.770908355712891,N,314 +id1427023,1,2016-01-09 12:52:58,2016-01-09 13:05:26,1,-73.97674560546875,40.743732452392578,-73.974433898925781,40.761077880859375,N,748 +id2072656,1,2016-02-27 10:40:31,2016-02-27 10:57:13,1,-73.96343994140625,40.770778656005859,-73.980308532714844,40.716934204101563,N,1002 +id2632208,1,2016-04-21 01:28:25,2016-04-21 01:38:41,2,-74.004020690917969,40.721813201904297,-73.986160278320312,40.755771636962891,N,616 +id0303838,1,2016-04-24 21:05:00,2016-04-24 21:19:53,1,-73.990463256835938,40.751075744628906,-74.005653381347656,40.725822448730469,N,893 +id2413540,2,2016-02-03 18:48:05,2016-02-03 18:58:15,1,-73.937858581542969,40.792835235595703,-73.964996337890625,40.801036834716797,N,610 +id0761466,1,2016-05-18 11:58:27,2016-05-18 13:02:50,1,-73.87298583984375,40.774173736572266,-73.993125915527344,40.73358154296875,N,3863 +id1186952,1,2016-04-14 22:54:54,2016-04-14 22:57:15,1,-73.989860534667969,40.752605438232422,-73.998252868652344,40.745304107666016,N,141 +id3568855,1,2016-03-30 11:31:33,2016-03-30 11:33:06,1,-73.956642150878906,40.767055511474609,-73.953025817871094,40.771892547607422,N,93 +id3916939,2,2016-05-09 15:53:39,2016-05-09 16:02:37,5,-73.986808776855469,40.771629333496094,-73.963996887207031,40.802818298339844,N,538 +id0276440,1,2016-01-11 11:37:33,2016-01-11 11:53:42,1,-73.987213134765625,40.741668701171875,-73.971260070800781,40.764217376708984,N,969 +id3040467,2,2016-04-30 15:54:11,2016-04-30 16:03:33,6,-73.977577209472656,40.762031555175781,-73.981834411621094,40.768505096435547,N,562 +id2827346,1,2016-06-11 22:40:19,2016-06-11 22:52:56,1,-73.982864379882813,40.726787567138672,-73.983314514160156,40.742477416992188,N,757 +id2395558,2,2016-03-31 20:22:12,2016-03-31 20:44:20,5,-73.984619140625,40.751171112060547,-73.951126098632813,40.804946899414063,N,1328 +id3504465,1,2016-02-27 01:34:47,2016-02-27 01:55:03,2,-73.982467651367188,40.757633209228516,-73.953216552734375,40.708404541015625,N,1216 +id1123645,1,2016-01-20 20:45:13,2016-01-20 20:55:17,2,-73.986991882324219,40.738780975341797,-73.971412658691406,40.749443054199219,N,604 +id3878238,2,2016-02-04 12:58:27,2016-02-04 13:07:51,1,-73.994377136230469,40.745861053466797,-73.993293762207031,40.752288818359375,N,564 +id1939965,1,2016-02-08 01:15:36,2016-02-08 01:26:33,1,-73.926200866699219,40.77191162109375,-73.875785827636719,40.75274658203125,N,657 +id3472579,1,2016-06-06 11:21:39,2016-06-06 11:29:34,1,-73.955619812011719,40.776924133300781,-73.967109680175781,40.766815185546875,N,475 +id2467935,1,2016-02-18 07:27:57,2016-02-18 07:42:35,1,-73.946121215820312,40.773052215576172,-73.966773986816406,40.790054321289063,N,878 +id1396208,2,2016-03-18 00:48:11,2016-03-18 01:18:30,1,-73.959968566894531,40.773590087890625,-73.956321716308594,40.684169769287109,N,1819 +id1777618,2,2016-06-24 20:39:44,2016-06-24 20:48:25,2,-74.004417419433594,40.724514007568359,-73.993309020996094,40.741786956787109,N,521 +id3721313,2,2016-05-11 05:46:26,2016-05-11 06:01:10,1,-73.776878356933594,40.645092010498047,-73.815193176269531,40.71405029296875,N,884 +id3642224,2,2016-04-22 08:47:43,2016-04-22 08:57:17,5,-73.940101623535156,40.809455871582031,-73.953536987304687,40.790958404541016,N,574 +id1118535,2,2016-04-23 14:04:58,2016-04-23 14:12:56,1,-73.994117736816406,40.761520385742187,-73.971092224121094,40.767059326171875,N,478 +id2763379,2,2016-05-20 06:51:47,2016-05-20 07:03:09,2,-73.946281433105469,40.789741516113281,-73.9591064453125,40.774787902832031,N,682 +id2105029,2,2016-01-11 16:20:31,2016-01-11 16:26:05,5,-73.949783325195313,40.768573760986328,-73.961654663085937,40.772800445556641,N,334 +id2238590,1,2016-04-24 13:24:59,2016-04-24 13:34:32,2,-73.979949951171875,40.763404846191406,-73.982185363769531,40.773849487304688,N,573 +id1343364,2,2016-02-15 00:28:02,2016-02-15 00:30:48,1,-73.957473754882813,40.774074554443359,-73.947944641113281,40.780483245849609,N,166 +id3632390,2,2016-06-08 08:54:33,2016-06-09 07:58:09,5,-73.980560302734375,40.742465972900391,-73.984718322753906,40.748611450195313,N,83016 +id1234726,2,2016-03-28 18:00:29,2016-03-28 18:08:18,1,-73.984580993652344,40.743480682373047,-73.9825439453125,40.735671997070313,N,469 +id3729146,2,2016-05-12 11:14:55,2016-05-12 11:33:04,1,-73.989402770996094,40.767807006835938,-73.97674560546875,40.776695251464844,N,1089 +id3726359,1,2016-02-28 12:17:27,2016-02-28 12:26:02,1,-73.978805541992188,40.75054931640625,-73.991111755371094,40.734931945800781,N,515 +id3518457,2,2016-06-07 08:47:58,2016-06-07 08:59:34,1,-73.957374572753906,40.782024383544922,-73.960792541503906,40.771526336669922,N,696 +id0519385,1,2016-02-10 13:13:57,2016-02-10 13:16:30,1,-73.966781616210938,40.7640380859375,-73.958877563476562,40.772174835205078,N,153 +id0730845,1,2016-06-24 06:20:50,2016-06-24 06:24:18,1,-73.980110168457031,40.749183654785156,-73.976058959960937,40.757358551025391,N,208 +id3175913,2,2016-02-27 11:07:21,2016-02-27 11:20:01,2,-73.981063842773438,40.737625122070313,-73.9833984375,40.756046295166016,N,760 +id1001966,2,2016-03-17 10:18:56,2016-03-17 10:33:25,4,-73.961158752441406,40.764816284179688,-73.974380493164063,40.751884460449219,N,869 +id0733835,1,2016-02-12 09:36:00,2016-02-12 09:53:15,1,-73.983604431152344,40.744518280029297,-73.970138549804687,40.763202667236328,N,1035 +id3721850,1,2016-02-04 16:33:45,2016-02-04 16:58:31,2,-73.99749755859375,40.756717681884766,-73.94757080078125,40.770847320556641,N,1486 +id3748092,2,2016-01-23 00:59:34,2016-01-23 01:06:24,5,-73.973175048828125,40.763893127441406,-73.986038208007813,40.761135101318359,N,410 +id2198124,2,2016-02-17 07:37:25,2016-02-17 07:40:14,6,-73.937110900878906,40.798000335693359,-73.937591552734375,40.804470062255859,N,169 +id3506012,2,2016-03-21 08:08:53,2016-03-21 08:29:54,1,-73.964210510253906,40.756629943847656,-73.992172241210937,40.749408721923828,N,1261 +id3171505,2,2016-06-02 03:26:09,2016-06-02 03:30:51,1,-73.997901916503906,40.724269866943359,-74.004142761230469,40.738059997558594,N,282 +id0114701,2,2016-04-08 11:56:27,2016-04-08 12:16:01,1,-73.988052368164063,40.776329040527344,-73.992927551269531,40.756378173828125,N,1174 +id0855766,1,2016-02-15 13:37:44,2016-02-15 13:54:23,1,-73.966629028320312,40.773536682128906,-73.988441467285156,40.742908477783203,N,999 +id1887492,2,2016-05-24 16:46:23,2016-05-24 16:55:10,1,-73.998802185058594,40.734569549560547,-74.003562927246094,40.722728729248047,N,527 +id1335170,2,2016-05-16 15:20:11,2016-05-16 15:24:48,1,-73.982131958007813,40.770870208740234,-73.981590270996094,40.763862609863281,N,277 +id1840873,1,2016-01-13 14:39:28,2016-01-13 14:47:30,1,-73.9853515625,40.744850158691406,-73.991874694824219,40.749153137207031,N,482 +id2450047,1,2016-04-14 17:19:14,2016-04-14 17:25:34,1,-73.980712890625,40.778186798095703,-73.989143371582031,40.777206420898438,Y,380 +id2403799,1,2016-05-30 00:18:41,2016-05-30 00:22:44,1,-73.953727722167969,40.775051116943359,-73.968505859375,40.754856109619141,N,243 +id0692901,2,2016-04-02 13:11:54,2016-04-02 13:17:58,1,-74.003250122070312,40.733001708984375,-73.997802734375,40.72576904296875,N,364 +id0329403,1,2016-04-21 07:52:20,2016-04-21 07:56:32,1,-74.007194519042969,40.727527618408203,-74.000701904296875,40.728843688964844,Y,252 +id1372271,2,2016-03-20 21:31:31,2016-03-20 21:40:02,5,-73.982597351074219,40.727371215820313,-73.997718811035156,40.718040466308594,N,511 +id1017892,1,2016-04-23 11:37:40,2016-04-23 11:41:51,2,-73.962730407714844,40.758144378662109,-73.968658447265625,40.757469177246094,N,251 +id0843668,1,2016-06-28 01:18:11,2016-06-28 01:26:00,1,-73.981109619140625,40.720993041992187,-73.980621337890625,40.741893768310547,N,469 +id2208600,2,2016-05-11 06:49:47,2016-05-11 06:57:08,1,-74.006462097167969,40.732948303222656,-74.014549255371094,40.713909149169922,N,441 +id0166889,1,2016-05-28 08:02:42,2016-05-28 08:11:29,1,-73.979331970214844,40.784530639648438,-73.961357116699219,40.801990509033203,N,527 +id1897763,2,2016-06-05 17:39:25,2016-06-05 17:51:17,5,-73.986572265625,40.7584228515625,-73.994956970214844,40.750270843505859,N,712 +id2900293,2,2016-01-19 01:13:43,2016-01-19 01:18:29,2,-73.984939575195313,40.753620147705078,-73.96539306640625,40.760711669921875,N,286 +id0923328,1,2016-05-14 12:54:09,2016-05-14 13:07:02,2,-74.016708374023438,40.704826354980469,-73.998870849609375,40.719181060791016,N,773 +id3980571,1,2016-01-29 17:03:48,2016-01-29 17:21:32,1,-74.005828857421875,40.7060546875,-74.008247375488281,40.742149353027344,N,1064 +id3886614,1,2016-04-07 00:03:23,2016-04-07 00:08:34,1,-73.976127624511719,40.759765625,-73.971786499023438,40.755180358886719,N,311 +id0924534,1,2016-02-02 17:37:04,2016-02-02 17:52:47,1,-74.003425598144531,40.749176025390625,-74.012176513671875,40.717311859130859,N,943 +id0714769,2,2016-05-05 22:45:05,2016-05-05 23:17:42,1,-73.965217590332031,40.774940490722656,-73.985786437988281,40.721958160400391,N,1957 +id0219072,2,2016-03-06 00:21:56,2016-03-06 00:28:16,5,-73.973464965820313,40.763999938964844,-73.984321594238281,40.761371612548828,N,380 +id3909609,2,2016-03-10 10:28:13,2016-03-10 10:31:40,1,-73.947280883789063,40.790870666503906,-73.952651977539063,40.783561706542969,N,207 +id1807697,1,2016-06-22 19:44:39,2016-06-22 20:06:36,3,-73.973960876464844,40.755886077880859,-73.944877624511719,40.808765411376953,N,1317 +id0560417,1,2016-06-15 12:10:13,2016-06-15 12:23:39,1,-73.987754821777344,40.743812561035156,-74.001319885253906,40.731460571289063,N,806 +id1302551,2,2016-02-11 11:02:55,2016-02-11 11:18:40,5,-73.984771728515625,40.763851165771484,-73.969650268554688,40.761886596679688,N,945 +id0244421,2,2016-03-06 19:09:06,2016-03-06 19:23:52,1,-73.970321655273437,40.756229400634766,-73.990509033203125,40.757549285888672,N,886 +id2628616,2,2016-04-25 19:46:59,2016-04-25 19:56:22,2,-73.988288879394531,40.737358093261719,-73.993354797363281,40.718021392822266,N,563 +id1734807,1,2016-05-23 22:12:46,2016-05-23 22:18:02,1,-73.968513488769531,40.761634826660156,-73.968330383300781,40.755027770996094,N,316 +id3225974,2,2016-02-14 17:48:11,2016-02-14 17:55:15,2,-73.966659545898438,40.757518768310547,-73.952003479003906,40.778041839599609,N,424 +id0770983,2,2016-04-20 21:31:03,2016-04-20 21:36:56,1,-73.986808776855469,40.761787414550781,-73.995330810546875,40.759868621826172,N,353 +id2527910,1,2016-05-31 21:32:16,2016-05-31 22:08:54,1,-73.957054138183594,40.780418395996094,-73.852203369140625,40.728263854980469,N,2198 +id2869213,2,2016-03-05 03:29:41,2016-03-05 03:34:34,2,-73.985771179199219,40.722213745117188,-73.979118347167969,40.721904754638672,N,293 +id1677708,2,2016-02-21 15:43:32,2016-02-21 15:52:01,1,-73.981468200683594,40.729183197021484,-73.988166809082031,40.718864440917969,N,509 +id0445979,1,2016-02-08 21:11:57,2016-02-08 21:17:48,1,-73.991508483886719,40.726898193359375,-73.977935791015625,40.745883941650391,N,351 +id1990231,1,2016-01-27 19:57:36,2016-01-27 20:00:19,1,-73.977371215820313,40.750743865966797,-73.981002807617187,40.744644165039062,N,163 +id0297157,2,2016-01-03 03:31:08,2016-01-03 03:34:11,2,-73.991432189941406,40.726970672607422,-73.9881591796875,40.728969573974609,N,183 +id3756343,2,2016-05-20 15:46:17,2016-05-20 16:30:21,1,-74.001899719238281,40.734420776367188,-73.95098876953125,40.773441314697266,N,2644 +id3495813,1,2016-04-10 00:52:19,2016-04-10 01:06:24,1,-73.987289428710938,40.750297546386719,-73.982276916503906,40.731502532958984,N,845 +id3928902,1,2016-01-08 12:41:17,2016-01-08 12:52:54,1,-73.976211547851563,40.776073455810547,-73.974761962890625,40.761993408203125,N,697 +id3258948,1,2016-03-09 23:38:47,2016-03-09 23:45:47,1,-73.952743530273438,40.775669097900391,-73.971855163574219,40.752056121826172,N,420 +id3169679,1,2016-01-18 19:19:29,2016-01-18 19:37:35,2,-73.993759155273438,40.74664306640625,-73.947097778320312,40.778316497802734,N,1086 +id1474186,2,2016-04-08 13:55:01,2016-04-08 14:11:31,1,-73.997383117675781,40.720958709716797,-73.9923095703125,40.737888336181641,N,990 +id3176524,2,2016-06-22 13:59:17,2016-06-22 15:02:56,1,-73.790290832519531,40.64337158203125,-73.985832214355469,40.756641387939453,N,3819 +id3253298,2,2016-03-07 22:11:15,2016-03-07 22:24:23,2,-73.968879699707031,40.764305114746094,-73.973831176757813,40.737743377685547,N,788 +id0372061,1,2016-03-20 09:25:54,2016-03-20 09:39:10,1,-73.946029663085938,40.779964447021484,-73.991287231445313,40.750045776367188,N,796 +id3651634,1,2016-02-08 08:50:49,2016-02-08 09:16:28,1,-73.968269348144531,40.786956787109375,-73.9681396484375,40.757415771484375,N,1539 +id3453391,2,2016-06-22 08:43:25,2016-06-22 09:02:08,1,-73.960800170898437,40.775497436523438,-73.961181640625,40.805141448974609,N,1123 +id1029335,2,2016-01-09 11:20:59,2016-01-09 11:24:24,2,-73.989288330078125,40.763240814208984,-73.990341186523438,40.76824951171875,N,205 +id0141303,2,2016-02-22 08:37:57,2016-02-22 08:43:28,1,-73.97991943359375,40.749229431152344,-73.988967895507813,40.747760772705078,N,331 +id0739264,2,2016-01-16 23:56:52,2016-01-16 23:59:49,1,-73.947898864746094,40.771984100341797,-73.957931518554687,40.768566131591797,N,177 +id3634192,2,2016-05-04 12:23:09,2016-05-04 12:27:45,2,-73.968536376953125,40.7916259765625,-73.977691650390625,40.786380767822266,N,276 +id0640254,2,2016-01-08 16:59:35,2016-01-08 17:17:35,1,-73.994743347167969,40.760250091552734,-74.002639770507813,40.739158630371094,N,1080 +id3819232,1,2016-03-25 00:10:13,2016-03-25 00:21:37,4,-73.978599548339844,40.741123199462891,-73.971733093261719,40.763465881347656,N,684 +id2817492,2,2016-03-12 11:03:36,2016-03-12 11:19:55,1,-74.014411926269531,40.714153289794922,-73.983634948730469,40.726108551025391,N,979 +id3590472,2,2016-05-02 23:14:36,2016-05-02 23:23:41,1,-73.979118347167969,40.753231048583984,-74.003829956054687,40.745883941650391,N,545 +id2627788,1,2016-06-28 10:20:01,2016-06-28 10:28:42,1,-74.004829406738281,40.737373352050781,-73.996955871582031,40.747146606445313,N,521 +id1837726,2,2016-04-27 06:29:26,2016-04-27 06:36:39,1,-73.977546691894531,40.750251770019531,-73.967887878417969,40.764469146728516,N,433 +id1622280,2,2016-01-26 15:30:23,2016-01-26 16:07:29,1,-73.956138610839844,40.764579772949219,-73.994361877441406,40.756660461425781,N,2226 +id3535223,1,2016-04-18 07:56:54,2016-04-18 08:11:01,4,-73.961357116699219,40.764289855957031,-73.982490539550781,40.744937896728516,N,847 +id0611940,2,2016-06-07 16:59:01,2016-06-07 18:15:56,2,-74.009498596191406,40.705604553222656,-74.177635192871094,40.695091247558594,N,4615 +id1056639,2,2016-02-24 07:46:22,2016-02-24 08:00:19,6,-73.964286804199219,40.757179260253906,-73.961341857910156,40.780418395996094,N,837 +id1087396,1,2016-03-30 15:17:30,2016-03-30 15:29:22,1,-73.988212585449219,40.743560791015625,-74.001792907714844,40.733737945556641,N,712 +id3034173,2,2016-05-20 02:55:12,2016-05-20 03:22:06,1,-74.005729675292969,40.740478515625,-73.962570190429688,40.659095764160156,N,1614 +id2918932,1,2016-01-02 15:34:24,2016-01-02 15:50:07,2,-73.988006591796875,40.749900817871094,-73.9774169921875,40.77777099609375,N,943 +id3521209,1,2016-01-17 03:39:53,2016-01-17 03:47:44,2,-74.000709533691406,40.718246459960938,-73.985679626464844,40.735084533691406,N,471 +id0200259,2,2016-05-17 18:22:59,2016-05-17 18:31:10,3,-74.009330749511719,40.712371826171875,-74.010169982910156,40.732219696044922,N,491 +id0328999,2,2016-04-24 13:43:12,2016-04-24 13:49:04,1,-73.99017333984375,40.746719360351563,-73.9805908203125,40.759330749511719,N,352 +id0370099,2,2016-03-29 11:22:53,2016-03-29 11:39:06,1,-73.990142822265625,40.737918853759766,-74.005599975585938,40.717639923095703,N,973 +id2761751,2,2016-06-28 00:46:16,2016-06-28 00:50:06,1,-74.007247924804687,40.743671417236328,-74.001373291015625,40.739200592041016,N,230 +id1846189,1,2016-03-24 18:18:37,2016-03-24 18:33:40,1,-73.983230590820313,40.767349243164062,-73.949462890625,40.796295166015625,N,903 +id1791907,1,2016-03-28 13:31:46,2016-03-28 13:45:46,2,-73.983123779296875,40.730785369873047,-73.979736328125,40.751182556152344,N,840 +id1518139,2,2016-06-12 20:41:51,2016-06-12 20:43:37,2,-73.991531372070313,40.749748229980469,-73.995048522949219,40.745121002197266,N,106 +id0653535,1,2016-06-28 16:44:45,2016-06-28 16:51:05,1,-73.987335205078125,40.766067504882813,-73.992897033691406,40.762680053710937,N,380 +id3440168,1,2016-06-15 21:04:40,2016-06-15 21:15:44,2,-73.991912841796875,40.7291259765625,-73.993751525878906,40.719257354736328,N,664 +id1586870,2,2016-04-26 20:14:09,2016-04-26 20:33:55,1,-73.967811584472656,40.762569427490234,-73.913368225097656,40.764553070068359,N,1186 +id2594037,2,2016-04-05 09:31:19,2016-04-05 09:52:21,1,-73.98822021484375,40.754688262939453,-74.016799926757813,40.704788208007812,N,1262 +id0565312,2,2016-01-29 05:11:42,2016-01-29 05:21:58,5,-73.972694396972656,40.753326416015625,-73.941864013671875,40.789470672607422,N,616 +id2070465,2,2016-03-11 00:40:40,2016-03-11 00:44:31,1,-73.969413757324219,40.757251739501953,-73.978912353515625,40.7435302734375,N,231 +id1148288,1,2016-04-21 21:26:43,2016-04-21 21:32:28,1,-73.972557067871094,40.762336730957031,-73.955596923828125,40.773681640625,N,345 +id0481046,2,2016-05-27 19:36:31,2016-05-27 19:40:48,1,-74.000221252441406,40.761680603027344,-73.993316650390625,40.757026672363281,N,257 +id2281677,2,2016-04-14 20:16:08,2016-04-14 20:32:38,1,-74.005996704101563,40.711891174316406,-73.988006591796875,40.728660583496094,N,990 +id2587110,1,2016-04-17 00:44:04,2016-04-17 00:56:50,1,-74.000343322753906,40.737594604492188,-74.013450622558594,40.709083557128906,N,766 +id1869161,2,2016-01-10 13:20:46,2016-01-10 13:35:01,1,-73.981407165527344,40.773998260498047,-73.999076843261719,40.739410400390625,N,855 +id2969033,1,2016-06-20 08:06:09,2016-06-20 08:18:30,1,-73.984832763671875,40.77508544921875,-73.972854614257813,40.759574890136719,N,741 +id2349511,1,2016-06-30 17:31:15,2016-06-30 17:51:18,1,-73.98797607421875,40.755283355712891,-74.006889343261719,40.749046325683594,N,1203 +id2577140,1,2016-05-20 02:45:36,2016-05-20 02:51:21,1,-73.981948852539063,40.731143951416016,-73.987586975097656,40.718002319335938,N,345 +id1647191,1,2016-04-30 11:50:42,2016-04-30 11:56:48,1,-73.973121643066406,40.75244140625,-73.960174560546875,40.761966705322266,N,366 +id3460581,2,2016-05-13 07:03:45,2016-05-13 07:06:19,5,-73.998748779296875,40.734661102294922,-73.991867065429688,40.731250762939453,N,154 +id1755451,1,2016-04-15 22:27:49,2016-04-15 22:44:40,2,-73.986244201660156,40.726413726806641,-73.948089599609375,40.780487060546875,N,1011 +id2434094,2,2016-03-11 02:50:45,2016-03-11 02:55:31,5,-73.977752685546875,40.754856109619141,-73.96466064453125,40.754825592041016,N,286 +id3942115,1,2016-05-24 22:16:59,2016-05-24 22:39:54,2,-73.98858642578125,40.727275848388672,-73.982086181640625,40.775131225585938,N,1375 +id2174499,1,2016-02-06 14:10:21,2016-02-06 14:23:58,1,-74.002677917480469,40.728675842285156,-73.979461669921875,40.749671936035156,N,817 +id1562049,2,2016-06-13 08:31:43,2016-06-13 08:37:00,3,-73.989700317382812,40.741348266601563,-73.982437133789062,40.739730834960937,N,317 +id1019014,1,2016-03-15 09:19:48,2016-03-15 09:47:12,1,-73.995758056640625,40.73309326171875,-73.970191955566406,40.762184143066406,N,1644 +id1084281,1,2016-02-03 10:47:53,2016-02-03 10:53:22,1,-73.9638671875,40.777019500732422,-73.978935241699219,40.778343200683594,Y,329 +id1076908,2,2016-04-16 21:53:47,2016-04-16 22:07:55,1,-73.941566467285156,40.7877197265625,-73.977371215820313,40.764640808105469,N,848 +id3606842,2,2016-03-14 07:35:31,2016-03-14 07:40:24,1,-74.00067138671875,40.685245513916016,-73.993324279785156,40.692211151123047,N,293 +id1891338,1,2016-06-15 04:04:31,2016-06-15 04:17:24,3,-73.935234069824219,40.800586700439453,-73.90216064453125,40.836826324462891,N,773 +id1747183,2,2016-06-15 16:46:55,2016-06-15 17:00:55,1,-73.982307434082031,40.775814056396484,-73.975082397460938,40.792697906494141,N,840 +id0376855,2,2016-01-12 08:23:52,2016-01-12 08:34:09,1,-73.990547180175781,40.756248474121094,-73.971328735351563,40.756088256835937,N,617 +id0280790,1,2016-03-05 11:33:40,2016-03-05 11:51:02,1,-73.983802795410156,40.749794006347656,-74.000053405761719,40.726955413818359,N,1042 +id2510832,1,2016-06-25 13:39:48,2016-06-25 13:48:52,1,-73.967185974121094,40.760513305664063,-73.946327209472656,40.781253814697266,N,544 +id0303797,1,2016-06-29 16:01:44,2016-06-29 16:31:32,1,-73.980880737304688,40.774562835693359,-73.989616394042969,40.752498626708984,N,1788 +id3922226,1,2016-04-04 17:08:35,2016-04-04 17:31:53,1,-73.974052429199219,40.779048919677734,-73.9888916015625,40.758628845214844,N,1398 +id2808618,2,2016-04-27 19:56:57,2016-04-27 20:04:08,1,-73.966629028320312,40.804409027099609,-73.97540283203125,40.789558410644531,N,431 +id1235523,1,2016-05-17 06:33:24,2016-05-17 06:51:04,1,-73.931442260742187,40.765567779541016,-73.978515625,40.772327423095703,N,1060 +id1075733,2,2016-01-12 20:39:32,2016-01-12 20:58:04,1,-73.97283935546875,40.758998870849609,-73.990692138671875,40.703578948974609,N,1112 +id3780097,2,2016-04-07 14:41:51,2016-04-07 14:53:13,1,-73.987983703613281,40.769721984863281,-73.978103637695313,40.765300750732422,N,682 +id0149097,2,2016-06-06 22:33:35,2016-06-06 22:37:50,1,-73.983558654785156,40.773651123046875,-73.989776611328125,40.762340545654297,N,255 +id1743519,2,2016-06-25 14:08:28,2016-06-25 14:21:53,1,-73.985527038574219,40.752780914306641,-73.991981506347656,40.755809783935547,N,805 +id3987794,1,2016-02-11 22:45:29,2016-02-11 22:56:50,1,-73.988632202148437,40.769306182861328,-73.990364074707031,40.751293182373047,N,681 +id2460060,1,2016-01-20 20:44:40,2016-01-20 20:47:39,1,-73.955474853515625,40.779548645019531,-73.950775146484375,40.782493591308594,N,179 +id2441520,2,2016-02-20 13:34:37,2016-02-20 13:55:04,1,-73.960365295410156,40.778728485107422,-73.992683410644531,40.746086120605469,N,1227 +id3276932,1,2016-02-08 12:51:59,2016-02-08 13:03:20,1,-73.987701416015625,40.743991851806641,-74.008499145507813,40.716495513916016,Y,681 +id3067359,2,2016-06-25 08:41:22,2016-06-25 08:49:12,1,-73.946891784667969,40.779350280761719,-73.972511291503906,40.7510986328125,N,470 +id3049130,2,2016-04-06 17:38:41,2016-04-06 18:40:31,1,-73.987907409667969,40.718429565429687,-73.7825927734375,40.644145965576172,N,3710 +id3667045,2,2016-03-15 06:33:58,2016-03-15 06:41:01,5,-73.962669372558594,40.778450012207031,-73.953567504882813,40.765087127685547,N,423 +id0128591,1,2016-02-07 21:41:36,2016-02-07 21:59:17,1,-73.982208251953125,40.762504577636719,-73.987342834472656,40.725265502929688,N,1061 +id1248743,2,2016-03-16 08:47:46,2016-03-16 09:04:23,1,-73.949630737304687,40.772670745849609,-73.982040405273438,40.746379852294922,N,997 +id0560632,2,2016-06-29 07:04:41,2016-06-29 07:10:44,5,-73.949836730957031,40.784553527832031,-73.938591003417969,40.804931640625,N,363 +id3668803,2,2016-02-13 15:33:30,2016-02-13 15:37:43,4,-73.989273071289063,40.763271331787109,-73.988677978515625,40.756710052490234,N,253 +id3054250,1,2016-01-16 21:02:35,2016-01-16 21:07:56,2,-73.986495971679688,40.746696472167969,-73.982292175292969,40.75714111328125,N,321 +id2072050,1,2016-03-06 02:21:32,2016-03-06 02:41:24,1,-74.014419555664063,40.7081298828125,-73.980812072753906,40.742076873779297,N,1192 +id1246156,2,2016-03-27 11:39:04,2016-03-27 11:52:26,5,-73.9381103515625,40.796543121337891,-73.973876953125,40.758003234863281,N,802 +id0990415,1,2016-02-22 19:12:09,2016-02-22 19:18:58,1,-73.987136840820313,40.741828918457031,-73.979415893554688,40.749675750732422,N,409 +id3389180,1,2016-01-27 14:10:48,2016-01-27 14:20:25,1,-73.985061645507813,40.745368957519531,-73.983230590820313,40.756004333496094,N,577 +id3304740,2,2016-04-04 22:39:14,2016-04-04 22:47:55,5,-73.980781555175781,40.742259979248047,-73.991348266601563,40.750278472900391,N,521 +id1926880,2,2016-05-19 20:42:13,2016-05-19 20:47:32,1,-73.968711853027344,40.750576019287109,-73.972145080566406,40.747406005859375,N,319 +id3472049,2,2016-03-27 09:30:06,2016-03-27 09:44:57,1,-73.99786376953125,40.7652587890625,-73.977630615234375,40.750972747802734,N,891 +id3155047,2,2016-02-16 16:01:28,2016-02-16 16:10:25,1,-73.993827819824219,40.751209259033203,-73.97808837890625,40.753398895263672,N,537 +id3864072,1,2016-01-07 18:44:10,2016-01-07 19:09:45,2,-73.977867126464844,40.751087188720703,-73.982070922851562,40.775535583496094,N,1535 +id3488652,2,2016-02-23 22:22:41,2016-02-23 23:04:11,1,-73.989250183105469,40.769668579101563,-73.979171752929688,40.721721649169922,N,2490 +id3698335,1,2016-04-13 10:49:26,2016-04-13 10:54:20,1,-73.998931884765625,40.726600646972656,-74.006065368652344,40.735286712646484,N,294 +id1257680,2,2016-04-20 15:05:26,2016-04-20 15:13:23,2,-73.988777160644531,40.748592376708984,-73.979866027832031,40.751472473144531,N,477 +id0010487,2,2016-03-28 11:07:56,2016-03-28 11:23:46,1,-73.97247314453125,40.756118774414063,-73.991554260253906,40.735160827636719,N,950 +id0560000,1,2016-04-08 19:20:13,2016-04-08 19:32:52,2,-73.975204467773438,40.761356353759766,-73.982650756835938,40.756862640380859,N,759 +id0168257,2,2016-01-01 00:59:06,2016-01-01 01:22:00,5,-73.991493225097656,40.750175476074219,-73.994636535644531,40.71954345703125,N,1374 +id1987268,1,2016-06-13 09:03:41,2016-06-13 09:31:47,1,-74.015800476074219,40.715187072753906,-73.985549926757813,40.741348266601563,N,1686 +id3056945,1,2016-03-12 18:25:50,2016-03-12 18:53:12,1,-73.962257385253906,40.779251098632813,-73.989593505859375,40.725852966308594,N,1642 +id0926566,1,2016-04-27 22:39:06,2016-04-27 22:50:57,1,-73.980140686035156,40.745773315429688,-73.95013427734375,40.779506683349609,N,711 +id0794983,2,2016-01-16 00:03:40,2016-01-16 00:12:01,6,-73.961166381835937,40.661365509033203,-73.978485107421875,40.682071685791016,N,501 +id3968404,1,2016-01-02 07:09:23,2016-01-02 07:27:49,1,-73.978469848632812,40.763027191162109,-73.871849060058594,40.774272918701172,N,1106 +id0231515,1,2016-06-08 12:17:54,2016-06-08 12:23:03,1,-73.951179504394531,40.777667999267578,-73.9573974609375,40.782764434814453,N,309 +id2691561,2,2016-06-08 01:04:56,2016-06-08 01:15:58,2,-73.993919372558594,40.728843688964844,-73.990127563476563,40.714241027832031,N,662 +id2212354,1,2016-02-20 09:19:51,2016-02-20 09:25:45,4,-73.979667663574219,40.770805358886719,-73.970291137695313,40.788223266601562,N,354 +id1918139,2,2016-06-29 09:01:38,2016-06-29 09:25:32,6,-73.986671447753906,40.768421173095703,-73.951828002929687,40.766700744628906,N,1434 +id1205436,1,2016-06-23 16:30:47,2016-06-23 16:57:57,1,-74.008872985839844,40.710887908935547,-73.98394775390625,40.762889862060547,N,1630 +id1235185,1,2016-03-18 17:19:14,2016-03-18 17:42:58,1,-73.973007202148438,40.752670288085938,-73.987777709960937,40.749942779541016,N,1424 +id0393386,2,2016-02-08 16:22:53,2016-02-08 16:36:49,1,-73.980728149414063,40.744678497314453,-73.971649169921875,40.762538909912109,N,836 +id0802625,2,2016-06-24 12:11:34,2016-06-24 12:23:15,1,-73.968475341796875,40.767635345458984,-73.956527709960937,40.783668518066406,N,701 +id2730818,1,2016-05-07 13:12:30,2016-05-07 13:16:42,1,-73.957992553710938,40.765098571777344,-73.946327209472656,40.781276702880859,N,252 +id1952475,1,2016-06-23 12:56:54,2016-06-23 13:06:42,1,-73.961227416992188,40.760643005371094,-73.954536437988281,40.778007507324219,N,588 +id2431289,2,2016-01-03 08:54:39,2016-01-03 08:57:12,2,-73.95758056640625,40.768585205078125,-73.950210571289062,40.775726318359375,N,153 +id2174172,2,2016-01-16 15:41:21,2016-01-16 15:47:32,1,-73.961448669433594,40.806194305419922,-73.951927185058594,40.822128295898437,N,371 +id2722111,2,2016-05-22 04:11:21,2016-05-22 04:13:01,1,-73.916847229003906,40.771091461181641,-73.919952392578125,40.775299072265625,N,100 +id3561539,1,2016-01-12 10:52:19,2016-01-12 10:57:07,1,-73.963821411132813,40.765422821044922,-73.9583740234375,40.772800445556641,N,288 +id0678487,2,2016-02-02 08:36:29,2016-02-02 08:45:30,1,-73.999885559082031,40.738418579101563,-74.008987426757813,40.722713470458984,N,541 +id3463067,2,2016-01-09 09:16:41,2016-01-09 09:17:31,6,-73.917350769042969,40.761093139648437,-73.918937683105469,40.759120941162109,N,50 +id1408184,2,2016-03-18 17:23:26,2016-03-18 17:33:21,1,-74.007553100585937,40.740936279296875,-74.009567260742188,40.723125457763672,N,595 +id2922136,2,2016-02-24 16:28:18,2016-02-24 16:40:11,1,-73.9996337890625,40.730949401855469,-73.981880187988281,40.755340576171875,N,713 +id2483049,1,2016-01-07 19:22:55,2016-01-07 19:30:07,1,-73.967514038085938,40.770931243896484,-73.966751098632813,40.771453857421875,N,432 +id1369402,2,2016-02-15 15:41:35,2016-02-15 16:01:19,1,-73.989349365234375,40.752128601074219,-73.948516845703125,40.780719757080078,N,1184 +id2352382,1,2016-03-07 22:40:43,2016-03-07 23:12:17,1,-73.978248596191406,40.7509765625,-73.948051452636719,40.629024505615234,N,1894 +id3867261,1,2016-06-15 15:05:39,2016-06-15 15:15:50,1,-73.985450744628906,40.747203826904297,-73.978103637695313,40.756351470947266,N,611 +id0545540,2,2016-01-16 23:04:45,2016-01-16 23:10:06,1,-74.007522583007812,40.725841522216797,-74.015815734863281,40.715316772460937,N,321 +id0225443,2,2016-03-30 17:02:47,2016-03-30 17:47:33,1,-74.001663208007813,40.730789184570313,-73.835952758789062,40.717521667480469,N,2686 +id3248649,1,2016-04-25 16:07:39,2016-04-25 16:19:48,3,-74.00341796875,40.732135772705078,-74.000701904296875,40.761722564697266,N,729 +id1234708,1,2016-01-07 18:23:26,2016-01-07 18:28:57,1,-73.977920532226563,40.763236999511719,-73.977752685546875,40.773769378662109,N,331 +id0487324,2,2016-04-06 21:12:14,2016-04-06 21:21:26,1,-73.98712158203125,40.729301452636719,-74.0064697265625,40.714923858642578,N,552 +id1458809,2,2016-03-06 10:43:45,2016-03-06 10:55:04,5,-73.930381774902344,40.7447509765625,-73.971824645996094,40.764480590820312,N,679 +id0427965,2,2016-04-05 08:34:30,2016-04-05 08:58:38,2,-73.995559692382813,40.764568328857422,-73.939773559570313,40.804859161376953,N,1448 +id3786431,1,2016-03-23 17:35:11,2016-03-23 17:49:08,1,-74.006744384765625,40.714580535888672,-73.996292114257813,40.731952667236328,N,837 +id2626466,1,2016-01-07 23:35:38,2016-01-08 00:07:53,1,-73.987922668457031,40.754745483398438,-73.944694519042969,40.649112701416016,N,1935 +id3201967,1,2016-03-18 06:09:31,2016-03-18 06:17:28,1,-73.947334289550781,40.790855407714844,-73.946083068847656,40.773094177246094,N,477 +id0079328,1,2016-04-17 21:54:49,2016-04-17 22:02:27,2,-73.99114990234375,40.750083923339844,-73.9810791015625,40.748649597167969,N,458 +id2162031,2,2016-02-07 16:16:17,2016-02-07 16:41:34,5,-73.969581604003906,40.784820556640625,-73.865638732910156,40.770961761474609,N,1517 +id0451000,2,2016-03-27 17:09:46,2016-03-27 17:15:46,2,-73.968841552734375,40.801361083984375,-73.973602294921875,40.794521331787109,N,360 +id3204567,2,2016-04-20 12:47:59,2016-04-20 13:24:31,1,-73.997833251953125,40.723121643066406,-73.990791320800781,40.758651733398438,N,2192 +id2898273,1,2016-02-18 21:14:13,2016-02-18 21:25:46,1,-73.962669372558594,40.758518218994141,-73.983444213867188,40.743820190429688,N,693 +id1513064,1,2016-01-16 20:10:10,2016-01-16 20:21:35,1,-73.982284545898437,40.761783599853516,-73.96270751953125,40.76806640625,N,685 +id2961686,1,2016-02-25 14:17:58,2016-02-25 14:30:41,1,-73.985389709472656,40.758792877197266,-73.9874267578125,40.73602294921875,N,763 +id2844255,1,2016-03-23 16:49:09,2016-03-23 17:12:09,3,-73.979736328125,40.755336761474609,-73.946754455566406,40.775711059570313,N,1380 +id2741317,2,2016-06-20 17:27:46,2016-06-20 17:43:59,1,-73.979736328125,40.765735626220703,-73.98211669921875,40.736053466796875,N,973 +id2248826,2,2016-05-01 00:29:59,2016-05-01 00:39:29,1,-73.972282409667969,40.756198883056641,-73.935836791992188,40.803081512451172,N,570 +id2802281,2,2016-06-26 21:46:25,2016-06-26 21:52:25,1,-73.976890563964844,40.7647705078125,-73.978492736816406,40.782360076904297,N,360 +id0264947,2,2016-06-11 14:33:56,2016-06-11 14:43:03,3,-73.982307434082031,40.782878875732422,-73.995941162109375,40.76422119140625,N,547 +id2084184,1,2016-05-21 23:20:58,2016-05-21 23:33:53,1,-73.989151000976563,40.719070434570313,-73.980903625488281,40.729484558105469,N,775 +id1914765,1,2016-03-17 23:49:26,2016-03-17 23:54:00,1,-73.978507995605469,40.745296478271484,-73.976158142089844,40.751468658447266,N,274 +id3054788,2,2016-01-18 10:18:07,2016-01-18 10:27:57,1,-73.964500427246094,40.769973754882813,-73.965484619140625,40.791175842285156,N,590 +id0407776,2,2016-05-24 05:04:15,2016-05-24 05:07:02,2,-73.95050048828125,40.783718109130859,-73.958267211914063,40.775440216064453,N,167 +id0133000,1,2016-03-04 16:35:08,2016-03-04 16:48:09,2,-73.984527587890625,40.742866516113281,-73.987838745117188,40.721164703369141,N,781 +id2490769,2,2016-03-10 17:20:29,2016-03-10 17:35:00,1,-73.972496032714844,40.753089904785156,-73.960624694824219,40.777462005615234,N,871 +id0288235,1,2016-06-05 17:51:11,2016-06-05 18:01:32,1,-73.986213684082031,40.743316650390625,-73.973274230957031,40.764003753662109,N,621 +id0970216,1,2016-05-23 17:44:29,2016-05-23 17:51:58,1,-73.967018127441406,40.763736724853516,-73.960411071777344,40.778766632080078,N,449 +id2548443,2,2016-03-14 23:21:48,2016-03-14 23:39:04,2,-73.994743347167969,40.749458312988281,-73.954627990722656,40.772239685058594,N,1036 +id0663900,2,2016-02-10 19:33:47,2016-02-10 19:45:48,1,-73.971122741699219,40.757160186767578,-73.986541748046875,40.754650115966797,N,721 +id2570589,2,2016-06-04 19:45:20,2016-06-04 19:50:47,1,-73.977180480957031,40.764541625976562,-73.964996337890625,40.764938354492188,N,327 +id0705935,2,2016-04-27 17:54:04,2016-04-27 18:08:30,1,-73.982292175292969,40.767810821533203,-73.955551147460937,40.785129547119141,N,866 +id2588987,2,2016-05-24 06:35:08,2016-05-24 06:44:09,1,-73.977348327636719,40.752079010009766,-73.990676879882813,40.770351409912109,N,541 +id3071537,1,2016-03-09 17:39:24,2016-03-09 17:45:59,1,-73.982070922851562,40.771778106689453,-73.983695983886719,40.782844543457031,N,395 +id3509595,2,2016-01-22 20:10:38,2016-01-22 20:26:18,1,-73.874481201171875,40.774051666259766,-73.965911865234375,40.712760925292969,N,940 +id2229527,1,2016-06-13 06:52:24,2016-06-13 06:59:57,1,-73.978843688964844,40.764205932617188,-73.993110656738281,40.734363555908203,N,453 +id3337121,2,2016-03-19 04:47:57,2016-03-19 04:51:02,1,-73.97418212890625,40.679519653320312,-73.965744018554687,40.674190521240234,N,185 +id3096384,2,2016-04-24 19:49:10,2016-04-24 20:07:58,1,-73.97796630859375,40.751819610595703,-73.980766296386719,40.729709625244141,N,1128 +id1480346,2,2016-05-08 21:26:17,2016-05-08 22:05:04,1,-73.862876892089844,40.769138336181641,-73.98455810546875,40.782917022705078,N,2327 +id2255090,1,2016-03-27 02:22:41,2016-03-27 02:40:19,1,-73.99737548828125,40.72125244140625,-73.982223510742188,40.767406463623047,N,1058 +id2815157,1,2016-04-05 18:24:35,2016-04-05 18:44:19,1,-73.968521118164062,40.758930206298828,-73.987335205078125,40.756649017333984,N,1184 +id3446725,1,2016-03-19 15:02:51,2016-03-19 15:16:26,1,-73.996849060058594,40.737071990966797,-73.978034973144531,40.741630554199219,N,815 +id0659451,2,2016-02-01 20:44:20,2016-02-01 20:46:01,1,-73.987312316894531,40.733142852783203,-73.980903625488281,40.735450744628906,N,101 +id3807700,1,2016-02-28 17:14:25,2016-02-28 17:33:07,1,-73.992958068847656,40.752693176269531,-73.967819213867188,40.760166168212891,N,1122 +id3733383,1,2016-05-15 19:54:11,2016-05-15 19:59:16,1,-73.953834533691406,40.7879638671875,-73.936614990234375,40.794284820556641,N,305 +id3197751,2,2016-01-02 15:05:00,2016-01-02 15:19:49,1,-73.986167907714844,40.740928649902344,-74.004341125488281,40.721839904785156,N,889 +id1905201,1,2016-02-12 00:53:57,2016-02-12 01:01:48,1,-73.990699768066406,40.744419097900391,-73.973785400390625,40.737663269042969,N,471 +id0485353,1,2016-02-19 22:43:37,2016-02-19 22:51:49,1,-73.863418579101562,40.769805908203125,-73.867034912109375,40.767417907714844,N,492 +id3571275,1,2016-03-20 01:25:02,2016-03-20 01:38:47,1,-74.008766174316406,40.719242095947266,-73.986274719238281,40.762153625488281,N,825 +id1996654,1,2016-05-28 17:59:34,2016-05-28 18:18:31,1,-73.994171142578125,40.766349792480469,-73.997840881347656,40.719562530517578,N,1137 +id2443126,1,2016-05-06 16:16:59,2016-05-06 16:56:19,2,-73.870948791503906,40.773738861083984,-73.992561340332031,40.696285247802734,N,2360 +id1364008,1,2016-01-09 11:28:53,2016-01-09 11:33:21,1,-73.991096496582031,40.749809265136719,-73.984962463378906,40.754283905029297,N,268 +id0527668,1,2016-03-08 21:24:15,2016-03-08 21:28:22,1,-73.967819213867188,40.762180328369141,-73.958587646484375,40.76226806640625,N,247 +id2030398,2,2016-03-13 19:46:36,2016-03-13 20:08:04,1,-73.872901916503906,40.774181365966797,-73.975120544433594,40.782630920410156,N,1288 +id3222124,2,2016-05-17 17:35:01,2016-05-17 17:44:21,2,-74.010353088378906,40.722808837890625,-74.001579284667969,40.727603912353516,N,560 +id0753784,2,2016-01-19 22:18:13,2016-01-19 22:26:24,1,-74.011520385742187,40.703701019287109,-74.011550903320312,40.713661193847656,N,491 +id2250347,2,2016-02-03 03:32:21,2016-02-03 03:46:02,1,-73.983833312988281,40.760940551757813,-73.923271179199219,40.743461608886719,N,821 +id1987672,1,2016-06-27 23:09:56,2016-06-27 23:33:07,1,-73.989303588867187,40.720863342285156,-73.95361328125,40.787040710449219,N,1391 +id0683467,1,2016-02-11 14:45:13,2016-02-11 15:43:52,1,-73.872978210449219,40.774181365966797,-73.991249084472656,40.747123718261719,N,3519 +id3091961,1,2016-01-03 23:10:35,2016-01-03 23:14:36,1,-73.997116088867188,40.747215270996094,-73.978469848632812,40.752689361572266,N,241 +id3536413,1,2016-04-19 18:19:34,2016-04-19 18:37:37,1,-73.985336303710938,40.763141632080078,-73.950859069824219,40.783332824707031,N,1083 +id3971248,2,2016-01-06 16:27:55,2016-01-06 16:40:45,3,-73.980987548828125,40.77410888671875,-73.959251403808594,40.769138336181641,N,770 +id1688279,2,2016-01-30 09:26:01,2016-01-30 09:34:40,3,-74.005340576171875,40.737010955810547,-73.9951171875,40.760208129882813,N,519 +id0800564,1,2016-04-15 00:00:56,2016-04-15 00:27:46,1,-73.98101806640625,40.729484558105469,-73.973602294921875,40.678600311279297,N,1610 +id1907078,1,2016-05-11 22:25:01,2016-05-11 22:42:10,1,-73.982200622558594,40.764656066894531,-73.9561767578125,40.803169250488281,N,1029 +id1406132,1,2016-05-12 14:13:37,2016-05-12 14:30:51,1,-73.977294921875,40.758792877197266,-73.985488891601562,40.741329193115234,N,1034 +id2879948,1,2016-04-24 22:35:43,2016-04-24 22:47:22,1,-73.961738586425781,40.805625915527344,-73.93902587890625,40.848716735839844,N,699 +id2367691,2,2016-04-26 17:02:31,2016-04-26 17:12:31,3,-73.981094360351563,40.744621276855469,-74.000129699707031,40.727996826171875,N,600 +id2423406,2,2016-01-31 17:48:04,2016-01-31 17:50:18,1,-74.007843017578125,40.746711730957031,-74.003829956054687,40.750900268554687,N,134 +id0847278,2,2016-06-17 06:55:24,2016-06-17 07:00:12,1,-73.967941284179687,40.760330200195312,-73.953338623046875,40.764827728271484,N,288 +id1003776,1,2016-03-31 15:24:04,2016-03-31 15:52:39,1,-73.991279602050781,40.750049591064453,-74.014625549316406,40.709754943847656,N,1715 +id1516778,2,2016-05-16 19:12:11,2016-05-16 19:36:51,2,-73.994613647460938,40.725898742675781,-73.952705383300781,40.779869079589844,N,1480 +id1524900,2,2016-02-16 23:53:05,2016-02-17 00:22:24,5,-73.791709899902344,40.645256042480469,-73.954238891601563,40.816043853759766,N,1759 +id0562833,1,2016-04-08 20:33:22,2016-04-08 21:01:12,1,-73.952682495117187,40.776687622070312,-73.99114990234375,40.685394287109375,N,1670 +id1178888,2,2016-06-12 19:02:29,2016-06-12 19:10:11,1,-73.952537536621094,40.798221588134766,-73.938591003417969,40.794158935546875,N,462 +id0077575,2,2016-06-07 12:26:03,2016-06-07 12:31:45,1,-73.970733642578125,40.761001586914062,-73.961235046386719,40.766708374023438,N,342 +id0504533,1,2016-05-29 15:58:52,2016-05-29 16:12:35,2,-73.989501953125,40.739894866943359,-73.970657348632813,40.764427185058594,N,823 +id1368044,2,2016-05-28 11:53:27,2016-05-28 12:16:13,2,-73.9952392578125,40.718658447265625,-73.981460571289063,40.756130218505859,N,1366 +id1054508,1,2016-04-30 19:08:05,2016-04-30 19:12:57,2,-74.006179809570312,40.733264923095703,-74.002853393554687,40.739410400390625,N,292 +id0719015,1,2016-06-11 16:09:09,2016-06-11 16:09:17,1,-73.988311767578125,40.746204376220703,-73.988418579101563,40.746189117431641,N,8 +id2433043,2,2016-06-10 14:15:05,2016-06-10 15:01:05,1,-73.863372802734375,40.76995849609375,-73.98480224609375,40.768348693847656,N,2760 +id0915872,2,2016-06-30 13:52:59,2016-06-30 14:15:10,1,-73.984687805175781,40.732810974121094,-73.983787536621094,40.693641662597656,N,1331 +id0372196,1,2016-05-17 10:00:51,2016-05-17 10:22:11,1,-73.955062866210937,40.765415191650391,-73.983047485351563,40.760932922363281,N,1280 +id1391929,2,2016-02-17 15:00:42,2016-02-17 15:12:09,4,-73.979301452636719,40.723426818847656,-73.986282348632812,40.740726470947266,N,687 +id0188761,1,2016-02-14 15:34:09,2016-02-14 15:54:23,1,-73.977294921875,40.752021789550781,-74.0111083984375,40.701885223388672,N,1214 +id1971284,1,2016-02-25 17:50:53,2016-02-25 17:59:31,1,-73.981719970703125,40.767917633056641,-73.981475830078125,40.78070068359375,N,518 +id2157357,2,2016-06-08 23:52:27,2016-06-09 00:12:00,1,-73.972572326660156,40.677478790283203,-73.979942321777344,40.739330291748047,N,1173 +id2987896,2,2016-03-12 13:34:51,2016-03-12 14:14:28,1,-73.956413269042969,40.803291320800781,-73.991073608398438,40.736221313476563,N,2377 +id1512443,2,2016-05-25 20:55:37,2016-05-25 21:06:31,6,-73.978256225585937,40.766437530517578,-73.990478515625,40.751068115234375,N,654 +id3375658,2,2016-02-21 20:10:38,2016-02-21 20:15:55,1,-73.970527648925781,40.764060974121094,-73.955589294433594,40.776069641113281,N,317 +id0876989,1,2016-03-12 06:54:13,2016-03-12 06:58:35,1,-73.998649597167969,40.739891052246094,-73.984039306640625,40.754997253417969,N,262 +id1253422,1,2016-05-10 10:14:08,2016-05-10 10:21:58,1,-73.961227416992188,40.760440826416016,-73.9622802734375,40.773101806640625,N,470 +id1373462,2,2016-06-18 00:56:08,2016-06-18 01:10:33,1,-74.008049011230469,40.738273620605469,-73.982597351074219,40.723121643066406,N,865 +id0581627,2,2016-03-14 20:11:01,2016-03-14 20:14:57,1,-73.993576049804688,40.733451843261719,-74.004661560058594,40.734336853027344,N,236 +id1699430,2,2016-06-11 01:48:04,2016-06-11 02:14:37,2,-73.998664855957031,40.742191314697266,-73.942779541015625,40.787406921386719,N,1593 +id1762108,2,2016-04-03 19:42:51,2016-04-03 19:48:26,1,-73.97149658203125,40.750576019287109,-73.988273620605469,40.750076293945312,N,335 +id0086928,2,2016-06-20 13:26:44,2016-06-20 13:33:47,1,-73.97760009765625,40.758106231689453,-73.986900329589844,40.750320434570312,N,423 +id1502727,1,2016-06-08 01:51:13,2016-06-08 01:55:35,1,-74.001556396484375,40.730663299560547,-74.00982666015625,40.732894897460938,N,262 +id3352137,2,2016-06-04 03:08:14,2016-06-04 03:16:53,5,-73.977615356445313,40.745372772216797,-73.979515075683594,40.761760711669922,N,519 +id2568918,2,2016-04-14 13:50:36,2016-04-14 14:06:03,6,-73.984306335449219,40.748371124267578,-73.978958129882813,40.762771606445313,N,927 +id0313198,1,2016-04-28 14:59:53,2016-04-28 15:04:07,3,-73.995162963867188,40.725185394287109,-74.001243591308594,40.729290008544922,N,254 +id1356305,2,2016-02-20 18:45:54,2016-02-20 18:49:07,5,-73.952972412109375,40.778610229492188,-73.945899963378906,40.773124694824219,N,193 +id3692564,1,2016-01-14 19:59:39,2016-01-14 20:09:47,1,-73.980270385742187,40.738349914550781,-73.995521545410156,40.733547210693359,N,608 +id3401533,1,2016-04-02 23:01:56,2016-04-02 23:12:40,1,-73.976882934570313,40.762680053710937,-73.950546264648438,40.784053802490234,N,644 +id1256100,2,2016-06-08 08:03:47,2016-06-08 08:22:31,1,-73.996955871582031,40.7371826171875,-74.004066467285156,40.707443237304688,N,1124 +id3303148,1,2016-05-14 14:01:38,2016-05-14 14:07:43,1,-73.980293273925781,40.754222869873047,-73.992324829101563,40.748466491699219,N,365 +id0743617,2,2016-03-18 10:59:05,2016-03-18 11:46:17,2,-73.783058166503906,40.644454956054688,-73.995033264160156,40.733623504638672,N,2832 +id0220715,2,2016-04-15 13:45:40,2016-04-15 13:53:37,1,-74.009376525878906,40.713088989257813,-74.006561279296875,40.732349395751953,N,477 +id1259850,1,2016-01-28 08:55:35,2016-01-28 09:07:57,1,-73.982353210449219,40.745841979980469,-73.978157043457031,40.758148193359375,N,742 +id1294162,2,2016-06-11 14:42:59,2016-06-11 14:46:37,5,-73.949874877929688,40.795978546142578,-73.951423645019531,40.788356781005859,N,218 +id3798966,2,2016-03-07 22:19:58,2016-03-07 22:27:47,1,-73.978485107421875,40.7564697265625,-73.965263366699219,40.769176483154297,N,469 +id0212742,2,2016-01-10 12:49:28,2016-01-10 12:59:21,1,-74.006179809570312,40.733798980712891,-73.9854736328125,40.727649688720703,N,593 +id3010182,2,2016-01-29 17:18:41,2016-01-29 17:35:18,1,-73.965927124023438,40.767879486083984,-73.944816589355469,40.802570343017578,N,997 +id2849384,1,2016-03-31 21:34:01,2016-03-31 21:38:14,1,-73.996170043945312,40.742691040039062,-74.001785278320313,40.738506317138672,N,253 +id0588002,1,2016-06-11 20:03:48,2016-06-11 20:07:23,1,-73.970436096191406,40.758403778076172,-73.968353271484375,40.766353607177734,N,215 +id3117448,2,2016-04-08 09:18:14,2016-04-08 09:20:41,1,-73.961677551269531,40.777099609375,-73.95648193359375,40.779701232910156,N,147 +id3069727,2,2016-06-07 09:00:44,2016-06-07 09:09:41,1,-73.979049682617188,40.755409240722656,-73.987709045410156,40.741260528564453,N,537 +id0240019,1,2016-01-04 18:29:36,2016-01-04 18:35:08,1,-73.991416931152344,40.685371398925781,-74.000709533691406,40.687576293945313,N,332 +id0996066,1,2016-05-23 10:31:26,2016-05-23 10:48:22,1,-73.956146240234375,40.771884918212891,-73.973922729492188,40.764480590820312,N,1016 +id2996509,2,2016-05-03 09:16:08,2016-05-03 09:26:44,2,-73.966102600097656,40.805271148681641,-73.981178283691406,40.787986755371094,N,636 +id2041679,1,2016-03-22 19:23:46,2016-03-22 19:31:19,1,-73.968315124511719,40.750968933105469,-73.94757080078125,40.779216766357422,N,453 +id2392280,2,2016-04-24 18:50:17,2016-04-24 19:11:30,1,-74.013580322265625,40.713859558105469,-73.9906005859375,40.757820129394531,N,1273 +id0892857,2,2016-06-23 07:38:22,2016-06-23 07:54:29,1,-73.975112915039063,40.755748748779297,-74.006767272949219,40.730461120605469,N,967 +id0728529,2,2016-02-19 01:28:03,2016-02-19 01:31:13,5,-73.987884521484375,40.749172210693359,-73.978630065917969,40.753185272216797,N,190 +id1590391,1,2016-06-28 12:15:03,2016-06-28 12:52:20,1,-73.975875854492187,40.781398773193359,-73.985527038574219,40.738449096679688,N,2237 +id1087768,1,2016-05-09 11:02:17,2016-05-09 11:11:16,1,-73.954269409179688,40.781147003173828,-73.962173461914063,40.770378112792969,N,539 +id2808320,2,2016-04-19 16:45:18,2016-04-19 16:51:38,1,-73.953910827636719,40.781959533691406,-73.953910827636719,40.770759582519531,N,380 +id1047562,2,2016-04-29 17:58:29,2016-04-29 18:16:30,3,-73.984397888183594,40.774810791015625,-73.974784851074219,40.759410858154297,N,1081 +id3668876,1,2016-03-30 12:39:32,2016-03-30 12:59:44,1,-73.982513427734375,40.762775421142578,-73.975257873535156,40.749595642089844,N,1212 +id1908866,2,2016-01-08 15:39:52,2016-01-08 15:46:51,2,-73.953964233398438,40.766651153564453,-73.973716735839844,40.756820678710937,N,419 +id2111095,2,2016-04-16 15:02:56,2016-04-16 15:35:54,1,-73.789581298828125,40.642791748046875,-73.830551147460938,40.760551452636719,N,1978 +id1421733,2,2016-06-17 18:42:30,2016-06-17 18:54:16,4,-73.947113037109375,40.818519592285156,-73.968460083007813,40.791019439697266,N,706 +id0019104,2,2016-04-18 09:54:32,2016-04-18 10:02:47,1,-73.985641479492188,40.759414672851563,-73.974456787109375,40.762809753417969,N,495 +id2391893,2,2016-02-26 09:45:08,2016-02-26 09:55:29,2,-73.984596252441406,40.738506317138672,-73.975852966308594,40.748752593994141,N,621 +id2707702,2,2016-03-06 23:46:25,2016-03-06 23:50:41,1,-73.991348266601563,40.729938507080078,-73.978240966796875,40.729408264160156,N,256 +id1996401,2,2016-05-29 14:38:03,2016-05-29 14:44:33,1,-73.995895385742187,40.74365234375,-73.987091064453125,40.733493804931641,N,390 +id1770841,1,2016-01-25 22:12:36,2016-01-25 22:40:45,1,-73.956375122070313,40.771507263183594,-73.893341064453125,40.768150329589844,N,1689 +id1942048,2,2016-06-12 13:35:04,2016-06-12 14:35:01,5,-73.789596557617188,40.643550872802734,-73.983230590820313,40.771308898925781,N,3597 +id2214411,1,2016-05-03 09:39:21,2016-05-03 10:09:50,1,-74.010406494140625,40.711383819580078,-73.992416381835938,40.749271392822266,N,1829 +id1278692,2,2016-04-22 21:12:29,2016-04-22 21:25:33,1,-73.960868835449219,40.761390686035156,-73.935737609863281,40.815391540527344,N,784 +id1982864,1,2016-01-29 07:40:38,2016-01-29 08:07:01,1,-73.989707946777344,40.689048767089844,-73.95367431640625,40.766700744628906,N,1583 +id1105749,1,2016-04-03 13:04:27,2016-04-03 13:13:06,1,-73.9898681640625,40.734115600585937,-73.982101440429688,40.748950958251953,N,519 +id0502369,1,2016-04-17 14:36:36,2016-04-17 14:50:11,1,-73.966331481933594,40.804973602294922,-73.982307434082031,40.771492004394531,N,815 +id0055976,2,2016-02-24 09:08:47,2016-02-24 09:22:34,6,-73.993072509765625,40.736919403076172,-73.994369506835938,40.752761840820312,N,827 +id2037721,2,2016-04-06 20:36:57,2016-04-06 20:53:44,1,-73.9947509765625,40.734268188476563,-73.989669799804688,40.702308654785156,N,1007 +id2707950,1,2016-05-10 23:44:08,2016-05-11 00:16:44,1,-73.973213195800781,40.755294799804688,-73.950736999511719,40.626392364501953,N,1956 +id2457885,2,2016-03-08 15:32:05,2016-03-08 15:36:42,4,-73.991798400878906,40.731948852539063,-73.998985290527344,40.734420776367188,N,277 +id1745610,2,2016-01-25 20:15:35,2016-01-25 20:25:58,1,-73.98040771484375,40.762290954589844,-73.999649047851563,40.742660522460938,N,623 +id0490562,2,2016-01-14 07:00:57,2016-01-14 07:07:53,1,-74.000602722167969,40.747211456298828,-73.995628356933594,40.749160766601563,N,416 +id2086097,2,2016-06-21 08:34:59,2016-06-21 09:01:43,5,-73.969963073730469,40.756183624267578,-74.001388549804688,40.714885711669922,N,1604 +id0626061,2,2016-06-24 18:22:41,2016-06-24 18:26:50,2,-73.955612182617188,40.776233673095703,-73.95916748046875,40.76922607421875,N,249 +id2197161,2,2016-01-27 16:26:11,2016-01-27 16:36:20,1,-73.977058410644531,40.750095367431641,-73.991264343261719,40.735931396484375,N,609 +id1459551,1,2016-03-24 06:10:05,2016-03-24 06:26:21,1,-73.935264587402344,40.800537109375,-73.992301940917969,40.755977630615234,N,976 +id1852436,1,2016-04-10 16:11:56,2016-04-10 16:37:00,1,-73.998542785644531,40.719669342041016,-73.989707946777344,40.756893157958984,N,1504 +id2810347,1,2016-01-11 13:44:00,2016-01-11 14:11:33,1,-73.776702880859375,40.645366668701172,-73.901908874511719,40.697704315185547,N,1653 +id3165179,2,2016-02-08 17:26:57,2016-02-08 17:31:23,5,-73.955406188964844,40.782688140869141,-73.95123291015625,40.771709442138672,N,266 +id1096115,2,2016-06-17 00:37:52,2016-06-17 01:08:33,1,-73.781486511230469,40.644893646240234,-73.946914672851563,40.780048370361328,N,1841 +id0947772,1,2016-05-24 01:44:42,2016-05-24 01:57:14,1,-73.955818176269531,40.772266387939453,-73.997642517089844,40.760662078857422,N,752 +id3303370,2,2016-05-24 22:06:19,2016-05-24 22:12:02,1,-73.990097045898437,40.746658325195313,-73.978607177734375,40.752388000488281,N,343 +id2344406,2,2016-01-20 09:28:44,2016-01-20 09:58:11,1,-73.975234985351563,40.752376556396484,-74.006820678710938,40.720050811767578,N,1767 +id1025995,1,2016-02-19 18:45:03,2016-02-19 19:05:14,1,-74.001823425292969,40.737850189208984,-73.974334716796875,40.737846374511719,N,1211 +id2549809,1,2016-06-08 12:17:53,2016-06-08 13:03:12,1,-73.873077392578125,40.774360656738281,-73.98651123046875,40.75018310546875,N,2719 +id2767113,1,2016-05-05 05:57:35,2016-05-05 06:05:59,1,-73.980949401855469,40.774398803710937,-73.948387145996094,40.771453857421875,N,504 +id3841922,2,2016-01-22 16:11:44,2016-01-22 16:19:59,1,-73.961288452148438,40.796428680419922,-73.967529296875,40.803371429443359,N,495 +id1144456,1,2016-02-14 17:51:18,2016-02-14 17:57:44,1,-73.981407165527344,40.779228210449219,-73.980194091796875,40.789020538330078,N,386 +id2075237,2,2016-02-04 18:23:12,2016-02-04 18:32:48,1,-73.991966247558594,40.759349822998047,-73.984039306640625,40.749839782714844,N,576 +id1054882,2,2016-04-30 11:40:36,2016-04-30 11:49:12,2,-73.990898132324219,40.766090393066406,-73.998321533203125,40.755161285400391,N,516 +id0894654,1,2016-01-31 16:07:54,2016-01-31 16:12:47,1,-73.946823120117188,40.800357818603516,-73.9525146484375,40.783428192138672,N,293 +id0862086,1,2016-06-02 01:02:04,2016-06-02 01:24:42,2,-73.99005126953125,40.756172180175781,-73.984397888183594,40.663532257080078,N,1358 +id2673088,2,2016-02-24 18:28:27,2016-02-24 18:35:42,1,-73.942634582519531,40.790538787841797,-73.956893920898437,40.774131774902344,N,435 +id2514426,2,2016-01-14 14:44:24,2016-01-14 15:01:31,1,-73.969146728515625,40.800865173339844,-73.980674743652344,40.765670776367188,N,1027 +id1594652,2,2016-02-23 23:27:41,2016-02-23 23:59:39,6,-73.781410217285156,40.644916534423828,-73.985877990722656,40.730880737304688,N,1918 +id2764609,2,2016-05-06 22:58:32,2016-05-06 23:08:50,5,-73.939590454101563,40.815967559814453,-73.956138610839844,40.766963958740234,N,618 +id3719587,1,2016-02-26 06:18:56,2016-02-26 06:24:33,1,-73.97857666015625,40.753852844238281,-73.977325439453125,40.736907958984375,N,337 +id2260179,1,2016-05-30 16:22:40,2016-05-30 16:34:42,1,-73.976242065429687,40.683734893798828,-73.947921752929687,40.717128753662109,N,722 +id3612384,1,2016-06-30 08:57:55,2016-06-30 09:03:43,1,-73.945465087890625,40.774211883544922,-73.96673583984375,40.753204345703125,N,348 +id1478945,1,2016-01-28 19:47:08,2016-01-28 20:01:22,1,-73.980354309082031,40.745601654052734,-73.990318298339844,40.725051879882812,N,854 +id1327224,1,2016-03-20 16:16:59,2016-03-20 16:29:04,1,-74.007980346679688,40.732738494873047,-73.981620788574219,40.727542877197266,N,725 +id0896863,1,2016-04-23 19:43:23,2016-04-23 19:52:07,1,-73.946578979492187,40.780735015869141,-73.957992553710938,40.776821136474609,N,524 +id3650113,2,2016-01-04 16:37:30,2016-01-04 16:50:59,1,-73.973808288574219,40.76025390625,-73.967124938964844,40.792743682861328,N,809 +id3030238,1,2016-01-04 11:50:30,2016-01-04 11:57:45,1,-73.995811462402344,40.732868194580078,-73.992515563964844,40.749259948730469,N,435 +id3241140,2,2016-01-10 18:19:28,2016-01-10 18:23:31,1,-74.005279541015625,40.720531463623047,-74.006523132324219,40.714099884033203,N,243 +id2197673,1,2016-03-14 07:06:22,2016-03-14 07:09:53,1,-73.969345092773438,40.760780334472656,-73.976280212402344,40.754035949707031,N,211 +id1500753,1,2016-04-19 22:27:36,2016-04-19 22:35:13,1,-73.973915100097656,40.739952087402344,-73.9788818359375,40.724025726318359,N,457 +id0625156,1,2016-06-22 19:22:54,2016-06-22 19:30:35,1,-74.002792358398438,40.749507904052734,-73.993263244628906,40.762649536132813,N,461 +id3909860,2,2016-05-14 16:24:01,2016-05-14 16:31:48,5,-73.997421264648437,40.756778717041016,-73.984642028808594,40.764129638671875,N,467 +id2803744,2,2016-01-29 07:24:18,2016-01-29 07:42:34,2,-73.950210571289062,40.784309387207031,-73.983230590820313,40.755149841308594,N,1096 +id2547953,2,2016-01-16 17:54:40,2016-01-16 18:06:10,1,-73.974014282226563,40.756401062011719,-73.993438720703125,40.761375427246094,N,690 +id2282420,2,2016-02-19 00:38:59,2016-02-19 01:05:48,3,-73.983551025390625,40.676559448242187,-73.928878784179688,40.670539855957031,N,1609 +id0166819,1,2016-03-11 20:30:06,2016-03-11 20:40:29,2,-73.994033813476563,40.751258850097656,-73.989593505859375,40.767753601074219,N,623 +id2280539,1,2016-03-14 18:38:59,2016-03-14 18:41:01,1,-73.953895568847656,40.821903228759766,-73.952354431152344,40.819766998291016,N,122 +id3803363,2,2016-03-23 20:36:17,2016-03-23 20:45:29,1,-73.975311279296875,40.751251220703125,-73.983123779296875,40.721969604492188,N,552 +id2298858,1,2016-04-08 14:50:55,2016-04-08 15:12:30,1,-73.958526611328125,40.778274536132812,-73.960159301757813,40.758251190185547,N,1295 +id3825708,2,2016-06-16 20:27:01,2016-06-16 20:45:04,1,-73.99456787109375,40.755687713623047,-73.993965148925781,40.725570678710937,N,1083 +id0854614,2,2016-03-22 08:34:10,2016-03-22 08:57:10,2,-73.990898132324219,40.745601654052734,-73.982353210449219,40.766700744628906,N,1380 +id2111362,2,2016-06-03 19:39:55,2016-06-03 20:00:45,1,-73.94818115234375,40.782928466796875,-73.910362243652344,40.775760650634766,N,1250 +id1854003,2,2016-04-04 07:09:54,2016-04-04 07:21:50,2,-73.999855041503906,40.743396759033203,-74.013290405273438,40.716693878173828,N,716 +id3581763,2,2016-04-30 21:57:38,2016-04-30 22:07:15,2,-73.970497131347656,40.752880096435547,-73.9576416015625,40.735618591308594,N,577 +id0072777,1,2016-04-26 10:51:38,2016-04-26 11:09:34,1,-73.983047485351563,40.738937377929688,-73.976432800292969,40.764015197753906,N,1076 +id1990610,2,2016-03-22 10:42:07,2016-03-22 10:52:01,2,-73.973419189453125,40.763858795166016,-73.984916687011719,40.746547698974609,N,594 +id1759356,2,2016-06-29 23:59:58,2016-06-30 00:02:55,3,-73.985877990722656,40.75714111328125,-73.97796630859375,40.753658294677734,N,177 +id2269209,1,2016-01-28 22:47:44,2016-01-28 23:11:19,1,-73.993408203125,40.739818572998047,-73.935401916503906,40.857311248779297,N,1415 +id0423685,2,2016-04-03 19:17:54,2016-04-03 19:31:38,6,-74.006965637207031,40.704826354980469,-73.988616943359375,40.662998199462891,N,824 +id3460979,2,2016-06-22 00:25:16,2016-06-22 00:29:19,1,-73.977577209472656,40.757598876953125,-73.9921875,40.751430511474609,N,243 +id0707795,1,2016-05-22 17:51:38,2016-05-22 18:20:20,1,-74.005805969238281,40.745418548583984,-73.9559326171875,40.778007507324219,N,1722 +id2736342,2,2016-02-09 22:58:12,2016-02-09 23:00:03,1,-73.987991333007812,40.754783630371094,-73.990806579589844,40.750961303710938,N,111 +id3967914,2,2016-03-12 07:40:35,2016-03-12 08:17:30,2,-73.981529235839844,40.780967712402344,-73.776649475097656,40.644863128662109,N,2215 +id0862224,2,2016-04-14 21:01:25,2016-04-14 21:17:23,1,-73.994270324707031,40.740970611572266,-73.989227294921875,40.766139984130859,N,958 +id3682355,1,2016-01-28 00:00:11,2016-01-28 00:21:54,1,-73.977119445800781,40.784927368164063,-73.939437866210937,40.850170135498047,N,1303 +id3476074,1,2016-03-30 23:53:53,2016-03-31 00:02:12,1,-73.9710693359375,40.758434295654297,-73.953948974609375,40.774635314941406,N,499 +id1060299,1,2016-03-25 21:39:02,2016-03-25 21:59:19,1,-73.993148803710938,40.734931945800781,-73.989105224609375,40.776771545410156,N,1217 +id0805555,2,2016-04-25 18:50:37,2016-04-25 19:00:51,4,-73.983840942382813,40.7464599609375,-74.002212524414063,40.734493255615234,N,614 +id3230882,2,2016-03-13 13:54:43,2016-03-13 14:08:08,6,-73.978927612304688,40.75048828125,-74.004981994628906,40.746501922607422,N,805 +id0767371,2,2016-06-16 18:23:51,2016-06-16 18:37:27,2,-73.984542846679688,40.779590606689453,-73.959259033203125,40.775089263916016,N,816 +id3081838,2,2016-05-18 01:13:49,2016-05-18 01:17:11,2,-73.959976196289063,40.813671112060547,-73.964500427246094,40.807491302490234,N,202 +id2739261,1,2016-06-04 14:42:43,2016-06-04 14:48:32,2,-73.981178283691406,40.781002044677734,-73.973236083984375,40.792503356933594,N,349 +id3223638,1,2016-04-15 19:50:59,2016-04-15 19:57:16,1,-73.943023681640625,40.789867401123047,-73.953781127929688,40.775199890136719,N,377 +id2979995,2,2016-06-28 20:56:53,2016-06-28 21:23:30,1,-73.987983703613281,40.738086700439453,-73.981597900390625,40.677604675292969,N,1597 +id3623154,2,2016-01-19 14:41:20,2016-01-19 14:43:15,5,-74.005874633789063,40.736343383789062,-74.000885009765625,40.737358093261719,N,115 +id1475464,2,2016-01-12 20:11:42,2016-01-12 20:18:16,1,-73.971061706542969,40.765953063964844,-73.953941345214844,40.772937774658203,N,394 +id1835031,2,2016-04-14 01:13:54,2016-04-14 01:17:09,1,-73.989723205566406,40.729812622070312,-73.9962158203125,40.73309326171875,N,195 +id0246266,1,2016-03-19 00:58:52,2016-03-19 01:07:11,3,-73.999526977539062,40.726619720458984,-73.987525939941406,40.721614837646484,N,499 +id1343583,1,2016-03-15 11:32:32,2016-03-15 11:48:26,1,-73.99371337890625,40.741886138916016,-73.978462219238281,40.748512268066406,N,954 +id0418044,1,2016-02-07 18:23:00,2016-02-07 18:31:49,1,-74.002578735351563,40.744796752929687,-74.006744384765625,40.720474243164062,N,529 +id2098391,2,2016-02-02 12:01:35,2016-02-02 12:11:51,1,-74.015304565429688,40.713218688964844,-74.012161254882813,40.719936370849609,N,616 +id2812911,1,2016-05-22 16:56:10,2016-05-22 17:57:53,1,-73.781890869140625,40.644756317138672,-73.981842041015625,40.670639038085937,N,3703 +id1982647,1,2016-06-03 18:06:28,2016-06-03 18:15:37,1,-73.981002807617187,40.747894287109375,-73.986083984375,40.726760864257812,N,549 +id0154217,2,2016-04-26 20:50:20,2016-04-26 21:08:55,1,-73.871208190917969,40.773910522460938,-73.975372314453125,40.758590698242188,N,1115 +id3085198,2,2016-05-14 12:16:38,2016-05-14 12:21:56,1,-73.995643615722656,40.749267578125,-73.9884033203125,40.759101867675781,N,318 +id0238681,1,2016-04-24 15:56:51,2016-04-24 16:06:49,2,-73.990730285644531,40.74224853515625,-73.998420715332031,40.742889404296875,N,598 +id3173656,1,2016-05-10 08:25:23,2016-05-10 08:31:07,1,-73.980857849121094,40.767585754394531,-73.971649169921875,40.763763427734375,N,344 +id1651630,2,2016-04-07 19:58:22,2016-04-07 20:15:40,5,-73.988746643066406,40.693084716796875,-73.990936279296875,40.730831146240234,N,1038 +id1047380,1,2016-05-26 07:19:01,2016-05-26 07:50:42,1,-73.980697631835938,40.733928680419922,-73.961090087890625,40.767490386962891,N,1901 +id3641825,2,2016-06-04 04:23:46,2016-06-04 04:40:44,2,-73.9915771484375,40.764900207519531,-73.945381164550781,40.828380584716797,N,1018 +id2035550,1,2016-04-19 06:48:10,2016-04-19 06:55:02,1,-73.971687316894531,40.750679016113281,-73.989501953125,40.752098083496094,N,412 +id2960544,2,2016-06-06 15:55:30,2016-06-06 16:07:14,1,-73.954917907714844,40.773361206054687,-73.974281311035156,40.778598785400391,N,704 +id0882583,1,2016-06-29 22:51:03,2016-06-29 23:25:13,1,-73.988861083984375,40.745288848876953,-73.943138122558594,40.829170227050781,N,2050 +id3415024,1,2016-06-15 21:41:59,2016-06-15 22:13:08,1,-73.991363525390625,40.759803771972656,-73.966278076171875,40.690711975097656,N,1869 +id0473309,1,2016-02-11 23:36:33,2016-02-11 23:57:49,2,-73.982078552246094,40.728153228759766,-73.961212158203125,40.688770294189453,N,1276 +id1461608,1,2016-04-20 02:09:11,2016-04-20 02:22:36,1,-73.994064331054688,40.751384735107422,-73.955856323242188,40.779148101806641,N,805 +id0286419,2,2016-03-01 23:38:38,2016-03-01 23:57:37,6,-74.006095886230469,40.73504638671875,-73.950325012207031,40.783878326416016,N,1139 +id0232832,2,2016-05-12 21:28:41,2016-05-12 21:49:31,1,-73.973106384277344,40.763576507568359,-73.956222534179687,40.732898712158203,N,1250 +id3169685,2,2016-02-29 06:37:13,2016-02-29 06:46:23,1,-74.006568908691406,40.731491088867188,-73.982513427734375,40.769039154052734,N,550 +id1948345,2,2016-02-08 21:54:27,2016-02-08 22:21:24,1,-73.776710510253906,40.645351409912109,-73.990104675292969,40.714973449707031,N,1617 +id0374686,2,2016-01-30 16:06:29,2016-01-30 16:35:31,1,-73.973419189453125,40.763618469238281,-73.995689392089844,40.726493835449219,N,1742 +id0048400,1,2016-02-21 16:11:25,2016-02-21 16:14:08,1,-74.014663696289063,40.712966918945313,-74.017265319824219,40.705036163330078,N,163 +id0469029,1,2016-05-01 11:18:40,2016-05-01 11:26:50,4,-73.954910278320312,40.688720703125,-73.964302062988281,40.707908630371094,N,490 +id1797459,1,2016-01-25 08:58:23,2016-01-25 09:08:03,1,-73.997726440429687,40.691207885742188,-74.009574890136719,40.712898254394531,N,580 +id2510834,1,2016-04-20 22:30:28,2016-04-20 22:43:33,1,-73.980735778808594,40.764980316162109,-73.952369689941406,40.772727966308594,N,785 +id0654729,2,2016-01-08 01:59:48,2016-01-08 02:05:52,1,-73.988937377929687,40.727088928222656,-74.006103515625,40.733261108398437,N,364 +id3424365,2,2016-05-15 18:48:26,2016-05-15 19:02:14,1,-73.992958068847656,40.76318359375,-73.975311279296875,40.787345886230469,N,828 +id2073448,1,2016-01-15 09:23:40,2016-01-15 09:30:32,1,-73.953567504882813,40.766944885253906,-73.953681945800781,40.779228210449219,N,412 +id3254738,2,2016-02-17 10:00:56,2016-02-17 10:11:10,6,-73.955528259277344,40.782669067382813,-73.967048645019531,40.766841888427734,N,614 +id1114964,1,2016-04-25 18:21:46,2016-04-25 18:25:08,1,-73.96630859375,40.758148193359375,-73.959251403808594,40.771427154541016,N,202 +id2337299,1,2016-03-11 17:22:26,2016-03-11 17:27:00,1,-73.997138977050781,40.741950988769531,-74.005226135253906,40.73822021484375,N,274 +id0509960,1,2016-06-09 22:47:09,2016-06-09 22:59:26,1,-73.980255126953125,40.744220733642578,-73.990608215332031,40.756095886230469,N,737 +id1498855,1,2016-02-25 15:18:29,2016-02-25 15:25:57,1,-73.954887390136719,40.780464172363281,-73.954856872558594,40.773296356201172,N,448 +id1954448,2,2016-05-18 20:08:32,2016-05-18 20:36:39,1,-73.992111206054687,40.730960845947266,-73.954620361328125,40.770660400390625,N,1687 +id3035499,2,2016-05-23 20:24:43,2016-05-23 20:36:07,1,-73.991012573242188,40.756599426269531,-73.991012573242188,40.756599426269531,N,684 +id3485815,1,2016-06-16 08:46:13,2016-06-16 09:04:04,1,-73.991416931152344,40.723758697509766,-73.98974609375,40.701984405517578,N,1071 +id3715428,1,2016-05-13 19:58:27,2016-05-13 20:13:33,1,-74.014488220214844,40.704742431640625,-74.007278442382813,40.748344421386719,N,906 +id2162046,2,2016-05-14 21:53:11,2016-05-14 22:09:09,1,-73.996749877929687,40.720458984375,-73.977928161621094,40.75128173828125,N,958 +id3322291,2,2016-06-23 00:32:31,2016-06-23 00:48:42,1,-74.001426696777344,40.707340240478516,-73.982437133789062,40.757209777832031,N,971 +id3476103,1,2016-04-17 12:48:25,2016-04-17 13:04:34,1,-73.9722900390625,40.786411285400391,-73.987396240234375,40.756381988525391,N,969 +id1216387,2,2016-05-22 08:06:36,2016-05-22 08:13:35,1,-73.959854125976562,40.758396148681641,-73.963172912597656,40.772010803222656,N,419 +id1435323,2,2016-02-18 12:34:38,2016-02-18 12:39:31,2,-73.982200622558594,40.775184631347656,-73.987564086914063,40.76715087890625,N,293 +id0492700,1,2016-05-21 02:09:40,2016-05-21 02:16:54,1,-73.972038269042969,40.762779235839844,-73.968841552734375,40.790916442871094,N,434 +id1286354,2,2016-05-20 19:27:41,2016-05-20 19:32:32,6,-73.954498291015625,40.765846252441406,-73.946250915527344,40.777736663818359,N,291 +id3095066,1,2016-03-11 16:05:42,2016-03-11 16:15:14,1,-73.971420288085938,40.794975280761719,-73.952735900878906,40.789188385009766,N,572 +id3670111,1,2016-02-13 22:32:26,2016-02-13 22:42:04,1,-73.989120483398437,40.743949890136719,-74.002975463867188,40.733650207519531,N,578 +id2700230,1,2016-06-27 12:58:55,2016-06-27 13:09:13,1,-73.999526977539062,40.719589233398438,-74.002037048339844,40.740215301513672,N,618 +id3705977,2,2016-05-19 21:45:10,2016-05-19 21:50:48,5,-73.982421875,40.772739410400391,-73.991950988769531,40.770652770996094,N,338 +id0514744,2,2016-05-07 12:22:52,2016-05-07 12:30:24,2,-73.994277954101563,40.726890563964844,-74.002853393554687,40.723628997802734,N,452 +id3389891,2,2016-05-26 03:49:56,2016-05-26 03:55:45,2,-73.940010070800781,40.840961456298828,-73.954177856445313,40.821540832519531,N,349 +id0108626,1,2016-05-16 11:11:07,2016-05-16 11:17:41,1,-73.964073181152344,40.759990692138672,-73.97235107421875,40.750038146972656,N,394 +id1163065,1,2016-01-22 16:13:40,2016-01-22 16:20:56,1,-73.978614807128906,40.788032531738281,-73.988349914550781,40.778553009033203,N,436 +id2421834,1,2016-05-08 19:45:16,2016-05-08 19:51:33,1,-74.002777099609375,40.728118896484375,-73.992919921875,40.719898223876953,N,377 +id1603190,1,2016-01-22 20:10:51,2016-01-22 20:27:00,2,-73.993316650390625,40.741340637207031,-73.988334655761719,40.724071502685547,N,969 +id0372390,1,2016-01-07 23:23:09,2016-01-07 23:39:38,1,-73.987594604492187,40.732650756835938,-73.981910705566406,40.764423370361328,N,989 +id2145521,1,2016-05-15 01:05:11,2016-05-15 01:21:57,1,-73.988357543945313,40.721866607666016,-73.995918273925781,40.682510375976562,N,1006 +id2756127,2,2016-03-21 11:54:27,2016-03-21 12:03:01,1,-73.970497131347656,40.796733856201172,-73.974174499511719,40.783889770507812,N,514 +id3366184,2,2016-01-18 15:53:57,2016-01-18 15:55:37,2,-73.983062744140625,40.726699829101563,-73.980903625488281,40.7210693359375,N,100 +id0378590,2,2016-05-23 15:53:30,2016-05-23 16:05:41,2,-73.973953247070312,40.784698486328125,-73.959877014160156,40.813980102539062,N,731 +id0126111,1,2016-04-01 02:24:55,2016-04-01 02:31:41,1,-73.985855102539063,40.742168426513672,-74.005279541015625,40.740222930908203,N,406 +id1136399,2,2016-05-25 14:04:28,2016-05-25 14:15:42,1,-73.981292724609375,40.765495300292969,-73.964187622070313,40.766300201416016,N,674 +id2608326,1,2016-04-30 03:28:35,2016-04-30 03:52:13,1,-73.997879028320313,40.729179382324219,-73.906990051269531,40.762271881103516,N,1418 +id0251852,1,2016-03-22 10:16:28,2016-03-22 10:31:46,1,-73.994331359863281,40.751838684082031,-74.007034301757813,40.743522644042969,N,918 +id2181762,1,2016-01-28 07:14:34,2016-01-28 07:20:05,1,-73.958236694335937,40.773120880126953,-73.952392578125,40.766773223876953,N,331 +id2715481,2,2016-05-24 13:14:32,2016-05-24 13:36:48,1,-73.996795654296875,40.752841949462891,-73.9786376953125,40.782585144042969,N,1336 +id2905123,1,2016-04-27 06:26:43,2016-04-27 06:32:03,1,-73.946098327636719,40.773124694824219,-73.951591491699219,40.784877777099609,N,320 +id1022867,2,2016-05-14 23:39:03,2016-05-14 23:52:34,1,-73.985542297363281,40.747745513916016,-73.969436645507813,40.752513885498047,N,811 +id2963809,2,2016-04-13 21:58:54,2016-04-13 22:11:03,1,-73.97760009765625,40.758228302001953,-73.986907958984375,40.729698181152344,N,729 +id0443333,2,2016-01-22 15:59:23,2016-01-22 16:17:38,1,-73.975578308105469,40.749641418457031,-73.9571533203125,40.782573699951172,N,1095 +id3087316,1,2016-02-06 12:26:30,2016-02-06 12:34:44,3,-73.955436706542969,40.782070159912109,-73.970970153808594,40.766647338867188,N,494 +id1090913,1,2016-03-28 07:24:45,2016-03-28 07:42:55,1,-73.95159912109375,40.799663543701172,-73.974769592285156,40.759208679199219,N,1090 +id0794349,1,2016-06-20 23:01:01,2016-06-20 23:05:44,1,-73.946670532226562,40.800819396972656,-73.932106018066406,40.7952880859375,N,283 +id3808030,1,2016-04-18 13:54:14,2016-04-18 14:13:34,2,-73.954574584960938,40.7655029296875,-73.981163024902344,40.746959686279297,N,1160 +id1198163,1,2016-03-05 21:14:01,2016-03-05 21:35:05,2,-73.968658447265625,40.801651000976563,-74.015960693359375,40.710983276367188,N,1264 +id0694231,2,2016-03-25 17:40:37,2016-03-25 17:45:24,1,-73.994987487792969,40.7447509765625,-74.005279541015625,40.743488311767578,N,287 +id3253284,2,2016-03-13 13:40:43,2016-03-13 13:55:13,1,-73.945892333984375,40.801593780517578,-73.974617004394531,40.762138366699219,N,870 +id2479492,2,2016-04-17 09:36:49,2016-04-17 09:46:08,1,-73.966560363769531,40.761661529541016,-73.974990844726563,40.780158996582031,N,559 +id1000428,2,2016-06-29 20:29:47,2016-06-29 20:43:25,1,-73.982803344726563,40.722679138183594,-74.0013427734375,40.740180969238281,N,818 +id3512831,1,2016-01-05 13:08:23,2016-01-05 13:18:56,1,-73.963165283203125,40.757396697998047,-73.954116821289062,40.763980865478516,N,633 +id1202565,1,2016-03-28 12:30:19,2016-03-28 12:55:50,1,-73.970451354980469,40.765224456787109,-74.003608703613281,40.727672576904297,N,1531 +id0660168,1,2016-02-14 23:09:56,2016-02-14 23:21:56,1,-74.002647399902344,40.733963012695312,-73.980232238769531,40.726516723632813,N,720 +id3675753,1,2016-04-01 05:39:35,2016-04-01 05:46:50,1,-73.995880126953125,40.738643646240234,-73.995315551757812,40.763809204101562,N,435 +id2746429,2,2016-03-24 18:18:33,2016-03-24 18:29:26,1,-73.966400146484375,40.764560699462891,-73.979095458984375,40.76519775390625,N,653 +id3335652,2,2016-06-22 08:06:53,2016-06-22 08:11:14,1,-73.99005126953125,40.762100219726562,-73.997802734375,40.751598358154297,N,261 +id2493824,1,2016-03-03 19:25:11,2016-03-03 19:40:04,2,-73.983505249023437,40.729835510253906,-73.9844970703125,40.710857391357422,N,893 +id1364551,2,2016-01-11 12:47:18,2016-01-11 12:55:23,4,-74.016006469726562,40.716011047363281,-74.003669738769531,40.726261138916016,N,485 +id1610683,2,2016-05-04 22:42:40,2016-05-04 22:54:41,1,-73.979728698730469,40.765228271484375,-73.981651306152344,40.749488830566406,N,721 +id0682359,2,2016-02-17 11:10:44,2016-02-17 11:53:14,6,-73.873023986816406,40.774147033691406,-73.994667053222656,40.760246276855469,N,2550 +id2529978,1,2016-05-30 03:20:26,2016-05-30 03:58:49,1,-74.00274658203125,40.733577728271484,-73.965087890625,40.603111267089844,N,2303 +id3316055,1,2016-01-17 20:04:04,2016-01-17 20:09:17,2,-73.978813171386719,40.787345886230469,-73.988456726074219,40.778671264648438,N,313 +id1950905,1,2016-03-13 14:19:33,2016-03-13 14:25:18,2,-73.982261657714844,40.777076721191406,-73.9833984375,40.762928009033203,N,345 +id2284009,2,2016-03-07 06:53:48,2016-03-07 07:03:16,1,-74.004554748535156,40.751922607421875,-73.984390258789063,40.762020111083984,N,568 +id1852782,1,2016-05-30 03:00:50,2016-05-30 03:06:48,1,-74.004974365234375,40.730152130126953,-74.015922546386719,40.711299896240234,N,358 +id1634324,2,2016-04-15 19:49:44,2016-04-15 20:23:54,1,-73.992515563964844,40.748035430908203,-73.957794189453125,40.711212158203125,N,2050 +id3054284,1,2016-06-04 19:44:09,2016-06-04 20:01:36,1,-73.961982727050781,40.812515258789063,-73.982818603515625,40.771965026855469,N,1047 +id3127481,1,2016-05-25 14:03:31,2016-05-25 14:15:40,1,-73.957817077636719,40.78472900390625,-73.949348449707031,40.771869659423828,N,729 +id3506169,1,2016-03-03 13:39:07,2016-03-03 13:50:36,1,-73.954963684082031,40.765586853027344,-73.970100402832031,40.759544372558594,N,689 +id1054120,1,2016-06-23 22:33:19,2016-06-23 22:46:20,1,-73.986930847167969,40.766403198242188,-73.994941711425781,40.749980926513672,N,781 +id0786623,1,2016-03-27 22:20:18,2016-03-27 22:38:57,1,-73.990516662597656,40.718788146972656,-73.950836181640625,40.677791595458984,N,1119 +id0716088,2,2016-04-19 07:32:17,2016-04-19 07:56:07,2,-73.9736328125,40.794658660888672,-73.97479248046875,40.755458831787109,N,1430 +id1894877,1,2016-06-30 21:20:47,2016-06-30 21:32:45,1,-73.973564147949219,40.750270843505859,-73.947181701660156,40.77984619140625,N,718 +id1855625,1,2016-04-19 14:46:08,2016-04-19 15:03:13,2,-73.963775634765625,40.808177947998047,-73.940879821777344,40.841560363769531,N,1025 +id1300959,2,2016-06-20 21:12:08,2016-06-20 21:18:24,6,-73.96112060546875,40.780487060546875,-73.94512939453125,40.773475646972656,N,376 +id2730472,2,2016-02-26 19:44:40,2016-02-26 20:02:47,1,-73.95269775390625,40.783641815185547,-73.944290161132812,40.836257934570313,N,1087 +id0425324,2,2016-06-29 18:02:59,2016-06-29 18:20:46,1,-73.95404052734375,40.76397705078125,-73.97406005859375,40.754478454589844,N,1067 +id2731057,2,2016-06-17 17:49:51,2016-06-17 18:15:16,5,-74.016319274902344,40.706752777099609,-73.973892211914063,40.761226654052734,N,1525 +id0712095,2,2016-06-21 21:49:44,2016-06-21 22:07:35,1,-73.998741149902344,40.754432678222656,-73.95013427734375,40.771751403808594,N,1071 +id0317367,2,2016-06-17 02:35:54,2016-06-17 02:39:57,6,-73.939559936523438,40.750659942626953,-73.913398742675781,40.745918273925781,N,243 +id2636958,2,2016-01-13 06:49:51,2016-01-13 07:03:52,1,-73.953102111816406,40.807430267333984,-73.953712463378906,40.781810760498047,N,841 +id3560195,2,2016-05-22 06:39:27,2016-05-22 06:42:30,1,-73.986808776855469,40.766605377197266,-73.996902465820313,40.762657165527344,N,183 +id2344385,2,2016-03-18 23:53:57,2016-03-19 00:19:30,2,-73.954269409179688,40.770008087158203,-73.992828369140625,40.757965087890625,N,1533 +id3720167,2,2016-05-30 19:27:15,2016-05-30 19:48:27,1,-73.8709716796875,40.773849487304688,-73.950347900390625,40.811180114746094,N,1272 +id0994568,2,2016-06-22 19:41:18,2016-06-22 19:54:42,5,-73.968925476074219,40.761306762695313,-73.983139038085938,40.766883850097656,N,804 +id3955792,1,2016-06-27 00:13:49,2016-06-27 00:20:54,2,-73.953704833984375,40.779247283935547,-73.963348388671875,40.7987060546875,N,425 +id2680029,1,2016-05-20 11:40:13,2016-05-20 11:50:17,1,-74.008049011230469,40.73870849609375,-74.013984680175781,40.713680267333984,N,604 +id2625054,1,2016-05-15 11:09:09,2016-05-15 11:26:06,3,-73.972511291503906,40.755332946777344,-74.016006469726562,40.704898834228516,N,1017 +id0970197,1,2016-03-16 17:35:41,2016-03-16 17:40:23,1,-73.973457336425781,40.764495849609375,-73.968353271484375,40.767650604248047,N,282 +id3305107,2,2016-04-21 08:51:57,2016-04-21 09:04:42,1,-73.984283447265625,40.743068695068359,-73.977386474609375,40.746738433837891,N,765 +id0713926,2,2016-01-12 22:33:26,2016-01-12 23:02:41,1,-74.001922607421875,40.740718841552734,-73.948539733886719,40.763458251953125,N,1755 +id3954540,1,2016-05-21 23:06:11,2016-05-21 23:11:04,1,-73.998878479003906,40.713619232177734,-74.007186889648438,40.715381622314453,N,293 +id1583186,2,2016-05-26 09:02:31,2016-05-26 09:06:36,5,-73.978836059570313,40.753131866455078,-73.985252380371094,40.747406005859375,N,245 +id0053156,1,2016-02-09 20:26:43,2016-02-09 20:49:09,1,-73.870826721191406,40.7738037109375,-73.991630554199219,40.758121490478516,N,1346 +id0642572,2,2016-06-03 08:47:22,2016-06-03 09:20:29,4,-74.014259338378906,40.717460632324219,-73.954978942871094,40.765220642089844,N,1987 +id0708171,2,2016-02-02 10:08:06,2016-02-02 10:24:51,1,-73.959648132324219,40.777111053466797,-73.942550659179688,40.84429931640625,N,1005 +id1648016,2,2016-04-12 10:32:18,2016-04-12 10:47:36,1,-73.976089477539063,40.744659423828125,-73.992927551269531,40.7298583984375,N,918 +id3083736,2,2016-06-12 20:36:45,2016-06-12 20:45:59,1,-73.975639343261719,40.74066162109375,-73.947830200195312,40.780448913574219,N,554 +id2913711,1,2016-02-19 12:20:05,2016-02-19 12:26:45,1,-73.998703002929688,40.745254516601563,-73.988258361816406,40.740932464599609,N,400 +id3738492,2,2016-05-27 18:08:54,2016-05-27 18:27:59,5,-73.98583984375,40.756568908691406,-74.006309509277344,40.739631652832031,N,1145 +id0087840,1,2016-06-30 15:45:45,2016-06-30 16:01:26,1,-73.992805480957031,40.756710052490234,-73.981452941894531,40.734138488769531,N,941 +id1317963,2,2016-05-13 09:19:47,2016-05-13 09:41:11,1,-73.978469848632812,40.756950378417969,-73.995086669921875,40.763629913330078,N,1284 +id3114392,1,2016-01-11 17:13:52,2016-01-11 17:21:34,2,-73.963592529296875,40.774276733398438,-73.967521667480469,40.766311645507813,N,462 +id1905116,1,2016-04-22 02:26:18,2016-04-22 02:32:30,2,-73.991127014160156,40.750118255615234,-73.972923278808594,40.764083862304688,N,372 +id0840857,1,2016-02-27 15:42:17,2016-02-27 15:47:01,1,-73.97406005859375,40.750907897949219,-73.976737976074219,40.757602691650391,N,284 +id3441261,1,2016-04-07 15:06:45,2016-04-07 15:19:37,2,-73.982330322265625,40.769207000732422,-73.990318298339844,40.756626129150391,N,772 +id1554014,2,2016-02-03 06:15:13,2016-02-03 06:28:39,1,-73.974365234375,40.752536773681641,-74.013572692871094,40.714900970458984,N,806 +id3717336,2,2016-02-05 00:18:02,2016-02-05 00:21:09,3,-73.984283447265625,40.756023406982422,-73.976791381835938,40.764877319335938,N,187 +id0985405,2,2016-04-05 22:01:54,2016-04-05 22:07:47,1,-73.972175598144531,40.765434265136719,-73.977638244628906,40.753364562988281,N,353 +id3551711,2,2016-05-14 03:33:03,2016-05-14 03:47:11,5,-73.983512878417969,40.755588531494141,-73.941856384277344,40.795322418212891,N,848 +id3016612,1,2016-04-23 18:42:02,2016-04-23 18:58:10,2,-73.982856750488281,40.742069244384766,-73.994766235351563,40.718624114990234,N,968 +id0274681,1,2016-06-17 23:31:52,2016-06-17 23:36:45,1,-73.982292175292969,40.731479644775391,-73.985130310058594,40.741874694824219,N,293 +id1498063,1,2016-02-08 01:41:46,2016-02-08 01:51:05,1,-73.978012084960938,40.765045166015625,-73.983680725097656,40.726200103759766,N,559 +id1342017,1,2016-06-20 14:13:31,2016-06-20 14:35:31,2,-73.991119384765625,40.750568389892578,-73.972251892089844,40.760482788085937,N,1320 +id0481254,2,2016-01-11 19:44:10,2016-01-11 19:56:25,3,-73.790168762207031,40.644111633300781,-73.879402160644531,40.646530151367188,N,735 +id2405968,2,2016-06-21 00:32:43,2016-06-21 00:44:20,1,-73.975303649902344,40.790191650390625,-73.940406799316406,40.799808502197266,N,697 +id3927733,1,2016-06-08 09:20:24,2016-06-08 09:23:59,1,-74.00469970703125,40.7161865234375,-74.0093994140625,40.720458984375,N,215 +id1819224,1,2016-05-25 06:51:13,2016-05-25 06:53:11,1,-74.000099182128906,40.732933044433594,-73.993049621582031,40.742664337158203,N,118 +id3419441,1,2016-06-10 01:44:50,2016-06-10 01:54:18,1,-74.008132934570313,40.740337371826172,-73.991371154785156,40.743068695068359,N,568 +id2340933,2,2016-04-17 21:29:41,2016-04-17 21:41:59,1,-73.955009460449219,40.765178680419922,-73.985771179199219,40.758159637451172,N,738 +id0541591,2,2016-04-22 13:06:14,2016-04-22 13:55:14,1,-73.992195129394531,40.742778778076172,-73.916389465332031,40.844078063964844,N,2940 +id2132960,2,2016-03-20 10:34:37,2016-03-20 10:39:34,2,-73.984214782714844,40.745895385742187,-73.97259521484375,40.749412536621094,N,297 +id0915475,1,2016-03-14 06:03:38,2016-03-14 06:03:43,1,-73.982406616210938,40.731143951416016,-73.982406616210938,40.731143951416016,N,5 +id2966148,1,2016-02-04 23:37:27,2016-02-04 23:56:23,1,-73.971420288085938,40.757068634033203,-73.927192687988281,40.767368316650391,N,1136 +id0624415,2,2016-05-24 12:41:41,2016-05-24 13:08:36,1,-73.9541015625,40.764251708984375,-73.974899291992187,40.792858123779297,N,1615 +id2808800,2,2016-01-27 20:35:56,2016-01-27 20:52:29,1,-73.973609924316406,40.763175964355469,-73.974044799804687,40.791229248046875,N,993 +id0495912,2,2016-06-16 09:27:10,2016-06-16 09:43:43,1,-73.987983703613281,40.741291046142578,-74.007026672363281,40.727210998535156,N,993 +id3656001,1,2016-06-29 15:38:10,2016-06-29 15:46:38,1,-73.975914001464844,40.757442474365234,-73.962982177734375,40.758010864257813,N,508 +id1410491,1,2016-01-11 15:17:02,2016-01-11 15:28:35,1,-73.9544677734375,40.764194488525391,-73.975471496582031,40.752647399902344,N,693 +id0506112,1,2016-06-07 11:59:58,2016-06-07 12:07:21,1,-73.995162963867188,40.740646362304688,-74.005439758300781,40.741062164306641,N,443 +id3926247,1,2016-06-28 13:57:15,2016-06-28 14:05:10,1,-74.002998352050781,40.733436584472656,-74.003692626953125,40.717311859130859,N,475 +id0358453,1,2016-01-22 22:04:13,2016-01-22 22:15:02,1,-73.983894348144531,40.732021331787109,-73.987297058105469,40.742897033691406,N,649 +id2665005,2,2016-02-09 23:11:31,2016-02-09 23:18:46,2,-73.984573364257813,40.764945983886719,-74.00164794921875,40.746120452880859,N,435 +id1490218,1,2016-04-09 08:07:17,2016-04-09 08:26:59,4,-74.014373779296875,40.716949462890625,-73.974388122558594,40.778400421142578,N,1182 +id3722303,2,2016-03-18 01:19:37,2016-03-18 01:38:56,5,-73.980560302734375,40.730220794677734,-73.998207092285156,40.677719116210938,N,1159 +id1219955,2,2016-05-02 14:03:59,2016-05-02 14:18:45,1,-73.979438781738281,40.784820556640625,-73.958656311035156,40.7685546875,N,886 +id3704788,1,2016-06-21 11:53:54,2016-06-21 11:57:48,1,-73.972976684570313,40.758384704589844,-73.973442077636719,40.760898590087891,N,234 +id1818466,2,2016-04-13 23:15:26,2016-04-13 23:32:58,1,-73.987747192382813,40.747058868408203,-73.971328735351563,40.797901153564453,N,1052 +id0068246,1,2016-04-12 13:59:29,2016-04-12 14:19:18,2,-73.976608276367188,40.780616760253906,-73.9798583984375,40.755111694335938,N,1189 +id3481598,1,2016-04-25 07:41:43,2016-04-25 07:45:41,1,-73.980636596679688,40.742630004882813,-73.990150451660156,40.740749359130859,N,238 +id0378075,2,2016-01-08 13:19:07,2016-01-08 13:22:27,5,-73.981170654296875,40.75,-73.975387573242187,40.757198333740234,N,200 +id0996349,1,2016-01-18 18:13:05,2016-01-18 18:21:36,1,-73.9925537109375,40.743099212646484,-73.977775573730469,40.758953094482422,N,511 +id3393677,2,2016-06-20 13:47:43,2016-06-20 13:49:42,1,-73.998481750488281,40.729503631591797,-74.001510620117187,40.730503082275391,N,119 +id3810815,1,2016-06-30 12:35:26,2016-06-30 12:42:01,1,-74.001441955566406,40.727535247802734,-74.001510620117187,40.719940185546875,N,395 +id1754483,2,2016-01-03 15:10:26,2016-01-03 15:36:13,4,-73.948974609375,40.777366638183594,-73.991584777832031,40.749992370605469,N,1547 +id2689234,1,2016-05-01 20:54:33,2016-05-01 21:02:21,1,-74.000495910644531,40.737289428710938,-73.983314514160156,40.734943389892578,N,468 +id0087929,2,2016-06-18 09:55:32,2016-06-18 10:02:49,1,-73.9871826171875,40.744987487792969,-73.991142272949219,40.728042602539063,N,437 +id0713018,2,2016-02-09 18:39:00,2016-02-09 18:53:45,6,-73.996498107910156,40.747829437255859,-73.981796264648437,40.734218597412109,N,885 +id2649729,2,2016-03-13 05:12:03,2016-03-13 05:24:46,1,-73.990951538085938,40.75054931640625,-73.999427795410156,40.717601776123047,N,763 +id1277236,2,2016-01-05 18:51:55,2016-01-05 19:24:59,4,-73.983482360839844,40.759170532226563,-73.957763671875,40.718799591064453,N,1984 +id0438855,2,2016-06-11 13:33:52,2016-06-11 13:42:22,1,-73.990119934082031,40.738231658935547,-73.992790222167969,40.736610412597656,N,510 +id0088090,1,2016-02-04 05:09:28,2016-02-04 05:12:17,1,-73.990447998046875,40.756336212158203,-73.982818603515625,40.767307281494141,N,169 +id0923648,1,2016-05-25 08:10:13,2016-05-25 08:19:29,1,-73.990570068359375,40.755729675292969,-73.993980407714844,40.769626617431641,N,556 +id3114509,2,2016-02-20 01:47:24,2016-02-20 02:01:57,5,-73.990692138671875,40.719039916992187,-73.972160339355469,40.754310607910156,N,873 +id3981674,2,2016-02-24 08:16:18,2016-02-24 08:20:20,1,-73.975692749023438,40.786830902099609,-73.980667114257813,40.783111572265625,N,242 +id0146591,2,2016-01-31 17:37:34,2016-01-31 17:46:12,1,-74.005470275878906,40.740467071533203,-73.997322082519531,40.761360168457031,N,518 +id3752553,2,2016-01-02 18:15:34,2016-01-02 18:26:10,1,-73.972373962402344,40.786647796630859,-73.944618225097656,40.778228759765625,N,636 +id1791437,1,2016-02-20 12:03:03,2016-02-20 12:24:36,1,-73.995285034179688,40.749629974365234,-73.9876708984375,40.724597930908203,N,1293 +id3899084,1,2016-06-09 20:18:30,2016-06-09 20:26:43,1,-73.979682922363281,40.735515594482422,-73.990699768066406,40.724651336669922,N,493 +id1496197,1,2016-03-09 18:51:55,2016-03-09 19:16:45,1,-73.976898193359375,40.759223937988281,-73.938804626464844,40.810737609863281,N,1490 +id2402018,1,2016-05-23 13:56:25,2016-05-23 14:03:00,1,-73.99090576171875,40.742210388183594,-73.9886474609375,40.734695434570313,N,395 +id1537677,1,2016-04-29 22:10:13,2016-04-29 22:24:49,1,-73.983024597167969,40.760547637939453,-73.9842529296875,40.748813629150391,N,876 +id0463276,1,2016-06-02 12:46:48,2016-06-02 12:59:03,1,-73.977920532226563,40.746238708496094,-73.978233337402344,40.751091003417969,N,735 +id0384348,2,2016-06-28 21:53:28,2016-06-28 21:57:41,1,-73.960853576660156,40.711978912353516,-73.951156616210937,40.711650848388672,N,253 +id2311675,1,2016-03-28 07:10:08,2016-03-28 07:20:13,1,-73.988113403320313,40.737911224365234,-73.970169067382813,40.762477874755859,N,605 +id2640094,1,2016-02-14 20:14:02,2016-02-14 20:16:11,1,-73.962547302246094,40.758960723876953,-73.961563110351562,40.764610290527344,N,129 +id1648896,2,2016-05-16 08:38:34,2016-05-16 08:41:06,1,-73.9918212890625,40.749523162841797,-73.988105773925781,40.745265960693359,N,152 +id3614266,2,2016-04-26 23:14:09,2016-04-26 23:18:22,1,-73.970474243164063,40.761577606201172,-73.960914611816406,40.766300201416016,N,253 +id1692590,2,2016-01-22 09:14:54,2016-01-22 09:36:30,1,-73.979385375976562,40.74005126953125,-74.006690979003906,40.728801727294922,N,1296 +id0069263,1,2016-03-26 20:16:42,2016-03-26 20:41:31,1,-73.999168395996094,40.742427825927734,-73.983352661132813,40.726215362548828,N,1489 +id0238383,1,2016-01-11 11:29:18,2016-01-11 11:41:59,2,-73.987762451171875,40.755020141601563,-74.004653930664062,40.749538421630859,N,761 +id0586512,1,2016-05-23 13:44:10,2016-05-23 13:53:55,2,-73.975364685058594,40.791984558105469,-73.982284545898437,40.775154113769531,N,585 +id1782387,2,2016-03-18 12:23:14,2016-03-18 12:51:04,3,-73.974349975585937,40.783039093017578,-73.974296569824219,40.762821197509766,N,1670 +id3469535,1,2016-01-01 01:50:09,2016-01-01 02:01:39,1,-73.96331787109375,40.765987396240234,-73.973846435546875,40.794456481933594,N,690 +id3973418,2,2016-01-06 15:12:36,2016-01-06 15:26:50,1,-73.976020812988281,40.763473510742188,-73.961174011230469,40.774707794189453,N,854 +id1815058,2,2016-02-25 07:30:20,2016-02-25 07:49:00,1,-73.992973327636719,40.697509765625,-73.969947814941406,40.757999420166016,N,1120 +id3209182,2,2016-06-20 19:02:31,2016-06-20 19:04:28,5,-73.967918395996094,40.799541473388672,-73.962409973144531,40.797321319580078,N,117 +id3486203,2,2016-05-10 12:58:15,2016-05-10 13:06:03,5,-73.974647521972656,40.756156921386719,-73.973258972167969,40.76519775390625,N,468 +id3194309,1,2016-02-13 03:36:58,2016-02-13 03:43:07,2,-73.958717346191406,40.708362579345703,-73.989212036132812,40.719001770019531,N,369 +id3297729,2,2016-03-27 20:12:15,2016-03-27 20:19:48,1,-73.960739135742188,40.761310577392578,-73.941146850585937,40.794277191162109,N,453 +id1821865,2,2016-05-19 20:51:52,2016-05-19 20:56:49,1,-73.956413269042969,40.813438415527344,-73.9530029296875,40.802459716796875,N,297 +id0988436,2,2016-04-18 20:24:58,2016-04-18 20:27:50,1,-73.947296142578125,40.779693603515625,-73.93572998046875,40.795513153076172,N,172 +id0791249,2,2016-04-11 21:17:42,2016-04-11 21:25:18,1,-73.994438171386719,40.745830535888672,-74.00927734375,40.747768402099609,N,456 +id3343266,2,2016-05-02 22:17:52,2016-05-02 22:21:09,4,-73.981788635253906,40.752513885498047,-73.980979919433594,40.74468994140625,N,197 +id0774914,2,2016-06-16 09:44:01,2016-06-16 10:03:01,2,-73.954345703125,40.764225006103516,-73.972930908203125,40.761203765869141,N,1140 +id3749832,2,2016-06-15 19:50:28,2016-06-15 20:07:33,1,-73.973793029785156,40.750499725341797,-73.960647583007813,40.780601501464844,N,1025 +id2868787,1,2016-04-06 16:54:40,2016-04-06 17:10:00,2,-73.983642578125,40.775333404541016,-73.966499328613281,40.794601440429688,N,920 +id1870003,2,2016-02-04 09:18:41,2016-02-04 09:34:05,4,-73.923248291015625,40.743679046630859,-73.9793701171875,40.752468109130859,N,924 +id2340402,2,2016-05-15 14:51:20,2016-05-15 15:04:42,1,-73.979347229003906,40.724357604980469,-74.005805969238281,40.725631713867188,N,802 +id2451095,2,2016-04-07 22:58:18,2016-04-07 23:15:08,3,-73.980079650878906,40.726890563964844,-74.009262084960937,40.738059997558594,N,1010 +id0032797,1,2016-01-31 02:04:48,2016-01-31 02:19:42,1,-73.989669799804688,40.720291137695313,-73.992042541503906,40.749172210693359,N,894 +id1364909,1,2016-04-02 03:14:18,2016-04-02 03:32:09,1,-73.990982055664063,40.734207153320312,-73.958343505859375,40.772609710693359,Y,1071 +id0543969,1,2016-01-29 06:52:02,2016-01-29 06:55:09,1,-73.97772216796875,40.754520416259766,-73.976295471191406,40.76422119140625,N,187 +id3151297,2,2016-02-19 07:45:51,2016-02-19 07:57:53,5,-73.950981140136719,40.770626068115234,-73.980491638183594,40.745166778564453,N,722 +id0472861,2,2016-06-05 18:30:03,2016-06-05 18:39:18,1,-73.996658325195312,40.752979278564453,-73.993881225585937,40.758979797363281,N,555 +id0005456,1,2016-06-05 19:16:21,2016-06-05 19:33:00,1,-73.975349426269531,40.753196716308594,-73.969459533691406,40.793724060058594,N,999 +id2137934,2,2016-06-13 08:41:47,2016-06-13 09:15:17,2,-73.978416442871094,40.761993408203125,-73.872901916503906,40.774356842041016,N,2010 +id1218376,1,2016-06-18 15:53:06,2016-06-18 16:12:34,1,-73.96405029296875,40.792686462402344,-73.975875854492187,40.752105712890625,N,1168 +id0898573,1,2016-01-21 14:06:36,2016-01-21 14:24:48,2,-73.995880126953125,40.759994506835937,-73.964157104492188,40.771018981933594,N,1092 +id1643422,2,2016-05-07 02:02:31,2016-05-07 02:07:45,3,-73.992843627929687,40.742881774902344,-73.989204406738281,40.757106781005859,N,314 +id2518753,1,2016-03-19 14:13:13,2016-03-19 14:25:39,1,-74.000869750976563,40.718074798583984,-74.013046264648437,40.703495025634766,N,746 +id3656825,2,2016-04-22 23:45:45,2016-04-22 23:55:21,1,-73.989112854003906,40.748329162597656,-73.967842102050781,40.755638122558594,N,576 +id0283471,1,2016-01-01 14:05:17,2016-01-01 14:12:07,1,-73.965232849121094,40.755073547363281,-73.9522705078125,40.781032562255859,N,410 +id3929948,1,2016-05-09 23:07:31,2016-05-09 23:21:49,1,-73.984474182128906,40.761432647705078,-73.936302185058594,40.799015045166016,N,858 +id1747173,1,2016-03-21 22:48:08,2016-03-21 22:54:36,4,-73.968788146972656,40.757633209228516,-73.982620239257813,40.760673522949219,N,388 +id3491466,2,2016-02-12 21:10:54,2016-02-12 21:27:45,1,-73.992103576660156,40.764240264892578,-73.981254577636719,40.746936798095703,N,1011 +id3163494,1,2016-05-25 16:40:36,2016-05-25 16:50:54,1,-74.010284423828125,40.719940185546875,-73.995857238769531,40.748813629150391,N,618 +id1753877,2,2016-02-12 09:38:02,2016-02-12 09:49:52,1,-73.953216552734375,40.782676696777344,-73.970436096191406,40.762420654296875,N,710 +id0493851,2,2016-02-01 10:36:32,2016-02-01 10:43:09,1,-73.968772888183594,40.764297485351562,-73.959495544433594,40.767616271972656,N,397 +id2381364,2,2016-05-26 15:38:46,2016-05-26 16:08:24,1,-74.010581970214844,40.728099822998047,-73.987503051757812,40.770469665527344,N,1778 +id2028401,1,2016-05-14 19:50:02,2016-05-14 19:59:32,1,-73.934471130371094,40.801071166992188,-73.944549560546875,40.814002990722656,N,570 +id0326781,1,2016-06-16 08:38:50,2016-06-16 08:42:43,1,-73.968925476074219,40.7550048828125,-73.962921142578125,40.758312225341797,N,233 +id2709285,1,2016-03-01 20:41:02,2016-03-01 20:50:51,1,-73.992652893066406,40.758258819580078,-73.969009399414063,40.753574371337891,N,589 +id3215604,1,2016-01-10 06:03:10,2016-01-10 06:10:59,1,-73.978927612304688,40.753028869628906,-73.974685668945313,40.748550415039062,N,469 +id1188272,1,2016-03-12 14:58:44,2016-03-12 15:17:40,1,-73.990074157714844,40.741741180419922,-74.009414672851563,40.713348388671875,N,1136 +id3808521,1,2016-02-17 13:16:33,2016-02-17 13:47:05,1,-73.870773315429687,40.773696899414063,-73.945564270019531,40.661586761474609,N,1832 +id3164082,1,2016-01-22 22:38:21,2016-01-22 22:46:36,2,-73.983283996582031,40.762786865234375,-73.977699279785156,40.753440856933594,N,495 +id2451525,2,2016-02-28 10:35:50,2016-02-28 10:51:34,1,-73.984962463378906,40.75897216796875,-74.014350891113281,40.713943481445313,N,944 +id0938043,2,2016-05-07 19:50:33,2016-05-07 20:22:21,6,-73.871238708496094,40.773818969726563,-74.023658752441406,40.634101867675781,N,1908 +id0309700,1,2016-05-14 10:37:14,2016-05-14 10:57:53,2,-73.97796630859375,40.75225830078125,-74.00396728515625,40.723964691162109,N,1239 +id0733564,1,2016-05-24 18:22:38,2016-05-24 18:36:17,2,-73.963874816894531,40.765285491943359,-73.975654602050781,40.755207061767578,N,819 +id3190983,1,2016-05-31 12:22:04,2016-05-31 12:34:47,1,-73.958930969238281,40.777614593505859,-73.975250244140625,40.785308837890625,N,763 +id3302083,1,2016-05-06 18:01:01,2016-05-06 18:22:52,1,-73.966361999511719,40.75799560546875,-73.985885620117187,40.719425201416016,N,1311 +id1749661,2,2016-01-18 01:50:19,2016-01-18 01:53:48,6,-73.98974609375,40.757648468017578,-73.978446960449219,40.753582000732422,N,209 +id3129444,1,2016-05-09 13:37:36,2016-05-09 14:15:00,2,-73.921440124511719,40.7352294921875,-73.992599487304688,40.736591339111328,Y,2244 +id0956600,1,2016-02-12 19:07:51,2016-02-12 19:20:57,1,-73.988594055175781,40.731117248535156,-74.001930236816406,40.728061676025391,N,786 +id0927465,2,2016-05-31 23:26:59,2016-05-31 23:46:35,1,-73.994140625,40.725055694580078,-73.9139404296875,40.765651702880859,N,1176 +id0112343,2,2016-03-17 22:51:22,2016-03-17 23:02:30,1,-73.97918701171875,40.755489349365234,-73.990531921386719,40.756458282470703,N,668 +id1869452,2,2016-03-16 09:17:20,2016-03-16 09:26:37,1,-73.987655639648438,40.765357971191406,-73.997398376464844,40.751888275146484,N,557 +id2617136,1,2016-01-13 22:33:34,2016-01-13 22:39:08,1,-73.983848571777344,40.742572784423828,-73.983932495117188,40.750499725341797,N,334 +id3627188,2,2016-06-20 20:21:57,2016-06-20 20:23:39,1,-73.9683837890625,40.765132904052734,-73.971817016601563,40.764297485351562,N,102 +id2822304,1,2016-01-31 02:34:21,2016-01-31 02:36:04,1,-74.003395080566406,40.708179473876953,-74.003868103027344,40.7076416015625,N,103 +id0928220,2,2016-03-25 21:46:04,2016-03-25 21:54:10,5,-73.978813171386719,40.761619567871094,-73.988792419433594,40.763641357421875,N,486 +id1574563,2,2016-04-02 00:23:06,2016-04-02 00:37:48,2,-74.010459899902344,40.719551086425781,-73.981849670410156,40.747360229492187,N,882 +id3635596,1,2016-04-14 20:50:10,2016-04-14 21:01:27,2,-73.999336242675781,40.744094848632813,-73.978248596191406,40.751960754394531,N,677 +id3916010,1,2016-06-26 21:26:27,2016-06-26 21:42:27,1,-73.995147705078125,40.717330932617188,-73.942878723144531,40.713993072509766,N,960 +id0891508,1,2016-04-15 08:59:16,2016-04-15 09:06:32,1,-73.998893737792969,40.754119873046875,-73.985275268554688,40.773735046386719,N,436 +id0058154,1,2016-05-11 22:58:06,2016-05-11 23:07:08,1,-73.995895385742187,40.74383544921875,-74.006538391113281,40.715671539306641,N,542 +id1604020,1,2016-05-02 02:33:10,2016-05-02 02:53:13,1,-73.991783142089844,40.735210418701172,-73.958076477050781,40.805484771728516,N,1203 +id2881204,2,2016-03-24 15:17:59,2016-03-24 15:33:23,1,-73.999931335449219,40.726776123046875,-73.977890014648437,40.751125335693359,N,924 +id0233156,1,2016-01-25 16:28:15,2016-01-25 16:28:20,1,-73.978561401367188,40.756397247314453,-73.9786376953125,40.756320953369141,N,5 +id3117066,1,2016-05-28 14:26:01,2016-05-28 14:52:12,1,-73.790000915527344,40.646697998046875,-73.864990234375,40.770492553710937,N,1571 +id0950267,1,2016-02-13 13:26:15,2016-02-13 13:52:05,1,-73.789482116699219,40.645111083984375,-73.98065185546875,40.747795104980469,N,1550 +id1005455,1,2016-02-09 11:27:53,2016-02-09 11:28:12,1,-73.794013977050781,40.656875610351563,-73.794013977050781,40.656871795654297,N,19 +id3598956,2,2016-01-19 08:53:44,2016-01-19 09:05:04,1,-73.953010559082031,40.768009185791016,-73.971412658691406,40.750789642333984,N,680 +id2400930,1,2016-04-08 09:15:12,2016-04-08 09:26:11,2,-73.985679626464844,40.757587432861328,-74.004981994628906,40.740749359130859,N,659 +id2871324,1,2016-04-25 18:22:52,2016-04-25 18:34:35,1,-73.991165161132813,40.727783203125,-73.991409301757812,40.744880676269531,N,703 +id1107368,1,2016-04-07 02:28:12,2016-04-07 02:33:16,1,-73.958198547363281,40.816333770751953,-73.942024230957031,40.822639465332031,N,304 +id1092574,2,2016-06-04 20:22:11,2016-06-04 20:31:03,1,-73.961189270019531,40.760780334472656,-73.946868896484375,40.773170471191406,N,532 +id3030527,2,2016-06-11 00:54:52,2016-06-11 01:13:53,2,-73.994178771972656,40.741130828857422,-73.972732543945313,40.793659210205078,N,1141 +id1161033,2,2016-03-18 20:25:09,2016-03-18 20:36:43,1,-73.975318908691406,40.752639770507813,-73.95819091796875,40.782020568847656,N,694 +id0417348,2,2016-03-30 08:10:23,2016-03-30 08:24:31,1,-73.963920593261719,40.756961822509766,-73.952545166015625,40.789436340332031,N,848 +id0738337,1,2016-01-06 08:32:22,2016-01-06 08:50:28,1,-73.952781677246094,40.783187866210937,-73.969841003417969,40.760665893554687,N,1086 +id3738819,2,2016-01-24 21:07:36,2016-01-24 21:14:32,1,-73.958908081054687,40.77484130859375,-73.967811584472656,40.761260986328125,N,416 +id1072685,2,2016-02-15 19:40:38,2016-02-15 19:54:23,1,-73.991386413574219,40.749458312988281,-73.967308044433594,40.760757446289062,N,825 +id0641093,2,2016-03-02 09:52:42,2016-03-02 10:05:22,1,-74.000091552734375,40.738540649414062,-74.005760192871094,40.744411468505859,N,760 +id2192788,1,2016-04-18 21:10:35,2016-04-18 21:12:24,1,-73.951942443847656,40.777450561523438,-73.9571533203125,40.770412445068359,N,109 +id2643757,1,2016-03-23 12:16:32,2016-03-23 12:23:18,1,-73.970970153808594,40.761985778808594,-73.975807189941406,40.754550933837891,N,406 +id2927812,1,2016-02-29 20:56:07,2016-02-29 21:04:13,1,-73.968330383300781,40.765213012695313,-73.971237182617188,40.751209259033203,N,486 +id3980450,2,2016-06-19 18:48:40,2016-06-19 18:56:43,1,-73.990562438964844,40.756259918212891,-73.977783203125,40.752368927001953,N,483 +id0189789,2,2016-02-08 20:32:48,2016-02-08 20:39:43,1,-73.966354370117187,40.767253875732422,-73.98095703125,40.779571533203125,N,415 +id1240339,2,2016-05-01 08:01:21,2016-05-01 08:15:34,1,-73.985816955566406,40.768169403076172,-73.980323791503906,40.743148803710938,N,853 +id1837107,2,2016-03-08 00:09:06,2016-03-08 00:19:37,1,-73.984756469726563,40.724262237548828,-73.988052368164063,40.743648529052734,N,631 +id1992409,1,2016-03-28 14:14:58,2016-03-28 14:18:33,1,-73.970741271972656,40.757667541503906,-73.962043762207031,40.767536163330078,N,215 +id0590094,2,2016-03-27 19:51:24,2016-03-27 20:13:26,1,-73.975090026855469,40.782623291015625,-73.978996276855469,40.728153228759766,N,1322 +id0938133,1,2016-03-08 08:25:54,2016-03-08 08:35:24,1,-73.963493347167969,40.777099609375,-73.982681274414063,40.770084381103516,N,570 +id0791392,2,2016-04-10 02:18:23,2016-04-10 02:23:45,1,-73.986587524414063,40.747764587402344,-73.995445251464844,40.749069213867188,N,322 +id1123018,2,2016-04-16 17:43:51,2016-04-16 17:57:27,1,-73.965736389160156,40.768291473388672,-73.969795227050781,40.799812316894531,N,816 +id3233884,1,2016-06-22 09:15:24,2016-06-22 09:26:17,1,-74.016334533691406,40.717380523681641,-74.001441955566406,40.739311218261719,N,653 +id2757911,2,2016-05-14 23:37:24,2016-05-14 23:42:12,4,-73.988418579101563,40.745880126953125,-73.990020751953125,40.756980895996094,N,288 +id2832424,1,2016-04-03 02:14:22,2016-04-03 02:19:29,1,-73.974151611328125,40.730937957763672,-73.97259521484375,40.744926452636719,N,307 +id0684603,1,2016-06-11 23:16:17,2016-06-11 23:24:07,1,-73.967315673828125,40.766918182373047,-73.978729248046875,40.746265411376953,N,470 +id3456025,1,2016-06-22 10:38:26,2016-06-22 11:13:13,1,-73.873062133789063,40.774036407470703,-73.984886169433594,40.744747161865234,N,2087 +id1517325,1,2016-04-30 04:06:12,2016-04-30 04:16:04,1,-73.958137512207031,40.721649169921875,-73.942939758300781,40.708808898925781,N,592 +id3765298,2,2016-03-19 23:18:50,2016-03-19 23:31:37,1,-73.990852355957031,40.723728179931641,-73.985618591308594,40.752979278564453,N,767 +id0244798,1,2016-02-01 19:39:24,2016-02-01 19:56:59,1,-73.988723754882813,40.733894348144531,-73.979606628417969,40.765552520751953,N,1055 +id3832946,1,2016-01-13 20:44:19,2016-01-13 20:55:10,1,-73.985298156738281,40.753574371337891,-73.962387084960938,40.767585754394531,N,651 +id1415094,2,2016-06-09 14:09:09,2016-06-09 14:18:08,1,-73.965553283691406,40.762931823730469,-73.953567504882813,40.767059326171875,N,539 +id1707711,1,2016-06-14 18:59:43,2016-06-14 19:16:17,4,-73.985298156738281,40.773361206054687,-73.94683837890625,40.801750183105469,N,994 +id1336984,2,2016-06-07 19:55:47,2016-06-07 20:09:06,1,-73.99066162109375,40.751190185546875,-73.958961486816406,40.763908386230469,N,799 +id2984180,2,2016-03-05 22:14:13,2016-03-05 22:19:43,1,-73.932838439941406,40.752029418945313,-73.950057983398438,40.747020721435547,N,330 +id1669503,2,2016-04-25 08:28:23,2016-04-25 08:46:19,1,-74.012100219726562,40.701316833496094,-73.955703735351563,40.764198303222656,N,1076 +id2411152,2,2016-06-26 18:22:56,2016-06-26 18:26:42,1,-73.956687927246094,40.766727447509766,-73.947288513183594,40.784336090087891,N,226 +id1546478,1,2016-02-29 16:45:33,2016-02-29 16:50:16,1,-73.995613098144531,40.724895477294922,-73.997596740722656,40.729694366455078,N,283 +id2131153,1,2016-03-19 21:44:31,2016-03-19 22:14:46,1,-73.872894287109375,40.774208068847656,-73.97406005859375,40.795917510986328,Y,1815 +id0855642,2,2016-03-29 18:30:49,2016-03-29 18:52:38,1,-74.004615783691406,40.707073211669922,-73.968643188476562,40.764045715332031,N,1309 +id0417419,1,2016-06-27 08:09:06,2016-06-27 08:40:02,1,-73.967353820800781,40.793025970458984,-73.987747192382813,40.741409301757813,N,1856 +id0700435,1,2016-06-17 22:56:30,2016-06-17 23:29:21,1,-73.991264343261719,40.744899749755859,-73.929977416992188,40.858657836914062,N,1971 +id3418356,1,2016-06-03 20:45:45,2016-06-03 20:57:04,1,-73.995231628417969,40.741310119628906,-73.979537963867188,40.728290557861328,N,679 +id1781146,1,2016-04-05 01:45:05,2016-04-05 02:18:41,2,-73.77825927734375,40.646770477294922,-74.006912231445313,40.735469818115234,N,2016 +id0424119,2,2016-01-15 12:41:41,2016-01-15 13:13:57,1,-73.790031433105469,40.643661499023438,-73.954429626464844,40.672500610351562,N,1936 +id1989410,2,2016-03-06 22:21:14,2016-03-06 22:30:02,1,-73.982620239257813,40.730613708496094,-73.976264953613281,40.751960754394531,N,528 +id3461100,2,2016-06-20 23:10:50,2016-06-20 23:30:27,5,-73.982070922851562,40.776325225830078,-73.998710632324219,40.760902404785156,N,1177 +id0376913,2,2016-01-08 08:24:55,2016-01-08 08:33:00,1,-74.000946044921875,40.748306274414063,-73.988349914550781,40.748100280761719,N,485 +id3134726,2,2016-05-21 23:03:36,2016-05-21 23:19:28,3,-73.975166320800781,40.735240936279297,-73.946571350097656,40.779090881347656,N,952 +id1657216,2,2016-05-01 00:18:56,2016-05-01 00:44:03,3,-73.994087219238281,40.751171112060547,-73.948539733886719,40.834308624267578,N,1507 +id1388693,2,2016-06-16 08:14:33,2016-06-16 08:21:02,2,-74.017730712890625,40.706130981445313,-74.00555419921875,40.706756591796875,N,389 +id3682495,2,2016-04-27 16:17:58,2016-04-27 16:30:01,1,-73.989845275878906,40.719207763671875,-74.000831604003906,40.739971160888672,N,723 +id2940302,2,2016-04-09 19:44:41,2016-04-09 19:58:18,3,-73.981201171875,40.7412109375,-73.98065185546875,40.770881652832031,N,817 +id2608743,1,2016-05-18 13:57:43,2016-05-18 14:05:05,1,-73.982231140136719,40.769813537597656,-73.9705810546875,40.785888671875,N,442 +id3793892,2,2016-04-01 20:30:06,2016-04-01 20:38:25,1,-73.965858459472656,40.762798309326172,-73.9600830078125,40.758110046386719,N,499 +id1505835,1,2016-02-19 20:55:05,2016-02-19 21:07:23,1,-73.957656860351563,40.77362060546875,-73.965164184570313,40.805953979492188,N,738 +id2024207,2,2016-03-16 00:13:07,2016-03-16 00:47:12,5,-73.971717834472656,40.757678985595703,-74.003669738769531,40.61614990234375,N,2045 +id0787451,2,2016-05-15 13:49:35,2016-05-15 14:12:56,1,-73.984672546386719,40.751220703125,-73.996688842773438,40.717128753662109,N,1401 +id0927940,2,2016-06-26 00:11:41,2016-06-26 00:23:22,2,-73.984016418457031,40.762939453125,-73.991104125976563,40.755802154541016,N,701 +id0757944,2,2016-05-27 09:59:16,2016-05-27 10:15:55,1,-73.993858337402344,40.751708984375,-73.981781005859375,40.743751525878906,N,999 +id2233662,2,2016-05-04 14:30:05,2016-05-04 14:35:53,2,-73.999336242675781,40.754360198974609,-74.005508422851563,40.738971710205078,N,348 +id1519687,1,2016-04-23 16:47:21,2016-04-23 17:02:15,1,-73.977333068847656,40.779518127441406,-73.954345703125,40.764076232910156,N,894 +id2524669,2,2016-01-30 11:57:58,2016-01-30 12:19:05,2,-73.955718994140625,40.767921447753906,-73.999786376953125,40.745948791503906,N,1267 +id3611372,2,2016-03-19 06:30:12,2016-03-19 06:35:09,1,-74.005073547363281,40.718910217285156,-74.000862121582031,40.742130279541016,N,297 +id0242027,2,2016-01-08 14:16:42,2016-01-08 14:24:39,1,-73.9718017578125,40.761074066162109,-73.967193603515625,40.769973754882813,N,477 +id3865480,2,2016-04-27 14:33:34,2016-04-27 14:34:24,1,-73.96600341796875,40.762115478515625,-73.963722229003906,40.765651702880859,N,50 +id0524636,1,2016-05-28 22:31:27,2016-05-28 22:41:42,1,-73.988456726074219,40.722988128662109,-73.958847045898438,40.716758728027344,N,615 +id2203645,1,2016-05-12 06:52:32,2016-05-12 06:55:07,1,-74.003303527832031,40.726936340332031,-74.009422302246094,40.715099334716797,N,155 +id0517541,2,2016-06-30 10:13:47,2016-06-30 10:24:02,1,-73.986587524414063,40.742717742919922,-73.9879150390625,40.750751495361328,N,615 +id3760958,1,2016-05-14 02:55:25,2016-05-14 02:59:41,3,-73.995552062988281,40.744186401367188,-74.007530212402344,40.740936279296875,N,256 +id1346462,2,2016-05-14 19:58:10,2016-05-14 20:13:48,1,-73.991508483886719,40.744808197021484,-74.015007019042969,40.718116760253906,N,938 +id2305111,1,2016-01-10 10:43:14,2016-01-10 10:53:59,1,-73.985298156738281,40.768634796142578,-74.008155822753906,40.748767852783203,N,645 +id2624766,1,2016-01-21 01:16:39,2016-01-21 01:32:19,1,-74.006439208984375,40.7335205078125,-73.961318969726563,40.711418151855469,N,940 +id3471707,1,2016-01-06 18:43:38,2016-01-06 18:53:42,2,-73.957839965820312,40.774627685546875,-73.970001220703125,40.764026641845703,N,604 +id0292834,1,2016-05-04 20:31:07,2016-05-04 20:36:01,1,-73.987899780273437,40.755714416503906,-73.996711730957031,40.742733001708984,N,294 +id2818129,1,2016-02-24 19:28:22,2016-02-24 19:32:32,2,-73.972877502441406,40.792697906494141,-73.977668762207031,40.784072875976563,N,250 +id3673219,1,2016-01-03 01:54:40,2016-01-03 02:12:10,1,-73.989128112792969,40.718673706054687,-73.998039245605469,40.764049530029297,N,1050 +id1114720,1,2016-03-12 17:26:05,2016-03-12 17:58:20,2,-74.004074096679688,40.742473602294922,-73.97705078125,40.672279357910156,N,1935 +id2039702,1,2016-05-11 22:38:26,2016-05-11 22:47:50,1,-73.953025817871094,40.771945953369141,-73.9835205078125,40.775283813476563,N,564 +id1019488,2,2016-01-01 00:08:07,2016-01-01 00:22:14,1,-73.976119995117188,40.749080657958984,-74.0074462890625,40.726451873779297,N,847 +id1096321,2,2016-01-14 18:04:13,2016-01-14 18:16:34,1,-73.982330322265625,40.782600402832031,-73.9720458984375,40.765419006347656,N,741 +id1497240,1,2016-01-30 02:03:06,2016-01-30 02:08:52,1,-73.983421325683594,40.750255584716797,-73.992843627929687,40.732391357421875,N,346 +id0257331,2,2016-02-12 18:56:40,2016-02-12 19:12:38,2,-73.987678527832031,40.775306701660156,-73.94659423828125,40.800514221191406,N,958 +id2479942,2,2016-06-15 00:11:52,2016-06-15 00:23:10,1,-73.987998962402344,40.7601318359375,-73.966583251953125,40.753131866455078,N,678 +id1663415,2,2016-06-04 19:53:20,2016-06-04 19:57:36,5,-73.979751586914063,40.784370422363281,-73.98223876953125,40.775440216064453,N,256 +id2716548,2,2016-05-20 12:47:46,2016-05-20 13:17:35,1,-73.96234130859375,40.779140472412109,-73.998908996582031,40.745491027832031,N,1789 +id2316484,1,2016-02-03 09:29:40,2016-02-03 09:44:32,1,-73.97821044921875,40.749153137207031,-73.965850830078125,40.756084442138672,N,892 +id2752348,2,2016-04-22 22:58:33,2016-04-22 23:18:29,1,-73.975593566894531,40.760978698730469,-73.99310302734375,40.722801208496094,N,1196 +id3354426,2,2016-05-05 15:18:41,2016-05-06 15:11:07,1,-73.989036560058594,40.773513793945313,-73.980682373046875,40.781520843505859,N,85946 +id0523948,2,2016-01-26 18:47:18,2016-01-26 19:08:09,1,-73.959381103515625,40.783134460449219,-73.964149475097656,40.764671325683594,N,1251 +id2846075,1,2016-04-08 16:19:01,2016-04-08 16:28:27,1,-74.010032653808594,40.720268249511719,-74.007667541503906,40.703437805175781,N,566 +id3218469,1,2016-05-01 12:57:45,2016-05-01 13:07:21,1,-73.972419738769531,40.749492645263672,-73.991989135742187,40.755844116210938,N,576 +id2324397,1,2016-05-25 00:31:57,2016-05-25 00:50:06,1,-74.00537109375,40.728721618652344,-73.940521240234375,40.724815368652344,N,1089 +id0214205,1,2016-01-05 09:34:09,2016-01-05 09:42:40,1,-73.982337951660156,40.731746673583984,-73.988426208496094,40.741058349609375,N,511 +id3307890,2,2016-04-03 17:00:45,2016-04-03 17:18:08,1,-73.975357055664063,40.751377105712891,-73.993133544921875,40.751991271972656,N,1043 +id0358216,2,2016-03-11 20:34:58,2016-03-11 20:44:44,1,-73.992172241210937,40.716148376464844,-73.990287780761719,40.728958129882812,N,586 +id1607971,1,2016-05-26 00:30:43,2016-05-26 00:35:01,1,-73.996505737304688,40.722156524658203,-74.000740051269531,40.732154846191406,N,258 +id1783659,1,2016-01-18 11:55:49,2016-01-18 12:00:21,1,-73.98321533203125,40.747573852539063,-73.975883483886719,40.749607086181641,N,272 +id0533684,2,2016-04-07 21:15:44,2016-04-07 21:35:25,1,-73.969352722167969,40.749279022216797,-73.990257263183594,40.76007080078125,N,1181 +id3857765,1,2016-03-25 22:54:29,2016-03-25 23:17:02,2,-73.870780944824219,40.773719787597656,-73.969146728515625,40.766712188720703,N,1353 +id2181301,2,2016-03-18 20:35:11,2016-03-18 20:36:53,1,-73.956703186035156,40.777912139892578,-73.961227416992188,40.774238586425781,N,102 +id0211270,1,2016-04-29 19:56:00,2016-04-29 20:02:57,2,-73.978973388671875,40.785301208496094,-73.961021423339844,40.780082702636719,N,417 +id2204931,2,2016-06-09 13:42:42,2016-06-09 14:33:44,1,-74.007476806640625,40.705150604248047,-73.980300903320313,40.750720977783203,N,3062 +id3333055,1,2016-03-20 12:13:22,2016-03-20 12:45:14,2,-73.989234924316406,40.742084503173828,-74.177352905273438,40.695255279541016,N,1912 +id2810286,1,2016-01-10 13:50:07,2016-01-10 13:56:16,1,-73.954551696777344,40.778083801269531,-73.94671630859375,40.772266387939453,N,369 +id3756730,1,2016-04-10 01:30:29,2016-04-10 01:37:58,1,-74.00433349609375,40.742206573486328,-74.001495361328125,40.739429473876953,N,449 +id0057676,2,2016-02-18 22:38:26,2016-02-18 23:00:06,6,-73.991508483886719,40.735031127929688,-73.944992065429687,40.807571411132813,N,1300 +id3747029,2,2016-05-24 07:57:12,2016-05-24 08:05:18,2,-73.967720031738281,40.765598297119141,-73.962310791015625,40.778160095214844,N,486 +id0065165,1,2016-05-01 01:09:46,2016-05-01 01:26:10,1,-73.987686157226562,40.721282958984375,-73.956634521484375,40.770748138427734,N,984 +id3659520,1,2016-01-11 22:03:41,2016-01-11 22:10:40,2,-73.999542236328125,40.732795715332031,-74.007591247558594,40.740898132324219,N,419 +id0299525,2,2016-02-01 15:47:34,2016-02-01 15:56:54,1,-73.999427795410156,40.743858337402344,-73.983985900878906,40.746803283691406,N,560 +id1349085,2,2016-01-01 00:33:52,2016-01-01 00:50:24,1,-74.007980346679688,40.740207672119141,-73.988922119140625,40.765083312988281,N,992 +id3148414,1,2016-01-17 16:19:23,2016-01-17 16:28:45,1,-73.984596252441406,40.696445465087891,-73.9515380859375,40.713306427001953,N,562 +id1896877,2,2016-06-12 21:42:27,2016-06-12 21:49:28,2,-73.986602783203125,40.777099609375,-73.970077514648438,40.784038543701172,N,421 +id2622054,2,2016-04-03 12:29:56,2016-04-03 12:38:16,1,-73.958602905273437,40.781009674072266,-73.950927734375,40.770858764648438,N,500 +id0036761,2,2016-04-16 23:24:38,2016-04-16 23:33:49,1,-73.983650207519531,40.721488952636719,-74.006790161132813,40.707839965820312,N,551 +id1179102,1,2016-01-12 18:45:05,2016-01-12 19:09:56,1,-73.975196838378906,40.755733489990234,-73.969123840332031,40.798236846923828,N,1491 +id2270687,1,2016-04-02 07:50:05,2016-04-02 07:54:57,1,-73.9967041015625,40.744503021240234,-73.987861633300781,40.749656677246094,N,292 +id2811776,1,2016-04-13 13:06:19,2016-04-13 13:50:21,1,-73.870941162109375,40.773677825927734,-73.918388366699219,40.880813598632813,N,2642 +id3671940,1,2016-03-10 23:42:44,2016-03-10 23:52:37,4,-73.982666015625,40.742580413818359,-73.993362426757813,40.75640869140625,N,593 +id0305794,1,2016-05-07 23:40:39,2016-05-08 00:20:30,1,-73.990676879882813,40.761184692382813,-73.991928100585938,40.714958190917969,N,2391 +id1506441,2,2016-03-05 18:44:34,2016-03-05 18:57:04,1,-73.991844177246094,40.750026702880859,-73.975471496582031,40.759540557861328,N,750 +id0405796,2,2016-02-27 10:06:15,2016-02-27 10:13:22,5,-73.978431701660156,40.778141021728516,-73.990470886230469,40.775379180908203,N,427 +id1116868,1,2016-01-07 17:17:30,2016-01-07 17:34:49,1,-73.954963684082031,40.773525238037109,-73.980766296386719,40.770877838134766,N,1039 +id1433478,2,2016-03-15 00:25:34,2016-03-15 00:53:44,1,-73.985908508300781,40.767906188964844,-73.924186706542969,40.701683044433594,N,1690 +id1436459,2,2016-04-12 16:56:47,2016-04-12 17:10:31,1,-73.98095703125,40.768043518066406,-73.963310241699219,40.805221557617188,N,824 +id0340375,2,2016-06-17 03:05:03,2016-06-17 03:12:45,4,-73.969963073730469,40.794788360595703,-73.949211120605469,40.785030364990234,N,462 +id1285666,2,2016-05-07 15:38:41,2016-05-07 15:45:56,1,-73.986030578613281,40.745212554931641,-73.991622924804687,40.750049591064453,N,435 +id1608679,2,2016-03-16 18:42:34,2016-03-16 18:48:59,2,-73.958053588867188,40.811000823974609,-73.966041564941406,40.790058135986328,N,385 +id0782261,1,2016-01-21 18:32:42,2016-01-21 18:41:06,2,-74.009078979492188,40.715599060058594,-74.001914978027344,40.730369567871094,N,504 +id1009227,2,2016-02-26 12:35:14,2016-02-26 13:02:40,1,-74.008140563964844,40.714820861816406,-73.985267639160156,40.778480529785156,N,1646 +id1856957,2,2016-04-23 20:39:43,2016-04-23 20:55:20,1,-74.003814697265625,40.737541198730469,-73.996986389160156,40.720291137695313,N,937 +id1706818,1,2016-01-18 09:14:01,2016-01-18 09:16:58,1,-73.967872619628906,40.762664794921875,-73.974327087402344,40.758594512939453,N,177 +id1929963,2,2016-06-07 08:18:29,2016-06-07 08:28:56,1,-73.971282958984375,40.747058868408203,-73.96099853515625,40.772228240966797,N,627 +id0693017,2,2016-01-11 20:18:08,2016-01-11 20:31:58,5,-73.966423034667969,40.767826080322266,-73.991157531738281,40.755710601806641,N,830 +id1565972,1,2016-02-04 10:52:40,2016-02-04 11:15:28,1,-73.979103088378906,40.736114501953125,-73.960838317871094,40.764816284179688,N,1368 +id1523375,2,2016-04-13 16:40:50,2016-04-13 16:48:35,2,-73.973251342773438,40.763816833496094,-73.984634399414062,40.748233795166016,N,465 +id3226519,1,2016-06-01 21:25:28,2016-06-01 21:37:35,1,-73.942070007324219,40.822952270507812,-73.96746826171875,40.787944793701172,N,727 +id2814993,2,2016-02-16 19:21:53,2016-02-16 19:25:20,1,-73.988792419433594,40.756988525390625,-73.990333557128906,40.75115966796875,N,207 +id3924937,1,2016-05-09 11:36:37,2016-05-09 11:42:49,1,-73.962318420410156,40.773021697998047,-73.953010559082031,40.783435821533203,N,372 +id0627207,1,2016-01-04 07:13:27,2016-01-04 07:18:18,1,-73.9803466796875,40.748550415039062,-73.984413146972656,40.755332946777344,N,291 +id2068363,2,2016-03-26 02:29:54,2016-03-26 02:33:52,1,-73.978790283203125,40.744838714599609,-73.979042053222656,40.740650177001953,N,238 +id2497492,1,2016-06-19 14:50:20,2016-06-19 15:06:46,1,-73.870994567871094,40.773807525634766,-73.824501037597656,40.752857208251953,N,986 +id3429296,1,2016-06-22 21:54:23,2016-06-22 21:57:57,1,-73.941017150878906,40.792697906494141,-73.952651977539063,40.779670715332031,N,214 +id0318549,1,2016-04-10 20:17:39,2016-04-10 20:20:38,1,-73.963714599609375,40.757530212402344,-73.9622802734375,40.766319274902344,N,179 +id3221360,2,2016-02-15 16:50:12,2016-02-15 17:04:17,1,-73.995536804199219,40.739376068115234,-73.992149353027344,40.768894195556641,N,845 +id2975538,1,2016-06-30 07:30:02,2016-06-30 07:31:56,1,-73.977508544921875,40.755218505859375,-73.973091125488281,40.761497497558594,N,114 +id2686746,2,2016-05-28 17:26:34,2016-05-28 17:27:28,1,-73.982398986816406,40.748531341552734,-73.979179382324219,40.752399444580078,N,54 +id3017241,1,2016-05-28 13:53:38,2016-05-28 14:05:20,2,-73.978012084960938,40.748672485351563,-73.994468688964844,40.722869873046875,N,702 +id1826910,2,2016-01-03 23:10:10,2016-01-03 23:16:31,2,-73.974113464355469,40.75067138671875,-73.952873229980469,40.778560638427734,N,381 +id1571607,1,2016-02-17 11:08:00,2016-02-17 11:14:21,1,-73.957344055175781,40.774322509765625,-73.967559814453125,40.768836975097656,N,381 +id1174544,2,2016-06-13 22:03:28,2016-06-13 22:13:55,1,-73.976028442382813,40.748500823974609,-73.982200622558594,40.767299652099609,N,627 +id2787016,2,2016-03-03 02:08:22,2016-03-03 02:16:19,1,-73.96990966796875,40.797412872314453,-73.972389221191406,40.791427612304687,N,477 +id3724519,1,2016-03-22 07:30:31,2016-03-22 07:40:19,1,-74.00042724609375,40.737457275390625,-73.998336791992188,40.751708984375,N,588 +id0116819,2,2016-02-12 14:58:04,2016-02-12 15:12:52,5,-74.001632690429687,40.745750427246094,-74.001060485839844,40.724170684814453,N,888 +id0645633,1,2016-02-14 10:01:51,2016-02-14 10:25:57,1,-73.994064331054688,40.751346588134766,-73.979042053222656,40.678600311279297,N,1446 +id1871779,2,2016-04-22 10:06:06,2016-04-22 11:08:27,6,-73.776756286621094,40.645130157470703,-73.968772888183594,40.764350891113281,N,3741 +id2784051,2,2016-02-19 19:54:30,2016-02-19 20:01:29,1,-73.988388061523438,40.739341735839844,-73.998931884765625,40.738430023193359,N,419 +id0880983,2,2016-03-18 19:22:47,2016-03-18 19:31:47,2,-74.007011413574219,40.732982635498047,-73.998313903808594,40.724853515625,N,540 +id2737197,2,2016-01-15 13:33:54,2016-01-15 13:44:55,2,-73.975288391113281,40.777320861816406,-73.9715576171875,40.763431549072266,N,661 +id0328778,1,2016-02-27 12:24:39,2016-02-27 12:30:35,1,-73.946998596191406,40.771991729736328,-73.960411071777344,40.777359008789063,N,356 +id3640873,1,2016-02-05 09:53:45,2016-02-05 10:23:21,1,-73.955039978027344,40.769126892089844,-73.97991943359375,40.765796661376953,N,1776 +id0757931,2,2016-05-12 16:27:03,2016-05-12 16:44:46,1,-73.982635498046875,40.764438629150391,-73.980018615722656,40.754520416259766,N,1063 +id3767802,1,2016-01-04 15:55:36,2016-01-04 15:57:28,1,-73.974021911621094,40.747241973876953,-73.97686767578125,40.743400573730469,N,112 +id3526251,2,2016-03-18 23:18:52,2016-03-18 23:39:11,1,-73.991783142089844,40.768009185791016,-74.001907348632812,40.737678527832031,N,1219 +id1669646,2,2016-02-05 17:37:34,2016-02-05 17:43:17,1,-73.9810791015625,40.77423095703125,-73.967391967773438,40.769145965576172,N,343 +id2797438,2,2016-06-16 21:28:33,2016-06-16 21:36:23,1,-73.781974792480469,40.644607543945313,-73.796249389648438,40.668239593505859,N,470 +id2159063,1,2016-01-08 00:21:02,2016-01-08 00:37:28,1,-73.981559753417969,40.758262634277344,-73.930717468261719,40.866767883300781,N,986 +id0174581,2,2016-02-25 07:16:42,2016-02-25 07:33:32,6,-73.976287841796875,40.775848388671875,-74.009941101074219,40.720100402832031,N,1010 +id2760565,2,2016-06-25 20:42:49,2016-06-25 20:47:10,2,-73.988090515136719,40.749919891357422,-73.980796813964844,40.764194488525391,N,261 +id3646630,2,2016-03-03 20:06:32,2016-03-03 20:16:30,1,-73.99774169921875,40.746360778808594,-73.992698669433594,40.741344451904297,N,598 +id1493143,1,2016-05-26 00:25:46,2016-05-26 00:53:41,1,-73.98858642578125,40.718551635742188,-73.874313354492187,40.719539642333984,N,1675 +id2375712,2,2016-03-06 14:23:54,2016-03-06 14:36:25,2,-73.997947692871094,40.741035461425781,-74.017463684082031,40.706546783447266,N,751 +id1648904,1,2016-04-26 07:23:34,2016-04-26 07:31:48,1,-74.005294799804688,40.720973968505859,-73.991256713867188,40.730216979980469,N,494 +id3601654,2,2016-06-16 12:17:48,2016-06-16 12:33:13,1,-73.968185424804688,40.763893127441406,-73.956878662109375,40.766517639160156,N,925 +id2992780,1,2016-03-14 21:57:51,2016-03-14 22:02:27,2,-73.954391479492188,40.764198303222656,-73.949409484863281,40.772670745849609,N,276 +id3543874,1,2016-06-23 21:21:59,2016-06-23 21:43:14,3,-73.997383117675781,40.718559265136719,-73.989189147949219,40.757331848144531,N,1275 +id1150292,2,2016-03-25 02:09:54,2016-03-25 02:14:45,1,-73.988090515136719,40.73468017578125,-73.986763000488281,40.747001647949219,N,291 +id3085573,1,2016-06-03 14:43:54,2016-06-03 15:17:00,1,-73.993980407714844,40.749668121337891,-74.032699584960937,40.623817443847656,Y,1986 +id1626347,1,2016-06-14 15:16:18,2016-06-14 15:23:54,3,-73.961112976074219,40.760715484619141,-73.946968078613281,40.780208587646484,N,456 +id0934209,1,2016-06-13 19:00:42,2016-06-13 19:11:39,1,-73.994110107421875,40.751049041748047,-73.9833984375,40.762775421142578,N,657 +id3890505,1,2016-04-29 21:26:56,2016-04-29 21:31:54,2,-73.985183715820313,40.758621215820312,-73.975830078125,40.763820648193359,N,298 +id0856844,1,2016-01-13 09:09:20,2016-01-13 09:22:23,1,-73.973991394042969,40.762622833251953,-73.991256713867188,40.750015258789063,N,783 +id3509026,1,2016-04-07 21:34:46,2016-04-07 22:09:48,1,-73.996932983398437,40.737033843994141,-73.923690795898437,40.865550994873047,N,2102 +id1441068,1,2016-04-08 15:04:30,2016-04-08 15:27:22,2,-73.987693786621094,40.695880889892578,-73.94647216796875,40.727165222167969,N,1372 +id0794834,1,2016-01-15 20:33:37,2016-01-15 20:46:49,2,-73.961631774902344,40.765155792236328,-73.985305786132812,40.73876953125,N,792 +id3225828,2,2016-02-07 23:36:53,2016-02-07 23:42:17,2,-73.989799499511719,40.757228851318359,-73.991477966308594,40.767959594726562,N,324 +id3822933,1,2016-06-06 19:20:49,2016-06-06 19:25:29,1,-74.005317687988281,40.721603393554688,-74.007179260253906,40.726951599121094,N,280 +id3035771,2,2016-01-17 01:58:50,2016-01-17 02:05:04,1,-73.958503723144531,40.67987060546875,-73.953857421875,40.690399169921875,N,374 +id2583955,2,2016-03-22 17:19:31,2016-03-22 17:36:54,1,-73.981544494628906,40.744644165039062,-73.963569641113281,40.765499114990234,N,1043 +id1010369,2,2016-06-27 16:18:52,2016-06-27 16:29:47,1,-73.994926452636719,40.744838714599609,-74.007911682128906,40.724586486816406,N,655 +id2075181,1,2016-02-10 08:07:19,2016-02-10 08:16:01,1,-73.965972900390625,40.753166198730469,-73.985404968261719,40.755409240722656,N,522 +id3079450,2,2016-01-17 03:29:05,2016-01-17 03:31:29,5,-73.982147216796875,40.777759552001953,-73.980979919433594,40.774608612060547,N,144 +id1467488,2,2016-03-26 12:25:03,2016-03-26 12:38:22,1,-73.989837646484375,40.767261505126953,-74.007614135742187,40.740898132324219,N,799 +id3285103,2,2016-01-09 12:09:07,2016-01-09 12:23:41,2,-73.989883422851562,40.756961822509766,-74.00018310546875,40.726631164550781,N,874 +id0004330,2,2016-01-21 20:12:44,2016-01-21 20:35:25,2,-73.874740600585938,40.773937225341797,-73.957046508789063,40.780593872070312,N,1361 +id0144889,2,2016-06-19 18:13:08,2016-06-19 18:16:20,1,-74.002212524414063,40.740081787109375,-73.99639892578125,40.7481689453125,N,192 +id2822231,2,2016-01-07 14:47:23,2016-01-07 15:00:18,1,-73.974937438964844,40.750255584716797,-73.977592468261719,40.766433715820312,N,775 +id1135434,2,2016-01-21 11:34:25,2016-01-21 11:45:55,1,-73.972969055175781,40.744369506835938,-73.9761962890625,40.758949279785156,N,690 +id2320648,2,2016-02-14 12:19:59,2016-02-14 12:23:58,1,-73.984504699707031,40.696090698242188,-73.996528625488281,40.716480255126953,N,239 +id3306457,2,2016-02-05 18:24:58,2016-02-05 18:37:38,1,-73.955032348632813,40.765056610107422,-73.981796264648437,40.770351409912109,N,760 +id3048100,2,2016-04-05 10:51:50,2016-04-05 11:06:06,5,-74.004379272460937,40.757911682128906,-73.991348266601563,40.750457763671875,N,856 +id3310875,1,2016-03-15 14:41:54,2016-03-15 15:02:48,1,-73.978988647460938,40.752822875976563,-73.95611572265625,40.784503936767578,Y,1254 +id2036925,1,2016-02-23 19:53:33,2016-02-23 20:24:46,1,-74.000328063964844,40.717548370361328,-73.919197082519531,40.774948120117188,N,1873 +id2593982,1,2016-06-04 01:29:08,2016-06-04 01:58:16,1,-73.782051086425781,40.644351959228516,-73.850128173828125,40.876434326171875,N,1748 +id2031921,1,2016-01-26 23:46:58,2016-01-26 23:55:01,1,-73.9954833984375,40.759418487548828,-73.981269836425781,40.752277374267578,N,483 +id0188257,1,2016-03-30 15:38:15,2016-03-30 15:55:47,1,-73.978828430175781,40.787704467773437,-73.942405700683594,40.841602325439453,N,1052 +id1340073,2,2016-03-14 13:35:14,2016-03-14 13:43:45,1,-73.978355407714844,40.750656127929687,-73.983367919921875,40.734516143798828,N,511 +id0821946,1,2016-03-18 02:49:15,2016-03-18 03:13:43,1,-73.980125427246094,40.765304565429688,-73.800186157226562,40.708366394042969,N,1468 +id0563373,2,2016-05-01 09:08:33,2016-05-01 09:33:50,6,-73.956390380859375,40.787109375,-73.989021301269531,40.758541107177734,N,1517 +id2044438,1,2016-01-13 07:17:59,2016-01-13 07:29:17,1,-73.992012023925781,40.743385314941406,-73.974937438964844,40.757621765136719,N,678 +id1316492,2,2016-06-08 14:37:27,2016-06-08 15:09:37,3,-73.953742980957031,40.790821075439453,-73.997329711914062,40.747341156005859,N,1930 +id2014494,2,2016-05-01 19:15:28,2016-05-01 19:20:57,1,-73.982933044433594,40.765449523925781,-73.981521606445313,40.777618408203125,N,329 +id1910296,2,2016-03-02 07:33:12,2016-03-02 07:50:28,1,-73.982170104980469,40.774631500244141,-73.946571350097656,40.772388458251953,N,1036 +id2542142,2,2016-06-17 10:17:45,2016-06-17 10:26:30,1,-73.998847961425781,40.734901428222656,-74.002456665039063,40.747001647949219,N,525 +id0456794,2,2016-04-29 13:33:55,2016-04-29 13:41:20,2,-73.960662841796875,40.775409698486328,-73.966796875,40.769760131835938,N,445 +id3238908,2,2016-02-23 16:51:55,2016-02-23 17:46:11,5,-73.789871215820313,40.646839141845703,-73.980010986328125,40.677230834960938,N,3256 +id2783672,1,2016-06-20 11:55:14,2016-06-20 12:04:51,1,-73.968345642089844,40.760631561279297,-73.963233947753906,40.763450622558594,N,577 +id1724711,1,2016-06-19 19:13:13,2016-06-19 19:34:16,1,-74.011116027832031,40.719192504882813,-73.973564147949219,40.794643402099609,N,1263 +id3326150,2,2016-01-11 05:59:40,2016-01-11 06:09:48,1,-73.987129211425781,40.739418029785156,-73.946067810058594,40.789543151855469,N,608 +id0943186,2,2016-06-10 01:30:58,2016-06-10 01:40:57,1,-73.988227844238281,40.720069885253906,-74.007087707519531,40.705490112304688,N,599 +id3498088,1,2016-06-21 07:56:45,2016-06-21 08:05:17,1,-73.950546264648438,40.780715942382813,-73.967941284179687,40.763725280761719,N,512 +id0585239,1,2016-04-29 00:18:20,2016-04-29 00:26:16,1,-73.983894348144531,40.763187408447266,-73.995712280273437,40.759132385253906,N,476 +id0855521,1,2016-01-11 17:01:15,2016-01-11 17:42:18,1,-73.957595825195313,40.769901275634766,-74.177452087402344,40.690593719482422,N,2463 +id3138403,2,2016-04-13 21:33:37,2016-04-13 22:09:36,4,-73.966758728027344,40.764186859130859,-73.936119079589844,40.697376251220703,N,2159 +id0436551,2,2016-04-03 23:20:42,2016-04-03 23:26:05,1,-73.993331909179687,40.741539001464844,-74.003021240234375,40.752189636230469,N,323 +id2512544,2,2016-01-20 14:41:17,2016-01-20 14:50:26,2,-73.991615295410156,40.75006103515625,-73.981231689453125,40.759109497070313,N,549 +id2119879,2,2016-04-19 12:20:23,2016-04-19 12:42:51,1,-73.975814819335938,40.751235961914063,-73.987129211425781,40.770626068115234,N,1348 +id2877078,2,2016-04-23 10:05:55,2016-04-23 10:26:05,1,-73.788169860839844,40.642002105712891,-73.899070739746094,40.67694091796875,N,1210 +id1667432,1,2016-02-11 17:41:35,2016-02-11 18:37:52,4,-73.789825439453125,40.646831512451172,-73.978469848632812,40.762176513671875,N,3377 +id2300586,2,2016-01-16 15:01:07,2016-01-16 15:04:27,5,-73.983299255371094,40.766792297363281,-73.97991943359375,40.761566162109375,N,200 +id2215940,2,2016-01-09 19:24:40,2016-01-09 19:48:05,1,-73.981697082519531,40.773445129394531,-74.009147644042969,40.726192474365234,N,1405 +id1072764,2,2016-03-23 21:11:11,2016-03-23 21:20:20,1,-73.990646362304687,40.75091552734375,-73.989028930664062,40.736312866210937,N,549 +id3213573,2,2016-05-04 21:03:08,2016-05-04 21:07:06,2,-73.991950988769531,40.752449035644531,-73.9869384765625,40.760761260986328,N,238 +id3644024,1,2016-03-08 22:37:10,2016-03-08 22:46:08,1,-73.98199462890625,40.765163421630859,-73.991783142089844,40.759471893310547,N,538 +id1190200,1,2016-01-22 18:12:51,2016-01-22 18:15:43,1,-73.96441650390625,40.760501861572266,-73.963874816894531,40.757106781005859,N,172 +id3766040,1,2016-03-04 20:40:38,2016-03-04 21:09:41,1,-73.985763549804688,40.741024017333984,-73.967124938964844,40.713897705078125,N,1743 +id0488227,2,2016-02-19 16:01:43,2016-02-19 16:10:06,1,-73.983718872070313,40.760108947753906,-73.983596801757812,40.749820709228516,N,503 +id3384809,2,2016-01-30 01:14:32,2016-01-30 01:20:40,1,-73.983253479003906,40.744731903076172,-73.983848571777344,40.728511810302734,N,368 +id2087016,2,2016-04-30 19:56:16,2016-04-30 20:08:03,1,-73.961044311523438,40.760883331298828,-73.980796813964844,40.7808837890625,N,707 +id0675009,2,2016-06-17 17:28:31,2016-06-17 17:47:16,1,-73.950538635253906,40.779552459716797,-73.982872009277344,40.727005004882812,N,1125 +id0342727,1,2016-06-30 13:47:14,2016-06-30 14:09:58,1,-73.991287231445313,40.774814605712891,-73.9605712890625,40.771549224853516,N,1364 +id3180395,2,2016-04-16 23:09:56,2016-04-16 23:13:39,1,-73.980377197265625,40.742546081542969,-73.973014831542969,40.748615264892578,N,223 +id2218135,2,2016-04-25 14:50:04,2016-04-25 15:38:58,1,-73.993377685546875,40.749908447265625,-73.845108032226562,40.896427154541016,N,2934 +id0080273,2,2016-02-19 17:31:56,2016-02-19 17:42:10,1,-73.991294860839844,40.739402770996094,-73.997627258300781,40.7225341796875,N,614 +id1967617,1,2016-01-13 20:03:30,2016-01-13 20:14:11,1,-74.004043579101563,40.725490570068359,-74.016960144042969,40.706172943115234,N,641 +id0908408,1,2016-04-21 14:21:34,2016-04-21 14:38:17,1,-73.969673156738281,40.763271331787109,-73.971160888671875,40.752590179443359,N,1003 +id2548301,1,2016-05-01 10:56:28,2016-05-01 11:15:07,2,-73.975669860839844,40.786808013916016,-73.961563110351562,40.763641357421875,N,1119 +id3617503,2,2016-01-21 16:47:41,2016-01-21 17:13:50,6,-73.988960266113281,40.754734039306641,-73.99169921875,40.726665496826172,N,1569 +id1515308,1,2016-03-01 06:14:14,2016-03-01 07:07:41,2,-73.776741027832031,40.645412445068359,-73.987129211425781,40.761058807373047,N,3207 +id1160853,1,2016-06-02 17:09:20,2016-06-02 17:16:55,2,-73.981414794921875,40.76361083984375,-73.984260559082031,40.760116577148438,N,455 +id3238581,2,2016-01-03 06:48:26,2016-01-03 06:50:11,1,-73.955741882324219,40.779296875,-73.955543518066406,40.773475646972656,N,105 +id3997354,2,2016-02-06 01:17:42,2016-02-06 01:18:24,1,-73.983718872070313,40.723068237304688,-73.984977722167969,40.724098205566406,N,42 +id3490822,2,2016-05-14 04:41:09,2016-05-14 04:44:37,1,-73.971389770507812,40.757923126220703,-73.97430419921875,40.744060516357422,N,208 +id2867732,1,2016-01-09 22:22:46,2016-01-09 22:31:27,3,-73.985305786132812,40.761066436767578,-73.991065979003906,40.750717163085938,N,521 +id3106139,2,2016-01-27 21:52:47,2016-01-27 21:55:26,1,-73.975990295410156,40.786338806152344,-73.968292236328125,40.799049377441406,N,159 +id1964095,2,2016-05-31 04:24:26,2016-05-31 04:28:03,1,-73.984489440917969,40.736629486083984,-73.980293273925781,40.732059478759766,N,217 +id1978223,2,2016-05-04 17:59:04,2016-05-04 18:21:36,6,-73.99359130859375,40.749839782714844,-73.9810791015625,40.764179229736328,N,1352 +id1026975,2,2016-01-19 18:05:25,2016-01-19 18:20:21,1,-73.986137390136719,40.760700225830078,-73.960906982421875,40.769149780273437,N,896 +id2609900,2,2016-05-27 19:29:40,2016-05-27 19:38:10,2,-73.982162475585937,40.756427764892578,-73.978645324707031,40.745082855224609,N,510 +id3915355,2,2016-01-28 10:18:14,2016-01-28 10:46:55,2,-73.961265563964844,40.774513244628906,-73.991249084472656,40.755889892578125,N,1721 +id0654775,2,2016-03-09 19:11:16,2016-03-09 19:45:32,1,-73.874687194824219,40.773948669433594,-74.007156372070312,40.726581573486328,N,2056 +id3249876,2,2016-04-23 15:10:58,2016-04-23 15:13:31,2,-73.967697143554688,40.76361083984375,-73.972808837890625,40.755580902099609,N,153 +id2615814,1,2016-03-06 00:57:59,2016-03-06 01:09:20,1,-73.875228881835938,40.743011474609375,-73.909881591796875,40.76971435546875,N,681 +id1468182,2,2016-03-18 08:52:46,2016-03-18 08:57:57,2,-73.968360900878906,40.786777496337891,-73.959678649902344,40.779636383056641,N,311 +id3518346,2,2016-02-25 09:29:36,2016-02-25 09:49:11,1,-73.9783935546875,40.762187957763672,-73.974052429199219,40.750400543212891,N,1175 +id0342912,2,2016-03-29 17:54:27,2016-03-29 18:03:06,5,-73.98504638671875,40.747879028320313,-74.00531005859375,40.745098114013672,N,519 +id3554191,2,2016-03-11 12:54:55,2016-03-11 13:18:40,5,-73.972976684570313,40.764579772949219,-73.992012023925781,40.731639862060547,N,1425 +id2150945,2,2016-03-29 13:46:52,2016-03-29 14:07:50,1,-73.983695983886719,40.721797943115234,-74.006240844726563,40.742008209228516,N,1258 +id2223096,2,2016-01-09 00:37:10,2016-01-09 00:46:47,5,-73.982284545898437,40.771633148193359,-73.967483520507813,40.805950164794922,N,577 +id3970893,1,2016-04-27 17:09:50,2016-04-27 17:54:10,1,-73.870903015136719,40.773712158203125,-73.993377685546875,40.713764190673828,N,2660 +id2278329,2,2016-06-09 16:21:33,2016-06-09 16:26:52,3,-73.977027893066406,40.784732818603516,-73.976287841796875,40.793968200683594,N,319 +id2563877,2,2016-05-04 10:09:35,2016-05-04 10:23:36,3,-74.007621765136719,40.740821838378906,-73.987197875976563,40.7406005859375,N,841 +id1529701,2,2016-03-04 17:01:14,2016-03-04 17:11:20,1,-73.95672607421875,40.778060913085938,-73.968513488769531,40.761966705322266,N,606 +id3124032,1,2016-05-05 15:57:28,2016-05-05 16:15:20,1,-73.977363586425781,40.758705139160156,-73.964096069335938,40.764514923095703,N,1072 +id2328531,2,2016-04-11 22:47:26,2016-04-11 22:53:41,1,-73.997413635253906,40.729850769042969,-73.985061645507813,40.736061096191406,N,375 +id0839893,2,2016-03-14 15:35:26,2016-03-14 15:45:50,1,-73.977287292480469,40.738609313964844,-73.984100341796875,40.745811462402344,N,624 +id0387931,1,2016-01-08 11:11:05,2016-01-08 11:13:58,1,-73.983467102050781,40.7496337890625,-73.978233337402344,40.751121520996094,N,173 +id1280386,2,2016-06-24 06:00:35,2016-06-24 06:11:26,6,-73.942253112792969,40.800579071044922,-73.937637329101563,40.804248809814453,N,651 +id0447342,2,2016-03-27 11:53:24,2016-03-27 11:54:33,5,-73.957939147949219,40.776500701904297,-73.961700439453125,40.771068572998047,N,69 +id2684542,2,2016-01-20 21:35:00,2016-01-20 21:41:09,2,-73.965721130371094,40.768436431884766,-73.964324951171875,40.759048461914063,N,369 +id3805153,2,2016-01-29 22:18:20,2016-01-29 22:25:26,2,-73.987167358398438,40.738960266113281,-73.984962463378906,40.752620697021484,N,426 +id0990950,2,2016-04-15 10:27:33,2016-04-15 10:39:30,1,-73.999397277832031,40.754520416259766,-73.988578796386719,40.768886566162109,N,717 +id3807798,1,2016-01-29 20:30:06,2016-01-29 20:50:01,1,-73.979705810546875,40.754478454589844,-73.979705810546875,40.727558135986328,N,1195 +id3512584,1,2016-06-23 03:04:35,2016-06-23 03:20:06,2,-73.985511779785156,40.738452911376953,-73.964584350585938,40.719684600830078,N,931 +id0668873,2,2016-01-16 23:15:57,2016-01-16 23:22:58,6,-73.970062255859375,40.762619018554687,-73.954925537109375,40.783271789550781,N,421 +id2899058,2,2016-03-14 08:09:53,2016-03-14 08:28:39,1,-74.008132934570313,40.732761383056641,-73.982635498046875,40.752826690673828,N,1126 +id3981640,2,2016-05-11 15:48:54,2016-05-11 16:37:08,4,-73.871040344238281,40.773750305175781,-73.975440979003906,40.760089874267578,N,2894 +id0663470,1,2016-06-10 11:50:29,2016-06-10 12:06:33,1,-73.991615295410156,40.749732971191406,-73.982093811035156,40.763465881347656,N,964 +id0294950,2,2016-05-23 20:19:02,2016-05-23 20:21:13,5,-74.008018493652344,40.711830139160156,-74.013587951660156,40.715648651123047,N,131 +id1516926,1,2016-01-10 22:41:03,2016-01-10 23:02:40,1,-73.988822937011719,40.725116729736328,-73.994270324707031,40.745086669921875,N,1297 +id2476892,1,2016-05-07 07:14:01,2016-05-07 07:31:20,1,-74.00762939453125,40.705638885498047,-73.995086669921875,40.750049591064453,N,1039 +id1088478,1,2016-02-11 11:59:13,2016-02-11 12:26:14,1,-73.986183166503906,40.726287841796875,-73.970855712890625,40.760421752929688,N,1621 +id1255601,1,2016-03-10 17:27:46,2016-03-10 17:41:07,1,-74.002883911132813,40.760658264160156,-73.989845275878906,40.738834381103516,N,801 +id2107994,2,2016-04-08 21:35:02,2016-04-08 22:04:36,1,-74.000022888183594,40.717979431152344,-73.951148986816406,40.782951354980469,N,1774 +id0328780,2,2016-04-04 09:02:54,2016-04-04 09:08:39,2,-73.972099304199219,40.756168365478516,-73.978462219238281,40.747959136962891,N,345 +id3229185,1,2016-03-09 15:09:38,2016-03-09 15:38:40,1,-73.974365234375,40.75982666015625,-73.885345458984375,40.772998809814453,N,1742 +id3853809,2,2016-03-17 01:10:03,2016-03-17 01:29:12,1,-74.010017395019531,40.710338592529297,-73.918045043945313,40.741855621337891,N,1149 +id3029760,2,2016-06-22 19:47:08,2016-06-22 19:53:30,3,-73.970787048339844,40.758289337158203,-73.95770263671875,40.776878356933594,N,382 +id0752323,2,2016-05-27 17:44:05,2016-05-27 17:49:26,1,-74.0057373046875,40.750850677490234,-73.998703002929688,40.742012023925781,N,321 +id3772177,1,2016-05-26 07:55:32,2016-05-26 08:03:00,1,-73.97723388671875,40.750865936279297,-73.989768981933594,40.741718292236328,N,448 +id3938207,1,2016-05-07 22:51:09,2016-05-07 22:55:30,1,-74.004501342773438,40.730487823486328,-74.000030517578125,40.720283508300781,N,261 +id0462896,1,2016-03-25 17:45:46,2016-03-25 18:19:28,1,-73.955856323242188,40.778903961181641,-73.968780517578125,40.692672729492188,N,2022 +id0040035,2,2016-02-01 18:09:27,2016-02-01 18:41:12,5,-73.954719543457031,40.7659912109375,-73.872840881347656,40.774429321289063,N,1905 +id3331635,2,2016-05-23 11:40:32,2016-05-23 11:49:11,1,-73.985641479492188,40.769088745117188,-73.967422485351563,40.769184112548828,N,519 +id0628415,2,2016-06-12 16:43:04,2016-06-12 16:52:47,1,-73.956672668457031,40.774688720703125,-73.968063354492187,40.755405426025391,N,583 +id2348842,1,2016-04-25 08:40:13,2016-04-25 08:53:09,1,-73.994171142578125,40.750991821289063,-74.008354187011719,40.733440399169922,N,776 +id1953532,2,2016-05-08 01:01:58,2016-05-08 01:19:36,5,-73.992233276367188,40.721111297607422,-73.979766845703125,40.764987945556641,N,1058 +id1081874,2,2016-01-29 00:49:31,2016-01-29 00:58:44,1,-73.987602233886719,40.743610382080078,-73.967849731445312,40.753700256347656,N,553 +id3187979,1,2016-01-14 23:44:02,2016-01-14 23:51:23,1,-73.976165771484375,40.754356384277344,-73.996437072753906,40.760822296142578,N,441 +id3179683,1,2016-05-13 22:58:15,2016-05-13 23:10:25,1,-74.004135131835938,40.713016510009766,-73.977485656738281,40.722709655761719,N,730 +id1129868,1,2016-05-15 19:23:47,2016-05-15 19:27:33,1,-73.972694396972656,40.785896301269531,-73.980880737304688,40.782428741455078,N,226 +id2027867,2,2016-02-20 14:45:55,2016-02-20 14:52:52,6,-73.988601684570313,40.748680114746094,-73.973831176757813,40.763690948486328,N,417 +id2161749,1,2016-01-16 21:30:34,2016-01-16 21:41:36,1,-73.979560852050781,40.765975952148438,-73.99725341796875,40.744823455810547,N,662 +id1266787,2,2016-04-05 15:36:24,2016-04-05 15:52:46,1,-73.974807739257812,40.751171112060547,-73.9918212890625,40.774250030517578,N,982 +id0741392,1,2016-01-07 08:43:12,2016-01-07 09:11:47,1,-73.978271484375,40.783245086669922,-73.971878051757812,40.7596435546875,N,1715 +id3853773,2,2016-04-25 19:35:46,2016-04-25 19:51:13,5,-73.994621276855469,40.749454498291016,-73.971160888671875,40.754890441894531,N,927 +id1247766,2,2016-05-01 21:01:01,2016-05-01 21:13:47,1,-73.963554382324219,40.711105346679688,-73.940315246582031,40.710670471191406,N,766 +id2152239,2,2016-01-08 13:43:33,2016-01-08 13:46:54,1,-73.966171264648438,40.764678955078125,-73.96405029296875,40.770679473876953,N,201 +id1001596,2,2016-04-30 22:56:26,2016-04-30 23:14:18,1,-73.991096496582031,40.755702972412109,-73.981239318847656,40.738578796386719,N,1072 +id3276465,2,2016-03-13 22:01:13,2016-03-13 22:12:54,5,-73.978538513183594,40.762718200683594,-73.944770812988281,40.808658599853516,N,701 +id2908592,2,2016-05-13 13:24:13,2016-05-13 13:36:29,1,-73.968513488769531,40.770481109619141,-73.981956481933594,40.773330688476563,N,736 +id2948339,1,2016-05-09 11:16:22,2016-05-09 11:33:27,1,-73.990814208984375,40.750862121582031,-73.971061706542969,40.764152526855469,N,1025 +id0362474,1,2016-05-08 10:58:02,2016-05-08 11:04:59,1,-73.972152709960937,40.749973297119141,-73.992889404296875,40.735740661621094,N,417 +id0728352,1,2016-05-12 06:38:31,2016-05-12 06:43:23,1,-73.979019165039063,40.7501220703125,-73.97021484375,40.761829376220703,N,292 +id0937784,1,2016-04-22 22:12:46,2016-04-22 22:23:08,4,-73.994537353515625,40.745563507080078,-73.987503051757812,40.731700897216797,N,622 +id1638933,1,2016-06-27 22:27:54,2016-06-27 22:40:33,2,-73.987571716308594,40.738601684570313,-73.970405578613281,40.752422332763672,N,759 +id1639987,1,2016-02-01 05:33:49,2016-02-01 05:50:46,1,-73.953163146972656,40.775852203369141,-73.978439331054687,40.689964294433594,N,1017 +id3580436,2,2016-06-20 21:56:21,2016-06-20 22:05:45,1,-73.966392517089844,40.7581787109375,-73.995887756347656,40.732959747314453,N,564 +id0104864,2,2016-02-25 19:20:14,2016-02-25 19:35:08,1,-74.006156921386719,40.749519348144531,-74.008140563964844,40.725898742675781,N,894 +id3351229,1,2016-05-07 08:48:55,2016-05-07 08:54:29,1,-73.976303100585938,40.760318756103516,-73.962997436523438,40.766593933105469,N,334 +id0632913,2,2016-04-28 20:05:07,2016-04-28 20:11:24,1,-73.989227294921875,40.753105163574219,-74.003059387207031,40.747467041015625,N,377 +id1776257,2,2016-04-04 11:12:02,2016-04-04 11:17:39,2,-73.977272033691406,40.755939483642578,-73.969436645507813,40.758739471435547,N,337 +id2209766,1,2016-03-20 12:31:56,2016-03-20 12:42:01,2,-73.978172302246094,40.766445159912109,-73.9923095703125,40.743972778320312,N,605 +id3542573,2,2016-05-24 09:02:29,2016-05-24 09:15:58,6,-73.975677490234375,40.763988494873047,-73.989402770996094,40.767948150634766,N,809 +id1967452,2,2016-01-16 02:59:07,2016-01-16 03:19:59,5,-73.987869262695312,40.729419708251953,-73.974021911621094,40.789829254150391,N,1252 +id2068170,2,2016-03-31 10:00:17,2016-03-31 10:05:11,1,-73.975021362304688,40.732959747314453,-73.968719482421875,40.750389099121094,N,294 +id1380523,2,2016-03-19 09:44:18,2016-03-19 09:47:48,1,-73.997123718261719,40.742008209228516,-73.992767333984375,40.730678558349609,N,210 +id3359329,1,2016-05-09 11:08:13,2016-05-09 11:38:18,1,-73.996246337890625,40.743438720703125,-73.9681396484375,40.788150787353516,N,1805 +id2143290,2,2016-03-10 08:14:13,2016-03-10 08:23:08,5,-73.957893371582031,40.776260375976562,-73.969322204589844,40.763710021972656,N,535 +id2459673,1,2016-03-26 18:31:01,2016-03-26 18:48:50,1,-73.971099853515625,40.751094818115234,-73.995597839355469,40.720027923583984,N,1069 +id2771107,2,2016-04-09 07:33:03,2016-04-09 07:35:15,1,-73.961799621582031,40.767917633056641,-73.955642700195312,40.776641845703125,N,132 +id1121260,1,2016-01-12 23:34:33,2016-01-12 23:42:22,1,-73.962104797363281,40.763893127441406,-73.922294616699219,40.739784240722656,N,469 +id2374200,1,2016-06-16 19:19:45,2016-06-16 19:38:39,1,-73.996635437011719,40.727203369140625,-73.9757080078125,40.744968414306641,N,1134 +id3600404,2,2016-04-20 20:27:47,2016-04-20 21:07:18,5,-73.781791687011719,40.644828796386719,-73.986656188964844,40.758121490478516,N,2371 +id3975119,2,2016-06-16 10:57:37,2016-06-16 11:57:18,1,-73.873573303222656,40.773998260498047,-73.972503662109375,40.758922576904297,N,3581 +id3706381,2,2016-04-19 13:02:18,2016-04-19 13:09:24,1,-73.953361511230469,40.777412414550781,-73.939002990722656,40.800121307373047,N,426 +id3633210,2,2016-04-27 20:28:51,2016-04-27 20:47:16,1,-73.955535888671875,40.764080047607422,-73.93902587890625,40.804817199707031,N,1105 +id3274080,1,2016-05-02 09:30:02,2016-05-02 09:34:42,1,-73.988395690917969,40.755851745605469,-73.989913940429687,40.747367858886719,N,280 +id3035624,2,2016-03-20 20:28:59,2016-03-20 20:42:09,2,-73.993865966796875,40.751541137695313,-73.954200744628906,40.787361145019531,N,790 +id0893348,2,2016-02-13 03:27:20,2016-02-13 03:32:57,2,-74.004020690917969,40.742027282714844,-73.988349914550781,40.748321533203125,N,337 +id0548262,1,2016-03-07 20:37:08,2016-03-07 20:48:42,1,-73.997116088867188,40.720630645751953,-73.997406005859375,40.746723175048828,N,694 +id3293789,2,2016-02-02 00:54:01,2016-02-02 01:25:47,1,-73.916572570800781,40.688026428222656,-73.982902526855469,40.699390411376953,N,1906 +id2822241,2,2016-01-21 10:18:31,2016-01-21 10:25:34,1,-73.974899291992187,40.756820678710937,-73.982940673828125,40.750373840332031,N,423 +id1783442,2,2016-02-14 16:31:31,2016-02-14 16:46:29,1,-73.992218017578125,40.738739013671875,-74.006858825683594,40.710380554199219,N,898 +id1735733,2,2016-03-26 15:15:15,2016-03-26 15:19:00,1,-74.000473022460938,40.742488861083984,-73.995079040527344,40.749980926513672,N,225 +id2740390,2,2016-02-23 20:27:58,2016-02-23 20:29:49,1,-73.953788757324219,40.770191192626953,-73.951507568359375,40.777851104736328,N,111 +id0334742,2,2016-03-20 10:38:16,2016-03-20 10:47:15,2,-73.955802917480469,40.784870147705078,-73.962898254394531,40.80419921875,N,539 +id2095859,1,2016-01-05 18:45:48,2016-01-05 18:51:30,1,-73.977264404296875,40.751823425292969,-73.986236572265625,40.755264282226563,N,342 +id2672298,1,2016-05-31 14:07:55,2016-05-31 14:30:09,1,-73.990715026855469,40.734207153320312,-73.982627868652344,40.771640777587891,N,1334 +id1250488,2,2016-06-13 00:20:53,2016-06-13 00:29:08,2,-73.976310729980469,40.763851165771484,-73.952651977539063,40.780731201171875,N,495 +id0104874,1,2016-02-06 10:59:23,2016-02-06 11:13:07,2,-74.008216857910156,40.711299896240234,-73.999275207519531,40.7276611328125,N,824 +id0832993,2,2016-06-08 20:00:45,2016-06-08 20:18:42,5,-73.960800170898437,40.765579223632812,-74.003509521484375,40.708049774169922,N,1077 +id1779500,1,2016-06-28 22:35:53,2016-06-28 23:35:22,1,-73.979301452636719,40.752838134765625,-73.889175415039062,40.852424621582031,N,3569 +id2513548,1,2016-04-07 10:47:47,2016-04-07 10:58:10,1,-73.9837646484375,40.7469482421875,-73.975509643554688,40.758419036865234,N,623 +id2037612,1,2016-01-10 13:49:14,2016-01-10 13:54:02,1,-73.975105285644531,40.752246856689453,-73.983642578125,40.743698120117187,N,288 +id0609708,2,2016-04-09 01:37:21,2016-04-09 01:56:07,2,-73.998878479003906,40.744438171386719,-73.940658569335938,40.84747314453125,N,1126 +id0316087,2,2016-06-08 21:32:56,2016-06-08 22:18:20,1,-73.994209289550781,40.75616455078125,-73.938789367675781,40.801597595214844,N,2724 +id0702974,1,2016-03-31 09:46:34,2016-03-31 09:51:52,1,-73.977958679199219,40.754795074462891,-73.972007751464844,40.762805938720703,N,318 +id0358555,2,2016-04-12 16:33:09,2016-04-12 16:47:51,2,-73.970016479492188,40.758651733398438,-73.954673767089844,40.765823364257813,N,882 +id2627127,1,2016-04-16 10:48:50,2016-04-16 11:02:57,1,-74.008995056152344,40.726116180419922,-73.994941711425781,40.760334014892578,N,847 +id2289553,2,2016-03-28 09:20:09,2016-03-28 09:32:02,6,-73.98834228515625,40.731521606445313,-74.003028869628906,40.749149322509766,N,713 +id3767674,1,2016-03-15 15:54:52,2016-03-15 16:24:55,1,-73.984100341796875,40.755020141601563,-73.942535400390625,40.841682434082031,N,1803 +id0925686,1,2016-06-23 12:54:39,2016-06-23 12:56:19,1,-73.957122802734375,40.780117034912109,-73.955177307128906,40.782630920410156,N,100 +id0654354,2,2016-06-20 11:57:36,2016-06-20 12:11:08,2,-73.986045837402344,40.752185821533203,-73.971946716308594,40.75433349609375,N,812 +id0963175,1,2016-05-11 21:23:21,2016-05-11 21:28:10,1,-73.96710205078125,40.755321502685547,-73.977935791015625,40.745590209960938,N,289 +id2283570,2,2016-03-12 10:55:52,2016-03-12 11:07:34,2,-74.013633728027344,40.714168548583984,-73.99468994140625,40.750431060791016,N,702 +id2969728,1,2016-06-11 00:40:16,2016-06-11 00:57:26,1,-73.956939697265625,40.780277252197266,-73.93658447265625,40.855754852294922,N,1030 +id1235866,2,2016-02-16 16:20:40,2016-02-16 16:33:54,1,-73.97406005859375,40.757720947265625,-73.958267211914063,40.776508331298828,N,794 +id3559291,2,2016-01-12 17:32:05,2016-01-12 17:41:09,3,-73.970687866210938,40.758899688720703,-73.971389770507812,40.744468688964844,N,544 +id2185626,1,2016-06-04 19:57:37,2016-06-04 20:08:07,1,-73.962715148925781,40.775279998779297,-73.95758056640625,40.761749267578125,N,630 +id3778978,1,2016-04-10 15:49:35,2016-04-10 15:56:25,1,-73.985679626464844,40.727058410644531,-73.998786926269531,40.734088897705078,N,410 +id0587462,2,2016-03-31 17:19:28,2016-03-31 17:23:42,3,-73.993263244628906,40.747211456298828,-74.006027221679688,40.741260528564453,N,254 +id1985678,2,2016-01-15 19:59:11,2016-01-15 20:03:18,1,-73.978363037109375,40.765129089355469,-73.982292175292969,40.7681884765625,N,247 +id0785649,1,2016-05-03 20:09:53,2016-05-03 20:22:41,1,-73.990196228027344,40.755966186523438,-73.967231750488281,40.788154602050781,N,768 +id2831439,2,2016-01-19 17:22:57,2016-01-19 17:49:04,1,-73.965187072753906,40.753509521484375,-74.009712219238281,40.717388153076172,N,1567 +id1196204,2,2016-01-03 14:46:20,2016-01-03 14:52:56,1,-73.973701477050781,40.747760772705078,-73.990455627441406,40.724880218505859,N,396 +id2539280,1,2016-06-06 11:53:08,2016-06-06 11:57:33,1,-73.962089538574219,40.767875671386719,-73.954658508300781,40.769813537597656,N,265 +id1197552,2,2016-03-28 12:47:10,2016-03-28 12:53:51,1,-73.954368591308594,40.789649963378906,-73.952606201171875,40.783168792724609,N,401 +id1097178,1,2016-05-20 20:24:09,2016-05-20 20:28:21,2,-73.972846984863281,40.756385803222656,-73.978950500488281,40.748741149902344,N,252 +id0474303,1,2016-03-25 03:12:17,2016-03-25 03:36:25,2,-73.990379333496094,40.724922180175781,-73.834648132324219,40.717296600341797,N,1448 +id1126485,2,2016-04-03 03:47:40,2016-04-03 03:56:39,1,-73.976463317871094,40.693470001220703,-73.956527709960937,40.716968536376953,N,539 +id2416795,1,2016-06-06 00:40:19,2016-06-06 00:50:13,1,-74.007728576660156,40.740524291992188,-73.986663818359375,40.736305236816406,N,594 +id1079992,1,2016-02-17 19:47:47,2016-02-17 19:54:51,1,-73.975532531738281,40.789394378662109,-73.98895263671875,40.776771545410156,N,424 +id1351461,2,2016-03-12 15:57:43,2016-03-12 16:01:33,1,-73.955039978027344,40.785789489746094,-73.959037780761719,40.77484130859375,N,230 +id1005672,1,2016-05-07 16:58:18,2016-05-07 17:10:13,1,-73.972129821777344,40.782135009765625,-73.971450805664063,40.757656097412109,N,715 +id3309511,2,2016-02-17 09:16:11,2016-02-17 09:22:08,1,-74.014625549316406,40.704624176025391,-74.005485534667969,40.706924438476562,N,357 +id1004456,2,2016-02-01 15:16:08,2016-02-01 15:43:30,1,-73.862861633300781,40.769489288330078,-73.782257080078125,40.645671844482422,N,1642 +id3991305,1,2016-03-02 22:35:18,2016-03-02 22:39:29,1,-73.974235534667969,40.791255950927734,-73.966827392578125,40.795478820800781,N,251 +id0258303,2,2016-06-22 11:52:27,2016-06-22 12:22:45,2,-73.97705078125,40.750911712646484,-73.982032775878906,40.783718109130859,N,1818 +id0457265,2,2016-03-15 23:13:24,2016-03-15 23:19:44,1,-73.988426208496094,40.754051208496094,-74.002708435058594,40.747211456298828,N,380 +id2346091,1,2016-03-09 22:37:54,2016-03-09 22:44:21,2,-74.002578735351563,40.750339508056641,-73.992301940917969,40.737525939941406,N,387 +id3231920,1,2016-01-19 12:28:36,2016-01-19 12:51:10,2,-73.996345520019531,40.746612548828125,-73.980308532714844,40.763603210449219,N,1354 +id0660120,1,2016-06-05 12:42:24,2016-06-05 12:49:31,1,-73.952369689941406,40.783878326416016,-73.94647216796875,40.775859832763672,N,427 +id1062142,1,2016-02-27 08:36:05,2016-02-27 08:54:59,1,-73.9735107421875,40.743934631347656,-73.947891235351563,40.781124114990234,N,1134 +id0998801,2,2016-01-27 08:20:42,2016-01-27 08:39:11,2,-73.949958801269531,40.678600311279297,-73.985893249511719,40.669040679931641,N,1109 +id1262855,2,2016-01-31 10:55:25,2016-01-31 11:13:02,1,-73.988990783691406,40.758796691894531,-73.997413635253906,40.766525268554688,N,1057 +id3096596,1,2016-02-10 17:46:42,2016-02-10 17:53:46,1,-73.985282897949219,40.747600555419922,-74.001335144042969,40.733863830566406,N,424 +id3044565,2,2016-05-23 10:38:49,2016-05-23 10:46:29,1,-73.959732055664063,40.779636383056641,-73.9617919921875,40.771152496337891,N,460 +id1229907,2,2016-05-12 20:19:33,2016-05-12 20:43:18,5,-73.870895385742187,40.773761749267578,-73.777427673339844,40.746955871582031,N,1425 +id0085906,1,2016-06-06 13:21:54,2016-06-06 13:42:24,2,-73.978691101074219,40.745418548583984,-74.004173278808594,40.721828460693359,N,1230 +id1909215,1,2016-02-19 15:42:28,2016-02-19 15:44:43,1,-74.002098083496094,40.708942413330078,-74.010528564453125,40.703155517578125,N,135 +id2626893,2,2016-06-14 22:00:42,2016-06-14 22:18:22,1,-73.94451904296875,40.779819488525391,-73.9886474609375,40.764030456542969,N,1060 +id3156633,2,2016-01-02 16:11:53,2016-01-02 16:22:05,1,-73.945564270019531,40.7781982421875,-73.977531433105469,40.753883361816406,N,612 +id2393416,2,2016-03-10 15:51:26,2016-03-10 16:03:00,1,-73.96795654296875,40.801921844482422,-73.987701416015625,40.775611877441406,N,694 +id0352545,2,2016-06-10 11:43:32,2016-06-10 11:54:15,1,-73.982139587402344,40.754093170166016,-73.978469848632812,40.763751983642578,N,643 +id2457685,1,2016-01-01 00:57:13,2016-01-01 01:27:39,1,-73.948272705078125,40.782554626464844,-73.929145812988281,40.702667236328125,N,1826 +id3715480,2,2016-03-08 18:49:51,2016-03-08 18:56:10,1,-73.957313537597656,40.772529602050781,-73.955703735351563,40.768386840820312,N,379 +id1714584,2,2016-04-24 18:08:47,2016-04-24 18:15:37,5,-73.959579467773438,40.760040283203125,-73.958259582519531,40.774768829345703,N,410 +id0917725,2,2016-05-09 16:03:37,2016-05-09 16:06:47,2,-73.972557067871094,40.762641906738281,-73.975578308105469,40.754848480224609,N,190 +id3533281,2,2016-05-16 11:08:30,2016-05-16 11:20:29,1,-73.954368591308594,40.767158508300781,-73.954139709472656,40.784618377685547,N,719 +id3062667,2,2016-05-21 06:30:08,2016-05-21 06:32:41,1,-73.945030212402344,40.787258148193359,-73.95587158203125,40.779548645019531,N,153 +id0086264,1,2016-03-18 15:04:43,2016-03-18 15:24:42,2,-73.95367431640625,40.766128540039063,-73.97845458984375,40.758369445800781,N,1199 +id2602706,1,2016-03-29 00:52:45,2016-03-29 00:59:00,1,-73.987838745117188,40.732723236083984,-74.007965087890625,40.737934112548828,N,375 +id1133822,2,2016-05-31 08:34:43,2016-05-31 08:54:21,1,-74.00140380859375,40.7412109375,-73.975723266601563,40.754650115966797,N,1178 +id1278663,1,2016-02-10 21:07:06,2016-02-10 21:14:23,1,-73.965835571289063,40.762825012207031,-73.953254699707031,40.791030883789063,N,437 +id3060368,1,2016-05-27 15:00:56,2016-05-27 15:19:32,1,-73.955299377441406,40.775848388671875,-73.975013732910156,40.753185272216797,N,1116 +id3642331,1,2016-03-02 07:34:30,2016-03-02 07:40:48,1,-73.990852355957031,40.750717163085938,-73.978904724121094,40.750221252441406,N,378 +id3565859,1,2016-06-13 06:07:20,2016-06-13 06:09:09,1,-73.977760314941406,40.746494293212891,-73.983512878417969,40.743976593017578,N,109 +id3300290,1,2016-06-24 18:37:53,2016-06-24 18:48:33,1,-73.975021362304688,40.735420227050781,-73.994064331054688,40.727798461914063,N,640 +id2221673,1,2016-04-11 01:51:59,2016-04-11 01:55:29,1,-73.991722106933594,40.744312286376953,-73.994338989257813,40.755157470703125,N,210 +id1448377,1,2016-04-09 03:07:05,2016-04-09 03:13:07,1,-74.005233764648437,40.741924285888672,-74.000602722167969,40.735969543457031,N,362 +id2702148,2,2016-04-06 10:29:29,2016-04-06 10:44:56,2,-73.993011474609375,40.765182495117188,-73.981689453125,40.753677368164063,N,927 +id1274943,1,2016-04-06 13:29:30,2016-04-06 14:23:54,1,-73.981964111328125,40.761821746826172,-73.986404418945313,40.755657196044922,N,3264 +id3467966,1,2016-06-21 18:52:39,2016-06-21 18:57:41,1,-73.976356506347656,40.765926361083984,-73.98876953125,40.770919799804687,N,302 +id3659523,1,2016-06-17 16:53:20,2016-06-17 16:56:39,1,-74.002433776855469,40.728969573974609,-73.994819641113281,40.740226745605469,N,199 +id3719108,2,2016-05-17 13:25:42,2016-05-17 13:31:03,1,-73.953338623046875,40.775714874267578,-73.960319519042969,40.769725799560547,N,321 +id3519059,1,2016-06-30 11:42:45,2016-06-30 11:52:30,1,-73.98651123046875,40.756069183349609,-73.989967346191406,40.767063140869141,N,585 +id0275809,1,2016-04-16 20:37:03,2016-04-16 20:43:16,1,-73.983978271484375,40.759689331054688,-73.984733581542969,40.759071350097656,N,373 +id1650968,2,2016-04-18 22:04:33,2016-04-18 22:37:39,1,-73.78375244140625,40.648666381835938,-73.972099304199219,40.754886627197266,N,1986 +id3098629,2,2016-06-28 18:46:31,2016-06-28 18:53:58,1,-73.988090515136719,40.759540557861328,-73.992958068847656,40.766708374023438,N,447 +id1521838,2,2016-04-17 15:37:49,2016-04-17 15:43:31,1,-73.987098693847656,40.749301910400391,-73.972320556640625,40.751468658447266,N,342 +id2957936,1,2016-05-13 00:37:03,2016-05-13 00:59:28,1,-74.000885009765625,40.761814117431641,-73.893394470214844,40.855354309082031,N,1345 +id0903245,2,2016-01-04 18:02:16,2016-01-04 18:09:54,1,-73.967132568359375,40.772483825683594,-73.984458923339844,40.775005340576172,N,458 +id0328158,1,2016-05-07 19:12:53,2016-05-07 19:46:33,1,-73.969184875488281,40.761161804199219,-73.848098754882813,40.847675323486328,N,2020 +id3833990,2,2016-02-14 09:15:32,2016-02-14 09:24:34,1,-73.981147766113281,40.755290985107422,-74.000343322753906,40.758213043212891,N,542 +id2974542,1,2016-06-30 20:50:18,2016-06-30 20:53:20,1,-73.978370666503906,40.749534606933594,-73.981430053710938,40.740737915039062,N,182 +id1110696,2,2016-02-10 08:29:03,2016-02-10 08:39:45,1,-73.990058898925781,40.7562255859375,-73.977012634277344,40.764328002929688,N,642 +id1287112,1,2016-05-22 05:04:53,2016-05-22 05:42:02,1,-74.007064819335937,40.705268859863281,-73.782341003417969,40.648815155029297,N,2229 +id2051980,1,2016-01-13 23:21:04,2016-01-13 23:32:01,1,-73.961410522460938,40.771377563476563,-73.971420288085938,40.79937744140625,N,657 +id3813430,2,2016-04-28 17:13:46,2016-04-28 17:35:15,5,-73.863418579101562,40.769851684570313,-73.860603332519531,40.732841491699219,N,1289 +id1188577,1,2016-04-29 15:54:19,2016-04-29 16:01:33,1,-74.000534057617188,40.737369537353516,-73.994232177734375,40.745857238769531,N,434 +id1421919,2,2016-02-27 14:11:31,2016-02-27 14:33:52,1,-73.999008178710938,40.719005584716797,-73.986099243164062,40.755805969238281,N,1341 +id1909463,1,2016-03-27 10:13:49,2016-03-27 10:41:50,2,-73.990303039550781,40.756023406982422,-73.7886962890625,40.647415161132812,N,1681 +id1988047,1,2016-05-04 22:33:01,2016-05-04 22:37:41,1,-73.987617492675781,40.73822021484375,-74.004013061523438,40.743064880371094,N,280 +id0486270,1,2016-06-13 16:59:45,2016-06-13 17:07:54,1,-74.002662658691406,40.728580474853516,-73.986427307128906,40.737430572509766,N,489 +id3998294,2,2016-05-29 16:05:16,2016-05-29 16:12:51,5,-73.987960815429688,40.738021850585937,-73.987876892089844,40.749671936035156,N,455 +id2489222,2,2016-01-13 13:36:57,2016-01-13 13:56:27,2,-74.000930786132813,40.731800079345703,-73.986213684082031,40.759662628173828,N,1170 +id0891347,1,2016-03-29 15:51:32,2016-03-29 16:05:24,1,-74.009048461914062,40.710929870605469,-74.006126403808594,40.739845275878906,N,832 +id2799609,2,2016-05-18 00:30:57,2016-05-18 00:56:22,1,-74.008018493652344,40.741348266601563,-73.941642761230469,40.838249206542969,N,1525 +id0758143,1,2016-06-26 19:34:47,2016-06-26 19:38:30,1,-74.009086608886719,40.710788726806641,-74.016716003417969,40.704727172851563,N,223 +id2419964,2,2016-03-14 09:43:07,2016-03-14 09:58:46,1,-73.963844299316406,40.768314361572266,-73.983985900878906,40.767921447753906,N,939 +id0168034,1,2016-02-10 12:10:13,2016-02-10 12:44:37,1,-74.010108947753906,40.720600128173828,-73.865669250488281,40.770946502685547,N,2064 +id0112757,1,2016-01-10 10:57:27,2016-01-10 11:01:41,1,-73.988525390625,40.778354644775391,-73.981880187988281,40.772983551025391,N,254 +id0637298,1,2016-03-06 20:28:19,2016-03-06 20:32:29,1,-73.987663269042969,40.755218505859375,-73.984092712402344,40.743446350097656,N,250 +id3180611,2,2016-01-18 12:33:51,2016-01-18 12:42:48,1,-73.988754272460938,40.774036407470703,-73.97259521484375,40.762435913085937,N,537 +id2109909,2,2016-06-16 12:52:16,2016-06-16 13:15:35,1,-74.001823425292969,40.724605560302734,-73.972679138183594,40.755043029785156,N,1399 +id2309320,1,2016-03-21 21:24:51,2016-03-21 21:39:27,2,-73.98876953125,40.758388519287109,-73.991905212402344,40.726261138916016,N,876 +id1703538,1,2016-05-11 10:01:30,2016-05-11 10:08:18,1,-74.014984130859375,40.716072082519531,-74.004013061523438,40.725692749023438,N,408 +id3544083,2,2016-02-04 15:34:50,2016-02-04 15:58:46,1,-73.975692749023438,40.749191284179688,-73.98138427734375,40.762889862060547,N,1436 +id2412901,1,2016-01-18 13:00:33,2016-01-18 13:03:45,2,-74.003173828125,40.733020782470703,-74.006813049316406,40.717281341552734,N,192 +id1576998,1,2016-01-29 17:29:54,2016-01-29 17:49:07,1,-73.976318359375,40.754184722900391,-73.951217651367188,40.778911590576172,N,1153 +id0542659,1,2016-01-05 20:31:48,2016-01-05 20:48:59,1,-73.997146606445312,40.725040435791016,-74.013954162597656,40.676597595214844,N,1031 +id1846601,2,2016-03-27 03:12:01,2016-03-27 03:21:22,6,-74.001022338867188,40.741779327392578,-73.977401733398437,40.774246215820313,N,561 +id2006405,2,2016-06-26 23:21:31,2016-06-26 23:34:01,1,-73.951606750488281,40.777900695800781,-73.920066833496094,40.831188201904297,N,750 +id0807071,2,2016-02-13 11:17:14,2016-02-13 11:26:17,1,-73.971725463867188,40.794841766357422,-73.982383728027344,40.771453857421875,N,543 +id1562493,1,2016-03-24 13:46:34,2016-03-24 14:23:20,1,-73.979339599609375,40.774421691894531,-73.991134643554687,40.738742828369141,N,2206 +id2255044,1,2016-03-24 05:50:50,2016-03-24 05:58:15,1,-74.009635925292969,40.710063934326172,-73.992851257324219,40.742660522460938,N,445 +id3954356,2,2016-06-09 18:18:40,2016-06-09 18:57:06,3,-73.987098693847656,40.729171752929688,-73.990310668945313,40.757358551025391,N,2306 +id2171813,1,2016-06-29 21:31:39,2016-06-29 21:39:30,1,-73.990150451660156,40.747528076171875,-73.994361877441406,40.758880615234375,N,471 +id0370517,1,2016-04-27 08:58:46,2016-04-27 09:12:51,1,-73.957168579101563,40.77056884765625,-73.971710205078125,40.762237548828125,N,845 +id0456940,1,2016-01-14 09:09:45,2016-01-14 09:17:39,1,-73.980178833007812,40.743423461914063,-73.991806030273437,40.73931884765625,N,474 +id3015455,1,2016-02-13 11:45:36,2016-02-13 11:57:52,1,-73.993972778320312,40.726688385009766,-73.982437133789062,40.754985809326172,N,736 +id2704491,2,2016-03-29 19:37:58,2016-03-29 19:40:16,6,-73.973716735839844,40.764560699462891,-73.97296142578125,40.760021209716797,N,138 +id3215533,1,2016-03-02 07:31:59,2016-03-02 07:45:52,1,-73.976150512695312,40.788818359375,-73.971847534179687,40.759441375732422,N,833 +id1661845,2,2016-04-21 19:59:05,2016-04-21 20:05:53,1,-73.981925964355469,40.779388427734375,-73.983161926269531,40.762020111083984,N,408 +id0236765,1,2016-06-10 21:09:36,2016-06-10 21:21:26,1,-73.953804016113281,40.770702362060547,-73.982376098632812,40.723575592041016,N,710 +id2119470,2,2016-06-30 23:15:34,2016-06-30 23:46:27,1,-73.984672546386719,40.719810485839844,-73.988372802734375,40.764141082763672,N,1853 +id1321707,1,2016-05-15 14:42:21,2016-05-15 15:00:17,1,-74.016853332519531,40.7056884765625,-73.994407653808594,40.75054931640625,N,1076 +id1380872,2,2016-05-03 00:40:51,2016-05-03 00:50:56,1,-73.997276306152344,40.719211578369141,-74.008308410644531,40.706501007080078,N,605 +id3065390,1,2016-06-07 17:43:07,2016-06-07 17:53:22,1,-73.992462158203125,40.730537414550781,-74.007804870605469,40.739463806152344,N,615 +id1794633,1,2016-03-27 01:09:54,2016-03-27 01:21:33,1,-73.975791931152344,40.757827758789063,-73.926841735839844,40.743965148925781,N,699 +id1765619,2,2016-01-06 17:10:45,2016-01-06 17:19:38,3,-73.982826232910156,40.771865844726563,-73.980255126953125,40.783786773681641,N,533 +id1859056,2,2016-06-27 16:50:24,2016-06-27 17:04:13,6,-73.978919982910156,40.764263153076172,-73.980194091796875,40.752140045166016,N,829 +id0592140,2,2016-06-21 23:40:14,2016-06-21 23:48:49,1,-73.978683471679688,40.729770660400391,-73.965286254882813,40.755878448486328,N,515 +id3892605,1,2016-05-10 13:20:36,2016-05-10 13:35:22,1,-73.979461669921875,40.746170043945313,-73.967063903808594,40.761222839355469,N,886 +id1750560,1,2016-06-17 06:11:39,2016-06-17 06:16:40,1,-73.990447998046875,40.756465911865234,-73.97802734375,40.755931854248047,N,301 +id0443797,2,2016-03-10 10:06:02,2016-03-10 10:20:34,1,-73.97515869140625,40.765361785888672,-73.958793640136719,40.783760070800781,N,872 +id0582943,1,2016-04-10 21:05:21,2016-04-10 21:10:16,1,-73.955825805664062,40.803890228271484,-73.96624755859375,40.794361114501953,N,295 +id2895943,1,2016-06-15 13:22:06,2016-06-15 13:33:11,1,-73.975540161132813,40.760841369628906,-73.989715576171875,40.741432189941406,N,665 +id1828615,2,2016-01-21 08:10:47,2016-01-21 08:12:45,1,-73.970436096191406,40.764812469482422,-73.964797973632812,40.772613525390625,N,118 +id2153996,1,2016-04-07 21:26:16,2016-04-07 21:38:03,1,-73.988731384277344,40.736682891845703,-74.015731811523438,40.704860687255859,N,707 +id0189082,2,2016-03-03 23:24:17,2016-03-03 23:40:17,1,-73.994575500488281,40.724868774414063,-73.984748840332031,40.745655059814453,N,960 +id1147398,2,2016-02-17 15:01:32,2016-02-17 15:06:48,1,-73.994911193847656,40.734001159667969,-74.000801086425781,40.731910705566406,N,316 +id2696369,2,2016-04-21 08:14:16,2016-04-21 08:23:17,5,-73.984062194824219,40.770149230957031,-73.973678588867187,40.757049560546875,N,541 +id0158409,1,2016-03-21 18:47:15,2016-03-21 18:49:31,2,-73.982437133789062,40.775325775146484,-73.983818054199219,40.780811309814453,N,136 +id1710945,2,2016-04-20 19:40:50,2016-04-20 19:48:36,1,-74.005317687988281,40.726947784423828,-74.014991760253906,40.715484619140625,N,466 +id1004587,2,2016-02-10 09:20:28,2016-02-10 09:33:34,1,-73.959190368652344,40.774551391601563,-73.969337463378906,40.760410308837891,N,786 +id1807383,2,2016-04-19 21:22:41,2016-04-19 21:26:08,1,-73.991661071777344,40.758029937744141,-73.999320983886719,40.761260986328125,N,207 +id0528570,1,2016-05-06 20:36:40,2016-05-06 20:41:59,1,-73.998313903808594,40.745170593261719,-74.003105163574219,40.73358154296875,N,319 +id0543315,2,2016-01-22 15:25:26,2016-01-22 16:14:40,1,-73.983505249023437,40.755851745605469,-73.872459411621094,40.774322509765625,N,2954 +id0546550,1,2016-04-18 20:11:10,2016-04-18 20:14:32,1,-73.955429077148438,40.768268585205078,-73.948905944824219,40.776527404785156,N,202 +id1259434,2,2016-02-27 15:06:27,2016-02-27 15:18:01,1,-73.982696533203125,40.764530181884766,-73.967689514160156,40.756946563720703,N,694 +id0847147,1,2016-01-12 14:43:25,2016-01-12 15:00:15,1,-73.952499389648437,40.768894195556641,-73.975387573242187,40.751998901367188,N,1010 +id3879782,1,2016-02-27 03:41:20,2016-02-27 03:58:03,1,-73.993362426757813,40.7220458984375,-73.865737915039063,40.771064758300781,N,1003 +id1624822,2,2016-04-07 16:04:29,2016-04-07 16:17:14,1,-73.983749389648438,40.734298706054687,-74.00335693359375,40.74261474609375,N,765 +id1628941,2,2016-01-08 08:49:25,2016-01-08 09:01:42,1,-73.986572265625,40.745658874511719,-74.009429931640625,40.720298767089844,N,737 +id0127998,1,2016-04-07 18:32:18,2016-04-07 18:49:43,2,-73.975349426269531,40.741397857666016,-73.983917236328125,40.755283355712891,N,1045 +id0464079,1,2016-01-31 02:47:25,2016-01-31 03:03:03,1,-73.993232727050781,40.720245361328125,-73.993576049804688,40.680587768554688,N,938 +id3059018,2,2016-06-20 18:26:31,2016-06-20 19:10:10,1,-73.863456726074219,40.770015716552734,-73.984664916992188,40.696521759033203,N,2619 +id2341080,1,2016-04-08 20:23:03,2016-04-08 20:29:52,1,-73.979812622070313,40.740085601806641,-73.987083435058594,40.729373931884766,N,409 +id2601956,2,2016-04-17 16:28:48,2016-04-17 16:49:14,1,-73.9556884765625,40.779487609863281,-73.990882873535156,40.750892639160156,N,1226 +id0544437,1,2016-04-01 22:42:33,2016-04-01 22:47:24,1,-73.989280700683594,40.777839660644531,-73.976814270019531,40.782745361328125,N,291 +id2300839,2,2016-04-16 23:44:27,2016-04-16 23:58:33,1,-73.985221862792969,40.767631530761719,-74.002082824707031,40.751731872558594,N,846 +id3526819,1,2016-04-01 20:33:42,2016-04-01 20:39:32,1,-74.008842468261719,40.704319000244141,-74.015983581542969,40.7109375,N,350 +id2827603,1,2016-02-29 12:44:01,2016-02-29 12:56:51,1,-73.975326538085938,40.76416015625,-73.985984802246094,40.758453369140625,N,770 +id2201136,2,2016-04-29 19:57:36,2016-04-29 20:09:01,1,-73.974380493164063,40.783370971679688,-73.943832397460938,40.776679992675781,N,685 +id0167774,1,2016-06-24 18:22:27,2016-06-24 18:55:04,1,-74.001747131347656,40.719455718994141,-73.992630004882813,40.730621337890625,N,1957 +id1343826,1,2016-04-09 12:55:28,2016-04-09 13:08:17,1,-73.973968505859375,40.764236450195313,-73.980804443359375,40.752414703369141,N,769 +id0834365,1,2016-04-14 13:22:08,2016-04-14 13:32:19,1,-74.002555847167969,40.728458404541016,-74.010658264160156,40.717327117919922,N,611 +id1868938,2,2016-04-14 23:43:15,2016-04-15 00:05:54,1,-73.982109069824219,40.771999359130859,-73.99542236328125,40.7239990234375,N,1359 +id1490636,1,2016-06-17 12:11:07,2016-06-17 12:21:28,1,-73.961051940917969,40.774818420410156,-73.972854614257813,40.758712768554687,N,621 +id1649032,1,2016-02-27 21:36:58,2016-02-27 21:52:23,1,-73.979530334472656,40.752555847167969,-74.011650085449219,40.704586029052734,N,925 +id1107395,1,2016-04-17 22:26:03,2016-04-17 22:36:34,1,-73.988090515136719,40.758262634277344,-73.979286193847656,40.748020172119141,N,631 +id2376894,2,2016-03-05 17:20:03,2016-03-05 17:31:31,1,-73.980377197265625,40.771400451660156,-73.977767944335937,40.753269195556641,N,688 +id3323539,1,2016-02-26 17:09:26,2016-02-26 17:48:08,2,-73.995712280273437,40.724891662597656,-73.981529235839844,40.780017852783203,N,2322 +id0478426,2,2016-01-15 15:20:30,2016-01-15 15:31:03,2,-73.9569091796875,40.770900726318359,-73.9527587890625,40.786270141601562,N,633 +id3154287,2,2016-03-21 17:32:24,2016-03-21 17:50:58,1,-73.998298645019531,40.7288818359375,-73.98577880859375,40.7481689453125,N,1114 +id3008484,1,2016-02-16 23:36:20,2016-02-16 23:50:00,1,-73.982269287109375,40.762977600097656,-74.004661560058594,40.726158142089844,N,820 +id0120994,2,2016-01-16 13:53:12,2016-01-16 14:10:00,2,-73.959800720214844,40.758701324462891,-73.992202758789063,40.749435424804688,N,1008 +id2336913,2,2016-03-16 18:26:25,2016-03-16 18:40:10,1,-73.981895446777344,40.761711120605469,-73.9913330078125,40.749935150146484,N,825 +id0193270,2,2016-02-06 16:00:53,2016-02-06 16:14:34,1,-73.997138977050781,40.737270355224609,-74.000030517578125,40.738048553466797,N,821 +id0241518,2,2016-04-26 19:34:18,2016-04-26 19:50:29,1,-73.952339172363281,40.768669128417969,-73.980079650878906,40.765159606933594,N,971 +id2286352,2,2016-01-25 18:45:34,2016-01-25 18:53:39,1,-73.987907409667969,40.764968872070313,-74.002685546875,40.760646820068359,N,485 +id0243218,2,2016-03-23 13:10:36,2016-03-23 13:39:14,1,-73.978775024414063,40.762706756591797,-74.008987426757813,40.706233978271484,N,1718 +id3676122,2,2016-01-14 09:26:57,2016-01-14 09:38:24,1,-73.997596740722656,40.756748199462891,-73.990280151367188,40.748939514160156,N,687 +id1466453,2,2016-03-27 11:41:47,2016-03-27 11:48:20,1,-73.989898681640625,40.738559722900391,-73.996627807617188,40.752639770507813,N,393 +id1489170,1,2016-04-23 01:59:18,2016-04-23 02:08:56,2,-73.959548950195312,40.770790100097656,-73.972274780273438,40.796424865722656,N,578 +id0026462,1,2016-06-22 18:01:49,2016-06-22 18:09:52,1,-73.955604553222656,40.77960205078125,-73.973838806152344,40.787136077880859,N,483 +id1408550,2,2016-02-27 12:47:06,2016-02-27 12:56:55,1,-73.990257263183594,40.729038238525391,-73.975440979003906,40.752410888671875,N,589 +id3155389,2,2016-05-03 19:01:59,2016-05-03 19:29:29,6,-73.872795104980469,40.774261474609375,-73.971336364746094,40.791946411132812,N,1650 +id0291077,2,2016-06-19 12:21:41,2016-06-19 12:25:54,6,-73.965827941894531,40.761737823486328,-73.974723815917969,40.761985778808594,N,253 +id2848888,1,2016-04-15 23:28:35,2016-04-15 23:42:04,2,-73.997108459472656,40.736564636230469,-73.978286743164063,40.763332366943359,N,809 +id2766622,1,2016-06-11 00:13:12,2016-06-11 00:35:47,1,-74.008659362792969,40.738143920898438,-73.952568054199219,40.766521453857422,N,1355 +id1346984,2,2016-06-23 15:53:02,2016-06-23 16:11:06,1,-73.984298706054688,40.742820739746094,-74.006080627441406,40.720058441162109,N,1084 +id2062037,2,2016-01-20 21:12:06,2016-01-20 21:18:24,1,-74.003410339355469,40.737583160400391,-73.995063781738281,40.749900817871094,N,378 +id0496373,2,2016-01-25 12:28:35,2016-01-25 12:34:07,1,-73.981491088867187,40.780681610107422,-73.971122741699219,40.782989501953125,N,332 +id0446115,2,2016-05-29 22:32:29,2016-05-29 22:58:35,1,-74.005210876464844,40.740718841552734,-73.950408935546875,40.769828796386719,N,1566 +id3978119,2,2016-02-22 11:41:02,2016-02-22 11:54:42,5,-73.985977172851562,40.749961853027344,-73.98065185546875,40.730129241943359,N,820 +id2349899,1,2016-04-19 20:43:00,2016-04-19 20:54:48,1,-73.981636047363281,40.763141632080078,-73.991950988769531,40.759487152099609,N,708 +id3710748,1,2016-05-01 00:47:38,2016-05-01 00:54:13,1,-73.990379333496094,40.739959716796875,-73.994873046875,40.750411987304687,N,395 +id2875593,2,2016-05-11 22:40:02,2016-05-11 22:55:32,1,-73.972190856933594,40.762161254882813,-73.996070861816406,40.738529205322266,N,930 +id0139151,2,2016-02-01 22:59:42,2016-02-01 23:15:59,2,-73.993316650390625,40.729419708251953,-73.9847412109375,40.768421173095703,N,977 +id1519215,2,2016-06-12 23:18:03,2016-06-12 23:31:26,1,-73.949630737304687,40.713996887207031,-73.925697326660156,40.695301055908203,N,803 +id0523273,2,2016-04-26 20:37:14,2016-04-26 20:44:34,1,-73.994163513183594,40.756278991699219,-73.987167358398438,40.740440368652344,N,440 +id0379931,1,2016-03-20 09:21:55,2016-03-20 09:37:07,1,-74.000648498535156,40.737312316894531,-74.013130187988281,40.714187622070313,N,912 +id1925967,2,2016-06-16 08:39:42,2016-06-16 08:42:57,1,-73.981025695800781,40.737640380859375,-73.986175537109375,40.730670928955078,N,195 +id2278894,2,2016-02-08 04:17:46,2016-02-08 04:49:18,2,-73.991622924804687,40.754470825195312,-73.776313781738281,40.645908355712891,N,1892 +id1165028,2,2016-04-11 20:39:17,2016-04-11 20:45:01,1,-73.975845336914063,40.759510040283203,-73.953964233398438,40.786998748779297,N,344 +id2943689,2,2016-04-08 23:51:27,2016-04-08 23:57:41,1,-73.987449645996094,40.733112335205078,-73.991455078125,40.727466583251953,N,374 +id0778026,1,2016-06-21 12:09:06,2016-06-21 12:40:11,1,-73.991256713867188,40.749618530273438,-73.973854064941406,40.750133514404297,N,1865 +id1454752,2,2016-02-14 01:13:25,2016-02-14 01:21:50,1,-73.981986999511719,40.771709442138672,-73.985603332519531,40.758148193359375,N,505 +id0557953,1,2016-05-06 17:51:20,2016-05-06 18:08:43,2,-74.015998840332031,40.715198516845703,-73.999305725097656,40.731571197509766,N,1043 +id3114315,1,2016-03-27 14:35:34,2016-03-27 14:46:45,4,-73.968009948730469,40.801204681396484,-73.974205017089844,40.78338623046875,N,671 +id2041588,2,2016-05-28 02:23:22,2016-05-28 02:48:34,5,-74.010147094726563,40.712055206298828,-73.743759155273437,40.725387573242187,N,1512 +id2871478,1,2016-06-10 20:16:05,2016-06-10 20:18:40,1,-73.957786560058594,40.773658752441406,-73.952728271484375,40.783309936523438,N,155 +id2567777,2,2016-02-23 20:45:39,2016-02-23 20:51:56,5,-73.9776611328125,40.746280670166016,-73.985206604003906,40.744560241699219,N,377 +id0083277,2,2016-02-06 23:31:37,2016-02-06 23:42:14,1,-73.982322692871094,40.773170471191406,-73.964080810546875,40.794651031494141,N,637 +id3700026,2,2016-05-20 22:23:31,2016-05-20 22:46:02,1,-73.986602783203125,40.742790222167969,-73.954673767089844,40.778068542480469,N,1351 +id1699269,2,2016-04-09 10:37:03,2016-04-09 10:43:38,2,-73.988166809082031,40.749050140380859,-73.979263305664063,40.765220642089844,N,395 +id3161151,1,2016-04-17 00:54:32,2016-04-17 01:06:15,1,-73.952796936035156,40.717487335205078,-73.985221862792969,40.688728332519531,N,703 +id0003967,1,2016-06-17 08:59:08,2016-06-17 09:07:28,1,-73.953170776367188,40.779960632324219,-73.948493957519531,40.803741455078125,N,500 +id2394972,1,2016-03-02 20:06:42,2016-03-02 20:19:20,1,-73.978225708007813,40.757286071777344,-73.998458862304687,40.729949951171875,N,758 +id0937571,1,2016-01-29 10:47:30,2016-01-29 11:00:05,1,-73.954673767089844,40.780727386474609,-73.957717895507813,40.801261901855469,N,755 +id2514104,2,2016-03-07 19:56:05,2016-03-07 20:12:37,2,-73.978836059570313,40.763839721679688,-73.939353942871094,40.802692413330078,N,992 +id1480564,1,2016-01-03 11:33:43,2016-01-03 11:52:36,1,-73.979011535644531,40.719676971435547,-73.96826171875,40.765594482421875,N,1133 +id0760965,1,2016-02-11 20:39:23,2016-02-11 21:01:01,1,-73.977325439453125,40.757766723632812,-74.010101318359375,40.704959869384766,N,1298 +id1738098,2,2016-01-24 19:56:10,2016-01-24 20:16:44,1,-73.870956420898437,40.773830413818359,-73.959091186523438,40.743728637695313,N,1234 +id1062334,2,2016-04-19 22:54:51,2016-04-19 23:03:48,1,-73.972366333007812,40.746669769287109,-73.948226928710938,40.776390075683594,N,537 +id3667211,2,2016-02-06 10:36:43,2016-02-06 10:48:58,5,-73.991981506347656,40.751449584960938,-73.980567932128906,40.764041900634766,N,735 +id2000069,2,2016-06-21 15:04:38,2016-06-21 15:24:17,2,-73.982208251953125,40.762691497802734,-74.002700805664063,40.760181427001953,N,1179 +id0900041,2,2016-03-09 16:54:31,2016-03-09 17:00:26,1,-73.945411682128906,40.778453826904297,-73.960823059082031,40.767337799072266,N,355 +id3316857,1,2016-06-29 13:35:44,2016-06-29 13:45:08,1,-73.978843688964844,40.782558441162109,-73.960617065429687,40.772602081298828,N,564 +id2421237,1,2016-03-13 00:53:59,2016-03-13 01:00:47,1,-73.957901000976563,40.779296875,-73.975547790527344,40.781955718994141,N,408 +id1281477,2,2016-06-03 00:20:45,2016-06-03 00:44:37,1,-73.993087768554688,40.722480773925781,-73.930946350097656,40.763729095458984,N,1432 +id2270566,2,2016-04-22 07:55:03,2016-04-22 08:09:59,1,-73.9656982421875,40.758136749267578,-73.984649658203125,40.755954742431641,N,896 +id2064319,1,2016-06-22 20:42:51,2016-06-22 20:44:37,1,-73.987106323242187,40.728347778320312,-73.983322143554688,40.726688385009766,N,106 +id1873909,1,2016-04-14 11:32:28,2016-04-14 11:50:32,1,-73.963157653808594,40.758525848388672,-73.974739074707031,40.761924743652344,N,1084 +id0979764,1,2016-06-30 19:32:53,2016-06-30 19:34:45,1,-73.984397888183594,40.721668243408203,-73.979721069335938,40.718238830566406,N,112 +id3096790,2,2016-01-26 21:54:24,2016-01-26 22:04:26,2,-73.989288330078125,40.758296966552734,-73.978401184082031,40.782779693603516,N,602 +id1074902,1,2016-04-26 19:21:12,2016-04-26 19:35:18,2,-73.991775512695313,40.7493896484375,-73.970611572265625,40.789196014404297,N,846 +id1545854,2,2016-01-10 14:40:23,2016-01-10 14:53:11,2,-74.006156921386719,40.739959716796875,-73.985031127929688,40.756019592285156,N,768 +id3174993,2,2016-06-17 22:44:35,2016-06-17 22:45:17,1,-73.781898498535156,40.644676208496094,-73.781883239746094,40.644710540771484,N,42 +id1022809,1,2016-01-22 17:48:59,2016-01-22 18:20:53,1,-73.875175476074219,40.774139404296875,-73.978713989257812,40.766727447509766,N,1914 +id2530214,2,2016-01-02 19:28:07,2016-01-02 19:31:14,3,-73.961967468261719,40.779258728027344,-73.955619812011719,40.785289764404297,N,187 +id2475690,1,2016-05-10 17:52:24,2016-05-10 18:08:25,1,-74.002410888671875,40.739833831787109,-73.988090515136719,40.765602111816406,N,961 +id2751598,1,2016-01-22 17:30:24,2016-01-22 17:33:16,1,-73.955596923828125,40.776939392089844,-73.95379638671875,40.773048400878906,N,172 +id1571425,1,2016-01-07 09:54:32,2016-01-07 10:11:02,1,-73.982902526855469,40.730766296386719,-73.994094848632812,40.745323181152344,N,990 +id2070978,2,2016-02-09 15:53:34,2016-02-09 16:40:18,6,-73.790061950683594,40.643630981445313,-73.983757019042969,40.753990173339844,N,2804 +id0641675,1,2016-01-14 07:39:33,2016-01-14 07:50:16,1,-73.993972778320312,40.746631622314453,-73.974250793457031,40.750926971435547,N,643 +id1265602,1,2016-02-08 18:48:42,2016-02-08 19:00:00,1,-73.977317810058594,40.764419555664063,-73.991996765136719,40.764850616455078,N,678 +id0552852,2,2016-02-27 19:09:51,2016-02-27 19:18:16,1,-73.978614807128906,40.728633880615234,-73.984481811523438,40.739540100097656,N,505 +id0723871,1,2016-02-17 16:06:20,2016-02-17 16:23:31,2,-73.959320068359375,40.772617340087891,-73.966781616210938,40.788925170898438,N,1031 +id2454253,2,2016-05-30 11:41:17,2016-05-30 11:50:06,2,-74.000343322753906,40.711101531982422,-73.990577697753906,40.730449676513672,N,529 +id1739498,2,2016-06-06 22:22:57,2016-06-06 22:32:47,1,-73.993156433105469,40.747920989990234,-74.007545471191406,40.740993499755859,N,590 +id1267978,1,2016-01-13 21:08:52,2016-01-13 21:32:23,1,-73.993728637695313,40.721038818359375,-73.977806091308594,40.791393280029297,N,1411 +id3560612,1,2016-01-05 00:41:22,2016-01-05 00:48:10,2,-73.963821411132813,40.802814483642578,-73.951789855957031,40.782894134521484,N,408 +id0041320,2,2016-01-31 04:00:48,2016-01-31 04:09:03,1,-73.986740112304688,40.721294403076172,-73.978340148925781,40.737129211425781,N,495 +id3649965,2,2016-01-05 15:08:46,2016-01-05 15:21:32,5,-73.987091064453125,40.750602722167969,-73.964500427246094,40.773208618164062,N,766 +id0220429,2,2016-01-11 20:18:58,2016-01-11 20:22:30,2,-73.95361328125,40.771194458007813,-73.947738647460938,40.787078857421875,N,212 +id0404146,2,2016-02-24 16:12:20,2016-02-24 16:18:13,1,-73.990928649902344,40.741420745849609,-74.000381469726563,40.737800598144531,N,353 +id3314380,2,2016-01-26 19:04:23,2016-01-26 19:10:37,1,-73.963981628417969,40.768028259277344,-73.951858520507813,40.766559600830078,N,374 +id1197969,2,2016-03-28 13:06:32,2016-03-28 13:09:32,1,-73.947967529296875,40.829879760742188,-73.943733215332031,40.823799133300781,N,180 +id2503638,2,2016-01-19 17:45:07,2016-01-19 17:50:29,1,-73.987632751464844,40.775699615478516,-73.987556457519531,40.76544189453125,N,322 +id0704546,1,2016-03-26 22:04:28,2016-03-26 22:09:03,1,-73.957023620605469,40.774486541748047,-73.947311401367188,40.771366119384766,N,275 +id3459380,1,2016-02-24 19:14:12,2016-02-24 19:24:24,1,-73.958030700683594,40.780654907226563,-73.980995178222656,40.78094482421875,N,612 +id0659210,2,2016-02-20 15:16:13,2016-02-20 15:28:06,6,-73.959609985351563,40.777065277099609,-73.9676513671875,40.756263732910156,N,713 +id1151238,2,2016-01-22 10:33:47,2016-01-22 10:42:21,1,-73.966140747070312,40.762237548828125,-73.956886291503906,40.768108367919922,N,514 +id1997069,1,2016-03-18 14:41:57,2016-03-18 15:01:50,1,-73.996055603027344,40.740200042724609,-74.010139465332031,40.711383819580078,N,1193 +id0904130,2,2016-02-23 11:17:13,2016-02-23 11:23:24,1,-73.959220886230469,40.783290863037109,-73.977607727050781,40.782421112060547,N,371 +id3223992,1,2016-04-24 10:57:33,2016-04-24 10:59:24,3,-73.981666564941406,40.778541564941406,-73.9786376953125,40.783031463623047,N,111 +id3437749,1,2016-01-31 00:47:54,2016-01-31 01:10:37,3,-73.98486328125,40.741939544677734,-73.987274169921875,40.718799591064453,N,1363 +id0431276,2,2016-04-14 11:19:37,2016-04-14 11:34:10,1,-74.008171081542969,40.7216796875,-73.990242004394531,40.744228363037109,N,873 +id1181804,1,2016-03-01 13:34:06,2016-03-01 13:41:23,1,-73.965461730957031,40.790695190429688,-73.979576110839844,40.784721374511719,N,437 +id1008379,2,2016-03-20 03:18:41,2016-03-20 03:29:19,1,-73.989593505859375,40.718879699707031,-73.98040771484375,40.728691101074219,N,638 +id0559429,1,2016-03-16 23:38:08,2016-03-16 23:44:05,1,-74.004112243652344,40.742824554443359,-73.997894287109375,40.750808715820312,N,357 +id1384644,1,2016-05-09 16:57:30,2016-05-09 17:06:20,1,-73.99176025390625,40.760608673095703,-73.984123229980469,40.756877899169922,N,530 +id3677673,2,2016-02-08 08:42:17,2016-02-08 08:47:23,1,-73.970497131347656,40.796611785888672,-73.982048034667969,40.779018402099609,N,306 +id1559716,2,2016-03-15 14:04:34,2016-03-15 14:32:13,1,-73.981697082519531,40.761829376220703,-74.010101318359375,40.720149993896484,N,1659 +id3394823,1,2016-04-05 18:55:21,2016-04-05 19:00:48,1,-73.965583801269531,40.762660980224609,-73.956138610839844,40.774570465087891,N,327 +id1228307,2,2016-02-15 19:36:12,2016-02-15 19:46:11,1,-73.973777770996094,40.763408660888672,-74.002731323242188,40.760650634765625,N,599 +id2965705,2,2016-06-11 23:33:45,2016-06-11 23:39:47,1,-73.987709045410156,40.749755859375,-73.978652954101563,40.741050720214844,N,362 +id1879996,2,2016-04-05 16:52:29,2016-04-05 16:59:33,1,-73.963371276855469,40.774639129638672,-73.952247619628906,40.791419982910156,N,424 +id0830231,2,2016-06-18 23:08:39,2016-06-18 23:22:15,1,-74.006607055664063,40.7318115234375,-73.978141784667969,40.726089477539063,N,816 +id1731457,1,2016-03-13 03:36:26,2016-03-13 03:43:20,1,-73.987052917480469,40.722324371337891,-73.984619140625,40.736965179443359,N,414 +id1898961,2,2016-04-15 22:46:28,2016-04-15 22:54:21,1,-73.997772216796875,40.735988616943359,-74.002456665039063,40.727668762207031,N,473 +id1851643,2,2016-03-01 13:32:57,2016-03-01 13:46:50,2,-73.985023498535156,40.752544403076172,-73.967002868652344,40.7666015625,N,833 +id2757434,2,2016-06-01 10:10:14,2016-06-01 10:28:19,1,-73.98773193359375,40.755073547363281,-73.965248107910156,40.771755218505859,N,1085 +id0104929,1,2016-05-19 23:11:18,2016-05-19 23:42:37,1,-73.963569641113281,40.768390655517578,-73.95782470703125,40.721992492675781,N,1879 +id0410515,1,2016-03-16 19:33:04,2016-03-16 19:37:47,2,-73.958549499511719,40.767185211181641,-73.950431823730469,40.775386810302734,N,283 +id0517701,2,2016-03-24 21:27:03,2016-03-24 21:30:29,2,-73.982032775878906,40.776851654052734,-73.978744506835938,40.790180206298828,N,206 +id0032573,2,2016-05-10 06:31:14,2016-05-10 06:41:01,5,-73.997611999511719,40.733570098876953,-73.975723266601563,40.754814147949219,N,587 +id2614729,1,2016-06-22 18:04:30,2016-06-22 18:17:28,1,-73.946418762207031,40.781021118164063,-73.965301513671875,40.766048431396484,N,778 +id0591687,2,2016-04-22 06:47:33,2016-04-22 06:57:27,6,-73.972053527832031,40.746318817138672,-73.981880187988281,40.756591796875,N,594 +id1580634,1,2016-03-12 14:29:58,2016-03-12 14:39:14,1,-73.999336242675781,40.744007110595703,-73.985481262207031,40.763114929199219,N,556 +id1717035,1,2016-05-15 19:37:57,2016-05-15 19:45:06,1,-74.001617431640625,40.724475860595703,-73.988624572753906,40.734458923339844,N,429 +id3204387,2,2016-02-18 10:44:17,2016-02-18 10:50:54,4,-73.976036071777344,40.750751495361328,-73.976402282714844,40.741802215576172,N,397 +id1712432,1,2016-01-31 17:46:16,2016-01-31 18:02:04,1,-73.790718078613281,40.644096374511719,-73.790718078613281,40.644096374511719,N,948 +id0613190,2,2016-04-02 14:32:40,2016-04-02 14:39:04,2,-73.97332763671875,40.784931182861328,-73.980743408203125,40.770709991455078,N,384 +id3086863,2,2016-03-17 00:26:05,2016-03-17 00:37:53,1,-74.006034851074219,40.734912872314453,-73.986122131347656,40.722454071044922,N,708 +id1848905,2,2016-04-12 18:26:28,2016-04-12 18:40:16,1,-73.982833862304688,40.732406616210937,-74.006721496582031,40.736057281494141,N,828 +id2456653,2,2016-06-22 21:26:45,2016-06-22 21:49:37,1,-73.863563537597656,40.770000457763672,-74.004081726074219,40.717140197753906,N,1372 +id2571819,2,2016-06-02 11:16:02,2016-06-02 12:00:58,1,-73.870841979980469,40.773712158203125,-73.982498168945313,40.7501220703125,N,2696 +id3446039,1,2016-06-27 18:36:22,2016-06-27 18:55:55,2,-73.992996215820313,40.759426116943359,-73.948616027832031,40.803821563720703,N,1173 +id3142625,1,2016-06-22 14:51:58,2016-06-22 14:59:15,1,-73.969711303710938,40.763233184814453,-73.958839416503906,40.777816772460938,N,437 +id1855580,2,2016-05-15 18:58:32,2016-05-15 19:04:04,2,-73.991226196289062,40.729988098144531,-74.000076293945312,40.730499267578125,N,332 +id2853915,2,2016-01-19 18:14:34,2016-01-19 18:23:53,5,-73.969329833984375,40.76068115234375,-73.981422424316406,40.743919372558594,N,559 +id2464576,1,2016-01-04 06:18:52,2016-01-04 06:23:07,1,-73.989494323730469,40.756500244140625,-73.977462768554688,40.760112762451172,N,255 +id2819674,2,2016-06-03 17:37:14,2016-06-03 18:01:51,1,-73.9954833984375,40.754436492919922,-73.983718872070313,40.721607208251953,N,1477 +id0589142,2,2016-03-31 11:42:23,2016-03-31 12:17:14,1,-73.994308471679688,40.757373809814453,-73.962234497070312,40.709896087646484,N,2091 +id3841464,1,2016-02-20 16:45:22,2016-02-20 17:00:46,1,-74.007675170898438,40.740684509277344,-73.984016418457031,40.729347229003906,N,924 +id2499100,1,2016-06-29 23:03:43,2016-06-29 23:12:38,1,-73.98321533203125,40.771160125732422,-73.95611572265625,40.772903442382813,N,535 +id1341276,1,2016-06-27 02:00:01,2016-06-27 02:06:34,3,-74.004341125488281,40.752017974853516,-73.98876953125,40.748546600341797,N,393 +id3456469,2,2016-01-15 10:42:29,2016-01-15 10:47:33,1,-73.962501525878906,40.772743225097656,-73.967254638671875,40.768341064453125,N,304 +id1548044,1,2016-05-12 09:12:54,2016-05-12 09:22:58,1,-73.999114990234375,40.735733032226563,-74.004280090332031,40.750637054443359,N,604 +id3121807,1,2016-03-03 10:10:35,2016-03-03 10:35:50,1,-74.013275146484375,40.706062316894531,-74.013481140136719,40.706150054931641,N,1515 +id3088148,1,2016-04-26 18:38:44,2016-04-26 18:42:30,1,-74.005607604980469,40.740535736083984,-74.008132934570313,40.737823486328125,N,226 +id1114006,1,2016-01-10 20:00:48,2016-01-10 20:12:16,1,-73.979469299316406,40.78155517578125,-73.942451477050781,40.794742584228516,N,688 +id3577598,2,2016-03-21 21:27:13,2016-03-21 21:32:27,2,-73.991012573242188,40.751350402832031,-73.975692749023438,40.744686126708984,N,314 +id0342922,2,2016-03-19 00:11:41,2016-03-19 00:18:26,5,-73.977897644042969,40.745754241943359,-73.993583679199219,40.741626739501953,N,405 +id3451528,2,2016-02-04 08:41:38,2016-02-04 08:58:29,1,-73.98016357421875,40.743030548095703,-73.979621887207031,40.761146545410156,N,1011 +id0076125,1,2016-01-11 02:05:10,2016-01-11 02:13:48,1,-73.970626831054687,40.796421051025391,-73.993583679199219,40.764575958251953,N,518 +id3639050,1,2016-03-01 19:09:58,2016-03-01 19:13:15,1,-73.997077941894531,40.725109100341797,-74.003334045410156,40.717990875244141,N,197 +id3267609,2,2016-04-14 23:19:39,2016-04-14 23:32:11,1,-73.981315612792969,40.759956359863281,-74.003532409667969,40.747535705566406,N,752 +id1843036,2,2016-05-09 11:32:00,2016-05-09 11:34:19,1,-73.954734802246094,40.783542633056641,-73.957435607910156,40.776981353759766,N,139 +id1354279,2,2016-03-09 17:25:27,2016-03-09 18:19:31,4,-73.781845092773438,40.644733428955078,-73.995033264160156,40.745418548583984,N,3244 +id2539843,1,2016-04-16 08:22:45,2016-04-16 08:25:39,1,-74.001068115234375,40.741672515869141,-73.994796752929688,40.750179290771484,N,174 +id3451329,1,2016-03-23 08:29:16,2016-03-23 08:37:17,1,-73.995735168457031,40.744029998779297,-73.995597839355469,40.725048065185547,N,481 +id1844053,1,2016-05-31 23:47:19,2016-05-31 23:57:22,1,-74.00140380859375,40.721405029296875,-73.979583740234375,40.732898712158203,N,603 +id3608644,1,2016-04-24 20:59:26,2016-04-24 21:13:57,2,-73.983467102050781,40.7423095703125,-74.015167236328125,40.708347320556641,N,871 +id3936270,1,2016-06-23 16:11:09,2016-06-23 16:32:33,1,-73.954353332519531,40.778022766113281,-73.965797424316406,40.759784698486328,N,1284 +id3253323,2,2016-06-16 14:48:34,2016-06-16 14:59:12,1,-73.993385314941406,40.749053955078125,-74.00201416015625,40.739601135253906,N,638 +id0107845,2,2016-04-09 20:38:55,2016-04-09 20:48:00,1,-73.976722717285156,40.788082122802734,-73.983360290527344,40.7628173828125,N,545 +id1444196,1,2016-04-14 20:23:31,2016-04-14 20:38:37,3,-74.010643005371094,40.709213256835937,-74.00762939453125,40.740871429443359,N,906 +id2692711,2,2016-05-29 21:28:36,2016-05-29 21:37:33,2,-73.972824096679688,40.754894256591797,-73.985862731933594,40.756118774414063,N,537 +id0352325,2,2016-02-18 16:04:44,2016-02-18 16:21:23,2,-73.977607727050781,40.758026123046875,-73.962715148925781,40.764236450195313,N,999 +id3167695,2,2016-06-23 17:46:40,2016-06-23 18:09:50,2,-73.993728637695313,40.729339599609375,-73.984077453613281,40.754810333251953,N,1390 +id1468805,2,2016-04-27 01:45:56,2016-04-27 01:54:14,1,-73.994331359863281,40.721359252929688,-73.962356567382813,40.719799041748047,N,498 +id3023596,2,2016-06-03 16:10:28,2016-06-03 16:15:52,1,-73.994338989257813,40.733036041259766,-74.007781982421875,40.730270385742188,N,324 +id0612415,1,2016-04-30 21:50:02,2016-04-30 22:12:51,2,-73.987091064453125,40.745536804199219,-73.944732666015625,40.808338165283203,N,1369 +id3520787,2,2016-03-11 23:28:38,2016-03-11 23:38:12,1,-74.009300231933594,40.716339111328125,-74.003791809082031,40.748191833496094,N,574 +id1909877,2,2016-03-28 12:21:28,2016-03-28 12:54:43,6,-73.982757568359375,40.76361083984375,-74.003684997558594,40.71722412109375,N,1995 +id2638804,1,2016-02-28 12:35:35,2016-02-28 12:43:10,1,-73.989494323730469,40.741626739501953,-73.992546081542969,40.724708557128906,N,455 +id0645068,2,2016-02-23 14:03:25,2016-02-23 14:13:57,3,-73.992523193359375,40.725849151611328,-74.003433227539062,40.736213684082031,N,632 +id0610799,1,2016-03-09 15:37:32,2016-03-09 15:46:41,1,-73.965347290039063,40.771934509277344,-73.9481201171875,40.776252746582031,N,549 +id1019984,2,2016-01-10 10:47:41,2016-01-10 10:57:15,1,-73.985641479492188,40.735950469970703,-73.991485595703125,40.74884033203125,N,574 +id2053266,1,2016-03-10 13:56:35,2016-03-10 14:44:23,1,-73.781082153320313,40.645046234130859,-73.95404052734375,40.766078948974609,N,2868 +id1109311,1,2016-01-06 02:43:41,2016-01-06 02:51:19,2,-74.002456665039063,40.714740753173828,-73.990005493164062,40.747016906738281,N,458 +id1595346,2,2016-02-24 17:03:34,2016-02-24 17:06:17,1,-73.996406555175781,40.737968444824219,-73.9912109375,40.745059967041016,N,163 +id0860860,2,2016-03-04 11:19:29,2016-03-04 11:29:46,1,-73.995109558105469,40.749713897705078,-73.994400024414063,40.763355255126953,N,617 +id1333009,1,2016-04-04 13:46:33,2016-04-04 13:48:53,1,-73.955055236816406,40.768604278564453,-73.950454711914063,40.773975372314453,N,140 +id2460663,1,2016-03-05 10:36:00,2016-03-05 10:45:33,1,-73.966842651367188,40.772674560546875,-73.979896545410156,40.752132415771484,N,573 +id2602597,1,2016-05-20 21:44:26,2016-05-20 21:59:09,1,-73.979522705078125,40.759292602539063,-73.941291809082031,40.806812286376953,N,883 +id1335713,1,2016-06-22 18:27:25,2016-06-22 18:32:06,1,-73.9677734375,40.763042449951172,-73.962188720703125,40.767398834228516,N,281 +id3603516,1,2016-04-06 10:58:43,2016-04-06 11:30:08,1,-73.998100280761719,40.761070251464844,-73.997573852539063,40.722335815429687,N,1885 +id3661255,2,2016-02-16 21:55:53,2016-02-16 22:05:07,1,-73.982879638671875,40.756801605224609,-73.994857788085938,40.744560241699219,N,554 +id3284132,1,2016-04-09 21:26:06,2016-04-09 21:29:06,1,-73.9786376953125,40.772552490234375,-73.96820068359375,40.767837524414063,N,180 +id0372188,2,2016-04-17 12:43:51,2016-04-17 12:55:06,1,-73.965988159179688,40.756340026855469,-73.97540283203125,40.758499145507813,N,675 +id1596068,2,2016-03-29 18:44:27,2016-03-29 18:54:51,1,-73.970298767089844,40.750770568847656,-73.974571228027344,40.736465454101563,N,624 +id2444453,2,2016-06-23 17:14:45,2016-06-23 17:19:46,2,-73.98333740234375,40.744029998779297,-73.978347778320312,40.751258850097656,N,301 +id1088483,1,2016-02-14 23:02:38,2016-02-14 23:14:08,1,-73.955047607421875,40.773517608642578,-73.9488525390625,40.805828094482422,N,690 +id1533632,2,2016-06-15 10:56:22,2016-06-15 11:00:12,3,-73.95330810546875,40.772655487060547,-73.959571838378906,40.774082183837891,N,230 +id2657219,1,2016-05-31 16:53:52,2016-05-31 17:01:22,2,-73.971122741699219,40.766925811767578,-73.980606079101563,40.764518737792969,N,450 +id2466885,1,2016-05-17 09:16:12,2016-05-17 09:25:15,1,-73.965141296386719,40.755279541015625,-73.968498229980469,40.762798309326172,N,543 +id2709105,2,2016-05-02 23:20:16,2016-05-02 23:31:27,4,-73.959381103515625,40.771625518798828,-73.987533569335938,40.739013671875,N,671 +id2626604,1,2016-01-11 11:02:48,2016-01-11 11:10:43,1,-73.97833251953125,40.747989654541016,-73.992576599121094,40.737815856933594,N,475 +id1648937,2,2016-01-08 21:04:28,2016-01-08 21:20:38,5,-74.008201599121094,40.747165679931641,-73.978370666503906,40.752140045166016,N,970 +id2959124,2,2016-01-22 19:18:15,2016-01-22 19:21:28,1,-73.970207214355469,40.794319152832031,-73.969161987304688,40.803428649902344,N,193 +id2288758,1,2016-04-23 06:02:03,2016-04-23 06:07:14,4,-73.989913940429687,40.756732940673828,-73.977767944335937,40.751873016357422,N,311 +id1559191,1,2016-04-09 03:04:42,2016-04-09 03:10:16,1,-74.005607604980469,40.742095947265625,-74.002799987792969,40.739898681640625,N,334 +id2462956,1,2016-03-20 01:14:15,2016-03-20 01:27:32,1,-73.972763061523438,40.756130218505859,-73.983314514160156,40.764358520507813,N,797 +id0583623,2,2016-04-01 12:53:45,2016-04-01 12:56:12,2,-73.982337951660156,40.731319427490234,-73.989349365234375,40.734329223632813,N,147 +id2751335,2,2016-06-22 21:20:34,2016-06-22 21:38:00,1,-73.962257385253906,40.758205413818359,-73.982345581054687,40.73590087890625,N,1046 +id2830391,2,2016-05-19 22:34:01,2016-05-19 22:43:29,1,-73.987403869628906,40.744636535644531,-73.9727783203125,40.749668121337891,N,568 +id3257857,1,2016-01-27 13:27:06,2016-01-27 13:42:20,1,-73.996116638183594,40.744163513183594,-73.981796264648437,40.746410369873047,N,914 +id1405089,1,2016-06-16 22:50:09,2016-06-16 23:01:17,2,-73.984519958496094,40.724723815917969,-73.956123352050781,40.713829040527344,N,668 +id3938206,1,2016-06-25 14:59:55,2016-06-25 15:19:11,1,-73.975372314453125,40.741233825683594,-73.992828369140625,40.765804290771484,N,1156 +id3393541,1,2016-02-20 23:41:12,2016-02-20 23:50:37,1,-73.980278015136719,40.784049987792969,-73.938064575195313,40.84844970703125,N,565 +id3645321,1,2016-06-25 09:41:28,2016-06-25 09:49:14,1,-73.994003295898437,40.761634826660156,-73.978950500488281,40.782291412353516,N,466 +id2209912,2,2016-06-12 01:41:21,2016-06-12 01:59:50,2,-73.988227844238281,40.748615264892578,-73.952003479003906,40.804027557373047,N,1109 +id1589720,2,2016-03-12 10:40:41,2016-03-12 10:48:05,1,-73.977577209472656,40.754810333251953,-73.990760803222656,40.750511169433594,N,444 +id0789022,1,2016-01-17 02:45:36,2016-01-17 02:52:14,1,-73.9857177734375,40.769523620605469,-73.975059509277344,40.792682647705078,N,398 +id0885514,2,2016-04-16 13:58:26,2016-04-16 14:26:58,1,-73.982261657714844,40.755649566650391,-73.999237060546875,40.728240966796875,N,1712 +id0430451,2,2016-05-09 15:53:20,2016-05-09 16:35:44,6,-73.871002197265625,40.773868560791016,-73.954521179199219,40.781505584716797,N,2544 +id3829373,2,2016-06-26 16:18:34,2016-06-26 16:26:11,1,-73.999992370605469,40.761451721191406,-73.981437683105469,40.768661499023438,N,457 +id1333647,2,2016-06-10 18:29:17,2016-06-10 18:32:53,1,-73.993362426757813,40.7364501953125,-74.00823974609375,40.735561370849609,N,216 +id2169858,2,2016-04-23 13:03:17,2016-04-23 13:39:27,5,-74.004539489746094,40.710201263427734,-73.977401733398437,40.757797241210938,N,2170 +id2236217,1,2016-04-10 01:22:01,2016-04-10 01:48:30,1,-74.00201416015625,40.729564666748047,-73.940597534179687,40.719566345214844,N,1589 +id2757950,1,2016-03-02 06:51:27,2016-03-02 08:46:55,1,-73.781822204589844,40.644588470458984,-73.986602783203125,40.729976654052734,N,6928 +id2864155,1,2016-01-27 21:50:57,2016-01-27 22:05:19,1,-73.983543395996094,40.721965789794922,-73.978080749511719,40.748622894287109,N,862 +id2289938,2,2016-02-13 18:05:36,2016-02-13 18:26:22,1,-73.972442626953125,40.786571502685547,-73.984718322753906,40.759918212890625,N,1246 +id3419702,2,2016-01-03 02:21:33,2016-01-03 02:43:29,1,-73.987075805664063,40.76043701171875,-73.881820678710937,40.743820190429688,N,1316 +id0568768,2,2016-05-14 17:09:28,2016-05-14 17:11:58,2,-73.971672058105469,40.746429443359375,-73.9664306640625,40.752998352050781,N,150 +id2784763,2,2016-04-18 06:11:10,2016-04-18 06:24:12,1,-73.961357116699219,40.770095825195313,-74.002685546875,40.76068115234375,N,782 +id1783105,1,2016-02-06 22:18:53,2016-02-06 22:37:36,2,-73.981002807617187,40.737865447998047,-73.987258911132813,40.718776702880859,N,1123 +id2452180,1,2016-03-18 16:49:35,2016-03-18 16:56:02,1,-73.983489990234375,40.758571624755859,-73.973983764648438,40.761528015136719,N,387 +id3532890,1,2016-03-09 08:19:39,2016-03-09 08:27:12,1,-73.97186279296875,40.750518798828125,-73.982742309570313,40.760124206542969,N,453 +id1839716,1,2016-06-19 21:51:47,2016-06-19 22:41:40,1,-73.788131713867188,40.641571044921875,-73.967269897460937,40.792709350585937,N,2993 +id2458740,2,2016-05-25 12:26:49,2016-05-25 12:30:24,2,-73.973213195800781,40.785049438476563,-73.980209350585938,40.782199859619141,N,215 +id3091323,2,2016-01-15 07:29:00,2016-01-15 07:34:58,4,-73.953567504882813,40.782730102539063,-73.972579956054688,40.786716461181641,N,358 +id2708863,2,2016-04-13 09:54:44,2016-04-13 10:05:34,2,-73.954109191894531,40.774608612060547,-73.964385986328125,40.760688781738281,N,650 +id0694088,2,2016-06-09 23:05:33,2016-06-09 23:39:29,1,-73.973747253417969,40.750308990478516,-73.951187133789063,40.812271118164062,N,2036 +id0773526,2,2016-04-02 14:58:45,2016-04-03 14:19:55,6,-73.987991333007812,40.761341094970703,-74.002922058105469,40.756278991699219,N,84070 +id2576085,1,2016-04-28 19:27:23,2016-04-28 19:33:56,1,-73.993827819824219,40.75653076171875,-73.992485046386719,40.743694305419922,N,393 +id1879901,2,2016-06-24 22:51:09,2016-06-24 22:57:30,3,-74.008453369140625,40.711578369140625,-73.990043640136719,40.714031219482422,N,381 +id2835555,2,2016-03-07 07:36:30,2016-03-07 07:50:52,1,-73.995689392089844,40.764469146728516,-74.009956359863281,40.721328735351562,N,862 +id3720161,1,2016-03-22 12:10:46,2016-03-22 12:31:10,1,-73.954994201660156,40.789226531982422,-73.967140197753906,40.755958557128906,N,1224 +id3957499,1,2016-02-02 20:15:19,2016-02-02 20:20:53,2,-73.964370727539063,40.760257720947266,-73.97735595703125,40.746406555175781,N,334 +id0441769,2,2016-04-14 11:32:50,2016-04-14 12:21:51,1,-73.863761901855469,40.769901275634766,-73.97283935546875,40.756145477294922,N,2941 +id0555115,1,2016-02-21 15:15:17,2016-02-21 15:37:29,2,-73.988975524902344,40.754413604736328,-74.005287170410156,40.728801727294922,N,1332 +id2960807,1,2016-06-10 07:48:06,2016-06-10 08:03:42,1,-73.955047607421875,40.783573150634766,-73.979988098144531,40.762557983398438,N,936 +id3991060,1,2016-05-31 09:50:02,2016-05-31 10:05:22,2,-73.957344055175781,40.774200439453125,-73.970352172851562,40.799819946289063,N,920 +id1829359,1,2016-02-10 09:08:21,2016-02-10 09:20:03,1,-74.000877380371094,40.741855621337891,-73.987358093261719,40.753078460693359,N,702 +id2285650,2,2016-01-09 16:26:49,2016-01-09 16:31:27,1,-73.968414306640625,40.770408630371094,-73.960929870605469,40.766574859619141,N,278 +id0483241,1,2016-03-08 17:51:45,2016-03-08 18:04:20,1,-73.985946655273438,40.75592041015625,-74.008087158203125,40.739307403564453,N,755 +id3237927,2,2016-06-20 09:38:50,2016-06-20 09:44:18,4,-73.946380615234375,40.777271270751953,-73.960563659667969,40.775890350341797,N,328 +id0258030,1,2016-04-27 08:59:01,2016-04-27 09:03:54,1,-73.981254577636719,40.759346008300781,-73.989936828613281,40.769733428955078,N,293 +id1792471,1,2016-05-16 05:10:41,2016-05-16 05:23:21,1,-73.969169616699219,40.753971099853516,-73.870361328125,40.773487091064453,N,760 +id1765298,2,2016-01-02 17:44:41,2016-01-02 17:48:01,2,-73.966842651367188,40.763988494873047,-73.96826171875,40.759231567382812,N,200 +id0121445,1,2016-01-22 18:20:41,2016-01-22 18:28:43,1,-73.988166809082031,40.731979370117188,-73.99371337890625,40.740135192871094,N,482 +id2141712,2,2016-03-10 12:33:23,2016-03-10 12:36:36,1,-73.961700439453125,40.768310546875,-73.954940795898438,40.770759582519531,N,193 +id1781705,1,2016-01-20 08:47:56,2016-01-20 09:04:10,1,-73.954154968261719,40.774501800537109,-73.969902038574219,40.762836456298828,N,974 +id0635064,2,2016-02-21 03:12:33,2016-02-21 03:20:12,1,-73.98291015625,40.762664794921875,-73.955970764160156,40.766124725341797,N,459 +id3881097,1,2016-04-13 01:57:57,2016-04-13 02:21:51,1,-74.006637573242188,40.708393096923828,-73.9400634765625,40.834369659423828,N,1434 +id0333156,2,2016-02-21 00:07:18,2016-02-21 00:14:46,1,-73.991279602050781,40.727611541748047,-73.983680725097656,40.743965148925781,N,448 +id2641563,1,2016-04-17 00:28:34,2016-04-17 00:39:36,1,-73.979110717773437,40.740142822265625,-73.992279052734375,40.725090026855469,N,662 +id0575539,2,2016-05-20 22:45:27,2016-05-20 22:53:53,2,-73.991600036621094,40.731380462646484,-73.982223510742188,40.72467041015625,N,506 +id3041723,1,2016-03-08 22:28:46,2016-03-08 22:45:33,1,-73.992263793945313,40.725204467773438,-73.9493408203125,40.693881988525391,N,1007 +id2356638,2,2016-05-09 16:06:46,2016-05-09 16:36:34,1,-73.788475036621094,40.641288757324219,-73.773391723632812,40.763393402099609,N,1788 +id0307956,1,2016-05-05 09:31:36,2016-05-05 09:39:17,1,-74.014701843261719,40.718147277832031,-74.0076904296875,40.724613189697266,N,461 +id2406734,2,2016-06-04 12:47:40,2016-06-04 12:49:35,1,-73.949653625488281,40.772548675537109,-73.951011657714844,40.775379180908203,N,115 +id3082803,1,2016-05-23 19:20:21,2016-05-23 19:26:25,1,-73.957481384277344,40.782905578613281,-73.975456237792969,40.782241821289063,N,364 +id2113735,1,2016-06-01 08:42:36,2016-06-01 09:01:17,1,-73.981712341308594,40.732425689697266,-73.98175048828125,40.744880676269531,N,1121 +id1927497,1,2016-03-24 21:40:27,2016-03-24 21:49:11,1,-74.005134582519531,40.722923278808594,-73.989387512207031,40.727718353271484,N,524 +id1704654,2,2016-01-19 22:09:05,2016-01-19 22:12:41,2,-73.983314514160156,40.756061553955078,-73.979545593261719,40.761737823486328,N,216 +id0844190,2,2016-03-07 08:36:13,2016-03-07 08:53:04,5,-73.998626708984375,40.744987487792969,-73.97479248046875,40.755500793457031,N,1011 +id3943617,2,2016-01-07 20:41:13,2016-01-07 20:53:31,1,-73.978866577148438,40.762920379638672,-73.993446350097656,40.736446380615234,N,738 +id3393147,1,2016-01-25 11:37:38,2016-01-25 11:41:47,1,-73.961723327636719,40.768356323242187,-73.953483581542969,40.775154113769531,N,249 +id0898992,2,2016-02-15 12:26:13,2016-02-15 12:36:23,1,-73.989112854003906,40.758068084716797,-73.972587585449219,40.780712127685547,N,610 +id1005849,2,2016-04-23 21:24:08,2016-04-23 21:31:13,1,-73.982254028320312,40.723678588867188,-73.991165161132813,40.717571258544922,N,425 +id0416714,2,2016-01-24 22:14:26,2016-01-24 22:15:40,4,-74.001106262207031,40.731483459472656,-74.000389099121094,40.735420227050781,N,74 +id3732183,1,2016-06-30 19:01:32,2016-06-30 19:08:02,1,-74.005233764648437,40.740440368652344,-74.007682800292969,40.746723175048828,N,390 +id1413824,1,2016-04-08 22:57:32,2016-04-08 23:00:51,1,-73.996200561523438,40.760021209716797,-73.997871398925781,40.760688781738281,N,199 +id1811000,2,2016-03-26 03:05:32,2016-03-26 03:17:34,2,-73.981422424316406,40.724903106689453,-73.98883056640625,40.748523712158203,N,722 +id0584251,2,2016-01-10 00:33:36,2016-01-10 00:38:58,2,-73.985389709472656,40.747406005859375,-73.997085571289063,40.736644744873047,N,322 +id3567438,2,2016-06-04 23:06:15,2016-06-04 23:17:19,1,-74.008056640625,40.740352630615234,-73.9918212890625,40.756256103515625,N,664 +id0073966,2,2016-03-01 18:19:12,2016-03-01 18:41:44,4,-73.969207763671875,40.757190704345703,-74.004180908203125,40.749469757080078,N,1352 +id2156826,2,2016-01-21 21:13:29,2016-01-21 21:31:08,2,-73.993598937988281,40.729278564453125,-73.957992553710938,40.760471343994141,N,1059 +id3318910,1,2016-04-28 16:09:42,2016-04-28 16:25:55,1,-73.955177307128906,40.779975891113281,-73.970733642578125,40.76165771484375,N,973 +id1955226,2,2016-02-05 19:48:20,2016-02-05 19:58:14,1,-73.959632873535156,40.782676696777344,-73.981353759765625,40.763420104980469,N,594 +id2536374,1,2016-05-14 01:27:01,2016-05-14 01:49:47,1,-73.980270385742187,40.722332000732422,-73.977531433105469,40.665805816650391,N,1366 +id3672388,2,2016-02-29 00:33:12,2016-02-29 00:50:33,1,-73.981376647949219,40.772743225097656,-73.978462219238281,40.745773315429688,N,1041 +id1647207,2,2016-03-02 21:20:57,2016-03-02 21:27:41,1,-73.963905334472656,40.774044036865234,-73.967422485351563,40.793140411376953,N,404 +id3987109,2,2016-05-15 11:50:31,2016-05-15 12:02:59,5,-73.975486755371094,40.751861572265625,-73.978347778320312,40.772590637207031,N,748 +id3717768,2,2016-04-16 00:02:34,2016-04-16 00:08:52,2,-73.998626708984375,40.719650268554688,-73.988876342773438,40.729019165039063,N,378 +id2864187,1,2016-04-27 14:07:16,2016-04-27 14:27:06,1,-73.977012634277344,40.756317138671875,-73.955543518066406,40.764190673828125,N,1190 +id1228453,1,2016-03-05 17:41:15,2016-03-05 17:47:39,2,-73.982170104980469,40.771343231201172,-73.979927062988281,40.780437469482422,N,384 +id3584323,1,2016-05-19 11:37:44,2016-05-19 11:59:05,1,-73.97613525390625,40.748661041259766,-74.016952514648438,40.706050872802734,N,1281 +id1430082,1,2016-01-13 01:17:43,2016-01-13 01:20:54,1,-73.9840087890625,40.748908996582031,-73.994285583496094,40.738880157470703,N,191 +id0838201,1,2016-06-13 12:24:00,2016-06-13 12:51:03,1,-73.863502502441406,40.770061492919922,-73.972526550292969,40.753044128417969,N,1623 +id2446371,1,2016-01-04 04:35:52,2016-01-04 04:54:04,2,-73.984024047851563,40.765060424804688,-73.87225341796875,40.774307250976562,N,1092 +id1635398,2,2016-01-20 21:19:17,2016-01-20 21:25:41,1,-73.984153747558594,40.754520416259766,-73.981529235839844,40.741130828857422,N,384 +id1906809,1,2016-02-07 15:33:17,2016-02-07 16:12:23,1,-73.957122802734375,40.783306121826172,-73.78887939453125,40.647342681884766,N,2346 +id1067939,1,2016-03-11 08:31:33,2016-03-11 09:20:53,1,-73.975311279296875,40.765090942382813,-73.790428161621094,40.646793365478516,N,2960 +id0996070,2,2016-06-19 21:17:36,2016-06-19 21:34:35,2,-73.9615478515625,40.772670745849609,-73.990463256835938,40.724880218505859,N,1019 +id2406708,1,2016-01-12 11:16:16,2016-01-12 11:45:51,1,-73.990234375,40.751388549804688,-73.966827392578125,40.761363983154297,N,1775 +id0526717,1,2016-03-10 05:34:40,2016-03-10 05:44:05,1,-73.971450805664063,40.782325744628906,-73.994277954101563,40.750244140625,N,565 +id1986161,2,2016-03-18 07:21:52,2016-03-18 07:38:37,3,-73.990898132324219,40.750728607177734,-73.961181640625,40.76837158203125,N,1005 +id0469346,1,2016-04-04 11:22:54,2016-04-04 11:42:44,2,-73.977531433105469,40.749641418457031,-74.008903503417969,40.706279754638672,N,1190 +id2831636,2,2016-05-17 14:40:25,2016-05-17 15:19:01,5,-73.995048522949219,40.733909606933594,-73.954368591308594,40.76422119140625,N,2316 +id3792045,1,2016-04-20 22:52:33,2016-04-20 23:10:30,1,-73.991363525390625,40.750190734863281,-73.952705383300781,40.781429290771484,N,1077 +id3558459,1,2016-05-25 05:51:11,2016-05-25 05:58:47,1,-73.947547912597656,40.783393859863281,-73.974945068359375,40.7633056640625,N,456 +id0045626,2,2016-06-13 08:56:26,2016-06-13 09:01:19,1,-73.955520629882813,40.788669586181641,-73.972053527832031,40.796699523925781,N,293 +id2659971,1,2016-05-11 15:07:46,2016-05-11 16:11:42,1,-73.790336608886719,40.646961212158203,-73.997833251953125,40.719333648681641,N,3836 +id0851477,1,2016-04-14 10:49:22,2016-04-14 11:08:27,1,-73.988632202148437,40.743000030517578,-74.009933471679688,40.720211029052734,N,1145 +id0716970,2,2016-02-15 23:15:46,2016-02-15 23:25:23,5,-73.870895385742187,40.773712158203125,-73.889389038085938,40.751438140869141,N,577 +id1629987,2,2016-06-29 11:42:02,2016-06-29 11:57:21,1,-73.96771240234375,40.756546020507813,-73.986480712890625,40.753353118896484,N,919 +id1422694,2,2016-04-11 06:37:14,2016-04-11 06:57:33,5,-73.958297729492188,40.648891448974609,-73.992431640625,40.691890716552734,N,1219 +id3409021,2,2016-03-24 13:12:05,2016-03-24 13:21:36,1,-73.97589111328125,40.751472473144531,-73.988601684570313,40.757900238037109,N,571 +id2933027,1,2016-05-31 09:05:43,2016-05-31 09:14:31,1,-73.997543334960938,40.741561889648438,-74.002006530761719,40.721614837646484,N,528 +id3464011,2,2016-04-11 22:49:53,2016-04-11 22:58:28,5,-73.990989685058594,40.734989166259766,-73.978240966796875,40.72705078125,N,515 +id0947349,2,2016-03-14 00:02:50,2016-03-14 00:10:44,2,-74.004257202148438,40.742149353027344,-73.987640380859375,40.759151458740234,N,474 +id2702261,1,2016-06-12 12:38:15,2016-06-12 12:57:33,2,-74.001075744628906,40.729228973388672,-73.971321105957031,40.763526916503906,N,1158 +id3214959,2,2016-02-09 10:03:02,2016-02-09 10:14:25,1,-73.964065551757813,40.766227722167969,-73.975341796875,40.752372741699219,N,683 +id0136325,1,2016-06-28 16:29:56,2016-06-28 16:56:26,1,-73.974601745605469,40.762168884277344,-73.985565185546875,40.746417999267578,N,1590 +id1447600,1,2016-03-14 12:24:12,2016-03-14 12:33:12,1,-73.96636962890625,40.754005432128906,-73.953659057617188,40.767169952392578,N,540 +id0396170,1,2016-03-12 16:03:57,2016-03-12 16:22:43,1,-73.964546203613281,40.760627746582031,-73.985031127929688,40.724185943603516,N,1126 +id1947560,2,2016-05-01 04:58:57,2016-05-01 05:00:23,6,-73.953811645507813,40.811351776123047,-73.957656860351563,40.815078735351562,N,86 +id3196526,1,2016-03-05 14:39:54,2016-03-05 14:55:35,1,-73.930191040039063,40.752048492431641,-73.892967224121094,40.750545501708984,N,941 +id1936087,2,2016-05-22 12:03:49,2016-05-22 12:11:50,5,-73.967247009277344,40.760410308837891,-73.960693359375,40.768310546875,N,481 +id0658266,2,2016-01-09 23:42:26,2016-01-09 23:48:45,3,-73.991867065429688,40.726051330566406,-73.994972229003906,40.733951568603516,N,379 +id3965442,1,2016-06-19 01:33:05,2016-06-19 01:52:48,1,-73.986351013183594,40.722095489501953,-73.947555541992188,40.662593841552734,N,1183 +id1123208,1,2016-02-05 14:46:04,2016-02-05 14:55:54,1,-73.962715148925781,40.774879455566406,-73.952529907226563,40.766441345214844,N,590 +id0945606,2,2016-05-05 10:30:42,2016-05-05 10:31:22,1,-73.965187072753906,40.771629333496094,-73.962333679199219,40.770839691162109,N,40 +id2981411,2,2016-02-02 08:17:49,2016-02-02 08:35:53,1,-73.987373352050781,40.732879638671875,-73.959396362304688,40.773601531982422,N,1084 +id1312416,2,2016-02-15 00:38:43,2016-02-15 00:45:04,1,-73.98321533203125,40.723487854003906,-73.986763000488281,40.733169555664063,N,381 +id2465622,1,2016-06-28 10:11:07,2016-06-28 10:35:12,1,-74.006332397460938,40.723293304443359,-73.991058349609375,40.755435943603516,N,1445 +id3017276,2,2016-02-22 17:04:07,2016-02-22 17:06:45,2,-73.965690612792969,40.761978149414063,-73.960700988769531,40.766670227050781,N,158 +id2611461,1,2016-04-17 13:04:09,2016-04-17 13:19:54,1,-73.97796630859375,40.752212524414063,-73.997817993164062,40.766143798828125,N,945 +id3269670,1,2016-05-31 12:38:48,2016-05-31 12:44:21,1,-73.962394714355469,40.810298919677734,-73.9708251953125,40.796863555908203,N,333 +id0743606,1,2016-02-09 18:21:42,2016-02-09 18:32:10,1,-73.972282409667969,40.758407592773438,-73.94818115234375,40.773830413818359,N,628 +id1965671,2,2016-01-12 08:00:17,2016-01-12 08:17:12,1,-73.958816528320312,40.765041351318359,-73.977928161621094,40.749080657958984,N,1015 +id1219346,2,2016-02-27 03:42:54,2016-02-27 04:30:16,2,-74.006195068359375,40.743053436279297,-73.9298095703125,40.703018188476562,N,2842 +id2844769,2,2016-05-18 17:20:46,2016-05-18 17:33:19,1,-74.002349853515625,40.729175567626953,-74.008377075195312,40.714427947998047,N,753 +id3652773,1,2016-02-21 14:39:06,2016-02-21 14:51:51,1,-74.00341796875,40.727085113525391,-73.977104187011719,40.750595092773438,N,765 +id3280140,2,2016-03-08 12:06:41,2016-03-08 12:17:47,1,-73.971893310546875,40.757400512695313,-73.988716125488281,40.735141754150391,N,666 +id2743727,2,2016-03-12 01:05:20,2016-03-12 01:11:24,1,-73.987472534179688,40.749038696289063,-73.980758666992188,40.744831085205078,N,364 +id0882468,2,2016-05-17 03:59:37,2016-05-17 04:18:23,1,-73.995697021484375,40.767120361328125,-73.952812194824219,40.746780395507813,N,1126 +id2274200,1,2016-05-07 15:24:35,2016-05-07 15:36:43,1,-73.989425659179687,40.762908935546875,-73.986869812011719,40.751319885253906,N,728 +id1496950,2,2016-04-03 09:40:53,2016-04-03 09:53:00,1,-73.998809814453125,40.761009216308594,-73.964401245117188,40.767959594726562,N,727 +id2838847,2,2016-05-06 17:08:42,2016-05-06 17:20:32,2,-73.980056762695312,40.781009674072266,-73.96124267578125,40.777549743652344,N,710 +id2456177,1,2016-06-04 23:19:20,2016-06-04 23:39:44,1,-73.957473754882813,40.776954650878906,-73.981315612792969,40.733264923095703,N,1224 +id3626065,2,2016-03-16 07:54:11,2016-03-16 08:13:18,1,-73.977317810058594,40.725849151611328,-73.966270446777344,40.764671325683594,N,1147 +id0803458,2,2016-02-03 00:39:24,2016-02-03 00:55:42,1,-73.987213134765625,40.733242034912109,-73.9388427734375,40.802593231201172,N,978 +id0027673,2,2016-02-03 22:45:21,2016-02-03 22:50:50,1,-73.972930908203125,40.743671417236328,-73.987472534179688,40.749839782714844,N,329 +id0060718,2,2016-01-30 21:46:49,2016-01-30 21:55:23,1,-73.990875244140625,40.745418548583984,-73.977073669433594,40.764278411865234,N,514 +id3579565,2,2016-05-21 16:41:24,2016-05-21 17:05:55,1,-73.993782043457031,40.751838684082031,-73.968292236328125,40.791458129882813,N,1471 +id0279538,1,2016-01-04 18:08:37,2016-01-04 18:25:19,1,-73.962516784667969,40.76715087890625,-73.966720581054687,40.803436279296875,N,1002 +id1102546,2,2016-06-19 10:14:09,2016-06-19 10:42:25,6,-73.862899780273438,40.769760131835938,-73.987472534179688,40.770778656005859,N,1696 +id0170737,1,2016-01-04 20:40:54,2016-01-04 20:53:53,1,-73.997726440429687,40.729160308837891,-73.948471069335938,40.7183837890625,N,779 +id2795533,2,2016-06-23 23:17:33,2016-06-23 23:35:23,1,-73.984138488769531,40.742801666259766,-73.989936828613281,40.775909423828125,N,1070 +id1108193,1,2016-01-16 09:17:54,2016-01-16 09:28:37,2,-73.948532104492188,40.789230346679688,-73.979248046875,40.7818603515625,N,643 +id3111221,2,2016-03-12 12:38:33,2016-03-12 12:54:23,1,-73.972137451171875,40.781356811523437,-73.992446899414062,40.755130767822266,N,950 +id3841187,1,2016-06-21 07:32:51,2016-06-21 07:47:11,1,-73.957191467285156,40.785896301269531,-73.9727783203125,40.759361267089844,N,860 +id3376471,2,2016-04-15 20:42:15,2016-04-15 20:42:54,1,-73.972183227539063,40.786365509033203,-73.972305297851563,40.786090850830078,N,39 +id3096636,2,2016-03-10 11:52:46,2016-03-10 12:05:29,1,-73.996749877929687,40.762741088867188,-73.982170104980469,40.747623443603516,N,763 +id3377390,2,2016-03-15 19:19:11,2016-03-15 19:32:31,1,-73.979812622070313,40.755519866943359,-73.960777282714844,40.76055908203125,N,800 +id1798883,2,2016-06-11 16:22:43,2016-06-11 16:43:46,1,-73.962890625,40.766422271728516,-73.999427795410156,40.738590240478516,N,1263 +id3349350,1,2016-04-08 23:24:40,2016-04-08 23:37:13,1,-73.978103637695313,40.725242614746094,-73.999824523925781,40.721729278564453,N,753 +id3131760,2,2016-06-12 21:54:52,2016-06-12 22:00:48,1,-73.988151550292969,40.749900817871094,-73.994667053222656,40.745441436767578,N,356 +id3199078,1,2016-03-11 09:18:45,2016-03-11 10:02:37,2,-73.791099548339844,40.646026611328125,-73.992286682128906,40.748607635498047,N,2632 +id3019050,1,2016-01-08 18:05:20,2016-01-08 18:18:34,1,-73.981880187988281,40.768638610839844,-73.9642333984375,40.794795989990234,N,794 +id1817028,2,2016-06-16 19:55:08,2016-06-16 20:11:17,5,-73.956443786621094,40.778270721435547,-73.989509582519531,40.762565612792969,N,969 +id2142801,2,2016-05-23 16:05:33,2016-05-23 16:43:54,1,-73.780487060546875,40.646041870117187,-73.977241516113281,40.754508972167969,N,2301 +id1662776,2,2016-03-06 05:56:28,2016-03-06 05:59:18,1,-73.986228942871094,40.726249694824219,-73.979896545410156,40.725337982177734,N,170 +id1171215,2,2016-02-18 09:34:49,2016-02-18 09:56:42,1,-73.979072570800781,40.785228729248047,-74.005966186523438,40.715518951416016,N,1313 +id3191569,1,2016-01-17 03:27:35,2016-01-17 04:08:51,4,-73.999961853027344,40.730682373046875,-73.907791137695312,40.683704376220703,N,2476 +id3391024,2,2016-04-11 15:09:28,2016-04-11 15:23:21,3,-73.991310119628906,40.750167846679688,-73.982681274414063,40.730491638183594,N,833 +id3797223,1,2016-02-01 21:07:38,2016-02-01 21:34:12,1,-73.995903015136719,40.738605499267578,-73.92913818359375,40.700218200683594,N,1594 +id3031340,2,2016-01-28 18:01:00,2016-01-28 18:06:58,1,-73.997207641601563,40.741840362548828,-73.989036560058594,40.737400054931641,N,358 +id1159078,1,2016-02-09 14:22:55,2016-02-09 14:32:20,1,-73.97216796875,40.79449462890625,-73.982398986816406,40.774250030517578,N,565 +id1444032,1,2016-01-10 13:41:26,2016-01-10 13:46:25,1,-73.970108032226563,40.799602508544922,-73.974800109863281,40.787528991699219,N,299 +id0037633,2,2016-06-19 08:52:19,2016-06-19 09:01:15,1,-73.969367980957031,40.800605773925781,-73.980705261230469,40.781600952148437,N,536 +id0825885,1,2016-01-29 17:20:41,2016-01-29 17:42:29,1,-73.982696533203125,40.750869750976563,-73.983322143554688,40.762104034423828,N,1308 +id2686917,2,2016-04-07 17:38:14,2016-04-07 18:04:36,1,-73.871040344238281,40.773880004882812,-73.951820373535156,40.809188842773438,N,1582 +id2641159,1,2016-01-14 07:49:59,2016-01-14 07:55:01,1,-73.993026733398437,40.754058837890625,-73.982131958007813,40.760288238525391,N,302 +id1920339,2,2016-05-20 17:46:40,2016-05-20 17:59:38,1,-74.007881164550781,40.7052001953125,-74.011787414550781,40.716720581054688,N,778 +id0902462,1,2016-02-07 09:17:08,2016-02-07 09:36:03,1,-73.968818664550781,40.793502807617188,-73.972099304199219,40.758113861083984,N,1135 +id0942307,1,2016-02-03 18:11:52,2016-02-03 18:16:24,1,-73.972007751464844,40.759544372558594,-73.964469909667969,40.756580352783203,N,272 +id2481624,1,2016-06-02 12:40:02,2016-06-02 13:13:36,1,-73.985466003417969,40.753795623779297,-74.177391052246094,40.694995880126953,N,2014 +id1517029,1,2016-05-31 04:03:05,2016-05-31 04:24:31,1,-73.781852722167969,40.644706726074219,-73.962181091308594,40.764888763427734,N,1286 +id3775708,2,2016-05-20 02:36:10,2016-05-20 02:46:22,6,-73.992156982421875,40.727378845214844,-73.964431762695312,40.758930206298828,N,612 +id3486054,1,2016-04-08 20:49:02,2016-04-08 21:19:24,2,-74.010826110839844,40.709465026855469,-73.94317626953125,40.674888610839844,N,1822 +id2518068,2,2016-02-11 17:00:08,2016-02-11 17:08:07,1,-73.965782165527344,40.774349212646484,-73.9766845703125,40.764442443847656,N,479 +id2067847,2,2016-03-23 23:31:59,2016-03-23 23:41:04,1,-73.97528076171875,40.752838134765625,-73.997299194335938,40.752079010009766,N,545 +id1458489,2,2016-05-18 18:17:27,2016-05-18 18:55:26,1,-73.873046875,40.774082183837891,-73.985511779785156,40.752128601074219,N,2279 +id3245865,2,2016-05-16 22:12:50,2016-05-16 22:20:24,5,-74.002685546875,40.726692199707031,-73.986793518066406,40.733791351318359,N,454 +id3133623,2,2016-06-07 22:27:14,2016-06-07 22:33:03,6,-73.974327087402344,40.783466339111328,-73.974327087402344,40.793376922607422,N,349 +id3079334,2,2016-06-21 21:42:28,2016-06-21 21:59:44,5,-73.972358703613281,40.756031036376953,-74.002822875976563,40.760398864746094,N,1036 +id3456698,2,2016-02-21 19:06:03,2016-02-21 19:26:48,1,-73.974342346191406,40.790828704833984,-73.929672241210938,40.854778289794922,N,1245 +id1703395,2,2016-01-08 07:45:26,2016-01-08 08:08:56,2,-73.996315002441406,40.694393157958984,-73.975090026855469,40.755542755126953,N,1410 +id2619163,2,2016-06-18 17:36:40,2016-06-18 17:46:21,1,-73.957542419433594,40.782020568847656,-73.972099304199219,40.765571594238281,N,581 +id1376058,1,2016-03-02 00:04:31,2016-03-02 00:12:37,1,-73.951606750488281,40.714012145996094,-73.949516296386719,40.695426940917969,N,486 +id0672547,1,2016-03-29 15:42:53,2016-03-29 15:57:04,1,-74.002281188964844,40.729148864746094,-73.994049072265625,40.764793395996094,N,851 +id3875188,1,2016-03-06 00:07:38,2016-03-06 00:14:17,1,-74.000045776367188,40.742950439453125,-73.990516662597656,40.756191253662109,N,399 +id0403943,2,2016-04-29 07:58:56,2016-04-29 08:12:33,5,-73.956039428710937,40.784393310546875,-73.964057922363281,40.765113830566406,N,817 +id3878163,2,2016-05-18 19:32:57,2016-05-18 19:44:04,6,-73.967277526855469,40.760269165039063,-73.92572021484375,40.772388458251953,N,667 +id1474282,1,2016-02-24 15:48:37,2016-02-24 16:17:56,1,-73.979209899902344,40.749523162841797,-73.9666748046875,40.795967102050781,N,1759 +id3873105,1,2016-04-24 11:12:39,2016-04-24 11:22:47,2,-73.961502075195313,40.774444580078125,-73.979644775390625,40.783840179443359,N,608 +id3559731,1,2016-04-08 23:19:46,2016-04-08 23:47:16,1,-73.9918212890625,40.725872039794922,-73.9625244140625,40.763542175292969,N,1650 +id1373618,1,2016-04-17 07:20:31,2016-04-17 07:32:41,1,-73.990005493164062,40.725456237792969,-74.016525268554688,40.704757690429688,N,730 +id0537124,2,2016-01-18 14:18:09,2016-01-18 14:23:56,1,-74.015472412109375,40.715408325195313,-74.009101867675781,40.726070404052734,N,347 +id2069117,1,2016-05-04 23:53:24,2016-05-05 00:06:23,2,-73.963829040527344,40.710605621337891,-74.005149841308594,40.71929931640625,N,779 +id3990854,1,2016-01-09 21:03:15,2016-01-09 21:17:58,2,-73.99322509765625,40.742267608642578,-73.982978820800781,40.764682769775391,N,883 +id2887722,2,2016-04-23 19:53:05,2016-04-23 20:04:32,1,-73.962516784667969,40.778690338134766,-73.972068786621094,40.756492614746094,N,687 +id2063208,2,2016-02-20 21:31:24,2016-02-20 21:36:41,2,-73.948486328125,40.782211303710938,-73.9498291015625,40.772129058837891,N,317 +id0618063,2,2016-04-08 09:21:20,2016-04-08 09:38:16,1,-73.991798400878906,40.749732971191406,-73.9681396484375,40.7728271484375,N,1016 +id3714297,1,2016-06-14 16:19:37,2016-06-14 16:37:41,1,-73.927375793457031,40.807052612304688,-73.946983337402344,40.794189453125,N,1084 +id2984513,2,2016-03-08 17:05:10,2016-03-08 17:18:23,1,-73.982078552246094,40.767978668212891,-73.951919555664062,40.766578674316406,N,793 +id0709345,2,2016-01-31 13:09:23,2016-01-31 13:48:50,2,-73.788200378417969,40.647781372070313,-73.975059509277344,40.755619049072266,N,2367 +id0458315,2,2016-02-17 03:52:10,2016-02-17 03:55:42,1,-73.994239807128906,40.750831604003906,-74.002876281738281,40.754520416259766,N,212 +id2338412,2,2016-01-06 21:44:23,2016-01-06 22:06:16,2,-74.002082824707031,40.750720977783203,-73.919937133789063,40.765918731689453,N,1313 +id2316966,2,2016-04-29 18:34:53,2016-04-29 18:44:06,5,-73.994041442871094,40.751178741455078,-73.980522155761719,40.748458862304687,N,553 +id1940919,2,2016-01-29 15:26:07,2016-01-29 16:12:37,2,-73.782859802246094,40.64434814453125,-73.95379638671875,40.767391204833984,N,2790 +id0199587,1,2016-06-16 15:54:38,2016-06-16 16:10:52,1,-73.987022399902344,40.739334106445313,-73.97760009765625,40.750675201416016,N,974 +id1839663,1,2016-03-24 19:21:18,2016-03-24 19:28:49,1,-73.969764709472656,40.7574462890625,-73.95721435546875,40.768161773681641,N,451 +id2444410,1,2016-01-19 14:03:32,2016-01-19 14:20:02,1,-73.957862854003906,40.773647308349609,-73.967887878417969,40.7637939453125,N,990 +id1193585,1,2016-01-31 19:01:47,2016-01-31 19:14:57,1,-73.95196533203125,40.777763366699219,-73.973365783691406,40.748123168945313,N,790 +id0888908,2,2016-02-11 22:33:25,2016-02-11 22:42:28,1,-73.986038208007813,40.726478576660156,-73.991630554199219,40.726802825927734,N,543 +id1028007,1,2016-01-09 10:15:27,2016-01-09 10:21:44,1,-74.002174377441406,40.734405517578125,-74.00592041015625,40.741336822509766,N,377 +id0913031,2,2016-06-05 21:54:30,2016-06-05 22:11:00,1,-73.985183715820313,40.757968902587891,-73.994621276855469,40.716629028320313,N,990 +id0568701,1,2016-04-20 23:38:58,2016-04-21 00:00:22,1,-73.987815856933594,40.719127655029297,-73.940536499023438,40.676460266113281,N,1284 +id1759559,2,2016-02-02 08:31:52,2016-02-02 08:57:48,1,-73.99176025390625,40.731365203857422,-74.001296997070313,40.756397247314453,N,1556 +id3081242,2,2016-04-01 07:49:52,2016-04-01 08:11:14,1,-73.863090515136719,40.769779205322266,-73.923789978027344,40.770309448242187,N,1282 +id2968505,2,2016-04-01 16:17:06,2016-04-01 16:22:50,1,-73.975578308105469,40.751537322998047,-73.976425170898437,40.741680145263672,N,344 +id2550055,1,2016-02-11 18:32:24,2016-02-11 18:56:04,2,-73.873016357421875,40.774101257324219,-73.986175537109375,40.750625610351563,N,1420 +id1657820,2,2016-03-09 20:29:12,2016-03-09 20:39:28,5,-73.994064331054688,40.746158599853516,-73.988746643066406,40.731311798095703,N,616 +id1817186,1,2016-06-12 14:31:16,2016-06-12 14:37:39,1,-74.013664245605469,40.714691162109375,-74.00714111328125,40.734371185302734,N,383 +id3997120,2,2016-02-20 16:44:15,2016-02-20 17:02:11,5,-73.965797424316406,40.762435913085937,-73.994194030761719,40.741062164306641,N,1076 +id0980711,1,2016-06-01 08:44:43,2016-06-01 08:49:26,1,-73.992042541503906,40.749778747558594,-74.005645751953125,40.740085601806641,N,283 +id1328862,1,2016-03-25 18:31:32,2016-03-25 18:46:28,2,-73.992340087890625,40.760120391845703,-74.002189636230469,40.732936859130859,N,896 +id1857910,1,2016-06-09 13:34:15,2016-06-09 14:42:10,3,-73.870964050292969,40.773624420166016,-73.980545043945313,40.755355834960938,N,4075 +id0541349,1,2016-03-23 20:27:00,2016-03-23 20:47:55,1,-73.788406372070313,40.647197723388672,-73.915855407714844,40.625350952148438,N,1255 +id1753881,2,2016-01-02 15:01:15,2016-01-02 15:14:06,5,-74.004119873046875,40.742141723632813,-73.9786376953125,40.753719329833984,N,771 +id2921077,1,2016-05-25 23:06:56,2016-05-25 23:31:31,3,-73.960281372070313,40.762321472167969,-73.882942199707031,40.74700927734375,N,1475 +id0222160,2,2016-03-05 02:59:41,2016-03-05 03:07:10,1,-74.001960754394531,40.739582061767578,-73.989234924316406,40.735103607177734,N,449 +id0651792,2,2016-04-16 09:43:26,2016-04-16 09:52:09,1,-74.005477905273438,40.712230682373047,-74.012733459472656,40.702289581298828,N,523 +id2606945,2,2016-05-25 17:33:15,2016-05-25 17:46:46,2,-73.985671997070313,40.743751525878906,-73.978279113769531,40.75091552734375,N,811 +id2789541,2,2016-05-11 17:02:49,2016-05-11 17:20:38,2,-73.977836608886719,40.754787445068359,-73.9805908203125,40.774208068847656,N,1069 +id0255117,2,2016-05-17 17:05:57,2016-05-17 17:10:48,1,-73.980903625488281,40.744831085205078,-73.988800048828125,40.734767913818359,N,291 +id2509367,2,2016-05-28 22:30:27,2016-05-28 22:50:08,1,-73.959312438964844,40.767478942871094,-74.007606506347656,40.741081237792969,N,1181 +id1119203,1,2016-01-19 17:13:28,2016-01-19 17:27:33,1,-73.990768432617188,40.749839782714844,-73.985595703125,40.761993408203125,N,845 +id0488308,1,2016-02-09 10:29:20,2016-02-09 10:37:13,1,-73.997062683105469,40.725643157958984,-74.004150390625,40.741424560546875,N,473 +id1902327,1,2016-06-16 17:06:27,2016-06-16 17:22:01,1,-73.988609313964844,40.763919830322266,-73.996498107910156,40.763385772705078,N,934 +id1255395,2,2016-02-21 03:50:35,2016-02-21 04:06:16,1,-73.983146667480469,40.755512237548828,-74.014869689941406,40.718135833740234,N,941 +id3687265,1,2016-01-28 11:51:04,2016-01-28 12:08:03,1,-73.980369567871094,40.748371124267578,-73.966384887695313,40.767326354980469,N,1019 +id3738922,1,2016-02-12 11:33:01,2016-02-12 11:33:09,1,-73.781867980957031,40.644676208496094,-73.781822204589844,40.644588470458984,N,8 +id1938592,2,2016-01-21 12:01:51,2016-01-21 12:09:19,2,-74.007820129394531,40.73870849609375,-73.993476867675781,40.742908477783203,N,448 +id3490593,2,2016-01-09 23:39:05,2016-01-09 23:48:11,1,-73.9869384765625,40.729751586914063,-73.988151550292969,40.7239990234375,N,546 +id2861026,1,2016-02-18 21:43:58,2016-02-18 22:02:17,1,-73.992904663085938,40.753261566162109,-73.950523376464844,40.779178619384766,N,1099 +id2375163,2,2016-05-12 21:33:40,2016-05-12 21:42:19,1,-73.991043090820313,40.760631561279297,-74.005210876464844,40.736160278320312,N,519 +id1650136,2,2016-03-10 21:43:10,2016-03-10 21:54:39,2,-73.995849609375,40.754287719726563,-73.995132446289062,40.733264923095703,N,689 +id3414208,1,2016-02-29 22:13:51,2016-02-29 22:22:07,1,-73.973617553710938,40.751575469970703,-73.985069274902344,40.760009765625,N,496 +id3296757,1,2016-01-09 01:44:43,2016-01-09 02:09:06,1,-73.939437866210937,40.693561553955078,-73.889854431152344,40.663398742675781,N,1463 +id0000278,1,2016-06-04 23:59:12,2016-06-05 00:21:28,2,-73.933769226074219,40.802631378173828,-73.992111206054687,40.742588043212891,N,1336 +id1490087,1,2016-02-11 19:11:30,2016-02-11 19:21:29,1,-73.964378356933594,40.760208129882813,-73.949234008789063,40.726234436035156,N,599 +id2463978,1,2016-03-15 14:27:03,2016-03-15 15:02:54,1,-73.863670349121094,40.769657135009766,-73.998970031738281,40.732387542724609,N,2151 +id0104423,1,2016-01-16 00:35:36,2016-01-16 00:40:22,1,-73.991058349609375,40.735012054443359,-73.997177124023438,40.724857330322266,N,286 +id3519262,2,2016-05-26 09:42:55,2016-05-26 10:09:39,6,-73.986732482910156,40.732227325439453,-73.9698486328125,40.766216278076172,N,1604 +id1134842,2,2016-02-27 18:39:40,2016-02-27 19:01:28,1,-73.96563720703125,40.762920379638672,-73.983543395996094,40.757331848144531,N,1308 +id1377509,2,2016-03-18 06:08:10,2016-03-18 06:15:50,1,-73.955528259277344,40.782718658447266,-73.983848571777344,40.755630493164063,N,460 +id1549380,2,2016-01-17 00:44:34,2016-01-17 00:57:35,2,-74.002044677734375,40.745597839355469,-73.97607421875,40.754642486572266,N,781 +id2700311,1,2016-03-31 08:26:44,2016-03-31 08:29:19,1,-73.955497741699219,40.772529602050781,-73.958740234375,40.768047332763672,N,155 +id3142379,2,2016-01-01 13:56:42,2016-01-01 14:02:35,1,-73.951698303222656,40.824954986572266,-73.942680358886719,40.836986541748047,N,353 +id1408100,2,2016-02-18 15:00:37,2016-02-18 15:08:08,1,-73.963348388671875,40.766071319580078,-73.953651428222656,40.765670776367188,N,451 +id0136410,1,2016-06-16 01:12:11,2016-06-16 01:20:45,1,-74.008338928222656,40.721836090087891,-74.007003784179688,40.748733520507813,N,514 +id1821233,1,2016-04-09 18:19:49,2016-04-09 18:21:58,2,-73.947006225585938,40.771823883056641,-73.949668884277344,40.776840209960938,N,129 +id0031578,1,2016-01-11 22:58:34,2016-01-11 23:27:37,1,-73.781745910644531,40.644706726074219,-73.995384216308594,40.735736846923828,N,1743 +id0352463,1,2016-06-11 21:26:37,2016-06-11 21:46:34,1,-74.013786315917969,40.713478088378906,-73.997528076171875,40.721366882324219,N,1197 +id1180974,2,2016-03-10 23:35:02,2016-03-10 23:47:53,6,-74.004631042480469,40.737579345703125,-73.991783142089844,40.722328186035156,N,771 +id3826698,2,2016-02-16 22:27:56,2016-02-16 22:40:13,1,-73.981086730957031,40.759441375732422,-74.001480102539063,40.746086120605469,N,737 +id3009519,1,2016-05-16 17:16:25,2016-05-16 17:25:43,1,-73.942665100097656,40.790515899658203,-73.960151672363281,40.773002624511719,N,558 +id2215151,1,2016-02-24 21:36:49,2016-02-24 21:50:51,1,-73.970664978027344,40.759040832519531,-73.987327575683594,40.758937835693359,N,842 +id3056666,1,2016-02-24 19:41:42,2016-02-24 19:44:57,1,-73.987030029296875,40.760391235351563,-73.994903564453125,40.760505676269531,N,195 +id3361396,1,2016-02-28 01:35:11,2016-02-28 01:44:18,1,-74.005546569824219,40.738548278808594,-74.016471862792969,40.708179473876953,N,547 +id1724084,1,2016-06-03 21:59:00,2016-06-03 22:59:38,2,-73.784133911132813,40.648624420166016,-73.987220764160156,40.759281158447266,N,3638 +id1159511,1,2016-01-05 08:41:37,2016-01-05 08:52:41,1,-73.98040771484375,40.738597869873047,-73.998443603515625,40.732246398925781,N,664 +id0056782,2,2016-05-28 14:15:06,2016-05-28 15:12:46,6,-73.790573120117187,40.643989562988281,-73.984809875488281,40.770191192626953,N,3460 +id3645857,2,2016-06-05 15:08:06,2016-06-05 15:16:44,5,-73.982330322265625,40.757621765136719,-73.974113464355469,40.748130798339844,N,518 +id2643491,2,2016-01-06 14:36:35,2016-01-06 14:47:37,1,-73.981781005859375,40.768398284912109,-73.966400146484375,40.7900390625,N,662 +id2401523,2,2016-05-03 01:36:21,2016-05-03 01:51:46,2,-74.00262451171875,40.749870300292969,-73.964149475097656,40.806407928466797,N,925 +id3957654,2,2016-04-17 13:36:27,2016-04-17 13:53:29,5,-73.994087219238281,40.75128173828125,-73.98468017578125,40.779529571533203,N,1022 +id3007157,1,2016-06-23 20:07:57,2016-06-23 20:10:33,2,-73.9652099609375,40.755954742431641,-73.964500427246094,40.753780364990234,N,156 +id0245263,1,2016-06-04 19:08:44,2016-06-04 19:13:39,3,-73.958633422851563,40.772747039794922,-73.947990417480469,40.771236419677734,N,295 +id0537190,2,2016-05-14 06:53:30,2016-05-14 06:56:16,1,-73.989570617675781,40.772991180419922,-73.983283996582031,40.767688751220703,N,166 +id3226782,1,2016-04-24 19:22:11,2016-04-24 19:34:12,1,-73.994819641113281,40.732471466064453,-73.974227905273438,40.750373840332031,N,721 +id1606701,1,2016-05-14 18:29:46,2016-05-14 19:13:03,1,-73.971099853515625,40.755573272705078,-73.970344543457031,40.764495849609375,Y,2597 +id0154441,2,2016-01-10 16:00:03,2016-01-10 16:05:25,1,-73.975357055664063,40.752426147460938,-73.988319396972656,40.737442016601562,N,322 +id3846944,2,2016-02-16 09:16:28,2016-02-16 09:19:12,3,-73.9456787109375,40.778141021728516,-73.951652526855469,40.77362060546875,N,164 +id1889534,1,2016-05-18 10:25:56,2016-05-18 10:35:35,1,-74.002723693847656,40.739494323730469,-73.995864868164063,40.748817443847656,N,579 +id0018830,2,2016-04-02 16:00:28,2016-04-02 16:26:24,1,-74.001480102539063,40.7310791015625,-74.006317138671875,40.749961853027344,N,1556 +id1812164,1,2016-01-17 00:25:11,2016-01-17 00:28:30,1,-73.985298156738281,40.767940521240234,-73.984405517578125,40.774757385253906,N,199 +id1098555,2,2016-01-25 17:11:06,2016-01-25 17:29:59,1,-73.95758056640625,40.779678344726563,-73.969802856445313,40.793949127197266,N,1133 +id1473753,2,2016-03-04 20:20:13,2016-03-04 20:25:26,3,-73.987060546875,40.756374359130859,-74.000015258789063,40.761287689208984,N,313 +id0536221,2,2016-01-03 09:39:24,2016-01-03 09:43:22,1,-74.00390625,40.743080139160156,-73.998077392578125,40.737850189208984,N,238 +id3918943,1,2016-02-08 07:52:59,2016-02-08 08:05:18,1,-73.998786926269531,40.761268615722656,-74.011543273925781,40.714202880859375,N,739 +id2466028,2,2016-04-20 20:27:02,2016-04-20 20:36:43,1,-73.992942810058594,40.763118743896484,-73.965377807617187,40.759670257568359,N,581 +id0270323,2,2016-03-27 16:25:22,2016-03-27 16:34:08,2,-74.005638122558594,40.740550994873047,-73.992469787597656,40.730171203613281,N,526 +id0685662,2,2016-04-23 23:18:04,2016-04-23 23:21:34,2,-73.982032775878906,40.768661499023438,-73.982383728027344,40.776779174804687,N,210 +id3605098,2,2016-02-19 18:45:16,2016-02-19 18:48:02,1,-74.004127502441406,40.731288909912109,-74.009262084960937,40.728729248046875,N,166 +id2050280,1,2016-01-01 17:50:26,2016-01-01 18:04:41,4,-74.007858276367188,40.740478515625,-73.984649658203125,40.720382690429687,N,855 +id3595750,2,2016-05-28 12:35:54,2016-05-28 12:44:38,1,-74.000450134277344,40.761650085449219,-73.992668151855469,40.758399963378906,N,524 +id3267480,1,2016-04-09 13:16:03,2016-04-09 13:25:38,1,-73.981330871582031,40.75921630859375,-73.973701477050781,40.779590606689453,N,575 +id3022896,2,2016-05-30 18:44:24,2016-05-30 19:06:04,1,-73.984161376953125,40.725189208984375,-74.000236511230469,40.762508392333984,N,1300 +id1511841,1,2016-03-11 14:37:10,2016-03-11 14:55:30,1,-73.994735717773437,40.750431060791016,-73.987594604492187,40.775783538818359,N,1100 +id1122198,2,2016-06-11 15:01:40,2016-06-11 15:25:13,5,-74.0096435546875,40.740131378173828,-73.999351501464844,40.693359375,N,1413 +id1967843,1,2016-06-30 21:35:09,2016-06-30 21:42:02,1,-73.982177734375,40.772396087646484,-73.966819763183594,40.798900604248047,N,413 +id2440071,2,2016-03-05 11:32:43,2016-03-05 11:39:34,1,-73.999763488769531,40.720626831054687,-74.001190185546875,40.731418609619141,N,411 +id3525165,1,2016-06-26 06:35:27,2016-06-26 06:48:41,1,-73.928550720214844,40.759552001953125,-73.985687255859375,40.748046875,N,794 +id3589844,1,2016-05-23 18:17:57,2016-05-23 18:39:45,1,-73.982337951660156,40.731586456298828,-73.989822387695313,40.75634765625,N,1308 +id0494376,1,2016-04-04 06:26:15,2016-04-04 06:35:50,1,-74.004081726074219,40.738296508789063,-73.970596313476563,40.763095855712891,N,575 +id3205200,1,2016-01-14 10:14:28,2016-01-14 10:20:49,2,-73.947807312011719,40.7750244140625,-73.95562744140625,40.764316558837891,N,381 +id1523979,2,2016-06-28 15:03:22,2016-06-28 15:07:13,1,-73.985641479492188,40.755149841308594,-73.988441467285156,40.759319305419922,N,231 +id1662275,2,2016-05-04 09:26:13,2016-05-04 09:31:12,1,-73.996566772460938,40.737579345703125,-73.9906005859375,40.739650726318359,N,299 +id0522891,1,2016-04-16 23:51:33,2016-04-16 23:56:31,1,-73.992973327636719,40.751903533935547,-73.992042541503906,40.764377593994141,N,298 +id0968241,2,2016-02-08 12:59:34,2016-02-08 13:13:42,1,-73.94940185546875,40.772430419921875,-73.870620727539063,40.773880004882812,N,848 +id2550877,2,2016-06-06 17:30:23,2016-06-06 17:38:20,2,-74.0064697265625,40.742290496826172,-73.994972229003906,40.755260467529297,N,477 +id1870272,1,2016-02-11 20:56:47,2016-02-11 21:15:41,1,-73.967849731445312,40.755443572998047,-74.00457763671875,40.741691589355469,N,1134 +id2944940,2,2016-01-09 17:53:28,2016-01-09 18:06:10,1,-73.965934753417969,40.758602142333984,-73.988800048828125,40.736476898193359,N,762 +id1483840,1,2016-02-08 07:56:55,2016-02-08 08:02:20,1,-73.979087829589844,40.750148773193359,-73.98797607421875,40.743904113769531,N,325 +id0873333,1,2016-01-31 11:31:49,2016-01-31 11:51:07,1,-73.983779907226562,40.738113403320312,-74.0010986328125,40.755458831787109,N,1158 +id3588551,2,2016-04-30 15:00:18,2016-04-30 15:15:18,1,-74.002922058105469,40.744289398193359,-73.989212036132812,40.729290008544922,N,900 +id3593103,1,2016-04-14 17:45:32,2016-04-14 17:58:45,2,-73.989799499511719,40.756683349609375,-73.977767944335937,40.754417419433594,N,793 +id3816688,2,2016-02-03 19:14:12,2016-02-03 19:42:55,2,-73.973800659179688,40.764236450195313,-74.004531860351563,40.742103576660156,N,1723 +id0938207,2,2016-04-07 07:28:54,2016-04-07 07:59:12,1,-73.946792602539062,40.775749206542969,-73.783500671386719,40.643661499023438,N,1818 +id0086820,2,2016-01-09 19:10:49,2016-01-09 19:35:18,2,-73.987525939941406,40.732631683349609,-73.975112915039063,40.786884307861328,N,1469 +id0601543,1,2016-06-07 09:20:10,2016-06-07 09:39:47,1,-73.9786376953125,40.747623443603516,-73.981452941894531,40.762233734130859,N,1177 +id1100079,2,2016-03-26 11:15:07,2016-03-26 12:43:19,1,-73.863945007324219,40.769664764404297,-73.982894897460938,40.760208129882813,N,5292 +id2373414,2,2016-02-19 21:24:19,2016-02-19 21:37:03,1,-73.983230590820313,40.766128540039063,-73.954078674316406,40.779750823974609,N,764 +id3499379,2,2016-03-09 22:14:42,2016-03-09 22:22:01,1,-74.005485534667969,40.740467071533203,-73.992507934570313,40.743038177490234,N,439 +id2866370,2,2016-02-10 07:41:10,2016-02-10 07:56:43,1,-73.976669311523438,40.745361328125,-73.861892700195312,40.768459320068359,N,933 +id1617503,1,2016-06-06 09:19:43,2016-06-06 09:45:52,1,-73.991043090820313,40.755420684814453,-73.975440979003906,40.76141357421875,N,1569 +id0349268,2,2016-06-13 10:35:58,2016-06-13 10:42:55,1,-73.966400146484375,40.767478942871094,-73.955841064453125,40.779621124267578,N,417 +id3257854,1,2016-02-26 07:36:35,2016-02-26 07:45:17,1,-73.945388793945313,40.778396606445313,-73.962654113769531,40.765598297119141,N,522 +id3474654,1,2016-03-01 17:30:35,2016-03-01 18:19:53,2,-73.789726257324219,40.644046783447266,-73.986907958984375,40.739429473876953,N,2958 +id3451180,1,2016-02-17 22:01:28,2016-02-17 22:26:14,1,-73.863861083984375,40.769748687744141,-73.929115295410156,40.683254241943359,N,1486 +id1390804,1,2016-04-07 10:20:26,2016-04-07 10:36:34,1,-74.000892639160156,40.731906890869141,-73.986839294433594,40.739654541015625,N,968 +id0112920,1,2016-04-20 06:39:37,2016-04-20 06:43:44,1,-73.970985412597656,40.751678466796875,-73.981224060058594,40.737285614013672,N,247 +id1075340,1,2016-02-14 00:54:31,2016-02-14 00:59:24,1,-73.975173950195313,40.752468109130859,-73.983818054199219,40.737865447998047,N,293 +id3392273,1,2016-05-17 20:44:35,2016-05-17 20:48:04,1,-73.98724365234375,40.736053466796875,-73.979057312011719,40.744430541992188,N,209 +id0568430,1,2016-06-30 17:37:43,2016-06-30 17:45:00,1,-73.98504638671875,40.763645172119141,-73.988540649414062,40.778606414794922,N,437 +id0433889,2,2016-02-19 19:57:38,2016-02-19 20:05:02,1,-73.973152160644531,40.758041381835937,-73.973556518554688,40.748619079589844,N,444 +id2055256,1,2016-03-25 08:15:07,2016-03-25 08:24:42,1,-73.992019653320313,40.750339508056641,-73.978141784667969,40.754726409912109,N,575 +id1656541,1,2016-04-02 06:22:36,2016-04-02 06:33:24,1,-73.964157104492188,40.770450592041016,-73.995803833007812,40.737056732177734,N,648 +id1254605,2,2016-05-25 17:42:42,2016-05-25 17:49:43,6,-73.986846923828125,40.729881286621094,-73.980293273925781,40.726978302001953,N,421 +id2393020,2,2016-01-12 23:31:33,2016-01-12 23:38:27,2,-73.989662170410156,40.759479522705078,-73.9959716796875,40.74884033203125,N,414 +id3281845,1,2016-01-14 10:35:54,2016-01-14 10:45:07,1,-73.958724975585937,40.766361236572266,-73.951553344726563,40.78363037109375,N,553 +id0316916,2,2016-04-06 09:19:28,2016-04-06 09:51:32,1,-73.863517761230469,40.769725799560547,-73.96697998046875,40.758377075195312,N,1924 +id2090983,2,2016-01-02 08:16:01,2016-01-02 08:24:32,1,-73.974273681640625,40.742408752441406,-73.980979919433594,40.767719268798828,N,511 +id3703686,2,2016-04-25 00:58:30,2016-04-25 01:13:55,1,-73.991661071777344,40.749889373779297,-73.955001831054687,40.734249114990234,N,925 +id3221607,2,2016-02-07 01:25:05,2016-02-07 01:39:31,5,-73.942977905273437,40.802528381347656,-73.892951965332031,40.867729187011719,N,866 +id2972636,2,2016-02-29 18:38:17,2016-02-29 18:47:38,2,-73.968826293945313,40.757431030273437,-73.953147888183594,40.776809692382813,N,561 +id2814404,1,2016-06-13 14:18:30,2016-06-13 14:54:02,2,-73.790069580078125,40.646797180175781,-73.974632263183594,40.750556945800781,Y,2132 +id0060512,1,2016-03-17 13:43:53,2016-03-17 14:06:13,1,-73.995521545410156,40.759544372558594,-73.981468200683594,40.735599517822266,N,1340 +id0371946,1,2016-04-30 12:40:29,2016-04-30 12:45:31,4,-73.953903198242188,40.770462036132813,-73.963668823242188,40.777046203613281,N,302 +id2638263,1,2016-06-29 09:59:26,2016-06-29 10:09:19,1,-74.006881713867188,40.748779296875,-74.007118225097656,40.725730895996094,N,593 +id0931188,2,2016-03-25 12:48:06,2016-03-25 12:52:37,2,-73.982093811035156,40.775222778320312,-73.979461669921875,40.784400939941406,N,271 +id3678611,1,2016-03-02 18:48:14,2016-03-02 18:54:14,1,-73.973419189453125,40.763839721679688,-73.96051025390625,40.768318176269531,N,360 +id0593447,2,2016-05-01 10:32:20,2016-05-01 10:43:36,1,-73.99462890625,40.690235137939453,-73.983734130859375,40.67236328125,N,676 +id0220931,2,2016-05-04 13:31:24,2016-05-04 13:41:13,1,-74.008071899414063,40.722900390625,-73.998519897460938,40.723171234130859,N,589 +id0151642,1,2016-05-16 09:16:21,2016-05-16 09:23:23,1,-74.001708984375,40.730819702148437,-73.992431640625,40.743396759033203,N,422 +id3078785,2,2016-05-11 13:37:18,2016-05-11 13:41:01,2,-73.976776123046875,40.788280487060547,-73.981399536132812,40.780979156494141,N,223 +id1377960,2,2016-05-23 10:35:14,2016-05-23 11:05:31,1,-73.994056701660156,40.751228332519531,-73.971412658691406,40.763511657714844,N,1817 +id2317916,1,2016-02-27 02:02:31,2016-02-27 02:15:20,1,-73.989837646484375,40.729576110839844,-73.988716125488281,40.764102935791016,N,769 +id0518009,2,2016-01-22 20:23:02,2016-01-22 20:28:50,1,-73.993736267089844,40.727424621582031,-74.003639221191406,40.727634429931641,N,348 +id1650615,2,2016-04-16 17:39:40,2016-04-16 17:54:49,2,-73.986503601074219,40.776981353759766,-73.956710815429687,40.770957946777344,N,909 +id0958106,2,2016-02-13 14:08:23,2016-02-13 14:19:01,1,-73.97381591796875,40.763046264648437,-73.981483459472656,40.763851165771484,N,638 +id0607133,2,2016-04-04 11:36:49,2016-04-04 11:55:39,6,-74.007209777832031,40.727508544921875,-73.985389709472656,40.753009796142578,N,1130 +id2089290,2,2016-01-09 13:24:45,2016-01-09 13:38:07,1,-73.979438781738281,40.730098724365234,-73.994384765625,40.749351501464844,N,802 +id0938642,1,2016-06-14 12:48:13,2016-06-14 12:56:54,2,-73.987770080566406,40.743675231933594,-73.992935180664062,40.749668121337891,Y,521 +id0412781,1,2016-06-29 06:25:52,2016-06-29 06:36:33,1,-73.990264892578125,40.756385803222656,-73.977546691894531,40.738880157470703,N,641 +id0047371,1,2016-04-08 23:32:10,2016-04-08 23:54:31,1,-73.988311767578125,40.745391845703125,-73.957740783691406,40.801284790039063,N,1341 +id3882470,1,2016-01-19 06:44:49,2016-01-19 06:58:32,1,-73.962875366210938,40.758926391601563,-73.981491088867187,40.752132415771484,N,823 +id1536710,2,2016-06-24 19:03:02,2016-06-24 19:30:50,1,-73.991813659667969,40.733486175537109,-73.97576904296875,40.68707275390625,N,1668 +id0090788,2,2016-04-10 09:40:52,2016-04-10 09:44:04,1,-74.001670837402344,40.745697021484375,-73.997695922851562,40.737884521484375,N,192 +id3834730,1,2016-01-28 10:20:59,2016-01-28 11:03:35,1,-73.978103637695313,40.685066223144531,-73.997589111328125,40.746421813964844,N,2556 +id1959440,1,2016-06-14 17:26:15,2016-06-14 17:40:49,1,-73.970413208007813,40.78741455078125,-73.956001281738281,40.787994384765625,N,874 +id1423336,1,2016-04-03 11:31:54,2016-04-03 11:35:10,1,-73.992317199707031,40.690448760986328,-73.996612548828125,40.681159973144531,N,196 +id0153779,2,2016-01-02 11:50:14,2016-01-02 11:56:29,1,-73.961479187011719,40.774314880371094,-73.974655151367188,40.758193969726563,N,375 +id0184348,1,2016-01-22 20:09:03,2016-01-22 20:25:33,1,-73.96734619140625,40.760181427001953,-73.944068908691406,40.716690063476563,N,990 +id2159710,1,2016-01-22 17:59:51,2016-01-22 18:02:57,1,-73.961982727050781,40.776298522949219,-73.96856689453125,40.785129547119141,N,186 +id3071912,2,2016-03-26 15:50:55,2016-03-26 15:58:31,2,-73.9771728515625,40.75885009765625,-73.986930847167969,40.744590759277344,N,456 +id0035867,1,2016-04-11 07:58:23,2016-04-11 08:06:35,1,-73.994186401367188,40.751209259033203,-73.982147216796875,40.742866516113281,N,492 +id3158932,1,2016-03-12 04:13:55,2016-03-12 04:29:47,2,-73.977760314941406,40.745765686035156,-73.848373413085938,40.713077545166016,N,952 +id0466100,1,2016-04-22 20:53:09,2016-04-22 20:59:41,1,-73.91015625,40.874420166015625,-73.919197082519531,40.864635467529297,N,392 +id3167590,2,2016-01-07 23:05:51,2016-01-07 23:16:23,2,-73.987892150878906,40.760009765625,-73.966270446777344,40.793399810791016,N,632 +id3617210,2,2016-03-15 17:51:32,2016-03-16 17:18:04,1,-73.965606689453125,40.765781402587891,-73.972648620605469,40.75341796875,N,84392 +id1642836,2,2016-04-15 17:24:08,2016-04-15 17:46:43,1,-73.96435546875,40.77093505859375,-73.98565673828125,40.752811431884766,N,1355 +id2308894,1,2016-03-17 23:07:16,2016-03-17 23:15:39,3,-73.982383728027344,40.771438598632812,-73.991409301757812,40.749893188476562,N,503 +id0222174,1,2016-04-01 11:32:49,2016-04-01 12:14:29,3,-74.008049011230469,40.708187103271484,-73.949676513671875,40.830776214599609,N,2500 +id3357785,2,2016-04-08 18:14:18,2016-04-08 18:35:18,1,-74.012474060058594,40.707145690917969,-73.977622985839844,40.734024047851563,N,1260 +id1078997,2,2016-05-19 22:54:27,2016-05-19 23:23:31,5,-74.004989624023438,40.706718444824219,-73.946426391601563,40.707801818847656,N,1744 +id2180603,2,2016-02-05 13:58:23,2016-02-05 14:05:02,3,-74.004531860351563,40.747810363769531,-74.004493713378906,40.742145538330078,N,399 +id0632434,2,2016-01-09 11:55:05,2016-01-09 12:00:02,1,-73.999099731445313,40.734127044677734,-73.991653442382813,40.748916625976563,N,297 +id0561441,1,2016-04-14 02:03:24,2016-04-14 02:07:34,4,-73.999893188476562,40.728324890136719,-73.999801635742187,40.720539093017578,N,250 +id0073002,2,2016-05-25 20:34:43,2016-05-25 20:43:36,3,-74.015937805175781,40.711410522460937,-73.984809875488281,40.710178375244141,N,533 +id0312319,1,2016-06-17 19:01:34,2016-06-17 19:05:05,1,-74.000709533691406,40.661373138427734,-74.000709533691406,40.661373138427734,N,211 +id2551387,2,2016-04-13 00:21:57,2016-04-13 00:29:01,1,-74.0032958984375,40.726802825927734,-73.99249267578125,40.753761291503906,N,424 +id2598029,1,2016-06-03 19:04:16,2016-06-03 19:27:56,1,-73.980598449707031,40.76531982421875,-74.002456665039063,40.719104766845703,N,1420 +id0928604,1,2016-02-27 10:52:22,2016-02-27 10:59:06,1,-73.991294860839844,40.739185333251953,-74.001731872558594,40.728549957275391,N,404 +id2936840,2,2016-04-30 08:14:44,2016-04-30 08:21:03,1,-73.938041687011719,40.804691314697266,-73.9429931640625,40.816501617431641,N,379 +id2529926,2,2016-02-22 06:46:58,2016-02-22 06:48:08,3,-73.994003295898437,40.756431579589844,-73.998092651367188,40.751640319824219,N,70 +id1281353,2,2016-01-12 21:46:35,2016-01-12 21:54:55,1,-73.968788146972656,40.754745483398438,-73.990463256835938,40.745277404785156,N,500 +id0685452,1,2016-01-16 18:18:53,2016-01-16 18:25:14,2,-73.963226318359375,40.757293701171875,-73.951972961425781,40.777206420898438,N,381 +id3430071,1,2016-03-07 19:59:13,2016-03-07 20:04:20,1,-73.955513000488281,40.804347991943359,-73.9610595703125,40.806636810302734,N,307 +id1729686,1,2016-02-29 00:11:24,2016-02-29 00:28:26,1,-73.997772216796875,40.761520385742187,-73.985488891601562,40.723834991455078,N,1022 +id3347892,2,2016-06-29 17:49:29,2016-06-29 18:04:39,1,-73.974868774414063,40.754791259765625,-73.9842529296875,40.769710540771484,N,910 +id1066947,1,2016-04-18 14:07:57,2016-04-18 14:18:32,2,-74.001274108886719,40.741531372070313,-73.996261596679687,40.732742309570313,N,635 +id0905405,2,2016-04-17 13:50:27,2016-04-17 14:03:45,2,-74.002861022949219,40.760532379150391,-73.986068725585937,40.768157958984375,N,798 +id0942827,2,2016-01-16 23:31:26,2016-01-16 23:38:11,1,-74.003273010253906,40.735309600830078,-74.006988525390625,40.725788116455078,N,405 +id1143761,2,2016-06-21 21:38:06,2016-06-21 21:50:13,1,-74.004562377929687,40.707027435302734,-73.990074157714844,40.729061126708984,N,727 +id0729761,2,2016-01-22 13:42:05,2016-01-22 13:43:48,1,-73.970367431640625,40.793918609619141,-73.970161437988281,40.789649963378906,N,103 +id1811517,1,2016-02-28 18:46:43,2016-02-28 18:54:42,1,-73.993461608886719,40.741950988769531,-73.990829467773437,40.765876770019531,N,479 +id2390403,1,2016-05-15 00:01:49,2016-05-15 00:10:19,4,-73.975921630859375,40.759105682373047,-73.98779296875,40.743911743164063,N,510 +id3576039,1,2016-02-19 12:21:15,2016-02-19 12:24:01,1,-73.952308654785156,40.771396636962891,-73.952308654785156,40.771396636962891,N,166 +id2177858,1,2016-06-17 00:09:27,2016-06-17 00:29:13,2,-74.00738525390625,40.743324279785156,-73.959671020507813,40.759773254394531,N,1186 +id0497796,2,2016-05-30 16:57:02,2016-05-30 17:00:59,1,-73.964042663574219,40.767425537109375,-73.974868774414063,40.752056121826172,N,237 +id1331811,1,2016-05-15 12:55:56,2016-05-15 13:06:52,2,-73.994003295898437,40.732593536376953,-73.991004943847656,40.753677368164063,N,656 +id3040072,2,2016-05-08 00:47:31,2016-05-08 01:10:02,1,-73.992485046386719,40.728694915771484,-73.975593566894531,40.790515899658203,N,1351 +id2611582,2,2016-04-11 23:48:43,2016-04-12 00:04:59,1,-73.985443115234375,40.731838226318359,-73.999221801757812,40.7613525390625,N,976 +id0332769,2,2016-03-19 03:42:50,2016-03-19 03:57:55,1,-73.95361328125,40.719741821289063,-73.950820922851563,40.665439605712891,N,905 +id0422205,1,2016-02-08 08:44:06,2016-02-08 08:51:15,1,-73.971099853515625,40.764324188232422,-73.953262329101563,40.788318634033203,N,429 +id2719964,2,2016-04-11 21:23:29,2016-04-11 21:32:09,5,-73.996261596679687,40.7218017578125,-73.987319946289062,40.730796813964844,N,520 +id3461855,1,2016-03-19 15:42:32,2016-03-19 15:59:53,1,-73.978561401367188,40.777385711669922,-73.964309692382813,40.760494232177734,N,1041 +id0868717,1,2016-02-20 10:06:13,2016-02-20 10:08:59,1,-73.953193664550781,40.778495788574219,-73.949729919433594,40.784492492675781,N,166 +id0872443,2,2016-06-20 19:01:17,2016-06-20 19:03:53,6,-74.009651184082031,40.710987091064453,-74.013847351074219,40.702480316162109,N,156 +id1600361,1,2016-06-02 13:35:58,2016-06-02 13:51:59,1,-73.974395751953125,40.756473541259766,-73.956512451171875,40.773822784423828,N,961 +id2512866,1,2016-04-05 07:49:40,2016-04-05 07:54:57,1,-73.965248107910156,40.790927886962891,-73.961204528808594,40.801891326904297,N,317 +id1656291,2,2016-02-28 15:25:20,2016-02-28 15:28:07,1,-74.010482788085937,40.71453857421875,-74.016311645507813,40.716381072998047,N,167 +id3058263,2,2016-05-10 10:01:33,2016-05-10 10:43:01,1,-73.960052490234375,40.776523590087891,-74.017196655273438,40.677936553955078,N,2488 +id1425055,2,2016-06-26 05:50:01,2016-06-26 06:04:17,5,-73.952438354492188,40.772541046142578,-73.902259826660156,40.868610382080078,N,856 +id3449676,2,2016-03-26 11:15:00,2016-03-26 11:30:41,1,-73.988456726074219,40.742813110351563,-73.995979309082031,40.763847351074219,N,941 +id3183913,1,2016-05-13 15:06:26,2016-05-13 15:29:15,1,-73.977584838867187,40.788970947265625,-73.951026916503906,40.79095458984375,N,1369 +id3650432,2,2016-04-01 11:19:43,2016-04-01 11:23:56,1,-73.993232727050781,40.752201080322266,-74.002067565917969,40.755718231201172,N,253 +id2169826,2,2016-04-19 10:24:15,2016-04-19 10:34:32,6,-73.992301940917969,40.712661743164062,-73.99041748046875,40.718948364257813,N,617 +id0722825,1,2016-05-01 14:11:19,2016-05-01 14:18:12,1,-74.007087707519531,40.737571716308594,-73.991348266601563,40.733242034912109,N,413 +id0950232,1,2016-04-01 15:27:24,2016-04-01 15:34:59,1,-73.956161499023438,40.779689788818359,-73.9456787109375,40.791957855224609,N,455 +id1406586,1,2016-06-12 06:45:59,2016-06-12 06:49:47,1,-73.972869873046875,40.785930633544922,-73.964225769042969,40.801605224609375,N,228 +id1999683,2,2016-02-26 16:11:37,2016-02-26 16:35:13,1,-73.979942321777344,40.780941009521484,-73.994598388671875,40.745994567871094,N,1416 +id1828248,2,2016-06-18 02:51:47,2016-06-18 02:52:48,1,-73.98651123046875,40.734100341796875,-73.982719421386719,40.739311218261719,N,61 +id1339103,2,2016-01-27 19:37:01,2016-01-27 19:45:39,5,-73.961448669433594,40.777790069580078,-73.968650817871094,40.766429901123047,N,518 +id1680717,2,2016-02-06 16:41:24,2016-02-06 16:53:45,1,-73.966850280761719,40.793758392333984,-73.946372985839844,40.816532135009766,N,741 +id1989625,2,2016-05-02 22:30:00,2016-05-02 22:38:37,2,-73.984588623046875,40.754180908203125,-73.989700317382812,40.73419189453125,N,517 +id0980565,1,2016-05-16 22:58:50,2016-05-16 23:10:56,1,-73.972023010253906,40.749996185302734,-74.005294799804688,40.740230560302734,N,726 +id0437910,2,2016-02-03 23:14:02,2016-02-03 23:18:16,1,-73.994941711425781,40.725559234619141,-73.987030029296875,40.739147186279297,N,254 +id0089780,1,2016-01-09 19:16:49,2016-01-09 19:22:58,2,-73.986465454101563,40.722316741943359,-73.998519897460938,40.724555969238281,N,369 +id2428327,1,2016-05-02 09:27:04,2016-05-02 09:37:04,1,-73.982955932617188,40.693084716796875,-74.000511169433594,40.718391418457031,N,600 +id1607185,2,2016-03-20 18:20:58,2016-03-20 18:24:09,5,-73.98114013671875,40.741283416748047,-73.975830078125,40.751567840576172,N,191 +id0571749,1,2016-06-04 23:15:52,2016-06-04 23:21:47,1,-73.992919921875,40.736869812011719,-74.003410339355469,40.730690002441406,N,355 +id3748936,2,2016-01-10 11:50:33,2016-01-10 11:59:40,1,-73.967880249023438,40.765628814697266,-73.982444763183594,40.772571563720703,N,547 +id0517660,2,2016-03-10 07:35:38,2016-03-10 07:46:48,1,-73.980697631835938,40.763763427734375,-73.987159729003906,40.7392578125,N,670 +id2748596,2,2016-05-27 18:06:38,2016-05-27 18:22:49,1,-73.974037170410156,40.756481170654297,-73.982902526855469,40.724189758300781,N,971 +id3885998,2,2016-01-30 01:54:39,2016-01-30 02:25:31,2,-74.001426696777344,40.741329193115234,-73.941383361816406,40.823631286621094,N,1852 +id3381530,1,2016-06-30 16:45:03,2016-06-30 16:46:40,1,-73.95458984375,40.773902893066406,-73.959892272949219,40.770347595214844,N,97 +id3126075,2,2016-06-15 11:43:36,2016-06-15 12:10:40,2,-73.978561401367188,40.761829376220703,-73.991859436035156,40.749221801757812,N,1624 +id0301478,2,2016-02-09 15:15:35,2016-02-09 15:38:08,1,-73.996353149414063,40.723918914794922,-73.968704223632812,40.756866455078125,N,1353 +id0179840,2,2016-03-06 01:30:12,2016-03-06 01:36:41,5,-73.990524291992188,40.719173431396484,-73.988456726074219,40.734733581542969,N,389 +id2746629,1,2016-06-03 19:58:37,2016-06-03 20:12:48,1,-73.981132507324219,40.750251770019531,-73.952133178710937,40.773113250732422,N,851 +id3230239,1,2016-04-14 23:49:13,2016-04-15 00:13:29,1,-73.994758605957031,40.725742340087891,-73.956924438476563,40.774845123291016,N,1456 +id2330109,2,2016-03-07 18:48:55,2016-03-07 18:54:30,6,-73.97064208984375,40.751609802246094,-73.980659484863281,40.754421234130859,N,335 +id2889160,2,2016-05-07 19:36:58,2016-05-07 19:45:36,1,-73.973678588867187,40.764358520507813,-73.957130432128906,40.770671844482422,N,518 +id1535597,1,2016-03-05 10:39:27,2016-03-05 10:45:25,1,-73.998176574707031,40.745693206787109,-73.983871459960937,40.740436553955078,N,358 +id3375309,2,2016-03-31 09:03:52,2016-03-31 09:09:23,1,-73.961723327636719,40.759761810302734,-73.95465087890625,40.765491485595703,N,331 +id3842409,1,2016-06-15 22:19:18,2016-06-15 22:23:32,1,-73.995834350585938,40.753776550292969,-74.002311706542969,40.739566802978516,N,254 +id3957326,1,2016-02-21 11:56:12,2016-02-21 12:18:45,2,-73.978813171386719,40.7850341796875,-73.97552490234375,40.752571105957031,N,1353 +id1497149,2,2016-01-10 00:11:56,2016-01-10 00:20:47,1,-73.968429565429687,40.755218505859375,-73.988311767578125,40.748458862304687,N,531 +id2858240,1,2016-01-04 17:52:48,2016-01-04 17:56:29,1,-73.9527587890625,40.78656005859375,-73.960060119628906,40.776519775390625,N,221 +id3077752,1,2016-06-29 10:20:41,2016-06-29 10:42:06,1,-73.952224731445312,40.766433715820312,-73.980537414550781,40.782695770263672,N,1285 +id1535226,2,2016-06-01 06:40:52,2016-06-01 06:47:03,1,-73.94976806640625,40.784591674804688,-73.952720642089844,40.787578582763672,N,371 +id2364080,1,2016-06-08 11:18:07,2016-06-08 11:29:48,1,-73.989921569824219,40.720718383789063,-74.006752014160156,40.720417022705078,N,701 +id2662385,2,2016-05-12 07:36:01,2016-05-12 07:51:46,5,-73.961799621582031,40.768161773681641,-73.985427856445313,40.741508483886719,N,945 +id0673293,2,2016-02-25 13:34:50,2016-02-25 13:47:52,1,-73.982147216796875,40.775199890136719,-73.998802185058594,40.751941680908203,N,782 +id0571954,2,2016-04-20 17:44:04,2016-04-20 17:48:45,1,-73.984481811523438,40.746009826660156,-73.992378234863281,40.749591827392578,N,281 +id0034996,2,2016-04-14 15:36:16,2016-04-14 15:52:17,1,-73.973831176757813,40.757808685302734,-73.9853515625,40.735683441162109,N,961 +id1790563,2,2016-04-15 14:54:34,2016-04-15 15:11:57,1,-73.977180480957031,40.739017486572266,-73.957382202148438,40.761867523193359,N,1043 +id2222505,1,2016-01-04 12:54:19,2016-01-04 13:05:31,1,-73.989036560058594,40.748771667480469,-73.969703674316406,40.757930755615234,N,672 +id2020796,1,2016-06-06 19:07:35,2016-06-06 19:33:14,1,-73.993331909179687,40.767688751220703,-73.98736572265625,40.731845855712891,N,1539 +id0617803,2,2016-03-26 22:52:12,2016-03-26 23:22:02,1,-73.948173522949219,40.80902099609375,-74.001091003417969,40.733539581298828,N,1790 +id3840490,2,2016-04-20 20:51:06,2016-04-20 21:07:33,6,-73.979583740234375,40.755172729492188,-73.95135498046875,40.785388946533203,N,987 +id3046732,1,2016-03-02 19:44:03,2016-03-02 19:49:59,1,-73.968269348144531,40.755443572998047,-73.978828430175781,40.745075225830078,N,356 +id3054145,2,2016-03-06 13:48:45,2016-03-06 13:51:39,1,-73.970405578613281,40.789020538330078,-73.971382141113281,40.784439086914063,N,174 +id3934657,2,2016-05-25 18:32:13,2016-05-25 18:56:17,3,-73.988258361816406,40.743328094482422,-73.952430725097656,40.783794403076172,N,1444 +id2878629,2,2016-02-11 07:08:25,2016-02-11 07:14:47,1,-73.959274291992188,40.774372100830078,-73.971237182617188,40.756160736083984,N,382 +id0817502,2,2016-03-05 11:58:50,2016-03-05 12:16:43,6,-74.014602661132813,40.712688446044922,-73.958023071289062,40.717098236083984,N,1073 +id3821214,1,2016-05-20 01:26:37,2016-05-20 01:44:38,1,-73.985359191894531,40.727493286132812,-73.942802429199219,40.705059051513672,N,1081 +id1814938,2,2016-03-13 14:47:09,2016-03-13 14:59:22,1,-73.935813903808594,40.803836822509766,-73.920860290527344,40.8671875,N,733 +id3637963,2,2016-04-08 14:31:15,2016-04-08 14:35:43,5,-73.973312377929688,40.755073547363281,-73.977272033691406,40.749568939208984,N,268 +id3821229,1,2016-06-22 11:00:15,2016-06-22 11:10:03,1,-73.956253051757813,40.767963409423828,-73.980850219726563,40.773403167724609,N,588 +id0244564,1,2016-01-15 08:37:32,2016-01-15 08:55:24,1,-73.957626342773438,40.765689849853516,-74.014511108398438,40.708545684814453,N,1072 +id0502996,2,2016-03-27 03:56:12,2016-03-27 03:58:58,3,-73.981094360351563,40.737598419189453,-73.979156494140625,40.728199005126953,N,166 +id1013491,2,2016-05-11 13:01:07,2016-05-11 13:20:24,1,-73.991317749023437,40.750511169433594,-73.968589782714844,40.767391204833984,N,1157 +id1440472,2,2016-04-12 15:46:24,2016-04-12 16:00:52,5,-73.985671997070313,40.735260009765625,-73.962310791015625,40.758899688720703,N,868 +id2526213,2,2016-04-10 12:57:10,2016-04-10 13:07:09,1,-73.972099304199219,40.745635986328125,-73.959373474121094,40.773490905761719,N,599 +id0387355,1,2016-01-18 12:26:22,2016-01-18 12:29:12,1,-73.970527648925781,40.752250671386719,-73.976371765136719,40.753898620605469,N,170 +id1315590,1,2016-05-07 02:39:58,2016-05-07 02:52:38,2,-73.971343994140625,40.762981414794922,-73.99530029296875,40.744422912597656,N,760 +id0338339,2,2016-05-08 18:59:13,2016-05-08 19:17:34,1,-73.86260986328125,40.7689208984375,-73.76593017578125,40.712741851806641,N,1101 +id3210321,1,2016-03-05 15:00:48,2016-03-05 15:37:49,3,-73.999038696289062,40.732456207275391,-74.183090209960937,40.687965393066406,N,2221 +id3357688,2,2016-01-10 13:07:01,2016-01-10 13:14:33,2,-73.971946716308594,40.782108306884766,-73.95001220703125,40.771759033203125,N,452 +id3072376,2,2016-03-12 13:23:29,2016-03-12 13:28:30,1,-73.955909729003906,40.781871795654297,-73.954879760742187,40.788528442382813,N,301 +id1978829,2,2016-06-08 16:23:40,2016-06-08 16:40:12,1,-73.863746643066406,40.769645690917969,-73.901176452636719,40.745853424072266,N,992 +id0364442,2,2016-04-24 13:14:59,2016-04-24 13:27:22,1,-73.978538513183594,40.736991882324219,-73.999092102050781,40.732318878173828,N,743 +id1764316,2,2016-02-19 18:24:10,2016-02-19 18:39:55,1,-73.972991943359375,40.795829772949219,-73.986442565917969,40.767269134521484,N,945 +id3183000,1,2016-02-12 09:05:34,2016-02-12 10:35:30,4,-73.886192321777344,40.767402648925781,-74.08367919921875,40.764106750488281,N,5396 +id1332083,1,2016-06-14 07:48:51,2016-06-14 07:55:02,1,-73.989418029785156,40.757453918457031,-73.991500854492187,40.749832153320313,N,371 +id1110548,2,2016-02-24 23:20:20,2016-02-24 23:35:15,1,-73.983016967773437,40.749660491943359,-73.975723266601563,40.788040161132812,N,895 +id1765549,1,2016-04-03 03:05:41,2016-04-03 04:04:51,4,-74.007072448730469,40.740016937255859,-73.931137084960937,40.707252502441406,N,3550 +id1428123,1,2016-04-21 23:22:41,2016-04-21 23:42:21,4,-74.017051696777344,40.704807281494141,-73.993560791015625,40.721778869628906,N,1180 +id0628112,1,2016-02-11 20:16:09,2016-02-11 20:27:15,1,-73.975593566894531,40.760528564453125,-73.959358215332031,40.769073486328125,N,666 +id3861834,1,2016-05-09 16:24:51,2016-05-09 17:29:44,2,-73.978927612304688,40.745937347412109,-73.790367126464844,40.646747589111328,N,3893 +id2627494,1,2016-05-18 15:15:32,2016-05-18 15:23:54,1,-73.961532592773438,40.779445648193359,-73.960739135742188,40.772533416748047,N,502 +id3090707,2,2016-05-31 09:29:43,2016-05-31 09:54:11,1,-73.9781494140625,40.729557037353516,-73.973014831542969,40.764228820800781,N,1468 +id0403722,2,2016-01-17 00:20:47,2016-01-17 00:50:52,1,-73.940177917480469,40.840568542480469,-73.999687194824219,40.728530883789063,N,1805 +id3107245,1,2016-04-24 21:26:52,2016-04-24 21:37:01,1,-73.983711242675781,40.760776519775391,-73.982841491699219,40.739669799804688,N,609 +id1621787,1,2016-02-22 08:41:46,2016-02-22 08:50:08,1,-74.003402709960938,40.731437683105469,-74.007858276367188,40.739395141601562,N,502 +id1738252,2,2016-04-02 09:10:50,2016-04-02 09:24:03,2,-73.978996276855469,40.787429809570313,-73.977432250976563,40.755519866943359,N,793 +id2414501,2,2016-01-17 10:51:14,2016-01-17 10:58:05,5,-73.959274291992188,40.767551422119141,-73.978370666503906,40.741447448730469,N,411 +id0042360,2,2016-05-19 00:33:46,2016-05-19 00:48:58,1,-73.986274719238281,40.748001098632813,-73.995040893554687,40.718067169189453,N,912 +id0525270,2,2016-06-19 09:58:30,2016-06-19 10:09:10,1,-73.984909057617188,40.724369049072266,-74.015159606933594,40.708770751953125,N,640 +id1886294,1,2016-06-22 07:11:27,2016-06-22 07:30:34,1,-73.99407958984375,40.751163482666016,-73.957695007324219,40.785194396972656,N,1147 +id3085421,1,2016-04-27 20:22:27,2016-04-27 20:53:57,2,-73.978385925292969,40.762733459472656,-73.994232177734375,40.703250885009766,N,1890 +id2722913,1,2016-01-19 14:55:32,2016-01-19 15:03:39,1,-73.978408813476563,40.754344940185547,-73.979293823242187,40.765220642089844,N,487 +id2800959,1,2016-01-21 21:52:56,2016-01-21 22:15:59,1,-73.98858642578125,40.731559753417969,-73.947914123535156,40.781478881835938,N,1383 +id3699030,2,2016-02-04 12:57:56,2016-02-04 13:08:08,5,-73.994071960449219,40.751239776611328,-73.982582092285156,40.760139465332031,N,612 +id3108566,2,2016-04-02 01:15:17,2016-04-02 01:24:12,1,-73.973922729492188,40.756259918212891,-73.964889526367187,40.759048461914063,N,535 +id2112020,2,2016-04-02 21:38:11,2016-04-02 21:51:48,1,-73.995246887207031,40.734661102294922,-74.007713317871094,40.712730407714844,N,817 +id3050173,2,2016-03-12 17:38:57,2016-03-12 17:49:09,1,-73.976676940917969,40.764522552490234,-73.952476501464844,40.791240692138672,N,612 +id1757014,2,2016-03-30 09:50:49,2016-03-30 10:03:11,1,-74.006401062011719,40.732959747314453,-73.996696472167969,40.747749328613281,N,742 +id1899759,2,2016-02-26 02:34:30,2016-02-26 02:44:01,6,-73.9915771484375,40.727035522460938,-73.9881591796875,40.748416900634766,N,571 +id3434668,1,2016-01-14 17:53:06,2016-01-14 18:00:44,4,-73.950584411621094,40.782413482666016,-73.936485290527344,40.797439575195313,N,458 +id1326714,2,2016-05-08 14:51:36,2016-05-08 14:57:39,1,-73.957511901855469,40.780281066894531,-73.974967956542969,40.787700653076172,N,363 +id3853314,1,2016-05-19 08:56:20,2016-05-19 09:11:07,1,-73.961219787597656,40.769111633300781,-73.9837646484375,40.775608062744141,N,887 +id0755372,2,2016-01-15 22:41:46,2016-01-15 22:56:19,4,-73.984642028808594,40.759830474853516,-73.981422424316406,40.780101776123047,N,873 +id0859741,2,2016-02-29 09:07:11,2016-02-29 09:27:18,1,-74.005645751953125,40.738265991210937,-74.016510009765625,40.704753875732422,N,1207 +id1186503,2,2016-05-02 10:14:53,2016-05-02 10:33:07,2,-73.9915771484375,40.750228881835938,-74.010223388671875,40.7039794921875,N,1094 +id2483694,1,2016-02-03 22:28:06,2016-02-03 22:36:13,1,-73.9827880859375,40.741909027099609,-74.000885009765625,40.751518249511719,N,487 +id0077735,2,2016-01-01 13:31:39,2016-01-01 13:57:50,1,-73.993240356445313,40.730972290039063,-73.974655151367188,40.735336303710938,N,1571 +id2052537,1,2016-05-21 12:07:05,2016-05-21 12:17:42,1,-73.989387512207031,40.773975372314453,-73.995033264160156,40.750003814697266,N,637 +id0124498,1,2016-04-17 16:10:14,2016-04-17 16:21:08,4,-73.990081787109375,40.775886535644531,-73.9796142578125,40.764560699462891,N,654 +id1781065,1,2016-03-26 22:33:06,2016-03-26 22:40:46,1,-73.993049621582031,40.738433837890625,-73.992263793945313,40.748432159423828,N,460 +id0522254,1,2016-03-20 02:29:43,2016-03-20 02:36:12,3,-73.937644958496094,40.695625305175781,-73.929183959960938,40.683151245117188,N,389 +id1228502,2,2016-05-11 18:19:02,2016-05-11 18:44:38,1,-73.982994079589844,40.750083923339844,-74.003990173339844,40.706123352050781,N,1536 +id2586889,1,2016-02-03 18:02:29,2016-02-03 18:16:36,1,-73.968391418457031,40.786685943603516,-73.947433471679687,40.783588409423828,N,847 +id1620012,2,2016-04-07 21:04:26,2016-04-07 21:19:19,2,-74.007781982421875,40.740467071533203,-73.978126525878906,40.751815795898438,N,893 +id2116518,2,2016-01-12 12:28:19,2016-01-12 12:38:11,1,-73.968009948730469,40.792327880859375,-73.954139709472656,40.779750823974609,N,592 +id1285400,1,2016-04-27 18:50:53,2016-04-27 19:02:50,1,-73.956611633300781,40.774997711181641,-73.972183227539063,40.751079559326172,N,717 +id1634191,2,2016-04-07 10:04:51,2016-04-07 10:16:38,2,-73.952301025390625,40.78704833984375,-73.955390930175781,40.769241333007813,N,707 +id3496533,1,2016-01-26 01:12:43,2016-01-26 01:17:44,1,-73.960899353027344,40.806777954101563,-73.948806762695312,40.824020385742188,N,301 +id2382654,2,2016-01-16 20:36:56,2016-01-16 20:54:44,1,-74.008888244628906,40.713935852050781,-73.982688903808594,40.773220062255859,N,1068 +id1929174,2,2016-06-04 15:18:05,2016-06-04 15:25:17,1,-73.987937927246094,40.750896453857422,-73.982749938964844,40.751129150390625,N,432 +id2647060,1,2016-06-09 13:00:45,2016-06-09 13:27:48,1,-73.989166259765625,40.748844146728516,-74.006057739257813,40.718715667724609,N,1623 +id1352409,1,2016-02-09 05:35:35,2016-02-09 05:53:35,1,-73.955070495605469,40.745872497558594,-74.0133056640625,40.715534210205078,N,1080 +id1851384,1,2016-06-09 16:22:22,2016-06-09 16:26:58,2,-73.971778869628906,40.746330261230469,-73.972259521484375,40.748920440673828,N,276 +id3047533,2,2016-03-16 09:14:15,2016-03-16 09:54:53,5,-73.870742797851563,40.773647308349609,-73.918144226074219,40.638095855712891,N,2438 +id3856110,1,2016-01-15 09:41:55,2016-01-15 09:49:49,1,-73.945716857910156,40.812591552734375,-73.949081420898437,40.793430328369141,N,474 +id2789897,2,2016-06-30 15:26:10,2016-06-30 15:40:16,1,-73.995391845703125,40.744571685791016,-74.009117126464844,40.714450836181641,N,846 +id3008683,2,2016-03-09 21:42:29,2016-03-09 21:49:27,1,-73.991714477539062,40.738681793212891,-74.003005981445313,40.731250762939453,N,418 +id3897938,2,2016-05-16 14:27:17,2016-05-16 14:52:38,1,-73.996170043945312,40.748310089111328,-73.992332458496094,40.746658325195313,N,1521 +id0812842,2,2016-01-31 14:12:31,2016-01-31 14:16:44,1,-74.004020690917969,40.722183227539062,-74.00311279296875,40.727512359619141,N,253 +id3085149,2,2016-06-20 12:03:55,2016-06-20 12:14:40,2,-73.940361022949219,40.805912017822266,-73.940193176269531,40.826248168945313,N,645 +id3112281,1,2016-04-15 19:49:38,2016-04-15 20:08:14,1,-73.988296508789063,40.764404296875,-74.010475158691406,40.718395233154297,N,1116 +id2685610,2,2016-02-09 01:04:25,2016-02-09 01:09:42,3,-73.9970703125,40.714527130126953,-73.989250183105469,40.727668762207031,N,317 +id3037052,2,2016-06-15 21:17:33,2016-06-15 21:42:03,1,-73.994583129882813,40.726097106933594,-73.94390869140625,40.818763732910156,N,1470 +id1745274,1,2016-01-11 20:27:43,2016-01-11 20:45:54,2,-74.002479553222656,40.726432800292969,-73.966064453125,40.762260437011719,N,1091 +id2053630,2,2016-03-03 15:18:27,2016-03-03 15:48:05,1,-73.983650207519531,40.738323211669922,-73.870292663574219,40.773342132568359,N,1778 +id0144400,1,2016-01-08 08:34:34,2016-01-08 08:50:57,1,-73.961380004882813,40.764335632324219,-73.972953796386719,40.743583679199219,N,983 +id0073003,1,2016-03-11 05:23:11,2016-03-11 05:26:27,1,-73.984565734863281,40.743106842041016,-73.993804931640625,40.743423461914063,N,196 +id1983612,2,2016-04-02 22:23:43,2016-04-02 22:27:37,2,-73.955513000488281,40.779460906982422,-73.971038818359375,40.786018371582031,N,234 +id1805653,1,2016-03-01 22:03:18,2016-03-01 22:27:34,1,-73.982231140136719,40.727985382080078,-73.913566589355469,40.688606262207031,N,1456 +id3543461,1,2016-05-25 19:22:27,2016-05-25 19:26:26,1,-74.000015258789063,40.733169555664063,-73.993179321289063,40.736576080322266,N,239 +id1772315,2,2016-01-09 06:28:22,2016-01-09 06:47:33,1,-74.004112243652344,40.707599639892578,-73.917327880859375,40.834621429443359,N,1151 +id2089832,2,2016-01-13 19:01:33,2016-01-13 19:10:18,1,-74.007682800292969,40.740791320800781,-74.000701904296875,40.732170104980469,N,525 +id3434465,2,2016-05-02 14:40:12,2016-05-02 15:11:08,1,-73.989830017089844,40.736881256103516,-73.962570190429688,40.719516754150391,N,1856 +id3014846,2,2016-01-19 09:04:47,2016-01-19 09:14:44,2,-73.953277587890625,40.785659790039062,-73.953819274902344,40.78179931640625,N,597 +id3067078,2,2016-06-06 15:52:50,2016-06-06 15:56:52,1,-73.988067626953125,40.754459381103516,-73.988967895507813,40.747077941894531,N,242 +id1328129,2,2016-02-13 22:20:53,2016-02-13 22:29:48,1,-73.958328247070312,40.810676574707031,-73.977264404296875,40.784530639648438,N,535 +id0193521,2,2016-06-01 13:50:03,2016-06-01 14:25:17,1,-73.968971252441406,40.798610687255859,-73.86480712890625,40.770378112792969,N,2114 +id0753097,2,2016-06-20 19:21:19,2016-06-20 19:41:30,2,-73.863319396972656,40.769939422607422,-73.967750549316406,40.792751312255859,N,1211 +id0306076,1,2016-04-20 14:22:59,2016-04-20 14:28:06,1,-73.988975524902344,40.751907348632812,-73.982986450195313,40.74957275390625,N,307 +id1407512,2,2016-03-21 10:39:15,2016-03-21 11:21:50,1,-73.789558410644531,40.643360137939453,-73.982421875,40.769466400146484,N,2555 +id3470460,2,2016-02-10 20:41:57,2016-02-10 20:53:00,1,-73.981315612792969,40.753002166748047,-73.954620361328125,40.772335052490234,N,663 +id1516856,2,2016-01-16 19:11:36,2016-01-16 19:21:02,1,-73.947792053222656,40.784618377685547,-73.97564697265625,40.748981475830078,N,566 +id2909082,2,2016-03-17 15:14:18,2016-03-17 15:57:08,2,-73.782028198242188,40.6446533203125,-73.972816467285156,40.752956390380859,N,2570 +id1021936,1,2016-02-05 22:16:17,2016-02-05 22:19:34,1,-73.967597961425781,40.766731262207031,-73.973854064941406,40.764301300048828,N,197 +id3909588,2,2016-03-05 22:16:05,2016-03-05 22:29:56,2,-73.990951538085938,40.755352020263672,-73.966606140136719,40.754867553710938,N,831 +id0293496,2,2016-02-04 06:06:09,2016-02-04 06:08:28,2,-73.948631286621094,40.777862548828125,-73.941207885742188,40.787998199462891,N,139 +id2497799,1,2016-04-30 20:19:24,2016-04-30 20:40:56,1,-73.990264892578125,40.737274169921875,-73.964942932128906,40.763908386230469,N,1292 +id0409324,1,2016-06-27 20:07:19,2016-06-27 20:25:49,4,-74.007537841796875,40.743129730224609,-73.989013671875,40.695854187011719,N,1110 +id3466387,2,2016-04-04 17:55:11,2016-04-04 17:58:21,1,-73.994560241699219,40.73223876953125,-74.000892639160156,40.736579895019531,N,190 +id1843217,2,2016-02-15 09:45:24,2016-02-15 09:52:03,5,-73.972030639648438,40.794258117675781,-73.982147216796875,40.778194427490234,N,399 +id0392768,2,2016-01-20 06:39:11,2016-01-20 06:48:14,1,-73.962226867675781,40.773578643798828,-73.980667114257813,40.783279418945313,N,543 +id2645771,1,2016-06-05 01:12:57,2016-06-05 01:22:27,1,-74.006248474121094,40.739658355712891,-74.005439758300781,40.721782684326172,N,570 +id2622300,2,2016-04-26 21:19:44,2016-04-26 21:28:08,1,-73.97637939453125,40.761146545410156,-73.960838317871094,40.769851684570313,N,504 +id3956528,1,2016-01-25 05:29:16,2016-01-25 05:54:46,1,-73.9779052734375,40.729328155517578,-74.00103759765625,40.646812438964844,N,1530 +id0354449,2,2016-02-08 12:28:41,2016-02-08 12:34:22,5,-73.985687255859375,40.746875762939453,-73.994361877441406,40.735065460205078,N,341 +id1070193,2,2016-03-25 19:28:55,2016-03-25 19:36:04,1,-73.988754272460938,40.737068176269531,-73.979156494140625,40.750164031982422,N,429 +id3677232,2,2016-06-12 17:44:14,2016-06-12 17:47:25,1,-73.984016418457031,40.746711730957031,-73.978080749511719,40.745868682861328,N,191 +id1238429,1,2016-01-19 23:58:33,2016-01-20 00:04:06,1,-73.979850769042969,40.759521484375,-73.961837768554687,40.775409698486328,N,333 +id1460256,1,2016-06-11 09:24:00,2016-06-11 09:33:55,1,-73.949760437011719,40.771846771240234,-73.987434387207031,40.737499237060547,N,595 +id3159108,2,2016-02-09 08:46:41,2016-02-09 09:03:16,2,-74.0030517578125,40.727741241455078,-73.985038757324219,40.753261566162109,N,995 +id0866293,2,2016-06-25 14:26:55,2016-06-25 14:34:47,1,-74.004287719726563,40.707710266113281,-73.989051818847656,40.693618774414062,N,472 +id2753251,2,2016-04-23 07:54:36,2016-04-23 08:15:13,1,-73.959091186523438,40.814769744873047,-73.983757019042969,40.749668121337891,N,1237 +id2488467,2,2016-01-09 18:21:05,2016-01-09 18:29:49,1,-73.991104125976563,40.735015869140625,-73.993942260742188,40.7244873046875,N,524 +id3289778,2,2016-03-18 10:50:00,2016-03-18 10:59:23,1,-73.999610900878906,40.733554840087891,-73.988945007324219,40.725883483886719,N,563 +id1387792,1,2016-03-19 15:26:49,2016-03-19 15:35:13,4,-73.970100402832031,40.765552520751953,-73.948631286621094,40.778026580810547,N,504 +id3525136,2,2016-06-09 15:14:19,2016-06-09 15:42:29,5,-73.961738586425781,40.805740356445313,-73.913398742675781,40.829219818115234,N,1690 +id0042509,1,2016-04-08 14:52:41,2016-04-08 15:10:36,1,-73.98468017578125,40.747226715087891,-74.0126953125,40.701618194580078,N,1075 +id1732204,2,2016-06-06 11:15:01,2016-06-06 11:22:11,1,-73.9671630859375,40.763648986816406,-73.976860046386719,40.754058837890625,N,430 +id3957242,1,2016-06-05 03:23:03,2016-06-05 03:30:20,1,-73.99151611328125,40.722751617431641,-73.996429443359375,40.742801666259766,N,437 +id0968809,2,2016-03-21 09:00:25,2016-03-21 09:03:47,1,-73.98333740234375,40.726238250732422,-73.987228393554688,40.722251892089844,N,202 +id0683023,1,2016-01-30 13:23:47,2016-01-30 13:37:37,1,-73.951850891113281,40.784645080566406,-73.981437683105469,40.766181945800781,N,830 +id2646072,1,2016-05-26 19:48:15,2016-05-26 19:56:41,1,-73.983268737792969,40.767974853515625,-73.959968566894531,40.771240234375,N,506 +id3146961,2,2016-06-18 01:33:02,2016-06-18 01:52:06,1,-73.921638488769531,40.705818176269531,-73.955963134765625,40.721378326416016,N,1144 +id0531619,1,2016-02-09 07:13:09,2016-02-09 07:19:47,1,-73.986946105957031,40.734512329101563,-73.9774169921875,40.751815795898438,N,398 +id0455903,2,2016-04-19 06:16:28,2016-04-19 06:21:12,3,-73.991676330566406,40.749710083007812,-73.9765625,40.759708404541016,N,284 +id0713061,2,2016-01-27 15:12:50,2016-01-27 15:44:07,1,-73.990936279296875,40.750808715820312,-73.973983764648438,40.763999938964844,N,1877 +id3231346,2,2016-04-16 23:11:50,2016-04-16 23:24:07,1,-73.98895263671875,40.748119354248047,-73.990386962890625,40.760051727294922,N,737 +id0122322,1,2016-03-21 15:22:29,2016-03-21 15:39:13,1,-73.872932434082031,40.774120330810547,-73.976951599121094,40.751888275146484,N,1004 +id1972171,1,2016-06-04 22:29:59,2016-06-04 22:33:44,3,-73.98248291015625,40.775718688964844,-73.99127197265625,40.770370483398438,N,225 +id3587288,2,2016-06-21 08:18:41,2016-06-21 08:41:34,5,-73.955886840820313,40.778789520263672,-73.990242004394531,40.751399993896484,N,1373 +id0349834,1,2016-05-02 18:04:42,2016-05-02 19:02:22,1,-73.972831726074219,40.755756378173828,-73.783912658691406,40.643623352050781,N,3460 +id3966659,1,2016-04-30 19:15:08,2016-04-30 19:49:05,1,-73.987579345703125,40.728862762451172,-73.960792541503906,40.799232482910156,N,2037 +id1248955,1,2016-01-02 21:10:43,2016-01-02 21:53:15,1,-73.990623474121094,40.744426727294922,-73.887489318847656,40.677204132080078,N,2552 +id0717073,2,2016-03-22 16:15:23,2016-03-22 16:23:24,1,-73.9638671875,40.766136169433594,-73.957107543945313,40.781993865966797,N,481 +id2028060,1,2016-02-24 21:46:11,2016-02-24 21:49:25,1,-74.005889892578125,40.740360260009766,-73.997299194335938,40.735897064208984,N,194 +id2477753,1,2016-01-09 02:21:36,2016-01-09 02:29:02,2,-73.954368591308594,40.821342468261719,-73.941070556640625,40.823970794677734,N,446 +id3460443,1,2016-06-24 23:50:20,2016-06-25 00:00:39,1,-73.982391357421875,40.731430053710938,-73.959907531738281,40.75836181640625,N,619 +id1119902,2,2016-01-31 00:13:20,2016-01-31 00:18:33,5,-73.98919677734375,40.720279693603516,-73.993606567382812,40.721431732177734,N,313 +id1693049,1,2016-01-24 20:17:37,2016-01-24 20:32:26,1,-73.984596252441406,40.759765625,-74.000167846679688,40.727676391601563,N,889 +id1628677,2,2016-04-28 10:18:06,2016-04-28 10:41:10,1,-73.979263305664063,40.750335693359375,-73.988853454589844,40.716693878173828,N,1384 +id3303210,2,2016-05-19 22:38:19,2016-05-19 22:50:18,1,-73.991447448730469,40.727951049804687,-73.992340087890625,40.749469757080078,N,719 +id3385944,1,2016-05-04 07:03:09,2016-05-04 07:13:50,1,-73.993240356445313,40.757339477539063,-73.975494384765625,40.741241455078125,N,641 +id1128985,2,2016-05-21 08:32:54,2016-05-21 08:40:01,1,-73.950889587402344,40.771091461181641,-73.966682434082031,40.756420135498047,N,427 +id2051618,1,2016-05-05 01:22:21,2016-05-05 01:44:58,1,-73.990715026855469,40.71826171875,-74.027267456054687,40.617111206054688,N,1357 +id3118544,1,2016-06-25 17:45:49,2016-06-25 18:01:36,1,-73.956497192382812,40.771541595458984,-73.955398559570313,40.746101379394531,N,947 +id0885893,1,2016-03-14 19:08:27,2016-03-14 19:16:03,1,-73.960662841796875,40.772430419921875,-73.967384338378906,40.787982940673828,N,456 +id2499920,2,2016-06-28 08:56:45,2016-06-28 09:02:07,2,-73.986610412597656,40.759048461914063,-74.000167846679688,40.758380889892578,N,322 +id0448315,1,2016-05-04 22:09:17,2016-05-04 22:14:27,2,-73.983772277832031,40.773914337158203,-73.9764404296875,40.776420593261719,N,310 +id1296689,1,2016-04-02 09:59:59,2016-04-02 10:03:13,2,-73.993339538574219,40.735698699951172,-73.993087768554688,40.742706298828125,N,194 +id0483936,1,2016-06-13 20:58:28,2016-06-13 21:03:31,1,-73.965347290039063,40.762565612792969,-73.975692749023438,40.763999938964844,N,303 +id3241508,1,2016-05-10 12:05:33,2016-05-10 12:46:43,1,-73.863479614257813,40.769607543945313,-73.994956970214844,40.751430511474609,N,2470 +id0407648,2,2016-01-10 00:30:41,2016-01-10 00:39:00,1,-73.985916137695313,40.73114013671875,-73.977348327636719,40.751976013183594,N,499 +id0350685,2,2016-05-06 14:34:20,2016-05-06 14:45:00,5,-73.960342407226562,40.779048919677734,-73.978118896484375,40.788818359375,N,640 +id1945953,2,2016-02-18 23:33:43,2016-02-18 23:45:07,2,-73.789337158203125,40.647178649902344,-73.833938598632813,40.679019927978516,N,684 +id2174150,2,2016-04-07 08:18:36,2016-04-07 08:26:51,6,-73.991958618164063,40.759372711181641,-74.005485534667969,40.751102447509766,N,495 +id2824470,2,2016-02-09 16:38:59,2016-02-09 16:54:24,1,-73.977310180664063,40.756965637207031,-74.005378723144531,40.726936340332031,N,925 +id2621884,1,2016-03-04 14:38:25,2016-03-04 14:47:28,1,-73.9759521484375,40.740154266357422,-73.973724365234375,40.750789642333984,N,543 +id3232167,2,2016-02-08 05:06:06,2016-02-08 05:07:26,1,-73.993446350097656,40.757682800292969,-73.996406555175781,40.748668670654297,N,80 +id2451758,2,2016-03-29 15:56:25,2016-03-29 16:21:50,5,-74.016761779785156,40.709419250488281,-73.996688842773438,40.719070434570313,N,1525 +id2807369,2,2016-01-20 01:20:41,2016-01-20 01:29:10,1,-73.991241455078125,40.719390869140625,-73.978317260742188,40.729019165039063,N,509 +id3476981,1,2016-02-17 18:39:29,2016-02-17 18:47:25,1,-73.983894348144531,40.755733489990234,-73.974349975585937,40.760822296142578,N,476 +id0257590,1,2016-05-29 09:36:08,2016-05-29 09:46:13,1,-73.982818603515625,40.781898498535156,-73.955337524414063,40.784393310546875,N,605 +id3237378,1,2016-02-07 16:30:55,2016-02-07 16:35:38,1,-73.989738464355469,40.752143859863281,-73.996978759765625,40.737476348876953,N,283 +id2673719,1,2016-02-04 19:13:55,2016-02-04 19:19:53,1,-74.002792358398438,40.760585784912109,-73.997665405273438,40.755645751953125,N,358 +id1865769,2,2016-03-18 16:41:51,2016-03-18 16:46:38,1,-74.003273010253906,40.727573394775391,-73.994338989257813,40.734596252441406,N,287 +id1422027,2,2016-01-22 23:04:55,2016-01-22 23:13:17,1,-73.978256225585937,40.729469299316406,-73.989936828613281,40.719268798828125,N,502 +id2783809,1,2016-06-23 05:15:47,2016-06-23 05:20:39,1,-73.999298095703125,40.739356994628906,-73.979682922363281,40.758045196533203,N,292 +id1117680,2,2016-05-17 15:32:16,2016-05-17 15:37:47,1,-73.945465087890625,40.778629302978516,-73.95556640625,40.779449462890625,N,331 +id1520864,2,2016-05-16 11:13:03,2016-05-16 11:25:50,5,-73.967262268066406,40.772201538085937,-73.974716186523438,40.761741638183594,N,767 +id2965584,1,2016-06-19 17:13:21,2016-06-19 17:19:23,1,-73.98956298828125,40.752365112304687,-73.992599487304688,40.751834869384766,N,362 +id0683792,2,2016-04-03 13:40:49,2016-04-03 13:45:08,1,-73.969337463378906,40.753421783447266,-73.977027893066406,40.743251800537109,N,259 +id2845834,1,2016-05-20 20:25:20,2016-05-20 20:43:43,1,-73.990341186523438,40.740745544433594,-73.974021911621094,40.778587341308594,N,1103 +id2137998,1,2016-02-27 02:36:49,2016-02-27 02:53:22,1,-74.000106811523438,40.737957000732422,-74.025886535644531,40.753124237060547,N,993 +id1171846,1,2016-05-13 07:46:28,2016-05-13 07:53:55,1,-73.982223510742188,40.768363952636719,-73.971458435058594,40.758136749267578,N,447 +id2828485,1,2016-02-06 04:30:10,2016-02-06 04:50:52,1,-73.988182067871094,40.718849182128906,-73.91143798828125,40.689491271972656,N,1242 +id2357666,2,2016-04-13 14:56:28,2016-04-13 15:08:30,1,-73.973052978515625,40.780315399169922,-73.973243713378906,40.764419555664063,N,722 +id1034381,2,2016-04-06 00:12:56,2016-04-06 00:21:24,1,-73.991920471191406,40.726200103759766,-73.967628479003906,40.753799438476562,N,508 +id2265119,1,2016-03-19 21:28:58,2016-03-19 21:47:04,1,-73.980033874511719,40.726764678955078,-73.999069213867188,40.729995727539063,N,1086 +id1460118,2,2016-02-14 23:50:36,2016-02-14 23:51:57,2,-73.982162475585937,40.776599884033203,-73.985023498535156,40.768978118896484,N,81 +id0574880,2,2016-03-08 15:17:58,2016-03-08 15:22:08,1,-73.980445861816406,40.782878875732422,-73.972663879394531,40.790828704833984,N,250 +id1406382,1,2016-04-10 21:30:38,2016-04-10 21:34:35,1,-73.957473754882813,40.774272918701172,-73.960342407226562,40.763076782226563,N,237 +id0488140,2,2016-03-05 13:05:17,2016-03-05 13:16:55,1,-73.973587036132812,40.747989654541016,-73.990821838378906,40.716819763183594,N,698 +id2326583,1,2016-05-13 20:22:59,2016-05-13 20:39:27,1,-73.872711181640625,40.774204254150391,-73.94891357421875,40.78094482421875,N,988 +id2467976,2,2016-05-01 17:54:20,2016-05-01 18:00:13,1,-73.983474731445313,40.771114349365234,-73.994979858398438,40.755348205566406,N,353 +id2312420,2,2016-04-05 19:11:21,2016-04-05 19:19:14,5,-73.993682861328125,40.746829986572266,-73.995620727539062,40.733348846435547,N,473 +id3739661,1,2016-04-10 09:45:56,2016-04-10 09:54:02,1,-73.981254577636719,40.729171752929688,-73.995826721191406,40.742706298828125,N,486 +id1647612,1,2016-06-03 00:13:43,2016-06-03 00:15:07,1,-73.993484497070313,40.741493225097656,-73.993072509765625,40.742469787597656,N,84 +id0655915,1,2016-03-31 11:53:19,2016-03-31 11:58:35,1,-74.001922607421875,40.744331359863281,-73.993659973144531,40.740951538085938,N,316 +id1775586,2,2016-01-15 01:58:38,2016-01-15 02:06:50,1,-74.002548217773438,40.724819183349609,-73.995613098144531,40.734119415283203,N,492 +id2548723,2,2016-05-23 22:06:15,2016-05-23 22:11:10,1,-73.988128662109375,40.743190765380859,-74.004531860351563,40.740688323974609,N,295 +id3152913,1,2016-02-23 15:19:00,2016-02-23 15:31:50,3,-73.983062744140625,40.775619506835938,-73.965049743652344,40.765865325927734,N,770 +id3083214,1,2016-04-17 20:35:11,2016-04-17 20:41:37,1,-73.990798950195313,40.718814849853516,-73.988853454589844,40.722553253173828,N,386 +id2054749,1,2016-06-04 08:14:34,2016-06-04 08:35:39,1,-73.971405029296875,40.763797760009766,-74.01678466796875,40.709323883056641,N,1265 +id3834918,2,2016-02-09 19:15:43,2016-02-09 19:22:46,1,-73.975914001464844,40.759773254394531,-73.977531433105469,40.753227233886719,N,423 +id2544783,2,2016-01-27 12:23:13,2016-01-27 12:46:59,2,-73.961402893066406,40.757610321044922,-73.983261108398438,40.747135162353516,N,1426 +id1946445,1,2016-03-28 19:45:03,2016-03-28 20:10:48,1,-73.974693298339844,40.76416015625,-74.010116577148438,40.7198486328125,N,1545 +id2596173,2,2016-05-18 23:23:01,2016-05-18 23:29:21,5,-74.002311706542969,40.728008270263672,-73.989768981933594,40.720630645751953,N,380 +id2239089,2,2016-03-31 07:29:20,2016-03-31 07:39:05,5,-73.990089416503906,40.757171630859375,-73.963981628417969,40.765491485595703,N,585 +id0660251,1,2016-04-19 14:07:26,2016-04-19 14:11:21,1,-73.997756958007813,40.736118316650391,-73.988601684570313,40.734424591064453,N,235 +id3217846,2,2016-06-11 10:13:03,2016-06-11 10:21:23,2,-73.955276489257813,40.788597106933594,-73.952606201171875,40.778362274169922,N,500 +id1869108,2,2016-06-25 12:04:42,2016-06-25 12:18:39,1,-73.9779052734375,40.758514404296875,-73.988716125488281,40.744487762451172,N,837 +id2911813,1,2016-06-23 09:12:19,2016-06-23 09:19:30,1,-73.953330993652344,40.778823852539063,-73.9630126953125,40.778045654296875,N,431 +id0973555,2,2016-01-31 12:06:08,2016-01-31 12:15:47,3,-74.004737854003906,40.741970062255859,-74.00213623046875,40.724620819091797,N,579 +id1781298,2,2016-05-18 11:38:32,2016-05-18 12:02:04,5,-73.958473205566406,40.77276611328125,-73.870162963867188,40.773212432861328,N,1412 +id1411549,1,2016-03-13 15:52:45,2016-03-13 16:07:27,1,-73.983810424804688,40.729759216308594,-73.946708679199219,40.780475616455078,N,882 +id0341128,2,2016-04-07 08:09:33,2016-04-07 08:23:53,1,-74.008682250976562,40.719081878662109,-73.986320495605469,40.734409332275391,N,860 +id3041542,1,2016-04-20 17:14:32,2016-04-20 17:23:53,1,-73.993438720703125,40.7244873046875,-74.003257751464844,40.717960357666016,N,561 +id3078548,1,2016-05-13 17:54:43,2016-05-13 18:00:12,1,-73.962005615234375,40.800518035888672,-73.955482482910156,40.787742614746094,N,329 +id1903928,2,2016-06-24 19:10:20,2016-06-24 19:21:21,6,-73.975936889648438,40.759101867675781,-73.989433288574219,40.744659423828125,N,661 +id1132638,1,2016-03-29 18:28:20,2016-03-29 18:33:01,1,-73.95220947265625,40.777484893798828,-73.960899353027344,40.765186309814453,N,281 +id1900532,1,2016-01-17 12:32:16,2016-01-17 12:41:56,3,-73.99493408203125,40.725101470947266,-74.002662658691406,40.739387512207031,N,580 +id2233288,1,2016-05-01 18:49:01,2016-05-01 18:55:14,1,-74.002578735351563,40.733959197998047,-73.999900817871094,40.726909637451172,N,373 +id0761563,1,2016-03-04 21:13:24,2016-03-04 21:26:25,1,-73.989952087402344,40.732490539550781,-74.004684448242188,40.748031616210937,N,781 +id1424165,1,2016-06-19 01:05:49,2016-06-19 01:20:31,2,-73.963203430175781,40.71026611328125,-73.946823120117188,40.727218627929688,N,882 +id1515120,1,2016-01-27 08:45:02,2016-01-27 09:15:14,1,-73.951385498046875,40.769889831542969,-74.003677368164063,40.713527679443359,N,1812 +id3692757,2,2016-04-11 06:35:30,2016-04-11 06:41:57,2,-73.961509704589844,40.777172088623047,-73.98052978515625,40.754161834716797,N,387 +id2858380,2,2016-06-19 12:18:10,2016-06-19 12:27:47,1,-73.974159240722656,40.731239318847656,-73.9935302734375,40.742000579833984,N,577 +id1829356,2,2016-02-26 15:35:53,2016-02-26 15:57:42,1,-74.008399963378906,40.719760894775391,-73.979179382324219,40.752899169921875,N,1309 +id1868353,2,2016-03-30 11:38:17,2016-03-30 12:13:14,1,-73.949607849121094,40.772731781005859,-73.983238220214844,40.750450134277344,N,2097 +id2987675,1,2016-05-11 20:45:41,2016-05-11 20:53:22,1,-73.988052368164063,40.76953125,-73.970672607421875,40.789203643798828,N,461 +id0050804,2,2016-05-12 22:08:19,2016-05-12 22:20:02,1,-73.972686767578125,40.7529296875,-73.953102111816406,40.779830932617187,N,703 +id3585997,2,2016-06-07 18:51:38,2016-06-07 19:07:43,5,-73.949996948242188,40.784458160400391,-73.974288940429688,40.753959655761719,N,965 +id2567069,2,2016-02-21 03:28:20,2016-02-21 03:46:38,6,-73.991706848144531,40.735202789306641,-74.009468078613281,40.675445556640625,N,1098 +id1090594,2,2016-05-04 05:04:12,2016-05-04 05:11:04,1,-73.955581665039063,40.785331726074219,-73.97808837890625,40.759540557861328,N,412 +id0940176,1,2016-04-05 15:45:05,2016-04-05 16:05:04,1,-73.967910766601563,40.755756378173828,-74.008132934570313,40.751007080078125,N,1199 +id1001746,2,2016-04-16 22:53:15,2016-04-16 23:05:04,1,-74.002693176269531,40.743808746337891,-74.008583068847656,40.718929290771484,N,709 +id3301468,2,2016-03-14 12:11:41,2016-03-14 12:23:18,2,-73.973686218261719,40.751491546630859,-73.970573425292969,40.757938385009766,N,697 +id1435549,1,2016-04-30 22:43:02,2016-04-30 22:59:45,1,-73.979354858398438,40.776634216308594,-73.995063781738281,40.749828338623047,N,1003 +id3980548,2,2016-03-19 17:19:19,2016-03-19 17:20:57,6,-73.961898803710938,40.768009185791016,-73.956459045410156,40.775470733642578,N,98 +id1135122,1,2016-06-21 21:14:59,2016-06-21 21:28:21,2,-73.992706298828125,40.758285522460937,-73.987113952636719,40.729290008544922,N,802 +id3540575,1,2016-05-05 12:38:52,2016-05-05 12:58:58,1,-73.991676330566406,40.749862670898438,-74.015838623046875,40.714229583740234,N,1206 +id3576117,2,2016-02-18 23:29:39,2016-02-18 23:50:24,1,-73.954231262207031,40.76422119140625,-73.99993896484375,40.746040344238281,N,1245 +id3475008,1,2016-06-12 17:48:13,2016-06-12 17:58:41,3,-73.981895446777344,40.751602172851562,-73.983238220214844,40.766483306884766,N,628 +id3531646,2,2016-06-11 16:59:55,2016-06-11 17:08:11,2,-73.964866638183594,40.775211334228516,-73.967597961425781,40.763088226318359,N,496 +id1752900,1,2016-04-12 18:45:14,2016-04-12 19:00:00,1,-73.990005493164062,40.756340026855469,-73.967338562011719,40.754436492919922,N,886 +id2272577,2,2016-04-15 21:03:42,2016-04-15 21:17:33,1,-73.981101989746094,40.764118194580078,-73.93585205078125,40.79547119140625,N,831 +id1620034,2,2016-02-04 13:48:09,2016-02-04 14:04:31,1,-73.956565856933594,40.774051666259766,-73.976608276367188,40.764266967773438,N,982 +id2868251,2,2016-04-10 00:42:47,2016-04-10 00:48:24,6,-73.967521667480469,40.756202697753906,-73.984611511230469,40.732776641845703,N,337 +id1812624,1,2016-03-04 09:56:14,2016-03-04 09:58:38,1,-74.011253356933594,40.702217102050781,-74.011940002441406,40.704261779785156,N,144 +id3886483,2,2016-01-18 06:31:57,2016-01-18 06:45:03,1,-73.985626220703125,40.722972869873047,-74.006050109863281,40.728126525878906,N,786 +id1335643,1,2016-06-02 14:38:42,2016-06-02 15:06:25,1,-73.970481872558594,40.762378692626953,-74.004203796386719,40.730979919433594,N,1663 +id3786907,2,2016-04-22 10:38:03,2016-04-22 11:21:52,1,-73.862739562988281,40.768840789794922,-73.980743408203125,40.7645263671875,N,2629 +id2239203,1,2016-02-27 11:55:22,2016-02-27 12:03:11,1,-73.983291625976562,40.761096954345703,-73.992805480957031,40.748279571533203,N,469 +id1971423,1,2016-02-17 14:56:38,2016-02-17 15:02:21,1,-73.953910827636719,40.76629638671875,-73.959358215332031,40.771839141845703,N,343 +id1616314,2,2016-01-09 19:22:01,2016-01-09 19:36:53,1,-73.9647216796875,40.764331817626953,-73.988609313964844,40.778450012207031,N,892 +id1101661,1,2016-04-01 23:29:03,2016-04-01 23:34:31,1,-73.906021118164063,40.757099151611328,-73.91375732421875,40.765346527099609,N,328 +id1884578,2,2016-02-17 13:04:13,2016-02-17 13:10:39,1,-73.967750549316406,40.787609100341797,-73.979843139648438,40.780418395996094,N,386 +id2095160,1,2016-02-07 16:14:15,2016-02-07 16:23:29,1,-74.002227783203125,40.740013122558594,-73.988716125488281,40.745376586914063,N,554 +id1231222,2,2016-01-13 07:04:06,2016-01-13 07:16:05,1,-73.951812744140625,40.769649505615234,-73.973701477050781,40.763351440429688,N,719 +id2314848,2,2016-02-23 07:38:28,2016-02-23 07:47:29,2,-73.985626220703125,40.735729217529297,-73.973106384277344,40.760730743408203,N,541 +id0707652,2,2016-03-31 11:31:08,2016-03-31 11:49:02,6,-73.974380493164063,40.760448455810547,-73.988182067871094,40.754848480224609,N,1074 +id1455814,2,2016-05-06 00:54:15,2016-05-06 01:13:23,1,-73.990455627441406,40.761745452880859,-73.936309814453125,40.812332153320313,N,1148 +id3649378,1,2016-05-28 23:54:46,2016-05-29 00:09:28,1,-73.995429992675781,40.717254638671875,-73.987113952636719,40.739105224609375,N,882 +id0091666,2,2016-01-16 06:38:41,2016-01-16 06:43:54,2,-74.004806518554688,40.752201080322266,-73.994766235351563,40.7506103515625,N,313 +id2681592,1,2016-04-19 07:19:56,2016-04-19 07:26:13,1,-73.958366394042969,40.78399658203125,-73.947669982910156,40.777759552001953,N,377 +id2779189,2,2016-02-26 20:00:32,2016-02-26 20:06:49,1,-74.013153076171875,40.715370178222656,-74.006263732910156,40.748531341552734,N,377 +id3266859,1,2016-06-22 19:55:48,2016-06-22 19:58:04,1,-74.002555847167969,40.750114440917969,-73.992630004882813,40.748348236083984,N,136 +id1615332,1,2016-06-30 08:22:53,2016-06-30 08:30:59,1,-73.99786376953125,40.735965728759766,-74.0081787109375,40.745105743408203,N,486 +id3520035,2,2016-06-09 14:46:14,2016-06-09 15:52:14,1,-73.782432556152344,40.644550323486328,-74.016494750976562,40.706306457519531,N,3960 +id3783277,1,2016-04-13 04:09:08,2016-04-13 04:22:06,1,-73.983139038085938,40.762489318847656,-73.937980651855469,40.800594329833984,N,778 +id1413396,2,2016-03-15 16:36:04,2016-03-15 16:47:17,1,-73.98193359375,40.758022308349609,-73.972007751464844,40.757106781005859,N,673 +id0832604,2,2016-05-11 11:49:39,2016-05-11 12:20:43,1,-73.873397827148438,40.774028778076172,-74.011360168457031,40.702991485595703,N,1864 +id3224405,1,2016-06-17 07:35:32,2016-06-17 07:45:15,1,-73.975555419921875,40.782123565673828,-73.989944458007813,40.757308959960938,N,583 +id0609368,1,2016-04-24 09:07:40,2016-04-24 09:19:58,1,-73.863693237304688,40.769710540771484,-73.942031860351563,40.716472625732422,N,738 +id1228032,1,2016-03-04 22:52:47,2016-03-04 23:06:48,1,-73.961433410644531,40.760387420654297,-73.994293212890625,40.760185241699219,N,841 +id2868054,1,2016-01-17 16:39:59,2016-01-17 17:01:08,4,-74.008354187011719,40.746536254882813,-73.973136901855469,40.762733459472656,N,1269 +id0687251,1,2016-01-01 06:10:27,2016-01-01 06:26:07,1,-73.956390380859375,40.767013549804687,-73.942543029785156,40.841846466064453,N,940 +id2280719,1,2016-01-18 19:08:04,2016-01-18 19:11:15,1,-73.98284912109375,40.773395538330078,-73.988067626953125,40.764827728271484,N,191 +id0230648,2,2016-01-10 06:42:08,2016-01-10 06:45:18,4,-73.975967407226562,40.751010894775391,-73.974678039550781,40.741958618164063,N,190 +id2800840,1,2016-02-09 07:46:00,2016-02-09 07:55:25,1,-73.9720458984375,40.745761871337891,-73.957077026367188,40.766246795654297,N,565 +id2989212,1,2016-02-09 13:20:37,2016-02-09 13:36:02,1,-74.008903503417969,40.710956573486328,-73.995567321777344,40.749458312988281,N,925 +id2469403,1,2016-06-11 01:47:11,2016-06-11 01:57:15,1,-73.983352661132813,40.726390838623047,-74.008895874023438,40.704299926757812,N,604 +id1532730,1,2016-04-05 00:15:59,2016-04-05 00:30:12,2,-73.969261169433594,40.690013885498047,-74.003387451171875,40.655452728271484,N,853 +id0178143,1,2016-03-15 10:19:11,2016-03-15 10:26:57,1,-73.991775512695313,40.749221801757812,-73.98492431640625,40.744945526123047,N,466 +id1212798,2,2016-06-02 19:13:37,2016-06-02 19:40:04,5,-73.995628356933594,40.764438629150391,-73.994346618652344,40.70330810546875,N,1587 +id1085803,2,2016-05-13 09:16:19,2016-05-13 09:24:45,3,-73.969459533691406,40.766471862792969,-73.971687316894531,40.76007080078125,N,506 +id0369299,2,2016-06-14 10:15:29,2016-06-14 10:21:01,6,-73.947853088378906,40.804710388183594,-73.940780639648437,40.805557250976563,N,332 +id1296808,1,2016-02-19 13:41:30,2016-02-19 13:45:08,1,-73.969718933105469,40.765254974365234,-73.962493896484375,40.770473480224609,N,218 +id0067152,2,2016-02-27 21:04:05,2016-02-28 21:03:22,5,-73.993743896484375,40.727443695068359,-74.001335144042969,40.729244232177734,N,86357 +id2065984,2,2016-01-28 13:17:08,2016-01-28 13:36:12,3,-73.982093811035156,40.774749755859375,-73.953399658203125,40.805999755859375,N,1144 +id1744922,2,2016-04-15 17:59:00,2016-04-15 18:13:05,1,-73.997200012207031,40.722263336181641,-74.007225036621094,40.707572937011719,N,845 +id3934509,2,2016-04-13 21:41:29,2016-04-13 21:45:12,2,-73.983871459960937,40.760448455810547,-73.976112365722656,40.7611083984375,N,223 +id1012809,1,2016-04-28 19:57:51,2016-04-28 20:00:57,1,-73.961074829101562,40.760822296142578,-73.954231262207031,40.770309448242187,N,186 +id1147997,2,2016-02-29 13:45:47,2016-02-29 14:02:24,4,-73.981391906738281,40.767658233642578,-73.95416259765625,40.763889312744141,N,997 +id3072479,2,2016-02-02 15:32:48,2016-02-02 15:58:39,6,-73.977012634277344,40.743171691894531,-73.987281799316406,40.757900238037109,N,1551 +id2502791,2,2016-03-05 20:01:38,2016-03-05 20:04:57,1,-73.976219177246094,40.748508453369141,-73.968727111816406,40.756549835205078,N,199 +id1061708,2,2016-04-17 02:54:08,2016-04-17 03:02:22,1,-73.987503051757812,40.722061157226563,-73.98291015625,40.730522155761719,N,494 +id2288477,2,2016-01-21 18:51:48,2016-01-21 19:08:14,6,-73.994056701660156,40.751140594482422,-73.978828430175781,40.762531280517578,N,986 +id3039121,2,2016-06-01 21:58:31,2016-06-01 22:35:14,4,-73.98284912109375,40.761817932128906,-74.003822326660156,40.742767333984375,N,2203 +id1351706,2,2016-05-13 14:04:17,2016-05-13 14:29:39,1,-73.983390808105469,40.749759674072266,-73.870361328125,40.773658752441406,N,1522 +id2008116,1,2016-01-01 17:54:35,2016-01-01 18:00:32,1,-74.000465393066406,40.761955261230469,-73.973312377929688,40.792835235595703,N,357 +id1467994,1,2016-05-12 16:51:19,2016-05-12 17:05:25,1,-73.96551513671875,40.765998840332031,-73.962898254394531,40.764472961425781,N,846 +id2884748,1,2016-01-20 06:48:11,2016-01-20 06:49:43,1,-73.996818542480469,40.762622833251953,-73.992820739746094,40.768314361572266,N,92 +id1362976,2,2016-06-07 05:31:34,2016-06-07 05:36:57,2,-73.989356994628906,40.768131256103516,-73.994972229003906,40.750011444091797,N,323 +id3424128,1,2016-06-04 11:11:09,2016-06-04 11:25:42,1,-73.9658203125,40.758579254150391,-73.988967895507813,40.743976593017578,N,873 +id3220705,2,2016-03-14 09:01:24,2016-03-14 09:03:13,2,-73.972702026367188,40.756458282470703,-73.970443725585937,40.752601623535156,N,109 +id1331789,2,2016-01-21 16:54:01,2016-01-21 17:02:23,4,-73.976371765136719,40.776679992675781,-73.975112915039063,40.787418365478516,N,502 +id1161691,2,2016-05-13 19:53:29,2016-05-13 20:19:56,1,-74.002159118652344,40.719039916992187,-73.963386535644531,40.757450103759766,N,1587 +id2368992,1,2016-02-11 22:51:51,2016-02-11 23:12:55,1,-73.9825439453125,40.772331237792969,-73.974952697753906,40.729934692382813,N,1264 +id0127141,2,2016-03-27 21:55:48,2016-03-27 22:02:29,2,-74.007682800292969,40.712619781494141,-74.016700744628906,40.708858489990234,N,401 +id3567227,2,2016-02-01 18:17:39,2016-02-01 18:26:25,1,-73.979026794433594,40.782222747802734,-73.956390380859375,40.783256530761719,N,526 +id1872552,2,2016-01-22 06:59:21,2016-01-22 07:06:42,1,-73.957687377929688,40.769378662109375,-73.952789306640625,40.789138793945313,N,441 +id0725728,1,2016-05-03 17:16:30,2016-05-03 17:26:12,1,-73.966415405273437,40.762218475341797,-73.959815979003906,40.776271820068359,N,582 +id0601615,2,2016-06-29 21:12:49,2016-06-29 21:35:34,3,-73.979713439941406,40.743770599365234,-73.934829711914063,40.858100891113281,N,1365 +id1531359,2,2016-05-21 00:48:12,2016-05-21 00:54:39,1,-73.993797302246094,40.751670837402344,-73.977897644042969,40.745628356933594,N,387 +id1409438,1,2016-01-12 13:55:53,2016-01-12 14:08:26,1,-74.000816345214844,40.720603942871094,-73.988121032714844,40.722602844238281,N,753 +id3715936,2,2016-04-09 20:33:14,2016-04-09 20:38:04,6,-73.977348327636719,40.787570953369141,-73.982192993164063,40.775634765625,N,290 +id1102683,1,2016-06-29 13:51:48,2016-06-29 14:34:47,1,-73.995849609375,40.726509094238281,-73.974151611328125,40.762790679931641,N,2579 +id2117002,2,2016-05-28 17:35:34,2016-05-28 17:48:30,1,-74.004150390625,40.705860137939453,-73.989601135253906,40.703701019287109,N,776 +id1130823,2,2016-02-26 22:52:24,2016-02-26 22:54:14,6,-73.976531982421875,40.749240875244141,-73.980621337890625,40.746719360351563,N,110 +id1390582,1,2016-01-30 00:09:21,2016-01-30 00:30:48,2,-73.975906372070313,40.745006561279297,-73.997764587402344,40.721004486083984,N,1287 +id3936704,2,2016-04-20 14:46:40,2016-04-20 15:12:48,6,-73.955177307128906,40.779460906982422,-73.904777526855469,40.860488891601563,N,1568 +id1711530,1,2016-05-14 16:33:04,2016-05-14 17:01:23,1,-73.957221984863281,40.76611328125,-73.928962707519531,40.836475372314453,N,1699 +id3903712,2,2016-05-24 11:18:37,2016-05-24 11:54:03,1,-74.007766723632813,40.724536895751953,-73.972831726074219,40.753208160400391,N,2126 +id2563989,2,2016-02-27 12:04:22,2016-02-27 12:11:42,6,-73.975067138671875,40.787620544433594,-73.958198547363281,40.784618377685547,N,440 +id1994241,1,2016-06-03 01:29:45,2016-06-03 01:40:38,1,-74.008041381835938,40.741153717041016,-74.011665344238281,40.707843780517578,N,653 +id3066405,1,2016-01-05 05:25:27,2016-01-05 05:49:58,1,-73.978950500488281,40.748603820800781,-74.176856994628906,40.694080352783203,N,1471 +id3306503,1,2016-04-09 17:39:13,2016-04-09 17:46:21,1,-73.989700317382812,40.767936706542969,-73.977531433105469,40.783596038818359,N,428 +id2936977,2,2016-04-15 19:57:17,2016-04-15 20:16:43,1,-73.9835205078125,40.765399932861328,-73.964248657226562,40.807380676269531,N,1166 +id3871689,1,2016-01-03 23:50:08,2016-01-04 00:04:00,1,-73.983207702636719,40.765937805175781,-73.980430603027344,40.720775604248047,N,832 +id0950028,1,2016-06-28 13:16:06,2016-06-28 13:21:03,1,-73.957061767578125,40.774433135986328,-73.947540283203125,40.783695220947266,N,297 +id3691092,1,2016-05-04 20:18:38,2016-05-04 20:22:35,1,-73.990707397460938,40.715286254882813,-73.986289978027344,40.726325988769531,N,237 +id1166214,2,2016-01-12 00:06:03,2016-01-12 00:12:54,1,-73.999473571777344,40.711883544921875,-73.999763488769531,40.727085113525391,N,411 +id1150587,1,2016-02-15 23:57:10,2016-02-15 23:59:46,1,-74.004997253417969,40.719600677490234,-74.004257202148438,40.716323852539062,N,156 +id0578874,2,2016-05-08 00:25:11,2016-05-08 00:31:24,2,-74.000236511230469,40.742771148681641,-73.989669799804688,40.756649017333984,N,373 +id3136419,2,2016-02-27 13:25:06,2016-02-27 13:40:16,1,-73.979080200195313,40.782310485839844,-74.006118774414063,40.746070861816406,N,910 +id2733814,1,2016-06-24 00:36:32,2016-06-24 01:02:00,1,-73.7818603515625,40.644813537597656,-73.943656921386719,40.612888336181641,N,1528 +id3202288,1,2016-04-10 05:14:23,2016-04-10 05:21:36,4,-73.988410949707031,40.731678009033203,-73.994766235351563,40.718879699707031,N,433 +id2085521,2,2016-02-05 17:23:47,2016-02-05 17:46:32,2,-73.98016357421875,40.738788604736328,-73.989692687988281,40.715705871582031,N,1365 +id1567576,2,2016-06-21 18:03:07,2016-06-21 18:34:54,6,-73.863182067871094,40.769828796386719,-73.968559265136719,40.759128570556641,N,1907 +id0741640,1,2016-02-24 12:17:03,2016-02-24 12:19:26,1,-74.0023193359375,40.729167938232422,-73.996856689453125,40.732513427734375,N,143 +id1307480,1,2016-01-06 20:43:48,2016-01-06 20:54:29,1,-74.003593444824219,40.748493194580078,-74.003738403320312,40.717063903808594,N,641 +id3475380,2,2016-02-24 08:05:53,2016-02-24 08:21:06,1,-73.966606140136719,40.770645141601563,-73.990180969238281,40.756435394287109,N,913 +id0423397,1,2016-06-18 12:09:10,2016-06-18 12:14:50,1,-73.983390808105469,40.765827178955078,-73.989006042480469,40.77783203125,N,340 +id2997758,2,2016-05-15 17:39:39,2016-05-15 18:12:23,1,-73.988349914550781,40.764968872070313,-73.997268676757813,40.719329833984375,N,1964 +id1451058,2,2016-02-06 11:11:49,2016-02-06 11:30:42,1,-73.964286804199219,40.770603179931641,-74.007774353027344,40.740592956542969,N,1133 +id3643917,2,2016-06-22 00:29:12,2016-06-22 00:30:35,5,-74.006637573242188,40.744163513183594,-74.001983642578125,40.750797271728516,N,83 +id0312204,2,2016-03-29 18:14:55,2016-03-29 18:38:58,1,-73.9921875,40.759239196777344,-73.977378845214844,40.729259490966797,N,1443 +id1780873,2,2016-02-29 11:49:06,2016-02-29 12:06:52,5,-73.954330444335937,40.777332305908203,-73.980697631835938,40.780765533447266,N,1066 +id1499599,2,2016-01-08 18:56:53,2016-01-08 19:20:35,2,-73.862815856933594,40.768939971923828,-73.98553466796875,40.731540679931641,N,1422 +id2325463,2,2016-02-13 01:51:03,2016-02-13 01:53:12,6,-73.981300354003906,40.749916076660156,-73.9736328125,40.7515869140625,N,129 +id2492252,2,2016-05-13 14:40:15,2016-05-13 15:15:41,1,-73.961601257324219,40.762748718261719,-73.987617492675781,40.753768920898438,N,2126 +id3869556,1,2016-03-26 19:21:28,2016-03-26 19:38:58,3,-74.003143310546875,40.748855590820313,-73.966819763183594,40.766750335693359,N,1050 +id2574588,2,2016-02-16 12:14:55,2016-02-16 12:33:42,1,-73.971084594726562,40.761383056640625,-73.943008422851563,40.785694122314453,N,1127 +id2110446,1,2016-06-13 14:41:17,2016-06-13 14:44:31,1,-73.960365295410156,40.763114929199219,-73.9591064453125,40.771621704101563,N,194 +id0984761,1,2016-04-27 14:39:23,2016-04-27 15:12:00,1,-73.991218566894531,40.750423431396484,-73.8626708984375,40.757743835449219,N,1957 +id3370404,2,2016-02-16 04:00:02,2016-02-16 04:06:25,1,-74.002662658691406,40.734058380126953,-73.994087219238281,40.751018524169922,N,383 +id1199918,2,2016-01-23 00:56:53,2016-01-23 01:33:14,2,-73.987403869628906,40.747615814208984,-73.924171447753906,40.745521545410156,N,2181 +id0462982,1,2016-02-08 11:27:22,2016-02-08 11:43:21,1,-73.979408264160156,40.776542663574219,-73.996635437011719,40.735542297363281,N,959 +id2798743,1,2016-03-03 21:43:52,2016-03-03 21:49:54,1,-73.990470886230469,40.731128692626953,-73.999237060546875,40.744384765625,N,362 +id1790365,2,2016-04-19 08:40:17,2016-04-19 09:08:06,1,-73.974601745605469,40.783115386962891,-73.983253479003906,40.750118255615234,N,1669 +id2195551,2,2016-05-26 13:43:20,2016-05-26 14:01:53,1,-73.974197387695313,40.762660980224609,-73.995376586914063,40.759700775146484,N,1113 +id2274332,2,2016-03-20 04:03:23,2016-03-20 04:11:20,2,-73.994155883789063,40.725818634033203,-73.974479675292969,40.725711822509766,N,477 +id2403652,1,2016-06-11 21:48:56,2016-06-11 21:55:13,1,-73.980628967285156,40.769893646240234,-73.961830139160156,40.774532318115234,N,377 +id1523152,1,2016-04-25 23:54:08,2016-04-26 00:16:44,1,-73.863494873046875,40.770053863525391,-73.994743347167969,40.760684967041016,N,1356 +id3446928,1,2016-06-26 03:32:10,2016-06-26 03:35:08,1,-73.999481201171875,40.743808746337891,-73.99444580078125,40.750682830810547,N,178 +id3723667,2,2016-06-14 19:24:23,2016-06-14 19:33:47,1,-74.00787353515625,40.740497589111328,-73.988868713378906,40.758594512939453,N,564 +id0875638,1,2016-03-28 13:30:22,2016-03-28 13:48:00,1,-73.952156066894531,40.783916473388672,-73.9769287109375,40.760940551757813,N,1058 +id3933150,1,2016-03-24 23:26:15,2016-03-24 23:54:23,1,-73.999725341796875,40.738437652587891,-73.953529357910156,40.669803619384766,N,1688 +id1642600,1,2016-06-10 06:58:52,2016-06-10 07:01:07,1,-73.961029052734375,40.780597686767578,-73.953239440917969,40.7835693359375,N,135 +id2737033,1,2016-05-16 04:02:51,2016-05-16 04:18:59,1,-73.986030578613281,40.722606658935547,-73.914703369140625,40.757026672363281,N,968 +id3752780,1,2016-05-06 08:19:17,2016-05-06 09:10:35,1,-73.952140808105469,40.769638061523438,-73.885513305664063,40.773212432861328,N,3078 +id1622485,2,2016-05-11 18:12:17,2016-05-11 18:17:30,1,-73.988967895507813,40.746223449707031,-74.00103759765625,40.741607666015625,N,313 +id0649734,1,2016-04-18 12:52:24,2016-04-18 13:18:56,1,-74.000709533691406,40.716468811035156,-73.960174560546875,40.779037475585938,N,1592 +id2639252,2,2016-02-28 03:55:48,2016-02-28 03:58:48,1,-73.989028930664062,40.733993530273438,-73.983268737792969,40.738716125488281,N,180 +id1236920,1,2016-04-16 14:26:36,2016-04-16 14:29:56,1,-73.97467041015625,40.762630462646484,-73.978065490722656,40.754703521728516,N,200 +id1780974,2,2016-05-21 19:40:41,2016-05-21 19:57:19,6,-74.001449584960938,40.731983184814453,-73.994354248046875,40.720451354980469,N,998 +id3277813,1,2016-06-09 11:52:01,2016-06-09 12:03:02,1,-74.002586364746094,40.760787963867188,-74.004425048828125,40.742237091064453,N,661 +id0915928,2,2016-03-14 16:03:36,2016-03-14 16:09:45,1,-73.988662719726563,40.759361267089844,-74.0009765625,40.756961822509766,N,369 +id2115069,2,2016-03-09 20:07:45,2016-03-09 20:11:37,5,-73.979667663574219,40.723033905029297,-73.984420776367188,40.716781616210938,N,232 +id1760931,1,2016-06-01 12:14:03,2016-06-01 12:18:30,2,-73.989242553710938,40.736415863037109,-73.983406066894531,40.730091094970703,N,267 +id1646461,2,2016-05-03 09:47:57,2016-05-03 09:58:26,1,-73.983489990234375,40.766571044921875,-73.984260559082031,40.774051666259766,N,629 +id2081742,1,2016-01-05 02:26:16,2016-01-05 02:35:15,1,-73.987174987792969,40.693508148193359,-73.936477661132812,40.697662353515625,N,539 +id3464952,1,2016-02-18 17:40:17,2016-02-18 17:54:49,2,-74.009170532226562,40.730491638183594,-73.977508544921875,40.780288696289063,N,872 +id1661774,2,2016-02-08 15:44:30,2016-02-08 15:54:45,5,-73.972640991210937,40.782390594482422,-73.953239440917969,40.791038513183594,N,615 +id3591452,2,2016-04-19 08:41:56,2016-04-19 08:52:38,1,-73.989700317382812,40.757049560546875,-73.974700927734375,40.755531311035156,N,642 +id2321975,1,2016-03-26 17:33:54,2016-03-26 17:45:48,4,-73.9970703125,40.722133636474609,-73.987556457519531,40.744056701660156,N,714 +id1519768,2,2016-04-09 09:00:01,2016-04-09 09:06:24,5,-74.017143249511719,40.705406188964844,-74.015296936035156,40.715473175048828,N,383 +id2429626,2,2016-03-29 12:58:29,2016-03-29 13:06:30,1,-73.973129272460938,40.752998352050781,-73.974319458007813,40.760208129882813,N,481 +id1693514,1,2016-02-28 15:59:14,2016-02-28 16:09:58,1,-73.994766235351563,40.721427917480469,-73.964698791503906,40.715839385986328,N,644 +id0762198,1,2016-03-15 17:30:58,2016-03-15 17:39:21,1,-73.967071533203125,40.756935119628906,-73.956733703613281,40.766994476318359,N,503 +id1715890,2,2016-06-02 20:18:57,2016-06-02 20:21:51,5,-73.960395812988281,40.769500732421875,-73.955604553222656,40.778881072998047,N,174 +id0962312,2,2016-04-30 06:08:26,2016-04-30 06:23:16,1,-73.965797424316406,40.762493133544922,-73.871803283691406,40.774471282958984,N,890 +id2279615,2,2016-06-18 00:54:26,2016-06-18 01:16:02,1,-73.986099243164062,40.719329833984375,-73.953971862792969,40.690299987792969,N,1296 +id2119142,1,2016-03-30 11:48:03,2016-03-30 12:02:02,1,-73.976249694824219,40.78900146484375,-73.980979919433594,40.761486053466797,N,839 +id0112561,2,2016-03-10 00:09:37,2016-03-10 00:14:25,1,-74.00933837890625,40.715248107910156,-74.002906799316406,40.725730895996094,N,288 +id1573929,1,2016-05-12 20:57:31,2016-05-12 21:06:23,2,-74.004714965820313,40.751331329345703,-74.002670288085937,40.734470367431641,N,532 +id0658709,1,2016-06-19 10:03:16,2016-06-19 10:16:58,2,-73.954490661621094,40.764015197753906,-73.979469299316406,40.786659240722656,N,822 +id1393392,2,2016-01-03 14:31:18,2016-01-03 15:02:11,2,-73.985107421875,40.751060485839844,-74.183052062988281,40.687961578369141,N,1853 +id1781424,2,2016-03-11 22:07:03,2016-03-11 22:11:05,1,-73.99432373046875,40.745578765869141,-74.005638122558594,40.740261077880859,N,242 +id2925541,1,2016-03-10 10:51:42,2016-03-10 11:01:41,1,-73.960487365722656,40.79754638671875,-73.979660034179688,40.776313781738281,N,599 +id1736753,1,2016-01-05 20:11:02,2016-01-05 20:14:41,1,-73.98260498046875,40.75933837890625,-73.987556457519531,40.756473541259766,N,219 +id2738787,1,2016-05-26 13:11:45,2016-05-26 13:19:23,1,-73.957855224609375,40.765071868896484,-73.954071044921875,40.778057098388672,N,458 +id3946311,2,2016-02-09 16:38:03,2016-02-09 16:51:47,1,-73.975852966308594,40.748992919921875,-73.961677551269531,40.75579833984375,N,824 +id2080630,1,2016-04-10 17:21:11,2016-04-10 17:27:55,1,-74.001365661621094,40.719810485839844,-74.009101867675781,40.704673767089844,N,404 +id2445655,1,2016-06-16 22:18:58,2016-06-16 22:28:14,1,-73.99322509765625,40.762882232666016,-74.006416320800781,40.739875793457031,N,556 +id1162333,1,2016-02-12 14:27:13,2016-02-12 14:49:50,1,-73.977249145507813,40.761177062988281,-73.986091613769531,40.743728637695313,N,1357 +id1693505,1,2016-05-02 07:53:07,2016-05-02 08:23:02,1,-73.954261779785156,40.764171600341797,-73.939163208007812,40.715309143066406,N,1795 +id0919711,2,2016-02-27 00:20:53,2016-02-27 00:25:53,1,-73.985069274902344,40.75927734375,-73.980674743652344,40.765018463134766,N,300 +id3739022,1,2016-03-06 20:51:34,2016-03-06 21:05:38,1,-73.994422912597656,40.750835418701172,-73.961219787597656,40.760883331298828,N,844 +id1619837,2,2016-03-30 19:34:09,2016-03-30 19:45:45,3,-73.9786376953125,40.756496429443359,-73.983497619628906,40.741378784179688,N,696 +id0382883,1,2016-06-07 21:29:44,2016-06-07 21:45:03,1,-73.979736328125,40.761749267578125,-73.951873779296875,40.786144256591797,N,919 +id2034277,1,2016-06-30 08:47:27,2016-06-30 08:57:17,1,-73.982284545898437,40.776699066162109,-73.967987060546875,40.770267486572266,Y,590 +id2453397,2,2016-01-25 11:54:03,2016-01-25 11:58:39,1,-73.985084533691406,40.778938293457031,-73.97930908203125,40.783546447753906,N,276 +id3499109,1,2016-01-01 20:32:57,2016-01-01 20:47:06,1,-73.984771728515625,40.760128021240234,-73.977729797363281,40.745521545410156,N,849 +id3522261,2,2016-02-24 13:11:14,2016-02-24 13:35:26,2,-73.97711181640625,40.759311676025391,-73.947151184082031,40.776153564453125,N,1452 +id2209502,1,2016-06-12 15:41:55,2016-06-12 15:47:30,1,-73.965156555175781,40.763626098632812,-73.953483581542969,40.781360626220703,N,335 +id1879394,2,2016-03-19 01:16:37,2016-03-19 01:21:31,2,-73.956459045410156,40.779121398925781,-73.975044250488281,40.786895751953125,N,294 +id1025038,2,2016-01-06 22:30:58,2016-01-06 22:43:31,2,-73.958183288574219,40.7606201171875,-74.004203796386719,40.742630004882813,N,753 +id3504843,2,2016-04-26 16:10:04,2016-04-26 16:21:11,1,-73.937232971191406,40.764369964599609,-73.939231872558594,40.752048492431641,N,667 +id3604652,1,2016-03-27 12:24:41,2016-03-27 12:44:00,1,-74.007316589355469,40.727027893066406,-73.965171813964844,40.769214630126953,N,1159 +id1651627,2,2016-04-04 08:35:18,2016-04-04 08:40:31,1,-73.975456237792969,40.781688690185547,-73.988655090332031,40.778144836425781,N,313 +id0732857,2,2016-02-19 23:10:16,2016-02-19 23:25:08,1,-73.987403869628906,40.729011535644531,-73.989181518554688,40.718746185302734,N,892 +id1204817,2,2016-04-26 06:45:01,2016-04-26 06:47:41,1,-73.97772216796875,40.763320922851563,-73.977279663085938,40.756828308105469,N,160 +id2774706,2,2016-04-08 18:05:55,2016-04-08 18:17:24,1,-73.985511779785156,40.752910614013672,-74.001602172851562,40.740188598632813,N,689 +id1267391,2,2016-04-09 17:16:58,2016-04-09 17:34:50,5,-73.955337524414063,40.820037841796875,-73.976951599121094,40.780006408691406,N,1072 +id3490461,2,2016-01-20 20:23:49,2016-01-20 20:38:21,1,-73.954803466796875,40.763946533203125,-73.935562133789063,40.811859130859375,N,872 +id0088651,2,2016-03-30 17:34:56,2016-03-30 17:42:00,5,-73.954078674316406,40.766349792480469,-73.964492797851563,40.755771636962891,N,424 +id2443037,2,2016-02-08 09:06:24,2016-02-08 09:22:38,1,-73.978286743164063,40.788429260253906,-73.994583129882813,40.750518798828125,N,974 +id3902274,2,2016-06-08 23:28:47,2016-06-08 23:45:19,5,-73.995201110839844,40.725353240966797,-73.959930419921875,40.770412445068359,N,992 +id3696102,2,2016-05-28 17:20:41,2016-05-28 17:27:34,1,-73.995048522949219,40.755039215087891,-73.988136291503906,40.739181518554688,N,413 +id0173025,2,2016-06-01 20:44:12,2016-06-01 21:26:08,1,-73.973098754882812,40.755359649658203,-73.83642578125,40.717826843261719,N,2516 +id0981147,2,2016-01-01 20:33:18,2016-01-01 20:48:51,1,-73.9547119140625,40.780891418457031,-73.918350219726562,40.758438110351563,N,933 +id2002244,1,2016-01-31 21:00:09,2016-01-31 21:28:15,3,-73.936546325683594,40.760051727294922,-73.910591125488281,40.874946594238281,N,1686 +id3145101,1,2016-06-15 06:46:44,2016-06-15 06:57:54,1,-73.971549987792969,40.7974853515625,-73.976936340332031,40.775302886962891,N,670 +id3138091,1,2016-04-16 10:58:48,2016-04-16 11:04:34,1,-74.004707336425781,40.71307373046875,-73.990470886230469,40.693252563476562,N,346 +id3221760,1,2016-02-23 08:21:36,2016-02-23 08:30:56,1,-73.986801147460938,40.725536346435547,-73.975898742675781,40.748622894287109,N,560 +id3246006,1,2016-01-20 09:49:08,2016-01-20 09:56:16,1,-73.973709106445313,40.760795593261719,-73.964530944824219,40.773124694824219,N,428 +id0685397,1,2016-01-19 19:35:43,2016-01-19 19:41:16,1,-73.974899291992187,40.762241363525391,-73.977813720703125,40.753330230712891,N,333 +id0261150,1,2016-05-20 18:29:07,2016-05-20 19:00:19,2,-73.994003295898437,40.732009887695312,-73.977287292480469,40.789775848388672,N,1872 +id3002228,2,2016-06-08 13:58:30,2016-06-08 14:32:31,1,-73.978607177734375,40.741138458251953,-74.014274597167969,40.704448699951172,N,2041 +id1984112,2,2016-02-02 16:10:01,2016-02-02 16:23:49,2,-73.962921142578125,40.778278350830078,-73.959823608398438,40.808418273925781,N,828 +id2148699,1,2016-06-06 14:32:22,2016-06-06 14:39:56,1,-73.993431091308594,40.747112274169922,-74.004196166992188,40.749282836914063,N,454 +id1533300,1,2016-02-25 18:49:45,2016-02-25 18:54:39,1,-73.9940185546875,40.745986938476562,-73.994026184082031,40.736358642578125,N,294 +id2823280,1,2016-05-08 12:29:20,2016-05-08 12:40:08,1,-73.985374450683594,40.768428802490234,-73.9779052734375,40.753978729248047,N,648 +id2132456,2,2016-04-06 22:27:43,2016-04-06 22:51:29,5,-73.872970581054687,40.774059295654297,-74.006248474121094,40.734230041503906,N,1426 +id1681693,2,2016-02-27 13:14:53,2016-02-27 13:26:54,2,-73.989509582519531,40.739765167236328,-73.976448059082031,40.741813659667969,N,721 +id3487583,2,2016-06-21 16:41:38,2016-06-21 17:17:28,1,-73.790168762207031,40.644241333007813,-73.911903381347656,40.768978118896484,N,2150 +id0009143,2,2016-03-01 22:00:13,2016-03-01 22:06:48,1,-73.985328674316406,40.746959686279297,-73.984222412109375,40.729171752929688,N,395 +id1706417,2,2016-04-02 03:05:43,2016-04-02 03:12:45,1,-74.00421142578125,40.748031616210937,-73.986518859863281,40.767566680908203,N,422 +id1754013,2,2016-04-29 00:31:03,2016-04-29 00:46:05,5,-74.001022338867188,40.733848571777344,-73.990310668945313,40.714073181152344,N,902 +id3137556,1,2016-06-24 17:15:17,2016-06-24 17:31:05,2,-73.993881225585937,40.766391754150391,-74.011093139648438,40.729232788085938,N,948 +id0335922,1,2016-04-23 17:05:51,2016-04-23 17:25:36,2,-73.870872497558594,40.773811340332031,-73.935203552246094,40.751228332519531,N,1185 +id0715913,1,2016-06-11 21:15:13,2016-06-11 21:25:32,1,-74.003761291503906,40.738357543945313,-73.992027282714844,40.733272552490234,N,619 +id3935102,2,2016-05-24 23:03:19,2016-05-24 23:12:47,4,-73.986572265625,40.765735626220703,-73.984321594238281,40.750816345214844,N,568 +id3656228,1,2016-06-16 22:16:14,2016-06-16 22:22:48,1,-73.946372985839844,40.789237976074219,-73.93768310546875,40.818271636962891,N,394 +id2117201,2,2016-05-10 21:50:12,2016-05-10 21:55:42,1,-73.996963500976563,40.737087249755859,-73.981773376464844,40.740673065185547,N,330 +id3976606,2,2016-06-18 17:51:36,2016-06-18 17:56:04,1,-73.981681823730469,40.780200958251953,-73.982536315917969,40.7723388671875,N,268 +id3140229,2,2016-02-24 00:05:00,2016-02-24 00:10:14,1,-73.976921081542969,40.760223388671875,-73.975379943847656,40.752422332763672,N,314 +id3002127,2,2016-04-07 17:47:56,2016-04-07 18:13:08,1,-73.863777160644531,40.770088195800781,-73.974029541015625,40.750530242919922,N,1512 +id2873443,1,2016-01-21 12:16:46,2016-01-21 12:45:51,1,-73.982040405273438,40.762641906738281,-73.955810546875,40.767086029052734,N,1745 +id1034625,1,2016-03-14 09:01:56,2016-03-14 09:26:23,1,-73.990943908691406,40.750705718994141,-73.952781677246094,40.78900146484375,N,1467 +id0663250,2,2016-04-09 23:58:44,2016-04-10 00:17:17,1,-73.873008728027344,40.773910522460938,-73.984573364257813,40.760478973388672,N,1113 +id0713873,1,2016-05-13 09:08:14,2016-05-13 09:45:40,1,-73.974678039550781,40.753791809082031,-73.788902282714844,40.647373199462891,N,2246 +id0508952,1,2016-06-12 17:34:02,2016-06-12 17:43:53,1,-73.990623474121094,40.740089416503906,-73.985618591308594,40.724514007568359,N,591 +id0308453,1,2016-04-25 23:07:19,2016-04-25 23:34:31,2,-73.863624572753906,40.770076751708984,-73.992210388183594,40.760684967041016,N,1632 +id0735149,2,2016-06-14 18:40:48,2016-06-14 18:56:06,1,-73.977012634277344,40.749443054199219,-74.014289855957031,40.702880859375,N,918 +id1825885,2,2016-05-06 23:05:55,2016-05-06 23:11:44,1,-73.980941772460938,40.753444671630859,-73.994842529296875,40.734092712402344,N,349 +id1354420,2,2016-05-11 04:29:29,2016-05-11 04:38:45,2,-73.983558654785156,40.762569427490234,-73.971939086914063,40.797321319580078,N,556 +id2642253,2,2016-05-12 20:04:16,2016-05-12 20:12:44,1,-73.982261657714844,40.745803833007813,-73.962570190429688,40.758888244628906,N,508 +id2461912,2,2016-04-06 10:17:03,2016-04-06 10:20:04,1,-73.985313415527344,40.778499603271484,-73.980400085449219,40.785438537597656,N,181 +id2459887,1,2016-01-27 16:35:58,2016-01-27 17:04:22,1,-73.994110107421875,40.751102447509766,-73.973587036132812,40.754924774169922,N,1704 +id0101761,2,2016-04-29 12:43:52,2016-04-29 12:51:42,1,-73.956947326660156,40.78619384765625,-73.9566650390625,40.775096893310547,N,470 +id1985569,2,2016-04-20 11:27:31,2016-04-20 11:57:44,5,-73.927131652832031,40.744350433349609,-73.990333557128906,40.751869201660156,N,1813 +id2158041,1,2016-02-24 19:46:20,2016-02-24 19:56:36,1,-73.973678588867187,40.754360198974609,-73.963363647460937,40.770721435546875,N,616 +id2981240,1,2016-05-08 08:59:25,2016-05-08 09:01:09,1,-73.953704833984375,40.771286010742188,-73.951988220214844,40.777965545654297,N,104 +id3561355,1,2016-04-08 18:07:03,2016-04-08 18:10:19,1,-73.990058898925781,40.732566833496094,-73.988227844238281,40.727840423583984,N,196 +id1124550,1,2016-03-14 18:51:10,2016-03-14 18:54:19,1,-73.979637145996094,40.786106109619141,-73.973762512207031,40.787052154541016,N,189 +id1281244,1,2016-06-20 07:58:37,2016-06-20 08:05:58,1,-73.921699523925781,40.746986389160156,-73.937751770019531,40.758823394775391,N,441 +id1156945,2,2016-04-13 19:14:15,2016-04-13 19:20:12,1,-73.999618530273437,40.754070281982422,-74.002838134765625,40.760475158691406,N,357 +id2210008,1,2016-01-01 11:48:34,2016-01-01 11:51:37,1,-73.986610412597656,40.776885986328125,-73.9803466796875,40.785385131835938,N,183 +id1121850,1,2016-04-07 17:55:52,2016-04-07 18:08:54,1,-73.947669982910156,40.770576477050781,-73.969566345214844,40.760318756103516,N,782 +id0437967,2,2016-03-10 20:57:50,2016-03-10 21:13:26,2,-73.968269348144531,40.751800537109375,-73.986053466796875,40.744110107421875,N,936 +id1502934,2,2016-05-05 17:59:48,2016-05-05 18:07:48,1,-73.990119934082031,40.741817474365234,-74.002944946289062,40.749519348144531,N,480 +id3362774,1,2016-02-20 10:49:16,2016-02-20 10:59:32,1,-73.98699951171875,40.739593505859375,-73.974014282226563,40.760108947753906,N,616 +id0371326,2,2016-05-19 08:14:23,2016-05-19 08:31:18,1,-73.990127563476563,40.771739959716797,-73.97698974609375,40.780021667480469,N,1015 +id0796445,2,2016-05-22 21:24:04,2016-05-22 21:30:02,1,-73.983863830566406,40.755596160888672,-73.981842041015625,40.768535614013672,N,358 +id0715143,1,2016-04-12 13:36:09,2016-04-12 13:41:32,2,-73.984977722167969,40.747425079345703,-73.989227294921875,40.741134643554688,N,323 +id0067122,2,2016-03-02 19:25:13,2016-03-02 19:45:20,1,-73.978401184082031,40.762840270996094,-73.969871520996094,40.802181243896484,N,1207 +id3840808,2,2016-01-31 02:38:30,2016-01-31 02:47:34,1,-74.004302978515625,40.719619750976562,-73.999397277832031,40.733543395996094,N,544 +id1431206,1,2016-02-10 23:08:07,2016-02-10 23:18:26,1,-73.964492797851563,40.772994995117188,-73.982688903808594,40.755813598632812,N,619 +id3346934,2,2016-05-25 00:48:54,2016-05-25 00:51:38,1,-73.995018005371094,40.755111694335938,-74.004768371582031,40.741668701171875,N,164 +id2576522,2,2016-01-20 08:12:59,2016-01-20 08:15:21,5,-73.944938659667969,40.834239959716797,-73.942779541015625,40.831501007080078,N,142 +id3302801,2,2016-03-18 15:14:14,2016-03-18 15:18:07,1,-73.965995788574219,40.762298583984375,-73.957611083984375,40.768505096435547,N,233 +id3668732,2,2016-01-11 21:42:46,2016-01-11 21:50:31,3,-73.989517211914062,40.748035430908203,-73.98291015625,40.739128112792969,N,465 +id2474736,2,2016-01-11 18:23:52,2016-01-11 18:30:56,1,-73.976905822753906,40.738857269287109,-73.983612060546875,40.743736267089844,N,424 +id0195836,1,2016-04-04 17:43:05,2016-04-04 17:56:01,1,-73.973121643066406,40.7530517578125,-73.958045959472656,40.768764495849609,N,776 +id2283638,2,2016-06-30 10:56:50,2016-06-30 12:04:54,1,-73.992973327636719,40.740703582763672,-73.869338989257813,40.835716247558594,N,4084 +id2368728,1,2016-04-22 01:33:36,2016-04-22 01:40:46,3,-73.99365234375,40.721038818359375,-74.006584167480469,40.731979370117188,N,430 +id0988433,2,2016-02-29 06:20:54,2016-02-29 06:38:50,1,-73.953483581542969,40.807033538818359,-73.994865417480469,40.7501220703125,N,1076 +id1620259,2,2016-02-12 08:03:22,2016-02-12 08:09:31,1,-73.956756591796875,40.766738891601563,-73.949508666992188,40.776611328125,N,369 +id3067887,2,2016-01-04 19:26:01,2016-01-04 19:39:18,6,-73.982124328613281,40.769271850585938,-73.984329223632813,40.738506317138672,N,797 +id1806462,2,2016-06-14 13:08:21,2016-06-14 13:16:30,5,-73.987442016601563,40.779800415039063,-73.972282409667969,40.791278839111328,N,489 +id3089488,1,2016-01-11 21:23:09,2016-01-11 21:29:20,1,-73.976959228515625,40.755565643310547,-73.992195129394531,40.764347076416016,N,371 +id3699955,1,2016-02-13 15:11:03,2016-02-13 15:13:10,2,-74.005790710449219,40.736850738525391,-74.001846313476563,40.732326507568359,N,127 +id3178246,1,2016-06-05 00:35:14,2016-06-05 00:48:38,1,-73.988334655761719,40.759143829345703,-73.997283935546875,40.733539581298828,N,804 +id1601513,1,2016-03-27 11:15:32,2016-03-27 11:47:56,2,-73.987442016601563,40.760749816894531,-73.788795471191406,40.641471862792969,N,1944 +id2664543,1,2016-01-30 08:39:22,2016-01-30 08:59:30,1,-73.958839416503906,40.815216064453125,-73.979621887207031,40.766105651855469,N,1208 +id3916430,2,2016-01-29 20:25:05,2016-01-29 20:46:22,2,-73.974739074707031,40.777950286865234,-74.008041381835938,40.730930328369141,N,1277 +id0118528,1,2016-03-21 06:58:53,2016-03-21 07:02:50,1,-73.961883544921875,40.759449005126953,-73.963821411132813,40.765277862548828,N,237 +id2812391,2,2016-03-08 00:01:30,2016-03-08 00:09:01,1,-73.997817993164062,40.745071411132812,-73.985038757324219,40.728008270263672,N,451 +id2387715,2,2016-06-12 00:47:47,2016-06-12 00:56:11,6,-73.9896240234375,40.7191162109375,-73.998085021972656,40.714851379394531,N,504 +id0376513,2,2016-03-22 21:47:35,2016-03-22 22:12:34,1,-73.776786804199219,40.645214080810547,-73.927459716796875,40.752651214599609,N,1499 +id0823389,1,2016-01-30 22:04:40,2016-01-30 22:16:10,1,-73.946914672851563,40.775760650634766,-73.9798583984375,40.754745483398438,N,690 +id2154790,2,2016-03-05 13:41:53,2016-03-05 13:43:52,1,-73.956512451171875,40.775646209716797,-73.950813293457031,40.775886535644531,N,119 +id0452184,2,2016-01-04 15:32:47,2016-01-04 15:41:10,5,-73.96270751953125,40.794528961181641,-73.979148864746094,40.780181884765625,N,503 +id2835994,1,2016-02-01 07:52:32,2016-02-01 08:06:18,1,-73.983932495117188,40.7755126953125,-73.981849670410156,40.756710052490234,N,826 +id0775002,1,2016-03-29 10:05:42,2016-03-29 10:14:49,1,-73.997970581054688,40.75592041015625,-73.996711730957031,40.752773284912109,N,547 +id1037583,1,2016-03-29 09:56:29,2016-03-29 10:16:00,1,-73.989585876464844,40.751995086669922,-73.986984252929688,40.739086151123047,N,1171 +id2412753,2,2016-05-17 21:11:34,2016-05-17 21:45:04,2,-73.978858947753906,40.762287139892578,-73.9766845703125,40.682056427001953,N,2010 +id2118931,2,2016-04-06 21:31:15,2016-04-06 21:56:01,1,-73.9813232421875,40.75927734375,-73.977737426757813,40.725631713867188,N,1486 +id1204734,1,2016-03-05 16:37:56,2016-03-05 16:48:15,2,-74.001617431640625,40.730648040771484,-74.008811950683594,40.717784881591797,N,619 +id3325845,1,2016-04-21 19:34:52,2016-04-21 19:58:16,1,-73.977912902832031,40.746059417724609,-73.920379638671875,40.765567779541016,N,1404 +id2152959,1,2016-06-29 22:11:56,2016-06-29 22:51:51,2,-73.778877258300781,40.647506713867188,-73.986228942871094,40.734775543212891,N,2395 +id1247749,2,2016-02-04 12:12:16,2016-02-04 12:42:25,5,-73.985298156738281,40.750148773193359,-73.790267944335937,40.646858215332031,N,1809 +id3028433,1,2016-04-28 17:14:24,2016-04-28 17:29:41,1,-73.948554992675781,40.776515960693359,-73.982330322265625,40.772682189941406,N,917 +id3190601,1,2016-02-13 09:46:16,2016-02-13 09:54:41,1,-73.9765625,40.788688659667969,-73.97607421875,40.763900756835938,N,505 +id0950210,2,2016-06-22 04:35:06,2016-06-22 04:38:34,1,-73.979988098144531,40.755500793457031,-73.980247497558594,40.745738983154297,N,208 +id2457514,2,2016-03-13 11:10:32,2016-03-13 11:11:04,2,-73.97796630859375,40.766330718994141,-73.977951049804687,40.766368865966797,N,32 +id2972188,2,2016-01-10 01:42:52,2016-01-10 01:59:01,1,-73.989089965820313,40.720199584960938,-73.975608825683594,40.656398773193359,N,969 +id1585077,1,2016-04-15 19:51:57,2016-04-15 20:14:11,1,-73.991775512695313,40.73529052734375,-73.990966796875,40.718486785888672,N,1334 +id0107818,1,2016-01-16 17:33:05,2016-01-16 17:48:13,1,-73.990020751953125,40.767486572265625,-73.955192565917969,40.773033142089844,N,908 +id0410887,2,2016-03-20 18:50:10,2016-03-20 18:53:25,1,-73.954658508300781,40.764072418212891,-73.96044921875,40.758926391601563,N,195 +id1039849,2,2016-04-15 18:05:53,2016-04-15 18:35:26,1,-73.956794738769531,40.763420104980469,-73.990516662597656,40.723567962646484,N,1773 +id2975374,2,2016-05-12 20:44:47,2016-05-12 20:49:45,6,-73.950790405273437,40.783317565917969,-73.961532592773438,40.771060943603516,N,298 +id2214768,1,2016-01-22 07:08:09,2016-01-22 07:19:09,4,-73.954132080078125,40.775577545166016,-73.980911254882812,40.7745361328125,N,660 +id2811706,2,2016-01-01 23:17:25,2016-01-01 23:55:24,3,-73.978233337402344,40.752628326416016,-73.781448364257813,40.675891876220703,N,2279 +id0984107,1,2016-05-06 06:49:09,2016-05-06 06:51:44,1,-73.992057800292969,40.764183044433594,-73.983573913574219,40.760841369628906,N,155 +id1401307,1,2016-05-30 15:55:31,2016-05-30 16:12:40,1,-73.990829467773437,40.750453948974609,-73.987442016601563,40.722515106201172,N,1029 +id0566994,2,2016-02-28 00:27:33,2016-02-28 00:57:08,1,-73.776702880859375,40.645431518554687,-73.951606750488281,40.824680328369141,N,1775 +id0903681,1,2016-06-04 07:33:22,2016-06-04 07:47:23,1,-73.953536987304687,40.7822265625,-73.992454528808594,40.749221801757812,N,841 +id2032816,2,2016-03-10 09:15:52,2016-03-10 09:23:44,6,-73.985206604003906,40.741539001464844,-73.975410461425781,40.756210327148438,N,472 +id1280226,2,2016-05-02 19:01:36,2016-05-02 19:07:45,1,-73.962532043457031,40.763191223144531,-73.976242065429687,40.744171142578125,N,369 +id2088268,2,2016-02-24 00:09:04,2016-02-24 00:17:28,1,-73.994789123535156,40.755390167236328,-73.970527648925781,40.757308959960938,N,504 +id1652066,1,2016-05-05 20:29:14,2016-05-05 20:47:34,1,-74.008155822753906,40.7119140625,-73.956832885742188,40.718147277832031,N,1100 +id1817276,1,2016-02-23 19:14:07,2016-02-23 19:38:03,1,-73.965522766113281,40.759571075439453,-73.967926025390625,40.789669036865234,N,1436 +id3765238,2,2016-04-01 10:40:58,2016-04-01 11:03:46,1,-73.986854553222656,40.766742706298828,-73.986076354980469,40.756954193115234,N,1368 +id3025743,2,2016-01-17 09:44:47,2016-01-17 10:03:05,1,-73.985885620117187,40.757495880126953,-74.007369995117188,40.703311920166016,N,1098 +id1082150,2,2016-06-13 22:34:39,2016-06-13 22:43:16,2,-73.998428344726563,40.74951171875,-73.972038269042969,40.753738403320313,N,517 +id0043316,2,2016-03-01 09:39:21,2016-03-01 09:41:29,1,-73.974525451660156,40.787506103515625,-73.972518920898437,40.786495208740234,N,128 +id0898617,1,2016-01-10 00:52:20,2016-01-10 00:58:50,3,-73.985244750976563,40.727626800537109,-73.981491088867187,40.741069793701172,N,390 +id0674400,2,2016-02-14 19:42:54,2016-02-14 20:01:06,1,-73.983650207519531,40.765110015869141,-73.925559997558594,40.763130187988281,N,1092 +id2891134,1,2016-05-16 08:20:40,2016-05-16 08:20:42,1,-73.963027954101563,40.774894714355469,-73.963020324707031,40.774890899658203,N,2 +id0937871,1,2016-01-12 14:49:12,2016-01-12 14:55:46,1,-73.991180419921875,40.755630493164063,-73.977165222167969,40.758502960205078,N,394 +id0342985,2,2016-01-07 23:06:04,2016-01-07 23:12:58,1,-73.971282958984375,40.763019561767578,-73.976600646972656,40.751960754394531,N,414 +id2973350,2,2016-05-09 16:57:22,2016-05-09 17:03:33,4,-73.969818115234375,40.760032653808594,-73.977218627929688,40.757610321044922,N,371 +id2141297,1,2016-01-13 16:40:38,2016-01-13 16:50:05,1,-73.960372924804688,40.757747650146484,-73.971481323242187,40.761146545410156,N,567 +id0873270,2,2016-06-10 22:23:15,2016-06-10 22:52:20,1,-73.983406066894531,40.738803863525391,-73.935638427734375,40.82196044921875,N,1745 +id1269100,2,2016-06-28 22:35:12,2016-06-28 22:59:52,1,-73.976409912109375,40.788749694824219,-73.977020263671875,40.760829925537109,N,1480 +id1257418,2,2016-06-08 00:33:54,2016-06-08 00:38:17,5,-73.978515625,40.748176574707031,-73.9947509765625,40.740581512451172,N,263 +id1512492,1,2016-01-10 01:04:34,2016-01-10 01:10:57,2,-74.006271362304688,40.733543395996094,-73.993095397949219,40.736690521240234,N,383 +id2700708,2,2016-01-14 09:28:40,2016-01-14 09:31:31,1,-73.985794067382812,40.746639251708984,-73.989456176757813,40.7401123046875,N,171 +id0585701,2,2016-02-10 18:24:08,2016-02-10 18:48:01,1,-73.962539672851562,40.810146331787109,-73.971702575683594,40.766185760498047,N,1433 +id3910900,1,2016-05-19 22:21:14,2016-05-19 22:32:36,1,-73.987724304199219,40.732620239257813,-73.991294860839844,40.755329132080078,N,682 +id3710772,2,2016-01-16 16:40:49,2016-01-16 16:52:39,1,-73.983909606933594,40.761051177978516,-73.987907409667969,40.737781524658203,N,710 +id2585730,1,2016-02-21 20:14:00,2016-02-21 20:18:13,1,-73.986793518066406,40.760757446289062,-73.977676391601562,40.753475189208984,N,253 +id2224867,2,2016-04-30 08:44:01,2016-04-30 09:14:07,1,-73.776687622070313,40.645351409912109,-73.931617736816406,40.655338287353516,N,1806 +id1343650,1,2016-01-04 20:17:32,2016-01-04 20:28:22,1,-73.976341247558594,40.751499176025391,-73.959259033203125,40.742313385009766,N,650 +id3155349,1,2016-05-04 21:04:03,2016-05-04 21:30:23,3,-73.873321533203125,40.773895263671875,-73.981155395507813,40.764312744140625,N,1580 +id0628744,2,2016-01-15 01:48:32,2016-01-15 01:55:18,2,-73.940582275390625,40.793308258056641,-73.976058959960937,40.788051605224609,N,406 +id3874872,2,2016-02-10 08:05:02,2016-02-10 08:18:40,1,-73.995933532714844,40.726455688476563,-73.974784851074219,40.736000061035156,N,818 +id2062318,2,2016-02-26 23:26:53,2016-02-26 23:44:53,1,-73.983848571777344,40.737808227539063,-73.992729187011719,40.754467010498047,N,1080 +id0933134,2,2016-04-17 23:32:40,2016-04-17 23:49:01,1,-73.990089416503906,40.751701354980469,-73.987716674804688,40.696029663085938,N,981 +id1797653,1,2016-03-18 17:07:37,2016-03-18 17:33:32,1,-73.983192443847656,40.742019653320312,-74.005790710449219,40.709098815917969,N,1555 +id2921894,1,2016-01-03 22:18:14,2016-01-03 22:26:03,1,-73.971710205078125,40.765708923339844,-73.957206726074219,40.767547607421875,N,469 +id0630456,1,2016-05-23 12:57:49,2016-05-23 13:03:56,1,-73.991500854492187,40.754814147949219,-73.984580993652344,40.764614105224609,N,367 +id3754851,2,2016-06-01 09:58:25,2016-06-01 10:09:16,6,-74.001167297363281,40.736717224121094,-74.010444641113281,40.719207763671875,N,651 +id1426122,1,2016-01-21 17:16:07,2016-01-21 17:26:53,1,-73.965293884277344,40.767955780029297,-73.949043273925781,40.777141571044922,N,646 +id3109891,2,2016-02-22 08:18:54,2016-02-22 08:22:28,1,-73.993446350097656,40.757518768310547,-73.998786926269531,40.754478454589844,N,214 +id2303402,1,2016-03-28 12:03:39,2016-03-28 12:18:22,1,-74.007537841796875,40.727672576904297,-73.991836547851563,40.770580291748047,N,883 +id3781725,2,2016-05-17 22:05:09,2016-05-17 22:17:57,2,-73.976997375488281,40.747341156005859,-73.980842590332031,40.763950347900391,N,768 +id0142251,2,2016-04-07 15:11:06,2016-04-07 15:39:15,6,-74.005050659179687,40.741741180419922,-73.984367370605469,40.691188812255859,N,1689 +id2918074,1,2016-06-07 23:59:17,2016-06-08 00:28:07,1,-73.989234924316406,40.769336700439453,-73.9078369140625,40.765895843505859,N,1730 +id3381826,1,2016-05-26 14:06:06,2016-05-26 14:20:28,1,-73.959388732910156,40.774227142333984,-73.961799621582031,40.756061553955078,N,862 +id0262068,2,2016-03-22 07:09:31,2016-03-22 07:13:47,1,-73.952934265136719,40.780132293701172,-73.937789916992188,40.800346374511719,N,256 +id2394792,1,2016-03-28 12:06:38,2016-03-28 12:29:12,1,-74.004112243652344,40.747749328613281,-73.982589721679688,40.742630004882813,N,1354 +id2342453,1,2016-04-29 19:16:05,2016-04-29 19:32:13,1,-73.982902526855469,40.762161254882813,-73.975860595703125,40.791622161865234,N,968 +id2283790,1,2016-04-27 20:26:56,2016-04-27 20:42:01,1,-73.991355895996094,40.739231109619141,-73.977806091308594,40.7735595703125,N,905 +id1680666,1,2016-04-05 15:04:28,2016-04-05 15:55:16,1,-73.865470886230469,40.770530700683594,-73.998466491699219,40.681838989257813,N,3048 +id0350998,1,2016-03-05 02:10:11,2016-03-05 02:23:46,1,-73.972129821777344,40.786552429199219,-73.941131591796875,40.824012756347656,N,815 +id3369416,1,2016-02-05 12:05:56,2016-02-05 12:22:19,1,-73.961524963378906,40.771007537841797,-73.972511291503906,40.791088104248047,N,983 +id2393936,2,2016-06-02 08:01:42,2016-06-02 08:15:29,5,-74.006324768066406,40.733177185058594,-73.994087219238281,40.751163482666016,N,827 +id1109989,1,2016-06-01 17:01:47,2016-06-01 17:16:56,1,-73.781951904296875,40.644844055175781,-73.778884887695313,40.682411193847656,N,909 +id2827174,1,2016-03-01 11:31:10,2016-03-01 11:48:24,1,-73.980621337890625,40.765346527099609,-73.946807861328125,40.776206970214844,N,1034 +id2431582,1,2016-02-25 13:39:33,2016-02-25 13:46:30,1,-73.960365295410156,40.781711578369141,-73.969734191894531,40.768695831298828,N,417 +id3682429,2,2016-01-19 06:52:02,2016-01-19 06:57:30,1,-73.991508483886719,40.750228881835938,-73.981498718261719,40.7587890625,N,328 +id3156314,2,2016-06-23 15:08:46,2016-06-23 16:02:22,6,-73.871391296386719,40.774032592773438,-73.983360290527344,40.758010864257813,N,3216 +id1441848,1,2016-03-27 19:06:30,2016-03-27 19:42:30,1,-73.994560241699219,40.750576019287109,-73.905052185058594,40.771579742431641,N,2160 +id2402994,1,2016-02-14 21:08:47,2016-02-14 21:21:00,1,-73.992713928222656,40.723869323730469,-73.982002258300781,40.746376037597656,N,733 +id2672518,2,2016-02-11 13:23:21,2016-02-11 13:42:07,1,-73.996322631835938,40.726222991943359,-74.00787353515625,40.709217071533203,N,1126 +id1844241,1,2016-05-27 03:45:27,2016-05-27 04:16:03,3,-73.997673034667969,40.744991302490234,-73.942962646484375,40.836414337158203,N,1836 +id3651834,2,2016-05-06 19:23:43,2016-05-06 19:37:12,5,-74.005180358886719,40.719829559326172,-74.015922546386719,40.715099334716797,N,809 +id2185429,1,2016-02-24 07:09:23,2016-02-24 07:14:51,1,-73.985137939453125,40.764564514160156,-73.987930297851563,40.754936218261719,N,328 +id3144667,2,2016-04-15 10:52:33,2016-04-15 11:06:34,1,-73.973289489746094,40.743541717529297,-73.954048156738281,40.765331268310547,N,841 +id0656592,1,2016-04-20 00:22:37,2016-04-20 00:36:32,1,-73.776878356933594,40.644943237304687,-73.71148681640625,40.676715850830078,N,835 +id0376831,2,2016-05-09 10:00:25,2016-05-09 10:07:52,1,-73.982582092285156,40.731208801269531,-73.988357543945313,40.718330383300781,N,447 +id3668997,2,2016-05-03 08:44:09,2016-05-03 08:56:09,1,-73.98663330078125,40.7459716796875,-74.002754211425781,40.739913940429688,N,720 +id1197438,2,2016-01-27 21:26:04,2016-01-27 21:38:32,1,-73.98211669921875,40.772140502929688,-73.966392517089844,40.804241180419922,N,748 +id3762867,2,2016-02-15 13:46:52,2016-02-15 13:51:43,3,-73.983009338378906,40.766231536865234,-73.996635437011719,40.752876281738281,N,291 +id2510502,2,2016-05-12 19:28:07,2016-05-12 19:39:45,1,-73.944671630859375,40.77508544921875,-73.966926574707031,40.765132904052734,N,698 +id3076245,1,2016-06-01 09:33:30,2016-06-01 09:59:54,1,-73.990310668945313,40.731449127197266,-73.997718811035156,40.760486602783203,N,1584 +id1680994,2,2016-05-16 22:29:38,2016-05-16 22:41:11,2,-73.873153686523438,40.774002075195313,-73.945068359375,40.779251098632813,N,693 +id0735264,2,2016-04-28 10:51:35,2016-04-28 11:07:39,2,-73.988349914550781,40.759128570556641,-73.973556518554688,40.77947998046875,N,964 +id3694934,2,2016-03-04 14:42:42,2016-03-04 15:12:51,1,-73.998733520507813,40.722660064697266,-73.994613647460938,40.764381408691406,N,1809 +id0525863,1,2016-01-20 21:36:40,2016-01-20 21:43:08,1,-73.972160339355469,40.762191772460937,-73.955604553222656,40.776058197021484,N,388 +id2302778,1,2016-06-07 17:01:50,2016-06-07 17:25:09,1,-73.98944091796875,40.758388519287109,-73.990837097167969,40.750503540039063,N,1399 +id0221134,1,2016-02-26 17:10:16,2016-02-26 18:00:55,1,-73.963348388671875,40.764415740966797,-73.870277404785156,40.772941589355469,N,3039 +id1108070,1,2016-03-19 15:49:03,2016-03-19 16:11:00,1,-73.990997314453125,40.733875274658203,-73.9517822265625,40.714080810546875,N,1317 +id0623952,1,2016-02-02 17:05:44,2016-02-02 17:23:37,1,-73.965858459472656,40.794441223144531,-73.961944580078125,40.767078399658203,N,1073 +id1877902,2,2016-05-23 15:28:01,2016-05-23 15:30:01,1,-73.969917297363281,40.765651702880859,-73.966407775878906,40.770278930664063,N,120 +id0767394,2,2016-02-01 09:40:19,2016-02-01 09:45:43,1,-73.997200012207031,40.742389678955078,-73.993789672851562,40.735828399658203,N,324 +id2815351,1,2016-03-04 12:34:48,2016-03-04 12:46:45,1,-74.005622863769531,40.746143341064453,-73.990570068359375,40.755901336669922,N,717 +id3696794,2,2016-01-26 20:53:05,2016-01-26 21:09:17,1,-73.989509582519531,40.719688415527344,-73.994491577148438,40.750808715820312,N,972 +id0641074,1,2016-02-14 12:36:01,2016-02-14 12:37:06,1,-73.975044250488281,40.756549835205078,-73.974784851074219,40.756660461425781,N,65 +id1310104,2,2016-01-03 13:04:58,2016-01-03 13:36:41,1,-73.990692138671875,40.745983123779297,-73.927436828613281,40.703140258789063,N,1903 +id2441849,1,2016-03-25 12:01:59,2016-03-25 12:16:17,1,-73.984954833984375,40.732341766357422,-74.009933471679688,40.704727172851563,N,858 +id2118554,2,2016-03-15 09:24:50,2016-03-15 09:28:26,1,-73.993011474609375,40.751445770263672,-73.999855041503906,40.753925323486328,N,216 +id1007189,2,2016-05-08 17:46:01,2016-05-08 17:59:48,2,-73.985069274902344,40.763599395751953,-73.960479736328125,40.797309875488281,N,827 +id0387176,1,2016-02-02 13:19:36,2016-02-02 13:41:57,1,-73.991600036621094,40.730987548828125,-73.988761901855469,40.769035339355469,N,1341 +id3076848,1,2016-04-28 15:44:00,2016-04-28 15:54:28,1,-73.955841064453125,40.781726837158203,-73.9459228515625,40.773479461669922,N,628 +id3836511,2,2016-01-14 07:45:15,2016-01-14 08:06:50,5,-73.973487854003906,40.784770965576172,-74.007553100585937,40.725669860839844,N,1295 +id3113316,1,2016-06-12 18:07:37,2016-06-12 18:58:55,1,-73.789710998535156,40.6434326171875,-73.977798461914063,40.774585723876953,N,3078 +id3887539,2,2016-05-15 15:26:55,2016-05-15 15:29:18,6,-73.981269836425781,40.77410888671875,-73.982315063476563,40.771560668945313,N,143 +id3154268,2,2016-03-19 20:44:05,2016-03-19 20:54:29,5,-73.993972778320312,40.751335144042969,-74.007301330566406,40.740043640136719,N,624 +id3075161,2,2016-02-01 06:23:50,2016-02-01 06:28:11,6,-73.982765197753906,40.777191162109375,-73.982925415039062,40.762939453125,N,261 +id3958310,2,2016-04-12 22:28:11,2016-04-12 23:01:25,2,-73.991012573242188,40.735031127929688,-73.920578002929688,40.7476806640625,N,1994 +id1218623,1,2016-02-01 22:51:19,2016-02-01 22:57:58,2,-73.971084594726562,40.755298614501953,-73.980606079101563,40.764247894287109,N,399 +id2064408,1,2016-03-02 17:12:49,2016-03-02 17:19:23,1,-73.947525024414063,40.783458709716797,-73.957252502441406,40.783004760742188,N,394 +id1362872,2,2016-03-22 05:31:20,2016-03-22 05:47:01,1,-73.978523254394531,40.683917999267578,-73.990928649902344,40.750335693359375,N,941 +id3914832,1,2016-06-28 20:54:38,2016-06-28 21:00:14,1,-74.004447937011719,40.730384826660156,-73.994361877441406,40.726428985595703,N,336 +id2871861,2,2016-02-14 14:47:21,2016-02-14 15:30:24,4,-73.964179992675781,40.719303131103516,-74.0050048828125,40.741302490234375,N,2583 +id0067155,1,2016-04-19 14:25:33,2016-04-19 14:40:47,1,-73.992874145507813,40.740959167480469,-74.002891540527344,40.733516693115234,N,914 +id1588176,1,2016-06-25 11:50:04,2016-06-25 11:59:43,2,-73.946624755859375,40.819992065429687,-73.944984436035156,40.808456420898437,N,579 +id0257449,1,2016-01-11 19:39:24,2016-01-11 19:47:23,1,-73.997894287109375,40.761508941650391,-73.998092651367188,40.744361877441406,N,479 +id2659438,1,2016-03-08 12:06:49,2016-03-08 12:10:22,1,-73.982391357421875,40.731636047363281,-73.976585388183594,40.739494323730469,N,213 +id2590206,1,2016-06-21 18:21:56,2016-06-21 18:34:14,1,-73.976127624511719,40.748615264892578,-73.961524963378906,40.760116577148438,N,738 +id2603814,2,2016-01-09 11:14:48,2016-01-09 11:22:29,5,-73.992172241210937,40.730728149414063,-73.989921569824219,40.718940734863281,N,461 +id2039883,1,2016-03-02 21:42:19,2016-03-02 21:58:33,4,-73.981925964355469,40.780471801757813,-73.991645812988281,40.746604919433594,N,974 +id0989740,2,2016-03-29 20:59:19,2016-03-29 21:03:24,1,-73.987190246582031,40.750621795654297,-73.979927062988281,40.751987457275391,N,245 +id1759910,1,2016-02-15 23:41:02,2016-02-15 23:45:06,1,-74.00579833984375,40.745548248291016,-73.990066528320312,40.76068115234375,N,244 +id2999146,2,2016-03-29 11:39:40,2016-03-29 12:08:41,1,-74.007881164550781,40.7470703125,-73.973121643066406,40.753528594970703,N,1741 +id0463905,1,2016-02-17 13:53:04,2016-02-17 14:03:04,1,-73.967674255371094,40.765892028808594,-73.971565246582031,40.780601501464844,N,600 +id2657921,1,2016-03-31 03:58:54,2016-03-31 04:15:09,1,-73.978744506835938,40.746116638183594,-73.941268920898437,40.843830108642578,N,975 +id0289061,2,2016-06-24 12:32:40,2016-06-24 12:51:25,5,-73.991554260253906,40.745532989501953,-74.003944396972656,40.722412109375,N,1125 +id3261883,1,2016-05-22 22:13:05,2016-05-22 22:45:14,1,-73.97540283203125,40.647846221923828,-73.955047607421875,40.733715057373047,N,1929 +id1055848,2,2016-02-08 22:29:21,2016-02-08 22:37:35,2,-74.008872985839844,40.718410491943359,-73.993110656738281,40.738460540771484,N,494 +id3008306,1,2016-06-03 09:00:50,2016-06-03 09:08:05,1,-73.955032348632813,40.785751342773437,-73.939476013183594,40.805206298828125,N,435 +id0900611,2,2016-06-08 20:47:37,2016-06-08 20:53:57,1,-73.971351623535156,40.787551879882813,-73.95281982421875,40.783100128173828,N,380 +id0449400,1,2016-04-07 01:05:46,2016-04-07 01:10:02,1,-73.978607177734375,40.756103515625,-73.993156433105469,40.736438751220703,N,256 +id3037098,1,2016-03-03 10:22:42,2016-03-03 10:26:47,1,-73.98895263671875,40.730575561523437,-73.982994079589844,40.738986968994141,N,245 +id2122802,2,2016-02-16 13:38:42,2016-02-16 13:43:40,1,-73.974075317382812,40.755786895751953,-73.977195739746094,40.747108459472656,N,298 +id3933240,2,2016-03-31 22:38:20,2016-03-31 22:56:55,5,-73.974700927734375,40.758544921875,-73.92333984375,40.770179748535156,N,1115 +id2349919,2,2016-06-16 09:09:47,2016-06-16 09:19:01,1,-73.948249816894531,40.774578094482422,-73.95989990234375,40.758750915527344,N,554 +id1572996,2,2016-04-27 08:51:52,2016-04-27 08:58:56,1,-73.986488342285156,40.762100219726562,-73.978843688964844,40.758781433105469,N,424 +id1694353,2,2016-04-15 14:09:16,2016-04-15 14:21:59,2,-73.955360412597656,40.765201568603516,-73.972770690917969,40.748680114746094,N,763 +id1111524,2,2016-05-04 11:34:53,2016-05-04 11:45:32,1,-73.966339111328125,40.753398895263672,-73.948860168457031,40.773300170898437,N,639 +id3102508,2,2016-04-21 07:09:47,2016-04-21 07:16:10,5,-73.994392395019531,40.75115966796875,-73.978706359863281,40.750320434570312,N,383 +id2783069,1,2016-01-27 20:20:25,2016-01-27 20:34:25,1,-73.981063842773438,40.761028289794922,-73.978668212890625,40.745994567871094,N,840 +id1443059,2,2016-06-15 14:41:13,2016-06-15 15:03:27,1,-73.968368530273438,40.770790100097656,-73.977027893066406,40.789939880371094,N,1334 +id3661422,1,2016-02-20 18:21:49,2016-02-20 18:41:30,1,-73.975578308105469,40.76031494140625,-73.985763549804688,40.726879119873047,N,1181 +id1866762,2,2016-06-04 00:30:16,2016-06-04 00:45:22,1,-73.989021301269531,40.743858337402344,-73.961097717285156,40.76171875,N,906 +id3128098,1,2016-05-12 10:11:23,2016-05-12 10:17:01,1,-73.975387573242187,40.748935699462891,-73.977516174316406,40.749679565429688,N,338 +id1103741,2,2016-05-09 00:28:54,2016-05-09 00:50:19,2,-73.976638793945313,40.764148712158203,-73.822441101074219,40.778369903564453,N,1285 +id0610940,2,2016-06-11 12:39:31,2016-06-11 12:40:32,1,-73.968673706054688,40.678169250488281,-73.967247009277344,40.681598663330078,N,61 +id2679031,2,2016-02-25 12:05:52,2016-02-25 12:25:52,1,-74.013778686523438,40.707687377929687,-73.989044189453125,40.737388610839844,N,1200 +id2694838,2,2016-06-11 02:01:47,2016-06-11 02:08:19,2,-73.991539001464844,40.725471496582031,-73.976753234863281,40.741138458251953,N,392 +id0463835,1,2016-05-28 13:27:02,2016-05-28 13:36:24,2,-73.963714599609375,40.763637542724609,-73.982368469238281,40.774700164794922,N,562 +id3130244,2,2016-06-22 19:22:28,2016-06-22 20:07:57,1,-73.781929016113281,40.644599914550781,-73.9844970703125,40.761379241943359,N,2729 +id3833716,1,2016-04-29 22:46:25,2016-04-29 22:51:22,1,-73.989341735839844,40.7359619140625,-73.989372253417969,40.729274749755859,N,297 +id0890899,1,2016-01-13 15:10:38,2016-01-13 15:39:11,1,-73.978866577148438,40.764320373535156,-74.013847351074219,40.714828491210938,N,1713 +id3618949,2,2016-02-14 18:19:51,2016-02-14 18:38:22,1,-73.994178771972656,40.746368408203125,-73.958396911621094,40.762111663818359,N,1111 +id3757297,1,2016-05-12 18:16:46,2016-05-12 18:40:13,1,-73.963912963867188,40.767974853515625,-73.990615844726563,40.761219024658203,N,1407 +id2256017,2,2016-05-10 06:29:42,2016-05-10 06:40:18,1,-73.981361389160156,40.781284332275391,-73.942916870117188,40.840427398681641,N,636 +id1125847,1,2016-05-10 10:27:23,2016-05-10 11:02:31,1,-73.980125427246094,40.783313751220703,-73.912361145019531,40.777256011962891,N,2108 +id0911960,2,2016-06-09 15:43:40,2016-06-09 15:44:50,1,-73.991096496582031,40.739551544189453,-73.994659423828125,40.737400054931641,N,70 +id3074402,2,2016-01-16 23:09:30,2016-01-16 23:15:28,1,-73.988052368164063,40.737781524658203,-73.988075256347656,40.743881225585937,N,358 +id0038293,1,2016-03-22 18:39:47,2016-03-22 19:06:13,1,-73.990859985351563,40.751914978027344,-73.966102600097656,40.768142700195313,N,1586 +id3885987,1,2016-02-02 11:14:46,2016-02-02 11:41:43,1,-74.014968872070312,40.711116790771484,-73.96453857421875,40.719493865966797,N,1617 +id3198543,2,2016-03-27 16:48:24,2016-03-27 17:02:00,5,-73.975608825683594,40.786788940429688,-73.956123352050781,40.768711090087891,N,816 +id3175690,2,2016-01-26 22:12:02,2016-01-26 22:25:52,6,-74.003501892089844,40.726779937744141,-73.990402221679688,40.757511138916016,N,830 +id2656545,1,2016-02-01 13:46:33,2016-02-01 14:21:58,1,-73.975364685058594,40.751293182373047,-73.790565490722656,40.646831512451172,N,2125 +id3967592,1,2016-04-17 20:24:57,2016-04-17 20:29:12,2,-74.002159118652344,40.719188690185547,-74.010307312011719,40.711616516113281,N,255 +id0849439,1,2016-06-08 19:14:16,2016-06-08 19:27:24,1,-73.955802917480469,40.771823883056641,-73.971298217773438,40.751514434814453,N,788 +id3547686,2,2016-03-14 21:50:18,2016-03-14 22:25:51,3,-73.997726440429687,40.756290435791016,-73.943122863769531,40.717540740966797,N,2133 +id0628858,2,2016-02-06 01:49:04,2016-02-06 01:56:31,1,-73.991928100585938,40.73114013671875,-73.999748229980469,40.744129180908203,N,447 +id0474312,2,2016-05-29 06:36:24,2016-05-29 06:43:44,1,-73.951728820800781,40.754951477050781,-73.968421936035156,40.738029479980469,N,440 +id0330422,1,2016-03-16 06:14:07,2016-03-16 06:20:41,1,-73.994392395019531,40.749954223632812,-73.976783752441406,40.756069183349609,N,394 +id1817024,1,2016-04-04 22:07:22,2016-04-04 22:18:46,1,-73.992263793945313,40.744693756103516,-73.987510681152344,40.719947814941406,N,684 +id0843920,1,2016-03-11 18:50:15,2016-03-11 18:56:44,1,-73.978446960449219,40.785751342773437,-73.981399536132812,40.773929595947266,N,389 +id3396366,1,2016-02-23 17:08:50,2016-02-23 17:20:29,1,-73.998603820800781,40.760959625244141,-73.98486328125,40.753608703613281,N,699 +id0653452,1,2016-02-13 19:37:33,2016-02-13 19:57:19,2,-73.989273071289063,40.758136749267578,-73.938331604003906,40.846992492675781,N,1186 +id2308224,2,2016-03-18 11:50:21,2016-03-18 11:56:24,2,-73.967079162597656,40.803913116455078,-73.975189208984375,40.790363311767578,N,363 +id0998892,1,2016-01-19 09:12:33,2016-01-19 09:21:43,1,-74.003318786621094,40.727046966552734,-74.002273559570312,40.718822479248047,N,550 +id2623070,1,2016-05-04 00:46:50,2016-05-04 01:14:06,1,-74.00146484375,40.730915069580078,-73.94036865234375,40.808235168457031,N,1636 +id1485214,2,2016-04-29 19:45:01,2016-04-29 19:55:23,6,-74.005943298339844,40.735988616943359,-73.986282348632812,40.730678558349609,N,622 +id1209296,2,2016-04-08 23:12:14,2016-04-08 23:18:28,2,-73.949996948242188,40.776210784912109,-73.952186584472656,40.786388397216797,N,374 +id0976007,2,2016-01-02 20:07:25,2016-01-02 20:11:35,3,-73.994369506835938,40.724971771240234,-73.989112854003906,40.730457305908203,N,250 +id1171466,2,2016-02-24 10:14:43,2016-02-24 10:49:30,1,-73.997169494628906,40.737007141113281,-73.968101501464844,40.761066436767578,N,2087 +id3057210,2,2016-03-25 17:40:21,2016-03-25 17:48:16,2,-73.959709167480469,40.775371551513672,-73.967292785644531,40.763309478759766,N,475 +id1946383,1,2016-02-04 16:48:49,2016-02-04 17:01:05,1,-73.983840942382813,40.770610809326172,-73.970909118652344,40.764015197753906,N,736 +id1029273,1,2016-06-24 12:40:30,2016-06-24 12:53:25,2,-73.973777770996094,40.755046844482422,-73.972496032714844,40.745826721191406,N,775 +id0318571,2,2016-05-16 06:05:38,2016-05-16 06:17:12,1,-74.004951477050781,40.737411499023438,-73.977241516113281,40.755382537841797,N,694 +id3143759,1,2016-04-24 21:35:23,2016-04-24 21:41:49,1,-73.98114013671875,40.767894744873047,-73.969528198242188,40.786354064941406,N,386 +id2824475,2,2016-03-02 20:47:14,2016-03-02 20:49:55,2,-73.978080749511719,40.751293182373047,-73.980514526367188,40.745323181152344,N,161 +id0863902,2,2016-03-19 21:12:07,2016-03-19 21:16:09,1,-73.977699279785156,40.783893585205078,-73.965774536132813,40.803905487060547,N,242 +id3623771,2,2016-06-19 19:24:49,2016-06-19 19:34:32,1,-74.016204833984375,40.714740753173828,-74.00762939453125,40.733470916748047,N,583 +id2278489,2,2016-02-17 13:25:28,2016-02-17 13:29:36,1,-73.954315185546875,40.770210266113281,-73.947128295898438,40.776084899902344,N,248 +id1853272,1,2016-01-01 04:12:02,2016-01-01 04:21:27,1,-74.004310607910156,40.75250244140625,-74.002983093261719,40.72076416015625,N,565 +id0751846,2,2016-06-02 20:04:27,2016-06-02 20:16:00,5,-73.982070922851562,40.739891052246094,-74.007461547851563,40.707790374755859,N,693 +id0318935,2,2016-05-15 01:19:11,2016-05-15 01:30:08,1,-73.971603393554688,40.762844085693359,-73.984107971191406,40.748958587646484,N,657 +id2754984,2,2016-06-21 19:38:06,2016-06-21 19:42:30,5,-73.994392395019531,40.724628448486328,-74.0045166015625,40.728549957275391,N,264 +id1111466,1,2016-03-27 12:36:45,2016-03-27 12:43:28,1,-74.002975463867188,40.7342529296875,-73.987625122070313,40.741203308105469,N,403 +id3064515,2,2016-02-26 12:21:21,2016-02-26 13:14:11,4,-73.776786804199219,40.645362854003906,-73.974449157714844,40.749488830566406,N,3170 +id1278912,2,2016-03-10 01:53:29,2016-03-10 02:01:43,1,-73.874809265136719,40.774070739746094,-73.886970520019531,40.751529693603516,N,494 +id1580139,1,2016-01-10 19:33:53,2016-01-10 19:42:11,1,-73.982070922851562,40.772624969482422,-73.97735595703125,40.791213989257813,N,498 +id0367884,1,2016-01-16 19:56:57,2016-01-16 20:39:53,1,-73.777030944824219,40.645065307617188,-73.987777709960937,40.779415130615234,N,2576 +id1828844,1,2016-05-13 18:23:43,2016-05-13 18:54:18,1,-73.983802795410156,40.762138366699219,-74.01220703125,40.706424713134766,N,1835 +id1385240,2,2016-05-20 21:25:54,2016-05-20 21:30:13,1,-73.970748901367188,40.751625061035156,-73.981216430664063,40.737415313720703,N,259 +id2014595,1,2016-04-04 10:58:53,2016-04-04 11:19:26,1,-73.99407958984375,40.751262664794922,-73.974861145019531,40.759201049804688,N,1233 +id3223307,1,2016-05-24 19:32:42,2016-05-24 19:42:42,1,-73.970222473144531,40.756374359130859,-73.953269958496094,40.779548645019531,N,600 +id0425782,2,2016-05-27 06:52:10,2016-05-27 06:57:10,5,-73.974098205566406,40.791679382324219,-73.971321105957031,40.797679901123047,N,300 +id2519251,1,2016-03-30 09:16:53,2016-03-30 09:41:29,1,-73.963363647460937,40.757450103759766,-74.008384704589844,40.722564697265625,N,1476 +id3705991,1,2016-01-18 16:44:25,2016-01-18 16:48:07,1,-73.956626892089844,40.774776458740234,-73.956100463867188,40.784496307373047,N,222 +id2248452,1,2016-04-24 03:46:45,2016-04-24 03:54:03,1,-73.994514465332031,40.719188690185547,-74.009017944335938,40.710899353027344,N,438 +id3782682,2,2016-02-28 19:43:58,2016-02-28 19:52:00,5,-73.984474182128906,40.760570526123047,-73.969741821289063,40.757205963134766,N,482 +id3782260,1,2016-06-01 17:41:55,2016-06-01 18:08:16,1,-73.986801147460938,40.758571624755859,-73.966995239257813,40.772384643554688,N,1581 +id0692653,1,2016-01-20 23:21:56,2016-01-20 23:30:07,1,-73.974617004394531,40.760143280029297,-73.97332763671875,40.748935699462891,N,491 +id1715568,1,2016-01-13 08:03:45,2016-01-13 08:14:36,1,-73.992050170898438,40.764247894287109,-73.983406066894531,40.750946044921875,N,651 +id3782821,2,2016-05-09 22:46:08,2016-05-09 23:06:14,1,-73.974578857421875,40.763023376464844,-73.942146301269531,40.827743530273438,N,1206 +id3278717,2,2016-06-05 12:51:39,2016-06-05 13:06:19,1,-73.995307922363281,40.743995666503906,-73.973991394042969,40.736385345458984,N,880 +id0996290,1,2016-02-19 07:48:10,2016-02-19 07:54:20,1,-73.997200012207031,40.722126007080078,-73.992195129394531,40.734737396240234,N,370 +id0011990,1,2016-06-07 11:43:19,2016-06-07 12:12:54,1,-73.997512817382812,40.765522003173828,-73.95526123046875,40.765140533447266,N,1775 +id0190736,1,2016-01-01 17:11:25,2016-01-01 17:31:08,1,-73.899826049804688,40.741188049316406,-73.827919006347656,40.827281951904297,N,1183 +id1870088,2,2016-05-17 16:00:08,2016-05-17 16:20:19,1,-74.014022827148438,40.713771820068359,-73.992446899414062,40.742900848388672,N,1211 +id0063249,2,2016-04-25 14:50:00,2016-04-25 14:53:31,3,-73.981147766113281,40.737373352050781,-73.985160827636719,40.736137390136719,N,211 +id0807178,2,2016-02-15 04:02:23,2016-02-15 04:19:19,1,-73.98236083984375,40.756439208984375,-73.943641662597656,40.8319091796875,N,1016 +id0034582,2,2016-02-09 12:56:47,2016-02-09 13:25:06,1,-73.975852966308594,40.756031036376953,-73.789970397949219,40.646930694580078,N,1699 +id3864943,2,2016-02-18 11:50:04,2016-02-18 11:57:31,1,-73.958930969238281,40.771659851074219,-73.946815490722656,40.775810241699219,N,447 +id0046394,2,2016-03-26 17:25:30,2016-03-26 17:51:15,1,-73.983856201171875,40.755481719970703,-73.905830383300781,40.767810821533203,N,1545 +id1061638,1,2016-02-06 00:26:19,2016-02-06 00:30:37,2,-73.991775512695313,40.727237701416016,-73.987602233886719,40.735893249511719,N,258 +id0853976,2,2016-04-04 16:26:27,2016-04-04 16:31:00,1,-73.988548278808594,40.74884033203125,-73.982719421386719,40.757251739501953,N,273 +id1276852,1,2016-06-16 11:35:27,2016-06-16 11:41:11,1,-73.969215393066406,40.764297485351562,-73.966049194335937,40.758453369140625,N,344 +id3772131,2,2016-04-26 00:01:11,2016-04-26 00:10:37,2,-73.973411560058594,40.753959655761719,-74.002403259277344,40.730159759521484,N,566 +id3404730,2,2016-03-26 07:24:22,2016-03-26 07:36:48,5,-73.874649047851563,40.772079467773438,-73.982261657714844,40.749988555908203,N,746 +id0849882,2,2016-02-26 10:05:04,2016-02-26 10:50:28,5,-73.788063049316406,40.641651153564453,-73.984275817871094,40.760799407958984,N,2724 +id0160918,2,2016-05-07 11:18:34,2016-05-07 11:22:25,1,-73.980377197265625,40.780666351318359,-73.972694396972656,40.790855407714844,N,231 +id0380273,1,2016-06-06 07:35:53,2016-06-06 07:49:41,1,-73.99053955078125,40.756301879882813,-73.96856689453125,40.761955261230469,N,828 +id3861062,2,2016-03-12 11:35:05,2016-03-12 11:40:35,1,-73.975227355957031,40.790031433105469,-73.979263305664063,40.777713775634766,N,330 +id1793877,1,2016-01-08 11:22:40,2016-01-08 11:26:05,1,-73.983444213867188,40.744129180908203,-73.987754821777344,40.738983154296875,N,205 +id2192944,2,2016-03-18 20:42:37,2016-03-18 20:50:32,1,-73.96002197265625,40.773689270019531,-73.971023559570313,40.790981292724609,N,475 +id1006753,2,2016-01-16 12:51:26,2016-01-16 12:56:00,1,-73.984611511230469,40.759891510009766,-73.970680236816406,40.757400512695313,N,274 +id2171578,1,2016-02-17 08:25:49,2016-02-17 08:38:20,2,-73.971435546875,40.760116577148438,-73.9847412109375,40.74810791015625,N,751 +id0167137,2,2016-04-25 10:36:26,2016-04-25 10:42:30,5,-73.995529174804687,40.759738922119141,-73.989013671875,40.756069183349609,N,364 +id3743615,1,2016-04-16 14:25:31,2016-04-16 14:33:24,1,-74.001937866210937,40.729557037353516,-74.0087890625,40.720016479492188,N,473 +id3121064,1,2016-02-18 06:17:55,2016-02-18 06:21:07,1,-73.9573974609375,40.770423889160156,-73.965217590332031,40.7618408203125,N,192 +id1680785,2,2016-02-26 08:55:57,2016-02-26 09:03:55,1,-73.986076354980469,40.722068786621094,-74.011398315429688,40.702960968017578,N,478 +id0449707,2,2016-04-21 16:21:39,2016-04-21 16:48:14,5,-73.95867919921875,40.781520843505859,-73.947822570800781,40.825210571289063,N,1595 +id0253107,1,2016-06-06 08:48:17,2016-06-06 08:53:17,1,-74.016059875488281,40.714832305908203,-74.00994873046875,40.721641540527344,N,300 +id1819791,1,2016-01-25 18:49:39,2016-01-25 19:04:49,1,-73.983024597167969,40.730792999267578,-73.95928955078125,40.763347625732422,N,910 +id0986225,1,2016-06-15 19:41:09,2016-06-15 19:52:43,2,-73.974502563476563,40.751556396484375,-73.950576782226563,40.780609130859375,N,694 +id1018256,2,2016-02-21 00:57:44,2016-02-21 01:00:22,1,-73.9482421875,40.798233032226563,-73.946556091308594,40.792320251464844,N,158 +id1635387,2,2016-01-26 19:30:06,2016-01-26 19:53:26,1,-74.009506225585938,40.706241607666016,-73.990959167480469,40.733940124511719,N,1400 +id0216000,1,2016-02-09 16:36:36,2016-02-09 17:15:53,1,-73.990058898925781,40.756015777587891,-73.865638732910156,40.770992279052734,Y,2357 +id0033654,2,2016-03-19 20:22:42,2016-03-19 20:26:05,1,-73.988449096679687,40.759075164794922,-73.983528137207031,40.764511108398438,N,203 +id1414946,2,2016-05-11 14:46:24,2016-05-11 15:00:07,3,-74.010093688964844,40.703376770019531,-74.005126953125,40.721580505371094,N,823 +id2847779,2,2016-03-24 14:50:06,2016-03-24 15:44:16,1,-73.788398742675781,40.642158508300781,-73.759101867675781,40.944370269775391,N,3250 +id2643344,1,2016-04-24 12:24:41,2016-04-24 12:28:26,1,-73.958343505859375,40.764480590820312,-73.947586059570313,40.776168823242187,N,225 +id0757602,2,2016-05-23 18:34:29,2016-05-23 18:41:41,2,-73.981826782226563,40.770530700683594,-73.9803466796875,40.759510040283203,N,432 +id2686937,2,2016-05-06 05:17:13,2016-05-06 05:46:20,1,-73.94927978515625,40.776691436767578,-73.776519775390625,40.646060943603516,N,1747 +id3128765,2,2016-01-28 18:21:27,2016-01-28 18:27:16,1,-73.996604919433594,40.742595672607422,-74.003143310546875,40.734130859375,N,349 +id0260350,2,2016-02-14 14:09:41,2016-02-14 14:10:03,6,-73.776901245117188,40.645431518554687,-73.777191162109375,40.646339416503906,N,22 +id0156485,2,2016-01-12 20:50:09,2016-01-12 21:14:55,1,-74.007759094238281,40.731060028076172,-73.946693420410156,40.776420593261719,N,1486 +id1430448,2,2016-04-12 20:46:50,2016-04-12 20:52:14,1,-73.966590881347656,40.764198303222656,-73.962249755859375,40.775390625,N,324 +id1313291,2,2016-04-23 10:39:48,2016-04-23 11:18:39,1,-73.810478210449219,40.691848754882813,-73.990921020507812,40.728038787841797,N,2331 +id1411645,2,2016-03-22 12:32:12,2016-03-22 12:48:56,2,-73.969650268554688,40.757839202880859,-73.976730346679688,40.764072418212891,N,1004 +id1880062,2,2016-06-14 20:52:14,2016-06-14 21:00:20,2,-74.005203247070313,40.726688385009766,-74.015830993652344,40.711563110351563,N,486 +id2510381,1,2016-02-12 19:02:03,2016-02-12 19:29:25,1,-73.972381591796875,40.756584167480469,-74.008857727050781,40.739395141601562,Y,1642 +id3171939,2,2016-04-14 23:13:07,2016-04-14 23:26:53,1,-73.977287292480469,40.7496337890625,-74.00048828125,40.718379974365234,N,826 +id0731158,1,2016-05-22 19:15:13,2016-05-22 19:24:22,1,-73.990676879882813,40.734489440917969,-74.004570007324219,40.717147827148438,N,549 +id3698379,1,2016-06-16 13:07:20,2016-06-16 13:26:06,1,-73.973190307617187,40.764156341552734,-73.9871826171875,40.750347137451172,N,1126 +id2246431,1,2016-01-28 23:14:09,2016-01-28 23:28:23,1,-73.995162963867188,40.749671936035156,-73.97540283203125,40.778690338134766,N,854 +id0650422,2,2016-03-23 22:25:32,2016-03-23 22:42:15,1,-73.985191345214844,40.719135284423828,-73.953811645507813,40.683616638183594,N,1003 +id3147193,1,2016-03-07 23:22:35,2016-03-07 23:31:23,1,-73.974998474121094,40.755825042724609,-73.992012023925781,40.770725250244141,N,528 +id0613334,2,2016-06-17 23:27:36,2016-06-18 00:12:50,5,-73.977378845214844,40.784328460693359,-73.947799682617188,40.694808959960938,N,2714 +id3032481,1,2016-06-04 23:28:38,2016-06-04 23:40:27,3,-73.986831665039062,40.750663757324219,-74.004264831542969,40.742172241210937,N,709 +id2500360,1,2016-04-28 08:18:18,2016-04-28 08:33:37,1,-74.005729675292969,40.736553192138672,-73.978973388671875,40.753665924072266,N,919 +id1224947,1,2016-01-31 20:43:23,2016-01-31 20:49:13,2,-73.991470336914063,40.748249053955078,-73.993171691894531,40.744846343994141,N,350 +id3280584,2,2016-01-08 12:28:00,2016-01-08 12:30:46,2,-73.969871520996094,40.761295318603516,-73.96612548828125,40.757030487060547,N,166 +id3159601,2,2016-03-10 20:35:13,2016-03-10 21:10:01,1,-73.862823486328125,40.768478393554688,-73.990959167480469,40.764236450195313,N,2088 +id2390701,2,2016-02-03 04:03:29,2016-02-03 04:11:05,1,-73.983383178710938,40.725990295410156,-73.994369506835938,40.712398529052734,N,456 +id2238443,2,2016-04-24 23:38:01,2016-04-24 23:40:48,1,-73.949501037597656,40.801849365234375,-73.943283081054687,40.801921844482422,N,167 +id1086743,2,2016-01-30 06:00:22,2016-01-30 06:23:14,1,-73.790382385253906,40.646926879882813,-73.938407897949219,40.800266265869141,N,1372 +id2142604,2,2016-01-13 10:46:32,2016-01-13 11:05:58,6,-73.988037109375,40.748241424560547,-73.962806701660156,40.762420654296875,N,1166 +id1683435,1,2016-01-14 18:59:09,2016-01-14 19:01:38,1,-73.999588012695313,40.753978729248047,-73.990798950195313,40.766155242919922,N,149 +id1927491,2,2016-04-04 09:47:44,2016-04-04 10:23:39,1,-73.994247436523438,40.690109252929688,-73.994583129882813,40.736358642578125,N,2155 +id0571411,2,2016-02-12 15:58:07,2016-02-12 16:42:37,1,-73.992866516113281,40.752960205078125,-73.995262145996094,40.752998352050781,N,2670 +id3706979,1,2016-06-26 11:29:58,2016-06-26 11:43:02,2,-73.982681274414063,40.74505615234375,-73.959091186523438,40.772590637207031,N,784 +id2373594,1,2016-03-12 12:22:02,2016-03-12 12:25:24,1,-73.98822021484375,40.749717712402344,-73.980728149414063,40.748088836669922,N,202 +id2403203,1,2016-04-15 14:47:43,2016-04-15 14:57:29,1,-73.991569519042969,40.750270843505859,-74.005455017089844,40.740093231201172,N,586 +id3710398,1,2016-01-07 08:28:44,2016-01-07 08:47:43,1,-73.964805603027344,40.806774139404297,-73.955764770507813,40.776470184326172,N,1139 +id0182779,2,2016-05-12 19:47:25,2016-05-12 20:16:56,6,-73.997200012207031,40.736629486083984,-73.950531005859375,40.794948577880859,N,1771 +id0325723,2,2016-04-24 20:55:15,2016-04-24 21:11:25,1,-73.983413696289062,40.745433807373047,-73.970939636230469,40.79522705078125,N,970 +id0780619,2,2016-03-17 08:32:03,2016-03-17 08:45:29,1,-73.983467102050781,40.74420166015625,-73.990859985351563,40.753608703613281,N,806 +id0752500,2,2016-02-20 11:51:35,2016-02-20 12:17:09,1,-73.978103637695313,40.783588409423828,-73.998527526855469,40.724769592285156,N,1534 +id3895250,1,2016-01-14 15:04:46,2016-01-14 15:19:06,1,-73.9871826171875,40.744613647460938,-73.986236572265625,40.755805969238281,Y,860 +id0907502,2,2016-02-22 08:12:31,2016-02-22 08:26:09,5,-73.990272521972656,40.756778717041016,-73.975677490234375,40.765499114990234,N,818 +id2840301,2,2016-05-30 22:18:33,2016-05-30 22:51:04,1,-73.982063293457031,40.776420593261719,-73.844512939453125,40.851348876953125,N,1951 +id1804452,2,2016-02-21 14:53:09,2016-02-21 15:09:53,1,-73.994216918945313,40.743446350097656,-73.945663452148438,40.777015686035156,N,1004 +id1062855,2,2016-02-14 00:21:09,2016-02-14 00:27:08,2,-73.957756042480469,40.717781066894531,-73.941734313964844,40.726276397705078,N,359 +id1071008,2,2016-03-13 00:44:48,2016-03-13 00:57:31,2,-73.987678527832031,40.732685089111328,-73.987686157226562,40.721382141113281,N,763 +id2595099,2,2016-04-04 15:51:51,2016-04-04 16:08:57,1,-73.998054504394531,40.760990142822266,-73.99700927734375,40.729831695556641,N,1026 +id1062147,1,2016-06-10 23:54:59,2016-06-11 00:07:14,2,-73.98614501953125,40.778793334960938,-73.961708068847656,40.802288055419922,N,735 +id3988631,1,2016-03-24 15:24:57,2016-03-24 15:30:32,1,-73.965995788574219,40.789997100830078,-73.962112426757813,40.77728271484375,N,335 +id2098682,1,2016-02-26 05:00:10,2016-02-26 05:22:49,2,-74.009162902832031,40.704261779785156,-74.17694091796875,40.694717407226562,N,1359 +id2976194,2,2016-05-12 22:10:26,2016-05-12 22:16:42,3,-73.957527160644531,40.773841857910156,-73.94647216796875,40.799751281738281,N,376 +id1714334,1,2016-05-29 19:44:34,2016-05-29 20:08:25,1,-73.978485107421875,40.772586822509766,-73.943168640136719,40.718917846679688,N,1431 +id2108593,1,2016-01-07 10:42:46,2016-01-07 10:55:18,1,-73.972320556640625,40.757549285888672,-73.992393493652344,40.747730255126953,N,752 +id2253686,2,2016-05-25 19:30:35,2016-05-25 19:52:01,1,-73.871047973632812,40.773750305175781,-73.82745361328125,40.703441619873047,N,1286 +id2629282,1,2016-03-15 00:26:19,2016-03-15 00:28:43,1,-73.998367309570312,40.735481262207031,-74.004196166992188,40.739536285400391,N,144 +id0918944,2,2016-06-03 18:46:55,2016-06-03 18:50:41,1,-74.001968383789063,40.746757507324219,-74.004776000976563,40.737525939941406,N,226 +id1254163,2,2016-05-27 02:34:35,2016-05-27 03:14:17,5,-73.988426208496094,40.738529205322266,-73.989753723144531,40.691230773925781,N,2382 +id1858406,2,2016-05-01 03:35:18,2016-05-01 03:50:15,2,-73.984733581542969,40.763320922851563,-73.995880126953125,40.732841491699219,N,897 +id2216351,1,2016-02-27 10:37:44,2016-02-27 10:40:32,1,-73.97686767578125,40.764781951904297,-73.968017578125,40.757663726806641,N,168 +id1994373,2,2016-03-07 17:36:18,2016-03-07 17:43:03,1,-73.975311279296875,40.762809753417969,-73.966911315917969,40.755840301513672,N,405 +id2404725,1,2016-04-28 11:50:13,2016-04-28 12:22:48,1,-73.962059020996094,40.779338836669922,-73.863883972167969,40.769214630126953,N,1955 +id3586477,1,2016-02-09 08:59:17,2016-02-09 09:05:21,1,-73.984161376953125,40.740135192871094,-73.995513916015625,40.743942260742187,N,364 +id2295501,1,2016-05-28 06:47:33,2016-05-28 07:06:44,1,-74.010017395019531,40.714607238769531,-73.953834533691406,40.787822723388672,N,1151 +id0569083,1,2016-03-09 10:01:58,2016-03-09 10:13:37,1,-73.994926452636719,40.744853973388672,-73.979957580566406,40.755725860595703,N,699 +id1106895,1,2016-04-03 21:24:09,2016-04-03 21:29:04,1,-73.989913940429687,40.734832763671875,-73.980186462402344,40.748367309570313,N,295 +id0187801,2,2016-03-15 16:17:14,2016-03-15 16:32:51,1,-74.015228271484375,40.709663391113281,-73.988571166992188,40.693035125732422,N,937 +id3048231,2,2016-06-21 08:08:37,2016-06-21 08:30:22,1,-73.965599060058594,40.754413604736328,-73.983116149902344,40.735038757324219,N,1305 +id0606948,2,2016-01-16 14:30:58,2016-01-16 14:43:24,5,-73.982658386230469,40.745391845703125,-73.98773193359375,40.756740570068359,N,746 +id1458040,2,2016-01-24 22:34:24,2016-01-24 22:39:33,4,-73.953109741210937,40.788688659667969,-73.940887451171875,40.806709289550781,N,309 +id1115664,2,2016-04-26 14:41:43,2016-04-26 14:49:21,1,-74.002609252929688,40.744808197021484,-73.993873596191406,40.735641479492188,N,458 +id1347687,1,2016-05-31 06:07:01,2016-05-31 06:22:44,1,-73.990142822265625,40.733310699462891,-73.954765319824219,40.765327453613281,N,943 +id2628976,1,2016-02-15 12:49:49,2016-02-15 12:55:25,1,-73.949150085449219,40.781078338623047,-73.963882446289063,40.761341094970703,N,336 +id1953319,2,2016-04-14 13:38:41,2016-04-14 13:48:18,1,-73.999259948730469,40.726718902587891,-73.992866516113281,40.737400054931641,N,577 +id1253994,2,2016-03-01 22:38:49,2016-03-01 22:47:48,1,-73.999847412109375,40.728370666503906,-73.991523742675781,40.7496337890625,N,539 +id2504118,2,2016-06-20 12:49:29,2016-06-20 13:03:22,1,-73.991073608398438,40.745491027832031,-73.979621887207031,40.756706237792969,N,833 +id1614534,2,2016-02-26 05:55:24,2016-02-26 05:57:02,1,-73.979621887207031,40.732738494873047,-73.985527038574219,40.735321044921875,N,98 +id2174584,2,2016-02-12 08:19:55,2016-02-12 08:54:28,1,-73.912643432617188,40.742713928222656,-73.997955322265625,40.741222381591797,N,2073 +id1452765,1,2016-01-11 22:50:16,2016-01-11 23:12:09,1,-73.991752624511719,40.750255584716797,-73.944984436035156,40.803348541259766,N,1313 +id1219060,2,2016-02-15 12:40:30,2016-02-15 12:45:07,1,-73.982307434082031,40.768398284912109,-73.974960327148438,40.761798858642578,N,277 +id2430026,2,2016-03-26 09:09:51,2016-03-26 09:13:22,1,-73.955551147460937,40.779220581054687,-73.954330444335937,40.773941040039063,N,211 +id3831549,1,2016-06-04 05:52:29,2016-06-04 05:58:01,1,-73.957778930664063,40.769546508789063,-73.981216430664063,40.773685455322266,N,332 +id2627463,2,2016-06-16 13:48:15,2016-06-16 14:03:30,1,-74.004096984863281,40.747909545898438,-73.985870361328125,40.752540588378906,N,915 +id0886171,2,2016-01-25 19:17:26,2016-01-25 19:22:11,1,-73.981300354003906,40.733261108398437,-73.986526489257813,40.737079620361328,N,285 +id0639926,1,2016-01-08 13:20:47,2016-01-08 13:29:39,1,-73.981475830078125,40.780849456787109,-73.974212646484375,40.787345886230469,N,532 +id3714892,2,2016-05-14 11:19:57,2016-05-14 11:51:57,5,-73.949676513671875,40.780570983886719,-73.990318298339844,40.756309509277344,N,1920 +id2596638,2,2016-06-02 22:22:33,2016-06-02 22:35:27,1,-73.987373352050781,40.759811401367188,-73.9805908203125,40.785747528076172,N,774 +id3119740,2,2016-04-19 08:28:56,2016-04-19 08:46:42,1,-74.000686645507813,40.747554779052734,-74.002754211425781,40.718448638916016,N,1066 +id3799218,1,2016-06-19 18:54:40,2016-06-19 19:03:31,2,-73.989410400390625,40.733440399169922,-74.001129150390625,40.729293823242187,N,531 +id1218359,2,2016-01-10 15:05:46,2016-01-10 15:11:42,1,-73.98516845703125,40.741958618164063,-73.992225646972656,40.749420166015625,N,356 +id0662107,2,2016-03-26 14:38:07,2016-03-26 14:40:42,2,-73.994941711425781,40.740108489990234,-74.001396179199219,40.744865417480469,N,155 +id3076828,1,2016-06-30 15:35:27,2016-06-30 15:43:07,1,-73.961204528808594,40.780513763427734,-73.947532653808594,40.801200866699219,Y,460 +id0386255,2,2016-01-20 21:13:23,2016-01-20 21:23:15,1,-73.983383178710938,40.756031036376953,-73.964469909667969,40.75799560546875,N,592 +id1786951,2,2016-05-03 20:41:13,2016-05-03 20:50:32,2,-73.989341735839844,40.757961273193359,-73.979423522949219,40.78179931640625,N,559 +id3677122,1,2016-05-02 00:25:34,2016-05-02 00:30:02,2,-73.988594055175781,40.745227813720703,-73.978515625,40.755229949951172,N,268 +id0731811,1,2016-02-29 19:56:29,2016-02-29 20:02:43,1,-73.997154235839844,40.722160339355469,-73.991355895996094,40.732292175292969,N,374 +id2342492,2,2016-04-17 02:50:22,2016-04-17 02:57:47,2,-74.006820678710938,40.743850708007813,-73.985702514648437,40.735519409179688,N,445 +id2800130,2,2016-03-31 20:50:49,2016-03-31 20:58:36,5,-73.980438232421875,40.754100799560547,-73.983589172363281,40.742378234863281,N,467 +id1721972,1,2016-01-31 04:15:46,2016-01-31 04:23:42,3,-74.001091003417969,40.731582641601563,-73.9952392578125,40.718452453613281,N,476 +id0276213,1,2016-05-26 22:10:11,2016-05-26 22:34:11,1,-73.973480224609375,40.789848327636719,-73.985481262207031,40.738826751708984,N,1440 +id1530460,1,2016-04-03 22:02:15,2016-04-03 22:11:17,1,-74.002159118652344,40.727924346923828,-73.979751586914063,40.722919464111328,N,542 +id2908750,2,2016-02-13 12:18:51,2016-02-13 12:23:04,1,-73.966598510742188,40.757453918457031,-73.974449157714844,40.759410858154297,N,253 +id3356612,2,2016-03-11 22:13:34,2016-03-11 22:17:42,6,-73.998085021972656,40.716983795166016,-74.005203247070313,40.724384307861328,N,248 +id2325285,1,2016-04-06 01:18:02,2016-04-06 01:36:46,1,-73.976058959960937,40.751533508300781,-73.973930358886719,40.689632415771484,N,1124 +id1337272,2,2016-03-26 11:21:54,2016-03-26 11:24:18,2,-73.963455200195312,40.757915496826172,-73.957679748535156,40.765357971191406,N,144 +id2011510,1,2016-04-03 21:07:24,2016-04-03 21:15:00,1,-73.938072204589844,40.847465515136719,-73.940948486328125,40.824367523193359,N,456 +id2917897,1,2016-05-19 07:38:41,2016-05-19 07:47:19,1,-73.990127563476563,40.729568481445313,-73.986076354980469,40.743671417236328,N,518 +id3140226,2,2016-01-12 12:49:46,2016-01-12 12:52:21,1,-73.942413330078125,40.806270599365234,-73.939582824707031,40.802738189697266,N,155 +id0055995,1,2016-04-30 13:40:17,2016-04-30 13:53:23,1,-73.971549987792969,40.750587463378906,-73.987098693847656,40.720962524414063,N,786 +id3716681,2,2016-05-31 22:00:13,2016-05-31 22:28:53,2,-73.786750793457031,40.645099639892578,-73.973533630371094,40.747879028320313,N,1720 +id1246723,2,2016-02-09 06:33:52,2016-02-09 06:39:05,2,-73.99127197265625,40.749900817871094,-73.978691101074219,40.763339996337891,N,313 +id3258332,2,2016-04-29 10:25:37,2016-04-29 11:00:32,1,-73.985023498535156,40.741649627685547,-73.968742370605469,40.764598846435547,N,2095 +id3697158,1,2016-06-18 18:48:20,2016-06-18 18:58:04,2,-73.980316162109375,40.77484130859375,-73.984176635742187,40.761878967285156,N,584 +id0127284,2,2016-04-05 12:30:20,2016-04-05 13:35:56,1,-73.943855285644531,40.838401794433594,-73.953392028808594,40.767230987548828,N,3936 +id3883304,1,2016-02-29 01:16:20,2016-02-29 01:29:52,2,-73.984329223632813,40.759433746337891,-73.95843505859375,40.801570892333984,N,812 +id0335465,1,2016-03-12 10:25:12,2016-03-12 10:31:20,1,-73.993545532226563,40.741985321044922,-73.99755859375,40.735855102539063,N,368 +id2491536,1,2016-03-18 00:07:18,2016-03-18 00:17:13,2,-74.005943298339844,40.742233276367188,-73.978919982910156,40.742771148681641,N,595 +id0323390,2,2016-01-07 14:38:09,2016-01-07 14:54:45,1,-73.997909545898437,40.741081237792969,-74.016578674316406,40.710521697998047,N,996 +id0216206,2,2016-02-17 14:07:15,2016-02-17 14:31:05,1,-73.981521606445313,40.772735595703125,-73.984542846679688,40.744487762451172,N,1430 +id3409859,2,2016-01-14 16:34:19,2016-01-14 16:43:28,1,-73.971939086914063,40.756858825683594,-73.987091064453125,40.748538970947266,N,549 +id2165056,2,2016-04-16 02:16:44,2016-04-16 02:30:10,1,-73.987556457519531,40.71990966796875,-73.946670532226562,40.776588439941406,N,806 +id0554328,1,2016-03-25 17:10:56,2016-03-25 17:20:15,1,-73.994209289550781,40.751003265380859,-73.97991943359375,40.749603271484375,N,559 +id3595029,2,2016-05-01 07:11:48,2016-05-01 07:16:56,1,-73.946441650390625,40.792129516601563,-73.966880798339844,40.763961791992188,N,308 +id0974117,2,2016-05-22 00:38:31,2016-05-22 00:40:31,1,-73.977447509765625,40.784320831298828,-73.976242065429687,40.791118621826172,N,120 +id3965758,2,2016-06-09 20:12:53,2016-06-09 20:29:55,2,-74.000267028808594,40.724010467529297,-73.995796203613281,40.759201049804688,N,1022 +id0849033,1,2016-03-18 19:23:22,2016-03-18 20:06:27,1,-73.990013122558594,40.757091522216797,-73.94403076171875,40.694469451904297,N,2585 +id2117190,2,2016-03-28 18:41:30,2016-03-28 19:02:29,1,-74.005500793457031,40.750923156738281,-73.989425659179687,40.757511138916016,N,1259 +id2807883,2,2016-02-25 21:13:21,2016-02-25 21:16:05,1,-73.961280822753906,40.76068115234375,-73.954307556152344,40.770191192626953,N,164 +id3495168,2,2016-06-14 16:45:59,2016-06-14 16:52:44,1,-73.986190795898437,40.743240356445313,-73.993492126464844,40.751930236816406,N,405 +id1598334,1,2016-02-29 16:59:27,2016-02-29 17:05:36,1,-73.975685119628906,40.748805999755859,-73.980842590332031,40.753688812255859,N,369 +id0563762,2,2016-06-19 21:41:38,2016-06-19 21:46:18,5,-73.982536315917969,40.739738464355469,-73.97418212890625,40.753849029541016,N,280 +id3378927,2,2016-06-03 13:38:40,2016-06-03 13:50:03,1,-73.991127014160156,40.756000518798828,-73.987380981445313,40.748058319091797,N,683 +id1520352,2,2016-03-07 14:54:07,2016-03-07 15:08:00,2,-73.968757629394531,40.757080078125,-73.946357727050781,40.773929595947266,N,833 +id2156701,1,2016-02-05 05:52:19,2016-02-05 06:03:24,1,-73.949226379394531,40.780746459960937,-73.976119995117188,40.751197814941406,N,665 +id1741698,1,2016-03-04 15:04:57,2016-03-04 15:12:45,1,-73.955337524414063,40.779689788818359,-73.954147338867188,40.766433715820312,N,468 +id2545664,2,2016-03-09 17:09:40,2016-03-09 17:12:54,1,-73.954208374023437,40.774711608886719,-73.960098266601563,40.766510009765625,N,194 +id3357442,1,2016-04-07 00:10:35,2016-04-07 00:14:13,1,-73.925865173339844,40.758922576904297,-73.915626525878906,40.765743255615234,N,218 +id3672198,2,2016-03-20 04:44:42,2016-03-20 04:57:05,1,-73.984748840332031,40.72174072265625,-73.955177307128906,40.777217864990234,N,743 +id3071012,2,2016-03-20 01:16:30,2016-03-20 01:18:06,1,-73.9752197265625,40.752571105957031,-73.971786499023438,40.750751495361328,N,96 +id2316637,1,2016-02-24 15:57:13,2016-02-24 16:17:14,1,-73.97686767578125,40.747478485107422,-73.956619262695312,40.770648956298828,N,1201 +id1902193,2,2016-01-30 17:17:00,2016-01-30 17:55:58,1,-73.992057800292969,40.74932861328125,-73.960182189941406,40.78192138671875,N,2338 +id2840647,1,2016-05-13 22:55:49,2016-05-13 23:15:26,1,-73.88531494140625,40.773097991943359,-73.991294860839844,40.692276000976563,N,1177 +id0442633,1,2016-06-11 23:20:07,2016-06-11 23:36:46,1,-73.992851257324219,40.763015747070313,-73.9449462890625,40.778812408447266,N,999 +id0926920,2,2016-04-12 10:28:10,2016-04-12 10:35:15,1,-73.991981506347656,40.73114013671875,-74.00640869140625,40.725013732910156,N,425 +id2362163,2,2016-02-19 09:13:58,2016-02-19 09:53:54,1,-73.863502502441406,40.76971435546875,-73.984268188476562,40.757846832275391,N,2396 +id1812795,1,2016-06-30 16:29:52,2016-06-30 16:58:40,1,-73.789596557617188,40.646842956542969,-73.951995849609375,40.587371826171875,N,1728 +id1055881,1,2016-01-09 02:54:56,2016-01-09 03:00:58,4,-73.994491577148438,40.754241943359375,-73.978004455566406,40.754848480224609,N,362 +id1977934,1,2016-05-02 22:35:10,2016-05-02 23:07:36,1,-74.002235412597656,40.73345947265625,-73.96258544921875,40.647232055664062,N,1946 +id1433571,1,2016-01-09 09:59:02,2016-01-09 10:12:44,1,-73.949859619140625,40.780376434326172,-73.979179382324219,40.760349273681641,N,822 +id3980706,2,2016-06-17 15:29:48,2016-06-17 15:47:43,1,-73.980682373046875,40.75885009765625,-73.987632751464844,40.744041442871094,N,1075 +id2059521,2,2016-03-03 10:35:52,2016-03-03 10:55:05,1,-73.983871459960937,40.738124847412109,-73.974090576171875,40.751861572265625,N,1153 +id0669850,2,2016-01-01 07:00:36,2016-01-01 07:05:38,1,-73.976226806640625,40.751529693603516,-73.998870849609375,40.760326385498047,N,302 +id0058960,1,2016-01-15 05:02:15,2016-01-15 05:08:18,1,-73.989875793457031,40.725612640380859,-73.998939514160156,40.734012603759766,N,363 +id2043603,2,2016-01-29 21:26:00,2016-01-29 21:32:48,1,-73.997657775878906,40.745021820068359,-73.986907958984375,40.740669250488281,N,408 +id3894521,2,2016-01-27 01:47:10,2016-01-27 01:54:40,1,-74.001052856445312,40.731815338134766,-73.996589660644531,40.719078063964844,N,450 +id1571084,1,2016-05-16 13:43:13,2016-05-16 14:31:41,1,-73.93896484375,40.802314758300781,-73.987800598144531,40.749553680419922,N,2908 +id3804129,2,2016-04-09 13:40:42,2016-04-09 13:56:37,1,-73.972801208496094,40.751571655273438,-73.999969482421875,40.728790283203125,N,955 +id1297004,1,2016-04-09 11:52:31,2016-04-09 11:57:36,2,-73.982490539550781,40.751396179199219,-73.991455078125,40.739009857177734,N,305 +id1588124,1,2016-01-06 00:10:34,2016-01-06 00:29:32,2,-73.991722106933594,40.726490020751953,-73.946495056152344,40.682926177978516,Y,1138 +id0823698,2,2016-02-17 15:25:42,2016-02-17 15:33:10,1,-73.996009826660156,40.753959655761719,-74.0030517578125,40.733100891113281,N,448 +id3784312,2,2016-01-31 12:04:32,2016-01-31 12:16:38,2,-73.972679138183594,40.755470275878906,-74.000556945800781,40.757671356201172,N,726 +id1440173,2,2016-04-02 11:02:42,2016-04-02 11:19:27,1,-73.979049682617188,40.729930877685547,-73.983741760253906,40.759361267089844,N,1005 +id1087057,2,2016-03-01 17:32:39,2016-03-01 17:42:57,1,-74.002853393554687,40.760494232177734,-73.993019104003906,40.754520416259766,N,618 +id2012555,1,2016-03-07 09:17:58,2016-03-07 09:32:34,1,-73.963050842285156,40.674419403076172,-73.989791870117187,40.68646240234375,N,876 +id2988231,2,2016-01-10 03:42:42,2016-01-10 03:57:36,2,-73.987396240234375,40.720211029052734,-73.953521728515625,40.777729034423828,N,894 +id0845759,1,2016-03-06 13:17:30,2016-03-06 13:20:24,1,-73.951042175292969,40.786067962646484,-73.957115173339844,40.777950286865234,N,174 +id2679062,2,2016-01-11 21:21:22,2016-01-11 21:27:40,1,-74.010505676269531,40.718479156494141,-74.011711120605469,40.709575653076172,N,378 +id3024002,1,2016-06-08 13:34:48,2016-06-08 13:48:39,1,-73.979766845703125,40.758415222167969,-73.969749450683594,40.753543853759766,N,831 +id0023904,1,2016-03-29 21:36:37,2016-03-29 21:53:10,1,-73.986579895019531,40.742923736572266,-73.967781066894531,40.759750366210938,N,993 +id1822885,1,2016-03-23 06:45:08,2016-03-23 06:49:54,1,-73.949844360351563,40.784767150878906,-73.935455322265625,40.804222106933594,N,286 +id3116620,2,2016-05-31 23:48:22,2016-05-31 23:52:33,1,-73.978797912597656,40.745750427246094,-73.980056762695312,40.749099731445313,N,251 +id1708481,2,2016-04-02 00:13:04,2016-04-02 00:28:31,2,-73.999008178710938,40.720279693603516,-73.942977905273437,40.708808898925781,N,927 +id2981272,2,2016-02-19 23:15:22,2016-02-19 23:27:40,5,-73.995552062988281,40.759220123291016,-74.000930786132813,40.736793518066406,N,738 +id0251574,1,2016-05-02 22:24:26,2016-05-02 22:36:35,2,-73.983734130859375,40.761436462402344,-73.952384948730469,40.783882141113281,N,729 +id0397562,2,2016-02-11 09:46:35,2016-02-11 09:53:27,1,-73.968009948730469,40.768741607666016,-73.985313415527344,40.775192260742188,N,412 +id0679153,2,2016-02-23 17:13:06,2016-02-23 17:27:46,1,-73.989509582519531,40.739616394042969,-73.981590270996094,40.758975982666016,N,880 +id3119548,1,2016-05-21 09:19:02,2016-05-21 09:29:41,1,-73.975654602050781,40.789794921875,-73.98577880859375,40.762786865234375,N,639 +id1977330,2,2016-04-07 12:54:44,2016-04-07 13:07:35,3,-73.982597351074219,40.7640380859375,-73.972953796386719,40.780269622802734,N,771 +id0117181,1,2016-01-16 01:07:15,2016-01-16 01:12:25,1,-73.987937927246094,40.738449096679688,-73.978317260742188,40.751155853271484,N,310 +id3626242,2,2016-04-28 10:00:35,2016-04-28 10:08:34,5,-73.974464416503906,40.742267608642578,-73.979965209960937,40.73248291015625,N,479 +id2538368,2,2016-03-28 13:20:26,2016-03-28 13:43:38,1,-73.956680297851563,40.762989044189453,-73.940589904785156,40.8414306640625,N,1392 +id3649052,1,2016-02-28 07:29:12,2016-02-28 07:36:10,1,-73.971641540527344,40.746383666992188,-73.970428466796875,40.7652587890625,N,418 +id3584048,2,2016-03-13 08:06:43,2016-03-13 08:14:11,2,-73.960746765136719,40.775215148925781,-73.981468200683594,40.780872344970703,N,448 +id2641794,1,2016-04-27 20:50:02,2016-04-27 20:54:38,1,-73.955398559570313,40.772602081298828,-73.950050354003906,40.786407470703125,N,276 +id2738877,1,2016-02-05 02:06:57,2016-02-05 02:12:34,1,-73.98455810546875,40.757133483886719,-73.981979370117187,40.772998809814453,N,337 +id3861140,1,2016-05-28 12:09:05,2016-05-28 12:17:43,1,-73.986297607421875,40.751880645751953,-73.973114013671875,40.758441925048828,N,518 +id0684162,2,2016-01-03 12:52:52,2016-01-03 13:07:46,2,-73.994453430175781,40.750751495361328,-73.98919677734375,40.756973266601563,N,894 +id3523753,1,2016-04-16 11:46:50,2016-04-16 11:55:42,2,-73.976371765136719,40.788345336914063,-73.957633972167969,40.800384521484375,N,532 +id3012466,1,2016-03-05 00:58:02,2016-03-05 01:08:47,1,-73.975997924804688,40.786483764648438,-73.939186096191406,40.826358795166016,N,645 +id3721041,1,2016-04-06 19:21:45,2016-04-06 19:36:19,1,-73.981002807617187,40.782520294189453,-73.98870849609375,40.763355255126953,N,874 +id1601398,2,2016-03-11 07:55:18,2016-03-11 08:03:40,1,-74.006034851074219,40.71728515625,-74.007545471191406,40.740898132324219,N,502 +id0351756,2,2016-04-20 18:54:07,2016-04-20 19:06:24,1,-73.995849609375,40.753997802734375,-74.011428833007812,40.724407196044922,N,737 +id1215963,1,2016-06-06 16:55:58,2016-06-06 17:20:51,1,-73.959068298339844,40.783260345458984,-73.984016418457031,40.748439788818359,N,1493 +id2309175,1,2016-03-19 10:39:39,2016-03-19 10:49:51,3,-73.982650756835938,40.762901306152344,-74.004608154296875,40.741920471191406,N,612 +id1588621,1,2016-04-24 20:48:53,2016-04-24 20:51:56,1,-73.988426208496094,40.764202117919922,-73.997810363769531,40.761520385742187,N,183 +id0926013,2,2016-02-01 19:20:58,2016-02-01 19:27:11,1,-73.952842712402344,40.776718139648438,-73.951423645019531,40.785968780517578,N,373 +id1651030,2,2016-06-24 12:35:42,2016-06-24 12:47:43,1,-74.00341796875,40.707820892333984,-73.972625732421875,40.742473602294922,N,721 +id3040463,1,2016-05-01 18:06:01,2016-05-01 18:11:37,1,-73.984748840332031,40.719043731689453,-73.976524353027344,40.719066619873047,N,336 +id1085894,2,2016-01-20 19:58:00,2016-01-20 20:01:30,1,-73.973098754882812,40.750530242919922,-73.980583190917969,40.741069793701172,N,210 +id3222100,1,2016-01-17 11:07:13,2016-01-17 11:09:41,1,-73.989830017089844,40.74114990234375,-73.999595642089844,40.742527008056641,N,148 +id3021076,1,2016-05-22 01:32:23,2016-05-22 01:46:29,1,-73.99200439453125,40.754081726074219,-73.946975708007812,40.777675628662109,N,846 +id0447160,2,2016-05-08 15:11:33,2016-05-08 15:19:29,1,-73.974128723144531,40.743049621582031,-73.989082336425781,40.742279052734375,N,476 +id2949106,2,2016-03-14 07:15:21,2016-03-14 08:00:52,4,-73.989898681640625,40.771900177001953,-73.776359558105469,40.646011352539063,N,2731 +id3032018,2,2016-05-02 07:27:12,2016-05-02 07:35:54,2,-73.756172180175781,40.716083526611328,-73.756172180175781,40.716083526611328,N,522 +id0692772,2,2016-03-29 22:46:31,2016-03-29 23:07:23,2,-73.991508483886719,40.727317810058594,-73.988311767578125,40.765663146972656,N,1252 +id1163308,1,2016-02-03 17:51:40,2016-02-03 17:56:33,1,-73.966110229492188,40.764995574951172,-73.958206176757813,40.7705078125,N,293 +id2038059,1,2016-04-03 09:36:27,2016-04-03 09:41:11,1,-73.990989685058594,40.75592041015625,-73.994850158691406,40.745029449462891,N,284 +id2741335,1,2016-02-11 23:13:26,2016-02-11 23:24:22,1,-73.982940673828125,40.750312805175781,-73.985809326171875,40.726852416992188,N,656 +id2870375,1,2016-03-10 16:32:06,2016-03-10 16:43:34,1,-73.967842102050781,40.755832672119141,-73.979171752929688,40.766983032226563,N,688 +id0936707,2,2016-03-11 11:25:49,2016-03-11 11:36:37,1,-73.94573974609375,40.77825927734375,-73.958122253417969,40.760730743408203,N,648 +id0198453,2,2016-02-10 18:38:42,2016-02-10 18:44:09,2,-74.009658813476562,40.737598419189453,-74.01123046875,40.728878021240234,N,327 +id3427296,2,2016-01-10 19:06:24,2016-01-10 19:17:12,1,-73.961082458496094,40.764945983886719,-73.974517822265625,40.730155944824219,N,648 +id3267124,1,2016-01-13 10:24:57,2016-01-13 10:48:13,1,-73.959678649902344,40.771213531494141,-73.987480163574219,40.753101348876953,N,1396 +id0218938,2,2016-02-28 23:39:45,2016-02-28 23:43:31,1,-73.966941833496094,40.792568206787109,-73.95123291015625,40.785919189453125,N,226 +id0433922,1,2016-06-18 21:15:31,2016-06-18 21:24:59,2,-74.000663757324219,40.720653533935547,-74.007537841796875,40.743106842041016,N,568 +id2804264,2,2016-02-25 22:08:52,2016-02-25 22:31:34,5,-73.885322570800781,40.7730712890625,-73.976165771484375,40.751380920410156,N,1362 +id0350772,1,2016-05-22 22:28:25,2016-05-22 22:37:35,1,-73.985519409179688,40.738353729248047,-73.980094909667969,40.754772186279297,N,550 +id3932541,1,2016-02-01 20:17:01,2016-02-01 20:41:41,1,-73.994247436523438,40.728145599365234,-73.966781616210938,40.793869018554687,N,1480 +id1679939,2,2016-01-07 22:54:02,2016-01-07 22:56:43,5,-73.953750610351563,40.779350280761719,-73.947593688964844,40.790279388427734,N,161 +id0956017,2,2016-01-30 15:48:56,2016-01-30 16:15:34,1,-74.0142822265625,40.704471588134766,-73.982688903808594,40.760250091552734,N,1598 +id0072679,1,2016-03-16 12:13:04,2016-03-16 12:25:34,1,-73.954666137695313,40.784046173095703,-73.946441650390625,40.772632598876953,N,750 +id3896415,1,2016-03-17 08:26:25,2016-03-17 08:33:27,3,-74.00872802734375,40.719112396240234,-74.002342224121094,40.729209899902344,N,422 +id2046121,2,2016-05-05 13:00:01,2016-05-05 13:20:22,1,-73.961021423339844,40.764991760253906,-73.967552185058594,40.804630279541016,N,1221 +id0468188,1,2016-06-12 14:18:57,2016-06-12 14:30:08,1,-73.994247436523438,40.7509765625,-73.972099304199219,40.749637603759766,N,671 +id0801705,2,2016-02-20 17:52:44,2016-02-20 17:55:51,1,-73.947906494140625,40.774776458740234,-73.95654296875,40.778274536132812,N,187 +id0469958,2,2016-05-04 12:14:41,2016-05-04 12:25:24,2,-73.97174072265625,40.759590148925781,-73.980819702148437,40.746879577636719,N,643 +id0108418,1,2016-03-07 08:12:06,2016-03-07 08:31:09,1,-73.945350646972656,40.778423309326172,-73.983421325683594,40.743705749511719,N,1143 +id0075360,1,2016-04-04 07:28:10,2016-04-04 07:45:08,1,-73.979743957519531,40.739490509033203,-74.010757446289062,40.714824676513672,N,1018 +id1145971,2,2016-04-13 13:58:00,2016-04-13 14:03:51,1,-73.996734619140625,40.733245849609375,-74.002464294433594,40.738670349121094,N,351 +id1846887,1,2016-04-16 00:43:37,2016-04-16 00:54:38,2,-73.949325561523438,40.785331726074219,-73.915580749511719,40.819290161132813,N,661 +id3125053,1,2016-03-29 14:07:31,2016-03-29 14:20:32,1,-73.959259033203125,40.763332366943359,-73.985359191894531,40.767990112304688,N,781 +id3728693,1,2016-06-15 12:33:11,2016-06-15 12:39:16,1,-73.972030639648438,40.763004302978516,-73.963394165039063,40.774459838867188,N,365 +id2352952,1,2016-06-04 15:27:10,2016-06-04 15:43:26,1,-73.988441467285156,40.718795776367187,-74.007286071777344,40.753032684326172,N,976 +id2364815,2,2016-06-18 03:22:13,2016-06-18 03:39:45,2,-73.892501831054687,40.746818542480469,-73.980186462402344,40.738681793212891,N,1052 +id0656424,1,2016-05-21 22:48:42,2016-05-21 22:52:45,1,-73.966705322265625,40.803878784179688,-73.957321166992188,40.804286956787109,N,243 +id2112675,1,2016-05-06 21:19:22,2016-05-06 21:28:14,1,-74.004936218261719,40.740821838378906,-73.991592407226562,40.730129241943359,N,532 +id0742529,2,2016-06-25 02:10:08,2016-06-25 02:34:13,5,-73.917991638183594,40.742893218994141,-73.848609924316406,40.694515228271484,N,1445 +id1057152,1,2016-01-19 20:48:03,2016-01-19 21:02:27,2,-73.975379943847656,40.749748229980469,-73.986923217773437,40.768650054931641,N,864 +id3951600,1,2016-01-31 00:32:00,2016-01-31 00:50:25,1,-73.990699768066406,40.693302154541016,-73.961753845214844,40.653953552246094,N,1105 +id0422348,2,2016-02-04 15:19:23,2016-02-04 16:16:16,6,-73.974365234375,40.76348876953125,-73.781829833984375,40.648597717285156,N,3413 +id0362806,2,2016-02-29 11:32:55,2016-02-29 11:48:57,1,-73.94586181640625,40.777843475341797,-73.981903076171875,40.774612426757813,N,962 +id2557807,1,2016-02-03 18:33:09,2016-02-03 18:51:30,1,-73.992210388183594,40.725250244140625,-73.989921569824219,40.756511688232422,N,1101 +id1257048,1,2016-05-06 12:35:27,2016-05-06 12:54:31,1,-73.956497192382812,40.766830444335938,-73.978935241699219,40.772346496582031,N,1144 +id2089072,1,2016-06-29 20:25:31,2016-06-29 20:30:30,1,-74.0103759765625,40.719970703125,-74.004066467285156,40.729778289794922,N,299 +id1181160,2,2016-04-12 12:05:02,2016-04-12 12:11:09,1,-74.003456115722656,40.732601165771484,-74.00372314453125,40.717586517333984,N,367 +id3367506,2,2016-02-09 16:28:32,2016-02-09 16:39:13,1,-73.953590393066406,40.779342651367188,-73.971748352050781,40.795162200927734,N,641 +id0580115,2,2016-03-21 04:48:31,2016-03-21 04:54:18,2,-73.97955322265625,40.735435485839844,-73.989776611328125,40.747211456298828,N,347 +id0198238,2,2016-04-09 13:42:56,2016-04-09 13:51:01,5,-73.997543334960938,40.72412109375,-74.01123046875,40.713382720947266,N,485 +id3705658,1,2016-05-09 14:00:12,2016-05-09 14:15:52,1,-73.990272521972656,40.740097045898438,-73.980033874511719,40.760242462158203,N,940 +id3426463,1,2016-01-10 09:40:51,2016-01-10 09:51:16,1,-73.98004150390625,40.770652770996094,-73.97430419921875,40.746799468994141,N,625 +id2395360,1,2016-02-06 11:03:08,2016-02-06 11:11:14,1,-73.97198486328125,40.782054901123047,-73.957283020019531,40.804283142089844,N,486 +id2608126,2,2016-01-27 21:05:25,2016-01-27 21:19:08,1,-73.967857360839844,40.800590515136719,-73.940147399902344,40.825469970703125,N,823 +id0557182,1,2016-02-03 14:23:57,2016-02-03 14:34:19,2,-73.982521057128906,40.771621704101563,-73.974082946777344,40.764369964599609,N,622 +id3778153,1,2016-03-12 23:10:40,2016-03-12 23:19:59,1,-74.003547668457031,40.725357055664063,-74.004226684570313,40.74749755859375,N,559 +id2825952,1,2016-03-10 19:05:26,2016-03-10 19:19:22,1,-74.008766174316406,40.719001770019531,-73.991554260253906,40.702625274658203,N,836 +id1424036,1,2016-03-18 23:14:57,2016-03-18 23:20:12,1,-73.976219177246094,40.748531341552734,-73.986129760742188,40.752132415771484,N,315 +id2279988,2,2016-05-30 09:32:11,2016-05-30 09:35:26,1,-73.953727722167969,40.778728485107422,-73.962196350097656,40.774639129638672,N,195 +id1092701,2,2016-05-28 00:20:46,2016-05-28 00:24:34,5,-73.92181396484375,40.767242431640625,-73.931411743164062,40.769096374511719,N,228 +id0660308,1,2016-06-07 00:08:49,2016-06-07 00:18:11,1,-73.982620239257813,40.777309417724609,-73.957572937011719,40.809532165527344,N,562 +id3558827,2,2016-04-30 20:39:34,2016-04-30 20:58:15,2,-73.978279113769531,40.748401641845703,-73.991622924804687,40.729721069335938,N,1121 +id0044667,1,2016-05-10 02:31:48,2016-05-10 03:08:27,1,-73.984046936035156,40.743278503417969,-73.865310668945313,40.683391571044922,N,2199 +id0300661,2,2016-03-19 02:06:17,2016-03-19 02:10:59,1,-73.985115051269531,40.732063293457031,-73.988563537597656,40.724136352539062,N,282 +id3547303,2,2016-06-20 16:33:29,2016-06-20 16:44:45,5,-74.004409790039063,40.724632263183594,-73.987800598144531,40.750091552734375,N,676 +id2694268,1,2016-04-19 08:50:09,2016-04-19 08:54:42,2,-73.961448669433594,40.774757385253906,-73.955718994140625,40.78253173828125,N,273 +id3873175,2,2016-04-10 00:35:12,2016-04-10 00:44:09,1,-73.984489440917969,40.678985595703125,-73.958213806152344,40.670269012451172,N,537 +id1510983,2,2016-04-17 00:47:45,2016-04-17 00:54:02,6,-73.949089050292969,40.781620025634766,-73.957733154296875,40.765129089355469,N,377 +id3926439,2,2016-03-05 22:22:17,2016-03-05 22:28:50,6,-74.001327514648437,40.739189147949219,-74.007247924804687,40.741268157958984,N,393 +id3471367,2,2016-06-18 08:49:36,2016-06-18 08:59:17,1,-73.928192138671875,40.807231903076172,-73.894180297851563,40.817188262939453,N,581 +id1203241,2,2016-01-15 14:32:31,2016-01-15 14:34:46,6,-73.893112182617188,40.739971160888672,-73.888771057128906,40.743450164794922,N,135 +id3918181,1,2016-04-03 03:37:26,2016-04-03 03:45:12,3,-73.924369812011719,40.679031372070312,-73.95068359375,40.677684783935547,N,466 +id1098741,2,2016-01-08 10:01:15,2016-01-08 10:22:27,6,-73.983650207519531,40.760478973388672,-74.002677917480469,40.719768524169922,N,1272 +id1717853,2,2016-04-05 10:52:07,2016-04-05 11:16:33,1,-73.987892150878906,40.719058990478516,-73.992431640625,40.743461608886719,N,1466 +id2678508,2,2016-01-04 15:16:11,2016-01-04 15:32:54,1,-73.993263244628906,40.747119903564453,-73.9722900390625,40.785667419433594,N,1003 +id3790839,2,2016-04-20 19:31:09,2016-04-20 19:38:58,5,-73.974800109863281,40.758350372314453,-73.962890625,40.775218963623047,N,469 +id3596261,2,2016-05-22 22:26:17,2016-05-22 22:31:15,1,-73.954071044921875,40.764091491699219,-73.955963134765625,40.769271850585938,N,298 +id3727989,2,2016-06-16 22:18:39,2016-06-16 22:36:53,1,-73.971458435058594,40.765571594238281,-73.984954833984375,40.7578125,N,1094 +id0127373,2,2016-06-28 07:30:41,2016-06-28 07:36:09,6,-73.968818664550781,40.801418304443359,-73.961143493652344,40.810169219970703,N,328 +id0164094,2,2016-06-15 15:23:56,2016-06-15 16:41:57,1,-73.779228210449219,40.647586822509766,-73.9779052734375,40.763084411621094,N,4681 +id1829703,1,2016-02-27 20:57:29,2016-02-27 21:10:42,2,-73.98895263671875,40.735668182373047,-74.008277893066406,40.735603332519531,N,793 +id0245438,2,2016-02-24 01:02:13,2016-02-24 01:27:15,1,-74.00384521484375,40.738090515136719,-73.952224731445312,40.665458679199219,N,1502 +id1639550,1,2016-05-26 17:59:41,2016-05-26 18:12:12,1,-73.989181518554688,40.758068084716797,-73.963188171386719,40.772083282470703,N,751 +id1003578,2,2016-05-07 13:14:16,2016-05-07 13:24:28,1,-73.987174987792969,40.722301483154297,-74.017379760742187,40.704914093017578,N,612 +id2995891,2,2016-01-21 18:18:37,2016-01-21 18:46:23,1,-74.006301879882813,40.739711761474609,-73.988662719726563,40.702529907226563,N,1666 +id2369607,1,2016-05-18 12:43:54,2016-05-18 13:02:31,1,-73.982856750488281,40.749305725097656,-73.974441528320312,40.76153564453125,N,1117 +id0669707,1,2016-01-12 15:40:40,2016-01-12 15:58:59,1,-73.979408264160156,40.7767333984375,-73.954322814941406,40.772125244140625,N,1099 +id1960930,2,2016-06-25 18:15:13,2016-06-25 18:29:51,1,-73.988151550292969,40.738014221191406,-73.960777282714844,40.765899658203125,N,878 +id2501415,1,2016-05-01 13:39:18,2016-05-01 13:42:36,1,-73.975410461425781,40.752578735351563,-73.981048583984375,40.753368377685547,N,198 +id3852126,2,2016-01-02 01:43:47,2016-01-02 02:02:32,1,-74.001190185546875,40.731529235839844,-73.910987854003906,40.755260467529297,N,1125 +id0058729,2,2016-03-30 22:31:34,2016-03-30 22:50:52,1,-74.005096435546875,40.704879760742187,-73.985321044921875,40.718700408935547,N,1158 +id3781599,1,2016-05-22 13:37:45,2016-05-22 13:45:02,1,-73.995597839355469,40.720928192138672,-73.994117736816406,40.732250213623047,N,437 +id1375402,1,2016-01-28 15:38:21,2016-01-28 16:00:27,1,-73.965438842773438,40.762847900390625,-73.976165771484375,40.788742065429688,N,1326 +id3238753,1,2016-05-08 10:43:50,2016-05-08 10:47:34,1,-73.959228515625,40.771907806396484,-73.950920104980469,40.770820617675781,N,224 +id3379966,1,2016-03-08 14:51:28,2016-03-08 14:59:56,1,-73.978424072265625,40.750583648681641,-73.983406066894531,40.738811492919922,N,508 +id2008879,2,2016-05-15 23:48:23,2016-05-15 23:51:59,2,-73.973182678222656,40.761463165283203,-73.971755981445312,40.757495880126953,N,216 +id1633567,2,2016-04-18 08:24:52,2016-04-18 08:31:00,1,-73.947517395019531,40.783660888671875,-73.952949523925781,40.776199340820313,N,368 +id2773071,1,2016-03-03 07:16:23,2016-03-03 07:31:26,1,-73.9979248046875,40.756858825683594,-73.96099853515625,40.812107086181641,N,903 +id0660028,1,2016-04-19 22:23:31,2016-04-19 22:37:47,1,-73.971084594726562,40.755481719970703,-73.988136291503906,40.756130218505859,N,856 +id2183439,2,2016-05-16 21:49:52,2016-05-16 21:53:36,1,-73.96466064453125,40.772979736328125,-73.968338012695312,40.764614105224609,N,224 +id3302125,2,2016-02-19 06:55:04,2016-02-19 07:07:51,1,-73.997032165527344,40.742141723632813,-74.007789611816406,40.706329345703125,N,767 +id0977439,2,2016-01-29 10:47:21,2016-01-29 11:00:38,4,-73.995857238769531,40.743930816650391,-74.009536743164062,40.715038299560547,N,797 +id0416924,1,2016-03-01 19:36:00,2016-03-01 19:45:41,1,-73.982292175292969,40.745887756347656,-73.991020202636719,40.760261535644531,N,581 +id2477992,2,2016-04-21 08:59:52,2016-04-21 09:31:16,1,-74.016181945800781,40.715423583984375,-74.002464294433594,40.739753723144531,N,1884 +id0140932,2,2016-06-24 12:51:24,2016-06-24 12:57:12,1,-73.937080383300781,40.76422119140625,-73.9432373046875,40.757858276367188,N,348 +id0141711,2,2016-04-18 15:04:37,2016-04-18 15:19:55,1,-73.990043640136719,40.772098541259766,-73.995147705078125,40.749771118164063,N,918 +id1292395,1,2016-03-04 14:00:24,2016-03-04 14:11:02,1,-73.962509155273437,40.779094696044922,-73.973236083984375,40.763893127441406,N,638 +id2244303,1,2016-03-29 10:35:30,2016-03-29 10:44:18,1,-73.960548400878906,40.78057861328125,-73.966529846191406,40.767509460449219,N,528 +id1348842,2,2016-05-20 14:23:06,2016-05-20 15:11:31,1,-73.976753234863281,40.758449554443359,-73.865242004394531,40.770660400390625,N,2905 +id0942330,1,2016-04-14 20:37:51,2016-04-14 21:05:27,1,-74.0115966796875,40.70953369140625,-73.976364135742187,40.667842864990234,N,1656 +id1773170,2,2016-04-10 00:22:42,2016-04-10 00:29:54,5,-73.965950012207031,40.762008666992188,-73.983673095703125,40.7388916015625,N,432 +id0220835,2,2016-03-18 09:25:14,2016-03-18 09:50:23,4,-73.979782104492187,40.773750305175781,-74.006851196289062,40.726413726806641,N,1509 +id0245246,2,2016-06-28 23:25:40,2016-06-28 23:51:39,1,-73.872802734375,40.774051666259766,-73.982307434082031,40.74774169921875,N,1559 +id2040287,2,2016-04-26 00:35:21,2016-04-26 01:00:04,2,-73.992652893066406,40.763538360595703,-73.901832580566406,40.740959167480469,N,1483 +id3911237,1,2016-05-16 18:43:59,2016-05-16 18:49:00,3,-73.956588745117187,40.767162322998047,-73.946945190429688,40.776081085205078,N,301 +id2141758,2,2016-05-15 17:29:09,2016-05-15 17:45:33,1,-73.991340637207031,40.749553680419922,-74.017158508300781,40.707241058349609,N,984 +id2051331,2,2016-04-29 21:25:49,2016-04-29 21:46:30,4,-73.979537963867188,40.776260375976562,-73.977638244628906,40.747020721435547,N,1241 +id3023565,1,2016-05-23 17:30:21,2016-05-23 17:46:50,1,-73.980751037597656,40.774822235107422,-73.953819274902344,40.767398834228516,N,989 +id2274056,2,2016-03-18 18:07:59,2016-03-18 18:47:10,1,-73.865669250488281,40.770408630371094,-74.005569458007813,40.748390197753906,N,2351 +id0552665,2,2016-05-03 00:24:12,2016-05-03 00:32:42,1,-74.006248474121094,40.733749389648438,-73.98468017578125,40.74053955078125,N,510 +id2428358,1,2016-03-26 23:20:43,2016-03-26 23:28:55,1,-73.98992919921875,40.740287780761719,-73.988212585449219,40.748668670654297,N,492 +id3271762,2,2016-05-20 09:10:35,2016-05-20 09:26:23,1,-73.983139038085938,40.729930877685547,-73.968246459960937,40.755630493164063,N,948 +id2223427,2,2016-06-25 12:05:25,2016-06-25 12:16:31,5,-73.977043151855469,40.758739471435547,-73.98309326171875,40.771770477294922,N,666 +id3720886,1,2016-03-08 22:39:05,2016-03-08 23:11:53,1,-73.790016174316406,40.646945953369141,-73.985572814941406,40.759674072265625,N,1968 +id0873102,1,2016-06-14 04:53:40,2016-06-14 04:57:16,1,-73.991485595703125,40.750114440917969,-73.977584838867187,40.756233215332031,N,216 +id3619548,1,2016-05-18 16:03:47,2016-05-18 16:24:52,1,-73.999061584472656,40.738258361816406,-73.976066589355469,40.727897644042969,N,1265 +id2320448,2,2016-04-25 21:53:53,2016-04-25 22:00:47,5,-73.961090087890625,40.812068939208984,-73.944961547851562,40.824066162109375,N,414 +id1070438,2,2016-03-21 17:53:42,2016-03-21 17:59:53,2,-73.984291076660156,40.764961242675781,-73.971023559570313,40.785087585449219,N,371 +id0902213,2,2016-05-21 20:22:28,2016-05-21 20:46:23,4,-73.992103576660156,40.749008178710938,-74.001419067382812,40.726119995117188,N,1435 +id3559120,1,2016-06-17 22:40:06,2016-06-17 23:06:06,1,-73.958175659179688,40.772918701171875,-73.990791320800781,40.75592041015625,N,1560 +id0605916,2,2016-06-22 17:22:37,2016-06-22 17:29:49,2,-73.952163696289063,40.773391723632813,-73.961387634277344,40.780509948730469,N,432 +id0851643,2,2016-01-17 11:09:41,2016-01-17 11:12:57,5,-74.002227783203125,40.740123748779297,-73.992973327636719,40.742683410644531,N,196 +id0986882,2,2016-04-20 15:34:38,2016-04-20 15:41:10,5,-73.981163024902344,40.75335693359375,-73.9925537109375,40.741249084472656,N,392 +id3584764,2,2016-01-31 01:40:03,2016-01-31 01:49:20,1,-74.005500793457031,40.740123748779297,-73.992881774902344,40.730838775634766,N,557 +id2278506,1,2016-06-27 05:36:39,2016-06-27 05:43:16,1,-73.999191284179688,40.739429473876953,-73.977272033691406,40.746925354003906,N,397 +id0067590,1,2016-01-19 17:38:18,2016-01-19 17:44:46,1,-73.956504821777344,40.784004211425781,-73.949150085449219,40.776779174804687,N,388 +id1011380,1,2016-03-10 12:21:05,2016-03-10 12:29:55,1,-73.998214721679688,40.735515594482422,-73.992950439453125,40.742752075195313,N,530 +id3992136,1,2016-06-12 02:40:45,2016-06-12 02:56:53,1,-73.989784240722656,40.734195709228516,-73.956886291503906,40.744777679443359,N,968 +id0497565,2,2016-01-12 08:46:01,2016-01-12 09:31:43,1,-73.870956420898437,40.7738037109375,-73.972488403320313,40.755790710449219,N,2742 +id3158503,1,2016-05-13 12:10:48,2016-05-13 12:16:02,1,-73.95306396484375,40.768283843994141,-73.953651428222656,40.777622222900391,N,314 +id2989166,2,2016-03-11 08:29:18,2016-03-11 08:39:08,1,-73.978996276855469,40.747085571289063,-73.975067138671875,40.758525848388672,N,590 +id0010115,1,2016-05-13 13:22:53,2016-05-13 13:30:33,1,-74.006088256835937,40.750015258789063,-74.0069580078125,40.72998046875,N,460 +id0951332,1,2016-02-20 23:23:27,2016-02-20 23:36:35,1,-73.975013732910156,40.753490447998047,-73.9539794921875,40.781871795654297,N,788 +id2733223,2,2016-04-07 19:40:34,2016-04-07 19:59:53,1,-74.0062255859375,40.733863830566406,-73.97265625,40.795948028564453,N,1159 +id3681500,2,2016-02-29 14:48:22,2016-02-29 15:01:18,5,-73.971168518066406,40.760093688964844,-73.991279602050781,40.749824523925781,N,776 +id3725484,1,2016-05-20 21:15:06,2016-05-20 21:24:32,1,-73.965553283691406,40.762943267822266,-73.985069274902344,40.761138916015625,N,566 +id3045767,2,2016-01-16 02:57:21,2016-01-16 03:08:04,5,-73.984390258789063,40.737300872802734,-73.991416931152344,40.755916595458984,N,643 +id3661117,2,2016-06-27 11:17:25,2016-06-27 11:38:59,2,-74.006828308105469,40.735488891601563,-73.978652954101563,40.750579833984375,N,1294 +id1420538,2,2016-04-12 16:03:35,2016-04-12 16:07:42,1,-73.986602783203125,40.742881774902344,-73.991752624511719,40.749149322509766,N,247 +id3794658,2,2016-06-28 19:43:24,2016-06-28 19:50:48,1,-73.969001770019531,40.760890960693359,-73.973609924316406,40.7476806640625,N,444 +id3961078,2,2016-04-14 19:44:27,2016-04-14 20:15:13,1,-73.991928100585938,40.754890441894531,-73.920433044433594,40.695819854736328,N,1846 +id1665247,1,2016-05-25 13:08:21,2016-05-25 13:19:55,1,-73.981338500976563,40.747276306152344,-73.9931640625,40.752578735351563,N,694 +id3026677,2,2016-01-20 11:05:57,2016-01-20 11:12:14,1,-73.991386413574219,40.755191802978516,-74.001510620117187,40.746669769287109,N,377 +id1619916,2,2016-06-14 16:02:07,2016-06-14 16:22:13,1,-73.985336303710938,40.741561889648438,-73.983146667480469,40.766708374023438,N,1206 +id1670391,1,2016-04-08 20:53:14,2016-04-08 21:03:16,2,-73.982185363769531,40.778476715087891,-73.9593505859375,40.768913269042969,N,602 +id1474385,1,2016-05-15 17:43:13,2016-05-15 18:17:52,1,-73.982704162597656,40.727195739746094,-73.978263854980469,40.785591125488281,N,2079 +id0333081,1,2016-02-11 19:36:47,2016-02-11 19:48:03,1,-73.958633422851563,40.777843475341797,-73.973182678222656,40.763416290283203,N,676 +id2609559,2,2016-05-26 19:16:06,2016-05-26 19:20:20,1,-73.965049743652344,40.806632995605469,-73.971023559570313,40.796916961669922,N,254 +id1015062,2,2016-05-16 14:10:26,2016-05-16 14:28:29,1,-73.957771301269531,40.811386108398438,-73.943008422851563,40.785858154296875,N,1083 +id1518484,2,2016-05-25 09:34:27,2016-05-25 09:45:43,4,-73.980606079101563,40.748287200927734,-74.004470825195312,40.742263793945313,N,676 +id3004452,2,2016-03-02 05:32:05,2016-03-02 05:37:43,6,-73.972160339355469,40.745578765869141,-73.953216552734375,40.764839172363281,N,338 +id0115062,2,2016-04-07 18:56:59,2016-04-07 19:05:53,1,-73.990066528320312,40.729400634765625,-73.97991943359375,40.714099884033203,N,534 +id2580277,1,2016-02-02 15:13:03,2016-02-02 15:24:14,1,-73.981071472167969,40.764575958251953,-73.991241455078125,40.750156402587891,N,671 +id3131227,2,2016-03-25 08:42:46,2016-03-25 08:49:37,2,-73.962120056152344,40.767845153808594,-73.952743530273438,40.766342163085937,N,411 +id2777951,1,2016-02-15 10:40:05,2016-02-15 10:52:39,2,-73.99200439453125,40.748432159423828,-73.995773315429688,40.769039154052734,N,754 +id2016880,1,2016-04-08 11:06:36,2016-04-08 11:25:23,1,-73.874618530273438,40.774162292480469,-73.929229736328125,40.807632446289063,N,1127 +id2334077,2,2016-05-31 23:34:20,2016-05-31 23:40:18,1,-73.996955871582031,40.742416381835938,-73.985153198242188,40.732620239257813,N,358 +id1391832,2,2016-04-21 00:46:54,2016-04-21 01:00:07,1,-73.994552612304687,40.721752166748047,-73.995140075683594,40.762046813964844,N,793 +id0826612,2,2016-01-10 14:05:02,2016-01-10 14:13:23,1,-73.986068725585937,40.732780456542969,-73.994781494140625,40.740219116210937,N,501 +id1440934,2,2016-06-08 21:31:43,2016-06-08 21:43:20,5,-73.984519958496094,40.762130737304688,-73.956306457519531,40.779880523681641,N,697 +id0162825,1,2016-04-05 11:46:28,2016-04-05 11:53:35,1,-73.984954833984375,40.769260406494141,-73.993400573730469,40.757648468017578,N,427 +id0322844,1,2016-06-05 16:11:13,2016-06-05 16:23:02,2,-73.955863952636719,40.787738800048828,-73.967445373535156,40.766082763671875,N,709 +id3487206,2,2016-01-03 18:53:28,2016-01-03 19:00:26,3,-73.952110290527344,40.778041839599609,-73.980079650878906,40.789970397949219,N,418 +id1065176,2,2016-06-22 20:16:28,2016-06-22 20:21:48,1,-73.98614501953125,40.740619659423828,-73.987831115722656,40.749397277832031,N,320 +id2341603,2,2016-06-02 09:06:06,2016-06-02 09:19:28,1,-73.982177734375,40.751701354980469,-73.990043640136719,40.751750946044922,N,802 +id3502250,1,2016-03-11 20:10:29,2016-03-11 20:51:41,1,-73.874595642089844,40.774082183837891,-73.612037658691406,40.659595489501953,N,2472 +id2288957,1,2016-02-03 13:06:29,2016-02-03 13:24:40,1,-73.975532531738281,40.749839782714844,-74.003814697265625,40.750823974609375,N,1091 +id2043266,2,2016-04-09 00:57:23,2016-04-09 01:12:14,1,-73.99786376953125,40.763816833496094,-73.989852905273438,40.734371185302734,N,891 +id1309194,1,2016-05-08 00:18:07,2016-05-08 01:05:10,1,-73.96575927734375,40.677616119384766,-73.996253967285156,40.758865356445313,N,2823 +id1730282,1,2016-06-23 12:02:00,2016-06-23 12:10:24,1,-73.977195739746094,40.755691528320313,-73.962944030761719,40.767467498779297,N,504 +id0488812,2,2016-01-02 11:51:12,2016-01-02 12:07:30,5,-73.959861755371094,40.773502349853516,-73.996177673339844,40.722202301025391,N,978 +id3156155,1,2016-02-16 21:05:31,2016-02-16 21:18:09,1,-73.983222961425781,40.773353576660156,-73.9473876953125,40.772525787353516,N,758 +id3861745,1,2016-03-10 18:37:52,2016-03-10 18:42:46,1,-73.981246948242188,40.781169891357422,-73.969932556152344,40.792194366455078,N,294 +id2576682,1,2016-02-26 00:13:04,2016-02-26 00:28:10,1,-73.974662780761719,40.75726318359375,-74.003952026367188,40.741912841796875,N,906 +id1244465,1,2016-04-16 10:40:56,2016-04-16 10:52:47,2,-74.008323669433594,40.747398376464844,-73.996498107910156,40.732563018798828,N,711 +id1143690,1,2016-04-28 23:55:30,2016-04-29 00:05:40,1,-73.923385620117188,40.743923187255859,-73.927055358886719,40.766048431396484,N,610 +id0006115,2,2016-03-24 01:39:51,2016-03-24 02:02:15,5,-73.987823486328125,40.728378295898438,-73.916542053222656,40.698749542236328,N,1344 +id2020674,2,2016-03-22 21:12:27,2016-03-22 21:23:13,1,-73.992446899414062,40.731433868408203,-74.001220703125,40.743236541748047,N,646 +id0540070,2,2016-04-29 16:52:04,2016-04-29 17:20:17,2,-74.000030517578125,40.717861175537109,-73.979667663574219,40.761741638183594,N,1693 +id1836422,2,2016-01-20 10:37:41,2016-01-20 10:50:04,1,-73.992889404296875,40.752765655517578,-73.984725952148437,40.742408752441406,N,743 +id0329602,2,2016-01-21 09:21:32,2016-01-21 09:42:01,5,-73.994316101074219,40.751026153564453,-73.966697692871094,40.772895812988281,N,1229 +id3259361,1,2016-03-04 07:54:38,2016-03-04 08:00:42,1,-73.955192565917969,40.788822174072266,-73.954849243164063,40.784164428710938,N,364 +id3320652,2,2016-06-22 22:22:05,2016-06-22 22:30:30,1,-73.980575561523438,40.754402160644531,-73.984939575195313,40.737167358398437,N,505 +id0214296,2,2016-05-02 17:54:23,2016-05-02 18:00:48,1,-74.005104064941406,40.718597412109375,-73.994781494140625,40.740116119384766,N,385 +id2755021,1,2016-05-24 00:00:07,2016-05-24 00:08:12,1,-73.996498107910156,40.742565155029297,-73.997421264648437,40.724430084228516,N,485 +id1380441,1,2016-01-09 15:31:01,2016-01-09 15:43:13,2,-73.998214721679688,40.72369384765625,-74.005935668945313,40.745296478271484,N,732 +id3527473,1,2016-01-11 17:25:43,2016-01-11 17:36:42,1,-73.971405029296875,40.75726318359375,-73.980018615722656,40.73248291015625,N,659 +id0356350,2,2016-02-08 19:24:01,2016-02-08 19:52:56,1,-73.92034912109375,40.759811401367188,-73.918670654296875,40.760601043701172,N,1735 +id2467048,1,2016-04-05 11:11:46,2016-04-05 11:17:46,1,-73.992218017578125,40.749408721923828,-73.989189147949219,40.743480682373047,N,360 +id1591639,2,2016-05-05 21:59:53,2016-05-05 22:08:31,2,-73.9849853515625,40.758602142333984,-73.984939575195313,40.748157501220703,N,518 +id0832435,2,2016-03-31 03:16:46,2016-03-31 03:32:41,1,-73.783256530761719,40.644271850585937,-73.85211181640625,40.716728210449219,N,955 +id3878444,1,2016-06-10 17:32:05,2016-06-10 17:44:20,1,-73.970481872558594,40.764926910400391,-73.949966430664063,40.784381866455078,N,735 +id1385969,2,2016-03-31 18:11:12,2016-03-31 18:20:43,1,-73.991630554199219,40.750160217285156,-73.984611511230469,40.737483978271484,N,571 +id2126287,1,2016-03-01 06:22:52,2016-03-01 06:30:02,1,-73.992172241210937,40.749031066894531,-73.970222473144531,40.763221740722656,N,430 +id3973557,2,2016-04-01 15:26:46,2016-04-01 15:37:58,1,-73.981781005859375,40.768165588378906,-73.9732666015625,40.785236358642578,N,672 +id2217546,2,2016-04-20 11:07:32,2016-04-20 11:55:59,1,-73.864448547363281,40.769718170166016,-73.983970642089844,40.759170532226563,N,2907 +id3340847,1,2016-05-22 01:26:57,2016-05-22 01:36:03,1,-74.000099182128906,40.717926025390625,-73.982986450195313,40.726718902587891,N,546 +id2761868,2,2016-05-22 18:44:40,2016-05-22 18:56:53,1,-73.973884582519531,40.757270812988281,-73.988945007324219,40.763431549072266,N,733 +id2954321,1,2016-02-07 18:12:57,2016-02-07 18:29:03,1,-73.98175048828125,40.780235290527344,-73.977783203125,40.745525360107422,N,966 +id1427917,2,2016-03-15 12:03:28,2016-03-15 12:26:50,1,-73.972793579101563,40.756198883056641,-73.994522094726563,40.750350952148438,N,1402 +id0036557,1,2016-05-20 07:02:16,2016-05-20 07:09:47,1,-73.9796142578125,40.781578063964844,-73.982246398925781,40.770652770996094,N,451 +id0220300,2,2016-01-13 14:33:24,2016-01-13 14:45:44,2,-73.972251892089844,40.761951446533203,-73.98309326171875,40.766845703125,N,740 +id2845542,2,2016-06-28 10:38:18,2016-06-28 11:02:36,1,-73.952079772949219,40.778339385986328,-73.978126525878906,40.749271392822266,N,1458 +id0341669,1,2016-02-03 15:53:56,2016-02-03 15:57:51,1,-73.97454833984375,40.753364562988281,-73.984130859375,40.745899200439453,N,235 +id0971142,2,2016-03-10 12:02:52,2016-03-10 12:32:40,1,-73.969985961914063,40.756992340087891,-73.789909362792969,40.643295288085938,N,1788 +id0421583,1,2016-02-05 00:26:46,2016-02-05 00:34:28,1,-73.977157592773438,40.763973236083984,-73.961273193359375,40.760795593261719,N,462 +id2565536,2,2016-06-23 18:33:00,2016-06-23 18:50:25,3,-73.948631286621094,40.776500701904297,-73.985069274902344,40.779121398925781,N,1045 +id1337280,2,2016-06-27 19:30:12,2016-06-27 19:37:48,4,-73.970695495605469,40.758049011230469,-73.983406066894531,40.746719360351563,N,456 +id1250989,1,2016-05-22 21:47:56,2016-05-22 21:59:59,2,-74.006690979003906,40.740409851074219,-73.983573913574219,40.743900299072266,N,723 +id3984678,1,2016-01-27 21:15:53,2016-01-27 21:26:16,1,-73.983329772949219,40.738773345947266,-73.965667724609375,40.762851715087891,N,623 +id1330386,1,2016-05-15 21:43:50,2016-05-15 21:47:48,1,-73.987998962402344,40.741165161132812,-73.995613098144531,40.738494873046875,N,238 +id2842935,1,2016-05-14 22:20:40,2016-05-14 22:36:53,1,-73.980880737304688,40.754673004150391,-73.996383666992188,40.762294769287109,N,973 +id0458429,2,2016-06-26 18:56:26,2016-06-26 19:36:43,1,-73.863601684570313,40.769790649414063,-73.971931457519531,40.756748199462891,N,2417 +id3740475,2,2016-04-07 21:21:05,2016-04-07 21:48:04,2,-73.979850769042969,40.771022796630859,-73.997039794921875,40.694168090820313,N,1619 +id0654269,1,2016-06-15 20:40:17,2016-06-15 20:51:53,1,-73.983055114746094,40.738868713378906,-73.990638732910156,40.756076812744141,N,696 +id0684818,2,2016-04-08 07:37:17,2016-04-08 07:43:37,4,-73.950950622558594,40.785831451416016,-73.943351745605469,40.78594970703125,N,380 +id1640757,2,2016-04-14 15:43:47,2016-04-14 15:51:48,6,-74.007850646972656,40.742748260498047,-73.998916625976563,40.760658264160156,N,481 +id1303551,1,2016-05-14 13:35:33,2016-05-14 13:46:30,1,-73.962181091308594,40.767566680908203,-73.973709106445313,40.763446807861328,N,657 +id3122797,2,2016-04-15 10:11:04,2016-04-15 10:46:18,5,-73.994010925292969,40.746311187744141,-73.947830200195312,40.825286865234375,N,2114 +id3759207,1,2016-01-01 12:35:52,2016-01-01 12:42:44,1,-73.967002868652344,40.756690979003906,-73.988113403320313,40.737903594970703,N,412 +id1117721,2,2016-03-07 00:04:54,2016-03-07 00:33:36,1,-73.781867980957031,40.644741058349609,-73.952781677246094,40.665561676025391,N,1722 +id1842537,2,2016-04-11 13:47:39,2016-04-11 13:56:45,6,-73.995559692382813,40.73944091796875,-74.002548217773438,40.731281280517578,N,546 +id3540455,1,2016-04-23 11:39:01,2016-04-23 11:54:16,3,-73.978973388671875,40.736648559570313,-74.002143859863281,40.755741119384766,N,915 +id2398448,2,2016-03-11 01:23:50,2016-03-11 01:29:40,2,-73.984825134277344,40.736522674560547,-73.999481201171875,40.731243133544922,N,350 +id0765154,2,2016-02-11 20:46:49,2016-02-11 21:00:31,1,-73.973014831542969,40.761146545410156,-73.957588195800781,40.801212310791016,N,822 +id3892803,2,2016-01-25 16:38:23,2016-01-25 16:51:00,1,-73.981422424316406,40.768650054931641,-73.952957153320313,40.798450469970703,N,757 +id1962680,1,2016-05-27 15:54:05,2016-05-27 16:10:08,1,-73.969009399414063,40.760913848876953,-73.980873107910156,40.750480651855469,N,963 +id0055599,1,2016-01-23 07:14:28,2016-01-23 07:28:47,1,-73.960334777832031,40.775791168212891,-73.991256713867188,40.7503662109375,N,859 +id0776488,1,2016-05-07 04:31:19,2016-05-07 04:49:49,1,-73.961761474609375,40.774356842041016,-73.919197082519531,40.867202758789063,N,1110 +id0623351,1,2016-06-30 22:50:21,2016-06-30 23:33:56,1,-73.975051879882813,40.761974334716797,-73.782661437988281,40.648811340332031,N,2615 +id0752683,2,2016-06-14 17:19:12,2016-06-14 17:27:20,1,-73.985336303710938,40.723579406738281,-73.988197326660156,40.737819671630859,N,488 +id3969072,1,2016-05-03 07:49:44,2016-05-03 08:03:54,1,-73.976524353027344,40.751838684082031,-73.992431640625,40.73773193359375,N,850 +id1100678,1,2016-06-03 22:31:47,2016-06-03 22:42:01,1,-73.998710632324219,40.754596710205078,-73.969657897949219,40.785713195800781,N,614 +id0375117,1,2016-03-21 09:40:08,2016-03-21 09:55:49,1,-73.990959167480469,40.691989898681641,-73.963409423828125,40.718425750732422,N,941 +id1423090,1,2016-06-27 06:35:19,2016-06-27 07:43:59,1,-73.7890625,40.647369384765625,-73.993583679199219,40.722457885742188,N,4120 +id3639065,1,2016-06-15 09:34:04,2016-06-15 09:41:29,1,-73.986213684082031,40.776580810546875,-73.980316162109375,40.770229339599609,N,445 +id0195655,2,2016-02-23 00:33:15,2016-02-23 00:35:07,1,-73.987258911132813,40.724948883056641,-73.983642578125,40.725826263427734,N,112 +id1707192,1,2016-06-14 19:17:22,2016-06-14 19:24:34,1,-73.993743896484375,40.741584777832031,-73.990814208984375,40.750595092773438,N,432 +id3240379,2,2016-01-02 09:17:01,2016-01-02 09:18:11,1,-73.955551147460937,40.773540496826172,-73.952056884765625,40.781318664550781,N,70 +id2467136,1,2016-04-04 22:54:04,2016-04-04 23:34:45,1,-73.990142822265625,40.756690979003906,-73.876754760742188,40.672882080078125,N,2441 +id0859673,1,2016-03-27 22:58:07,2016-03-27 23:06:46,1,-73.971694946289063,40.756381988525391,-73.952201843261719,40.790977478027344,N,519 +id2048334,2,2016-01-17 13:37:56,2016-01-17 13:51:22,1,-73.985542297363281,40.727230072021484,-73.95941162109375,40.716281890869141,N,806 +id2761352,1,2016-02-19 13:04:43,2016-02-19 13:17:19,1,-73.980972290039063,40.753829956054688,-73.988227844238281,40.754402160644531,N,756 +id1825689,2,2016-04-07 21:29:55,2016-04-07 21:36:45,1,-73.986297607421875,40.746021270751953,-73.975631713867188,40.735607147216797,N,410 +id3630157,2,2016-06-24 00:30:23,2016-06-24 00:37:57,1,-74.000595092773438,40.761058807373047,-73.987564086914063,40.7735595703125,N,454 +id3150419,1,2016-05-29 00:42:11,2016-05-29 00:57:28,1,-73.989494323730469,40.726142883300781,-73.97857666015625,40.679203033447266,N,917 +id1773533,2,2016-02-16 11:31:43,2016-02-16 11:41:51,1,-73.943313598632813,40.777168273925781,-73.962631225585937,40.778690338134766,N,608 +id3915767,1,2016-04-26 20:39:15,2016-04-26 20:53:29,1,-73.9781494140625,40.752521514892578,-73.972038269042969,40.737323760986328,N,854 +id3406795,1,2016-03-10 16:21:49,2016-03-10 16:31:07,2,-73.981376647949219,40.759983062744141,-73.970138549804687,40.752613067626953,N,558 +id2872168,1,2016-05-04 06:28:09,2016-05-04 06:31:21,1,-73.989898681640625,40.757137298583984,-73.977912902832031,40.753570556640625,N,192 +id0446722,2,2016-01-22 12:29:47,2016-01-22 12:33:22,2,-73.961570739746094,40.777202606201172,-73.957504272460938,40.782825469970703,N,215 +id2356523,2,2016-04-15 16:07:03,2016-04-15 16:09:57,6,-73.963455200195312,40.808891296386719,-73.960777282714844,40.807113647460937,N,174 +id1355218,1,2016-01-16 21:33:52,2016-01-16 21:40:39,4,-73.995086669921875,40.749992370605469,-73.987197875976563,40.759410858154297,N,407 +id1664933,2,2016-05-21 14:23:22,2016-05-21 14:27:54,2,-73.950592041015625,40.786411285400391,-73.948318481445312,40.778820037841797,N,272 +id2970659,2,2016-03-03 14:52:53,2016-03-03 15:09:04,1,-73.971809387207031,40.756988525390625,-73.975959777832031,40.730461120605469,N,971 +id2359394,2,2016-02-16 17:40:25,2016-02-16 18:15:55,3,-73.974227905273438,40.783138275146484,-73.989997863769531,40.735370635986328,N,2130 +id3176298,2,2016-04-26 22:03:28,2016-04-26 22:07:52,2,-73.974876403808594,40.750099182128906,-73.979598999023437,40.737461090087891,N,264 +id3553958,2,2016-06-25 11:45:33,2016-06-25 11:56:35,1,-73.980758666992188,40.747421264648438,-73.978416442871094,40.766639709472656,N,662 +id2249574,1,2016-01-08 10:07:36,2016-01-08 10:19:29,1,-73.9971923828125,40.724895477294922,-73.990966796875,40.695186614990234,N,713 +id1139045,2,2016-04-21 09:24:14,2016-04-21 09:43:37,1,-73.974472045898438,40.746665954589844,-74.007270812988281,40.707698822021484,N,1163 +id1607986,2,2016-04-20 19:58:27,2016-04-20 20:07:11,1,-73.971923828125,40.749458312988281,-73.990936279296875,40.7276611328125,N,524 +id0002663,2,2016-06-28 08:46:10,2016-06-28 08:51:22,1,-73.975456237792969,40.752525329589844,-73.975204467773438,40.741512298583984,N,312 +id0291677,2,2016-04-06 20:39:41,2016-04-06 21:01:38,5,-73.862922668457031,40.768791198730469,-73.980628967285156,40.761985778808594,N,1317 +id1174525,2,2016-06-25 08:35:43,2016-06-25 08:35:52,1,-74.015205383300781,40.778598785400391,-74.015144348144531,40.778602600097656,N,9 +id1427973,2,2016-03-11 08:41:46,2016-03-11 08:47:05,1,-73.969528198242188,40.757183074951172,-73.954368591308594,40.763824462890625,N,319 +id2339400,1,2016-01-19 16:30:24,2016-01-19 16:52:49,1,-73.962554931640625,40.774688720703125,-73.965057373046875,40.759632110595703,N,1345 +id2849732,1,2016-02-25 13:30:24,2016-02-25 13:42:23,1,-73.958885192871094,40.764186859130859,-73.953559875488281,40.786968231201172,N,719 +id3888256,1,2016-05-11 08:30:56,2016-05-11 08:38:46,1,-73.956642150878906,40.763038635253906,-73.971176147460938,40.751499176025391,N,470 +id2985205,1,2016-06-20 20:18:47,2016-06-20 20:27:18,1,-73.990089416503906,40.733974456787109,-73.974662780761719,40.722076416015625,N,511 +id0698085,1,2016-01-16 01:20:59,2016-01-16 01:36:09,1,-73.98272705078125,40.773296356201172,-73.915283203125,40.746158599853516,N,910 +id3186102,1,2016-05-21 23:59:13,2016-05-22 00:43:17,1,-73.991310119628906,40.750080108642578,-73.919509887695312,40.697967529296875,N,2644 +id3913014,1,2016-06-19 18:50:20,2016-06-19 18:56:43,1,-73.981437683105469,40.760345458984375,-73.989547729492188,40.763389587402344,N,383 +id2454479,2,2016-06-18 10:47:39,2016-06-18 11:13:32,1,-74.015151977539062,40.704719543457031,-73.986160278320312,40.757770538330078,N,1553 +id2066769,2,2016-04-15 10:13:36,2016-04-15 10:21:51,1,-73.977867126464844,40.742179870605469,-73.991706848144531,40.73870849609375,N,495 +id2976584,1,2016-04-02 11:41:27,2016-04-02 11:51:30,1,-73.99761962890625,40.761852264404297,-74.011260986328125,40.729133605957031,N,603 +id2786841,2,2016-05-19 10:50:08,2016-05-19 10:54:29,1,-73.956008911132813,40.776088714599609,-73.95745849609375,40.772708892822266,N,261 +id2656037,2,2016-02-14 21:48:12,2016-02-14 21:52:07,1,-73.960250854492188,40.781539916992188,-73.967491149902344,40.787750244140625,N,235 +id1122778,1,2016-05-21 02:56:46,2016-05-21 03:12:42,3,-73.970680236816406,40.762298583984375,-73.9898681640625,40.715641021728516,N,956 +id2080475,1,2016-04-08 11:57:13,2016-04-08 12:04:02,1,-73.963104248046875,40.772499084472656,-73.971710205078125,40.760433197021484,N,409 +id1857737,1,2016-01-26 08:22:08,2016-01-26 09:21:30,2,-73.862785339355469,40.768939971923828,-73.983345031738281,40.756076812744141,N,3562 +id3164177,1,2016-06-06 22:30:58,2016-06-06 22:44:36,1,-74.008285522460937,40.708831787109375,-73.989791870117187,40.735404968261719,N,818 +id1841950,1,2016-04-12 16:08:17,2016-04-12 16:35:44,1,-73.972976684570313,40.762176513671875,-73.872657775878906,40.774303436279297,N,1647 +id3897349,1,2016-05-11 00:18:18,2016-05-11 00:23:40,1,-74.000518798828125,40.735782623291016,-74.004158020019531,40.74273681640625,N,322 +id0859063,1,2016-04-03 04:35:49,2016-04-03 04:53:03,3,-73.985458374023438,40.747341156005859,-73.915962219238281,40.766498565673828,N,1034 +id3955434,1,2016-06-04 08:58:49,2016-06-04 09:04:36,1,-73.967323303222656,40.792739868164063,-73.952835083007813,40.783233642578125,N,347 +id2241559,2,2016-02-18 11:22:44,2016-02-18 11:40:43,6,-73.978240966796875,40.754600524902344,-73.972610473632812,40.78070068359375,N,1079 +id1785622,2,2016-06-02 00:09:10,2016-06-02 00:20:26,5,-73.951705932617188,40.714591979980469,-73.9219970703125,40.694374084472656,N,676 +id0899172,1,2016-02-18 08:01:11,2016-02-18 08:03:07,1,-73.969795227050781,40.752960205078125,-73.97491455078125,40.751918792724609,N,116 +id0460616,1,2016-02-23 08:03:14,2016-02-23 08:14:10,1,-73.99371337890625,40.747611999511719,-73.977706909179688,40.738494873046875,N,656 +id0679719,2,2016-03-03 17:49:04,2016-03-03 17:56:28,1,-73.969528198242188,40.761260986328125,-73.958808898925781,40.775779724121094,N,444 +id2164962,1,2016-01-30 18:51:02,2016-01-30 19:08:28,1,-73.96588134765625,40.7593994140625,-73.985595703125,40.727733612060547,N,1046 +id2564636,2,2016-05-05 21:22:43,2016-05-05 21:37:54,6,-73.987388610839844,40.733409881591797,-73.995079040527344,40.760231018066406,N,911 +id0260686,1,2016-03-10 14:01:11,2016-03-10 14:06:09,1,-73.986930847167969,40.759433746337891,-73.991241455078125,40.750316619873047,N,298 +id2204009,2,2016-05-26 13:13:53,2016-05-26 13:21:03,1,-73.972869873046875,40.755485534667969,-73.97979736328125,40.746150970458984,N,430 +id0504466,1,2016-03-24 07:05:57,2016-03-24 07:15:45,2,-73.994148254394531,40.751163482666016,-73.997718811035156,40.764736175537109,N,588 +id3710620,2,2016-04-24 13:20:19,2016-04-24 13:46:33,6,-73.981613159179688,40.767528533935547,-74.005577087402344,40.726890563964844,N,1574 +id2898533,1,2016-03-04 09:25:10,2016-03-04 09:29:10,1,-73.965370178222656,40.759002685546875,-73.970657348632813,40.751640319824219,N,240 +id3366833,1,2016-04-22 01:26:19,2016-04-22 01:37:45,2,-74.004959106445312,40.719268798828125,-73.994949340820312,40.760387420654297,N,686 +id0635457,2,2016-02-06 11:42:11,2016-02-06 11:50:26,1,-74.00531005859375,40.719810485839844,-74.006690979003906,40.740589141845703,N,495 +id3902496,1,2016-03-29 11:42:40,2016-03-29 12:10:58,1,-73.992477416992188,40.749114990234375,-74.012184143066406,40.70904541015625,N,1698 +id2907338,2,2016-01-09 01:39:17,2016-01-09 01:44:52,1,-73.990303039550781,40.718841552734375,-73.973724365234375,40.743534088134766,N,335 +id0893950,2,2016-01-19 16:32:06,2016-01-19 16:46:23,1,-74.000190734863281,40.758453369140625,-74.004417419433594,40.721176147460938,N,857 +id3393406,1,2016-03-05 14:58:16,2016-03-05 15:06:33,4,-73.965057373046875,40.775146484375,-73.97357177734375,40.762622833251953,N,497 +id3851717,2,2016-03-23 09:01:09,2016-03-23 09:11:27,1,-73.976631164550781,40.764171600341797,-73.971580505371094,40.754039764404297,N,618 +id0350352,2,2016-02-21 11:07:50,2016-02-21 11:16:37,2,-73.970802307128906,40.764400482177734,-73.974037170410156,40.747360229492187,N,527 +id2272090,2,2016-06-09 19:03:03,2016-06-09 19:09:00,2,-73.991996765136719,40.744239807128906,-74.002616882324219,40.744888305664062,N,357 +id3784674,2,2016-05-25 12:56:23,2016-05-25 13:23:53,6,-73.974609375,40.759136199951172,-74.007705688476562,40.717571258544922,N,1650 +id0006248,2,2016-04-10 12:16:09,2016-04-10 12:21:48,6,-74.0081787109375,40.73883056640625,-74.000808715820313,40.737339019775391,N,339 +id1370593,2,2016-04-04 17:59:32,2016-04-04 18:18:33,1,-73.974388122558594,40.742359161376953,-73.95025634765625,40.771488189697266,N,1141 +id3034314,2,2016-03-17 11:55:44,2016-03-17 12:19:33,5,-73.974365234375,40.750816345214844,-73.862037658691406,40.768562316894531,N,1429 +id1821980,2,2016-04-12 08:47:55,2016-04-12 09:00:18,2,-73.983741760253906,40.765789031982422,-73.975753784179688,40.754989624023437,N,743 +id2743609,1,2016-04-11 20:54:06,2016-04-11 21:05:58,1,-73.962539672851562,40.794731140136719,-73.968040466308594,40.76123046875,N,712 +id0265508,1,2016-03-21 20:58:41,2016-03-21 21:10:48,1,-73.978034973144531,40.752422332763672,-73.988998413085938,40.777297973632813,N,727 +id1896763,1,2016-06-22 19:16:22,2016-06-22 19:20:58,1,-73.988784790039063,40.758525848388672,-73.984710693359375,40.764259338378906,N,276 +id3561132,2,2016-03-09 15:48:07,2016-03-09 16:06:56,3,-73.966262817382813,40.765579223632812,-73.974212646484375,40.737140655517578,N,1129 +id1154991,1,2016-02-29 09:00:50,2016-02-29 09:07:34,1,-73.96612548828125,40.6934814453125,-73.981758117675781,40.690013885498047,N,404 +id3364684,1,2016-04-13 21:44:33,2016-04-13 22:01:48,1,-73.988838195800781,40.736515045166016,-73.952812194824219,40.772216796875,N,1035 +id3588102,2,2016-05-16 15:50:10,2016-05-16 15:56:18,1,-73.981765747070312,40.745960235595703,-73.977920532226563,40.754493713378906,N,368 +id3162497,2,2016-02-28 11:45:39,2016-02-28 11:54:30,1,-73.978607177734375,40.785942077636719,-73.98162841796875,40.766754150390625,N,531 +id0792216,2,2016-02-25 17:44:31,2016-02-25 17:50:07,2,-73.979545593261719,40.771209716796875,-73.9625244140625,40.767147064208984,N,336 +id1122039,1,2016-02-24 06:58:38,2016-02-24 07:03:38,1,-73.982460021972656,40.748291015625,-73.972160339355469,40.7613525390625,N,300 +id0885379,2,2016-01-28 09:10:20,2016-01-28 09:17:26,1,-73.989997863769531,40.734615325927734,-73.994468688964844,40.740676879882813,N,426 +id1259047,2,2016-03-01 05:56:57,2016-03-01 05:58:23,2,-73.995864868164063,40.724483489990234,-73.992256164550781,40.728897094726563,N,86 +id2024098,1,2016-04-18 18:05:50,2016-04-18 18:22:25,1,-73.97564697265625,40.791862487792969,-74.008384704589844,40.746387481689453,N,995 +id3158361,2,2016-06-18 08:21:40,2016-06-18 08:24:48,2,-73.988113403320313,40.759475708007812,-73.981361389160156,40.768608093261719,N,188 +id0685969,1,2016-03-30 05:10:20,2016-03-30 05:11:51,1,-73.990959167480469,40.765926361083984,-73.98492431640625,40.773979187011719,N,91 +id0568575,1,2016-03-17 23:47:58,2016-03-18 00:02:00,1,-74.005935668945313,40.736309051513672,-74.011444091796875,40.704017639160156,N,842 +id0263612,2,2016-01-22 22:47:56,2016-01-22 22:54:31,1,-73.981910705566406,40.730998992919922,-73.984138488769531,40.725379943847656,N,395 +id0357902,2,2016-01-26 07:09:49,2016-01-26 07:13:30,4,-73.952590942382812,40.772270202636719,-73.949752807617188,40.768630981445313,N,221 +id1275022,1,2016-02-01 23:48:15,2016-02-02 00:03:05,1,-73.98883056640625,40.692771911621094,-73.890289306640625,40.751201629638672,N,890 +id3087093,2,2016-06-04 23:59:38,2016-06-05 00:18:31,2,-73.947731018066406,40.787300109863281,-73.990150451660156,40.757110595703125,N,1133 +id2397260,1,2016-06-11 03:10:56,2016-06-11 03:16:58,1,-73.991172790527344,40.727848052978516,-73.983245849609375,40.730453491210938,Y,362 +id0049385,2,2016-02-18 09:54:56,2016-02-18 10:12:37,4,-73.98492431640625,40.724323272705078,-74.004402160644531,40.724693298339844,N,1061 +id2412736,2,2016-04-27 19:36:44,2016-04-27 20:01:46,1,-73.997360229492188,40.736484527587891,-73.949836730957031,40.797229766845703,N,1502 +id1053382,2,2016-02-16 10:12:58,2016-02-16 10:19:48,1,-73.959617614746094,40.777050018310547,-73.952339172363281,40.789779663085938,N,410 +id0210690,1,2016-06-15 18:43:03,2016-06-15 18:49:16,1,-73.978172302246094,40.748752593994141,-73.999717712402344,40.746017456054688,N,373 +id1123371,2,2016-01-06 08:31:00,2016-01-06 08:41:38,1,-74.01593017578125,40.710498809814453,-74.000442504882813,40.729057312011719,N,638 +id0662017,1,2016-05-21 11:11:42,2016-05-21 11:20:03,2,-73.970687866210938,40.783489227294922,-73.974372863769531,40.762298583984375,N,501 +id3714115,2,2016-03-02 07:36:08,2016-03-02 07:39:10,1,-73.949928283691406,40.777175903320312,-73.949760437011719,40.772388458251953,N,182 +id3213206,1,2016-05-12 07:12:49,2016-05-12 07:20:08,1,-73.961051940917969,40.757656097412109,-73.963233947753906,40.771289825439453,N,439 +id0672779,1,2016-04-24 14:06:59,2016-04-24 14:29:26,2,-74.010635375976563,40.718067169189453,-73.949447631835938,40.77777099609375,N,1347 +id0873531,1,2016-01-25 17:34:35,2016-01-25 17:51:03,1,-73.982292175292969,40.731647491455078,-73.991020202636719,40.693992614746094,N,988 +id2474487,2,2016-06-10 07:00:53,2016-06-10 07:07:49,1,-73.968193054199219,40.759529113769531,-73.950187683105469,40.771808624267578,N,416 +id1854917,2,2016-01-27 21:33:21,2016-01-27 21:57:02,5,-73.873367309570313,40.773910522460938,-73.975311279296875,40.757831573486328,N,1421 +id0436038,1,2016-04-23 21:49:32,2016-04-23 22:09:17,3,-74.007644653320312,40.740756988525391,-73.988761901855469,40.745372772216797,N,1185 +id3671482,1,2016-03-22 22:06:02,2016-03-22 22:40:03,1,-73.99017333984375,40.755756378173828,-73.844100952148438,40.771312713623047,N,2041 +id0078964,2,2016-03-02 08:53:53,2016-03-02 09:04:14,1,-73.994758605957031,40.734508514404297,-74.009849548339844,40.721668243408203,N,621 +id0746126,2,2016-04-22 23:55:30,2016-04-23 00:17:21,1,-73.9888916015625,40.729160308837891,-73.956077575683594,40.714012145996094,N,1311 +id3086222,1,2016-01-10 06:46:25,2016-01-10 07:08:07,1,-73.994277954101563,40.751068115234375,-73.917999267578125,40.86578369140625,N,1302 +id0347800,2,2016-05-24 16:45:24,2016-05-24 16:52:24,2,-73.994255065917969,40.734951019287109,-73.997291564941406,40.724082946777344,N,420 +id0785185,1,2016-05-21 21:45:31,2016-05-21 22:18:18,2,-73.862716674804688,40.768829345703125,-74.034950256347656,40.620567321777344,N,1967 +id1903191,2,2016-04-14 17:50:49,2016-04-14 17:58:54,1,-74.000602722167969,40.727199554443359,-73.986503601074219,40.729621887207031,N,485 +id0199204,1,2016-01-19 18:43:59,2016-01-19 18:54:31,1,-73.979522705078125,40.761669158935547,-73.962730407714844,40.758640289306641,N,632 +id3540828,2,2016-04-27 16:12:50,2016-04-27 16:49:28,1,-73.873161315917969,40.774112701416016,-73.967872619628906,40.765392303466797,N,2198 +id1666068,1,2016-05-04 11:34:01,2016-05-04 11:48:04,1,-73.781791687011719,40.644699096679687,-73.817329406738281,40.657478332519531,N,843 +id3617537,1,2016-06-01 20:06:36,2016-06-01 20:46:41,1,-73.783233642578125,40.648529052734375,-73.980270385742187,40.765037536621094,N,2405 +id3525804,2,2016-06-01 18:56:46,2016-06-01 19:13:21,1,-74.007949829101563,40.722785949707031,-73.98388671875,40.744903564453125,N,995 +id2819080,1,2016-04-20 07:53:12,2016-04-20 08:14:53,3,-73.954971313476562,40.777145385742188,-73.861770629882813,40.768421173095703,N,1301 +id2648902,2,2016-01-04 09:36:30,2016-01-04 09:45:30,1,-73.987586975097656,40.744209289550781,-73.976211547851563,40.748550415039062,N,540 +id0270076,2,2016-03-30 17:49:24,2016-03-30 17:54:20,1,-73.990989685058594,40.739391326904297,-74.000617980957031,40.738010406494141,N,296 +id3509034,2,2016-02-04 15:26:31,2016-02-04 15:35:32,5,-73.963584899902344,40.777118682861328,-73.951019287109375,40.781078338623047,N,541 +id3970252,1,2016-01-12 23:37:33,2016-01-12 23:45:56,2,-73.981063842773438,40.761325836181641,-73.999176025390625,40.744182586669922,N,503 +id2540391,2,2016-05-02 11:51:07,2016-05-02 12:04:43,1,-73.973121643066406,40.743595123291016,-73.953933715820312,40.787090301513672,N,816 +id0522468,2,2016-03-07 18:17:12,2016-03-07 18:32:53,1,-73.992881774902344,40.742931365966797,-73.982650756835938,40.723178863525391,N,941 +id1634488,1,2016-02-20 12:49:19,2016-02-20 13:33:03,1,-73.782432556152344,40.644321441650391,-73.977287292480469,40.664485931396484,N,2624 +id0556076,2,2016-04-27 12:20:50,2016-04-27 12:33:14,2,-73.95556640625,40.782131195068359,-73.9779052734375,40.783157348632813,N,744 +id0991278,2,2016-04-02 10:00:34,2016-04-02 10:26:57,1,-73.981483459472656,40.766738891601563,-73.925727844238281,40.788478851318359,N,1583 +id1641613,1,2016-01-31 23:39:16,2016-01-31 23:45:59,1,-73.989852905273438,40.720531463623047,-73.990196228027344,40.712627410888672,N,403 +id2699965,2,2016-06-18 13:55:29,2016-06-18 14:06:49,1,-73.996772766113281,40.712200164794922,-73.996391296386719,40.725238800048828,N,680 +id1135149,1,2016-05-13 11:23:55,2016-05-13 11:35:00,1,-73.989768981933594,40.734634399414063,-73.992263793945313,40.746181488037109,N,665 +id3095491,1,2016-06-23 12:12:45,2016-06-23 13:09:20,2,-73.872833251953125,40.774013519287109,-73.98583984375,40.755428314208984,N,3395 +id0045511,2,2016-03-13 04:51:47,2016-03-13 05:01:53,5,-73.997482299804688,40.746936798095703,-74.00811767578125,40.716991424560547,N,606 +id2086006,1,2016-02-29 14:37:13,2016-02-29 14:49:16,1,-74.006935119628906,40.730960845947266,-73.991043090820313,40.752796173095703,N,723 +id0601046,2,2016-03-03 00:32:20,2016-03-03 00:40:20,1,-73.995109558105469,40.721481323242187,-74.008583068847656,40.704399108886719,N,480 +id1007054,2,2016-01-09 13:39:10,2016-01-09 13:51:31,2,-74.00762939453125,40.724838256835938,-73.983894348144531,40.738357543945313,N,741 +id1786282,2,2016-03-19 23:18:40,2016-03-19 23:39:09,1,-73.982307434082031,40.731300354003906,-73.938987731933594,40.844249725341797,N,1229 +id2563440,1,2016-05-25 17:54:26,2016-05-25 18:30:07,1,-73.984077453613281,40.759796142578125,-73.991775512695313,40.729900360107422,N,2141 +id2043349,1,2016-02-23 06:19:34,2016-02-23 06:26:58,1,-73.946273803710938,40.78094482421875,-73.938941955566406,40.804973602294922,N,444 +id0169169,2,2016-02-02 23:47:21,2016-02-03 00:03:38,1,-73.862876892089844,40.769371032714844,-73.894996643066406,40.693679809570313,N,977 +id0023275,2,2016-06-10 14:46:15,2016-06-10 15:12:21,1,-73.863639831542969,40.769706726074219,-73.948036193847656,40.803852081298828,N,1566 +id3517199,2,2016-06-04 22:55:12,2016-06-04 23:14:33,6,-74.009605407714844,40.715900421142578,-73.987846374511719,40.667385101318359,N,1161 +id0722951,1,2016-06-04 19:35:07,2016-06-04 19:47:48,2,-74.013885498046875,40.716861724853516,-74.002548217773438,40.744541168212891,N,761 +id0971515,1,2016-05-03 16:40:16,2016-05-03 17:52:12,1,-73.98297119140625,40.76165771484375,-73.786888122558594,40.647304534912109,N,4316 +id2269861,2,2016-01-09 01:24:01,2016-01-09 01:46:07,1,-73.989097595214844,40.723068237304688,-73.974449157714844,40.785678863525391,N,1326 +id3499227,2,2016-01-12 21:51:58,2016-01-12 22:03:41,6,-73.982093811035156,40.778293609619141,-73.9453125,40.833698272705078,N,703 +id1060602,2,2016-06-14 08:12:16,2016-06-14 09:00:04,1,-73.863479614257813,40.769771575927734,-73.987396240234375,40.747337341308594,N,2868 +id3897166,2,2016-04-05 01:43:23,2016-04-05 01:55:12,6,-73.982139587402344,40.768291473388672,-73.95263671875,40.818431854248047,N,709 +id3415862,1,2016-04-23 23:14:28,2016-04-23 23:48:40,2,-73.77679443359375,40.645168304443359,-73.976348876953125,40.758712768554687,N,2052 +id0038218,2,2016-03-19 17:28:01,2016-03-19 17:31:32,2,-73.948600769042969,40.797740936279297,-73.952552795410156,40.789630889892578,N,211 +id2649823,1,2016-03-06 13:44:50,2016-03-06 13:47:52,1,-73.951446533203125,40.793739318847656,-73.950889587402344,40.785934448242187,N,182 +id1995933,1,2016-01-29 06:51:03,2016-01-29 07:06:45,1,-74.002883911132813,40.760311126708984,-73.987930297851563,40.735214233398437,N,942 +id1612588,1,2016-01-20 06:51:00,2016-01-20 06:54:04,1,-73.956275939941406,40.787162780761719,-73.957817077636719,40.77886962890625,N,184 +id1181508,2,2016-06-08 22:13:16,2016-06-08 22:30:36,3,-73.990333557128906,40.7611083984375,-73.942573547363281,40.838840484619141,N,1040 +id2482385,2,2016-05-24 15:28:11,2016-05-24 15:52:31,1,-73.95538330078125,40.769229888916016,-73.959571838378906,40.759960174560547,N,1460 +id3105738,1,2016-01-12 20:25:28,2016-01-12 20:30:50,1,-73.982063293457031,40.776260375976562,-73.97076416015625,40.796688079833984,N,322 +id3738712,1,2016-02-07 20:58:31,2016-02-07 21:02:53,1,-73.963859558105469,40.765274047851563,-73.953758239746094,40.781223297119141,N,262 +id2126207,2,2016-05-24 13:48:05,2016-05-24 13:56:08,1,-73.965965270996094,40.757987976074219,-73.961235046386719,40.769138336181641,N,483 +id1141979,2,2016-03-27 11:24:29,2016-03-27 11:31:43,1,-73.970802307128906,40.755535125732422,-73.972434997558594,40.764183044433594,N,434 +id0082325,2,2016-05-04 11:16:48,2016-05-04 11:45:44,1,-74.001792907714844,40.728008270263672,-73.970832824707031,40.761478424072266,N,1736 +id2708816,2,2016-02-11 18:26:51,2016-02-11 18:31:57,6,-73.952323913574219,40.798320770263672,-73.937606811523438,40.793582916259766,N,306 +id0275785,2,2016-05-01 15:51:43,2016-05-01 16:03:57,2,-73.991432189941406,40.739101409912109,-74.015052795410156,40.709758758544922,N,734 +id2477340,2,2016-06-03 20:30:14,2016-06-03 20:35:58,2,-74.000648498535156,40.727340698242187,-73.994071960449219,40.721035003662109,N,344 +id0160408,1,2016-02-16 14:15:54,2016-02-16 14:30:35,1,-73.972183227539063,40.759078979492188,-73.975151062011719,40.782512664794922,N,881 +id3211899,1,2016-01-24 17:21:16,2016-01-24 17:23:07,2,-73.9495849609375,40.780765533447266,-73.953018188476563,40.775959014892578,N,111 +id3268177,1,2016-03-31 02:35:13,2016-03-31 02:48:03,1,-73.985641479492188,40.727069854736328,-73.942726135253906,40.760135650634766,N,770 +id2450029,1,2016-03-10 00:50:19,2016-03-10 00:55:32,1,-73.97711181640625,40.750217437744141,-73.988006591796875,40.750705718994141,N,313 +id0962254,2,2016-04-23 04:16:42,2016-04-23 04:28:51,1,-73.971435546875,40.749675750732422,-73.941619873046875,40.719879150390625,N,729 +id2539231,1,2016-05-07 22:26:48,2016-05-07 22:32:14,1,-73.987808227539062,40.720008850097656,-73.982666015625,40.727977752685547,N,326 +id2643440,2,2016-01-07 12:51:42,2016-01-07 13:01:52,1,-73.994407653808594,40.750930786132813,-73.978408813476563,40.756839752197266,N,610 +id0534039,2,2016-04-04 22:39:38,2016-04-04 22:42:32,1,-73.97247314453125,40.750949859619141,-73.969062805175781,40.757301330566406,N,174 +id0415576,1,2016-02-27 23:48:34,2016-02-28 00:15:57,1,-73.971916198730469,40.782070159912109,-73.989532470703125,40.726016998291016,N,1643 +id3995943,1,2016-02-09 18:45:59,2016-02-09 18:54:51,1,-73.9879150390625,40.752277374267578,-73.984611511230469,40.763137817382813,N,532 +id2829199,1,2016-02-19 19:29:38,2016-02-19 19:37:26,1,-73.982994079589844,40.769123077392578,-73.963287353515625,40.757583618164063,N,468 +id1222527,1,2016-02-22 16:57:48,2016-02-22 17:10:49,1,-73.992042541503906,40.731109619140625,-73.983924865722656,40.755157470703125,N,781 +id1334999,2,2016-05-23 21:39:20,2016-05-23 21:59:02,1,-73.9783935546875,40.772941589355469,-73.997207641601563,40.727668762207031,N,1182 +id0466917,1,2016-04-19 14:10:15,2016-04-19 14:12:58,1,-74.001014709472656,40.762619018554687,-73.996940612792969,40.760349273681641,N,163 +id2201285,2,2016-01-16 20:01:06,2016-01-16 20:12:04,1,-73.975257873535156,40.745765686035156,-73.993278503417969,40.738330841064453,N,658 +id0590764,2,2016-01-20 20:28:44,2016-01-20 20:40:50,1,-73.988670349121094,40.774185180664063,-73.929298400878906,40.867252349853516,N,726 +id1002460,2,2016-01-13 12:18:48,2016-01-13 12:27:32,1,-74.014076232910156,40.716865539550781,-74.002586364746094,40.733837127685547,N,524 +id2176830,2,2016-05-30 00:46:07,2016-05-30 00:49:25,2,-73.950096130371094,40.771823883056641,-73.959854125976562,40.773738861083984,N,198 +id2693063,1,2016-06-13 00:20:21,2016-06-13 00:29:12,1,-73.999404907226563,40.738552093505859,-73.98583984375,40.726795196533203,N,531 +id3527878,1,2016-06-06 03:30:32,2016-06-06 03:57:49,1,-73.992622375488281,40.748950958251953,-73.991073608398438,40.748821258544922,N,1637 +id1306597,2,2016-04-20 21:50:18,2016-04-20 22:05:24,2,-73.988922119140625,40.751766204833984,-73.952362060546875,40.768592834472656,N,906 +id2122072,2,2016-05-14 00:12:30,2016-05-14 00:26:45,1,-74.00885009765625,40.717498779296875,-73.98455810546875,40.769779205322266,N,855 +id0346673,2,2016-02-08 20:44:00,2016-02-08 21:05:05,5,-73.983016967773437,40.756168365478516,-73.910758972167969,40.889701843261719,N,1265 +id1438733,1,2016-05-06 16:51:41,2016-05-06 17:00:08,1,-74.006919860839844,40.713535308837891,-74.006660461425781,40.711235046386719,N,507 +id1265070,2,2016-06-11 07:54:15,2016-06-11 08:09:55,1,-73.959648132324219,40.771949768066406,-73.978691101074219,40.766628265380859,N,940 +id2944684,1,2016-03-22 19:59:57,2016-03-22 20:11:07,1,-73.954109191894531,40.764049530029297,-73.978172302246094,40.764636993408203,N,670 +id3619835,2,2016-01-08 10:15:46,2016-01-08 11:09:59,1,-73.784507751464844,40.648616790771484,-73.989219665527344,40.757652282714844,N,3253 +id0139912,1,2016-02-18 21:50:36,2016-02-18 22:05:47,1,-73.989524841308594,40.739704132080078,-73.968498229980469,40.758914947509766,N,911 +id0600215,2,2016-01-04 20:37:32,2016-01-04 20:47:03,1,-73.970039367675781,40.761428833007812,-73.951438903808594,40.779449462890625,N,571 +id2480340,1,2016-03-25 12:28:57,2016-03-25 12:38:25,1,-73.973472595214844,40.764823913574219,-73.951545715332031,40.770172119140625,N,568 +id1945008,1,2016-02-25 19:12:14,2016-02-25 19:22:51,1,-73.988571166992188,40.736835479736328,-73.991058349609375,40.749160766601563,N,637 +id0741250,1,2016-01-09 16:03:23,2016-01-09 16:21:22,1,-74.004562377929687,40.7242431640625,-73.99005126953125,40.759029388427734,N,1079 +id1999180,1,2016-05-27 16:12:16,2016-05-27 16:18:41,2,-73.969779968261719,40.784519195556641,-73.955780029296875,40.779804229736328,N,385 +id2260080,1,2016-04-15 11:53:23,2016-04-15 12:10:45,1,-73.994300842285156,40.750942230224609,-73.974014282226563,40.751144409179688,N,1042 +id3898777,2,2016-02-16 13:50:06,2016-02-16 14:00:04,1,-74.003341674804687,40.715499877929688,-74.009559631347656,40.706958770751953,N,598 +id1335885,2,2016-06-13 14:24:15,2016-06-13 14:30:24,2,-73.980133056640625,40.751270294189453,-73.971038818359375,40.759151458740234,N,369 +id0215285,2,2016-02-02 09:01:06,2016-02-02 09:23:20,1,-73.982078552246094,40.782947540283203,-73.972976684570313,40.759838104248047,N,1334 +id2128209,2,2016-01-02 18:41:41,2016-01-02 18:51:54,4,-73.993156433105469,40.729621887207031,-74.003105163574219,40.727733612060547,N,613 +id2498860,1,2016-02-12 13:31:25,2016-02-12 13:51:35,1,-73.978286743164063,40.763141632080078,-73.983428955078125,40.755886077880859,N,1210 +id0794021,2,2016-04-01 09:22:48,2016-04-01 09:27:11,2,-73.954452514648438,40.777198791503906,-73.962142944335937,40.770309448242187,N,263 +id1580299,1,2016-03-14 09:24:01,2016-03-14 09:36:11,1,-73.994308471679688,40.728187561035156,-74.010383605957031,40.719207763671875,N,730 +id3318884,2,2016-03-29 09:02:07,2016-03-29 09:16:04,1,-73.981971740722656,40.761940002441406,-73.989089965820313,40.752410888671875,N,837 +id2889762,1,2016-06-13 11:48:21,2016-06-13 11:52:20,1,-73.958099365234375,40.815372467041016,-73.949203491210938,40.808383941650391,N,239 +id1784342,1,2016-05-09 22:09:51,2016-05-09 22:13:41,1,-74.007652282714844,40.743206024169922,-74.006065368652344,40.734363555908203,N,230 +id2869286,2,2016-04-17 09:07:23,2016-04-17 09:41:36,2,-73.982933044433594,40.761550903320313,-74.012664794921875,40.701675415039063,N,2053 +id3902489,2,2016-05-09 09:10:30,2016-05-09 09:21:55,3,-74.015090942382813,40.709236145019531,-73.99749755859375,40.725826263427734,N,685 +id1788647,2,2016-01-29 05:48:46,2016-01-29 05:52:25,1,-73.986396789550781,40.762374877929688,-73.991104125976563,40.750926971435547,N,219 +id2202684,1,2016-05-01 02:48:58,2016-05-01 03:06:41,1,-73.995803833007812,40.764377593994141,-74.005302429199219,40.736614227294922,N,1063 +id2500279,1,2016-02-14 17:22:41,2016-02-14 17:43:52,1,-73.989143371582031,40.749820709228516,-73.984718322753906,40.760444641113281,N,1271 +id2876074,1,2016-06-06 12:37:02,2016-06-06 12:45:23,1,-73.9754638671875,40.761417388916016,-73.983955383300781,40.749069213867188,N,501 +id3932270,1,2016-05-29 20:52:19,2016-05-29 21:09:54,1,-73.946983337402344,40.678573608398438,-73.953697204589844,40.714366912841797,N,1055 +id0352247,2,2016-06-06 23:14:48,2016-06-06 23:17:59,1,-74.001289367675781,40.729049682617187,-73.998283386230469,40.735179901123047,N,191 +id3825901,2,2016-01-22 15:30:25,2016-01-22 15:32:42,1,-73.976371765136719,40.744411468505859,-73.982261657714844,40.736118316650391,N,137 +id2072932,2,2016-01-16 02:37:59,2016-01-16 02:44:46,5,-73.987922668457031,40.723110198974609,-73.973762512207031,40.743598937988281,N,407 +id1105035,2,2016-05-31 08:53:52,2016-05-31 09:24:49,1,-74.008430480957031,40.720813751220703,-73.976890563964844,40.750595092773438,N,1857 +id2414286,1,2016-03-26 01:46:31,2016-03-26 01:53:18,1,-73.988243103027344,40.723293304443359,-73.9791259765625,40.740367889404297,N,407 +id0972962,1,2016-01-19 15:53:40,2016-01-19 16:20:33,1,-73.972122192382813,40.7821044921875,-73.9697265625,40.758403778076172,N,1613 +id3216005,2,2016-04-06 19:29:26,2016-04-06 19:45:20,1,-73.99591064453125,40.726509094238281,-73.946342468261719,40.716541290283203,N,954 +id2210727,2,2016-03-09 07:12:19,2016-03-09 07:23:19,3,-73.988800048828125,40.768726348876953,-73.97113037109375,40.744945526123047,N,660 +id3262093,1,2016-03-09 05:41:07,2016-03-09 06:01:43,1,-73.978317260742188,40.788356781005859,-73.984169006347656,40.735374450683594,N,1236 +id0742121,1,2016-06-04 21:21:10,2016-06-04 21:30:55,1,-73.997085571289063,40.733417510986328,-74.009101867675781,40.715538024902344,N,585 +id1647124,1,2016-03-27 18:03:13,2016-03-27 18:16:42,2,-73.98223876953125,40.771167755126953,-73.985816955566406,40.756870269775391,N,809 +id3660856,2,2016-02-04 20:15:55,2016-02-04 20:21:49,2,-74.002792358398438,40.760540008544922,-73.989280700683594,40.771621704101563,N,354 +id2631228,2,2016-02-23 10:07:13,2016-02-23 10:16:36,1,-73.991172790527344,40.731620788574219,-73.978797912597656,40.750438690185547,N,563 +id3628850,1,2016-01-22 07:13:13,2016-01-22 07:33:31,1,-73.995475769042969,40.717044830322266,-73.862037658691406,40.76861572265625,N,1218 +id1804627,1,2016-02-02 07:51:54,2016-02-02 07:55:12,1,-73.980964660644531,40.737735748291016,-73.987884521484375,40.734489440917969,N,198 +id1545878,2,2016-04-08 10:26:14,2016-04-08 11:00:29,1,-74.01055908203125,40.712020874023438,-73.975791931152344,40.782218933105469,N,2055 +id0493228,1,2016-02-18 13:23:29,2016-02-18 13:26:48,2,-73.956230163574219,40.775863647460938,-73.949668884277344,40.776981353759766,N,199 +id1280214,1,2016-05-25 21:42:11,2016-05-25 21:56:44,1,-73.982208251953125,40.773731231689453,-73.961006164550781,40.775257110595703,N,873 +id0583109,1,2016-02-10 07:00:14,2016-02-10 07:12:25,1,-73.942359924316406,40.837802886962891,-73.937660217285156,40.804496765136719,N,731 +id2842034,1,2016-01-04 12:21:02,2016-01-04 12:43:32,1,-73.983802795410156,40.754261016845703,-73.99725341796875,40.722385406494141,Y,1350 +id2967287,2,2016-06-28 11:02:21,2016-06-28 11:08:32,5,-73.962821960449219,40.762832641601563,-73.97039794921875,40.751693725585938,N,371 +id2104244,1,2016-03-06 13:51:35,2016-03-06 13:55:27,1,-73.950515747070312,40.771495819091797,-73.953659057617188,40.7796630859375,N,232 +id3089188,2,2016-04-07 03:28:57,2016-04-07 03:35:11,1,-74.002235412597656,40.75042724609375,-73.979835510253906,40.781120300292969,N,374 +id2389155,2,2016-01-08 20:39:30,2016-01-08 20:43:31,1,-73.978500366210938,40.744918823242188,-73.970687866210938,40.752281188964844,N,241 +id3305106,2,2016-03-15 13:50:33,2016-03-15 14:09:52,2,-73.980842590332031,40.757190704345703,-73.954551696777344,40.766155242919922,N,1159 +id0638361,1,2016-03-25 19:01:30,2016-03-25 19:44:36,1,-73.782073974609375,40.644695281982422,-73.931816101074219,40.859443664550781,N,2586 +id0340284,2,2016-03-15 00:50:09,2016-03-15 01:08:29,5,-73.987724304199219,40.732448577880859,-73.92108154296875,40.737621307373047,N,1100 +id3683599,2,2016-03-20 12:12:44,2016-03-20 12:24:32,1,-73.993621826171875,40.742008209228516,-73.999336242675781,40.719951629638672,N,708 +id2594572,2,2016-03-14 21:33:20,2016-03-14 21:39:01,1,-73.979713439941406,40.753219604492188,-73.97662353515625,40.764980316162109,N,341 +id3338917,1,2016-05-24 19:34:52,2016-05-24 19:47:44,1,-73.99383544921875,40.720939636230469,-73.978706359863281,40.736423492431641,N,772 +id3958742,1,2016-06-11 17:45:53,2016-06-11 17:52:48,4,-73.975379943847656,40.75762939453125,-73.981834411621094,40.742229461669922,N,415 +id3103177,1,2016-03-29 19:47:06,2016-03-29 19:57:36,1,-73.981063842773438,40.747734069824219,-73.997520446777344,40.724479675292969,N,630 +id3994943,2,2016-06-18 15:05:16,2016-06-18 15:12:09,6,-73.960296630859375,40.766361236572266,-73.975326538085938,40.752231597900391,N,413 +id1500165,2,2016-05-02 11:05:39,2016-05-02 11:21:27,1,-73.98968505859375,40.734279632568359,-74.01580810546875,40.710838317871094,N,948 +id1711725,2,2016-01-21 18:20:12,2016-01-21 18:28:56,1,-73.97662353515625,40.743812561035156,-73.993850708007813,40.732093811035156,N,524 +id3516056,1,2016-04-28 11:22:24,2016-04-28 11:32:35,1,-73.956260681152344,40.784534454345703,-73.981704711914063,40.776241302490234,N,611 +id0764800,1,2016-01-28 18:24:23,2016-01-28 18:51:08,3,-73.968536376953125,40.750423431396484,-73.967582702636719,40.791782379150391,N,1605 +id3247415,2,2016-04-13 19:18:20,2016-04-13 19:30:35,1,-73.997535705566406,40.721111297607422,-74.005889892578125,40.736362457275391,N,735 +id3734430,2,2016-02-12 09:52:39,2016-02-12 10:05:14,4,-74.004997253417969,40.737560272216797,-73.99652099609375,40.725688934326172,N,755 +id2389097,1,2016-04-23 13:31:49,2016-04-23 13:34:50,1,-73.945953369140625,40.777858734130859,-73.947967529296875,40.774967193603516,N,181 +id1260728,2,2016-03-03 18:01:49,2016-03-03 18:10:56,3,-73.988006591796875,40.738067626953125,-73.972190856933594,40.745491027832031,N,547 +id1548670,1,2016-02-02 06:57:41,2016-02-02 07:06:42,1,-73.958602905273437,40.768100738525391,-73.974563598632812,40.750293731689453,N,541 +id2030922,2,2016-03-10 20:24:32,2016-03-10 20:31:30,3,-73.982139587402344,40.762367248535156,-73.981910705566406,40.753643035888672,N,418 +id3319303,1,2016-02-05 17:41:32,2016-02-05 17:51:45,1,-73.9716796875,40.747577667236328,-73.951622009277344,40.76654052734375,N,613 +id3029210,1,2016-06-16 13:24:02,2016-06-16 13:31:16,1,-74.010002136230469,40.720252990722656,-74.00732421875,40.740867614746094,N,434 +id3127792,1,2016-05-23 06:30:02,2016-05-23 06:32:17,1,-73.977371215820313,40.755485534667969,-73.971809387207031,40.762016296386719,N,135 +id2118003,1,2016-05-04 20:19:40,2016-05-04 20:33:40,1,-74.00048828125,40.732509613037109,-73.979270935058594,40.744338989257813,N,840 +id3403009,2,2016-02-10 19:03:30,2016-02-10 19:17:10,1,-73.988441467285156,40.727771759033203,-74.009521484375,40.703128814697266,N,820 +id2461426,1,2016-01-15 20:36:22,2016-01-15 20:50:38,2,-73.982147216796875,40.769775390625,-73.9517822265625,40.824428558349609,N,856 +id0876571,1,2016-06-20 18:38:21,2016-06-20 18:51:03,2,-73.977867126464844,40.759056091308594,-73.982292175292969,40.764263153076172,N,762 +id2152288,1,2016-04-30 03:16:27,2016-04-30 03:26:29,1,-73.989639282226563,40.756885528564453,-73.986488342285156,40.747482299804688,N,602 +id2379181,1,2016-02-05 06:50:41,2016-02-05 06:55:32,1,-73.985397338867187,40.757991790771484,-73.977073669433594,40.752178192138672,N,291 +id3306507,2,2016-03-18 07:56:51,2016-03-18 08:05:10,1,-73.960693359375,40.777957916259766,-73.969398498535156,40.789421081542969,N,499 +id0363884,1,2016-05-07 21:01:54,2016-05-07 21:22:29,1,-74.010841369628906,40.711559295654297,-73.98577880859375,40.752941131591797,N,1235 +id0337061,1,2016-04-17 18:13:38,2016-04-17 18:26:42,1,-73.990066528320312,40.738346099853516,-73.968017578125,40.755817413330078,N,784 +id2477624,2,2016-05-02 18:16:13,2016-05-02 18:31:22,1,-73.981300354003906,40.749889373779297,-74.007942199707031,40.740249633789063,N,909 +id0377390,2,2016-04-03 22:57:55,2016-04-03 23:00:32,1,-73.986137390136719,40.73468017578125,-73.978988647460938,40.739498138427734,N,157 +id1301607,2,2016-03-02 18:56:07,2016-03-02 19:11:28,5,-73.978248596191406,40.745830535888672,-74.008087158203125,40.739891052246094,N,921 +id2424146,1,2016-05-01 21:15:09,2016-05-01 21:23:09,1,-73.953475952148438,40.775394439697266,-73.97186279296875,40.757011413574219,N,480 +id1236681,1,2016-03-12 17:50:23,2016-03-12 17:55:43,1,-73.983924865722656,40.759899139404297,-73.9847412109375,40.758804321289063,N,320 +id3972701,1,2016-04-23 14:50:08,2016-04-23 15:03:21,1,-73.991630554199219,40.750209808349609,-74.006790161132813,40.739826202392578,N,793 +id2569670,2,2016-03-06 00:37:25,2016-03-06 00:40:17,1,-73.971397399902344,40.760768890380859,-73.973121643066406,40.755508422851563,N,172 +id1192635,2,2016-02-27 12:07:09,2016-02-27 12:18:08,2,-73.979843139648438,40.743473052978516,-73.958442687988281,40.767139434814453,N,659 +id1975140,1,2016-04-19 06:41:40,2016-04-19 06:44:54,1,-73.972976684570313,40.752864837646484,-73.978927612304688,40.758293151855469,N,194 +id0146425,1,2016-05-15 13:20:23,2016-05-15 13:26:44,1,-73.991775512695313,40.738441467285156,-73.988845825195313,40.731273651123047,N,381 +id1708155,1,2016-04-11 22:24:23,2016-04-11 22:26:52,1,-74.015350341796875,40.714809417724609,-74.014427185058594,40.7099609375,N,149 +id0285716,1,2016-02-03 07:13:38,2016-02-03 07:19:19,1,-73.984207153320313,40.769798278808594,-73.981460571289063,40.757881164550781,N,341 +id1895673,2,2016-05-26 22:34:50,2016-05-26 22:42:27,3,-73.971763610839844,40.766170501708984,-73.957008361816406,40.786228179931641,N,457 +id0998318,2,2016-02-02 10:49:16,2016-02-02 11:02:45,1,-73.986526489257813,40.742950439453125,-73.975540161132813,40.754798889160156,N,809 +id3102875,2,2016-03-10 09:28:20,2016-03-10 09:33:12,1,-73.987052917480469,40.755641937255859,-73.974235534667969,40.750667572021484,N,292 +id0446061,2,2016-02-07 17:55:51,2016-02-07 18:04:39,5,-73.989883422851562,40.719181060791016,-73.999992370605469,40.734821319580078,N,528 +id2575665,2,2016-06-26 17:11:22,2016-06-26 17:27:47,1,-73.976799011230469,40.788398742675781,-73.937408447265625,40.824131011962891,N,985 +id1632960,1,2016-04-14 20:27:14,2016-04-14 20:36:58,1,-73.985542297363281,40.741859436035156,-73.963302612304688,40.757717132568359,N,584 +id3862602,1,2016-02-16 07:52:34,2016-02-16 08:01:59,1,-73.991447448730469,40.749755859375,-73.975341796875,40.755233764648437,N,565 +id3207103,1,2016-03-02 21:43:06,2016-03-02 21:57:59,1,-73.950515747070312,40.786270141601562,-73.987045288085938,40.71826171875,N,893 +id2198902,2,2016-04-04 07:21:42,2016-04-04 07:30:09,1,-73.975212097167969,40.787689208984375,-73.973121643066406,40.763988494873047,N,507 +id2157026,1,2016-02-06 20:34:15,2016-02-06 20:36:57,1,-73.98236083984375,40.739902496337891,-73.985305786132812,40.739772796630859,N,162 +id2020723,2,2016-06-03 14:48:07,2016-06-03 15:00:16,5,-73.986587524414063,40.762248992919922,-73.974922180175781,40.762260437011719,N,729 +id3502106,1,2016-06-03 00:36:22,2016-06-03 01:00:25,1,-73.862564086914062,40.768993377685547,-73.967239379882813,40.804447174072266,N,1443 +id1888303,1,2016-03-04 14:53:49,2016-03-04 15:01:50,1,-73.991790771484375,40.729690551757813,-73.982887268066406,40.74285888671875,N,481 +id2699203,2,2016-05-08 15:56:11,2016-05-08 15:58:36,1,-73.992530822753906,40.740333557128906,-73.990272521972656,40.737571716308594,N,145 +id0973837,1,2016-03-07 20:58:41,2016-03-07 21:15:35,1,-73.985710144042969,40.744895935058594,-73.964073181152344,40.798076629638672,N,1014 +id0187848,2,2016-01-22 20:44:18,2016-01-22 20:47:43,1,-73.96209716796875,40.776329040527344,-73.953971862792969,40.775520324707031,N,205 +id2330556,1,2016-02-18 19:23:20,2016-02-18 19:31:15,1,-73.96832275390625,40.764873504638672,-73.958587646484375,40.772510528564453,N,475 +id1006785,1,2016-06-23 06:32:22,2016-06-23 06:35:18,1,-73.993675231933594,40.741706848144531,-73.982307434082031,40.757743835449219,N,176 +id1219560,2,2016-03-02 18:27:57,2016-03-02 18:30:24,1,-73.954208374023437,40.770160675048828,-73.95263671875,40.774089813232422,N,147 +id3126453,2,2016-01-26 22:33:05,2016-01-26 22:48:03,1,-73.995330810546875,40.749691009521484,-73.974380493164063,40.760440826416016,N,898 +id0808278,2,2016-03-22 21:49:31,2016-03-22 21:50:39,2,-73.964271545410156,40.770240783691406,-73.960357666015625,40.769950866699219,N,68 +id2316114,1,2016-04-18 07:05:00,2016-04-18 07:33:49,1,-73.991287231445313,40.750717163085938,-74.024246215820313,40.609359741210938,N,1729 +id2679299,1,2016-03-08 14:45:47,2016-03-08 14:57:17,1,-73.985031127929688,40.762722015380859,-73.992294311523438,40.758590698242188,N,690 +id1283182,1,2016-02-04 15:00:28,2016-02-04 15:25:37,1,-73.955154418945313,40.783340454101563,-73.991386413574219,40.749946594238281,N,1509 +id1701730,1,2016-06-03 03:04:57,2016-06-03 03:08:42,2,-74.009300231933594,40.716255187988281,-74.010215759277344,40.731731414794922,N,225 +id0494329,2,2016-02-18 15:19:18,2016-02-18 15:28:04,1,-73.983871459960937,40.755332946777344,-73.972465515136719,40.762256622314453,N,526 +id1815820,2,2016-04-24 14:22:17,2016-04-24 14:28:45,1,-73.967391967773438,40.792819976806641,-73.944580078125,40.794868469238281,N,388 +id0241011,1,2016-05-07 20:32:08,2016-05-07 20:46:56,1,-74.002761840820312,40.76055908203125,-74.001365661621094,40.732669830322266,N,888 +id2553333,1,2016-02-27 21:47:31,2016-02-27 22:05:58,2,-73.980125427246094,40.750896453857422,-74.005966186523438,40.736919403076172,N,1107 +id0323473,2,2016-03-05 18:01:29,2016-03-05 18:06:09,1,-73.997238159179687,40.736900329589844,-74.004310607910156,40.742488861083984,N,280 +id0316905,2,2016-03-13 12:14:00,2016-03-13 12:28:22,2,-74.015029907226563,40.718120574951172,-73.973075866699219,40.754573822021484,N,862 +id0393224,1,2016-01-04 18:20:40,2016-01-04 18:20:59,1,-73.997016906738281,40.722419738769531,-73.996902465820313,40.722610473632812,N,19 +id2253847,1,2016-03-23 00:27:48,2016-03-23 00:37:40,1,-73.987205505371094,40.738857269287109,-73.989852905273438,40.757266998291016,N,592 +id2910443,2,2016-02-21 22:26:31,2016-02-21 22:44:59,2,-73.905044555664063,40.752437591552734,-73.87274169921875,40.753097534179688,N,1108 +id3491175,2,2016-02-05 10:38:27,2016-02-05 11:08:24,1,-73.98333740234375,40.750396728515625,-73.967620849609375,40.768707275390625,N,1797 +id1622909,1,2016-02-06 19:55:29,2016-02-06 20:02:03,1,-73.965370178222656,40.771858215332031,-73.981246948242188,40.778553009033203,N,394 +id0176231,1,2016-01-22 14:51:16,2016-01-22 15:05:21,2,-73.990646362304687,40.730522155761719,-73.992202758789063,40.749233245849609,N,845 +id0879151,1,2016-01-18 21:45:24,2016-01-18 21:55:26,1,-73.959259033203125,40.777549743652344,-73.982742309570313,40.775913238525391,N,602 +id3058745,2,2016-03-15 13:54:01,2016-03-15 14:01:47,1,-73.980476379394531,40.754379272460938,-73.992706298828125,40.738498687744141,N,466 +id1487352,1,2016-03-28 00:36:32,2016-03-28 00:51:07,1,-73.9945068359375,40.726020812988281,-73.938179016113281,40.792339324951172,N,875 +id3079685,2,2016-03-12 07:40:09,2016-03-12 07:47:47,1,-73.991546630859375,40.751148223876953,-73.98486328125,40.759311676025391,N,458 +id3419898,1,2016-03-16 06:21:20,2016-03-16 06:56:46,1,-73.958038330078125,40.776153564453125,-73.783821105957031,40.643692016601563,Y,2126 +id1770604,2,2016-04-10 17:05:47,2016-04-10 17:25:50,1,-73.955299377441406,40.785598754882813,-73.981132507324219,40.773239135742188,N,1203 +id0586343,1,2016-06-18 22:40:28,2016-06-18 22:50:24,1,-73.983551025390625,40.773880004882812,-73.953681945800781,40.784839630126953,N,596 +id1292330,2,2016-02-11 23:38:09,2016-02-11 23:55:23,2,-73.970230102539062,40.762313842773438,-74.00421142578125,40.742393493652344,N,1034 +id0330520,1,2016-02-25 03:43:30,2016-02-25 04:09:37,1,-73.782020568847656,40.644634246826172,-73.927566528320313,40.659751892089844,N,1567 +id0053961,2,2016-03-07 21:14:20,2016-03-07 21:21:44,6,-74.002029418945313,40.730144500732422,-73.991157531738281,40.750316619873047,N,444 +id0800245,2,2016-06-17 18:09:20,2016-06-17 18:31:26,1,-73.980636596679688,40.750778198242188,-73.940658569335938,40.793098449707031,N,1326 +id3619187,1,2016-01-05 13:17:31,2016-01-05 13:34:08,1,-74.005355834960937,40.722461700439453,-73.990089416503906,40.751186370849609,N,997 +id1757335,2,2016-03-31 00:44:39,2016-03-31 00:50:55,1,-73.980888366699219,40.741920471191406,-74.002731323242188,40.749679565429688,N,376 +id3867452,2,2016-04-07 18:57:32,2016-04-07 19:05:26,1,-73.994667053222656,40.740421295166016,-74.007431030273437,40.732959747314453,N,474 +id2433768,1,2016-03-18 18:48:55,2016-03-18 19:17:30,1,-73.968276977539063,40.787017822265625,-73.993408203125,40.754009246826172,N,1715 +id2292954,2,2016-02-12 02:38:42,2016-02-12 02:42:05,6,-73.987678527832031,40.721248626708984,-73.984054565429687,40.721366882324219,N,203 +id2638226,2,2016-01-12 11:34:52,2016-01-12 11:51:57,1,-73.985939025878906,40.752140045166016,-73.995323181152344,40.769748687744141,N,1025 +id0560528,1,2016-03-06 00:02:26,2016-03-06 00:12:59,1,-74.000404357910156,40.742771148681641,-73.970756530761719,40.748924255371094,N,633 +id1135629,2,2016-04-30 20:43:06,2016-04-30 20:46:20,4,-73.976730346679688,40.787921905517578,-73.966941833496094,40.789249420166016,N,194 +id1699805,2,2016-04-09 21:01:35,2016-04-09 21:17:33,1,-73.986106872558594,40.730579376220703,-73.992210388183594,40.748779296875,N,958 +id1768610,2,2016-06-06 09:17:43,2016-06-06 09:23:42,1,-73.992774963378906,40.742851257324219,-73.993919372558594,40.735488891601563,N,359 +id2834820,1,2016-05-23 08:34:36,2016-05-23 08:43:15,1,-73.982444763183594,40.775787353515625,-73.972877502441406,40.762481689453125,N,519 +id1382659,2,2016-06-08 19:29:21,2016-06-08 19:41:51,5,-73.965263366699219,40.758739471435547,-73.97869873046875,40.741420745849609,N,750 +id2045047,1,2016-02-27 17:52:47,2016-02-27 18:04:04,1,-74.001358032226563,40.731151580810547,-74.014930725097656,40.711277008056641,N,677 +id3300226,1,2016-04-23 13:32:47,2016-04-23 13:44:53,4,-73.973800659179688,40.760257720947266,-73.955024719238281,40.805011749267578,N,726 +id0834795,2,2016-04-01 14:42:54,2016-04-01 14:53:05,1,-73.95501708984375,40.7801513671875,-73.967376708984375,40.763431549072266,N,611 +id3027526,2,2016-02-19 17:34:05,2016-02-19 17:38:06,2,-73.98883056640625,40.768741607666016,-73.981658935546875,40.778587341308594,N,241 +id1242475,1,2016-02-14 16:11:52,2016-02-14 16:18:21,1,-73.981971740722656,40.775310516357422,-73.966484069824219,40.793376922607422,N,389 +id1672862,1,2016-06-02 23:01:45,2016-06-02 23:24:28,1,-73.992042541503906,40.759113311767578,-73.975196838378906,40.733219146728516,N,1363 +id0330774,1,2016-03-12 15:38:50,2016-03-12 15:44:00,1,-73.995582580566406,40.739139556884766,-73.988548278808594,40.748836517333984,N,310 +id3031690,2,2016-05-15 15:50:14,2016-05-15 15:56:44,1,-73.98858642578125,40.739398956298828,-73.987640380859375,40.749950408935547,N,390 +id0688948,1,2016-04-14 20:13:28,2016-04-14 20:13:43,1,-74.16180419921875,40.836494445800781,-74.16180419921875,40.836494445800781,N,15 +id0008821,2,2016-03-15 16:57:31,2016-03-15 17:03:28,1,-73.959678649902344,40.77130126953125,-73.969451904296875,40.764389038085937,N,357 +id3283577,2,2016-05-08 20:50:05,2016-05-08 20:56:21,1,-73.999031066894531,40.722660064697266,-74.01055908203125,40.713962554931641,N,376 +id0046251,2,2016-06-05 18:09:36,2016-06-05 18:12:09,1,-73.987442016601563,40.738361358642578,-73.992225646972656,40.730766296386719,N,153 +id1716062,1,2016-06-22 00:09:51,2016-06-22 00:19:03,1,-73.984893798828125,40.732414245605469,-74.008773803710937,40.712276458740234,N,552 +id3046362,1,2016-05-21 13:37:33,2016-05-21 13:42:20,1,-73.960037231445312,40.766277313232422,-73.968414306640625,40.754566192626953,N,287 +id0965029,1,2016-01-05 23:36:41,2016-01-05 23:45:08,1,-73.980987548828125,40.721115112304688,-73.984748840332031,40.701812744140625,N,507 +id0475973,1,2016-01-14 22:43:37,2016-01-14 22:59:29,1,-73.98577880859375,40.739711761474609,-73.949081420898437,40.784000396728516,N,952 +id2060030,1,2016-04-15 15:13:41,2016-04-15 15:22:10,1,-73.990966796875,40.750209808349609,-73.97979736328125,40.737422943115234,N,509 +id2352179,2,2016-03-16 10:50:24,2016-03-16 11:07:12,1,-73.994110107421875,40.751209259033203,-73.976387023925781,40.756610870361328,N,1008 +id1500803,1,2016-01-21 22:06:33,2016-01-21 22:11:41,2,-73.999191284179688,40.734092712402344,-73.99224853515625,40.749244689941406,N,308 +id0892520,1,2016-03-09 17:59:19,2016-03-09 18:25:21,2,-73.983314514160156,40.762458801269531,-74.007171630859375,40.703742980957031,N,1562 +id0888188,1,2016-06-18 10:02:49,2016-06-18 10:09:39,1,-73.950408935546875,40.783786773681641,-73.96484375,40.755760192871094,N,410 +id0266576,2,2016-02-08 14:04:12,2016-02-08 14:13:21,3,-73.996528625488281,40.725528717041016,-74.008399963378906,40.739231109619141,N,549 +id2694154,2,2016-03-08 11:26:33,2016-03-08 12:13:31,1,-73.870933532714844,40.773811340332031,-73.971733093261719,40.756389617919922,N,2818 +id1115706,1,2016-04-24 13:07:26,2016-04-24 13:24:20,1,-73.978515625,40.782905578613281,-74.001014709472656,40.752239227294922,N,1014 +id1508834,2,2016-05-13 18:58:36,2016-05-13 19:36:17,2,-73.992225646972656,40.737895965576172,-73.984298706054688,40.775203704833984,N,2261 +id0605985,2,2016-02-27 22:51:53,2016-02-27 23:04:50,2,-73.973098754882812,40.755229949951172,-73.990837097167969,40.745349884033203,N,777 +id2253810,2,2016-02-14 11:32:41,2016-02-14 11:52:49,2,-73.977378845214844,40.764019012451172,-74.002616882324219,40.732017517089844,N,1208 +id1168059,2,2016-05-14 00:13:29,2016-05-14 00:41:40,1,-74.003097534179688,40.733264923095703,-73.929283142089844,40.700405120849609,N,1691 +id2514050,2,2016-06-06 10:47:42,2016-06-06 11:09:13,2,-74.006698608398438,40.735801696777344,-73.980422973632813,40.751209259033203,N,1291 +id2047739,1,2016-01-08 08:10:52,2016-01-08 08:13:43,1,-74.001197814941406,40.746757507324219,-73.995498657226562,40.743068695068359,N,171 +id3003290,2,2016-05-21 20:27:45,2016-05-21 20:39:32,1,-73.977127075195313,40.745330810546875,-73.987396240234375,40.744121551513672,N,707 +id1713786,2,2016-04-08 12:42:07,2016-04-08 13:03:34,2,-73.96124267578125,40.760562896728516,-74.000404357910156,40.715103149414063,N,1287 +id1650437,2,2016-03-29 21:34:05,2016-03-29 21:57:23,1,-73.871177673339844,40.773841857910156,-73.982498168945313,40.755477905273437,N,1398 +id1353967,1,2016-01-16 22:26:21,2016-01-16 22:35:01,2,-73.961517333984375,40.811939239501953,-73.970863342285156,40.797691345214844,N,520 +id1851358,2,2016-03-08 14:23:34,2016-03-08 14:33:14,1,-73.987060546875,40.750404357910156,-73.976264953613281,40.764251708984375,N,580 +id1249535,2,2016-02-02 18:44:40,2016-02-02 19:00:50,5,-73.98760986328125,40.755649566650391,-73.989799499511719,40.733779907226563,N,970 +id0262499,1,2016-03-17 17:48:01,2016-03-17 18:02:24,1,-73.982177734375,40.742889404296875,-73.993202209472656,40.7196044921875,N,863 +id0626964,2,2016-03-10 20:00:02,2016-03-10 20:13:33,5,-73.9808349609375,40.759395599365234,-73.965896606445313,40.768516540527344,N,811 +id0388534,1,2016-06-04 23:31:00,2016-06-04 23:45:01,1,-73.952110290527344,40.742527008056641,-73.913627624511719,40.779483795166016,N,841 +id1265996,2,2016-03-11 13:13:35,2016-03-11 13:23:15,1,-73.974899291992187,40.761898040771484,-73.97576904296875,40.752372741699219,N,580 +id2364356,2,2016-02-12 22:06:09,2016-02-12 22:24:35,2,-73.992668151855469,40.737323760986328,-73.985809326171875,40.719551086425781,N,1106 +id0447822,2,2016-01-23 03:05:17,2016-01-23 03:19:24,2,-73.986709594726563,40.719699859619141,-73.949920654296875,40.727878570556641,N,847 +id0065800,1,2016-06-24 12:36:07,2016-06-24 12:59:46,1,-73.954551696777344,40.764049530029297,-73.991722106933594,40.749809265136719,N,1419 +id2245697,1,2016-04-23 22:27:49,2016-04-23 23:00:10,4,-73.988349914550781,40.758411407470703,-73.994293212890625,40.686061859130859,N,1941 +id3529649,1,2016-04-12 21:10:30,2016-04-12 21:19:16,1,-73.953933715820312,40.774868011474609,-73.973487854003906,40.747901916503906,N,526 +id2203410,2,2016-05-02 08:20:32,2016-05-02 08:36:55,1,-74.004142761230469,40.742790222167969,-74.011581420898438,40.709556579589844,N,983 +id3099874,2,2016-06-07 18:06:48,2016-06-07 18:08:59,5,-73.983016967773437,40.781780242919922,-73.978767395019531,40.783260345458984,N,131 +id0427194,1,2016-04-29 10:02:29,2016-04-29 10:17:31,2,-73.97833251953125,40.742618560791016,-73.998130798339844,40.737979888916016,N,902 +id3234805,1,2016-04-13 12:28:04,2016-04-13 12:59:27,1,-74.004486083984375,40.737850189208984,-73.983245849609375,40.754135131835938,N,1883 +id2963108,1,2016-05-22 22:35:59,2016-05-22 22:40:26,1,-73.935905456542969,40.850090026855469,-73.927909851074219,40.855083465576172,N,267 +id2268467,1,2016-01-26 10:34:34,2016-01-26 10:45:40,1,-73.972457885742187,40.78656005859375,-73.979217529296875,40.783561706542969,N,666 +id3345644,1,2016-02-14 14:38:04,2016-02-14 14:50:18,1,-73.981109619140625,40.759052276611328,-73.986030578613281,40.758163452148438,N,734 +id2624581,2,2016-06-08 08:18:33,2016-06-08 08:27:30,1,-73.983718872070313,40.759029388427734,-73.980201721191406,40.7730712890625,N,537 +id2640294,1,2016-04-28 20:03:15,2016-04-28 20:12:51,1,-73.982276916503906,40.774044036865234,-73.968887329101563,40.797664642333984,N,576 +id0461887,2,2016-02-09 20:13:41,2016-02-09 20:17:52,1,-73.984588623046875,40.761569976806641,-73.97650146484375,40.756610870361328,N,251 +id3352424,2,2016-02-03 15:41:31,2016-02-03 15:54:13,5,-73.985801696777344,40.757701873779297,-74.002716064453125,40.760665893554687,N,762 +id3152147,1,2016-03-27 15:06:17,2016-03-27 15:12:50,1,-73.961181640625,40.7188720703125,-73.949600219726563,40.723598480224609,N,393 +id0782204,1,2016-05-01 21:17:10,2016-05-01 21:52:37,2,-73.788993835449219,40.641201019287109,-73.989639282226563,40.690952301025391,N,2127 +id0529330,2,2016-06-06 20:12:44,2016-06-06 20:14:49,2,-73.96575927734375,40.757747650146484,-73.964874267578125,40.754177093505859,N,125 +id3876997,1,2016-02-26 21:47:32,2016-02-26 21:50:07,1,-73.967880249023438,40.800395965576172,-73.960479736328125,40.797615051269531,N,155 +id3089776,1,2016-01-29 10:59:01,2016-01-29 11:08:55,1,-73.97198486328125,40.749423980712891,-73.939140319824219,40.749595642089844,N,594 +id2052795,1,2016-05-05 08:27:35,2016-05-05 08:31:32,1,-74.003860473632813,40.732666015625,-74.00653076171875,40.737411499023438,N,237 +id3716836,2,2016-06-26 21:22:52,2016-06-26 21:40:42,5,-73.872947692871094,40.774101257324219,-73.979637145996094,40.732841491699219,N,1070 +id0037325,1,2016-05-15 14:41:43,2016-05-15 14:47:57,1,-73.947837829589844,40.782878875732422,-73.958671569824219,40.774730682373047,N,374 +id1052822,2,2016-06-17 15:43:41,2016-06-17 16:12:10,2,-74.004402160644531,40.707599639892578,-73.984573364257813,40.747203826904297,N,1709 +id3723541,1,2016-04-23 14:52:07,2016-04-23 14:55:50,1,-73.987411499023437,40.729316711425781,-73.993736267089844,40.733188629150391,N,223 +id1876280,2,2016-05-12 12:44:36,2016-05-12 12:51:23,2,-73.986228942871094,40.741226196289063,-73.978302001953125,40.751258850097656,N,407 +id3589326,1,2016-03-15 00:44:19,2016-03-15 01:04:24,1,-73.994873046875,40.740009307861328,-73.920051574707031,40.762729644775391,N,1205 +id1254293,2,2016-05-14 07:27:26,2016-05-14 07:39:56,2,-73.977928161621094,40.754581451416016,-74.005592346191406,40.721889495849609,N,750 +id0491149,2,2016-03-21 18:14:49,2016-03-21 18:36:38,1,-73.993667602539063,40.751773834228516,-73.955970764160156,40.77880859375,N,1309 +id1726677,2,2016-02-10 13:38:06,2016-02-10 13:57:51,5,-73.978889465332031,40.761829376220703,-73.989356994628906,40.758758544921875,N,1185 +id2030894,1,2016-04-20 18:27:51,2016-04-20 18:58:17,1,-73.98199462890625,40.762996673583984,-73.948837280273438,40.827484130859375,N,1826 +id3485878,2,2016-03-27 14:21:18,2016-03-27 14:36:17,2,-74.008132934570313,40.739509582519531,-73.984542846679688,40.761760711669922,N,899 +id3217644,1,2016-02-06 01:34:09,2016-02-06 01:44:21,4,-73.984603881835938,40.724575042724609,-73.980072021484375,40.743068695068359,N,612 +id0804120,1,2016-04-17 22:11:28,2016-04-17 22:21:17,1,-73.981910705566406,40.780387878417969,-73.965980529785156,40.77105712890625,N,589 +id1165864,1,2016-04-13 17:36:41,2016-04-13 17:43:37,1,-73.993377685546875,40.664836883544922,-73.978981018066406,40.683231353759766,N,416 +id2270295,2,2016-04-18 19:12:20,2016-04-18 19:31:37,1,-73.991302490234375,40.749851226806641,-73.998970031738281,40.723125457763672,N,1157 +id0696133,1,2016-05-18 07:48:56,2016-05-18 08:00:37,1,-73.983177185058594,40.734832763671875,-73.982681274414063,40.74859619140625,N,701 +id2626029,2,2016-03-04 18:53:00,2016-03-04 19:41:10,5,-73.781959533691406,40.644710540771484,-73.980583190917969,40.716579437255859,N,2890 +id0771627,2,2016-01-08 17:25:36,2016-01-08 17:40:15,6,-73.95050048828125,40.775337219238281,-73.972328186035156,40.791416168212891,N,879 +id0916417,1,2016-03-12 13:27:54,2016-03-12 13:31:50,1,-73.988960266113281,40.74871826171875,-73.981094360351563,40.7476806640625,N,236 +id3639242,1,2016-05-11 12:59:28,2016-05-11 13:30:21,1,-73.966781616210938,40.7528076171875,-73.986160278320312,40.769943237304688,N,1853 +id1156438,1,2016-05-20 02:33:28,2016-05-20 02:48:32,1,-73.991424560546875,40.727020263671875,-73.993659973144531,40.758804321289063,N,904 +id2347222,2,2016-03-29 12:58:53,2016-03-29 13:06:31,1,-73.983489990234375,40.760910034179688,-73.987007141113281,40.755680084228516,N,458 +id2120873,2,2016-05-29 09:47:01,2016-05-29 09:51:50,2,-73.951873779296875,40.773571014404297,-73.960845947265625,40.774013519287109,N,289 +id3256683,1,2016-06-24 20:34:38,2016-06-24 20:51:50,4,-73.979728698730469,40.758884429931641,-73.998481750488281,40.761444091796875,N,1032 +id1078816,1,2016-01-03 04:46:53,2016-01-03 05:09:55,2,-73.983840942382813,40.773674011230469,-73.93988037109375,40.707916259765625,N,1382 +id1237660,2,2016-05-17 23:50:52,2016-05-17 23:59:30,1,-73.99127197265625,40.750141143798828,-74.007369995117188,40.733070373535156,N,518 +id2163085,1,2016-06-14 14:08:07,2016-06-14 14:11:40,1,-73.951042175292969,40.770481109619141,-73.957077026367188,40.774490356445312,N,213 +id2872431,2,2016-04-27 18:37:33,2016-04-27 19:07:18,1,-73.975822448730469,40.761211395263672,-74.006149291992188,40.739463806152344,N,1785 +id1362798,2,2016-02-05 21:19:21,2016-02-05 21:42:13,5,-74.004051208496094,40.707439422607422,-73.964241027832031,40.794990539550781,N,1372 +id2894645,1,2016-05-30 11:09:00,2016-05-30 11:24:25,1,-73.989250183105469,40.690929412841797,-74.006790161132813,40.751308441162109,N,925 +id2157045,2,2016-06-06 17:43:55,2016-06-06 17:47:08,2,-73.966712951660156,40.764289855957031,-73.966102600097656,40.76776123046875,N,193 +id1197289,2,2016-03-19 22:13:50,2016-03-19 22:16:01,1,-73.949089050292969,40.774135589599609,-73.951637268066406,40.777900695800781,N,131 +id0027922,1,2016-04-08 08:37:19,2016-04-08 08:45:42,1,-73.978378295898437,40.764392852783203,-73.982528686523437,40.754924774169922,N,503 +id3531464,1,2016-01-26 08:38:37,2016-01-26 08:45:19,1,-73.944633483886719,40.787548065185547,-73.954856872558594,40.780494689941406,N,402 +id0998725,1,2016-05-11 11:48:01,2016-05-11 11:53:21,1,-73.97418212890625,40.755428314208984,-73.982780456542969,40.741630554199219,N,320 +id3156397,1,2016-01-31 22:43:10,2016-01-31 22:55:41,1,-73.990364074707031,40.756786346435547,-73.96307373046875,40.75921630859375,N,751 +id1990459,1,2016-06-04 07:35:59,2016-06-04 07:53:15,1,-73.947685241699219,40.773616790771484,-73.9365234375,40.801082611083984,N,1036 +id0857312,2,2016-06-28 07:46:33,2016-06-28 07:59:46,1,-74.00823974609375,40.737789154052734,-74.013801574707031,40.715248107910156,N,793 +id3277069,2,2016-01-02 13:58:25,2016-01-02 14:05:34,2,-73.954933166503906,40.780429840087891,-73.944671630859375,40.794410705566406,N,429 +id3628956,2,2016-04-18 17:14:58,2016-04-18 17:20:15,1,-73.992301940917969,40.737869262695312,-74.006851196289062,40.741630554199219,N,317 +id2607501,1,2016-02-29 21:25:04,2016-02-29 21:48:10,1,-73.78387451171875,40.646411895751953,-73.945785522460938,40.629432678222656,N,1386 +id3917181,2,2016-03-11 18:48:05,2016-03-11 19:18:17,1,-73.874488830566406,40.774021148681641,-73.972190856933594,40.783981323242187,N,1812 +id2978617,1,2016-01-06 11:01:12,2016-01-06 11:11:55,1,-74.008613586425781,40.714424133300781,-73.995834350585938,40.726524353027344,N,643 +id1608248,2,2016-01-12 16:49:16,2016-01-12 16:53:14,2,-73.987167358398438,40.761138916015625,-73.979087829589844,40.764438629150391,N,238 +id1116175,2,2016-04-07 18:16:10,2016-04-07 18:26:39,1,-73.989982604980469,40.741840362548828,-73.994125366210938,40.724578857421875,N,629 +id3769944,2,2016-02-09 20:10:36,2016-02-09 20:20:33,3,-73.981575012207031,40.749153137207031,-73.972366333007812,40.765323638916016,N,597 +id1736359,1,2016-02-25 15:03:24,2016-02-25 15:22:50,1,-73.994377136230469,40.750896453857422,-73.97845458984375,40.755504608154297,N,1166 +id0325827,2,2016-05-19 18:51:29,2016-05-19 19:03:08,4,-73.960128784179687,40.762214660644531,-73.974838256835938,40.761653900146484,N,699 +id3072035,2,2016-04-12 13:31:59,2016-04-12 13:59:06,1,-73.954116821289062,40.787181854248047,-73.982948303222656,40.749237060546875,N,1627 +id3166064,2,2016-02-24 17:51:25,2016-02-24 18:08:17,4,-73.974769592285156,40.761562347412109,-73.981620788574219,40.757106781005859,N,1012 +id1714071,1,2016-02-24 01:57:43,2016-02-24 02:15:58,1,-74.000442504882813,40.730133056640625,-73.973251342773438,40.795200347900391,N,1095 +id1560117,2,2016-02-16 14:12:09,2016-02-16 14:38:47,1,-73.9940185546875,40.751144409179688,-74.004295349121094,40.713302612304688,N,1598 +id3421109,2,2016-05-01 14:11:07,2016-05-01 14:13:49,1,-73.988136291503906,40.759540557861328,-73.983840942382813,40.761348724365234,N,162 +id1086273,2,2016-04-10 02:11:49,2016-04-10 02:20:58,5,-73.979721069335938,40.743110656738281,-73.991180419921875,40.744388580322266,N,549 +id0947723,2,2016-04-26 23:20:28,2016-04-26 23:23:14,1,-73.932083129882812,40.759670257568359,-73.94097900390625,40.751060485839844,N,166 +id0136028,2,2016-06-11 21:29:49,2016-06-11 21:46:45,1,-74.002113342285156,40.740215301513672,-73.981460571289063,40.765460968017578,N,1016 +id2199208,2,2016-01-18 19:37:26,2016-01-18 19:40:07,1,-73.990455627441406,40.756420135498047,-73.981414794921875,40.759815216064453,N,161 +id3335807,2,2016-02-19 08:48:43,2016-02-19 08:58:47,1,-74.006393432617188,40.732978820800781,-74.013542175292969,40.715461730957031,N,604 +id2610383,1,2016-03-11 11:50:14,2016-03-11 11:59:19,1,-73.963714599609375,40.763607025146484,-73.975349426269531,40.752140045166016,N,545 +id2800529,2,2016-01-07 22:37:27,2016-01-07 22:49:05,1,-73.952880859375,40.783195495605469,-73.978431701660156,40.76800537109375,N,698 +id1746292,2,2016-03-18 18:34:52,2016-03-18 18:37:42,2,-73.992828369140625,40.758258819580078,-74.003501892089844,40.747661590576172,N,170 +id0137921,1,2016-04-27 02:54:21,2016-04-27 03:06:14,1,-74.004058837890625,40.751907348632812,-73.977348327636719,40.749622344970703,N,713 +id3802734,2,2016-04-08 16:38:17,2016-04-08 16:46:01,1,-73.973030090332031,40.785358428955078,-73.967948913574219,40.792289733886719,N,464 +id2305026,1,2016-01-06 20:20:07,2016-01-06 20:25:51,1,-73.988914489746094,40.769184112548828,-73.969558715820312,40.761268615722656,N,344 +id0278120,2,2016-01-25 01:25:44,2016-01-25 01:35:10,1,-73.988250732421875,40.764301300048828,-73.969017028808594,40.756050109863281,N,566 +id2663670,2,2016-01-03 12:11:09,2016-01-03 12:25:07,1,-73.870841979980469,40.773750305175781,-73.941917419433594,40.717681884765625,N,838 +id2319504,1,2016-05-19 02:12:00,2016-05-19 02:14:40,1,-73.922943115234375,40.706485748291016,-73.930503845214844,40.698825836181641,N,160 +id3870960,2,2016-06-03 23:03:13,2016-06-03 23:13:04,1,-73.965034484863281,40.759883880615234,-73.984878540039063,40.7322998046875,N,591 +id1081617,2,2016-03-17 17:50:40,2016-03-17 17:50:44,3,-73.978614807128906,40.745124816894531,-73.978340148925781,40.745456695556641,N,4 +id1510304,1,2016-05-04 11:21:26,2016-05-04 11:37:58,1,-73.962188720703125,40.778854370117188,-73.988395690917969,40.764106750488281,N,992 +id1457717,1,2016-03-01 19:25:25,2016-03-01 19:29:29,1,-73.97100830078125,40.758129119873047,-73.978073120117187,40.748897552490234,N,244 +id2718849,2,2016-02-16 16:41:43,2016-02-16 17:08:23,1,-73.998359680175781,40.724830627441406,-73.969291687011719,40.761993408203125,N,1600 +id1908746,2,2016-01-09 17:23:26,2016-01-09 17:35:09,1,-73.979888916015625,40.752388000488281,-73.990203857421875,40.766826629638672,N,703 +id0347686,2,2016-06-23 08:44:18,2016-06-23 08:58:36,1,-73.962127685546875,40.773059844970703,-73.96734619140625,40.761138916015625,N,858 +id3628510,2,2016-05-01 13:15:11,2016-05-01 13:31:17,5,-73.974388122558594,40.762470245361328,-73.98577880859375,40.72930908203125,N,966 +id3655029,2,2016-06-26 22:08:53,2016-06-26 22:29:21,1,-73.993309020996094,40.747051239013672,-73.942131042480469,40.837600708007813,N,1228 +id2057840,1,2016-05-06 08:43:24,2016-05-06 09:04:04,1,-73.992988586425781,40.768352508544922,-73.971427917480469,40.756328582763672,N,1240 +id0865372,1,2016-05-09 09:52:00,2016-05-09 10:02:27,1,-73.974822998046875,40.756446838378906,-73.968734741210937,40.769916534423828,N,627 +id2357760,1,2016-02-09 22:24:33,2016-02-09 22:36:06,1,-73.984275817871094,40.780376434326172,-74.00390625,40.741920471191406,N,693 +id1245867,2,2016-02-19 23:22:10,2016-02-19 23:26:36,6,-73.971832275390625,40.753841400146484,-73.962211608886719,40.759120941162109,N,266 +id1274111,2,2016-02-04 18:59:59,2016-02-04 19:09:16,1,-73.976478576660156,40.745868682861328,-73.984130859375,40.757480621337891,N,557 +id2087812,2,2016-03-05 23:43:30,2016-03-06 00:05:11,1,-73.985031127929688,40.719100952148438,-73.9996337890625,40.743759155273438,N,1301 +id1796487,2,2016-02-02 09:03:05,2016-02-02 09:23:56,1,-73.982101440429688,40.768089294433594,-73.981430053710938,40.752559661865234,N,1251 +id2299164,1,2016-01-16 20:42:03,2016-01-16 21:06:51,1,-73.96185302734375,40.762950897216797,-74.009033203125,40.715522766113281,Y,1488 +id0114608,2,2016-04-20 13:48:15,2016-04-20 14:05:06,1,-73.977317810058594,40.738590240478516,-73.993980407714844,40.741729736328125,N,1011 +id3004454,1,2016-06-25 14:35:57,2016-06-25 15:08:04,2,-74.014007568359375,40.711318969726563,-73.990776062011719,40.7578125,N,1927 +id2034229,2,2016-06-29 06:54:06,2016-06-29 07:04:48,1,-73.966621398925781,40.757190704345703,-73.984611511230469,40.755390167236328,N,642 +id1959168,2,2016-06-23 21:17:10,2016-06-23 21:24:35,5,-73.982719421386719,40.745021820068359,-73.969741821289063,40.762619018554687,N,445 +id1710540,1,2016-03-31 18:04:57,2016-03-31 18:19:16,1,-73.995620727539062,40.759529113769531,-73.993690490722656,40.742336273193359,N,859 +id2440688,1,2016-06-04 23:18:18,2016-06-04 23:53:18,1,-73.978843688964844,40.777359008789063,-73.999122619628906,40.675575256347656,N,2100 +id2120983,1,2016-02-27 10:48:14,2016-02-27 11:00:53,2,-73.95001220703125,40.771961212158203,-73.977218627929688,40.758468627929687,N,759 +id2149212,1,2016-04-09 20:12:31,2016-04-09 20:21:33,1,-73.983634948730469,40.765773773193359,-73.994781494140625,40.752784729003906,N,542 +id0176667,1,2016-02-19 23:29:15,2016-02-19 23:55:50,1,-73.989578247070313,40.726200103759766,-73.970985412597656,40.793251037597656,N,1595 +id3065704,1,2016-04-23 13:27:11,2016-04-23 13:45:53,1,-73.972770690917969,40.764064788818359,-73.948966979980469,40.724395751953125,N,1122 +id1901950,2,2016-03-03 08:50:38,2016-03-03 08:56:35,5,-74.007225036621094,40.715908050537109,-73.996147155761719,40.725151062011719,N,357 +id2244605,1,2016-06-15 09:36:21,2016-06-15 09:49:18,1,-73.949043273925781,40.781620025634766,-73.963592529296875,40.761604309082031,N,777 +id0189877,2,2016-04-09 15:24:41,2016-04-09 15:50:31,6,-73.969352722167969,40.760829925537109,-74.00482177734375,40.746719360351563,N,1550 +id0065810,1,2016-01-11 02:30:17,2016-01-11 02:42:26,1,-74.002052307128906,40.719165802001953,-74.002937316894531,40.718425750732422,N,729 +id0872805,2,2016-03-31 11:54:11,2016-03-31 12:16:23,1,-73.862907409667969,40.768783569335938,-73.9600830078125,40.716487884521484,N,1332 +id2263701,1,2016-02-03 14:37:09,2016-02-03 14:49:03,1,-74.000534057617188,40.717658996582031,-73.987449645996094,40.722469329833984,N,714 +id2051966,2,2016-02-27 00:01:22,2016-02-27 00:32:23,1,-74.004493713378906,40.74163818359375,-74.002349853515625,40.745288848876953,N,1861 +id0644510,1,2016-02-10 06:08:38,2016-02-10 06:13:21,1,-73.980987548828125,40.764736175537109,-73.97845458984375,40.752494812011719,N,283 +id0662713,2,2016-01-24 18:25:36,2016-01-24 18:28:20,1,-73.951896667480469,40.777690887451172,-73.959312438964844,40.767360687255859,N,164 +id3647395,2,2016-05-23 11:39:09,2016-05-23 12:05:21,1,-73.961662292480469,40.802131652832031,-73.95477294921875,40.777809143066406,N,1572 +id0938042,2,2016-01-12 21:07:54,2016-01-12 21:14:02,1,-73.9803466796875,40.744277954101563,-73.9913330078125,40.749187469482422,N,368 +id0319738,1,2016-04-28 19:40:43,2016-04-28 19:50:29,1,-74.002845764160156,40.74462890625,-73.986671447753906,40.768222808837891,N,586 +id1116671,2,2016-03-14 07:21:32,2016-03-14 07:42:43,1,-73.9610595703125,40.801971435546875,-73.974906921386719,40.755641937255859,N,1271 +id3813651,1,2016-05-14 18:40:57,2016-05-14 18:47:38,2,-73.970413208007813,40.75616455078125,-73.952804565429687,40.780502319335937,N,401 +id2065805,2,2016-04-14 22:40:27,2016-04-14 22:55:29,3,-73.949195861816406,40.695652008056641,-73.986228942871094,40.718044281005859,N,902 +id3678049,1,2016-01-16 03:57:10,2016-01-16 04:13:13,2,-73.987640380859375,40.719753265380859,-73.88909912109375,40.758953094482422,N,963 +id1710231,1,2016-01-04 13:24:24,2016-01-04 13:29:42,1,-74.005470275878906,40.72564697265625,-74.011589050292969,40.713535308837891,N,318 +id0449826,2,2016-02-24 08:00:26,2016-02-24 08:11:51,1,-73.973533630371094,40.755863189697266,-73.973602294921875,40.764839172363281,N,685 +id1796680,1,2016-04-05 16:37:48,2016-04-05 17:07:19,1,-73.870964050292969,40.773738861083984,-73.952651977539063,40.732566833496094,N,1771 +id1581187,2,2016-04-26 19:56:05,2016-04-26 20:02:17,2,-73.954483032226563,40.764041900634766,-73.952438354492188,40.768608093261719,N,372 +id2877748,1,2016-03-31 08:28:32,2016-03-31 08:36:11,1,-73.959648132324219,40.779624938964844,-73.982856750488281,40.774116516113281,N,459 +id3236251,1,2016-04-03 01:35:54,2016-04-03 01:52:38,1,-73.997161865234375,40.722118377685547,-73.99017333984375,40.762413024902344,N,1004 +id3801289,2,2016-04-22 09:38:40,2016-04-22 09:53:56,1,-73.994590759277344,40.751728057861328,-73.984642028808594,40.764316558837891,N,916 +id1826124,2,2016-03-29 09:36:02,2016-03-29 09:41:16,1,-73.956840515136719,40.766712188720703,-73.94683837890625,40.772453308105469,N,314 +id1020774,2,2016-05-27 20:17:03,2016-05-27 20:23:12,2,-73.9658203125,40.790309906005859,-73.979202270507812,40.789588928222656,N,369 +id1093555,2,2016-04-07 21:21:12,2016-04-07 21:41:00,1,-73.990859985351563,40.749660491943359,-73.979072570800781,40.789409637451172,N,1188 +id3548536,1,2016-05-14 11:03:06,2016-05-14 11:07:28,3,-73.992042541503906,40.748973846435547,-74.00390625,40.733448028564453,N,262 +id3130021,2,2016-05-09 18:33:05,2016-05-09 18:45:42,1,-74.007148742675781,40.729591369628906,-73.986053466796875,40.722568511962891,N,757 +id1749871,1,2016-01-19 20:50:14,2016-01-19 20:51:42,1,-74.008804321289063,40.718181610107422,-74.010383605957031,40.713771820068359,N,88 +id0916726,1,2016-02-28 09:40:04,2016-02-28 09:50:13,1,-73.973991394042969,40.741970062255859,-73.996955871582031,40.728603363037109,N,609 +id0043845,1,2016-06-09 14:45:51,2016-06-09 14:46:35,1,-73.949043273925781,40.776554107666016,-73.951278686523438,40.777374267578125,N,44 +id2763620,1,2016-03-11 20:40:24,2016-03-11 20:46:15,1,-73.811302185058594,40.693042755126953,-73.783035278320312,40.646484375,N,351 +id2653598,1,2016-04-11 18:02:07,2016-04-11 18:11:14,1,-73.954254150390625,40.770206451416016,-73.964691162109375,40.755550384521484,N,547 +id0142990,2,2016-02-01 18:08:57,2016-02-01 18:17:33,3,-73.971817016601563,40.783878326416016,-73.986053466796875,40.777011871337891,N,516 +id1560062,2,2016-03-27 08:09:18,2016-03-27 08:12:01,5,-73.971405029296875,40.763805389404297,-73.967414855957031,40.760116577148438,N,163 +id2406283,1,2016-05-15 03:12:11,2016-05-15 03:19:03,1,-73.950126647949219,40.826515197753906,-73.938301086425781,40.846778869628906,N,412 +id0833677,2,2016-06-19 14:55:27,2016-06-19 15:00:23,2,-73.962081909179688,40.779300689697266,-73.972549438476562,40.780960083007813,N,296 +id1393666,2,2016-01-30 19:23:30,2016-01-30 19:26:30,2,-73.97747802734375,40.753227233886719,-73.981521606445313,40.759136199951172,N,180 +id0326099,2,2016-06-27 05:08:13,2016-06-27 05:32:01,1,-73.98193359375,40.778049468994141,-73.864944458007812,40.770393371582031,N,1428 +id2293944,1,2016-04-02 03:29:10,2016-04-02 03:41:17,1,-73.982765197753906,40.731460571289063,-73.990348815917969,40.756168365478516,N,727 +id2006589,2,2016-06-07 19:44:00,2016-06-07 20:16:13,1,-73.872894287109375,40.773994445800781,-73.991348266601563,40.747047424316406,N,1933 +id3296488,2,2016-03-30 18:47:52,2016-03-30 19:13:02,6,-73.973800659179688,40.747550964355469,-73.972427368164062,40.788330078125,N,1510 +id1665365,2,2016-06-09 18:39:09,2016-06-09 19:10:55,1,-73.9915771484375,40.749919891357422,-73.966712951660156,40.804290771484375,N,1906 +id0178373,2,2016-01-11 19:07:07,2016-01-11 19:22:11,1,-73.983993530273437,40.746349334716797,-74.004676818847656,40.728561401367188,N,904 +id3812893,2,2016-02-29 14:31:18,2016-02-29 14:43:11,2,-73.951972961425781,40.786380767822266,-73.977363586425781,40.784698486328125,N,713 +id3332339,2,2016-05-15 21:43:07,2016-05-15 22:08:00,1,-73.989631652832031,40.665229797363281,-73.978439331054687,40.729591369628906,N,1493 +id0384866,2,2016-04-23 21:58:36,2016-04-23 22:11:50,1,-73.968048095703125,40.762275695800781,-73.951446533203125,40.759811401367188,N,794 +id3973461,2,2016-03-16 19:10:16,2016-03-16 19:27:19,1,-73.978103637695313,40.762969970703125,-73.956527709960937,40.768089294433594,N,1023 +id1053837,2,2016-04-25 07:04:23,2016-04-25 07:09:47,5,-73.978790283203125,40.744911193847656,-73.973136901855469,40.759349822998047,N,324 +id0967473,1,2016-03-27 21:13:28,2016-03-27 21:26:36,1,-73.863792419433594,40.770000457763672,-73.926963806152344,40.736637115478516,N,788 +id0042785,2,2016-04-07 00:57:33,2016-04-07 00:59:19,2,-73.994377136230469,40.726306915283203,-73.989898681640625,40.733383178710938,N,106 +id0409961,2,2016-03-13 12:11:42,2016-03-13 12:22:01,1,-73.966850280761719,40.757068634033203,-73.990287780761719,40.745441436767578,N,619 +id2925767,1,2016-02-15 21:53:40,2016-02-15 22:05:10,1,-73.969505310058594,40.757747650146484,-73.952888488769531,40.785964965820313,N,690 +id2756951,1,2016-02-25 11:12:15,2016-02-25 11:18:36,1,-73.985992431640625,40.746875762939453,-73.995658874511719,40.744060516357422,N,381 +id2365027,2,2016-06-12 21:31:08,2016-06-12 22:16:42,2,-73.79022216796875,40.6439208984375,-73.991477966308594,40.750450134277344,N,2734 +id3961294,1,2016-01-04 12:26:20,2016-01-04 12:32:53,1,-73.998313903808594,40.735393524169922,-74.004058837890625,40.747940063476562,N,393 +id1199352,2,2016-01-10 14:07:05,2016-01-10 14:11:06,6,-73.991462707519531,40.731609344482422,-73.9984130859375,40.722911834716797,N,241 +id2935838,2,2016-06-15 14:35:04,2016-06-15 14:43:57,1,-73.978927612304688,40.737159729003906,-73.982398986816406,40.745601654052734,N,533 +id2782897,1,2016-05-06 14:10:08,2016-05-06 14:52:18,1,-73.975700378417969,40.740524291992188,-73.789840698242188,40.647018432617188,N,2530 +id3807292,2,2016-03-04 15:35:25,2016-03-04 15:50:07,5,-73.954879760742187,40.780300140380859,-73.969100952148438,40.760238647460937,N,882 +id3299044,1,2016-05-19 08:00:15,2016-05-19 08:18:00,1,-73.962150573730469,40.795341491699219,-73.972023010253906,40.765392303466797,N,1065 +id3546514,1,2016-03-13 15:10:04,2016-03-13 15:15:50,1,-73.976325988769531,40.765464782714844,-73.981559753417969,40.778369903564453,N,346 +id3441606,2,2016-06-17 15:19:14,2016-06-17 15:28:17,4,-73.973518371582031,40.784820556640625,-73.956230163574219,40.784313201904297,N,543 +id2533114,1,2016-04-01 20:01:51,2016-04-01 20:12:10,1,-73.999679565429688,40.719657897949219,-73.992973327636719,40.728050231933594,N,619 +id2975939,1,2016-02-01 16:39:42,2016-02-01 16:50:33,1,-73.988334655761719,40.746654510498047,-73.994972229003906,40.759441375732422,N,651 +id2430232,2,2016-01-08 05:39:20,2016-01-08 05:49:24,1,-73.980857849121094,40.782047271728516,-73.942863464355469,40.840667724609375,N,604 +id3621051,1,2016-01-16 14:46:10,2016-01-16 14:54:28,1,-73.986419677734375,40.750553131103516,-73.995353698730469,40.737686157226562,N,498 +id0543132,1,2016-05-07 13:41:42,2016-05-07 13:47:28,1,-73.994224548339844,40.738777160644531,-73.9893798828125,40.746368408203125,N,346 +id3972334,1,2016-04-17 17:06:00,2016-04-17 17:21:13,3,-73.956596374511719,40.7669677734375,-73.9708251953125,40.759189605712891,N,913 +id2017404,1,2016-06-24 01:45:51,2016-06-24 01:54:37,2,-73.999893188476562,40.730270385742188,-73.977470397949219,40.747146606445313,N,526 +id2540789,1,2016-05-22 16:51:24,2016-05-22 16:58:08,1,-73.9854736328125,40.735527038574219,-73.975120544433594,40.752071380615234,N,404 +id3131712,1,2016-02-23 17:22:10,2016-02-23 17:33:25,1,-73.991928100585938,40.764671325683594,-73.972015380859375,40.794330596923828,N,675 +id1613637,1,2016-04-25 12:34:59,2016-04-25 12:51:09,1,-73.96820068359375,40.786960601806641,-73.96978759765625,40.7685546875,N,970 +id1836286,1,2016-06-21 17:07:29,2016-06-21 17:24:21,1,-73.984092712402344,40.747406005859375,-74.008834838867188,40.719985961914063,N,1012 +id2373810,1,2016-05-19 18:14:35,2016-05-19 18:23:24,1,-73.975234985351563,40.765163421630859,-73.982872009277344,40.77203369140625,N,529 +id1165832,1,2016-03-12 16:22:33,2016-03-12 16:39:53,2,-73.977203369140625,40.742958068847656,-73.975547790527344,40.765312194824219,N,1040 +id1546059,1,2016-01-18 08:49:58,2016-01-18 09:05:18,1,-73.975341796875,40.764999389648438,-73.998672485351563,40.7601318359375,N,920 +id2420401,2,2016-04-19 17:06:42,2016-04-19 17:12:24,1,-73.973793029785156,40.784671783447266,-73.967521667480469,40.802700042724609,N,342 +id3517584,1,2016-03-10 19:57:35,2016-03-10 20:07:46,1,-74.010017395019531,40.73431396484375,-73.980361938476562,40.783962249755859,N,611 +id1965750,1,2016-02-06 06:25:55,2016-02-06 06:55:58,1,-73.781997680664063,40.644634246826172,-73.985145568847656,40.718906402587891,N,1803 +id0431324,1,2016-01-25 00:21:45,2016-01-25 00:34:34,1,-73.992477416992188,40.724842071533203,-74.005813598632812,40.743892669677734,N,769 +id0807556,2,2016-03-09 20:58:12,2016-03-09 21:06:27,1,-73.998062133789063,40.725898742675781,-73.978530883789063,40.720130920410156,N,495 +id3547093,2,2016-02-07 12:16:06,2016-02-07 12:36:13,1,-73.956306457519531,40.7843017578125,-73.992088317871094,40.749469757080078,N,1207 +id2222269,1,2016-04-02 01:31:09,2016-04-02 01:50:03,2,-73.98931884765625,40.723114013671875,-73.993492126464844,40.758655548095703,N,1134 +id0551805,2,2016-06-22 08:09:13,2016-06-22 08:15:31,5,-73.98016357421875,40.647090911865234,-73.985862731933594,40.661701202392578,N,378 +id0153600,2,2016-05-01 18:46:24,2016-05-01 18:56:32,2,-73.983184814453125,40.738666534423828,-73.983360290527344,40.752395629882813,N,608 +id1934991,2,2016-01-21 09:31:32,2016-01-21 09:42:55,1,-73.9609375,40.7694091796875,-73.97149658203125,40.750530242919922,N,683 +id1337889,2,2016-06-20 15:52:28,2016-06-20 16:18:03,2,-73.977569580078125,40.757949829101563,-73.971221923828125,40.8006591796875,N,1535 +id3746319,1,2016-05-09 22:42:20,2016-05-09 22:53:02,1,-73.968269348144531,40.755474090576172,-73.991165161132813,40.765251159667969,N,642 +id0858872,1,2016-01-01 01:22:34,2016-01-01 01:30:30,2,-74.005073547363281,40.721752166748047,-74.040580749511719,40.729869842529297,N,476 +id0398879,2,2016-06-19 15:51:12,2016-06-19 16:17:23,1,-73.987510681152344,40.768775939941406,-73.870864868164062,40.773952484130859,N,1571 +id1477102,2,2016-02-14 13:47:54,2016-02-14 13:51:25,1,-73.994598388671875,40.750350952148438,-74.004707336425781,40.752498626708984,N,211 +id1329548,2,2016-05-01 15:23:35,2016-05-01 15:30:58,5,-73.977462768554688,40.742473602294922,-73.972572326660156,40.753166198730469,N,443 +id3454446,2,2016-05-15 21:04:18,2016-05-15 21:07:43,1,-73.989158630371094,40.741527557373047,-73.994346618652344,40.737411499023438,N,205 +id3631807,2,2016-06-23 23:34:30,2016-06-23 23:39:04,5,-73.986541748046875,40.756328582763672,-73.976661682128906,40.754810333251953,N,274 +id3787186,1,2016-06-23 09:57:15,2016-06-23 10:28:46,2,-73.970085144042969,40.799518585205078,-74.011260986328125,40.702342987060547,N,1891 +id1191593,2,2016-04-29 23:53:30,2016-04-30 00:06:29,1,-73.9969482421875,40.720378875732422,-73.986473083496094,40.755722045898437,N,779 +id2519961,1,2016-01-16 00:58:18,2016-01-16 01:18:59,1,-73.972846984863281,40.784343719482422,-74.015464782714844,40.715766906738281,N,1241 +id3509697,1,2016-04-11 03:10:20,2016-04-11 03:21:36,1,-74.005813598632812,40.736717224121094,-73.980224609375,40.780475616455078,N,676 +id0853064,1,2016-06-30 18:53:13,2016-06-30 19:02:23,1,-73.983291625976562,40.766292572021484,-73.973014831542969,40.790958404541016,N,550 +id0022949,1,2016-04-14 09:19:18,2016-04-14 09:51:48,1,-73.981025695800781,40.755893707275391,-73.861640930175781,40.768272399902344,N,1950 +id0299431,1,2016-01-24 17:52:35,2016-01-24 18:08:41,1,-74.007987976074219,40.737514495849609,-73.981163024902344,40.729457855224609,N,966 +id3599272,2,2016-03-02 13:44:09,2016-03-02 14:10:06,3,-73.863601684570313,40.769630432128906,-73.970039367675781,40.764759063720703,N,1557 +id3198337,2,2016-03-30 16:33:53,2016-03-30 17:22:57,5,-73.776817321777344,40.645263671875,-73.953384399414063,40.819465637207031,N,2944 +id3809557,2,2016-05-20 17:39:57,2016-05-20 18:04:51,2,-73.975852966308594,40.788082122802734,-73.974853515625,40.753047943115234,N,1494 +id3006014,1,2016-06-23 09:04:18,2016-06-23 09:11:18,1,-73.936843872070313,40.754596710205078,-73.948173522949219,40.747451782226563,N,420 +id3246584,2,2016-01-14 16:29:23,2016-01-14 16:39:20,1,-73.973289489746094,40.754379272460938,-73.996246337890625,40.732460021972656,N,597 +id3787750,2,2016-06-12 02:06:01,2016-06-12 02:22:09,1,-73.985832214355469,40.758258819580078,-73.924522399902344,40.743640899658203,N,968 +id2146747,1,2016-02-16 21:34:28,2016-02-16 21:41:30,1,-73.975791931152344,40.754367828369141,-73.97222900390625,40.747337341308594,N,422 +id2645970,2,2016-04-15 13:58:30,2016-04-15 14:05:49,1,-73.983963012695312,40.743629455566406,-73.993011474609375,40.729728698730469,N,439 +id1209764,2,2016-02-14 03:47:34,2016-02-14 03:57:06,1,-74.006294250488281,40.733516693115234,-73.982917785644531,40.722728729248047,N,572 +id0810276,1,2016-03-20 03:46:03,2016-03-20 03:49:38,1,-73.989509582519531,40.762245178222656,-73.982345581054687,40.768474578857422,N,215 +id3139263,1,2016-03-23 19:27:09,2016-03-23 19:38:23,1,-73.9722900390625,40.753597259521484,-73.977226257324219,40.776790618896484,N,674 +id1968542,1,2016-06-11 00:39:31,2016-06-11 00:47:11,2,-73.992294311523438,40.721015930175781,-73.996429443359375,40.737937927246094,N,460 +id3498862,2,2016-03-12 22:04:34,2016-03-12 22:11:45,1,-73.985946655273438,40.746681213378906,-73.987091064453125,40.733528137207031,N,431 +id0205102,2,2016-05-08 21:18:52,2016-05-08 21:41:35,2,-73.993728637695313,40.741291046142578,-73.948532104492188,40.809158325195312,N,1363 +id2649261,1,2016-06-30 16:08:55,2016-06-30 17:14:10,2,-73.997154235839844,40.742042541503906,-73.963401794433594,40.75775146484375,N,3915 +id3421978,2,2016-01-18 11:48:40,2016-01-18 12:01:40,1,-74.005439758300781,40.739490509033203,-74.000602722167969,40.758159637451172,N,780 +id2622771,1,2016-06-27 10:51:15,2016-06-27 11:02:19,1,-74.009597778320313,40.709663391113281,-73.989891052246094,40.699935913085938,N,664 +id2605198,2,2016-04-14 21:17:22,2016-04-14 21:21:23,1,-73.986679077148438,40.761470794677734,-73.9925537109375,40.766654968261719,N,241 +id2500256,1,2016-01-19 04:38:41,2016-01-19 05:16:31,1,-73.992485046386719,40.745033264160156,-73.790939331054687,40.646602630615234,N,2270 +id0222353,1,2016-05-12 18:37:24,2016-05-12 18:47:54,1,-73.995216369628906,40.728015899658203,-74.00091552734375,40.741275787353516,N,630 +id1160843,2,2016-06-24 11:52:32,2016-06-24 12:01:58,5,-73.987106323242187,40.738910675048828,-73.973838806152344,40.756740570068359,N,566 +id1896460,2,2016-04-04 16:02:51,2016-04-04 16:07:34,1,-73.977371215820313,40.750530242919922,-73.985374450683594,40.747482299804688,N,283 +id0435432,2,2016-02-10 18:41:47,2016-02-10 18:47:31,1,-73.956825256347656,40.768070220947266,-73.95709228515625,40.774711608886719,N,344 +id1227887,2,2016-04-22 16:08:09,2016-04-22 16:34:18,1,-73.989639282226563,40.752105712890625,-73.970718383789063,40.761428833007812,N,1569 +id0713904,2,2016-02-19 08:33:37,2016-02-19 08:40:23,1,-73.987373352050781,40.694438934326172,-73.993049621582031,40.703266143798828,N,406 +id1440028,2,2016-05-24 15:55:09,2016-05-24 16:12:08,1,-73.990287780761719,40.751510620117187,-74.00787353515625,40.712711334228516,N,1019 +id2083577,2,2016-03-28 08:03:07,2016-03-28 08:06:58,5,-73.979988098144531,40.781288146972656,-73.979660034179688,40.79058837890625,N,231 +id3899111,1,2016-01-09 01:04:56,2016-01-09 01:30:51,1,-73.941291809082031,40.753494262695313,-74.004890441894531,40.721073150634766,N,1555 +id2001547,2,2016-05-29 13:49:55,2016-05-29 13:53:28,1,-73.992996215820313,40.758655548095703,-74.000808715820313,40.762722015380859,N,213 +id2061668,2,2016-05-03 14:13:01,2016-05-03 14:22:06,1,-73.961029052734375,40.775081634521484,-73.9697265625,40.762611389160156,N,545 +id1512523,1,2016-01-15 23:32:50,2016-01-15 23:51:07,1,-73.968246459960937,40.788883209228516,-73.978683471679688,40.715923309326172,N,1097 +id3698506,1,2016-04-05 18:38:52,2016-04-05 18:58:32,3,-73.974143981933594,40.791645050048828,-73.983444213867188,40.762424468994141,N,1180 +id1939583,2,2016-02-01 06:32:03,2016-02-01 06:37:49,2,-73.99755859375,40.756729125976563,-73.979911804199219,40.752250671386719,N,346 +id0385086,2,2016-01-16 02:27:56,2016-01-16 02:35:01,1,-73.906341552734375,40.753398895263672,-73.927032470703125,40.755290985107422,N,425 +id2101934,1,2016-02-09 21:29:48,2016-02-09 21:37:40,2,-73.994606018066406,40.750263214111328,-73.989288330078125,40.768238067626953,N,472 +id0527543,1,2016-02-26 15:40:40,2016-02-26 16:00:32,1,-73.961265563964844,40.760223388671875,-73.993087768554688,40.737052917480469,N,1192 +id3343803,1,2016-01-22 17:27:46,2016-01-22 17:43:26,1,-74.000747680664062,40.731967926025391,-73.972953796386719,40.751876831054688,N,940 +id0470895,1,2016-01-11 21:53:05,2016-01-11 22:07:38,1,-74.007453918457031,40.704784393310547,-73.935798645019531,40.812000274658203,N,873 +id2593129,1,2016-03-06 17:45:27,2016-03-06 17:52:40,1,-73.981056213378906,40.767730712890625,-73.984268188476562,40.759357452392578,N,433 +id2978285,2,2016-06-12 23:48:04,2016-06-12 23:55:28,1,-73.96923828125,40.761131286621094,-73.982337951660156,40.770660400390625,N,444 +id2102523,2,2016-05-07 23:45:45,2016-05-08 00:00:14,5,-73.95654296875,40.771377563476563,-74.012344360351563,40.701602935791016,N,869 +id2477562,2,2016-05-28 23:06:29,2016-05-28 23:18:20,5,-73.97515869140625,40.765678405761719,-73.957443237304688,40.800373077392578,N,711 +id1958439,2,2016-04-12 09:17:37,2016-04-12 09:37:01,1,-73.982383728027344,40.777679443359375,-73.971580505371094,40.763889312744141,N,1164 +id3870659,2,2016-03-01 20:12:33,2016-03-01 20:25:49,1,-73.980255126953125,40.751544952392578,-73.946868896484375,40.776191711425781,N,796 +id2586750,2,2016-05-28 11:32:10,2016-05-28 11:40:52,1,-73.981719970703125,40.773643493652344,-73.994483947753906,40.761268615722656,N,522 +id1533144,1,2016-03-17 23:14:10,2016-03-17 23:24:42,1,-73.978187561035156,40.741798400878906,-73.95465087890625,40.769718170166016,N,632 +id3355929,2,2016-03-05 18:11:23,2016-03-05 18:34:47,1,-73.863037109375,40.7694091796875,-73.954246520996094,40.784191131591797,N,1404 +id2032699,2,2016-05-12 17:55:32,2016-05-12 18:31:10,1,-74.00421142578125,40.747531890869141,-73.956062316894531,40.784561157226563,N,2138 +id3807216,2,2016-04-14 08:38:04,2016-04-14 09:06:19,2,-73.957801818847656,40.765419006347656,-74.013900756835938,40.714809417724609,N,1695 +id0025172,2,2016-04-17 19:31:40,2016-04-17 19:47:35,1,-74.009910583496094,40.735443115234375,-73.989990234375,40.726367950439453,N,955 +id2621823,1,2016-04-01 06:14:15,2016-04-01 06:17:14,2,-73.960289001464844,40.762062072753906,-73.959548950195312,40.773479461669922,N,179 +id2906091,2,2016-06-01 09:35:29,2016-06-01 09:54:20,5,-73.998367309570312,40.760669708251953,-73.985603332519531,40.748008728027344,N,1131 +id0390601,1,2016-06-08 11:02:15,2016-06-08 11:41:37,1,-73.986297607421875,40.758232116699219,-73.861732482910156,40.768375396728516,N,2362 +id1406801,1,2016-03-26 17:05:51,2016-03-26 17:22:16,1,-74.010551452636719,40.709632873535156,-73.96453857421875,40.764171600341797,N,985 +id2267351,2,2016-01-11 14:22:21,2016-01-11 14:27:04,6,-73.977783203125,40.778900146484375,-73.985023498535156,40.768451690673828,N,283 +id0159449,1,2016-02-07 17:03:00,2016-02-07 17:17:53,1,-73.970977783203125,40.751651763916016,-73.989051818847656,40.761100769042969,N,893 +id1832712,2,2016-05-03 22:10:35,2016-05-03 22:17:20,1,-73.981201171875,40.763931274414063,-73.981163024902344,40.764030456542969,N,405 +id2396462,2,2016-03-16 15:07:32,2016-03-16 16:21:49,2,-73.981864929199219,40.761764526367188,-73.788078308105469,40.641391754150391,N,4457 +id2836420,1,2016-06-08 13:40:45,2016-06-08 14:04:20,3,-73.962638854980469,40.763179779052734,-73.988044738769531,40.722850799560547,N,1415 +id3856839,1,2016-02-16 10:29:04,2016-02-16 10:44:48,1,-73.98211669921875,40.772560119628906,-73.952133178710937,40.784187316894531,N,944 +id0337411,1,2016-05-27 10:02:27,2016-05-27 10:10:37,1,-73.971275329589844,40.756103515625,-73.968650817871094,40.751724243164063,N,490 +id1348804,1,2016-01-09 14:29:19,2016-01-09 14:50:15,1,-74.009063720703125,40.704036712646484,-73.97247314453125,40.782379150390625,N,1256 +id2047035,2,2016-05-01 03:29:51,2016-05-01 03:39:42,1,-73.987464904785156,40.720039367675781,-73.993888854980469,40.746486663818359,N,591 +id1024092,1,2016-04-07 08:36:24,2016-04-07 09:07:06,1,-74.01513671875,40.714267730712891,-73.971771240234375,40.762104034423828,N,1842 +id2846523,2,2016-05-10 23:31:08,2016-05-10 23:51:20,1,-73.973731994628906,40.764106750488281,-73.998268127441406,40.719657897949219,N,1212 +id1023525,2,2016-05-20 03:53:12,2016-05-20 04:01:11,1,-74.003913879394531,40.734153747558594,-73.988113403320313,40.746650695800781,N,479 +id3125489,2,2016-06-02 13:12:18,2016-06-02 13:17:33,1,-73.992401123046875,40.749519348144531,-74.003860473632813,40.74761962890625,N,315 +id2882615,1,2016-06-09 22:59:37,2016-06-09 23:05:44,2,-73.976470947265625,40.744045257568359,-73.989509582519531,40.731868743896484,N,367 +id3555363,1,2016-05-28 10:04:03,2016-05-28 10:11:52,1,-73.961326599121094,40.769954681396484,-73.97900390625,40.75531005859375,N,469 +id3489740,2,2016-01-21 11:55:23,2016-01-21 12:01:49,1,-73.987800598144531,40.728488922119141,-73.996307373046875,40.725379943847656,N,386 +id1513363,2,2016-04-22 15:09:02,2016-04-22 15:31:26,5,-73.98956298828125,40.752513885498047,-73.974388122558594,40.731941223144531,N,1344 +id0442983,2,2016-04-27 17:24:55,2016-04-27 17:29:27,1,-73.945968627929688,40.773429870605469,-73.952201843261719,40.781238555908203,N,272 +id0866088,2,2016-06-21 22:44:40,2016-06-21 23:20:00,3,-73.863395690917969,40.770030975341797,-73.998779296875,40.714340209960938,N,2120 +id2288562,2,2016-04-04 14:31:21,2016-04-04 14:51:47,1,-73.989166259765625,40.758098602294922,-74.016616821289063,40.704776763916016,N,1226 +id2985392,1,2016-02-19 19:01:51,2016-02-19 19:18:40,1,-73.968856811523438,40.756671905517578,-73.996109008789063,40.759357452392578,N,1009 +id2868447,2,2016-05-30 11:13:20,2016-05-30 11:28:06,1,-73.981437683105469,40.750514984130859,-73.943435668945313,40.810382843017578,N,886 +id1178246,1,2016-06-14 13:31:16,2016-06-14 14:23:58,1,-73.863380432128906,40.770179748535156,-73.982246398925781,40.761833190917969,N,3162 +id2998825,2,2016-02-15 17:32:24,2016-02-15 17:36:13,2,-73.975257873535156,40.761199951171875,-73.977546691894531,40.753490447998047,N,229 +id2709451,2,2016-04-25 09:52:00,2016-04-25 09:57:51,1,-73.986557006835938,40.730110168457031,-73.997360229492188,40.726428985595703,N,351 +id1199419,2,2016-03-19 14:28:24,2016-03-19 14:35:48,2,-73.988899230957031,40.763809204101562,-74.000267028808594,40.748058319091797,N,444 +id1226515,2,2016-04-23 15:47:40,2016-04-23 15:59:54,1,-73.970497131347656,40.752067565917969,-73.985183715820313,40.738948822021484,N,734 +id2220792,2,2016-02-07 23:44:57,2016-02-07 23:55:25,1,-73.986869812011719,40.719539642333984,-74.006271362304688,40.725738525390625,N,628 +id2037873,2,2016-04-20 12:54:17,2016-04-20 13:23:44,1,-74.011283874511719,40.703170776367188,-73.97174072265625,40.762325286865234,N,1767 +id0735984,2,2016-03-27 19:07:59,2016-03-27 19:26:32,4,-73.994102478027344,40.751220703125,-74.015998840332031,40.715511322021484,N,1113 +id0502219,1,2016-01-27 22:45:06,2016-01-27 22:51:45,1,-73.979286193847656,40.753318786621094,-73.964027404785156,40.773635864257812,N,399 +id1433691,2,2016-06-19 13:22:40,2016-06-19 13:29:26,1,-73.984901428222656,40.768459320068359,-73.990066528320312,40.774799346923828,N,406 +id0327944,1,2016-03-14 15:11:47,2016-03-14 15:21:53,1,-73.986236572265625,40.734687805175781,-74.008682250976562,40.738136291503906,N,606 +id3193831,1,2016-04-28 14:06:31,2016-04-28 14:28:36,1,-73.980712890625,40.782146453857422,-73.973312377929688,40.763862609863281,N,1325 +id2192882,1,2016-01-21 00:35:20,2016-01-21 00:47:59,1,-73.979522705078125,40.753002166748047,-73.957008361816406,40.745735168457031,N,759 +id0021604,2,2016-05-26 21:58:36,2016-05-26 22:01:11,3,-73.966171264648438,40.762298583984375,-73.958099365234375,40.773258209228516,N,155 +id0410341,1,2016-02-08 18:37:31,2016-02-08 18:51:26,1,-73.983917236328125,40.755496978759766,-73.991188049316406,40.750411987304687,N,835 +id2793966,1,2016-01-29 00:03:37,2016-01-29 00:08:26,2,-73.9884033203125,40.759128570556641,-73.973602294921875,40.763908386230469,N,289 +id2269044,2,2016-06-28 15:31:44,2016-06-28 15:37:01,2,-73.964935302734375,40.772491455078125,-73.955253601074219,40.777076721191406,N,317 +id3933648,2,2016-05-15 00:47:17,2016-05-15 00:55:32,1,-73.973457336425781,40.763771057128906,-73.962379455566406,40.760578155517578,N,495 +id3603291,1,2016-02-01 11:40:16,2016-02-01 11:46:56,2,-73.96820068359375,40.767082214355469,-73.959762573242188,40.770786285400391,N,400 +id1917356,1,2016-05-24 10:45:34,2016-05-24 11:13:56,1,-73.980369567871094,40.730609893798828,-73.960792541503906,40.769599914550781,N,1702 +id1240106,2,2016-01-10 20:14:56,2016-01-10 20:22:32,2,-74.009208679199219,40.716800689697266,-73.996116638183594,40.742618560791016,N,456 +id3418378,1,2016-04-23 02:25:38,2016-04-23 02:43:15,1,-73.984573364257813,40.739974975585937,-74.000732421875,40.677005767822266,N,1057 +id0685585,2,2016-04-22 21:33:21,2016-04-22 21:47:30,1,-73.99407958984375,40.75128173828125,-73.961372375488281,40.775138854980469,N,849 +id1814956,2,2016-04-08 04:20:11,2016-04-08 04:28:56,1,-73.984107971191406,40.743438720703125,-73.978752136230469,40.765098571777344,N,525 +id2099301,2,2016-01-19 12:17:41,2016-01-19 12:23:30,5,-73.973892211914063,40.747661590576172,-73.985694885253906,40.731174468994141,N,349 +id3662872,1,2016-06-28 15:10:53,2016-06-28 15:22:54,1,-73.989250183105469,40.739700317382813,-74.002960205078125,40.749519348144531,N,721 +id2912287,2,2016-02-21 07:39:23,2016-02-21 07:47:39,1,-73.977508544921875,40.759227752685547,-73.959808349609375,40.758575439453125,N,496 +id0637094,2,2016-01-19 17:37:32,2016-01-19 17:48:14,1,-73.971519470214844,40.783618927001953,-73.952102661132813,40.784481048583984,N,642 +id3272637,2,2016-05-05 18:41:39,2016-05-05 18:55:37,1,-73.959861755371094,40.713901519775391,-73.988059997558594,40.718681335449219,N,838 +id1894457,2,2016-02-15 12:23:08,2016-02-15 12:41:32,1,-73.9498291015625,40.772357940673828,-73.982276916503906,40.768650054931641,N,1104 +id3646318,2,2016-04-08 20:44:28,2016-04-08 20:54:20,2,-74.001762390136719,40.735610961914063,-74.000030517578125,40.723541259765625,N,592 +id1328589,2,2016-06-14 09:36:50,2016-06-14 09:54:37,6,-73.973243713378906,40.755443572998047,-73.983688354492187,40.734256744384766,N,1067 +id2433397,2,2016-02-24 22:42:34,2016-02-24 22:52:52,1,-73.988616943359375,40.758720397949219,-73.96649169921875,40.789218902587891,N,618 +id3609828,1,2016-03-16 06:50:21,2016-03-16 06:57:47,1,-73.980323791503906,40.734550476074219,-73.969032287597656,40.760875701904297,N,446 +id1526658,1,2016-04-01 08:32:23,2016-04-01 08:43:47,4,-73.987403869628906,40.755519866943359,-73.9981689453125,40.740543365478516,N,684 +id3894477,1,2016-03-12 00:36:15,2016-03-12 00:49:09,1,-74.002914428710938,40.733482360839844,-73.988578796386719,40.716438293457031,N,774 +id3527223,2,2016-06-07 18:22:51,2016-06-07 18:27:43,1,-73.96832275390625,40.759311676025391,-73.957069396972656,40.766410827636719,N,292 +id3793611,1,2016-03-29 20:02:44,2016-03-29 20:14:31,1,-73.977607727050781,40.757774353027344,-73.998817443847656,40.730655670166016,N,707 +id3865320,2,2016-04-19 11:24:41,2016-04-19 11:45:48,2,-73.95428466796875,40.766353607177734,-73.975860595703125,40.755683898925781,N,1267 +id2613492,1,2016-02-22 17:48:11,2016-02-22 17:58:27,1,-74.005393981933594,40.727779388427734,-74.007720947265625,40.703083038330078,N,616 +id0886553,1,2016-04-28 22:46:14,2016-04-28 22:59:00,1,-73.978309631347656,40.763912200927734,-73.999893188476562,40.761360168457031,N,766 +id3780856,2,2016-02-06 23:41:50,2016-02-06 23:53:57,1,-73.990745544433594,40.72821044921875,-74.009773254394531,40.714145660400391,N,727 +id2274549,2,2016-05-07 10:12:10,2016-05-07 10:14:05,1,-73.966545104980469,40.799346923828125,-73.960868835449219,40.806968688964844,N,115 +id0817896,1,2016-03-04 16:58:53,2016-03-04 17:09:15,1,-73.991439819335938,40.750194549560547,-73.979690551757812,40.733333587646484,N,622 +id0792667,2,2016-06-15 14:20:08,2016-06-15 14:42:38,1,-73.985687255859375,40.743888854980469,-74.007537841796875,40.740871429443359,N,1350 +id3685453,1,2016-03-10 19:25:49,2016-03-10 19:43:28,1,-73.982063293457031,40.767650604248047,-73.952178955078125,40.772857666015625,N,1059 +id2033380,1,2016-04-20 06:53:58,2016-04-20 07:01:57,1,-73.990585327148438,40.740070343017578,-73.974983215332031,40.755832672119141,N,479 +id0341922,2,2016-03-16 10:40:03,2016-03-16 10:46:33,2,-73.972816467285156,40.761993408203125,-73.976028442382813,40.763683319091797,N,390 +id3017357,2,2016-03-21 18:33:53,2016-03-21 18:37:37,2,-73.982887268066406,40.744880676269531,-73.97802734375,40.751132965087891,N,224 +id1599127,2,2016-03-24 20:54:02,2016-03-24 20:59:20,6,-73.965583801269531,40.800525665283203,-73.958457946777344,40.820468902587891,N,318 +id0472342,2,2016-02-16 20:06:53,2016-02-16 20:20:41,5,-73.978584289550781,40.757278442382812,-73.9544677734375,40.763847351074219,N,828 +id3697691,1,2016-03-31 23:31:20,2016-03-31 23:51:51,1,-74.001541137695312,40.730693817138672,-73.974990844726563,40.759754180908203,N,1231 +id0729612,1,2016-06-21 01:07:02,2016-06-21 01:23:41,1,-73.789970397949219,40.646556854248047,-73.937881469726563,40.589859008789062,N,999 +id0803296,2,2016-06-06 09:50:43,2016-06-06 09:51:34,1,-74.003883361816406,40.731235504150391,-74.0025634765625,40.730472564697266,N,51 +id0583104,2,2016-02-28 09:15:51,2016-02-28 09:18:50,1,-73.955352783203125,40.776988983154297,-73.9544677734375,40.783241271972656,N,179 +id1014973,2,2016-02-21 12:34:57,2016-02-21 12:43:38,1,-73.951911926269531,40.786228179931641,-73.952362060546875,40.803272247314453,N,521 +id0045842,1,2016-03-23 16:48:13,2016-03-23 17:02:22,2,-73.9808349609375,40.759994506835937,-73.955436706542969,40.768566131591797,N,849 +id1510249,1,2016-02-12 17:24:31,2016-02-12 17:37:54,1,-73.955429077148438,40.788719177246094,-73.982742309570313,40.771812438964844,N,803 +id1204161,2,2016-06-15 04:49:51,2016-06-15 04:53:56,6,-73.976539611816406,40.765048980712891,-73.982627868652344,40.765449523925781,N,245 +id0742803,2,2016-03-11 16:26:55,2016-03-11 16:35:12,2,-73.958808898925781,40.775100708007813,-73.974273681640625,40.789951324462891,N,497 +id3599963,1,2016-02-01 23:38:43,2016-02-02 00:15:23,1,-73.984420776367188,40.748729705810547,-73.782051086425781,40.692848205566406,N,2200 +id2521085,2,2016-02-10 12:50:09,2016-02-10 12:56:35,1,-73.937629699707031,40.828960418701172,-73.954147338867188,40.811309814453125,N,386 +id3137314,2,2016-03-22 20:39:57,2016-03-22 20:52:10,1,-73.991722106933594,40.742382049560547,-73.974128723144531,40.731182098388672,N,733 +id2196730,1,2016-06-12 19:08:04,2016-06-12 19:17:53,1,-73.98101806640625,40.759956359863281,-73.953872680664063,40.775188446044922,N,589 +id0002201,2,2016-05-30 14:02:26,2016-05-30 14:17:11,5,-74.012741088867188,40.706031799316406,-73.991050720214844,40.714889526367188,N,885 +id2459517,1,2016-05-13 11:48:32,2016-05-13 11:56:22,1,-74.00433349609375,40.747711181640625,-73.990821838378906,40.741928100585937,N,470 +id3328631,2,2016-04-21 06:37:34,2016-04-21 06:48:26,1,-73.973350524902344,40.765060424804688,-73.996078491210937,40.738761901855469,N,652 +id1837849,1,2016-06-16 07:55:16,2016-06-16 08:01:39,1,-73.972412109375,40.796573638916016,-73.976249694824219,40.786464691162109,N,383 +id0470190,2,2016-01-16 23:29:07,2016-01-16 23:53:28,3,-73.977272033691406,40.764041900634766,-73.959266662597656,40.816726684570313,N,1461 +id2845673,2,2016-05-22 02:10:56,2016-05-22 02:22:59,1,-74.001296997070313,40.731021881103516,-73.97076416015625,40.760898590087891,N,723 +id2040713,1,2016-03-06 10:59:05,2016-03-06 11:09:13,1,-73.992843627929687,40.748737335205078,-73.983871459960937,40.725654602050781,N,608 +id3463715,2,2016-03-04 01:27:58,2016-03-04 01:35:33,1,-73.999771118164063,40.726680755615234,-73.9757080078125,40.731098175048828,N,455 +id1777088,1,2016-05-11 11:42:12,2016-05-11 11:55:52,1,-73.978401184082031,40.783065795898438,-73.952430725097656,40.778362274169922,N,820 +id2808750,2,2016-03-04 08:45:00,2016-03-04 08:52:00,6,-73.977607727050781,40.763778686523438,-73.980400085449219,40.758979797363281,N,420 +id0295408,1,2016-06-21 19:32:31,2016-06-21 19:51:11,1,-73.982101440429688,40.745956420898438,-74.010482788085937,40.718879699707031,N,1120 +id1487234,1,2016-04-08 15:45:55,2016-04-08 16:10:21,1,-73.993354797363281,40.747314453125,-73.991477966308594,40.719467163085937,N,1466 +id2498449,2,2016-03-06 01:09:09,2016-03-06 01:16:48,1,-73.958023071289062,40.769298553466797,-73.976600646972656,40.743778228759766,N,459 +id2749533,2,2016-06-04 13:53:51,2016-06-04 14:06:36,1,-73.988739013671875,40.774059295654297,-73.983673095703125,40.749858856201172,N,765 +id2644518,1,2016-01-20 20:23:46,2016-01-20 20:32:01,2,-73.967582702636719,40.765964508056641,-73.963645935058594,40.758602142333984,N,495 +id0160001,1,2016-06-17 12:53:32,2016-06-17 13:01:43,1,-73.981773376464844,40.779495239257813,-73.978683471679688,40.766635894775391,N,491 +id1861035,1,2016-05-12 17:58:10,2016-05-12 18:02:08,1,-74.000907897949219,40.727413177490234,-74.001335144042969,40.719818115234375,N,238 +id3261685,2,2016-02-04 14:58:39,2016-02-04 15:20:18,2,-73.991966247558594,40.738521575927734,-74.0028076171875,40.760543823242188,N,1299 +id0438535,1,2016-03-02 22:53:56,2016-03-02 23:03:11,1,-73.994552612304687,40.719329833984375,-73.978927612304688,40.741081237792969,N,555 +id2453812,2,2016-03-05 10:51:54,2016-03-05 10:54:50,1,-73.958671569824219,40.775276184082031,-73.961540222167969,40.766345977783203,N,176 +id0559858,2,2016-02-27 00:30:08,2016-02-27 00:32:28,6,-73.954071044921875,40.7747802734375,-73.952095031738281,40.7774658203125,N,140 +id1358659,1,2016-01-11 20:24:05,2016-01-11 20:47:01,2,-73.979095458984375,40.752960205078125,-73.999359130859375,40.723800659179688,N,1376 +id3986796,2,2016-04-28 09:45:01,2016-04-28 10:17:30,3,-73.997268676757813,40.736682891845703,-73.96722412109375,40.77252197265625,N,1949 +id0246927,2,2016-02-08 16:09:23,2016-02-08 16:26:09,1,-73.959144592285156,40.777240753173828,-73.975120544433594,40.752117156982422,N,1006 +id1252179,1,2016-06-09 21:12:11,2016-06-09 21:27:27,1,-73.989402770996094,40.774391174316406,-73.989898681640625,40.762176513671875,N,916 +id2980809,2,2016-01-14 23:10:40,2016-01-14 23:21:46,1,-74.015365600585937,40.714363098144531,-73.995063781738281,40.74993896484375,N,666 +id0854481,1,2016-04-05 13:09:51,2016-04-05 13:17:29,1,-73.986709594726563,40.728282928466797,-73.990852355957031,40.738941192626953,N,458 +id3503439,2,2016-04-20 23:17:03,2016-04-20 23:26:15,1,-73.968238830566406,40.762149810791016,-73.977867126464844,40.742240905761719,N,552 +id1170219,2,2016-04-01 15:17:07,2016-04-01 15:36:55,1,-74.00592041015625,40.740131378173828,-73.991249084472656,40.754840850830078,N,1188 +id1856144,2,2016-05-02 15:11:49,2016-05-02 15:47:18,2,-74.008331298828125,40.705589294433594,-73.976646423339844,40.790390014648438,N,2129 +id3864147,1,2016-06-26 05:04:36,2016-06-26 05:29:28,1,-74.002922058105469,40.733482360839844,-73.915802001953125,40.675041198730469,N,1492 +id0768885,1,2016-06-15 21:30:01,2016-06-15 21:36:40,1,-73.951164245605469,40.782585144042969,-73.952644348144531,40.768276214599609,N,399 +id3537774,1,2016-02-25 19:20:51,2016-02-25 19:49:08,1,-74.001724243164062,40.746868133544922,-73.99005126953125,40.713996887207031,N,1697 +id0918945,2,2016-04-27 10:54:10,2016-04-27 10:54:40,6,-73.965972900390625,40.771045684814453,-73.965667724609375,40.771472930908203,N,30 +id1780944,1,2016-01-15 14:08:26,2016-01-15 14:15:54,4,-73.963066101074219,40.772251129150391,-73.957084655761719,40.783332824707031,N,448 +id1722757,1,2016-03-28 15:23:00,2016-03-28 15:30:07,1,-73.9552001953125,40.780364990234375,-73.942245483398438,40.789562225341797,N,427 +id2894380,1,2016-04-29 22:31:43,2016-04-29 22:49:03,1,-73.982185363769531,40.759819030761719,-73.989845275878906,40.751930236816406,N,1040 +id0053985,2,2016-04-18 23:15:11,2016-04-18 23:27:52,2,-73.987052917480469,40.720661163330078,-73.937911987304688,40.706401824951172,N,761 +id0121101,2,2016-04-20 13:42:27,2016-04-20 13:50:53,6,-74.0091552734375,40.729728698730469,-73.996841430664062,40.729854583740234,N,506 +id0427746,2,2016-04-19 14:08:41,2016-04-19 14:15:32,1,-73.980224609375,40.750907897949219,-73.974159240722656,40.755111694335938,N,411 +id2471787,2,2016-01-12 16:23:44,2016-01-12 16:43:56,1,-73.980743408203125,40.759731292724609,-73.979728698730469,40.752468109130859,N,1212 +id1869502,2,2016-02-09 10:58:28,2016-02-09 11:10:35,1,-73.971351623535156,40.76361083984375,-73.967597961425781,40.753578186035156,N,727 +id3897744,2,2016-01-29 16:07:48,2016-01-29 16:27:04,1,-73.946273803710938,40.789268493652344,-73.907600402832031,40.806621551513672,N,1156 +id0176928,2,2016-03-22 13:27:35,2016-03-22 13:35:36,5,-73.976829528808594,40.750339508056641,-73.988052368164063,40.743659973144531,N,481 +id1931484,1,2016-04-10 18:29:07,2016-04-10 18:55:59,1,-73.990608215332031,40.756252288818359,-73.988197326660156,40.721958160400391,N,1612 +id3518329,2,2016-03-11 19:52:19,2016-03-11 20:09:23,5,-73.992210388183594,40.758899688720703,-74.003013610839844,40.718070983886719,N,1024 +id0405469,2,2016-05-04 01:10:37,2016-05-04 01:35:32,1,-73.964431762695312,40.807498931884766,-73.977119445800781,40.722591400146484,N,1495 +id0918200,1,2016-05-10 17:55:30,2016-05-10 18:07:33,1,-73.956024169921875,40.767974853515625,-73.947097778320312,40.790122985839844,N,723 +id2753366,1,2016-06-09 06:47:49,2016-06-09 06:57:03,1,-73.963104248046875,40.777568817138672,-73.96429443359375,40.756832122802734,N,554 +id2784494,2,2016-02-17 02:21:36,2016-02-17 02:31:52,1,-73.984573364257813,40.754550933837891,-74.000411987304688,40.722541809082031,N,616 +id2093468,1,2016-02-04 20:34:36,2016-02-04 21:25:23,2,-73.87310791015625,40.774101257324219,-73.988792419433594,40.736698150634766,N,3047 +id2505008,1,2016-01-28 03:03:38,2016-01-28 03:13:23,1,-73.980949401855469,40.759311676025391,-73.952239990234375,40.778369903564453,N,585 +id3795926,1,2016-06-07 10:42:44,2016-06-07 11:41:41,1,-73.863899230957031,40.769912719726562,-74.004707336425781,40.741966247558594,N,3537 +id1093418,2,2016-02-20 13:04:11,2016-02-20 13:13:22,1,-73.982383728027344,40.76824951171875,-73.969917297363281,40.786518096923828,N,551 +id3705257,1,2016-05-16 15:03:39,2016-05-16 15:07:38,1,-73.9857177734375,40.741428375244141,-73.983345031738281,40.7344970703125,N,239 +id0818062,1,2016-05-27 16:30:38,2016-05-27 16:38:36,1,-73.951904296875,40.787609100341797,-73.965957641601562,40.769515991210938,N,478 +id2934026,1,2016-04-03 22:04:32,2016-04-03 22:14:50,1,-73.990409851074219,40.755935668945313,-73.973915100097656,40.747268676757813,N,618 +id0458610,2,2016-02-28 13:39:02,2016-02-28 14:06:29,1,-74.001457214355469,40.730998992919922,-73.983314514160156,40.781631469726563,N,1647 +id0873996,2,2016-04-25 21:14:26,2016-04-25 21:23:49,1,-73.956787109375,40.771141052246094,-73.970848083496094,40.791751861572266,N,563 +id3785922,2,2016-04-14 23:16:04,2016-04-14 23:33:19,1,-73.985382080078125,40.754878997802734,-74.000282287597656,40.730331420898438,N,1035 +id0862125,1,2016-06-24 18:58:09,2016-06-24 19:05:30,2,-74.004043579101563,40.725166320800781,-74.007591247558594,40.739303588867188,N,441 +id1790827,1,2016-02-04 11:50:44,2016-02-04 11:58:00,1,-73.962135314941406,40.763511657714844,-73.973793029785156,40.749454498291016,N,436 +id1415352,2,2016-03-23 21:45:42,2016-03-23 22:04:16,5,-73.98193359375,40.775047302246094,-73.986129760742188,40.7344970703125,N,1114 +id3208305,1,2016-04-18 17:14:43,2016-04-18 18:08:11,2,-73.781959533691406,40.644622802734375,-73.990921020507812,40.748565673828125,N,3208 +id2603856,1,2016-03-05 11:21:56,2016-03-05 11:26:26,1,-73.975357055664063,40.752357482910156,-73.984764099121094,40.74530029296875,N,270 +id0312318,2,2016-05-08 10:23:47,2016-05-08 11:04:49,5,-73.986366271972656,40.750110626220703,-73.952476501464844,40.803550720214844,N,2462 +id3980019,1,2016-03-04 08:02:52,2016-03-04 08:13:16,1,-74.008026123046875,40.705085754394531,-74.001312255859375,40.715618133544922,N,624 +id1680576,1,2016-04-17 03:19:45,2016-04-17 03:21:51,1,-73.98822021484375,40.764602661132813,-73.997268676757813,40.75628662109375,N,126 +id3837515,1,2016-06-17 00:24:13,2016-06-17 00:32:55,1,-73.988777160644531,40.76348876953125,-73.998046875,40.741188049316406,N,522 +id0559809,2,2016-04-16 16:32:26,2016-04-16 16:41:12,6,-73.984458923339844,40.764839172363281,-73.975837707519531,40.788196563720703,N,526 +id2514591,2,2016-01-27 21:06:58,2016-01-27 21:10:33,4,-73.967971801757813,40.759025573730469,-73.956840515136719,40.766944885253906,N,215 +id0884079,2,2016-01-17 00:28:29,2016-01-17 00:39:06,1,-74.00146484375,40.730777740478516,-73.976226806640625,40.764801025390625,N,637 +id3704144,2,2016-06-30 11:27:20,2016-06-30 11:38:51,5,-73.970672607421875,40.795791625976563,-73.961532592773438,40.775260925292969,N,691 +id0818207,1,2016-04-23 13:08:25,2016-04-23 13:37:33,1,-73.872970581054687,40.774143218994141,-73.957870483398438,40.821025848388672,N,1748 +id2623309,2,2016-03-14 18:21:41,2016-03-14 18:24:22,1,-73.990081787109375,40.729171752929688,-73.98809814453125,40.723968505859375,N,161 +id3728641,1,2016-01-11 19:44:08,2016-01-11 20:00:29,1,-74.009773254394531,40.721488952636719,-73.962852478027344,40.763111114501953,N,981 +id3535562,1,2016-02-19 17:34:30,2016-02-19 17:42:15,1,-73.964881896972656,40.801692962646484,-73.982742309570313,40.776374816894531,N,465 +id3398839,2,2016-04-18 18:11:19,2016-04-18 18:31:07,1,-73.979164123535156,40.751235961914063,-73.980766296386719,40.764324188232422,N,1188 +id0576756,1,2016-03-17 23:23:06,2016-03-17 23:34:37,1,-73.982940673828125,40.739025115966797,-73.951377868652344,40.770885467529297,N,691 +id0073984,2,2016-02-10 13:42:41,2016-02-10 13:53:59,6,-73.955337524414063,40.773139953613281,-73.971603393554688,40.750831604003906,N,678 +id0637245,1,2016-03-24 18:58:19,2016-03-24 19:04:45,1,-73.978546142578125,40.736736297607422,-73.97711181640625,40.751457214355469,N,386 +id2955853,2,2016-01-31 13:02:35,2016-01-31 13:16:25,1,-73.962310791015625,40.779071807861328,-73.971321105957031,40.755428314208984,N,830 +id3473389,2,2016-06-07 19:49:12,2016-06-07 19:57:04,6,-74.005287170410156,40.720111846923828,-73.994338989257813,40.720348358154297,N,472 +id1853000,2,2016-03-20 01:05:34,2016-03-20 01:19:18,1,-73.946990966796875,40.711311340332031,-73.957611083984375,40.730010986328125,N,824 +id1846369,2,2016-02-04 10:48:33,2016-02-04 11:01:36,1,-73.9571533203125,40.780033111572266,-73.957992553710938,40.760368347167969,N,783 +id0184655,2,2016-01-28 09:48:23,2016-01-28 09:55:33,5,-73.967323303222656,40.788181304931641,-73.952224731445312,40.786418914794922,N,430 +id3752121,2,2016-05-08 18:08:43,2016-05-08 18:33:36,1,-74.002510070800781,40.724868774414063,-73.960472106933594,40.763088226318359,N,1493 +id3206517,2,2016-03-20 19:11:12,2016-03-20 19:24:31,1,-73.990013122558594,40.756603240966797,-74.007217407226563,40.739421844482422,N,799 +id1835809,1,2016-03-27 06:34:00,2016-03-27 06:50:45,1,-74.009109497070313,40.710823059082031,-73.965263366699219,40.765895843505859,N,1005 +id2932706,1,2016-05-31 14:43:36,2016-05-31 15:00:11,2,-73.973251342773438,40.762763977050781,-73.961082458496094,40.777797698974609,N,995 +id3630922,2,2016-01-07 16:28:12,2016-01-07 16:32:14,1,-73.938613891601563,40.795917510986328,-73.947273254394531,40.79266357421875,N,242 +id0600477,1,2016-02-28 08:49:47,2016-02-28 09:02:21,2,-73.986427307128906,40.740222930908203,-74.016670227050781,40.704910278320313,N,754 +id0393871,2,2016-01-25 14:22:14,2016-01-25 14:32:56,1,-73.965995788574219,40.795589447021484,-73.9796142578125,40.786396026611328,N,642 +id0392932,1,2016-03-01 12:57:42,2016-03-01 13:07:27,1,-73.963226318359375,40.774700164794922,-73.970787048339844,40.765346527099609,N,585 +id2491675,1,2016-04-03 15:57:00,2016-04-03 16:05:40,1,-73.982536315917969,40.772357940673828,-73.981285095214844,40.758647918701172,N,520 +id0506863,2,2016-01-07 12:33:24,2016-01-07 12:55:01,1,-73.975242614746094,40.757534027099609,-73.872039794921875,40.774280548095703,N,1297 +id2047194,1,2016-05-26 00:02:20,2016-05-26 00:10:36,1,-73.952430725097656,40.777175903320312,-73.968711853027344,40.754623413085938,N,496 +id1236061,2,2016-05-08 02:50:16,2016-05-08 02:54:44,5,-74.006843566894531,40.741531372070313,-73.998367309570312,40.744476318359375,N,268 +id0541185,2,2016-03-03 10:49:16,2016-03-03 11:16:27,2,-73.982551574707031,40.762588500976562,-73.983131408691406,40.735771179199219,N,1631 +id2805434,2,2016-04-08 23:14:21,2016-04-08 23:48:17,1,-73.98101806640625,40.753444671630859,-74.028900146484375,40.630157470703125,N,2036 +id1581134,2,2016-01-14 21:37:10,2016-01-14 21:39:24,1,-73.988838195800781,40.737213134765625,-73.9796142578125,40.732795715332031,N,134 +id0423117,2,2016-03-06 16:38:57,2016-03-06 16:55:19,6,-73.991096496582031,40.751251220703125,-73.990081787109375,40.732650756835938,N,982 +id0612538,2,2016-04-01 18:22:03,2016-04-01 18:40:13,1,-73.988807678222656,40.777721405029297,-73.974632263183594,40.756660461425781,N,1090 +id1924933,2,2016-02-05 18:19:11,2016-02-05 18:26:27,1,-74.00714111328125,40.730281829833984,-73.993637084960938,40.730659484863281,N,436 +id2592467,2,2016-02-12 13:09:04,2016-02-12 13:20:05,1,-73.986747741699219,40.745460510253906,-74.003646850585937,40.733493804931641,N,661 +id3266619,2,2016-04-19 14:28:37,2016-04-19 14:51:10,1,-73.953025817871094,40.788616180419922,-73.973175048828125,40.764446258544922,N,1353 +id1435044,2,2016-01-31 23:33:51,2016-01-31 23:38:47,1,-73.976287841796875,40.780738830566406,-73.962577819824219,40.778228759765625,N,296 +id3313289,2,2016-02-11 04:58:36,2016-02-11 05:28:07,2,-73.987838745117188,40.749889373779297,-73.790046691894531,40.646888732910156,N,1771 +id0353747,2,2016-01-13 09:39:04,2016-01-13 09:52:41,1,-73.984886169433594,40.74530029296875,-73.975685119628906,40.755165100097656,N,817 +id2428520,1,2016-05-08 01:28:29,2016-05-08 01:59:06,2,-73.992813110351563,40.743831634521484,-74.183021545410156,40.687934875488281,N,1837 +id1182615,1,2016-04-29 00:31:15,2016-04-29 00:34:53,1,-73.990104675292969,40.724834442138672,-73.985527038574219,40.723194122314453,N,218 +id1161790,1,2016-06-28 20:08:50,2016-06-28 20:14:43,1,-73.992561340332031,40.743644714355469,-73.990425109863281,40.731533050537109,N,353 +id2519643,1,2016-05-25 07:59:15,2016-05-25 08:04:38,1,-73.986885070800781,40.734043121337891,-73.971298217773438,40.755367279052734,N,323 +id3180998,2,2016-06-05 09:44:58,2016-06-05 09:50:53,1,-73.952217102050781,40.777565002441406,-73.964874267578125,40.759780883789063,N,355 +id3241468,1,2016-06-29 09:32:38,2016-06-29 09:52:11,1,-73.99224853515625,40.743858337402344,-73.973197937011719,40.753147125244141,N,1173 +id3758625,2,2016-03-30 16:25:32,2016-03-30 16:35:15,1,-73.981376647949219,40.768310546875,-73.954032897949219,40.787078857421875,N,583 +id0690205,2,2016-06-17 16:00:25,2016-06-17 16:03:34,1,-73.980972290039063,40.781658172607422,-73.97125244140625,40.782737731933594,N,189 +id1360982,1,2016-01-02 09:39:17,2016-01-02 09:42:04,1,-73.959915161132813,40.773468017578125,-73.9642333984375,40.773830413818359,N,167 +id2296003,1,2016-01-28 20:22:56,2016-01-28 20:39:15,2,-74.001602172851562,40.739578247070313,-73.981758117675781,40.732040405273438,N,979 +id0593316,1,2016-03-22 20:41:28,2016-03-22 20:56:27,1,-73.872749328613281,40.773956298828125,-73.949531555175781,40.796241760253906,N,899 +id0103581,1,2016-03-23 20:31:53,2016-03-23 20:47:41,2,-74.006057739257813,40.735195159912109,-73.989669799804688,40.691097259521484,N,948 +id3240583,2,2016-01-01 02:58:30,2016-01-01 03:06:52,2,-73.970687866210938,40.751834869384766,-73.994522094726563,40.752109527587891,N,502 +id2744314,2,2016-02-10 12:49:48,2016-02-10 13:05:46,1,-73.989761352539063,40.738662719726563,-73.985679626464844,40.752670288085938,N,958 +id1780115,2,2016-03-05 22:00:02,2016-03-05 22:11:00,2,-73.993423461914062,40.730968475341797,-74.004539489746094,40.740871429443359,N,658 +id2458026,1,2016-04-04 19:44:06,2016-04-04 19:48:38,1,-73.965690612792969,40.762931823730469,-73.949813842773438,40.785476684570313,N,272 +id0697685,1,2016-03-27 12:55:53,2016-03-27 13:04:09,1,-73.962203979492188,40.778892517089844,-73.970932006835938,40.761611938476563,N,496 +id0053220,1,2016-05-01 16:55:56,2016-05-01 17:02:38,1,-73.985214233398437,40.744579315185547,-73.973922729492188,40.758510589599609,N,402 +id0381782,1,2016-01-12 18:03:31,2016-01-12 18:14:30,1,-73.997352600097656,40.724094390869141,-73.99688720703125,40.744735717773437,N,659 +id2852588,2,2016-03-22 00:23:29,2016-03-22 00:30:01,1,-73.973808288574219,40.751758575439453,-73.987358093261719,40.760631561279297,N,392 +id3043841,2,2016-01-04 12:54:45,2016-01-04 12:59:39,5,-73.988456726074219,40.748870849609375,-73.985595703125,40.757900238037109,N,294 +id2993841,2,2016-05-22 10:19:31,2016-05-22 10:39:04,1,-73.979316711425781,40.747768402099609,-73.782943725585937,40.648796081542969,N,1173 +id0041447,2,2016-01-14 23:21:34,2016-01-14 23:24:57,3,-73.9835205078125,40.738330841064453,-73.974449157714844,40.750560760498047,N,203 +id2754498,2,2016-03-04 08:26:45,2016-03-04 08:42:34,1,-73.955596923828125,40.785236358642578,-73.982177734375,40.769203186035156,N,949 +id3934511,1,2016-03-30 16:29:09,2016-03-30 16:37:28,1,-73.963150024414063,40.793972015380859,-73.955024719238281,40.780208587646484,N,499 +id3105354,1,2016-03-27 14:00:44,2016-03-27 14:07:00,1,-73.978889465332031,40.7723388671875,-73.982765197753906,40.760124206542969,N,376 +id1380701,1,2016-06-18 09:36:13,2016-06-18 10:13:31,1,-73.783538818359375,40.648567199707031,-73.97607421875,40.7540283203125,N,2238 +id0536943,1,2016-03-19 23:55:51,2016-03-20 00:05:33,1,-73.982833862304688,40.735298156738281,-73.991767883300781,40.722255706787109,N,582 +id3695118,1,2016-01-30 10:42:16,2016-01-30 10:49:46,1,-73.972618103027344,40.744827270507813,-73.977821350097656,40.762874603271484,N,450 +id0632586,1,2016-01-27 08:40:52,2016-01-27 09:14:07,1,-74.016738891601563,40.708213806152344,-73.968452453613281,40.757209777832031,N,1995 +id1444372,2,2016-04-15 11:38:31,2016-04-15 11:54:16,1,-73.98187255859375,40.752048492431641,-74.001350402832031,40.756389617919922,N,945 +id1839366,2,2016-06-11 20:34:32,2016-06-11 20:42:03,1,-73.987480163574219,40.738590240478516,-73.984809875488281,40.747779846191406,N,451 +id2439080,2,2016-03-04 10:58:53,2016-03-04 11:04:52,4,-73.960006713867188,40.782131195068359,-73.961669921875,40.776809692382813,N,359 +id2403110,2,2016-02-12 19:44:38,2016-02-12 19:54:53,2,-73.980735778808594,40.74774169921875,-73.959587097167969,40.771121978759766,N,615 +id1567796,1,2016-06-21 09:09:38,2016-06-21 09:37:52,1,-73.999649047851563,40.719715118408203,-73.978248596191406,40.754222869873047,N,1694 +id1557637,2,2016-02-06 11:56:34,2016-02-06 12:07:46,2,-73.979530334472656,40.758598327636719,-73.991828918457031,40.754486083984375,N,672 +id3198390,1,2016-06-16 05:35:13,2016-06-16 05:40:13,3,-73.971328735351563,40.797561645507813,-73.961753845214844,40.805362701416016,N,300 +id2055235,1,2016-03-23 12:41:19,2016-03-23 13:01:57,1,-73.994049072265625,40.750846862792969,-73.97509765625,40.755527496337891,N,1238 +id3956085,2,2016-02-04 20:21:22,2016-02-04 20:41:06,1,-73.97601318359375,40.748836517333984,-74.007560729980469,40.714786529541016,N,1184 +id1989539,1,2016-04-08 23:18:28,2016-04-08 23:26:51,1,-73.968582153320313,40.752368927001953,-73.978630065917969,40.747982025146484,N,503 +id3698152,2,2016-02-10 19:45:31,2016-02-10 19:56:56,3,-73.959220886230469,40.775131225585938,-73.960983276367188,40.81005859375,N,685 +id2723557,2,2016-02-13 21:49:53,2016-02-13 22:02:09,1,-73.981277465820313,40.725002288818359,-74.005157470703125,40.740802764892578,N,736 +id3993867,1,2016-03-30 21:02:51,2016-03-30 21:06:57,1,-73.987571716308594,40.744144439697266,-73.992172241210937,40.749275207519531,N,246 +id1456204,2,2016-02-08 22:23:16,2016-02-08 22:50:59,1,-73.984344482421875,40.757740020751953,-73.879203796386719,40.881916046142578,N,1663 +id0505877,1,2016-04-25 02:57:48,2016-04-25 03:23:01,1,-74.009292602539063,40.713642120361328,-73.937423706054687,40.812973022460937,N,1513 +id0514881,2,2016-01-10 18:27:53,2016-01-10 18:35:36,2,-73.998336791992188,40.745258331298828,-73.993011474609375,40.761959075927734,N,463 +id2525373,1,2016-06-08 22:45:16,2016-06-08 22:50:39,1,-73.981956481933594,40.752510070800781,-73.981742858886719,40.758338928222656,N,323 +id1076175,2,2016-05-04 19:05:57,2016-05-04 19:11:17,1,-73.994102478027344,40.751018524169922,-74.005172729492188,40.740619659423828,N,320 +id1502752,2,2016-03-19 09:44:57,2016-03-19 09:50:35,1,-73.99127197265625,40.735038757324219,-73.991119384765625,40.749618530273438,N,338 +id3099698,1,2016-06-16 23:05:03,2016-06-16 23:27:39,2,-73.994300842285156,40.726554870605469,-74.010841369628906,40.717086791992188,N,1356 +id2757664,1,2016-02-22 17:47:14,2016-02-22 18:00:02,1,-73.998580932617188,40.745094299316406,-73.988555908203125,40.764015197753906,N,768 +id2397086,2,2016-06-04 14:22:56,2016-06-04 14:25:31,6,-73.982139587402344,40.774738311767578,-73.980758666992188,40.782428741455078,N,155 +id2885991,2,2016-06-10 09:44:54,2016-06-10 09:47:29,1,-73.95709228515625,40.76593017578125,-73.95404052734375,40.766170501708984,N,155 +id1592761,1,2016-01-04 07:48:49,2016-01-04 07:57:35,4,-74.013969421386719,40.717380523681641,-73.990455627441406,40.731285095214844,N,526 +id3753958,2,2016-04-20 22:06:09,2016-04-20 22:13:24,1,-73.951957702636719,40.716041564941406,-73.950736999511719,40.710929870605469,N,435 +id3877999,1,2016-01-22 00:25:44,2016-01-22 00:32:49,4,-73.982154846191406,40.764675140380859,-73.971778869628906,40.762954711914062,N,425 +id2977884,2,2016-02-28 15:50:47,2016-02-28 16:26:57,2,-73.9798583984375,40.7435302734375,-73.898788452148438,40.728401184082031,N,2170 +id1354447,2,2016-04-07 20:01:08,2016-04-07 20:13:34,2,-74.003036499023437,40.728607177734375,-74.013992309570313,40.702480316162109,N,746 +id3609100,1,2016-02-11 00:16:53,2016-02-11 00:21:40,1,-73.968505859375,40.759029388427734,-73.95428466796875,40.775550842285156,N,287 +id1914927,1,2016-01-27 08:56:14,2016-01-27 09:03:13,1,-73.9847412109375,40.748268127441406,-73.989151000976563,40.737491607666016,N,419 +id3404009,1,2016-01-16 22:03:32,2016-01-16 22:07:17,1,-73.951736450195312,40.777927398681641,-73.954948425292969,40.767391204833984,N,225 +id1185180,2,2016-02-03 15:36:45,2016-02-03 15:41:12,1,-73.946929931640625,40.776218414306641,-73.95111083984375,40.77056884765625,N,267 +id1460325,1,2016-03-29 18:22:30,2016-03-29 18:34:34,2,-73.956657409667969,40.708000183105469,-73.95916748046875,40.699565887451172,N,724 +id3683472,1,2016-03-15 13:44:24,2016-03-15 14:03:54,1,-73.996505737304688,40.753131866455078,-73.983963012695312,40.756755828857422,N,1170 +id0124287,1,2016-03-25 14:43:53,2016-03-25 14:48:53,1,-73.972755432128906,40.759761810302734,-73.96136474609375,40.773780822753906,N,300 +id2092541,2,2016-01-18 10:53:40,2016-01-18 11:02:08,1,-73.979286193847656,40.784778594970703,-73.976890563964844,40.763393402099609,N,508 +id0786048,2,2016-05-12 00:54:47,2016-05-12 01:09:09,1,-73.986175537109375,40.755847930908203,-73.949302673339844,40.786121368408203,N,862 +id1937514,1,2016-02-06 15:00:36,2016-02-06 15:12:42,1,-73.978706359863281,40.756542205810547,-73.990921020507812,40.734653472900391,N,726 +id0109316,1,2016-01-12 10:48:34,2016-01-12 10:55:01,1,-73.962654113769531,40.772499084472656,-73.953338623046875,40.783645629882812,N,387 +id1569280,2,2016-03-16 12:58:40,2016-03-16 13:22:01,2,-73.987525939941406,40.744861602783203,-73.998786926269531,40.761131286621094,N,1401 +id2633691,1,2016-01-04 05:55:29,2016-01-04 05:58:07,1,-73.957260131835937,40.783599853515625,-73.95330810546875,40.782543182373047,N,158 +id1362149,1,2016-02-08 12:41:51,2016-02-08 12:45:46,1,-73.959716796875,40.766883850097656,-73.96405029296875,40.771190643310547,N,235 +id1040039,2,2016-01-31 13:18:39,2016-01-31 13:33:03,1,-73.990066528320312,40.756797790527344,-73.954948425292969,40.780876159667969,N,864 +id3884747,1,2016-05-17 00:51:57,2016-05-17 01:20:04,1,-73.876220703125,40.773166656494141,-74.047836303710938,40.744747161865234,N,1687 +id3139270,2,2016-03-22 08:45:26,2016-03-22 09:01:50,1,-73.978981018066406,40.784408569335937,-73.967796325683594,40.762733459472656,N,984 +id2244546,1,2016-02-20 02:39:21,2016-02-20 02:51:40,1,-74.004348754882813,40.719329833984375,-73.979743957519531,40.739620208740234,N,739 +id3998621,2,2016-02-05 22:41:05,2016-02-05 22:57:11,5,-73.995635986328125,40.726459503173828,-73.991592407226562,40.746551513671875,N,966 +id3134325,1,2016-06-11 15:53:14,2016-06-11 16:02:15,1,-73.976593017578125,40.751773834228516,-73.976943969726563,40.758628845214844,N,541 +id2660447,2,2016-04-28 14:46:45,2016-04-28 15:09:49,2,-73.982009887695313,40.752021789550781,-73.872673034667969,40.774299621582031,N,1384 +id2307954,1,2016-06-01 13:21:34,2016-06-01 14:02:33,1,-74.0098876953125,40.720722198486328,-73.97344970703125,40.755008697509766,N,2459 +id1029955,2,2016-03-12 12:19:44,2016-03-12 12:25:47,5,-73.9830322265625,40.744579315185547,-73.979156494140625,40.753219604492188,N,363 +id1460086,2,2016-02-12 21:13:00,2016-02-12 21:19:35,1,-73.989707946777344,40.720481872558594,-73.979484558105469,40.727363586425781,N,395 +id1628638,1,2016-06-24 18:55:41,2016-06-24 19:06:56,1,-74.011947631835938,40.713947296142578,-74.008018493652344,40.705120086669922,N,675 +id1599015,2,2016-03-21 07:46:08,2016-03-21 07:50:48,1,-73.985443115234375,40.722061157226563,-73.983535766601563,40.714988708496094,N,280 +id1864423,1,2016-04-20 18:31:25,2016-04-20 18:43:26,1,-73.970603942871094,40.761726379394531,-73.982383728027344,40.764297485351562,N,721 +id2817110,2,2016-06-10 03:20:06,2016-06-10 03:40:10,1,-74.000282287597656,40.728679656982422,-73.951393127441406,40.824981689453125,N,1204 +id0191824,1,2016-04-07 14:17:34,2016-04-07 14:51:12,1,-73.99737548828125,40.724639892578125,-73.970664978027344,40.7559814453125,N,2018 +id2548130,1,2016-02-20 07:07:36,2016-02-20 07:19:28,1,-73.944732666015625,40.740741729736328,-73.985557556152344,40.750621795654297,N,712 +id2563782,1,2016-04-05 21:07:18,2016-04-05 21:14:53,2,-73.998931884765625,40.733921051025391,-73.982177734375,40.734302520751953,N,455 +id2222114,2,2016-01-04 16:48:23,2016-01-04 16:51:42,1,-73.964920043945313,40.772388458251953,-73.960121154785156,40.781379699707031,N,199 +id0455057,2,2016-06-23 17:01:11,2016-06-23 17:09:16,2,-73.939399719238281,40.801700592041016,-73.951271057128906,40.790981292724609,N,485 +id1372311,1,2016-01-15 07:09:18,2016-01-15 07:20:13,1,-74.005607604980469,40.745792388916016,-73.976852416992188,40.764083862304688,N,655 +id0676081,1,2016-05-02 13:42:28,2016-05-02 13:57:24,1,-73.989364624023438,40.74835205078125,-73.99053955078125,40.734859466552734,N,896 +id0597219,1,2016-04-02 15:11:39,2016-04-02 15:20:34,1,-73.977668762207031,40.742954254150391,-73.968948364257813,40.755233764648437,N,535 +id3704244,1,2016-04-17 01:57:39,2016-04-17 01:58:43,1,-73.949623107910156,40.80206298828125,-73.952133178710937,40.803153991699219,N,64 +id3148348,2,2016-04-21 23:05:38,2016-04-21 23:13:11,2,-74.004104614257813,40.725490570068359,-73.984092712402344,40.746231079101563,N,453 +id1662096,2,2016-02-26 09:05:17,2016-02-26 09:16:16,2,-73.977790832519531,40.752231597900391,-73.98291015625,40.745410919189453,N,659 +id0942442,2,2016-05-05 21:43:43,2016-05-05 21:58:06,1,-73.981163024902344,40.720981597900391,-73.991790771484375,40.718551635742188,N,863 +id2505682,1,2016-03-10 13:27:52,2016-03-10 13:41:48,1,-73.992027282714844,40.749351501464844,-74.002723693847656,40.724815368652344,N,836 +id2167039,1,2016-02-23 13:07:26,2016-02-23 13:17:00,4,-73.998085021972656,40.721023559570313,-74.011505126953125,40.710777282714844,N,574 +id0444272,2,2016-04-09 20:27:51,2016-04-09 20:50:05,1,-73.993415832519531,40.721248626708984,-73.977508544921875,40.745052337646484,N,1334 +id0902920,1,2016-04-01 07:42:54,2016-04-01 07:55:51,1,-73.954833984375,40.77374267578125,-73.988815307617188,40.753696441650391,N,777 +id0853039,1,2016-01-14 22:40:40,2016-01-14 22:50:03,1,-73.994033813476563,40.720138549804687,-73.955207824707031,40.716159820556641,N,563 +id1889147,2,2016-01-27 17:26:27,2016-01-27 17:33:20,5,-74.005088806152344,40.719615936279297,-73.996940612792969,40.734115600585937,N,413 +id1454281,2,2016-03-08 20:40:29,2016-03-08 20:52:51,1,-73.978866577148438,40.752914428710938,-74.005683898925781,40.73779296875,N,742 +id1620660,1,2016-02-21 18:01:21,2016-02-21 18:05:27,1,-73.964309692382813,40.760795593261719,-73.971778869628906,40.750286102294922,N,246 +id1026781,1,2016-04-29 08:39:08,2016-04-29 08:55:31,1,-73.954452514648438,40.774124145507812,-73.984527587890625,40.731285095214844,N,983 +id2734875,1,2016-03-05 06:04:44,2016-03-05 06:10:14,1,-73.98236083984375,40.731555938720703,-73.977409362792969,40.7496337890625,N,330 +id2799878,2,2016-04-13 22:31:24,2016-04-14 00:00:00,2,-73.776763916015625,40.645599365234375,-74.011192321777344,40.715530395507813,N,5316 +id3981636,2,2016-04-14 17:49:51,2016-04-14 17:55:02,3,-73.978492736816406,40.741416931152344,-73.987274169921875,40.729404449462891,N,311 +id3744279,2,2016-05-29 20:26:35,2016-05-29 20:37:41,1,-73.992477416992188,40.756786346435547,-73.973724365234375,40.754989624023437,N,666 +id2229012,2,2016-04-01 15:34:24,2016-04-01 16:03:25,5,-74.005348205566406,40.746166229248047,-73.979530334472656,40.76141357421875,N,1741 +id2264886,2,2016-05-27 23:04:47,2016-05-27 23:46:50,1,-73.86334228515625,40.769649505615234,-73.955253601074219,40.657459259033203,N,2523 +id0111282,1,2016-01-31 21:39:54,2016-01-31 21:59:32,2,-73.870796203613281,40.773590087890625,-73.97064208984375,40.758182525634766,N,1178 +id3004890,1,2016-05-12 19:49:44,2016-05-12 20:04:13,1,-73.980888366699219,40.759929656982422,-73.9935302734375,40.759002685546875,N,869 +id0084949,1,2016-01-13 19:09:23,2016-01-13 19:16:01,1,-74.008155822753906,40.714809417724609,-74.002395629882813,40.726604461669922,N,398 +id2975171,2,2016-02-10 18:33:02,2016-02-10 18:53:57,1,-73.962646484375,40.769950866699219,-73.982757568359375,40.750728607177734,N,1255 +id3341425,2,2016-04-15 20:12:44,2016-04-15 20:22:00,5,-73.990669250488281,40.775463104248047,-73.981842041015625,40.768455505371094,N,556 +id1774731,1,2016-06-27 06:48:45,2016-06-27 06:51:32,1,-73.955650329589844,40.804611206054688,-73.961585998535156,40.798496246337891,N,167 +id2891806,2,2016-01-11 12:50:39,2016-01-11 13:06:01,6,-73.9864501953125,40.759296417236328,-73.98272705078125,40.752372741699219,N,922 +id0772224,2,2016-01-06 13:52:57,2016-01-06 13:59:53,3,-74.010063171386719,40.720382690429687,-74.0064697265625,40.738681793212891,N,416 +id2518091,2,2016-06-09 10:48:53,2016-06-09 11:06:49,1,-73.971763610839844,40.750534057617188,-73.998863220214844,40.712673187255859,N,1076 +id1163624,2,2016-06-15 10:03:00,2016-06-15 10:17:05,1,-73.986358642578125,40.759113311767578,-74.000038146972656,40.75860595703125,N,845 +id0845001,1,2016-03-22 08:26:58,2016-03-22 08:37:22,1,-73.978256225585937,40.752155303955078,-73.997650146484375,40.760585784912109,N,624 +id2716945,2,2016-01-10 17:45:17,2016-01-10 17:53:16,1,-73.97869873046875,40.764339447021484,-73.988731384277344,40.772441864013672,N,479 +id3840264,2,2016-01-20 18:17:23,2016-01-20 18:33:14,1,-73.9864501953125,40.776821136474609,-73.993621826171875,40.739250183105469,N,951 +id3525663,2,2016-04-02 09:58:00,2016-04-02 10:16:42,1,-73.984962463378906,40.744388580322266,-73.982421875,40.771003723144531,N,1122 +id2013417,1,2016-04-06 18:58:50,2016-04-06 19:04:51,2,-74.005599975585938,40.727474212646484,-73.994125366210938,40.718151092529297,N,361 +id3169518,1,2016-05-26 22:21:15,2016-05-26 22:41:47,1,-73.863296508789063,40.769866943359375,-73.957344055175781,40.780014038085938,N,1232 +id0795685,1,2016-02-17 11:18:13,2016-02-17 11:32:29,1,-73.989677429199219,40.739711761474609,-74.002197265625,40.755905151367188,N,856 +id0164387,2,2016-06-02 22:11:35,2016-06-02 22:25:31,6,-73.985885620117187,40.731098175048828,-74.007644653320312,40.741050720214844,N,836 +id0441098,2,2016-04-15 08:52:54,2016-04-15 09:15:50,1,-73.977226257324219,40.750068664550781,-74.009246826171875,40.720119476318359,N,1376 +id2313661,1,2016-04-28 19:10:58,2016-04-28 19:35:41,1,-73.982696533203125,40.777294158935547,-73.980613708496094,40.747802734375,N,1483 +id2988443,1,2016-03-16 13:58:52,2016-03-16 14:06:33,1,-73.969268798828125,40.763515472412109,-73.959770202636719,40.776786804199219,N,461 +id1488206,2,2016-06-01 06:56:07,2016-06-01 06:59:38,3,-73.946220397949219,40.800968170166016,-73.953369140625,40.791179656982422,N,211 +id2456050,2,2016-03-19 11:49:40,2016-03-19 12:02:04,3,-73.967788696289063,40.755531311035156,-74.009117126464844,40.704330444335938,N,744 +id3492003,2,2016-03-03 14:01:44,2016-03-03 14:35:27,1,-73.870857238769531,40.773738861083984,-73.979263305664063,40.751670837402344,N,2023 +id0317125,1,2016-06-02 15:40:22,2016-06-02 16:22:55,1,-73.863555908203125,40.769927978515625,-73.840461730957031,40.669422149658203,N,2553 +id3627978,1,2016-04-29 14:10:32,2016-04-29 14:23:25,1,-73.952713012695312,40.766040802001953,-73.9739990234375,40.753078460693359,N,773 +id0317380,2,2016-01-15 15:45:46,2016-01-15 15:52:04,2,-73.968650817871094,40.761199951171875,-73.976242065429687,40.748210906982422,N,378 +id2730825,1,2016-06-18 17:08:33,2016-06-18 17:16:50,1,-74.004127502441406,40.725654602050781,-74.006683349609375,40.744281768798828,N,497 +id3480994,2,2016-02-19 19:34:59,2016-02-19 19:45:24,1,-73.972457885742187,40.755840301513672,-73.984962463378906,40.756118774414063,N,625 +id1278210,2,2016-04-30 22:56:35,2016-04-30 23:03:03,1,-73.9805908203125,40.738441467285156,-73.98541259765625,40.729156494140625,N,388 +id1826793,1,2016-06-25 10:35:15,2016-06-25 10:43:30,2,-73.97406005859375,40.783985137939453,-73.985458374023438,40.761127471923828,N,495 +id3913936,2,2016-03-08 23:55:17,2016-03-09 00:26:13,1,-73.997764587402344,40.744949340820313,-73.939933776855469,40.692481994628906,N,1856 +id0924685,2,2016-06-04 22:45:03,2016-06-04 22:52:06,1,-73.978370666503906,40.786350250244141,-73.988731384277344,40.768661499023438,N,423 +id1277765,1,2016-03-09 20:27:53,2016-03-09 20:32:31,1,-73.967750549316406,40.766139984130859,-73.95574951171875,40.76959228515625,N,278 +id2526850,1,2016-06-06 08:44:02,2016-06-06 08:52:40,1,-73.959434509277344,40.77880859375,-73.968025207519531,40.767845153808594,N,518 +id0949094,1,2016-05-17 18:40:28,2016-05-17 19:03:46,1,-73.9896240234375,40.772933959960938,-73.94091796875,40.751628875732422,N,1398 +id3168971,2,2016-06-12 18:24:55,2016-06-12 18:41:23,1,-73.978851318359375,40.762088775634766,-74.006950378417969,40.740650177001953,N,988 +id0972130,2,2016-04-01 12:23:39,2016-04-01 12:36:56,1,-73.983146667480469,40.747711181640625,-73.988388061523438,40.737449645996094,N,797 +id3390965,1,2016-01-17 18:12:39,2016-01-17 18:26:17,2,-74.015098571777344,40.711296081542969,-74.001007080078125,40.724147796630859,N,818 +id0790949,1,2016-02-23 17:11:07,2016-02-23 17:20:14,1,-73.959709167480469,40.758663177490234,-73.950271606445313,40.775588989257812,N,547 +id3947237,1,2016-01-27 23:16:39,2016-01-27 23:35:21,2,-74.00335693359375,40.727073669433594,-73.987457275390625,40.770759582519531,N,1122 +id3449351,2,2016-01-01 13:31:37,2016-01-01 13:44:56,3,-74.008087158203125,40.739425659179688,-73.977035522460938,40.750720977783203,N,799 +id3627655,2,2016-05-30 05:57:18,2016-05-30 06:00:41,1,-73.949958801269531,40.784622192382813,-73.957511901855469,40.785560607910156,N,203 +id3335274,1,2016-01-31 09:15:49,2016-01-31 09:19:21,1,-73.994178771972656,40.732223510742188,-73.997772216796875,40.736293792724609,N,212 +id0721226,1,2016-05-24 17:57:38,2016-05-24 18:11:15,1,-73.968391418457031,40.799751281738281,-73.951858520507813,40.774387359619141,N,817 +id2490759,1,2016-02-14 18:36:32,2016-02-14 19:01:28,1,-73.974716186523438,40.762332916259766,-73.949234008789063,40.711109161376953,N,1496 +id1258968,2,2016-05-22 10:07:17,2016-05-22 10:14:43,2,-73.962806701660156,40.755714416503906,-73.94512939453125,40.778781890869141,N,446 +id0943655,2,2016-02-24 18:21:15,2016-02-24 18:38:20,1,-73.971153259277344,40.755813598632812,-73.984237670898438,40.761127471923828,N,1025 +id1756611,1,2016-01-11 23:04:20,2016-01-11 23:42:07,2,-73.790504455566406,40.643985748291016,-73.976821899414063,40.749210357666016,N,2267 +id0058677,2,2016-06-22 10:12:59,2016-06-22 10:45:24,1,-73.862861633300781,40.768638610839844,-73.994560241699219,40.740280151367188,N,1945 +id0175222,1,2016-06-21 15:13:49,2016-06-21 15:22:44,1,-73.984275817871094,40.764923095703125,-73.989013671875,40.777767181396484,N,535 +id0095682,1,2016-03-05 01:10:23,2016-03-05 01:21:15,1,-73.948478698730469,40.717948913574219,-73.959396362304688,40.730724334716797,N,652 +id0035389,2,2016-05-04 22:31:02,2016-05-04 22:41:13,1,-73.992469787597656,40.725254058837891,-73.998123168945313,40.743423461914063,N,611 +id3472101,1,2016-01-13 07:53:27,2016-01-13 08:13:27,1,-73.948898315429687,40.773666381835938,-73.993003845214844,40.729972839355469,N,1200 +id3418396,1,2016-01-31 17:28:14,2016-01-31 17:42:15,1,-73.966316223144531,40.804012298583984,-73.982246398925781,40.775588989257812,N,841 +id0905317,2,2016-05-11 08:22:46,2016-05-11 08:55:42,1,-73.979049682617188,40.777488708496094,-73.989028930664062,40.7418212890625,N,1976 +id2879935,1,2016-04-08 21:06:19,2016-04-08 21:09:01,1,-73.982269287109375,40.7684326171875,-73.979171752929688,40.765106201171875,N,162 +id2999485,1,2016-06-05 02:30:16,2016-06-05 02:32:14,1,-73.985206604003906,40.742458343505859,-73.980621337890625,40.742561340332031,N,118 +id2949635,1,2016-06-25 00:16:25,2016-06-25 00:38:25,1,-73.983573913574219,40.726146697998047,-73.94915771484375,40.718395233154297,N,1320 +id2330390,1,2016-05-24 22:04:21,2016-05-24 22:08:10,1,-73.949386596679688,40.776798248291016,-73.949790954589844,40.787418365478516,N,229 +id0513315,1,2016-01-03 14:09:19,2016-01-03 14:30:42,1,-73.989730834960938,40.729610443115234,-73.87054443359375,40.773681640625,N,1283 +id2247769,1,2016-02-17 07:41:59,2016-02-17 07:51:51,1,-73.955490112304688,40.767646789550781,-73.972274780273438,40.749244689941406,N,592 +id0729211,2,2016-04-17 22:38:09,2016-04-17 22:53:57,1,-73.994110107421875,40.751148223876953,-73.951156616210937,40.786109924316406,N,948 +id0780694,1,2016-04-24 13:43:50,2016-04-24 13:59:24,1,-73.974128723144531,40.757728576660156,-73.982261657714844,40.751571655273438,N,934 +id0453626,1,2016-06-28 18:29:57,2016-06-28 18:39:30,1,-74.006927490234375,40.705696105957031,-73.983818054199219,40.714889526367188,N,573 +id1752474,1,2016-06-30 15:12:51,2016-06-30 15:52:16,2,-73.980949401855469,40.762603759765625,-73.870498657226562,40.773693084716797,N,2365 +id2088213,1,2016-04-12 08:36:59,2016-04-12 08:54:10,1,-73.9940185546875,40.751064300537109,-73.980247497558594,40.761432647705078,N,1031 +id1095048,1,2016-01-05 19:07:52,2016-01-05 19:12:07,1,-73.9781494140625,40.762557983398438,-73.981925964355469,40.768756866455078,N,255 +id3523867,1,2016-03-04 13:46:30,2016-03-04 14:14:52,1,-73.986419677734375,40.740581512451172,-73.951644897460937,40.772907257080078,N,1702 +id2471785,1,2016-06-05 20:34:51,2016-06-05 20:39:23,1,-73.991676330566406,40.749485015869141,-73.987464904785156,40.739551544189453,N,272 +id0471301,2,2016-05-06 16:40:05,2016-05-06 17:57:46,1,-73.986946105957031,40.760078430175781,-73.789871215820313,40.647022247314453,N,4661 +id1939258,1,2016-05-13 08:33:38,2016-05-13 09:02:50,1,-73.951530456542969,40.825439453125,-74.013351440429687,40.716270446777344,N,1752 +id0227721,2,2016-06-28 13:46:38,2016-06-28 14:03:44,4,-73.974609375,40.753746032714844,-73.97833251953125,40.76300048828125,N,1026 +id2995613,1,2016-01-26 05:53:53,2016-01-26 05:59:59,1,-73.998695373535156,40.735275268554688,-73.979393005371094,40.752872467041016,N,366 +id3540919,2,2016-02-17 01:51:16,2016-02-17 01:54:41,1,-73.938606262207031,40.7960205078125,-73.952529907226563,40.776828765869141,N,205 +id3304637,2,2016-02-04 17:52:18,2016-02-04 17:58:36,2,-73.970489501953125,40.783931732177734,-73.965629577636719,40.771968841552734,N,378 +id0976625,1,2016-02-20 00:55:00,2016-02-20 01:09:27,2,-74.005607604980469,40.740238189697266,-73.977424621582031,40.746429443359375,N,867 +id2655795,2,2016-05-11 13:09:52,2016-05-11 13:19:56,1,-74.0115966796875,40.7022705078125,-74.015800476074219,40.711940765380859,N,604 +id3471799,2,2016-02-24 00:07:26,2016-02-24 00:15:45,1,-73.961578369140625,40.764400482177734,-73.975227355957031,40.752521514892578,N,499 +id2446633,2,2016-05-26 04:34:23,2016-05-26 04:46:37,1,-74.002517700195313,40.750141143798828,-73.961631774902344,40.761959075927734,N,734 +id0116137,1,2016-05-09 11:17:04,2016-05-09 11:44:25,1,-73.962486267089844,40.778591156005859,-73.988334655761719,40.750507354736328,N,1641 +id2478264,2,2016-05-16 19:20:29,2016-05-16 19:33:19,1,-73.960411071777344,40.766075134277344,-73.984169006347656,40.734489440917969,N,770 +id0479466,1,2016-03-01 07:28:17,2016-03-01 07:30:37,1,-73.98211669921875,40.725406646728516,-73.982025146484375,40.727718353271484,N,140 +id1473441,2,2016-01-11 23:59:37,2016-01-12 00:09:16,1,-74.005157470703125,40.721416473388672,-73.986526489257813,40.71954345703125,N,579 +id0289311,2,2016-02-29 00:13:31,2016-02-29 00:29:58,3,-73.982978820800781,40.693439483642578,-73.906608581542969,40.694549560546875,N,987 +id2606438,1,2016-06-15 09:48:13,2016-06-15 09:57:44,1,-73.980606079101563,40.763938903808594,-73.978103637695313,40.757453918457031,N,571 +id1516014,2,2016-06-10 15:09:18,2016-06-10 15:27:52,1,-73.959953308105469,40.773612976074219,-73.988578796386719,40.762565612792969,N,1114 +id3864815,1,2016-05-06 17:11:20,2016-05-06 17:48:53,1,-73.8782958984375,40.771217346191406,-73.973121643066406,40.793659210205078,N,2253 +id3505690,1,2016-05-12 18:00:37,2016-05-12 18:22:10,1,-73.986007690429688,40.761581420898437,-74.003662109375,40.72406005859375,N,1293 +id1628058,2,2016-04-04 05:39:14,2016-04-04 05:51:42,1,-73.977729797363281,40.734050750732422,-74.006187438964844,40.723159790039063,N,748 +id3159749,1,2016-02-01 21:31:26,2016-02-01 21:40:42,1,-73.979507446289063,40.784679412841797,-73.995040893554687,40.755340576171875,N,556 +id2986399,2,2016-04-07 19:56:00,2016-04-07 20:05:02,5,-73.9998779296875,40.719509124755859,-74.001899719238281,40.729698181152344,N,542 +id2792744,2,2016-03-21 21:35:23,2016-03-21 21:51:25,1,-73.974296569824219,40.753738403320313,-73.97174072265625,40.753730773925781,N,962 +id2822811,1,2016-06-28 09:18:58,2016-06-28 09:46:40,1,-73.951667785644531,40.769748687744141,-73.979461669921875,40.755458831787109,N,1662 +id0355024,2,2016-03-14 11:49:43,2016-03-14 12:08:41,6,-73.991783142089844,40.750091552734375,-73.974838256835938,40.757308959960938,N,1138 +id0806616,2,2016-01-21 08:35:54,2016-01-21 08:56:41,1,-73.920341491699219,40.743568420410156,-73.965682983398438,40.754253387451172,N,1247 +id2192736,2,2016-02-14 12:26:02,2016-02-14 12:30:24,1,-73.980804443359375,40.774700164794922,-73.96600341796875,40.768085479736328,N,262 +id2064642,2,2016-04-25 17:42:25,2016-04-25 18:00:45,2,-73.972869873046875,40.755741119384766,-74.00628662109375,40.7333984375,N,1100 +id3197066,2,2016-01-27 23:14:45,2016-01-27 23:32:02,5,-73.988639831542969,40.727283477783203,-73.953575134277344,40.725025177001953,N,1037 +id0845717,2,2016-06-19 18:12:30,2016-06-19 18:22:15,5,-73.979629516601563,40.784488677978516,-73.977653503417969,40.764659881591797,N,585 +id3133972,1,2016-02-28 18:40:02,2016-02-28 18:54:52,1,-73.979698181152344,40.76458740234375,-73.9700927734375,40.796779632568359,N,890 +id2051865,2,2016-05-12 19:25:32,2016-05-12 19:32:47,5,-73.967575073242187,40.765323638916016,-73.955436706542969,40.767501831054687,N,435 +id0421722,2,2016-05-03 12:33:57,2016-05-03 12:46:28,5,-73.972068786621094,40.759880065917969,-73.957206726074219,40.782848358154297,N,751 +id2700631,1,2016-03-08 22:38:33,2016-03-08 23:05:52,1,-73.971519470214844,40.757762908935547,-73.93988037109375,40.707839965820312,N,1639 +id1606266,1,2016-03-13 14:51:27,2016-03-13 15:32:09,1,-73.870849609375,40.773601531982422,-73.953811645507813,40.653972625732422,N,2442 +id3013398,2,2016-05-17 12:43:48,2016-05-18 12:38:03,2,-74.00262451171875,40.733619689941406,-73.994483947753906,40.750602722167969,N,86055 +id1898193,1,2016-04-23 23:34:28,2016-04-23 23:39:07,1,-74.004302978515625,40.738101959228516,-73.9952392578125,40.742763519287109,N,279 +id1840646,2,2016-05-14 03:41:14,2016-05-14 03:49:24,1,-73.948173522949219,40.704307556152344,-73.9566650390625,40.690792083740234,N,490 +id0066016,2,2016-04-18 15:11:22,2016-04-18 15:33:22,5,-73.976509094238281,40.762359619140625,-73.9981689453125,40.740711212158203,N,1320 +id1879473,1,2016-05-04 07:58:03,2016-05-04 08:06:35,1,-73.983482360839844,40.741397857666016,-73.990966796875,40.751682281494141,N,512 +id2984797,1,2016-05-19 18:32:10,2016-05-19 19:19:14,1,-74.014114379882813,40.711795806884766,-73.962905883789063,40.811008453369141,N,2824 +id2319285,2,2016-03-01 19:55:39,2016-03-01 20:03:50,1,-73.955360412597656,40.777011871337891,-73.964996337890625,40.792819976806641,N,491 +id0948481,1,2016-05-31 20:22:44,2016-05-31 20:37:31,1,-74.006752014160156,40.751365661621094,-73.991897583007812,40.729846954345703,N,887 +id1216021,2,2016-04-15 02:37:00,2016-04-15 03:03:26,1,-74.006744384765625,40.740024566650391,-73.945831298828125,40.683750152587891,N,1586 +id2504898,1,2016-03-01 22:54:51,2016-03-01 23:02:51,2,-73.976692199707031,40.727035522460938,-73.985244750976563,40.713470458984375,N,480 +id3131059,2,2016-03-20 14:31:30,2016-03-20 14:52:20,2,-73.995819091796875,40.769302368164062,-73.991683959960937,40.735366821289063,N,1250 +id2382920,2,2016-04-30 19:23:51,2016-04-30 19:34:28,1,-73.983734130859375,40.768211364746094,-73.97772216796875,40.786605834960937,N,637 +id0685283,2,2016-04-08 12:24:45,2016-04-08 12:34:44,1,-73.975021362304688,40.755844116210938,-73.961517333984375,40.764579772949219,N,599 +id0759164,2,2016-01-10 02:13:50,2016-01-10 02:19:28,1,-73.991767883300781,40.731151580810547,-73.998466491699219,40.733146667480469,N,338 +id0834449,1,2016-02-24 15:44:19,2016-02-24 15:55:17,1,-73.954216003417969,40.790153503417969,-73.946464538574219,40.781421661376953,N,658 +id3086435,2,2016-04-23 17:12:44,2016-04-23 17:15:54,5,-73.988716125488281,40.758914947509766,-73.982009887695313,40.768989562988281,N,190 +id3590188,1,2016-06-02 21:54:26,2016-06-02 22:12:42,1,-74.00091552734375,40.707542419433594,-73.993026733398437,40.731754302978516,N,1096 +id1143251,1,2016-02-29 20:17:14,2016-02-29 20:26:49,1,-73.974479675292969,40.759780883789063,-73.9700927734375,40.752227783203125,N,575 +id0443147,2,2016-02-01 19:44:35,2016-02-01 19:56:30,1,-73.983917236328125,40.769729614257813,-74.003364562988281,40.748291015625,N,715 +id3807993,2,2016-02-20 19:28:08,2016-02-20 19:47:43,1,-73.991386413574219,40.73236083984375,-74.013038635253906,40.704669952392578,N,1175 +id1339951,2,2016-01-27 06:43:58,2016-01-27 07:03:15,1,-73.994926452636719,40.725910186767578,-73.965278625488281,40.755386352539063,N,1157 +id3546324,2,2016-03-09 17:04:13,2016-03-09 17:23:42,1,-73.967323303222656,40.756710052490234,-73.991287231445313,40.749160766601563,N,1169 +id3572575,2,2016-02-25 12:33:25,2016-02-25 12:43:59,1,-73.968658447265625,40.791202545166016,-73.962089538574219,40.776424407958984,N,634 +id3928624,1,2016-02-04 07:55:37,2016-02-04 08:04:04,3,-73.990676879882813,40.745914459228516,-73.983131408691406,40.761062622070313,N,507 +id1903996,1,2016-02-14 08:00:17,2016-02-14 08:02:00,1,-73.975875854492187,40.748680114746094,-73.969268798828125,40.758052825927734,N,103 +id0310627,1,2016-01-11 22:07:47,2016-01-11 22:13:25,2,-73.986297607421875,40.739921569824219,-73.978248596191406,40.730903625488281,N,338 +id1354565,2,2016-01-09 22:23:56,2016-01-09 22:38:45,2,-74.003150939941406,40.72515869140625,-73.980812072753906,40.733638763427734,N,889 +id0204617,2,2016-05-26 13:40:22,2016-05-26 14:01:24,1,-74.010765075683594,40.713668823242188,-73.990669250488281,40.742080688476562,N,1262 +id2135983,1,2016-01-09 22:13:37,2016-01-09 22:22:40,2,-73.980049133300781,40.785690307617188,-73.963447570800781,40.805427551269531,N,543 +id0309100,2,2016-04-17 21:22:30,2016-04-17 21:27:43,1,-73.991439819335938,40.754493713378906,-73.978179931640625,40.748497009277344,N,313 +id0881809,1,2016-01-22 08:52:26,2016-01-22 09:06:29,1,-73.99462890625,40.734577178955078,-74.011695861816406,40.713603973388672,N,843 +id3284707,1,2016-03-04 22:47:48,2016-03-04 22:59:13,1,-73.97869873046875,40.755748748779297,-73.957862854003906,40.769706726074219,N,685 +id3206842,2,2016-06-18 07:48:31,2016-06-18 07:55:28,1,-73.977981567382812,40.752418518066406,-73.991477966308594,40.749931335449219,N,417 +id0683180,2,2016-06-03 16:47:25,2016-06-03 16:57:08,1,-73.9661865234375,40.773666381835938,-73.972702026367188,40.764698028564453,N,583 +id3925545,1,2016-03-19 16:25:25,2016-03-19 16:41:57,1,-74.004920959472656,40.723323822021484,-73.978736877441406,40.759025573730469,N,992 +id3131292,2,2016-04-04 10:52:08,2016-04-04 11:10:26,2,-73.953407287597656,40.771129608154297,-73.971244812011719,40.794517517089844,N,1098 +id2501325,2,2016-02-03 23:09:51,2016-02-03 23:14:33,1,-73.992630004882813,40.724281311035156,-74.003562927246094,40.717449188232422,N,282 +id1671790,1,2016-06-23 02:42:53,2016-06-23 02:46:16,1,-74.010124206542969,40.733131408691406,-73.998184204101563,40.741043090820313,N,203 +id3183918,2,2016-02-02 22:45:31,2016-02-02 22:55:20,1,-73.996452331542969,40.723598480224609,-73.978363037109375,40.751178741455078,N,589 +id1953966,1,2016-02-22 13:37:37,2016-02-22 13:50:20,1,-73.963470458984375,40.769336700439453,-73.980056762695312,40.750797271728516,N,763 +id2975306,2,2016-06-20 08:25:10,2016-06-20 08:44:22,1,-73.968307495117188,40.758979797363281,-74.010879516601562,40.703460693359375,N,1152 +id3799178,2,2016-03-16 16:06:29,2016-03-16 17:06:21,1,-73.776649475097656,40.645355224609375,-73.95477294921875,40.777599334716797,N,3592 +id3540816,1,2016-03-13 17:41:06,2016-03-13 17:47:53,1,-73.961235046386719,40.765079498291016,-73.956108093261719,40.782253265380859,N,407 +id1234503,2,2016-01-19 19:17:54,2016-01-19 19:26:13,1,-73.988922119140625,40.741382598876953,-73.979728698730469,40.733383178710938,N,499 +id2199071,2,2016-02-18 19:54:45,2016-02-18 20:11:01,1,-73.968612670898437,40.764499664306641,-73.990089416503906,40.732769012451172,N,976 +id1393256,1,2016-03-19 23:10:33,2016-03-19 23:25:18,1,-73.974594116210938,40.756839752197266,-73.974411010742188,40.792491912841797,N,885 +id2318726,2,2016-05-01 00:50:39,2016-05-01 00:54:43,1,-73.973442077636719,40.763683319091797,-73.982978820800781,40.763328552246094,N,244 +id2643415,1,2016-06-23 22:34:28,2016-06-23 23:17:13,2,-73.988700866699219,40.764209747314453,-74.007705688476562,40.746879577636719,N,2565 +id1026683,2,2016-06-21 18:27:30,2016-06-21 18:38:41,3,-73.986358642578125,40.739971160888672,-73.991157531738281,40.749008178710938,N,671 +id0230464,1,2016-06-06 21:43:30,2016-06-06 22:04:12,1,-73.962211608886719,40.77618408203125,-73.956611633300781,40.747608184814453,N,1242 +id2073342,1,2016-04-13 13:25:23,2016-04-13 13:40:40,1,-74.004608154296875,40.750534057617188,-73.988906860351563,40.769763946533203,N,917 +id1316388,1,2016-03-08 06:30:54,2016-03-08 06:41:02,1,-73.982002258300781,40.768730163574219,-73.954856872558594,40.765342712402344,N,608 +id3723872,2,2016-02-11 22:34:48,2016-02-11 22:48:07,5,-73.982154846191406,40.773143768310547,-73.973068237304688,40.755046844482422,N,799 +id1876211,2,2016-04-06 22:12:06,2016-04-06 22:16:52,1,-73.98602294921875,40.756900787353516,-73.988777160644531,40.747848510742187,N,286 +id2010508,2,2016-03-06 19:48:29,2016-03-06 20:05:32,1,-74.007949829101563,40.740421295166016,-73.981101989746094,40.774971008300781,N,1023 +id1390971,2,2016-01-09 22:42:35,2016-01-09 22:52:03,3,-73.989753723144531,40.738498687744141,-73.981704711914063,40.757877349853516,N,568 +id0127354,1,2016-05-27 13:16:12,2016-05-27 13:19:35,5,-73.981407165527344,40.778621673583984,-73.97625732421875,40.785678863525391,N,203 +id0841415,2,2016-04-24 01:01:29,2016-04-24 01:09:39,1,-73.975608825683594,40.728569030761719,-73.986976623535156,40.720939636230469,N,490 +id2816709,2,2016-04-11 08:00:00,2016-04-11 08:17:06,1,-73.957809448242188,40.772708892822266,-73.973808288574219,40.756633758544922,N,1026 +id2909978,2,2016-03-15 18:56:28,2016-03-15 19:14:35,1,-73.983314514160156,40.764373779296875,-73.985061645507813,40.739345550537109,N,1087 +id0648522,2,2016-03-30 21:44:59,2016-03-30 21:53:46,1,-73.990806579589844,40.733829498291016,-74.002670288085937,40.728858947753906,N,527 +id2090507,2,2016-02-06 00:23:16,2016-02-06 00:42:23,2,-73.991775512695313,40.723800659179688,-73.914962768554688,40.772041320800781,N,1147 +id2989705,1,2016-04-17 07:58:32,2016-04-17 08:02:19,1,-73.96270751953125,40.799095153808594,-73.973136901855469,40.792594909667969,N,227 +id2216896,2,2016-01-01 07:07:04,2016-01-01 07:39:42,2,-73.788063049316406,40.641853332519531,-73.958824157714844,40.671775817871094,N,1958 +id2093129,1,2016-06-10 19:03:10,2016-06-10 19:11:45,1,-73.978691101074219,40.741165161132812,-73.983062744140625,40.73162841796875,N,515 +id1192364,1,2016-02-06 17:56:12,2016-02-06 18:05:52,2,-73.973968505859375,40.756942749023437,-73.984962463378906,40.760509490966797,N,580 +id2177510,1,2016-04-26 23:46:26,2016-04-27 00:04:37,1,-74.007560729980469,40.742733001708984,-73.942153930664063,40.832904815673828,N,1091 +id3759545,1,2016-03-09 00:31:16,2016-03-09 00:56:57,1,-73.78192138671875,40.644657135009766,-73.947738647460938,40.710494995117188,N,1541 +id1553370,1,2016-04-26 14:40:57,2016-04-26 14:44:05,1,-73.957237243652344,40.780368804931641,-73.961318969726563,40.774894714355469,N,188 +id3979246,1,2016-06-12 03:29:19,2016-06-12 03:29:45,1,-73.969253540039063,40.785396575927734,-73.969642639160156,40.784866333007813,N,26 +id2023161,1,2016-02-14 13:02:14,2016-02-14 13:14:58,1,-73.981864929199219,40.778732299804688,-73.9503173828125,40.775749206542969,N,764 +id1342654,2,2016-05-15 18:36:15,2016-05-15 18:56:02,1,-74.008979797363281,40.713420867919922,-73.983390808105469,40.722858428955078,N,1187 +id1040865,1,2016-05-26 14:36:05,2016-05-26 15:00:39,1,-73.992294311523438,40.748989105224609,-73.969070434570313,40.763309478759766,N,1474 +id2550789,1,2016-06-03 09:04:45,2016-06-03 09:33:41,1,-73.9908447265625,40.728099822998047,-73.972145080566406,40.759418487548828,N,1736 +id0966625,2,2016-04-12 19:33:13,2016-04-12 20:05:59,2,-73.783470153808594,40.648700714111328,-73.963325500488281,40.708660125732422,N,1966 +id0811807,2,2016-05-17 16:17:40,2016-05-17 16:29:57,2,-74.000778198242188,40.731899261474609,-73.981407165527344,40.734039306640625,N,737 +id0353312,1,2016-04-25 12:41:25,2016-04-25 12:52:31,2,-73.951858520507813,40.7728271484375,-73.968429565429687,40.759212493896484,N,666 +id1256527,2,2016-03-15 21:58:55,2016-03-15 22:02:46,1,-73.965171813964844,40.756729125976563,-73.954338073730469,40.767280578613281,N,231 +id2687373,1,2016-04-22 11:42:27,2016-04-22 12:08:19,1,-73.994140625,40.743404388427734,-73.974617004394531,40.758960723876953,N,1552 +id2019043,1,2016-04-26 04:51:07,2016-04-26 05:02:56,1,-73.998512268066406,40.720119476318359,-73.946983337402344,40.699546813964844,N,709 +id2243398,2,2016-04-29 15:33:03,2016-04-29 15:52:33,1,-73.972908020019531,40.786849975585937,-73.937538146972656,40.812667846679688,N,1170 +id0784304,2,2016-05-06 13:42:44,2016-05-06 13:50:08,2,-73.952720642089844,40.803131103515625,-73.968032836914062,40.802639007568359,N,444 +id2281050,2,2016-01-17 19:52:04,2016-01-17 19:54:21,2,-73.982711791992188,40.777259826660156,-73.9759521484375,40.786308288574219,N,137 +id0743045,2,2016-03-17 08:15:05,2016-03-17 09:03:27,1,-73.862869262695312,40.768688201904297,-74.014686584472656,40.709857940673828,N,2902 +id1173384,2,2016-05-25 13:12:26,2016-05-25 13:24:25,1,-74.001861572265625,40.756210327148438,-73.993782043457031,40.768760681152344,N,719 +id1562117,2,2016-04-18 13:49:17,2016-04-18 13:58:47,2,-73.967826843261719,40.757228851318359,-73.981559753417969,40.754444122314453,N,570 +id2057604,2,2016-04-28 09:57:45,2016-04-28 10:06:19,1,-73.965217590332031,40.759723663330078,-73.975090026855469,40.755325317382812,N,514 +id2843189,1,2016-02-16 10:22:04,2016-02-16 11:02:50,1,-73.782066345214844,40.644554138183594,-73.920799255371094,40.830848693847656,N,2446 +id1628590,1,2016-04-13 22:00:20,2016-04-13 22:13:30,2,-73.972877502441406,40.760517120361328,-73.956550598144531,40.802719116210937,N,790 +id0671807,2,2016-01-29 11:28:13,2016-01-29 11:35:30,1,-73.964805603027344,40.760032653808594,-73.972396850585938,40.758686065673828,N,437 +id3218849,1,2016-05-19 14:20:20,2016-05-19 14:33:27,1,-73.946212768554687,40.772869110107422,-73.962631225585937,40.769847869873047,N,787 +id0886253,2,2016-01-12 15:00:14,2016-01-12 15:20:55,1,-73.972175598144531,40.796421051025391,-73.9473876953125,40.778701782226563,N,1241 +id3688329,2,2016-02-26 10:47:12,2016-02-26 11:08:09,2,-74.009979248046875,40.721183776855469,-73.982818603515625,40.763374328613281,N,1257 +id1938624,1,2016-04-26 19:00:28,2016-04-26 19:18:28,1,-74.008384704589844,40.704193115234375,-73.951431274414063,40.777755737304688,N,1080 +id1866997,2,2016-05-05 19:42:43,2016-05-05 19:56:58,5,-74.003379821777344,40.748886108398437,-74.009956359863281,40.721023559570313,N,855 +id3706781,1,2016-01-29 08:11:24,2016-01-29 08:21:15,2,-73.978919982910156,40.777477264404297,-73.980354309082031,40.785724639892578,N,591 +id3295439,1,2016-04-12 07:56:50,2016-04-12 08:10:49,1,-73.991439819335938,40.749931335449219,-73.979148864746094,40.755535125732422,N,839 +id0655721,1,2016-05-15 12:35:28,2016-05-15 12:51:46,2,-73.992881774902344,40.767433166503906,-73.958473205566406,40.783260345458984,Y,978 +id0389936,2,2016-04-02 20:12:04,2016-04-02 20:17:41,3,-73.979782104492187,40.770973205566406,-73.973838806152344,40.764690399169922,N,337 +id2713928,2,2016-03-16 06:16:40,2016-03-16 06:53:49,1,-73.782089233398437,40.644603729248047,-73.813514709472656,40.755901336669922,N,2229 +id0486965,1,2016-02-10 17:55:18,2016-02-10 18:00:05,1,-73.985977172851562,40.762069702148438,-73.978240966796875,40.772907257080078,N,287 +id3440214,2,2016-06-12 00:13:26,2016-06-12 01:03:22,6,-73.981605529785156,40.741081237792969,-73.95538330078125,40.718132019042969,N,2996 +id2123750,1,2016-05-11 11:29:14,2016-05-11 12:13:03,2,-73.872962951660156,40.773963928222656,-73.984756469726563,40.760913848876953,N,2629 +id2007332,1,2016-03-29 14:22:52,2016-03-29 14:32:54,1,-73.994163513183594,40.746730804443359,-74.00506591796875,40.72943115234375,N,602 +id2206923,2,2016-04-28 10:20:15,2016-04-28 10:25:03,1,-73.991401672363281,40.732242584228516,-73.9991455078125,40.725135803222656,N,288 +id3888759,1,2016-02-26 06:28:54,2016-02-26 06:34:13,1,-73.956657409667969,40.786750793457031,-73.979362487792969,40.760574340820312,N,319 +id2770669,1,2016-01-22 18:31:07,2016-01-22 18:44:25,1,-74.001838684082031,40.735374450683594,-73.99151611328125,40.750080108642578,N,798 +id1855512,2,2016-01-29 02:40:15,2016-01-29 02:40:25,1,-73.959121704101563,40.712089538574219,-73.959121704101563,40.712089538574219,N,10 +id2241132,1,2016-03-20 21:55:41,2016-03-20 22:01:11,1,-73.98974609375,40.762485504150391,-74.006103515625,40.748672485351563,N,330 +id3332818,1,2016-06-15 18:41:05,2016-06-15 18:54:27,2,-73.970184326171875,40.762798309326172,-73.976448059082031,40.756431579589844,N,802 +id2905391,1,2016-01-20 16:13:23,2016-01-20 16:16:29,1,-73.967254638671875,40.756561279296875,-73.975662231445312,40.744903564453125,N,186 +id3465597,2,2016-02-06 21:11:17,2016-02-06 21:14:03,1,-74.002021789550781,40.729900360107422,-73.997314453125,40.73681640625,N,166 +id2401281,2,2016-05-21 03:16:24,2016-05-21 03:20:28,1,-73.956802368164062,40.770793914794922,-73.945327758789063,40.782634735107422,N,244 +id0711977,2,2016-02-05 21:14:12,2016-02-05 21:31:14,1,-73.992416381835938,40.734443664550781,-73.989234924316406,40.768085479736328,N,1022 +id2491882,2,2016-06-23 23:51:08,2016-06-24 00:09:22,5,-73.990570068359375,40.738178253173828,-73.946609497070312,40.776500701904297,N,1094 +id3127468,2,2016-04-05 22:52:14,2016-04-05 23:40:36,1,-73.994598388671875,40.755699157714844,-73.962562561035156,40.855949401855469,N,2902 +id1282726,1,2016-02-11 22:45:42,2016-02-11 23:16:28,1,-73.98846435546875,40.758987426757813,-73.960029602050781,40.734725952148437,N,1846 +id1984230,2,2016-03-08 13:50:46,2016-03-08 14:16:02,4,-73.98699951171875,40.742378234863281,-73.989463806152344,40.769569396972656,N,1516 +id2331450,1,2016-05-21 01:47:02,2016-05-21 01:55:56,1,-74.006950378417969,40.743919372558594,-73.980766296386719,40.741973876953125,N,534 +id1944728,1,2016-02-09 17:50:26,2016-02-09 18:31:42,1,-73.972183227539063,40.745662689208984,-73.7763671875,40.645599365234375,N,2476 +id0630862,1,2016-03-28 10:20:22,2016-03-28 10:30:11,1,-74.005973815917969,40.750995635986328,-73.99053955078125,40.742229461669922,N,589 +id3723280,1,2016-02-15 16:07:52,2016-02-15 16:13:35,1,-73.956123352050781,40.771724700927734,-73.953125,40.782756805419922,N,343 +id1045025,1,2016-03-21 09:52:37,2016-03-21 10:05:15,1,-73.993240356445313,40.729160308837891,-74.009780883789063,40.736621856689453,N,758 +id0763960,2,2016-03-11 14:42:18,2016-03-11 15:08:12,2,-73.976799011230469,40.755550384521484,-74.005889892578125,40.724441528320313,N,1554 +id1396511,2,2016-05-04 15:21:56,2016-05-04 15:37:45,1,-73.961982727050781,40.776378631591797,-73.971473693847656,40.766319274902344,N,949 +id3033238,2,2016-06-23 22:34:59,2016-06-23 22:42:09,1,-73.982139587402344,40.771728515625,-73.969451904296875,40.787849426269531,N,430 +id2091974,2,2016-06-16 19:27:20,2016-06-16 19:56:15,1,-73.998939514160156,40.720008850097656,-73.963180541992188,40.773860931396484,N,1735 +id2470808,2,2016-01-10 02:33:27,2016-01-10 03:01:59,4,-73.983627319335938,40.746921539306641,-73.998268127441406,40.853530883789063,N,1712 +id3731095,2,2016-05-17 22:40:57,2016-05-17 22:50:14,1,-73.982192993164063,40.771228790283203,-73.957771301269531,40.762760162353516,N,557 +id3380375,1,2016-02-12 18:30:06,2016-02-12 18:44:19,2,-74.013710021972656,40.715080261230469,-73.987159729003906,40.720817565917969,N,853 +id3342744,2,2016-01-21 09:05:34,2016-01-21 09:10:15,1,-73.967887878417969,40.786968231201172,-73.980537414550781,40.789760589599609,N,281 +id2913637,2,2016-03-31 11:52:25,2016-03-31 12:17:13,5,-74.004440307617188,40.747398376464844,-73.980712890625,40.758987426757813,N,1488 +id0460169,2,2016-05-15 13:38:48,2016-05-15 13:49:53,1,-73.959648132324219,40.763561248779297,-73.975692749023438,40.755550384521484,N,665 +id1399931,1,2016-01-12 16:01:54,2016-01-12 16:09:04,1,-73.988456726074219,40.774238586425781,-73.97357177734375,40.785373687744141,N,430 +id3153710,1,2016-02-12 19:58:51,2016-02-12 20:04:03,1,-73.948646545410156,40.788951873779297,-73.95599365234375,40.773765563964844,N,312 +id0375315,2,2016-05-25 18:24:18,2016-05-25 18:29:23,1,-73.987083435058594,40.739540100097656,-73.974609375,40.736179351806641,N,305 +id2351924,1,2016-06-26 17:38:12,2016-06-26 18:07:18,2,-73.863235473632812,40.769855499267578,-73.985389709472656,40.688819885253906,N,1746 +id3190261,1,2016-04-17 12:15:44,2016-04-17 12:28:01,1,-73.993690490722656,40.752048492431641,-73.972808837890625,40.780490875244141,N,737 +id2901545,2,2016-02-10 16:42:31,2016-02-10 16:50:27,1,-73.959266662597656,40.774265289306641,-73.953956604003906,40.784603118896484,N,476 +id1104624,1,2016-03-30 12:49:10,2016-03-30 13:02:55,1,-74.002021789550781,40.724559783935547,-73.992134094238281,40.7254638671875,N,825 +id0459314,1,2016-02-04 22:43:35,2016-02-04 22:49:10,1,-73.954948425292969,40.769187927246094,-73.950279235839844,40.783977508544922,N,335 +id0188628,2,2016-02-01 20:35:04,2016-02-01 21:01:48,1,-73.985847473144531,40.757171630859375,-73.762718200683594,40.724979400634766,N,1604 +id3600883,1,2016-03-01 14:00:06,2016-03-01 14:13:03,1,-73.955177307128906,40.777172088623047,-73.967216491699219,40.763637542724609,N,777 +id3175274,1,2016-03-26 23:54:45,2016-03-26 23:57:00,3,-73.983917236328125,40.764442443847656,-73.976600646972656,40.765487670898437,N,135 +id1267469,1,2016-05-24 06:26:29,2016-05-24 06:37:17,1,-73.9560546875,40.772029876708984,-73.976737976074219,40.739231109619141,N,648 +id3325026,1,2016-06-21 11:51:00,2016-06-21 12:41:18,1,-73.790641784667969,40.643989562988281,-74.035018920898437,40.622810363769531,N,3018 +id2512076,1,2016-05-21 13:33:18,2016-05-21 13:42:13,1,-73.957176208496094,40.785259246826172,-73.973785400390625,40.762748718261719,N,535 +id3142896,1,2016-06-17 23:09:26,2016-06-17 23:31:09,1,-73.977981567382812,40.733047485351563,-73.99041748046875,40.756412506103516,N,1303 +id0170610,2,2016-03-30 09:23:30,2016-03-30 09:43:33,1,-73.996536254882813,40.726718902587891,-73.958366394042969,40.764556884765625,N,1203 +id2828560,2,2016-02-06 15:50:30,2016-02-06 15:55:29,1,-73.988243103027344,40.720050811767578,-73.996536254882813,40.721553802490234,N,299 +id2780332,2,2016-04-04 22:15:53,2016-04-04 22:19:06,1,-73.964187622070313,40.807926177978516,-73.968650817871094,40.799270629882813,N,193 +id1428340,1,2016-04-14 12:20:36,2016-04-14 12:47:56,1,-73.958938598632813,40.774803161621094,-73.990570068359375,40.766635894775391,N,1640 +id3299070,1,2016-05-19 16:36:55,2016-05-19 16:53:41,1,-73.985572814941406,40.76800537109375,-74.004249572753906,40.751266479492188,N,1006 +id2774237,2,2016-02-21 09:58:17,2016-02-21 10:02:25,1,-73.992172241210937,40.750370025634766,-73.988990783691406,40.738189697265625,N,248 +id3776196,2,2016-04-02 12:28:59,2016-04-02 12:40:17,1,-73.997543334960938,40.735076904296875,-73.996170043945312,40.736293792724609,N,678 +id0690095,2,2016-02-21 15:21:21,2016-02-21 15:33:21,2,-73.993888854980469,40.761619567871094,-73.968101501464844,40.762668609619141,N,720 +id1562585,2,2016-03-02 18:50:28,2016-03-02 19:03:40,1,-73.998054504394531,40.735694885253906,-73.999443054199219,40.761257171630859,N,792 +id3167857,1,2016-02-23 18:32:52,2016-02-23 18:43:17,1,-73.972419738769531,40.765010833740234,-73.977760314941406,40.777885437011719,N,625 +id3381375,2,2016-06-16 20:16:44,2016-06-16 20:23:28,1,-73.978935241699219,40.750087738037109,-73.987091064453125,40.748779296875,N,404 +id2911435,2,2016-06-21 15:06:48,2016-06-21 15:14:10,1,-73.919677734375,40.766349792480469,-73.914237976074219,40.776981353759766,N,442 +id2739444,1,2016-03-24 06:55:04,2016-03-24 06:59:22,1,-73.926666259765625,40.865833282470703,-73.935745239257813,40.850315093994141,N,258 +id2166313,1,2016-03-17 17:52:45,2016-03-17 18:09:46,1,-73.97467041015625,40.7828369140625,-73.976051330566406,40.761531829833984,N,1021 +id2023832,2,2016-06-17 09:54:55,2016-06-17 10:09:07,2,-73.973312377929688,40.787120819091797,-73.970420837402344,40.767848968505859,N,852 +id3076018,2,2016-06-21 18:04:19,2016-06-21 18:14:44,6,-73.971870422363281,40.760345458984375,-73.955047607421875,40.767337799072266,N,625 +id3955241,2,2016-03-16 17:58:02,2016-03-16 18:03:42,4,-73.981353759765625,40.781108856201172,-73.978279113769531,40.788398742675781,N,340 +id1161108,2,2016-02-26 04:20:39,2016-02-26 04:30:45,1,-73.951210021972656,40.782543182373047,-73.981857299804688,40.779212951660156,N,606 +id2748052,2,2016-02-05 16:36:49,2016-02-05 16:42:05,1,-73.963935852050781,40.761100769042969,-73.945808410644531,40.717475891113281,N,316 +id0211369,1,2016-01-16 17:47:51,2016-01-16 17:53:40,1,-73.971900939941406,40.762847900390625,-73.9580078125,40.773799896240234,N,349 +id0681154,1,2016-04-07 22:40:44,2016-04-07 22:50:04,2,-73.988029479980469,40.728076934814453,-73.994819641113281,40.743728637695313,N,560 +id3657409,2,2016-03-25 14:00:00,2016-03-25 14:09:17,3,-73.897773742675781,40.754325866699219,-73.930572509765625,40.771190643310547,N,557 +id0018740,2,2016-06-29 19:45:10,2016-06-29 19:58:08,1,-74.009788513183594,40.710285186767578,-74.001052856445312,40.74188232421875,N,778 +id0927147,2,2016-06-12 23:54:36,2016-06-12 23:59:45,1,-73.982719421386719,40.761863708496094,-73.995475769042969,40.743198394775391,N,309 +id2084119,2,2016-03-06 17:49:31,2016-03-06 17:58:35,3,-74.005928039550781,40.740219116210937,-74.015716552734375,40.711719512939453,N,544 +id2556079,1,2016-05-01 00:27:59,2016-05-01 00:30:31,1,-73.959709167480469,40.771316528320313,-73.951087951660156,40.782672882080078,N,152 +id1297119,2,2016-06-03 19:38:21,2016-06-03 20:00:33,3,-73.972206115722656,40.786556243896484,-73.975151062011719,40.761512756347656,N,1332 +id3918826,2,2016-01-01 22:22:19,2016-01-01 22:27:41,2,-73.926353454589844,40.765861511230469,-73.914031982421875,40.767749786376953,N,322 +id3940893,1,2016-05-09 16:40:53,2016-05-09 16:52:12,1,-73.981956481933594,40.752532958984375,-73.995986938476562,40.753921508789063,N,679 +id0801318,2,2016-02-02 22:48:57,2016-02-02 23:12:32,1,-73.961349487304688,40.711441040039063,-73.970008850097656,40.79705810546875,N,1415 +id2647654,2,2016-06-15 22:43:13,2016-06-15 23:03:51,1,-74.00848388671875,40.714336395263672,-73.968666076660156,40.759067535400391,N,1238 +id3628186,1,2016-06-06 13:53:02,2016-06-06 14:18:51,1,-73.993797302246094,40.751571655273438,-73.975997924804688,40.761943817138672,N,1549 +id0305755,2,2016-05-13 17:03:23,2016-05-13 17:10:59,5,-73.98565673828125,40.778209686279297,-73.977272033691406,40.779590606689453,N,456 +id1920332,2,2016-06-25 10:20:57,2016-06-25 10:35:28,2,-73.984733581542969,40.745269775390625,-73.9547119140625,40.769870758056641,N,871 +id1502961,1,2016-01-30 16:34:05,2016-01-30 16:50:04,1,-73.961982727050781,40.779090881347656,-73.979606628417969,40.754024505615234,N,959 +id3392123,1,2016-01-11 22:10:29,2016-01-11 22:19:43,1,-73.982749938964844,40.747749328613281,-73.978981018066406,40.764163970947266,N,554 +id2587318,1,2016-02-25 14:58:37,2016-02-25 15:02:58,4,-74.002159118652344,40.724296569824219,-74.00006103515625,40.723716735839844,N,261 +id0303581,2,2016-05-14 02:24:04,2016-05-14 02:31:39,1,-73.995742797851563,40.764358520507813,-74.003402709960938,40.740070343017578,N,455 +id0479149,1,2016-05-31 07:13:56,2016-05-31 07:19:25,1,-73.962745666503906,40.755889892578125,-73.975242614746094,40.754978179931641,N,329 +id3081093,2,2016-03-25 16:31:48,2016-03-25 16:35:27,1,-73.963661193847656,40.776878356933594,-73.974136352539062,40.783111572265625,N,219 +id2018946,2,2016-02-13 16:50:29,2016-02-13 16:55:14,1,-73.945762634277344,40.775405883789063,-73.954177856445313,40.779296875,N,285 +id3339196,1,2016-06-19 04:44:40,2016-06-19 04:54:10,1,-73.994094848632812,40.720111846923828,-73.977485656738281,40.749641418457031,N,570 +id3426623,1,2016-06-22 14:31:45,2016-06-22 14:35:48,1,-73.963859558105469,40.774398803710937,-73.954620361328125,40.786617279052734,N,243 +id1712586,1,2016-02-11 20:09:37,2016-02-11 20:13:48,1,-74.002105712890625,40.747642517089844,-74.004623413085938,40.737556457519531,N,251 +id1765191,2,2016-05-21 11:40:38,2016-05-21 11:53:08,6,-73.981391906738281,40.768489837646484,-73.962806701660156,40.797000885009766,N,750 +id3964299,2,2016-05-03 23:18:22,2016-05-03 23:25:34,2,-73.988800048828125,40.763481140136719,-73.9915771484375,40.749969482421875,N,432 +id2443430,2,2016-01-29 13:08:06,2016-01-29 13:13:07,6,-73.94244384765625,40.786228179931641,-73.951957702636719,40.78045654296875,N,301 +id1668939,1,2016-02-15 00:47:07,2016-02-15 00:49:21,1,-73.992988586425781,40.741634368896484,-73.992057800292969,40.749603271484375,N,134 +id0032141,2,2016-06-08 18:36:52,2016-06-08 18:42:24,5,-73.966651916503906,40.767238616943359,-73.962684631347656,40.775623321533203,N,332 +id3093353,1,2016-01-26 20:22:35,2016-01-26 20:35:35,1,-74.000839233398437,40.718761444091797,-73.953071594238281,40.725879669189453,N,780 +id3148405,2,2016-01-20 15:17:24,2016-01-20 15:22:19,1,-73.961616516113281,40.811313629150391,-73.962608337402344,40.797370910644531,N,295 +id1148812,2,2016-06-18 15:06:31,2016-06-18 15:21:23,1,-74.001869201660156,40.750820159912109,-73.97662353515625,40.759990692138672,N,892 +id3158921,1,2016-01-22 20:48:33,2016-01-22 21:09:04,1,-73.950477600097656,40.771286010742188,-73.994285583496094,40.734405517578125,N,1231 +id1500941,1,2016-06-24 17:37:56,2016-06-24 17:55:55,1,-74.002822875976563,40.733684539794922,-73.994651794433594,40.724998474121094,N,1079 +id0656643,1,2016-04-05 06:38:28,2016-04-05 06:44:27,1,-73.992019653320313,40.738529205322266,-73.974754333496094,40.741851806640625,N,359 +id0833931,1,2016-04-16 13:20:10,2016-04-16 13:29:04,2,-73.965736389160156,40.759113311767578,-73.981964111328125,40.738391876220703,N,534 +id2493037,1,2016-06-13 16:10:09,2016-06-13 16:20:48,1,-73.975364685058594,40.760246276855469,-73.98193359375,40.768894195556641,Y,639 +id1131006,2,2016-02-12 23:12:33,2016-02-12 23:24:27,1,-73.993751525878906,40.724643707275391,-73.951240539550781,40.7120361328125,N,714 +id2803120,1,2016-03-27 19:02:01,2016-03-27 19:12:26,1,-73.999191284179688,40.738300323486328,-73.981414794921875,40.746849060058594,N,625 +id0424382,1,2016-04-07 18:15:49,2016-04-07 18:34:55,1,-74.010597229003906,40.722179412841797,-73.991905212402344,40.739273071289063,N,1146 +id3996988,2,2016-03-12 18:48:49,2016-03-12 19:15:52,1,-73.956199645996094,40.787139892578125,-73.988609313964844,40.738689422607422,N,1623 +id2474922,2,2016-03-23 10:23:31,2016-03-23 10:30:27,1,-73.995460510253906,40.725009918212891,-73.980621337890625,40.721580505371094,N,416 +id0323043,1,2016-03-23 09:31:17,2016-03-23 10:22:42,1,-73.964179992675781,40.760826110839844,-73.82586669921875,40.746994018554687,Y,3085 +id1521124,2,2016-01-11 18:37:59,2016-01-11 18:41:13,1,-73.977249145507813,40.749149322509766,-73.979606628417969,40.741371154785156,N,194 +id0409979,2,2016-06-01 23:14:50,2016-06-01 23:34:21,1,-73.988006591796875,40.759536743164063,-73.943313598632813,40.829231262207031,N,1171 +id0895676,2,2016-03-02 18:19:36,2016-03-02 18:26:36,1,-73.971595764160156,40.782402038574219,-73.982780456542969,40.76910400390625,N,420 +id2797555,2,2016-02-18 08:43:20,2016-02-18 08:47:33,1,-73.991729736328125,40.738861083984375,-73.993232727050781,40.730831146240234,N,253 +id0521284,2,2016-04-24 18:13:35,2016-04-24 18:21:15,2,-73.964012145996094,40.756954193115234,-73.964775085449219,40.774082183837891,N,460 +id1309064,2,2016-04-25 13:00:42,2016-04-25 13:06:23,1,-73.982307434082031,40.772663116455078,-73.978706359863281,40.785099029541016,N,341 +id1560880,1,2016-03-03 09:16:25,2016-03-03 09:45:13,4,-73.983970642089844,40.764762878417969,-73.94427490234375,40.792087554931641,N,1728 +id3778842,1,2016-01-16 15:03:06,2016-01-16 15:12:49,1,-73.983016967773437,40.757209777832031,-73.973434448242188,40.752578735351563,N,583 +id2799779,1,2016-01-21 17:31:25,2016-01-21 18:10:53,1,-73.863227844238281,40.770053863525391,-73.781974792480469,40.644981384277344,N,2368 +id1963820,2,2016-05-21 06:42:36,2016-05-21 06:48:19,1,-73.991966247558594,40.749893188476562,-73.99615478515625,40.760917663574219,N,343 +id1080633,2,2016-01-08 09:37:55,2016-01-08 09:55:48,1,-73.970100402832031,40.799480438232422,-73.981483459472656,40.763561248779297,N,1073 +id0086409,2,2016-04-02 10:04:14,2016-04-02 10:15:41,2,-74.001640319824219,40.727939605712891,-73.988609313964844,40.733070373535156,N,687 +id1483133,1,2016-02-27 11:31:04,2016-02-27 11:37:21,1,-73.989891052246094,40.756809234619141,-73.993827819824219,40.763927459716797,N,377 +id2431656,1,2016-01-10 16:25:18,2016-01-10 16:38:22,1,-73.979560852050781,40.739967346191406,-73.988410949707031,40.719806671142578,N,784 +id1729854,1,2016-05-23 20:04:24,2016-05-23 20:15:39,2,-73.959136962890625,40.775043487548828,-73.988517761230469,40.779228210449219,N,675 +id3850466,1,2016-03-11 08:04:20,2016-03-11 08:08:37,1,-73.952301025390625,40.772964477539062,-73.954185485839844,40.766571044921875,N,257 +id3988065,1,2016-05-27 16:15:23,2016-05-27 16:31:23,1,-73.977951049804687,40.777004241943359,-73.950958251953125,40.782520294189453,N,960 +id1155627,1,2016-05-08 12:47:24,2016-05-08 13:08:02,1,-73.963363647460937,40.76202392578125,-74.006805419921875,40.719093322753906,N,1238 +id3130046,2,2016-03-01 20:00:19,2016-03-01 20:14:46,1,-73.959480285644531,40.809112548828125,-73.961273193359375,40.771671295166016,N,867 +id3044279,2,2016-01-30 09:48:28,2016-01-30 10:02:29,1,-73.984573364257813,40.736614227294922,-73.962799072265625,40.775188446044922,N,841 +id1582903,1,2016-03-01 20:46:22,2016-03-01 21:10:15,1,-73.863578796386719,40.769760131835938,-74.003616333007812,40.717426300048828,N,1433 +id1798917,1,2016-05-11 20:49:42,2016-05-11 21:03:44,1,-73.997146606445312,40.742229461669922,-73.984397888183594,40.764904022216797,N,842 +id2605705,2,2016-03-30 20:00:52,2016-03-30 20:20:45,3,-73.963401794433594,40.777568817138672,-73.988029479980469,40.748996734619141,N,1193 +id3162038,2,2016-06-07 12:15:59,2016-06-07 12:21:17,1,-73.950881958007812,40.770820617675781,-73.953208923339844,40.77947998046875,N,318 +id0012325,1,2016-03-28 08:46:15,2016-03-28 09:42:54,2,-73.870697021484375,40.773666381835938,-73.972915649414063,40.755561828613281,N,3399 +id0720821,1,2016-06-25 19:04:32,2016-06-25 19:13:32,2,-73.956291198730469,40.746913909912109,-73.941947937011719,40.755641937255859,N,540 +id1759145,2,2016-06-04 21:04:22,2016-06-04 21:12:36,1,-73.998497009277344,40.740249633789063,-73.987533569335938,40.732570648193359,N,494 +id1562118,2,2016-02-24 21:13:03,2016-02-24 21:23:56,1,-73.994102478027344,40.745273590087891,-73.98291015625,40.731410980224609,N,653 +id0088516,1,2016-04-07 20:14:45,2016-04-07 20:21:04,1,-73.9952392578125,40.724994659423828,-73.983688354492187,40.721435546875,N,379 +id0712677,2,2016-03-06 12:38:44,2016-03-06 12:49:33,1,-73.976760864257813,40.759590148925781,-73.993453979492188,40.733352661132812,N,649 +id1983499,2,2016-01-02 19:42:27,2016-01-02 19:51:58,2,-73.979072570800781,40.750148773193359,-73.98876953125,40.748428344726563,N,571 +id3094330,1,2016-04-22 19:00:04,2016-04-22 19:17:40,1,-73.950576782226563,40.771217346191406,-73.974952697753906,40.751865386962891,N,1056 +id2326144,1,2016-03-21 20:04:52,2016-03-21 20:21:27,1,-73.980552673339844,40.738628387451172,-73.947502136230469,40.716335296630859,N,995 +id1672225,1,2016-06-15 10:29:07,2016-06-15 10:46:31,1,-73.982528686523437,40.731422424316406,-73.978446960449219,40.758136749267578,N,1044 +id2945099,1,2016-05-29 19:49:39,2016-05-29 20:04:26,2,-73.993316650390625,40.757205963134766,-73.965530395507813,40.792972564697266,N,887 +id2722299,2,2016-03-12 08:51:47,2016-03-12 08:56:00,1,-73.989120483398437,40.748268127441406,-73.99285888671875,40.739948272705078,N,253 +id0776809,2,2016-03-16 07:02:57,2016-03-16 08:03:14,1,-73.776695251464844,40.645389556884766,-73.984046936035156,40.688243865966797,N,3617 +id0194673,2,2016-02-09 08:35:06,2016-02-09 08:40:52,2,-73.983711242675781,40.74407958984375,-73.974067687988281,40.757350921630859,N,346 +id2184789,1,2016-06-08 13:47:51,2016-06-08 14:01:43,1,-73.967704772949219,40.766067504882813,-73.953514099121094,40.767292022705078,N,832 +id1496517,1,2016-03-14 05:56:20,2016-03-14 06:00:09,1,-73.971855163574219,40.763053894042969,-73.960296630859375,40.780605316162109,N,229 +id0739133,1,2016-01-26 21:24:19,2016-01-26 21:41:40,1,-73.976463317871094,40.751502990722656,-73.980155944824219,40.743076324462891,N,1041 +id1688874,1,2016-04-02 11:48:04,2016-04-02 11:59:16,1,-73.981063842773438,40.741779327392578,-73.947929382324219,40.7823486328125,N,672 +id1020966,2,2016-03-16 11:16:10,2016-03-16 11:27:32,1,-74.003593444824219,40.748405456542969,-73.994247436523438,40.761436462402344,N,682 +id3506441,1,2016-01-29 21:16:37,2016-01-29 21:34:15,3,-73.989501953125,40.720458984375,-73.981689453125,40.746315002441406,N,1058 +id2511892,2,2016-06-23 17:10:54,2016-06-23 17:24:26,5,-73.9786376953125,40.7772216796875,-73.957862854003906,40.782100677490234,N,812 +id1627479,2,2016-03-16 22:32:27,2016-03-16 22:42:55,2,-74.002777099609375,40.730960845947266,-74.007919311523438,40.745380401611328,N,628 +id1298830,2,2016-01-26 13:43:39,2016-01-26 13:57:26,1,-73.982650756835938,40.752208709716797,-73.972526550292969,40.759071350097656,N,827 +id0141787,1,2016-05-18 18:56:55,2016-05-18 19:06:34,1,-73.957229614257813,40.767566680908203,-73.942253112792969,40.786594390869141,N,579 +id2594609,1,2016-01-29 08:00:13,2016-01-29 08:16:58,1,-73.963081359863281,40.777595520019531,-73.938102722167969,40.797084808349609,N,1005 +id3667051,1,2016-03-07 02:39:41,2016-03-07 02:45:57,1,-74.004432678222656,40.742290496826172,-73.99005126953125,40.762256622314453,N,376 +id2181647,2,2016-04-12 22:49:19,2016-04-12 23:05:58,6,-73.863578796386719,40.769622802734375,-73.951866149902344,40.712558746337891,N,999 +id2791249,1,2016-03-05 20:13:37,2016-03-05 20:22:23,2,-73.973869323730469,40.762985229492188,-73.952781677246094,40.774921417236328,N,526 +id3409823,1,2016-05-18 20:23:34,2016-05-18 20:31:28,1,-73.969589233398438,40.785476684570313,-73.952888488769531,40.776729583740234,N,474 +id0950026,2,2016-04-11 22:50:20,2016-04-11 23:02:19,6,-73.978347778320312,40.762001037597656,-73.978683471679688,40.741161346435547,N,719 +id0586820,1,2016-03-21 06:17:33,2016-03-21 06:31:03,1,-73.974090576171875,40.794033050537109,-73.980697631835938,40.753696441650391,N,810 +id2242375,1,2016-02-04 17:47:59,2016-02-04 17:53:14,1,-73.985450744628906,40.758041381835937,-73.985816955566406,40.752357482910156,N,315 +id3040425,2,2016-01-10 15:48:13,2016-01-10 15:58:08,3,-73.996330261230469,40.715953826904297,-73.996025085449219,40.724533081054687,N,595 +id3057540,1,2016-03-26 18:05:17,2016-03-26 18:17:23,1,-73.961944580078125,40.762050628662109,-73.977569580078125,40.763381958007812,N,726 +id2534451,2,2016-04-26 14:55:20,2016-04-26 15:02:28,5,-73.961631774902344,40.779930114746094,-73.963768005371094,40.774261474609375,N,428 +id0013035,1,2016-03-08 15:19:56,2016-03-08 15:31:37,3,-73.9869384765625,40.722431182861328,-74.013427734375,40.713798522949219,N,701 +id2173253,2,2016-02-27 12:00:51,2016-02-27 12:05:32,1,-73.9827880859375,40.782081604003906,-73.989471435546875,40.772129058837891,N,281 +id3917892,2,2016-01-31 03:55:27,2016-01-31 04:29:56,1,-73.985443115234375,40.727718353271484,-73.956443786621094,40.7476806640625,N,2069 +id1665718,1,2016-04-07 05:59:08,2016-04-07 06:16:22,1,-73.990699768066406,40.703544616699219,-73.861869812011719,40.768436431884766,N,1034 +id3998777,2,2016-01-29 23:16:08,2016-01-29 23:19:47,2,-73.994163513183594,40.7510986328125,-73.994987487792969,40.760169982910156,N,219 +id3942075,2,2016-05-03 11:39:00,2016-05-03 11:48:24,1,-73.964210510253906,40.764751434326172,-73.973838806152344,40.763515472412109,N,564 +id0286915,2,2016-03-17 07:56:00,2016-03-17 08:22:24,1,-73.996162414550781,40.737777709960937,-73.978340148925781,40.760662078857422,N,1584 +id2677528,2,2016-06-21 09:09:54,2016-06-21 09:13:24,1,-73.961326599121094,40.774070739746094,-73.953971862792969,40.780620574951172,N,210 +id1348807,2,2016-03-17 22:24:48,2016-03-17 22:44:46,1,-73.992080688476562,40.748790740966797,-73.992599487304688,40.714229583740234,N,1198 +id0638983,1,2016-06-26 05:37:42,2016-06-26 05:59:33,1,-73.777145385742187,40.646377563476562,-73.924591064453125,40.760452270507813,N,1311 +id3431359,1,2016-05-27 03:09:28,2016-05-27 03:16:14,1,-73.989646911621094,40.718875885009766,-73.949295043945313,40.713760375976562,N,406 +id2384617,1,2016-03-23 13:48:14,2016-03-23 14:04:53,1,-73.9796142578125,40.752597808837891,-73.98114013671875,40.737079620361328,N,999 +id2696862,1,2016-05-20 03:00:38,2016-05-20 03:17:04,2,-73.9749755859375,40.749988555908203,-73.918098449707031,40.773868560791016,N,986 +id1168651,1,2016-03-10 05:42:30,2016-03-10 06:03:31,1,-73.968826293945313,40.764629364013672,-73.865165710449219,40.770645141601563,N,1261 +id1177409,2,2016-04-27 13:17:14,2016-04-27 14:03:50,1,-73.974395751953125,40.762439727783203,-73.784156799316406,40.643470764160156,N,2796 +id3778037,2,2016-06-17 03:19:54,2016-06-17 03:27:13,1,-73.986221313476563,40.738517761230469,-73.998085021972656,40.732963562011719,N,439 +id1011514,2,2016-01-07 17:01:26,2016-01-07 17:06:29,1,-74.003990173339844,40.707489013671875,-73.992279052734375,40.712673187255859,N,303 +id3583482,1,2016-01-20 23:26:06,2016-01-20 23:29:04,1,-73.991874694824219,40.744888305664062,-73.986595153808594,40.740131378173828,N,178 +id3063766,2,2016-04-19 10:01:26,2016-04-19 10:18:24,5,-73.969650268554688,40.763404846191406,-73.954261779785156,40.784168243408203,N,1018 +id1543866,2,2016-04-25 12:07:47,2016-04-25 12:20:08,5,-73.978271484375,40.729598999023438,-73.992111206054687,40.742938995361328,N,741 +id3466092,2,2016-05-27 13:37:09,2016-05-27 13:48:24,1,-73.944328308105469,40.775741577148438,-73.949790954589844,40.784698486328125,N,675 +id3695366,1,2016-04-17 00:15:09,2016-04-17 00:19:34,2,-73.982025146484375,40.768684387207031,-73.977325439453125,40.780097961425781,N,265 +id2646741,1,2016-03-19 23:13:43,2016-03-19 23:19:50,1,-73.998619079589844,40.745182037353516,-74.001823425292969,40.750934600830078,N,367 +id3756855,2,2016-01-08 02:26:48,2016-01-08 02:35:36,1,-73.910743713378906,40.768836975097656,-73.934326171875,40.716442108154297,N,528 +id0024634,1,2016-01-15 13:06:28,2016-01-15 13:09:57,1,-73.956275939941406,40.780708312988281,-73.961746215820312,40.773574829101563,N,209 +id0036733,2,2016-06-15 07:36:14,2016-06-15 07:52:29,5,-73.9906005859375,40.771595001220703,-73.982673645019531,40.742710113525391,N,975 +id3039165,2,2016-04-02 09:33:00,2016-04-02 09:38:22,6,-73.94970703125,40.784561157226563,-73.95147705078125,40.791069030761719,N,322 +id1027345,1,2016-04-17 23:29:03,2016-04-17 23:35:49,1,-73.99139404296875,40.74981689453125,-73.986801147460938,40.746883392333984,N,406 +id2611594,2,2016-02-20 14:10:33,2016-02-20 14:18:57,2,-73.963363647460937,40.765865325927734,-73.977195739746094,40.764820098876953,N,504 +id3391930,2,2016-01-31 08:58:42,2016-01-31 09:31:59,5,-73.790298461914062,40.646930694580078,-73.987434387207031,40.769512176513672,N,1997 +id0470957,1,2016-04-25 09:11:56,2016-04-25 09:21:40,1,-74.006423950195313,40.744533538818359,-73.999847412109375,40.738395690917969,N,584 +id2259440,2,2016-06-10 20:43:55,2016-06-10 20:50:34,1,-73.977432250976563,40.758018493652344,-73.988243103027344,40.743408203125,N,399 +id2049280,2,2016-05-26 23:52:22,2016-05-27 00:01:43,2,-73.993049621582031,40.727180480957031,-73.980262756347656,40.739028930664062,N,561 +id1685043,1,2016-06-20 19:35:49,2016-06-20 19:39:37,1,-73.975349426269531,40.752426147460938,-73.97503662109375,40.741729736328125,N,228 +id3192217,2,2016-04-10 16:15:18,2016-04-10 16:22:03,6,-74.008499145507813,40.734451293945313,-74.011177062988281,40.715839385986328,N,405 +id3624726,2,2016-05-12 19:42:04,2016-05-12 19:47:27,6,-73.989768981933594,40.741348266601563,-73.990913391113281,40.734268188476563,N,323 +id1712367,1,2016-06-15 12:26:36,2016-06-15 12:50:39,1,-73.978012084960938,40.754989624023437,-74.002601623535156,40.7606201171875,N,1443 +id3703142,2,2016-01-02 13:15:40,2016-01-02 13:21:58,1,-73.978729248046875,40.790828704833984,-73.960502624511719,40.816429138183594,N,378 +id3853542,1,2016-02-02 12:52:41,2016-02-02 12:57:10,1,-73.966552734375,40.770378112792969,-73.965568542480469,40.765754699707031,N,269 +id1618934,2,2016-03-20 14:49:33,2016-03-20 15:00:44,1,-73.995552062988281,40.739330291748047,-73.998207092285156,40.72705078125,N,671 +id0779110,2,2016-04-26 21:24:06,2016-04-26 21:49:43,3,-73.995697021484375,40.733497619628906,-73.976486206054688,40.670330047607422,N,1537 +id2489967,2,2016-04-02 22:53:10,2016-04-02 23:01:14,2,-73.988967895507813,40.731479644775391,-73.998390197753906,40.729549407958984,N,484 +id0349599,1,2016-05-18 20:51:07,2016-05-18 21:07:00,1,-73.990104675292969,40.756999969482422,-73.972373962402344,40.793140411376953,N,953 +id2946169,1,2016-05-30 16:06:42,2016-05-30 16:12:07,1,-73.977897644042969,40.74163818359375,-73.986625671386719,40.745433807373047,N,325 +id0868206,2,2016-03-01 18:08:39,2016-03-01 18:13:21,5,-73.979202270507812,40.749229431152344,-73.974891662597656,40.744338989257813,N,282 +id1039791,2,2016-02-19 19:08:49,2016-02-19 19:15:56,1,-74.012939453125,40.709430694580078,-74.005149841308594,40.718910217285156,N,427 +id3911930,1,2016-01-15 14:41:57,2016-01-15 14:55:16,1,-73.989700317382812,40.734344482421875,-73.973068237304688,40.752662658691406,N,799 +id3207855,2,2016-01-24 09:28:57,2016-01-24 09:39:33,1,-73.978500366210938,40.753269195556641,-73.982978820800781,40.756519317626953,N,636 +id0768657,1,2016-03-11 17:13:34,2016-03-11 17:20:37,1,-74.008819580078125,40.718620300292969,-74.00634765625,40.729473114013672,N,423 +id3587318,2,2016-03-05 19:41:47,2016-03-05 20:08:02,1,-73.990615844726563,40.719142913818359,-73.983894348144531,40.762123107910156,N,1575 +id0985246,2,2016-01-14 07:28:12,2016-01-14 07:32:18,1,-73.951019287109375,40.782398223876953,-73.936477661132812,40.804061889648437,N,246 +id3852782,2,2016-04-21 23:53:31,2016-04-22 00:12:24,1,-73.989593505859375,40.747329711914063,-73.963912963867188,40.807830810546875,N,1133 +id2566434,1,2016-05-30 20:36:43,2016-05-30 21:02:26,1,-73.976127624511719,40.754009246826172,-73.967536926269531,40.686325073242187,N,1543 +id1215691,1,2016-05-02 08:54:23,2016-05-02 09:01:02,1,-73.991310119628906,40.750190734863281,-73.981742858886719,40.753742218017578,N,399 +id3021082,2,2016-03-19 15:51:48,2016-03-19 16:33:59,1,-73.784133911132813,40.648605346679687,-73.981269836425781,40.746620178222656,N,2531 +id3507378,1,2016-01-04 18:30:16,2016-01-04 18:35:17,1,-73.992263793945313,40.729106903076172,-73.999771118164063,40.737735748291016,N,301 +id2709515,1,2016-01-22 21:56:51,2016-01-22 22:02:33,1,-73.9671630859375,40.756820678710937,-73.97100830078125,40.74609375,N,342 +id0244818,1,2016-05-04 08:12:03,2016-05-04 08:15:26,1,-73.983840942382813,40.749530792236328,-73.993324279785156,40.739959716796875,N,203 +id1381253,1,2016-06-26 19:58:10,2016-06-26 20:04:50,1,-74.01129150390625,40.703384399414063,-73.999298095703125,40.715991973876953,N,400 +id3154427,2,2016-05-08 17:06:54,2016-05-08 17:13:11,1,-73.955490112304688,40.776798248291016,-73.956733703613281,40.766971588134766,N,377 +id2570813,2,2016-02-18 20:27:18,2016-02-18 20:37:23,6,-73.983436584472656,40.755218505859375,-73.981178283691406,40.78179931640625,N,605 +id2886671,2,2016-03-14 16:57:39,2016-03-14 17:05:03,5,-73.979507446289063,40.785346984863281,-73.970268249511719,40.799091339111328,N,444 +id1147127,2,2016-04-06 08:33:51,2016-04-06 08:55:06,2,-73.977020263671875,40.790218353271484,-73.962196350097656,40.772106170654297,N,1275 +id2003451,1,2016-04-14 03:21:55,2016-04-14 03:22:23,1,-73.993797302246094,40.746761322021484,-73.996238708496094,40.743312835693359,N,28 +id2504818,2,2016-05-25 11:47:59,2016-05-25 12:10:15,1,-73.990676879882813,40.745868682861328,-73.963493347167969,40.754749298095703,N,1336 +id3846142,1,2016-02-29 08:46:09,2016-02-29 09:17:47,1,-73.780357360839844,40.645751953125,-73.885818481445313,40.773189544677734,N,1898 +id0982778,1,2016-02-03 13:14:25,2016-02-03 13:33:57,1,-73.961044311523438,40.775146484375,-73.975784301757812,40.754810333251953,N,1172 +id2393389,1,2016-04-02 13:05:53,2016-04-02 13:15:07,1,-73.990432739257813,40.746528625488281,-73.976554870605469,40.765205383300781,N,554 +id2925497,2,2016-06-14 15:56:42,2016-06-14 16:46:20,6,-73.871070861816406,40.773780822753906,-73.982406616210938,40.76171875,N,2978 +id0717426,2,2016-04-13 17:33:18,2016-04-13 17:39:50,1,-73.980476379394531,40.726062774658203,-73.986793518066406,40.735645294189453,N,392 +id2035006,2,2016-01-21 23:58:48,2016-01-22 00:16:31,1,-73.989631652832031,40.701919555664062,-73.963081359863281,40.763420104980469,N,1063 +id1493466,1,2016-02-15 17:01:42,2016-02-15 17:24:34,2,-73.953834533691406,40.788162231445313,-73.996536254882813,40.753093719482422,N,1372 +id0372446,2,2016-04-25 17:01:29,2016-04-25 17:19:55,1,-73.974372863769531,40.763519287109375,-73.997596740722656,40.725578308105469,N,1106 +id3657839,1,2016-04-01 12:36:25,2016-04-01 13:08:32,1,-73.957847595214844,40.762760162353516,-73.985740661621094,40.758171081542969,N,1927 +id0075929,1,2016-04-07 19:40:56,2016-04-07 19:46:47,1,-73.991867065429688,40.738475799560547,-73.993637084960938,40.730503082275391,N,351 +id3020451,1,2016-06-05 11:22:55,2016-06-05 11:46:08,1,-73.965614318847656,40.795375823974609,-73.982688903808594,40.762306213378906,N,1393 +id1068741,1,2016-02-05 19:49:43,2016-02-05 20:04:59,1,-73.993553161621094,40.752071380615234,-73.984664916992188,40.732875823974609,N,916 +id0681189,2,2016-06-14 02:22:19,2016-06-14 02:44:51,1,-73.979812622070313,40.743389129638672,-73.925163269042969,40.768661499023438,N,1352 +id2874339,1,2016-06-21 19:16:57,2016-06-21 19:28:14,1,-73.9920654296875,40.750205993652344,-73.986335754394531,40.753715515136719,N,677 +id1915421,1,2016-01-01 04:39:39,2016-01-01 04:48:32,2,-73.993171691894531,40.724403381347656,-74.002487182617188,40.750022888183594,N,533 +id0225533,2,2016-04-19 04:27:43,2016-04-19 04:30:12,6,-73.982475280761719,40.762763977050781,-73.979255676269531,40.765460968017578,N,149 +id2984635,1,2016-03-24 14:43:24,2016-03-24 15:08:23,1,-73.995445251464844,40.687763214111328,-73.986419677734375,40.718273162841797,N,1499 +id1555129,2,2016-03-18 18:19:10,2016-03-18 18:59:56,2,-73.990287780761719,40.773281097412109,-73.990676879882813,40.731498718261719,N,2446 +id2806893,1,2016-02-02 12:08:48,2016-02-02 12:44:07,2,-73.970970153808594,40.745765686035156,-73.782768249511719,40.648944854736328,N,2119 +id1963791,2,2016-02-11 09:31:05,2016-02-11 09:41:47,1,-74.005859375,40.745182037353516,-73.993446350097656,40.740673065185547,N,642 +id1370359,2,2016-06-24 16:41:12,2016-06-24 16:49:06,3,-73.956832885742188,40.766651153564453,-73.963996887207031,40.767929077148438,N,474 +id0099797,2,2016-05-31 07:42:16,2016-05-31 07:54:13,2,-73.988937377929687,40.758220672607422,-73.985153198242188,40.781448364257813,N,717 +id1458576,1,2016-05-11 01:42:59,2016-05-11 01:48:51,1,-73.970291137695313,40.75225830078125,-73.991744995117188,40.722240447998047,N,352 +id0922418,1,2016-01-08 15:13:36,2016-01-08 15:16:29,1,-73.96844482421875,40.750823974609375,-73.969467163085937,40.754039764404297,N,173 +id2599024,2,2016-03-26 00:05:32,2016-03-26 00:14:01,1,-73.979118347167969,40.740219116210937,-73.955612182617188,40.768310546875,N,509 +id0843111,1,2016-01-03 17:54:00,2016-01-03 18:16:20,3,-73.988853454589844,40.763553619384766,-74.002357482910156,40.719669342041016,N,1340 +id2977583,1,2016-01-08 05:47:57,2016-01-08 06:07:53,1,-73.982780456542969,40.777381896972656,-73.871368408203125,40.774185180664063,N,1196 +id2764768,1,2016-02-05 23:29:44,2016-02-05 23:37:27,2,-73.98590087890625,40.763916015625,-73.99005126953125,40.756423950195312,N,463 +id1247181,1,2016-04-14 20:13:59,2016-04-14 20:22:37,1,-73.999275207519531,40.744331359863281,-74.003532409667969,40.743717193603516,N,518 +id1154914,1,2016-02-19 10:32:02,2016-02-19 10:38:41,4,-73.971237182617188,40.755340576171875,-73.965339660644531,40.766788482666016,N,399 +id2764371,2,2016-06-21 19:29:06,2016-06-21 19:47:05,5,-73.988510131835938,40.737041473388672,-73.956268310546875,40.772579193115234,N,1079 +id0430276,2,2016-01-02 05:29:11,2016-01-02 05:37:22,1,-73.944679260253906,40.794471740722656,-73.980026245117188,40.755035400390625,N,491 +id0339604,1,2016-05-09 21:13:21,2016-05-09 21:20:55,1,-74.005599975585938,40.750877380371094,-74.00604248046875,40.733909606933594,N,454 +id2620157,2,2016-01-22 01:50:27,2016-01-22 01:56:43,1,-73.988082885742187,40.754600524902344,-74.003883361816406,40.731578826904297,N,376 +id0205445,2,2016-03-02 15:51:20,2016-03-02 15:56:46,1,-73.963409423828125,40.766136169433594,-73.953872680664063,40.779590606689453,N,326 +id1988188,2,2016-02-06 12:29:06,2016-02-06 12:50:30,1,-73.962150573730469,40.779323577880859,-73.999114990234375,40.731712341308594,N,1284 +id1670977,2,2016-03-23 10:08:17,2016-03-23 10:30:07,1,-73.982421875,40.731529235839844,-73.962760925292969,40.761699676513672,N,1310 +id2558772,2,2016-03-07 21:09:28,2016-03-07 21:12:10,2,-73.988288879394531,40.731620788574219,-73.982200622558594,40.73992919921875,N,162 +id2638119,2,2016-03-30 09:10:34,2016-03-30 09:18:27,1,-73.979629516601563,40.748931884765625,-73.986610412597656,40.750438690185547,N,473 +id2138079,1,2016-04-20 08:03:58,2016-04-20 08:12:20,1,-73.975914001464844,40.744476318359375,-73.973602294921875,40.757827758789063,N,502 +id1941805,1,2016-06-04 18:39:49,2016-06-04 19:05:17,1,-73.969276428222656,40.76953125,-73.990760803222656,40.755123138427734,N,1528 +id0270314,1,2016-04-26 15:59:50,2016-04-26 16:08:23,1,-73.989738464355469,40.747257232666016,-73.9794921875,40.752338409423828,N,513 +id2164180,2,2016-05-26 13:27:51,2016-05-26 13:54:41,1,-73.972724914550781,40.740623474121094,-73.864700317382813,40.770305633544922,N,1610 +id1889454,1,2016-05-09 21:58:55,2016-05-09 22:17:08,1,-73.971336364746094,40.755084991455078,-73.993980407714844,40.746166229248047,N,1093 +id3834193,2,2016-04-30 18:56:57,2016-04-30 19:03:01,2,-73.982261657714844,40.775177001953125,-73.97930908203125,40.787006378173828,N,364 +id0208088,2,2016-04-07 12:49:29,2016-04-07 12:59:00,1,-73.971450805664063,40.760616302490234,-73.98065185546875,40.7559814453125,N,571 +id0589178,1,2016-04-28 14:51:23,2016-04-28 15:12:34,1,-73.993545532226563,40.749874114990234,-73.973442077636719,40.755634307861328,N,1271 +id3774974,1,2016-05-11 06:22:45,2016-05-11 06:30:18,3,-73.990516662597656,40.750949859619141,-74.006980895996094,40.718051910400391,N,453 +id3145472,2,2016-04-24 18:22:27,2016-04-24 18:27:56,1,-73.968330383300781,40.762481689453125,-73.9820556640625,40.748401641845703,N,329 +id0219415,2,2016-03-05 22:37:50,2016-03-05 22:52:23,2,-73.955802917480469,40.776233673095703,-73.988899230957031,40.771526336669922,N,873 +id0655149,2,2016-01-11 09:02:30,2016-01-11 09:19:29,1,-73.987556457519531,40.756977081298828,-73.997093200683594,40.725105285644531,N,1019 +id2605893,2,2016-04-30 23:30:24,2016-04-30 23:34:36,2,-73.993316650390625,40.762416839599609,-73.984466552734375,40.774681091308594,N,252 +id1011103,2,2016-01-24 23:51:33,2016-01-24 23:56:09,1,-73.993782043457031,40.746250152587891,-73.999832153320312,40.731136322021484,N,276 +id1662280,1,2016-01-02 02:39:20,2016-01-02 02:42:14,1,-73.985908508300781,40.762416839599609,-73.986228942871094,40.772430419921875,N,174 +id3318742,1,2016-06-17 15:29:31,2016-06-17 15:30:59,1,-73.988700866699219,40.748542785644531,-73.988311767578125,40.749038696289063,N,88 +id3517755,2,2016-06-14 14:47:23,2016-06-14 14:50:39,4,-73.965461730957031,40.768619537353516,-73.96185302734375,40.776229858398438,N,196 +id1037659,2,2016-01-26 20:06:34,2016-01-26 20:13:54,1,-74.005462646484375,40.718231201171875,-73.995506286621094,40.735221862792969,N,440 +id3857049,2,2016-06-05 02:35:25,2016-06-05 02:51:32,1,-74.0052490234375,40.735408782958984,-73.981468200683594,40.732730865478516,N,967 +id1482592,2,2016-03-15 10:00:17,2016-03-15 10:05:22,1,-73.964790344238281,40.769649505615234,-73.953689575195313,40.770828247070313,N,305 +id2081779,2,2016-04-18 07:46:18,2016-04-18 07:51:12,1,-73.959609985351563,40.770938873291016,-73.9588623046875,40.765232086181641,N,294 +id0937132,2,2016-06-13 19:37:28,2016-06-13 19:59:57,1,-73.987640380859375,40.700508117675781,-73.983230590820313,40.672828674316406,N,1349 +id1014029,2,2016-01-14 23:43:06,2016-01-14 23:44:54,2,-73.955520629882813,40.7724609375,-73.951118469238281,40.774501800537109,N,108 +id1832482,1,2016-03-17 17:44:51,2016-03-17 17:53:37,1,-73.960639953613281,40.761631011962891,-73.969123840332031,40.753742218017578,N,526 +id1636920,1,2016-04-19 06:55:18,2016-04-19 07:06:43,1,-73.996116638183594,40.732978820800781,-73.988967895507813,40.769416809082031,N,685 +id3070742,1,2016-03-10 19:04:44,2016-03-10 19:17:56,2,-73.989013671875,40.744869232177734,-73.993270874023438,40.754432678222656,N,792 +id0137916,1,2016-03-30 22:36:05,2016-03-30 22:46:15,3,-73.980056762695312,40.764797210693359,-73.963523864746094,40.775218963623047,N,610 +id0047520,1,2016-03-13 21:11:27,2016-03-13 21:17:37,1,-73.98712158203125,40.744651794433594,-74.007736206054687,40.732883453369141,Y,370 +id3217064,2,2016-04-19 14:17:44,2016-04-19 14:35:19,1,-73.970596313476563,40.762020111083984,-73.990821838378906,40.742099761962891,N,1055 +id2471935,1,2016-02-21 20:24:55,2016-02-21 20:31:54,1,-73.931632995605469,40.756965637207031,-73.92156982421875,40.776508331298828,N,419 +id2937821,2,2016-04-13 12:03:51,2016-04-13 12:17:31,5,-73.981681823730469,40.755718231201172,-73.973678588867187,40.76348876953125,N,820 +id2901378,1,2016-01-10 07:30:25,2016-01-10 07:37:03,5,-73.967941284179687,40.762691497802734,-73.956085205078125,40.783927917480469,N,398 +id1795815,2,2016-01-29 14:56:13,2016-01-29 15:17:48,1,-73.995849609375,40.752304077148438,-74.003715515136719,40.7225341796875,N,1295 +id1316348,1,2016-01-12 13:31:08,2016-01-12 13:42:52,1,-73.984230041503906,40.721645355224609,-73.98712158203125,40.733417510986328,N,704 +id3510953,1,2016-02-01 23:26:52,2016-02-01 23:30:40,1,-73.985877990722656,40.732799530029297,-73.98724365234375,40.725315093994141,N,228 +id2450259,2,2016-03-06 22:17:50,2016-03-06 22:27:03,1,-74.005378723144531,40.7410888671875,-73.98651123046875,40.732898712158203,N,553 +id2961715,1,2016-06-04 23:51:56,2016-06-04 23:58:43,1,-73.925216674804687,40.700630187988281,-73.9376220703125,40.704898834228516,N,407 +id3056246,2,2016-04-03 02:02:36,2016-04-03 02:12:30,1,-73.992843627929687,40.724376678466797,-74.00250244140625,40.749961853027344,N,594 +id1680648,2,2016-05-14 13:25:02,2016-05-14 13:38:31,1,-73.971519470214844,40.757339477539063,-73.981407165527344,40.762779235839844,N,809 +id0904564,1,2016-01-28 17:50:55,2016-01-28 17:58:08,1,-73.966094970703125,40.764583587646484,-73.95367431640625,40.766941070556641,N,433 +id1656434,2,2016-03-04 12:55:36,2016-03-04 13:15:15,6,-73.968223571777344,40.761676788330078,-73.997642517089844,40.739330291748047,N,1179 +id0359128,1,2016-01-17 16:24:43,2016-01-17 16:45:58,1,-73.874526977539063,40.774093627929688,-73.889137268066406,40.860671997070313,N,1275 +id0724280,1,2016-04-24 23:27:59,2016-04-24 23:40:13,1,-73.976776123046875,40.751270294189453,-73.993751525878906,40.745616912841797,N,734 +id0664078,1,2016-02-17 10:34:44,2016-02-17 10:40:15,1,-73.977584838867187,40.784034729003906,-73.959693908691406,40.775001525878906,N,331 +id1201332,2,2016-06-14 10:28:37,2016-06-14 10:45:33,2,-73.988906860351563,40.736595153808594,-73.974746704101563,40.759113311767578,N,1016 +id3900200,1,2016-05-29 21:28:36,2016-05-29 21:50:28,3,-73.997772216796875,40.763904571533203,-74.013595581054688,40.702262878417969,N,1312 +id0486743,2,2016-05-31 19:28:46,2016-05-31 19:39:56,1,-73.989288330078125,40.768268585205078,-73.997039794921875,40.743881225585937,N,670 +id3661346,2,2016-01-17 19:05:28,2016-01-17 19:11:15,1,-73.989158630371094,40.740489959716797,-73.978012084960938,40.734195709228516,N,347 +id2995233,1,2016-04-23 17:08:26,2016-04-23 17:13:26,2,-73.993583679199219,40.735931396484375,-73.994720458984375,40.740100860595703,N,300 +id1785731,2,2016-04-11 14:45:41,2016-04-11 14:52:37,2,-73.954627990722656,40.765670776367188,-73.96038818359375,40.769741058349609,N,416 +id3923319,2,2016-05-07 10:24:22,2016-05-07 10:33:38,1,-73.978950500488281,40.736495971679688,-73.995002746582031,40.743942260742187,N,556 +id0873629,1,2016-01-15 20:08:15,2016-01-15 20:12:26,1,-73.976318359375,40.755977630615234,-73.97857666015625,40.762966156005859,N,251 +id3714865,2,2016-01-21 10:56:45,2016-01-21 11:10:26,1,-73.976150512695312,40.744304656982422,-74.002998352050781,40.726760864257812,N,821 +id1677631,2,2016-04-24 10:25:37,2016-04-24 10:45:49,2,-74.010330200195313,40.719230651855469,-73.941024780273438,40.723426818847656,N,1212 +id0096130,1,2016-06-13 00:50:11,2016-06-13 00:54:39,1,-73.987770080566406,40.721103668212891,-73.985389709472656,40.717903137207031,N,268 +id3280291,1,2016-05-22 17:23:07,2016-05-22 17:39:11,2,-73.987281799316406,40.722461700439453,-74.003807067871094,40.720924377441406,N,964 +id1658085,2,2016-05-25 21:40:07,2016-05-25 21:59:04,2,-73.975761413574219,40.740570068359375,-73.926788330078125,40.755149841308594,N,1137 +id2814042,2,2016-03-25 14:23:55,2016-03-25 14:43:28,1,-73.997360229492188,40.722324371337891,-73.977653503417969,40.757816314697266,N,1173 +id0119701,1,2016-06-23 13:58:19,2016-06-23 14:03:41,1,-73.953582763671875,40.767173767089844,-73.964256286621094,40.767383575439453,N,322 +id2196500,2,2016-01-07 16:47:38,2016-01-07 16:59:55,1,-74.012008666992188,40.714290618896484,-73.995925903320312,40.759727478027344,N,737 +id0331941,1,2016-04-07 00:26:11,2016-04-07 00:30:32,1,-74.003318786621094,40.731712341308594,-73.995895385742187,40.73870849609375,N,261 +id3042913,2,2016-05-19 23:36:57,2016-05-19 23:45:05,1,-73.989883422851562,40.756690979003906,-73.973060607910156,40.757591247558594,N,488 +id0130510,1,2016-05-01 11:42:12,2016-05-01 12:04:01,1,-73.955360412597656,40.783363342285156,-73.996330261230469,40.739692687988281,N,1309 +id0754663,2,2016-06-19 10:44:20,2016-06-19 10:58:29,1,-73.964378356933594,40.797161102294922,-73.948249816894531,40.829139709472656,N,849 +id3387860,1,2016-04-03 20:38:30,2016-04-03 20:47:12,4,-73.984779357910156,40.748065948486328,-73.991348266601563,40.754962921142578,N,522 +id3864949,1,2016-02-26 20:02:02,2016-02-26 20:07:20,2,-73.952316284179687,40.777061462402344,-73.962898254394531,40.774860382080078,N,318 +id2937775,2,2016-03-12 07:27:38,2016-03-12 07:33:41,1,-73.966217041015625,40.803909301757813,-73.948684692382812,40.797603607177734,N,363 +id3134126,2,2016-03-20 04:14:27,2016-03-20 04:15:06,1,-73.969505310058594,40.757652282714844,-73.969505310058594,40.757652282714844,N,39 +id2013001,1,2016-04-15 11:25:19,2016-04-15 11:40:22,1,-73.979705810546875,40.732990264892578,-73.975540161132813,40.754898071289063,N,903 +id2180188,2,2016-05-10 21:15:51,2016-05-10 21:19:25,1,-74.009910583496094,40.714736938476563,-74.016990661621094,40.707736968994141,N,214 +id0675553,1,2016-06-09 22:18:35,2016-06-09 22:43:05,1,-73.970703125,40.767478942871094,-74.010726928710938,40.720314025878906,N,1470 +id3784821,1,2016-06-26 02:51:55,2016-06-26 03:01:23,1,-74.004341125488281,40.742404937744141,-74.001144409179687,40.729110717773438,N,568 +id0032321,2,2016-06-17 14:12:00,2016-06-17 14:23:49,1,-73.984428405761719,40.745948791503906,-73.97454833984375,40.759220123291016,N,709 +id0615390,2,2016-05-05 21:00:01,2016-05-05 21:09:10,1,-73.983238220214844,40.771255493164062,-73.961128234863281,40.768653869628906,N,549 +id0737824,2,2016-03-25 01:03:58,2016-03-25 01:18:25,6,-73.990753173828125,40.734790802001953,-73.996261596679687,40.698501586914063,N,867 +id3458614,2,2016-02-05 21:43:47,2016-02-05 21:51:22,2,-73.984970092773438,40.742149353027344,-73.989738464355469,40.729751586914063,N,455 +id3677331,2,2016-04-07 07:04:57,2016-04-07 07:22:38,1,-73.970916748046875,40.783313751220703,-74.013633728027344,40.714031219482422,N,1061 +id1414524,1,2016-05-04 09:04:33,2016-05-04 09:05:48,1,-73.790191650390625,40.643482208251953,-73.790191650390625,40.643482208251953,N,75 +id1034489,1,2016-04-13 13:07:30,2016-04-13 13:22:53,1,-73.983444213867188,40.746559143066406,-73.986846923828125,40.76153564453125,N,923 +id3655303,2,2016-01-30 23:22:06,2016-01-30 23:51:47,3,-73.991569519042969,40.764873504638672,-74.005020141601563,40.707363128662109,N,1781 +id3002524,1,2016-06-15 22:17:54,2016-06-15 22:42:25,1,-73.972991943359375,40.758945465087891,-74.01495361328125,40.715492248535156,N,1471 +id1217635,2,2016-04-13 22:16:38,2016-04-13 22:35:38,2,-73.954147338867188,40.774658203125,-73.98345947265625,40.74383544921875,N,1140 +id2132581,1,2016-05-03 06:46:34,2016-05-03 06:52:28,1,-73.974784851074219,40.741867065429688,-73.983207702636719,40.734371185302734,N,354 +id1535374,2,2016-04-16 19:37:10,2016-04-16 20:01:29,1,-73.976783752441406,40.726940155029297,-73.970619201660156,40.798377990722656,N,1459 +id2488618,2,2016-06-30 23:10:49,2016-06-30 23:27:52,2,-73.985061645507813,40.744674682617188,-73.955329895019531,40.774341583251953,N,1023 +id1951062,2,2016-04-17 18:48:36,2016-04-17 19:00:33,1,-73.863845825195313,40.769538879394531,-73.833984375,40.758327484130859,N,717 +id3838651,2,2016-04-17 12:55:14,2016-04-17 13:06:42,6,-73.9971923828125,40.722091674804687,-74.009490966796875,40.704509735107422,N,688 +id1028420,1,2016-02-11 06:02:32,2016-02-11 06:40:07,1,-73.967941284179687,40.802165985107422,-73.93841552734375,40.684963226318359,N,2255 +id0546178,2,2016-03-15 20:36:20,2016-03-15 20:43:38,1,-73.991836547851563,40.731178283691406,-74.009140014648437,40.714031219482422,N,438 +id2605045,2,2016-02-16 13:43:03,2016-02-16 13:51:42,1,-73.9483642578125,40.809173583984375,-73.937126159667969,40.805034637451172,N,519 +id3859634,2,2016-06-18 23:10:24,2016-06-18 23:33:00,1,-74.005912780761719,40.740131378173828,-73.991531372070313,40.715560913085937,N,1356 +id1085648,2,2016-01-07 16:12:09,2016-01-07 16:32:58,5,-73.870941162109375,40.773811340332031,-73.974388122558594,40.756858825683594,N,1249 +id0128995,2,2016-05-14 13:41:39,2016-05-14 13:45:36,1,-73.958580017089844,40.780689239501953,-73.968589782714844,40.785060882568359,N,237 +id3118297,1,2016-02-14 09:15:01,2016-02-14 09:16:36,1,-73.979522705078125,40.784397125244141,-73.9761962890625,40.788547515869141,N,95 +id3085924,1,2016-02-06 21:31:38,2016-02-06 21:47:52,1,-73.99169921875,40.750198364257813,-74.002647399902344,40.726516723632813,N,974 +id0927504,2,2016-02-16 18:52:47,2016-02-16 19:00:47,1,-73.989517211914062,40.742641448974609,-74.000877380371094,40.729251861572266,N,480 +id2425117,2,2016-02-01 16:55:52,2016-02-01 17:01:17,1,-73.981361389160156,40.741241455078125,-73.99041748046875,40.737071990966797,N,325 +id2918224,1,2016-06-22 10:18:16,2016-06-22 10:43:26,4,-73.862678527832031,40.768741607666016,-73.782127380371094,40.666370391845703,N,1510 +id3085963,1,2016-06-16 09:05:52,2016-06-16 09:20:57,1,-73.977195739746094,40.758045196533203,-73.968925476074219,40.785751342773437,N,905 +id0796177,2,2016-04-20 16:41:06,2016-04-20 16:41:22,1,-73.937103271484375,40.764820098876953,-73.937103271484375,40.764820098876953,N,16 +id0477247,1,2016-06-16 16:13:35,2016-06-16 17:13:11,2,-74.011093139648438,40.713394165039063,-73.871490478515625,40.774211883544922,N,3576 +id3381128,2,2016-02-25 05:11:46,2016-02-25 05:24:03,5,-73.958518981933594,40.800430297851562,-73.94268798828125,40.841461181640625,N,737 +id0235681,1,2016-05-20 00:04:49,2016-05-20 00:19:01,1,-73.990852355957031,40.750877380371094,-73.958320617675781,40.781646728515625,N,852 +id3809323,1,2016-01-19 22:10:14,2016-01-19 22:13:25,1,-73.97454833984375,40.762462615966797,-73.977828979492188,40.753753662109375,N,191 +id2462921,1,2016-06-21 13:27:55,2016-06-21 13:35:26,3,-73.981681823730469,40.758743286132813,-73.973075866699219,40.764217376708984,N,451 +id3538212,1,2016-05-28 15:41:48,2016-05-28 15:50:06,1,-74.003585815429688,40.753173828125,-73.99444580078125,40.761722564697266,N,498 +id1641278,2,2016-02-26 17:33:52,2016-02-26 17:43:37,2,-73.982353210449219,40.757389068603516,-73.982162475585937,40.77593994140625,N,585 +id3876663,1,2016-06-08 19:29:16,2016-06-08 19:47:06,2,-73.993820190429687,40.745670318603516,-73.98480224609375,40.758640289306641,N,1070 +id3383883,2,2016-02-04 22:16:04,2016-02-04 22:37:54,5,-73.959754943847656,40.805667877197266,-73.975242614746094,40.752208709716797,N,1310 +id3534033,1,2016-05-06 12:16:57,2016-05-06 12:35:42,1,-73.980056762695312,40.770938873291016,-73.954620361328125,40.786521911621094,N,1125 +id0937874,2,2016-04-01 22:46:01,2016-04-01 23:05:07,2,-73.990310668945313,40.761684417724609,-74.001358032226563,40.726478576660156,N,1146 +id2915374,2,2016-04-22 15:48:53,2016-04-22 16:02:03,6,-73.992767333984375,40.758682250976563,-73.989021301269531,40.738739013671875,N,790 +id0577656,2,2016-06-03 12:10:45,2016-06-03 12:36:05,5,-73.984466552734375,40.742519378662109,-73.960342407226562,40.7789306640625,N,1520 +id1773159,2,2016-05-06 12:34:38,2016-05-06 13:13:40,2,-73.975547790527344,40.724212646484375,-73.976463317871094,40.723075866699219,N,2342 +id0771581,1,2016-01-31 19:38:03,2016-01-31 19:39:57,1,-73.991455078125,40.765247344970703,-73.987571716308594,40.764469146728516,N,114 +id3718942,1,2016-04-08 20:29:01,2016-04-08 20:36:32,1,-73.997032165527344,40.722225189208984,-73.99090576171875,40.715141296386719,N,451 +id1251488,1,2016-03-01 20:16:16,2016-03-01 20:26:03,1,-73.987953186035156,40.741226196289063,-73.990936279296875,40.755893707275391,N,587 +id1931250,1,2016-01-04 10:27:22,2016-01-04 10:32:30,1,-73.977630615234375,40.751422882080078,-73.969284057617187,40.76177978515625,N,308 +id1128827,1,2016-06-25 17:55:38,2016-06-25 18:23:09,2,-74.012001037597656,40.705226898193359,-73.992721557617188,40.730457305908203,N,1651 +id1553245,2,2016-05-30 20:47:12,2016-05-30 20:50:34,1,-73.972618103027344,40.793815612792969,-73.967483520507813,40.802753448486328,N,202 +id0464951,2,2016-04-16 15:55:55,2016-04-16 16:12:42,1,-73.99298095703125,40.7340087890625,-73.98187255859375,40.722251892089844,N,1007 +id0411965,2,2016-03-17 18:56:16,2016-03-17 18:59:26,1,-73.955459594726563,40.7794189453125,-73.956062316894531,40.784641265869141,N,190 +id2714530,2,2016-04-03 13:09:40,2016-04-03 13:14:26,5,-73.912559509277344,40.766918182373047,-73.916427612304688,40.756721496582031,N,286 +id3433368,1,2016-01-14 08:45:17,2016-01-14 09:01:39,1,-73.952804565429687,40.772029876708984,-73.966728210449219,40.75323486328125,N,982 +id1188790,2,2016-06-11 01:20:58,2016-06-11 01:22:36,1,-74.007820129394531,40.742656707763672,-74.002059936523438,40.745952606201172,N,98 +id0164556,1,2016-06-14 20:49:45,2016-06-14 21:03:22,1,-73.973251342773438,40.764301300048828,-73.996101379394531,40.732639312744141,N,817 +id3201823,1,2016-03-12 16:36:27,2016-03-12 16:40:40,1,-73.947471618652344,40.783695220947266,-73.955093383789063,40.782890319824219,N,253 +id1692209,1,2016-01-26 01:36:12,2016-01-26 02:32:24,1,-73.779563903808594,40.646923065185547,-74.267257690429688,40.806011199951172,N,3372 +id3359861,1,2016-04-27 12:50:50,2016-04-27 13:06:35,1,-73.975227355957031,40.752063751220703,-73.961952209472656,40.763721466064453,N,945 +id3453028,2,2016-05-18 21:49:49,2016-05-18 22:13:19,2,-73.991920471191406,40.753948211669922,-73.951797485351563,40.773418426513672,N,1410 +id1955869,2,2016-02-07 19:09:27,2016-02-07 19:24:17,1,-73.873016357421875,40.774158477783203,-73.880630493164063,40.750308990478516,N,890 +id0996962,2,2016-06-26 00:53:38,2016-06-26 01:02:01,5,-73.986595153808594,40.766658782958984,-73.96405029296875,40.803131103515625,N,503 +id1512551,1,2016-01-05 16:05:52,2016-01-05 16:19:31,1,-73.993873596191406,40.745868682861328,-73.970993041992187,40.759433746337891,N,819 +id1994387,1,2016-05-12 09:56:19,2016-05-12 10:00:21,1,-73.998100280761719,40.741008758544922,-74.007530212402344,40.7427978515625,N,242 +id3734773,1,2016-02-13 22:20:50,2016-02-13 22:28:33,1,-73.987472534179688,40.760387420654297,-73.987762451171875,40.774692535400391,N,463 +id1835330,1,2016-03-19 20:02:11,2016-03-19 20:09:11,1,-73.950263977050781,40.77978515625,-73.967506408691406,40.787685394287109,Y,420 +id3541058,1,2016-02-27 18:20:47,2016-02-27 18:21:32,1,-74.026512145996094,40.748111724853516,-74.026512145996094,40.748111724853516,N,45 +id1631577,1,2016-06-08 03:14:33,2016-06-08 03:16:27,1,-73.922843933105469,40.760833740234375,-73.9178466796875,40.76165771484375,N,114 +id1019028,1,2016-05-16 22:07:11,2016-05-16 22:14:24,3,-73.996315002441406,40.759807586669922,-73.985748291015625,40.758548736572266,N,433 +id3719991,2,2016-05-12 16:01:22,2016-05-12 16:06:02,1,-73.9656982421875,40.758682250976563,-73.953666687011719,40.770851135253906,N,280 +id2657228,1,2016-06-03 07:21:02,2016-06-03 07:41:30,1,-73.988555908203125,40.762611389160156,-74.010047912597656,40.721225738525391,N,1228 +id1216493,2,2016-02-27 21:35:49,2016-02-27 21:40:46,1,-73.985511779785156,40.768131256103516,-73.98358154296875,40.760448455810547,N,297 +id3680776,2,2016-01-09 14:38:53,2016-01-09 14:43:54,1,-73.950172424316406,40.77996826171875,-73.944862365722656,40.779788970947266,N,301 +id3008694,2,2016-05-01 10:18:54,2016-05-01 11:03:57,1,-74.002838134765625,40.760166168212891,-73.992599487304688,40.773952484130859,N,2703 +id1825900,1,2016-03-25 16:58:57,2016-03-25 17:14:07,1,-73.988540649414062,40.763267517089844,-73.990455627441406,40.756065368652344,N,910 +id2234683,2,2016-04-28 08:22:33,2016-04-28 08:48:45,1,-73.994873046875,40.750049591064453,-73.969688415527344,40.761821746826172,N,1572 +id2377470,1,2016-06-06 13:03:55,2016-06-06 13:10:44,1,-74.008956909179687,40.703937530517578,-74.015274047851562,40.711475372314453,N,409 +id2828486,2,2016-02-08 11:07:14,2016-02-08 11:10:25,1,-73.967041015625,40.766716003417969,-73.960655212402344,40.766201019287109,N,191 +id0768735,2,2016-04-11 15:36:34,2016-04-11 16:04:19,6,-73.870841979980469,40.773719787597656,-73.979019165039063,40.762111663818359,N,1665 +id1350704,1,2016-05-16 15:41:28,2016-05-16 15:51:09,1,-73.997276306152344,40.761962890625,-73.994827270507813,40.750232696533203,N,581 +id1007527,2,2016-01-27 13:53:42,2016-01-27 14:07:30,1,-73.982154846191406,40.768367767333984,-73.953109741210937,40.783462524414063,N,828 +id2277062,2,2016-02-17 05:26:18,2016-02-17 05:26:30,2,-73.978523254394531,40.765220642089844,-73.979461669921875,40.765781402587891,N,12 +id1937889,2,2016-04-11 07:24:49,2016-04-11 07:37:13,3,-73.96356201171875,40.774410247802734,-74.00238037109375,40.760250091552734,N,744 +id2086632,2,2016-06-04 12:26:01,2016-06-04 12:45:50,6,-73.975090026855469,40.760879516601563,-73.993247985839844,40.741989135742188,N,1189 +id1905687,2,2016-03-15 11:19:43,2016-03-15 11:27:47,2,-73.963081359863281,40.794048309326172,-73.951683044433594,40.791240692138672,N,484 +id0483598,2,2016-04-16 19:10:23,2016-04-16 19:32:10,1,-73.994682312011719,40.724830627441406,-73.972000122070313,40.756801605224609,N,1307 +id1704415,2,2016-01-06 22:01:40,2016-01-06 22:05:44,1,-73.976539611816406,40.747795104980469,-73.974159240722656,40.75640869140625,N,244 +id1603254,2,2016-02-09 17:41:45,2016-02-09 17:54:18,1,-73.986274719238281,40.754192352294922,-73.971145629882813,40.755481719970703,N,753 +id1159865,2,2016-05-03 08:59:58,2016-05-03 10:09:33,1,-73.869010925292969,40.769691467285156,-74.011138916015625,40.710239410400391,N,4175 +id1464307,1,2016-04-01 07:08:14,2016-04-01 07:12:55,1,-73.975494384765625,40.752540588378906,-73.972320556640625,40.744243621826172,N,281 +id1830179,2,2016-04-05 22:42:05,2016-04-05 23:07:43,5,-73.862998962402344,40.768989562988281,-74.005599975585938,40.711238861083984,N,1538 +id0503491,2,2016-02-27 11:39:32,2016-02-27 11:51:06,1,-73.990478515625,40.750911712646484,-73.9835205078125,40.731803894042969,N,694 +id2129135,2,2016-05-26 16:49:26,2016-05-26 17:12:52,6,-73.87310791015625,40.774120330810547,-73.857772827148438,40.733058929443359,N,1406 +id3734263,2,2016-04-29 12:03:28,2016-04-29 12:05:40,1,-73.960739135742188,40.772418975830078,-73.9615478515625,40.776748657226563,N,132 +id2988704,2,2016-01-15 12:22:40,2016-01-15 12:39:21,1,-73.933403015136719,40.744663238525391,-73.974433898925781,40.758369445800781,N,1001 +id2009876,1,2016-04-12 01:07:10,2016-04-12 01:14:57,1,-73.989494323730469,40.720375061035156,-73.98077392578125,40.688465118408203,Y,467 +id3768083,2,2016-01-08 23:09:30,2016-01-08 23:21:38,2,-73.983688354492187,40.755413055419922,-73.95751953125,40.782581329345703,N,728 +id0395700,1,2016-03-31 11:42:39,2016-03-31 11:48:46,1,-73.977813720703125,40.763843536376953,-73.975578308105469,40.755847930908203,N,367 +id1278254,1,2016-01-22 11:49:35,2016-01-22 11:55:06,2,-73.998733520507813,40.722980499267578,-74.007644653320312,40.712879180908203,N,331 +id0733002,2,2016-03-22 20:25:02,2016-03-22 20:34:33,1,-73.993217468261719,40.727764129638672,-73.9910888671875,40.74517822265625,N,571 +id0435991,1,2016-06-03 20:34:54,2016-06-03 20:55:19,1,-73.990959167480469,40.730072021484375,-73.960929870605469,40.778121948242187,N,1225 +id1188359,1,2016-04-23 21:43:13,2016-04-23 21:48:09,1,-74.001213073730469,40.727714538574219,-74.003913879394531,40.732761383056641,N,296 +id0511579,2,2016-02-13 06:27:30,2016-02-13 07:10:50,2,-73.970298767089844,40.789043426513672,-73.961639404296875,40.589336395263672,N,2600 +id0176501,2,2016-01-07 00:55:28,2016-01-07 01:18:52,1,-74.011680603027344,40.707839965820312,-73.896636962890625,40.710239410400391,N,1404 +id3990396,2,2016-05-11 11:49:18,2016-05-11 12:25:35,1,-73.885238647460938,40.772968292236328,-73.991531372070313,40.750259399414063,N,2177 +id2058465,2,2016-04-14 13:43:19,2016-04-14 13:58:20,1,-73.977157592773438,40.779468536376953,-73.973396301269531,40.763317108154297,N,901 +id1323242,1,2016-04-15 07:38:16,2016-04-15 07:49:20,1,-73.992439270019531,40.758129119873047,-73.97998046875,40.773456573486328,N,664 +id1833158,2,2016-05-13 22:33:37,2016-05-13 22:53:01,1,-73.96282958984375,40.766506195068359,-73.943832397460938,40.826961517333984,N,1164 +id1444249,1,2016-02-07 22:35:55,2016-02-07 22:46:52,1,-73.939414978027344,40.821426391601563,-73.960220336914062,40.781455993652344,N,657 +id0764193,2,2016-03-30 22:25:28,2016-03-30 22:34:59,1,-73.977920532226563,40.757232666015625,-73.957969665527344,40.780391693115234,N,571 +id2557245,1,2016-04-02 16:17:30,2016-04-02 16:31:47,1,-73.964378356933594,40.758800506591797,-73.920219421386719,40.775691986083984,N,857 +id1353994,1,2016-05-05 08:51:09,2016-05-05 08:56:33,1,-74.000579833984375,40.741989135742188,-74.005180358886719,40.751358032226563,N,324 +id2673925,1,2016-04-21 14:37:03,2016-04-21 14:54:24,1,-73.990234375,40.728874206542969,-74.005058288574219,40.7191162109375,N,1041 +id0328888,2,2016-01-29 09:39:37,2016-01-29 09:58:19,1,-73.987220764160156,40.766578674316406,-74.004951477050781,40.751598358154297,N,1122 +id2835910,1,2016-05-15 12:43:05,2016-05-15 12:50:22,1,-73.986579895019531,40.740249633789063,-73.975074768066406,40.735275268554688,N,437 +id3825389,1,2016-02-15 16:07:56,2016-02-15 16:16:13,1,-73.972152709960937,40.781288146972656,-73.971946716308594,40.765571594238281,N,497 +id3730451,2,2016-01-09 17:57:37,2016-01-09 18:10:46,1,-73.98382568359375,40.7652587890625,-74.004913330078125,40.746822357177734,N,789 +id3336015,2,2016-01-01 09:39:10,2016-01-01 09:44:49,3,-73.954879760742187,40.777568817138672,-73.966873168945313,40.770748138427734,N,339 +id3129556,1,2016-05-06 12:37:17,2016-05-06 12:43:01,1,-73.98651123046875,40.755447387695313,-73.987785339355469,40.748367309570313,N,344 +id0429793,1,2016-01-13 18:53:28,2016-01-13 19:03:28,1,-73.969879150390625,40.784774780273438,-73.981071472167969,40.765815734863281,N,600 +id1192489,1,2016-01-08 09:33:15,2016-01-08 09:53:06,1,-73.999946594238281,40.73046875,-73.991104125976563,40.755470275878906,N,1191 +id2867392,1,2016-03-15 14:47:39,2016-03-15 14:56:22,1,-73.965255737304688,40.760063171386719,-73.977928161621094,40.741992950439453,N,523 +id1521408,1,2016-06-25 21:09:53,2016-06-25 21:19:42,1,-73.998191833496094,40.7508544921875,-73.97747802734375,40.750099182128906,N,589 +id1744537,1,2016-06-07 15:05:53,2016-06-07 15:25:37,1,-74.005462646484375,40.726955413818359,-73.987045288085938,40.742046356201172,N,1184 +id1409303,2,2016-01-17 06:00:43,2016-01-17 06:07:55,5,-74.004135131835938,40.741893768310547,-74.003311157226563,40.723880767822266,N,432 +id1964919,2,2016-01-30 01:31:15,2016-01-30 01:37:01,1,-73.982521057128906,40.755081176757813,-73.991592407226562,40.765121459960938,N,346 +id0445094,2,2016-02-06 20:13:26,2016-02-06 20:16:25,1,-73.960960388183594,40.777858734130859,-73.952079772949219,40.778011322021484,N,179 +id2930708,1,2016-02-19 23:58:02,2016-02-20 00:16:07,1,-73.969505310058594,40.760345458984375,-74.000129699707031,40.734889984130859,N,1085 +id0679200,2,2016-01-30 15:12:12,2016-01-30 15:24:49,1,-73.98797607421875,40.719123840332031,-73.958732604980469,40.719406127929688,N,757 +id0048975,2,2016-06-30 03:14:56,2016-06-30 03:23:06,1,-73.982109069824219,40.775180816650391,-73.975471496582031,40.752101898193359,N,490 +id1247127,2,2016-03-10 12:43:31,2016-03-10 12:51:17,1,-73.960540771484375,40.812801361083984,-73.960540771484375,40.812801361083984,N,466 +id3153637,2,2016-01-17 17:07:35,2016-01-17 17:22:11,5,-73.974723815917969,40.783115386962891,-73.950340270996094,40.783485412597656,N,876 +id2974935,1,2016-06-10 10:50:36,2016-06-10 11:05:17,4,-73.984878540039063,40.747699737548828,-73.97357177734375,40.752178192138672,N,881 +id1764363,2,2016-05-04 21:19:36,2016-05-04 21:33:43,5,-73.986740112304688,40.761089324951172,-73.949348449707031,40.771018981933594,N,847 +id3616791,1,2016-03-05 00:30:14,2016-03-05 00:50:34,1,-73.96392822265625,40.765357971191406,-73.942512512207031,40.837982177734375,N,1220 +id1257760,1,2016-03-04 23:22:44,2016-03-04 23:25:12,2,-73.96142578125,40.760353088378906,-73.952972412109375,40.772052764892578,N,148 +id1527653,1,2016-01-05 09:58:56,2016-01-05 10:02:45,1,-74.001426696777344,40.741142272949219,-74.005119323730469,40.746322631835938,N,229 +id2197661,2,2016-04-14 08:22:01,2016-04-14 08:41:54,2,-73.948806762695312,40.778263092041016,-74.007102966308594,40.703685760498047,N,1193 +id1277602,2,2016-03-13 07:15:53,2016-03-13 07:36:40,1,-73.782997131347656,40.648536682128906,-73.975028991699219,40.746692657470703,N,1247 +id3013151,1,2016-05-24 19:18:21,2016-05-24 19:36:39,1,-73.887611389160156,40.753116607666016,-73.964591979980469,40.756305694580078,Y,1098 +id3190810,1,2016-06-27 00:23:10,2016-06-27 00:27:32,1,-73.955970764160156,40.772178649902344,-73.945930480957031,40.777587890625,N,262 +id0913348,2,2016-02-02 20:50:31,2016-02-02 20:59:07,1,-73.979331970214844,40.766578674316406,-73.990997314453125,40.750583648681641,N,516 +id1601825,1,2016-02-28 15:03:42,2016-02-28 15:23:16,3,-73.967323303222656,40.763107299804688,-73.976249694824219,40.776447296142578,N,1174 +id3565967,1,2016-01-25 19:53:27,2016-01-25 20:06:42,1,-74.008758544921875,40.713977813720703,-74.002731323242188,40.76068115234375,N,795 +id0086654,1,2016-05-31 18:49:57,2016-05-31 18:54:31,1,-73.966041564941406,40.789649963378906,-73.966835021972656,40.801921844482422,N,274 +id1884929,2,2016-03-08 00:13:56,2016-03-08 00:21:47,1,-73.979728698730469,40.752716064453125,-73.973838806152344,40.743846893310547,N,471 +id2070923,1,2016-03-20 14:40:40,2016-03-20 15:13:21,3,-73.986183166503906,40.760013580322266,-73.870452880859375,40.773689270019531,N,1961 +id3239447,2,2016-06-01 15:16:48,2016-06-01 15:33:46,5,-73.951957702636719,40.769355773925781,-73.965873718261719,40.762954711914062,N,1018 +id3941634,1,2016-02-01 09:07:20,2016-02-01 09:32:10,1,-73.989341735839844,40.758197784423828,-74.002349853515625,40.719535827636719,N,1490 +id3395948,2,2016-01-22 18:56:31,2016-01-22 19:13:37,1,-73.950782775878906,40.785850524902344,-73.951820373535156,40.826961517333984,N,1026 +id0787604,2,2016-03-06 15:54:31,2016-03-06 16:19:54,5,-73.996025085449219,40.740276336669922,-73.995681762695313,40.767917633056641,N,1523 +id0579703,2,2016-05-07 17:24:14,2016-05-07 17:47:54,1,-73.991432189941406,40.754909515380859,-73.9892578125,40.721748352050781,N,1420 +id1393499,2,2016-02-05 11:52:48,2016-02-05 12:03:10,1,-73.979255676269531,40.777523040771484,-73.968208312988281,40.765163421630859,N,622 +id3512178,2,2016-04-03 13:32:38,2016-04-03 13:35:42,1,-73.994102478027344,40.751148223876953,-73.988998413085938,40.757759094238281,N,184 +id0716407,1,2016-03-05 16:38:12,2016-03-05 16:52:52,3,-74.00152587890625,40.756706237792969,-73.982856750488281,40.756969451904297,N,880 +id3129593,2,2016-04-09 18:50:26,2016-04-09 19:03:01,6,-73.970291137695313,40.759540557861328,-73.988807678222656,40.744598388671875,N,755 +id3536063,2,2016-01-08 06:53:24,2016-01-08 06:56:38,1,-74.000801086425781,40.731822967529297,-73.992927551269531,40.742687225341797,N,194 +id2705199,2,2016-03-12 12:32:32,2016-03-12 12:44:47,1,-73.978721618652344,40.752490997314453,-74.003311157226563,40.731361389160156,N,735 +id2300705,1,2016-06-03 08:29:28,2016-06-03 08:39:15,1,-73.955711364746094,40.779430389404297,-73.959678649902344,40.773937225341797,N,587 +id1971686,2,2016-01-26 17:54:39,2016-01-26 18:02:34,1,-73.962272644042969,40.773242950439453,-73.958305358886719,40.783416748046875,N,475 +id3293804,2,2016-02-08 21:26:06,2016-02-08 21:39:21,1,-73.991218566894531,40.747283935546875,-73.965110778808594,40.757579803466797,N,795 +id0919863,1,2016-02-26 14:54:09,2016-02-26 14:56:53,2,-73.96240234375,40.770687103271484,-73.958786010742187,40.773185729980469,N,164 +id2010188,1,2016-03-04 17:56:55,2016-03-04 18:16:01,2,-73.994476318359375,40.750217437744141,-73.978347778320312,40.783077239990234,N,1146 +id3106807,2,2016-01-18 06:25:56,2016-01-18 06:41:34,1,-73.986831665039062,40.721218109130859,-73.93267822265625,40.698863983154297,N,938 +id3813385,2,2016-03-24 20:14:20,2016-03-24 20:40:57,1,-73.991470336914063,40.756538391113281,-73.992958068847656,40.701145172119141,N,1597 +id1233913,1,2016-01-19 21:27:28,2016-01-19 21:36:34,1,-73.982627868652344,40.756542205810547,-73.983543395996094,40.775825500488281,N,546 +id1212718,1,2016-02-24 16:54:17,2016-02-24 17:05:31,1,-73.995536804199219,40.759357452392578,-73.979652404785156,40.758331298828125,N,674 +id0095034,1,2016-02-23 09:59:16,2016-02-23 10:25:20,1,-73.957687377929688,40.785091400146484,-73.988578796386719,40.745315551757813,N,1564 +id0211724,2,2016-04-16 17:08:59,2016-04-16 17:26:58,1,-73.978294372558594,40.737266540527344,-73.950592041015625,40.761455535888672,N,1079 +id3249642,2,2016-06-07 17:24:06,2016-06-07 17:39:12,1,-74.000419616699219,40.757675170898437,-73.98638916015625,40.753696441650391,N,906 +id1217028,1,2016-01-30 20:24:40,2016-01-30 20:41:07,1,-73.985343933105469,40.758796691894531,-73.995506286621094,40.739154815673828,N,987 +id3728374,1,2016-02-18 12:45:54,2016-02-18 12:54:57,1,-74.001876831054688,40.730327606201172,-73.987167358398438,40.736572265625,N,543 +id2533158,1,2016-03-12 23:53:52,2016-03-12 23:57:57,1,-73.986671447753906,40.733921051025391,-73.991584777832031,40.726589202880859,N,245 +id1210332,1,2016-01-29 10:30:19,2016-01-29 10:36:21,1,-73.959754943847656,40.773849487304688,-73.951148986816406,40.775638580322266,N,362 +id1633393,1,2016-06-06 23:20:00,2016-06-06 23:32:11,1,-73.982292175292969,40.770427703857422,-73.975212097167969,40.752811431884766,N,731 +id2873511,2,2016-04-10 19:52:22,2016-04-10 20:05:19,1,-73.992057800292969,40.749290466308594,-73.981559753417969,40.736911773681641,N,777 +id0593611,2,2016-03-01 17:24:45,2016-03-01 17:26:18,1,-73.962959289550781,40.778053283691406,-73.96319580078125,40.775070190429687,N,93 +id2330596,2,2016-05-20 18:45:26,2016-05-20 19:00:26,5,-73.993370056152344,40.736209869384766,-74.008460998535156,40.734878540039063,N,900 +id2429284,1,2016-02-15 08:21:42,2016-02-15 08:28:50,1,-73.945045471191406,40.77679443359375,-73.961318969726563,40.765792846679688,N,428 +id0452019,2,2016-05-25 11:47:53,2016-05-25 12:00:31,1,-73.987983703613281,40.738300323486328,-73.998046875,40.719600677490234,N,758 +id3175550,1,2016-06-13 08:42:07,2016-06-13 08:55:43,1,-73.981986999511719,40.743427276611328,-73.976799011230469,40.762928009033203,N,816 +id1496788,2,2016-06-03 10:54:01,2016-06-03 11:09:02,5,-73.955787658691406,40.784931182861328,-73.957557678222656,40.770175933837891,N,901 +id2029597,2,2016-06-11 17:26:14,2016-06-11 18:08:30,5,-73.997276306152344,40.736808776855469,-73.957771301269531,40.773540496826172,N,2536 +id3838727,1,2016-04-12 11:11:57,2016-04-12 11:19:39,1,-73.984451293945313,40.736850738525391,-73.993400573730469,40.729793548583984,N,462 +id2753578,2,2016-02-19 09:23:53,2016-02-19 09:35:19,2,-73.956199645996094,40.7823486328125,-73.98333740234375,40.771091461181641,N,686 +id0107017,1,2016-01-21 08:24:21,2016-01-21 08:31:55,1,-74.006301879882813,40.717071533203125,-74.007423400878906,40.733207702636719,N,454 +id2178976,2,2016-05-02 22:16:14,2016-05-02 22:29:01,1,-73.973358154296875,40.752601623535156,-73.9776611328125,40.779209136962891,N,767 +id1216113,2,2016-01-24 13:28:37,2016-01-24 13:49:56,3,-73.956321716308594,40.774013519287109,-73.861610412597656,40.768253326416016,N,1279 +id3342124,1,2016-02-05 20:28:39,2016-02-05 20:30:02,1,-73.996047973632813,40.761909484863281,-73.990509033203125,40.761085510253906,N,83 +id3949431,1,2016-04-17 13:38:08,2016-04-17 14:05:15,1,-73.919418334960937,40.743522644042969,-73.986137390136719,40.767669677734375,N,1627 +id3795256,1,2016-01-10 00:17:26,2016-01-10 00:25:27,1,-73.991020202636719,40.760879516601563,-73.977798461914063,40.753280639648438,N,481 +id2979000,1,2016-02-14 02:23:07,2016-02-14 02:24:47,4,-73.985572814941406,40.732887268066406,-73.986595153808594,40.729988098144531,N,100 +id0979624,1,2016-03-18 21:45:49,2016-03-18 21:50:24,1,-73.966346740722656,40.804733276367188,-73.972915649414063,40.793327331542969,N,275 +id2589892,1,2016-03-01 12:52:17,2016-03-01 13:15:51,1,-73.973045349121094,40.753196716308594,-73.992820739746094,40.747852325439453,N,1414 +id1608844,1,2016-03-04 21:11:11,2016-03-04 21:47:04,1,-73.99322509765625,40.721656799316406,-73.938674926757812,40.845592498779297,N,2153 +id1492362,2,2016-06-08 21:31:59,2016-06-08 21:45:48,1,-74.015983581542969,40.71112060546875,-73.987327575683594,40.696300506591797,N,829 +id0004017,2,2016-05-22 02:28:48,2016-05-22 02:31:07,5,-74.002449035644531,40.750141143798828,-73.996894836425781,40.753566741943359,N,139 +id0911820,2,2016-01-29 20:35:35,2016-01-29 20:50:16,2,-74.005760192871094,40.735931396484375,-73.991004943847656,40.726905822753906,N,881 +id1124501,2,2016-03-01 18:37:26,2016-03-01 18:49:22,1,-73.974845886230469,40.746757507324219,-73.990715026855469,40.750900268554687,N,716 +id0207316,1,2016-04-13 15:00:59,2016-04-13 15:31:51,1,-73.981880187988281,40.763477325439453,-74.015518188476563,40.711181640625,N,1852 +id2980816,2,2016-06-15 12:57:40,2016-06-15 13:19:03,3,-73.998939514160156,40.764141082763672,-74.014419555664063,40.712661743164062,N,1283 +id3068539,2,2016-04-15 21:47:27,2016-04-15 22:06:52,5,-73.978500366210938,40.725521087646484,-73.991867065429688,40.749076843261719,N,1165 +id0216451,2,2016-06-10 02:20:29,2016-06-10 02:44:45,1,-73.969482421875,40.757793426513672,-73.909248352050781,40.707065582275391,N,1456 +id2547152,1,2016-05-20 10:05:31,2016-05-20 10:09:52,1,-73.957756042480469,40.782146453857422,-73.963424682617188,40.773532867431641,N,261 +id2095525,1,2016-04-11 10:22:19,2016-04-11 10:30:57,1,-73.991531372070313,40.750209808349609,-73.983848571777344,40.744949340820313,N,518 +id0816020,2,2016-04-20 14:26:26,2016-04-20 14:38:04,1,-73.990005493164062,40.734691619873047,-73.990043640136719,40.734233856201172,N,698 +id0487870,1,2016-05-19 23:45:16,2016-05-20 00:01:37,1,-73.979881286621094,40.714023590087891,-73.997222900390625,40.746856689453125,N,981 +id3204437,1,2016-02-12 18:51:06,2016-02-12 18:59:10,1,-73.988754272460938,40.737957000732422,-74.002021789550781,40.746776580810547,N,484 +id0198278,1,2016-05-23 18:49:45,2016-05-23 19:04:40,1,-73.973091125488281,40.780326843261719,-73.993827819824219,40.752250671386719,N,895 +id3492574,1,2016-05-21 21:53:50,2016-05-21 22:02:59,1,-74.002830505371094,40.728530883789063,-74.006278991699219,40.733970642089844,N,549 +id0650731,1,2016-02-20 19:47:56,2016-02-20 19:55:25,1,-73.961723327636719,40.779510498046875,-73.980560302734375,40.770023345947266,N,449 +id0267287,1,2016-03-27 12:31:48,2016-03-27 12:39:38,1,-73.94561767578125,40.751613616943359,-73.945632934570312,40.751628875732422,N,470 +id2004943,2,2016-05-19 20:32:44,2016-05-19 20:45:40,2,-73.990081787109375,40.737087249755859,-73.990859985351563,40.755516052246094,N,776 +id2797733,1,2016-06-26 14:20:37,2016-06-26 14:29:06,1,-73.969764709472656,40.757877349853516,-73.980537414550781,40.767539978027344,N,509 +id0750769,1,2016-05-12 10:52:33,2016-05-12 11:19:56,1,-73.980751037597656,40.761241912841797,-73.870834350585938,40.774078369140625,N,1643 +id1887954,1,2016-03-18 18:53:31,2016-03-18 18:58:26,1,-73.987869262695312,40.75909423828125,-73.990043640136719,40.764755249023438,N,295 +id3916542,2,2016-06-20 18:35:02,2016-06-20 18:45:19,1,-73.979156494140625,40.752880096435547,-73.980186462402344,40.764991760253906,N,617 +id3269537,2,2016-01-21 09:17:21,2016-01-21 09:36:07,1,-74.00628662109375,40.744686126708984,-73.975433349609375,40.755565643310547,N,1126 +id0792987,2,2016-05-12 06:20:22,2016-05-12 06:24:30,1,-73.976570129394531,40.780666351318359,-73.97113037109375,40.794403076171875,N,248 +id3749950,2,2016-04-18 09:43:50,2016-04-18 10:15:03,1,-73.974044799804687,40.750331878662109,-73.963966369628906,40.807773590087891,N,1873 +id1229898,2,2016-02-16 11:51:44,2016-02-16 11:56:48,1,-73.992912292480469,40.730068206787109,-73.997077941894531,40.725120544433594,N,304 +id0008865,2,2016-02-08 15:49:17,2016-02-08 15:58:34,1,-73.965347290039063,40.7908935546875,-73.982673645019531,40.774978637695312,N,557 +id0688744,2,2016-02-06 20:00:42,2016-02-06 20:10:54,3,-73.993301391601563,40.767810821533203,-73.9886474609375,40.756721496582031,N,612 +id1405230,2,2016-01-08 14:37:22,2016-01-08 14:54:42,3,-73.980781555175781,40.782646179199219,-73.968360900878906,40.762252807617188,N,1040 +id2708434,1,2016-03-17 21:20:21,2016-03-17 21:39:13,1,-73.995574951171875,40.749130249023438,-73.962448120117188,40.766899108886719,N,1132 +id0832033,1,2016-06-09 22:45:52,2016-06-09 23:10:16,1,-73.991363525390625,40.749801635742187,-73.958961486816406,40.76239013671875,N,1464 +id0817333,2,2016-06-09 21:22:57,2016-06-09 21:37:26,1,-73.99267578125,40.758342742919922,-73.976005554199219,40.744976043701172,N,869 +id3702327,2,2016-01-10 14:57:55,2016-01-10 15:09:58,1,-73.993675231933594,40.749786376953125,-73.973670959472656,40.750289916992188,N,723 +id2418561,2,2016-02-04 01:02:57,2016-02-04 01:11:39,6,-73.974472045898438,40.754848480224609,-73.974472045898438,40.754848480224609,N,522 +id3079943,2,2016-06-02 20:29:20,2016-06-02 20:30:35,2,-74.005081176757813,40.722801208496094,-74.002517700195313,40.729019165039063,N,75 +id0456131,1,2016-04-19 19:58:43,2016-04-19 20:01:39,1,-73.960563659667969,40.797542572021484,-73.970695495605469,40.795219421386719,N,176 +id1533649,2,2016-05-23 20:40:44,2016-05-23 20:57:07,1,-73.978492736816406,40.762149810791016,-74.005752563476563,40.740161895751953,N,983 +id3867209,1,2016-05-21 19:44:00,2016-05-21 19:46:52,1,-74.001792907714844,40.726200103759766,-74.007286071777344,40.726657867431641,N,172 +id2661996,2,2016-03-08 17:47:15,2016-03-08 18:05:47,1,-73.980766296386719,40.750057220458984,-73.995223999023437,40.718643188476563,N,1112 +id1244454,2,2016-02-29 07:47:34,2016-02-29 07:53:30,1,-73.965850830078125,40.762306213378906,-73.956443786621094,40.767986297607422,N,356 +id1066959,1,2016-05-01 21:15:35,2016-05-01 21:55:45,1,-73.993499755859375,40.7181396484375,-73.8841552734375,40.747665405273438,N,2410 +id1322077,1,2016-02-22 07:42:30,2016-02-22 07:51:53,1,-73.982795715332031,40.739479064941406,-73.985542297363281,40.756244659423828,N,563 +id0773731,1,2016-03-16 19:49:13,2016-03-16 19:58:07,1,-74.009101867675781,40.726142883300781,-73.989616394042969,40.740711212158203,N,534 +id2188806,2,2016-02-28 21:38:11,2016-02-28 21:48:01,3,-73.986701965332031,40.722248077392578,-73.992324829101563,40.698898315429688,N,590 +id1119809,1,2016-06-26 04:46:44,2016-06-26 05:01:24,1,-73.980804443359375,40.729904174804688,-73.950469970703125,40.684909820556641,N,880 +id0374221,1,2016-01-09 04:49:46,2016-01-09 04:55:18,3,-73.916069030761719,40.770336151123047,-73.925369262695313,40.771808624267578,N,332 +id0341965,2,2016-04-02 20:09:43,2016-04-02 20:28:58,1,-73.897407531738281,40.754161834716797,-73.877006530761719,40.740989685058594,N,1155 +id0716595,1,2016-04-10 18:17:23,2016-04-10 18:29:47,1,-73.95025634765625,40.787097930908203,-73.978973388671875,40.772407531738281,N,744 +id2263214,1,2016-06-01 12:48:09,2016-06-01 12:57:05,3,-73.976570129394531,40.780582427978516,-73.981887817382812,40.767959594726562,N,536 +id3431110,2,2016-02-08 06:37:25,2016-02-08 06:40:00,2,-73.961166381835937,40.760578155517578,-73.952621459960937,40.7723388671875,N,155 +id0266018,1,2016-04-24 12:49:54,2016-04-24 12:56:30,1,-73.964744567871094,40.75921630859375,-73.976425170898437,40.764209747314453,N,396 +id1078540,2,2016-05-21 19:41:41,2016-05-21 19:54:36,1,-74.004440307617188,40.742210388183594,-74.010208129882813,40.719589233398438,N,775 +id2497237,2,2016-01-03 09:40:36,2016-01-03 09:56:37,1,-73.989158630371094,40.774379730224609,-73.979438781738281,40.742210388183594,N,961 +id3470715,2,2016-06-01 14:17:19,2016-06-01 14:52:31,2,-73.9893798828125,40.750579833984375,-73.870460510253906,40.773700714111328,N,2112 +id3481005,2,2016-02-12 17:07:56,2016-02-12 17:29:52,1,-73.975433349609375,40.758140563964844,-74.006561279296875,40.732124328613281,N,1316 +id3763205,1,2016-05-19 14:57:24,2016-05-19 15:14:27,2,-73.999557495117188,40.722103118896484,-73.9990234375,40.741996765136719,N,1023 +id0642755,2,2016-06-22 21:15:47,2016-06-22 21:23:35,5,-73.973129272460938,40.757839202880859,-73.959709167480469,40.76947021484375,N,468 +id3194026,2,2016-03-08 14:44:37,2016-03-08 14:51:08,1,-73.991127014160156,40.733261108398437,-74.005271911621094,40.741798400878906,N,391 +id1482603,1,2016-05-29 01:21:05,2016-05-29 01:36:42,1,-73.951065063476562,40.78607177734375,-73.987762451171875,40.721321105957031,N,937 +id0399264,1,2016-05-05 00:21:46,2016-05-05 00:42:11,1,-73.863563537597656,40.769618988037109,-73.98529052734375,40.691600799560547,N,1225 +id0809546,2,2016-06-08 21:12:57,2016-06-08 21:30:23,1,-73.988990783691406,40.757770538330078,-73.951606750488281,40.779289245605469,N,1046 +id3645100,2,2016-02-02 08:47:22,2016-02-02 08:52:02,4,-73.977401733398437,40.779331207275391,-73.982513427734375,40.772270202636719,N,280 +id0006050,1,2016-06-18 20:31:44,2016-06-18 20:37:35,3,-73.98193359375,40.746425628662109,-73.991119384765625,40.749370574951172,N,351 +id2203743,1,2016-06-13 17:52:53,2016-06-13 18:16:34,1,-73.990913391113281,40.745624542236328,-73.985298156738281,40.763282775878906,N,1421 +id1185326,1,2016-05-03 17:02:49,2016-05-03 17:07:05,1,-73.9884033203125,40.737091064453125,-73.991943359375,40.727210998535156,N,256 +id3390137,2,2016-03-26 11:52:04,2016-03-26 11:58:10,1,-73.964569091796875,40.7606201171875,-73.974281311035156,40.736808776855469,N,366 +id0256233,1,2016-05-22 20:27:15,2016-05-22 20:41:15,1,-73.965324401855469,40.791072845458984,-73.992698669433594,40.766838073730469,N,840 +id3847828,2,2016-03-27 20:19:45,2016-03-27 20:28:39,2,-73.981353759765625,40.741310119628906,-73.983505249023437,40.755706787109375,N,534 +id0272881,2,2016-01-03 02:31:57,2016-01-03 02:35:39,1,-73.994682312011719,40.760509490966797,-73.98883056640625,40.777919769287109,N,222 +id2092832,2,2016-02-29 22:52:43,2016-02-29 22:58:50,2,-73.990196228027344,40.740791320800781,-73.978218078613281,40.751079559326172,N,367 +id0911113,2,2016-01-07 02:00:41,2016-01-07 02:16:00,2,-73.992401123046875,40.724620819091797,-73.987808227539062,40.671630859375,N,919 +id3851715,1,2016-01-14 17:19:28,2016-01-14 17:30:36,1,-73.985069274902344,40.768978118896484,-73.996185302734375,40.746913909912109,N,668 +id1121731,2,2016-02-13 14:00:22,2016-02-13 14:33:38,1,-73.972640991210937,40.780811309814453,-74.000152587890625,40.735038757324219,N,1996 +id1968594,1,2016-02-12 07:29:49,2016-02-12 07:40:15,1,-73.992012023925781,40.725746154785156,-73.991584777832031,40.749088287353516,N,626 +id0271329,2,2016-03-28 14:23:50,2016-03-28 14:30:51,3,-74.001388549804688,40.756912231445313,-73.995292663574219,40.749908447265625,N,421 +id0746086,1,2016-05-15 00:58:49,2016-05-15 01:08:56,1,-73.989082336425781,40.776927947998047,-73.941673278808594,40.838298797607422,N,607 +id1140878,2,2016-04-14 09:33:53,2016-04-14 09:40:26,6,-73.975250244140625,40.752719879150391,-73.985557556152344,40.747268676757813,N,393 +id0816210,1,2016-03-26 15:15:02,2016-03-26 15:20:17,1,-73.97979736328125,40.784488677978516,-73.982414245605469,40.772354125976562,N,315 +id0955765,1,2016-06-18 01:53:22,2016-06-18 01:57:29,1,-73.800811767578125,40.708389282226563,-73.807647705078125,40.715663909912109,N,247 +id2799406,1,2016-02-23 13:45:45,2016-02-23 13:54:53,1,-73.990798950195313,40.755645751953125,-73.985153198242188,40.747650146484375,N,548 +id3821975,2,2016-05-31 22:05:47,2016-05-31 22:18:30,2,-73.98236083984375,40.773311614990234,-73.951286315917969,40.773101806640625,N,763 +id3377132,2,2016-04-19 09:25:02,2016-04-19 09:44:28,5,-73.988288879394531,40.727882385253906,-73.974945068359375,40.756610870361328,N,1166 +id3989807,2,2016-06-14 08:23:53,2016-06-14 08:38:30,3,-73.953948974609375,40.770732879638672,-73.971687316894531,40.757190704345703,N,877 +id2221454,1,2016-04-11 23:30:39,2016-04-11 23:35:22,2,-73.980728149414063,40.751762390136719,-73.987625122070313,40.742374420166016,N,283 +id2762396,2,2016-01-24 15:18:05,2016-01-24 15:23:02,6,-74.003639221191406,40.726985931396484,-74.003761291503906,40.717578887939453,N,297 +id3137733,1,2016-03-21 11:30:21,2016-03-21 11:45:50,1,-73.978248596191406,40.752670288085938,-73.983695983886719,40.766006469726562,N,929 +id1435019,1,2016-06-25 18:09:42,2016-06-25 18:11:59,1,-73.957008361816406,40.770919799804687,-73.962646484375,40.766624450683594,N,137 +id3673478,2,2016-05-17 20:13:52,2016-05-17 20:30:31,2,-73.993438720703125,40.736370086669922,-73.974563598632812,40.751720428466797,N,999 +id2130148,1,2016-02-13 19:09:25,2016-02-13 19:19:50,1,-73.994087219238281,40.751014709472656,-73.975242614746094,40.7510986328125,N,625 +id2526802,2,2016-04-28 17:19:32,2016-04-28 18:18:24,1,-73.986427307128906,40.740058898925781,-73.783493041992188,40.643779754638672,N,3532 +id0351334,1,2016-04-08 19:50:08,2016-04-08 19:57:41,4,-73.975364685058594,40.789676666259766,-73.988525390625,40.778514862060547,N,453 +id3123145,2,2016-03-07 19:06:34,2016-03-07 19:19:37,1,-74.010093688964844,40.720890045166016,-73.990013122558594,40.767101287841797,N,783 +id3917382,1,2016-05-15 19:35:06,2016-05-15 20:17:46,1,-73.986358642578125,40.758804321289063,-73.994895935058594,40.721363067626953,N,2560 +id3070941,2,2016-05-03 18:51:11,2016-05-03 18:57:46,2,-73.954231262207031,40.789989471435547,-73.950332641601563,40.779911041259766,N,395 +id3755205,2,2016-06-24 12:46:11,2016-06-24 12:54:53,5,-73.978492736816406,40.748210906982422,-73.994789123535156,40.736568450927734,N,522 +id3067550,1,2016-03-22 11:13:28,2016-03-22 11:20:45,1,-74.004638671875,40.735404968261719,-73.991607666015625,40.739997863769531,N,437 +id2871516,1,2016-06-19 00:45:20,2016-06-19 01:27:46,2,-73.995620727539062,40.749267578125,-73.936965942382812,40.851879119873047,N,2546 +id3188221,1,2016-04-20 17:07:16,2016-04-20 17:17:18,1,-73.974578857421875,40.778163909912109,-73.964973449707031,40.775119781494141,N,602 +id3558671,1,2016-06-02 12:01:05,2016-06-02 12:25:33,1,-73.999473571777344,40.743808746337891,-73.9798583984375,40.743564605712891,N,1468 +id2996714,2,2016-06-04 19:08:18,2016-06-04 19:19:42,1,-73.985382080078125,40.744186401367188,-74.0025634765625,40.730453491210938,N,684 +id3345287,1,2016-06-09 12:44:56,2016-06-09 13:07:14,1,-73.952568054199219,40.776645660400391,-73.983573913574219,40.761955261230469,N,1338 +id0289940,1,2016-02-25 20:50:01,2016-02-25 21:03:06,1,-74.003067016601563,40.733585357666016,-73.990509033203125,40.762538909912109,N,785 +id1283200,2,2016-06-13 06:46:54,2016-06-13 06:57:39,1,-73.956817626953125,40.746089935302734,-73.963417053222656,40.718559265136719,N,645 +id1538139,2,2016-02-11 23:56:31,2016-02-12 00:22:58,6,-73.98583984375,40.757831573486328,-73.954856872558594,40.734439849853516,N,1587 +id0787947,2,2016-04-20 11:27:41,2016-04-20 11:30:53,1,-73.997032165527344,40.725601196289063,-74.002891540527344,40.730869293212891,N,192 +id1914235,1,2016-02-22 14:40:42,2016-02-22 14:48:39,2,-73.9588623046875,40.764247894287109,-73.970108032226563,40.759819030761719,N,477 +id1163004,2,2016-05-06 08:57:53,2016-05-06 09:01:49,1,-73.95843505859375,40.800800323486328,-73.964561462402344,40.805770874023437,N,236 +id0473522,2,2016-01-07 08:11:27,2016-01-07 08:12:51,1,-73.945953369140625,40.777626037597656,-73.948051452636719,40.774578094482422,N,84 +id3809217,2,2016-02-10 06:34:44,2016-02-10 06:40:38,1,-73.989677429199219,40.7574462890625,-73.971603393554688,40.762336730957031,N,354 +id1906114,1,2016-03-23 19:26:48,2016-03-23 19:32:33,1,-73.979202270507812,40.750522613525391,-73.98870849609375,40.736686706542969,N,345 +id2960339,1,2016-04-14 10:00:06,2016-04-14 10:05:47,1,-73.984580993652344,40.728675842285156,-73.988792419433594,40.736545562744141,N,341 +id0102456,2,2016-02-06 13:25:38,2016-02-06 13:31:40,5,-73.982475280761719,40.7774658203125,-73.970794677734375,40.789276123046875,N,362 +id3254514,1,2016-04-06 19:26:44,2016-04-06 19:45:08,1,-73.981002807617187,40.781818389892578,-73.9849853515625,40.759632110595703,N,1104 +id0142336,1,2016-02-07 17:35:25,2016-02-07 18:09:36,1,-73.993705749511719,40.749904632568359,-73.982032775878906,40.784725189208984,N,2051 +id1203616,1,2016-02-26 10:14:00,2016-02-26 10:59:14,2,-73.979194641113281,40.766860961914062,-73.98333740234375,40.645618438720703,N,2714 +id3918731,1,2016-04-05 21:16:58,2016-04-05 21:22:51,1,-73.983482360839844,40.760044097900391,-73.991218566894531,40.750110626220703,N,353 +id3950641,1,2016-05-24 08:14:25,2016-05-24 08:16:42,1,-74.001762390136719,40.730632781982422,-73.9974365234375,40.736545562744141,N,137 +id2012514,2,2016-04-27 18:50:31,2016-04-27 18:59:44,2,-73.976310729980469,40.785877227783203,-73.983146667480469,40.769210815429687,N,553 +id0165383,2,2016-03-11 07:45:17,2016-03-11 08:35:07,1,-73.963912963867188,40.808189392089844,-73.780448913574219,40.645900726318359,N,2990 +id0143664,1,2016-01-07 09:29:22,2016-01-07 10:03:37,2,-73.870780944824219,40.773643493652344,-73.992835998535156,40.756668090820312,N,2055 +id0727507,1,2016-02-05 00:24:57,2016-02-05 00:54:00,1,-73.979896545410156,40.754463195800781,-73.964218139648437,40.644233703613281,N,1743 +id3590703,1,2016-05-02 18:41:48,2016-05-02 18:56:04,1,-74.008529663085938,40.719818115234375,-73.984916687011719,40.727897644042969,N,856 +id3776212,1,2016-06-30 12:11:03,2016-06-30 12:21:31,1,-73.954429626464844,40.821193695068359,-73.966293334960938,40.804988861083984,N,628 +id3873431,2,2016-02-22 20:44:59,2016-02-22 20:52:59,5,-73.952423095703125,40.766490936279297,-73.9556884765625,40.787841796875,N,480 +id3054362,1,2016-01-27 08:51:58,2016-01-27 09:09:35,1,-73.992530822753906,40.743659973144531,-73.997268676757813,40.724674224853516,N,1057 +id0957424,1,2016-05-17 08:43:22,2016-05-17 08:58:38,1,-73.976615905761719,40.752262115478516,-73.982505798339844,40.758079528808594,N,916 +id0455362,2,2016-04-01 21:30:04,2016-04-01 22:07:13,1,-74.005531311035156,40.740699768066406,-73.952056884765625,40.77716064453125,N,2229 +id0037484,1,2016-02-17 16:06:10,2016-02-17 16:15:06,1,-73.964126586914062,40.773349761962891,-73.967437744140625,40.787868499755859,N,536 +id0324660,2,2016-02-09 19:37:09,2016-02-09 19:53:46,1,-73.986053466796875,40.751903533935547,-73.972564697265625,40.797592163085938,N,997 +id1129863,2,2016-01-19 09:34:15,2016-01-19 09:50:03,1,-73.994224548339844,40.751003265380859,-73.9765625,40.75006103515625,N,948 +id1224876,1,2016-03-17 12:39:26,2016-03-17 13:01:26,1,-73.873092651367188,40.774127960205078,-73.782150268554688,40.644313812255859,N,1320 +id2587962,1,2016-05-15 07:11:05,2016-05-15 07:13:53,1,-73.990623474121094,40.71832275390625,-73.980621337890625,40.721672058105469,N,168 +id3613072,2,2016-06-20 18:25:47,2016-06-20 18:34:12,2,-74.007667541503906,40.742790222167969,-73.986953735351563,40.742240905761719,N,505 +id3931106,1,2016-05-08 05:04:43,2016-05-08 05:14:14,1,-73.946952819824219,40.772140502929688,-73.986328125,40.761585235595703,N,571 +id1161668,1,2016-03-29 21:55:06,2016-03-29 21:59:47,1,-73.996894836425781,40.742286682128906,-73.986091613769531,40.744747161865234,N,281 +id2579219,1,2016-03-15 19:04:58,2016-03-15 19:16:16,1,-73.969879150390625,40.753074645996094,-73.975028991699219,40.761203765869141,N,678 +id0255813,2,2016-01-19 17:37:12,2016-01-19 17:59:05,1,-73.981033325195313,40.737136840820313,-73.991233825683594,40.756114959716797,N,1313 +id1486038,2,2016-02-16 18:20:54,2016-02-16 18:41:36,1,-74.003227233886719,40.748893737792969,-73.999664306640625,40.711917877197266,N,1242 +id2013782,2,2016-01-06 18:01:52,2016-01-06 18:07:46,4,-74.002433776855469,40.716110229492188,-73.998794555664063,40.734645843505859,N,354 +id1898988,1,2016-05-06 12:42:23,2016-05-06 13:16:45,2,-73.971282958984375,40.764564514160156,-74.004379272460937,40.722400665283203,N,2062 +id0372992,2,2016-04-23 00:28:39,2016-04-23 00:38:01,1,-73.906219482421875,40.768108367919922,-73.867416381835938,40.752861022949219,N,562 +id3251250,1,2016-06-26 22:56:27,2016-06-26 23:00:24,1,-73.991439819335938,40.749797821044922,-73.999130249023437,40.739376068115234,N,237 +id1294422,1,2016-04-21 06:24:29,2016-04-21 06:35:05,1,-73.971183776855469,40.783000946044922,-73.990562438964844,40.751041412353516,N,636 +id2746368,2,2016-03-27 16:16:56,2016-03-27 16:42:27,1,-73.98626708984375,40.76727294921875,-73.997283935546875,40.721687316894531,N,1531 +id1635027,2,2016-06-21 22:56:42,2016-06-21 23:01:26,1,-73.988052368164063,40.749458312988281,-73.979888916015625,40.753070831298828,N,284 +id3381888,2,2016-01-17 14:42:56,2016-01-17 14:54:07,6,-73.973747253417969,40.762958526611328,-73.965011596679688,40.76171875,N,671 +id1323718,1,2016-04-23 16:32:14,2016-04-23 16:37:40,1,-73.981689453125,40.728534698486328,-73.992561340332031,40.735561370849609,N,326 +id0403884,2,2016-03-18 10:51:28,2016-03-18 11:06:12,2,-73.951652526855469,40.825046539306641,-73.939552307128906,40.805240631103516,N,884 +id0861688,2,2016-04-26 11:43:44,2016-04-26 11:55:54,1,-73.965965270996094,40.771030426025391,-73.972206115722656,40.786563873291016,N,730 +id2634563,1,2016-04-04 17:30:06,2016-04-04 17:39:48,1,-73.995002746582031,40.736663818359375,-73.983634948730469,40.721622467041016,N,582 +id1939101,2,2016-04-28 13:26:09,2016-04-28 13:37:44,1,-73.956649780273438,40.783760070800781,-73.968612670898437,40.791549682617188,N,695 +id0819429,1,2016-06-24 22:16:48,2016-06-24 22:30:13,1,-73.99420166015625,40.736408233642578,-74.0028076171875,40.750473022460938,Y,805 +id1357475,2,2016-05-01 17:49:19,2016-05-01 18:02:02,1,-73.994758605957031,40.721176147460938,-74.014533996582031,40.714046478271484,N,763 +id3665084,2,2016-06-02 11:14:33,2016-06-02 11:20:31,5,-73.982711791992188,40.775810241699219,-73.982559204101563,40.763458251953125,N,358 +id3480468,1,2016-04-03 15:36:17,2016-04-03 15:49:42,2,-73.995063781738281,40.739959716796875,-73.979736328125,40.762302398681641,N,805 +id1181486,1,2016-03-31 16:27:57,2016-03-31 16:37:00,1,-73.99053955078125,40.74578857421875,-73.9915771484375,40.754440307617188,N,543 +id2584322,1,2016-03-06 07:21:58,2016-03-06 07:24:47,1,-73.975334167480469,40.741077423095703,-73.981605529785156,40.746608734130859,N,169 +id3850417,1,2016-06-23 00:39:15,2016-06-23 00:44:52,1,-73.99554443359375,40.764842987060547,-73.9854736328125,40.755176544189453,N,337 +id2895178,2,2016-01-18 17:05:53,2016-01-18 17:15:32,1,-73.982330322265625,40.751338958740234,-74.001060485839844,40.736858367919922,N,579 +id3951136,2,2016-02-25 16:39:00,2016-02-25 17:25:34,1,-73.983238220214844,40.744548797607422,-73.871223449707031,40.774261474609375,N,2794 +id3976514,2,2016-01-23 08:47:23,2016-01-23 08:55:03,1,-73.97491455078125,40.761791229248047,-73.989288330078125,40.767745971679688,N,460 +id3649036,2,2016-03-24 21:33:59,2016-03-24 22:22:50,1,-73.983131408691406,40.765903472900391,-73.973625183105469,40.687038421630859,N,2931 +id2999488,2,2016-03-09 16:04:02,2016-03-09 17:23:08,2,-73.978500366210938,40.762420654296875,-73.782806396484375,40.644008636474609,N,4746 +id0751800,2,2016-06-01 07:06:14,2016-06-01 07:09:04,1,-73.983055114746094,40.765777587890625,-73.984703063964844,40.760845184326172,N,170 +id2799508,1,2016-03-12 02:39:59,2016-03-12 02:56:13,1,-73.98907470703125,40.718887329101563,-74.014503479003906,40.708103179931641,N,974 +id3204142,2,2016-05-24 16:14:32,2016-05-24 16:27:29,5,-73.954063415527344,40.767093658447266,-73.963882446289063,40.768157958984375,N,777 +id3945508,2,2016-01-22 16:27:07,2016-01-22 16:37:27,4,-73.938270568847656,40.821331024169922,-73.943138122558594,40.831298828125,N,620 +id3347952,1,2016-04-07 07:33:20,2016-04-07 07:47:39,1,-73.978797912597656,40.753246307373047,-73.953323364257813,40.766529083251953,N,859 +id0520955,1,2016-01-30 01:15:01,2016-01-30 01:24:14,2,-73.994338989257813,40.764236450195313,-73.988029479980469,40.749015808105469,N,553 +id3476491,2,2016-04-07 21:54:53,2016-04-07 22:37:23,3,-74.007316589355469,40.726890563964844,-73.924766540527344,40.827770233154297,N,2550 +id1380292,2,2016-02-25 16:08:21,2016-02-25 16:18:14,1,-73.958122253417969,40.77886962890625,-73.957191467285156,40.770500183105469,N,593 +id2876229,1,2016-01-09 22:45:40,2016-01-09 22:49:11,1,-73.950363159179688,40.779819488525391,-73.957756042480469,40.780403137207031,N,211 +id3894873,2,2016-01-25 10:14:17,2016-01-25 10:18:58,1,-73.9552001953125,40.783218383789063,-73.961669921875,40.774421691894531,N,281 +id2970664,2,2016-04-14 21:30:41,2016-04-14 21:39:53,1,-74.006797790527344,40.735679626464844,-74.015350341796875,40.7099609375,N,552 +id3321706,2,2016-01-10 16:37:21,2016-01-10 16:43:37,1,-73.966567993164063,40.764480590820312,-73.955207824707031,40.7857666015625,N,376 +id0085762,2,2016-05-17 18:10:43,2016-05-17 18:40:22,1,-73.991081237792969,40.727779388427734,-73.988380432128906,40.758979797363281,N,1779 +id3070832,1,2016-05-22 22:54:16,2016-05-22 23:00:55,1,-73.994621276855469,40.750480651855469,-73.999114990234375,40.761116027832031,N,399 +id2357807,2,2016-01-28 22:05:14,2016-01-28 22:23:44,2,-73.872688293457031,40.774223327636719,-73.97308349609375,40.755710601806641,N,1110 +id3295434,1,2016-04-12 18:30:18,2016-04-12 18:57:12,1,-74.011680603027344,40.702823638916016,-73.991371154785156,40.755031585693359,N,1614 +id3329806,1,2016-04-05 14:46:33,2016-04-05 15:03:12,1,-73.995628356933594,40.749092102050781,-73.969497680664063,40.784961700439453,N,999 +id0059470,1,2016-05-17 14:23:24,2016-05-17 14:35:12,1,-74.004539489746094,40.707340240478516,-73.993728637695313,40.720870971679688,N,708 +id3187047,2,2016-04-30 18:28:44,2016-04-30 18:41:37,2,-73.980186462402344,40.759658813476563,-73.967529296875,40.792881011962891,N,773 +id0347076,2,2016-06-09 19:02:25,2016-06-09 19:08:05,1,-73.963432312011719,40.774448394775391,-73.975257873535156,40.782451629638672,N,340 +id1331283,1,2016-04-07 19:01:26,2016-04-07 19:19:16,1,-73.978126525878906,40.773178100585938,-73.94775390625,40.779544830322266,N,1070 +id1700645,1,2016-06-20 12:28:17,2016-06-20 13:01:25,2,-73.872657775878906,40.774223327636719,-73.963798522949219,40.764446258544922,N,1988 +id3103362,2,2016-02-25 01:59:47,2016-02-25 02:08:14,1,-73.983734130859375,40.730968475341797,-73.997100830078125,40.714572906494141,N,507 +id0441380,2,2016-03-23 07:57:19,2016-03-23 08:03:49,1,-73.982025146484375,40.7320556640625,-73.970436096191406,40.749176025390625,N,390 +id2855235,2,2016-05-07 22:02:42,2016-05-07 22:12:32,6,-73.970626831054687,40.798618316650391,-73.983963012695312,40.773761749267578,N,590 +id1376852,2,2016-05-28 01:21:07,2016-05-28 01:27:06,1,-74.006431579589844,40.738811492919922,-74.004806518554688,40.752101898193359,N,359 +id0800592,1,2016-04-25 19:04:01,2016-04-25 19:17:29,1,-73.979270935058594,40.761650085449219,-73.994773864746094,40.750278472900391,N,808 +id0979841,1,2016-01-26 16:22:58,2016-01-26 16:32:40,1,-74.008079528808594,40.7393798828125,-73.992889404296875,40.731063842773437,N,582 +id0867874,2,2016-04-30 10:55:42,2016-04-30 11:16:49,2,-73.976066589355469,40.751548767089844,-74.005767822265625,40.714790344238281,N,1267 +id2456070,2,2016-02-19 20:02:00,2016-02-19 20:22:59,1,-73.9888916015625,40.758743286132813,-73.938873291015625,40.7525634765625,N,1259 +id3469086,2,2016-03-31 09:01:54,2016-03-31 09:17:46,1,-74.003318786621094,40.732891082763672,-74.004974365234375,40.741436004638672,N,952 +id0508116,1,2016-01-11 08:13:31,2016-01-11 08:14:49,2,-73.96038818359375,40.769962310791016,-73.958274841308594,40.772739410400391,N,78 +id1509449,2,2016-01-02 19:22:08,2016-01-02 19:38:41,1,-73.950141906738281,40.785659790039062,-73.975929260253906,40.763881683349609,N,993 +id0085864,2,2016-04-15 14:23:37,2016-04-15 14:56:48,1,-73.958526611328125,40.764366149902344,-73.991943359375,40.749221801757812,N,1991 +id2608795,1,2016-02-04 21:21:12,2016-02-04 21:27:44,1,-73.965293884277344,40.755119323730469,-73.953910827636719,40.774517059326172,N,392 +id0675883,2,2016-02-20 10:31:15,2016-02-20 10:44:13,1,-73.980796813964844,40.741970062255859,-73.991653442382813,40.749359130859375,N,778 +id0849128,1,2016-02-25 17:44:04,2016-02-25 17:48:47,1,-73.97235107421875,40.79388427734375,-73.971122741699219,40.786083221435547,N,283 +id0216033,1,2016-01-30 21:42:33,2016-01-30 21:53:02,1,-73.986846923828125,40.743324279785156,-73.979957580566406,40.733436584472656,N,629 +id2628124,1,2016-01-16 20:55:25,2016-01-16 21:08:30,1,-73.9893798828125,40.7506103515625,-73.950492858886719,40.79217529296875,N,785 +id3799708,1,2016-03-16 13:33:06,2016-03-16 13:47:31,1,-73.992118835449219,40.750251770019531,-73.988578796386719,40.755844116210938,N,865 +id0971197,2,2016-04-06 10:30:24,2016-04-06 11:01:39,5,-74.008529663085938,40.73114013671875,-73.969772338867187,40.757770538330078,N,1875 +id2775569,1,2016-06-10 11:36:50,2016-06-10 11:48:29,1,-73.960067749023438,40.766361236572266,-73.973930358886719,40.762729644775391,N,699 +id3312919,2,2016-04-16 14:30:32,2016-04-16 14:48:04,1,-73.980430603027344,40.775371551513672,-73.988677978515625,40.748931884765625,N,1052 +id0705106,2,2016-01-13 19:35:35,2016-01-13 19:45:21,1,-73.989883422851562,40.735191345214844,-73.985755920410156,40.726219177246094,N,586 +id3368334,2,2016-01-10 09:52:46,2016-01-10 10:01:20,2,-74.002998352050781,40.739944458007813,-73.97808837890625,40.73748779296875,N,514 +id2066606,1,2016-06-28 20:10:54,2016-06-28 20:20:42,1,-73.987213134765625,40.738914489746094,-73.987533569335938,40.725391387939453,N,588 +id0102044,1,2016-06-21 14:57:25,2016-06-21 15:18:32,1,-73.978309631347656,40.763118743896484,-73.991844177246094,40.742599487304687,N,1267 +id3264674,1,2016-01-19 05:13:22,2016-01-19 05:49:44,3,-73.98089599609375,40.763027191162109,-73.783332824707031,40.643817901611328,N,2182 +id0836364,2,2016-02-05 08:48:58,2016-02-05 08:57:22,1,-74.014991760253906,40.717990875244141,-74.006523132324219,40.710109710693359,N,504 +id3713365,1,2016-05-05 09:26:49,2016-05-05 09:40:28,1,-73.987709045410156,40.728691101074219,-73.974281311035156,40.751495361328125,N,819 +id3059109,1,2016-06-09 10:48:10,2016-06-09 10:59:42,1,-73.994316101074219,40.750743865966797,-73.984573364257813,40.755401611328125,N,692 +id0217412,2,2016-04-04 18:39:59,2016-04-04 18:47:01,1,-73.967376708984375,40.793140411376953,-73.955093383789063,40.780292510986328,N,422 +id1460779,1,2016-05-22 02:15:23,2016-05-22 02:38:12,1,-73.982315063476563,40.731204986572266,-73.937210083007813,40.705680847167969,N,1369 +id1691520,1,2016-05-28 02:58:50,2016-05-28 03:02:50,1,-73.969406127929688,40.753768920898438,-73.984764099121094,40.728973388671875,N,240 +id3336503,1,2016-06-27 17:21:30,2016-06-27 17:26:48,1,-73.981422424316406,40.781181335449219,-73.972152709960937,40.788135528564453,N,318 +id3832203,1,2016-02-04 22:19:17,2016-02-04 22:27:37,1,-73.981559753417969,40.747043609619141,-74.004669189453125,40.741752624511719,N,500 +id2092561,1,2016-03-28 06:08:16,2016-03-28 06:11:24,1,-74.001419067382812,40.731174468994141,-74.0089111328125,40.730434417724609,N,188 +id3907503,2,2016-04-28 21:27:38,2016-04-28 21:31:50,1,-73.957473754882813,40.782821655273438,-73.952293395996094,40.79901123046875,N,252 +id2589368,2,2016-06-10 21:58:31,2016-06-10 22:04:06,2,-73.969268798828125,40.769420623779297,-73.980369567871094,40.764949798583984,N,335 +id2565644,2,2016-05-08 12:29:58,2016-05-08 12:31:18,6,-73.959190368652344,40.763431549072266,-73.954010009765625,40.770530700683594,N,80 +id3532514,2,2016-05-24 19:39:41,2016-05-24 20:00:32,1,-74.00885009765625,40.710811614990234,-73.972679138183594,40.678478240966797,N,1251 +id2745745,2,2016-04-03 17:18:00,2016-04-03 17:33:06,1,-73.979080200195313,40.744403839111328,-73.950340270996094,40.783721923828125,N,906 +id3723229,1,2016-05-01 01:11:27,2016-05-01 01:17:05,4,-73.970260620117187,40.756290435791016,-73.97723388671875,40.764408111572266,N,338 +id1238540,2,2016-04-28 20:19:18,2016-04-28 20:30:52,5,-73.959091186523438,40.780181884765625,-73.980049133300781,40.765506744384766,N,694 +id2931773,2,2016-02-13 19:39:11,2016-02-13 19:50:29,1,-73.991317749023437,40.734989166259766,-73.986640930175781,40.722190856933594,N,678 +id3849803,2,2016-06-12 20:54:34,2016-06-12 21:06:56,1,-73.98345947265625,40.726142883300781,-74.007530212402344,40.739402770996094,N,742 +id1709413,1,2016-03-30 15:24:16,2016-03-30 15:35:09,1,-73.949615478515625,40.771106719970703,-73.976142883300781,40.755153656005859,N,653 +id3939871,2,2016-05-13 09:13:33,2016-05-13 09:28:27,1,-73.957740783691406,40.765228271484375,-73.9652099609375,40.790920257568359,N,894 +id1210973,2,2016-01-22 00:28:54,2016-01-22 00:32:44,4,-73.985305786132812,40.763511657714844,-73.978622436523437,40.764881134033203,N,230 +id2651468,2,2016-04-18 18:18:57,2016-04-18 18:23:54,1,-73.991600036621094,40.749950408935547,-73.99127197265625,40.739189147949219,N,297 +id0040582,1,2016-06-02 22:39:11,2016-06-02 22:43:12,1,-73.968437194824219,40.799533843994141,-73.96209716796875,40.796428680419922,N,241 +id2355912,2,2016-01-07 13:24:41,2016-01-07 13:36:23,1,-73.970542907714844,40.752151489257813,-73.990303039550781,40.733921051025391,N,702 +id3780961,2,2016-03-08 22:13:56,2016-03-08 22:18:33,1,-73.987091064453125,40.755146026611328,-73.985885620117187,40.746166229248047,N,277 +id3753498,1,2016-01-08 08:30:22,2016-01-08 08:32:39,1,-73.9791259765625,40.767200469970703,-73.979835510253906,40.770477294921875,N,137 +id1866151,1,2016-05-05 21:56:58,2016-05-05 22:10:15,1,-73.989654541015625,40.733661651611328,-73.969230651855469,40.753108978271484,N,797 +id0015465,1,2016-06-19 06:00:38,2016-06-19 06:10:09,1,-73.950920104980469,40.779319763183594,-73.989356994628906,40.756275177001953,N,571 +id1585134,1,2016-01-21 14:29:32,2016-01-21 14:38:32,1,-73.969779968261719,40.766162872314453,-73.961441040039063,40.779514312744141,N,540 +id3978749,1,2016-02-29 19:22:04,2016-02-29 19:36:20,1,-74.004684448242188,40.741939544677734,-73.976768493652344,40.732429504394531,N,856 +id0636259,1,2016-04-28 09:53:06,2016-04-28 10:17:31,1,-73.978134155273438,40.752590179443359,-73.971527099609375,40.765083312988281,N,1465 +id1760459,1,2016-04-21 15:38:07,2016-04-21 15:45:07,2,-73.973602294921875,40.763465881347656,-73.981582641601562,40.752609252929687,N,420 +id1401100,1,2016-04-17 00:49:21,2016-04-17 00:58:47,2,-73.929908752441406,40.756450653076172,-73.909133911132813,40.774696350097656,N,566 +id0906173,1,2016-01-15 14:00:07,2016-01-15 14:16:08,1,-73.977203369140625,40.758682250976563,-73.958351135253906,40.781711578369141,N,961 +id0535381,1,2016-05-29 00:49:21,2016-05-29 00:53:47,1,-73.951507568359375,40.766571044921875,-73.961830139160156,40.7711181640625,N,266 +id3562327,1,2016-03-19 13:23:10,2016-03-19 13:25:01,1,-73.956199645996094,40.767932891845703,-73.949981689453125,40.772190093994141,N,111 +id1384809,1,2016-04-05 23:06:25,2016-04-05 23:30:35,1,-73.968223571777344,40.763118743896484,-73.884597778320312,40.714664459228516,N,1450 +id0507889,1,2016-05-10 14:37:13,2016-05-10 14:49:51,1,-73.978485107421875,40.761875152587891,-73.990341186523438,40.751346588134766,N,758 +id1776562,2,2016-06-30 12:17:48,2016-06-30 12:28:46,1,-73.989784240722656,40.734035491943359,-73.98089599609375,40.725505828857422,N,658 +id2140530,2,2016-03-23 16:56:19,2016-03-23 17:01:31,1,-73.955810546875,40.779548645019531,-73.952278137207031,40.77471923828125,N,312 +id0365201,1,2016-06-22 18:47:23,2016-06-22 18:51:28,3,-73.990547180175781,40.731002807617187,-73.994293212890625,40.735485076904297,N,245 +id3069183,1,2016-01-15 10:50:43,2016-01-15 11:02:49,1,-73.980186462402344,40.782375335693359,-73.971946716308594,40.799186706542969,N,726 +id0534830,2,2016-03-30 10:30:15,2016-03-30 10:41:12,2,-74.007957458496094,40.710300445556641,-74.001167297363281,40.724098205566406,N,657 +id3752904,1,2016-06-08 18:16:44,2016-06-08 18:24:47,1,-73.961944580078125,40.759700775146484,-73.94842529296875,40.780750274658203,N,483 +id3674701,2,2016-03-18 00:59:40,2016-03-18 01:00:23,5,-74.000839233398437,40.73089599609375,-74.001121520996094,40.731010437011719,N,43 +id1600683,2,2016-05-04 23:59:48,2016-05-05 00:13:10,4,-73.99188232421875,40.726425170898437,-73.94671630859375,40.707965850830078,N,802 +id1166525,2,2016-02-14 04:01:09,2016-02-14 04:02:04,1,-73.993179321289063,40.742568969726563,-73.990592956542969,40.746047973632813,N,55 +id3385208,1,2016-01-29 10:59:38,2016-01-29 11:24:35,1,-73.974136352539062,40.7503662109375,-73.792198181152344,40.644435882568359,N,1497 +id1854472,1,2016-04-11 10:43:23,2016-04-11 10:53:39,1,-73.991233825683594,40.760597229003906,-73.999038696289062,40.753669738769531,N,616 +id0790528,2,2016-03-14 17:01:41,2016-03-14 17:14:21,1,-73.984245300292969,40.749042510986328,-73.999893188476562,40.734073638916016,N,760 +id1508043,2,2016-02-14 09:56:47,2016-02-14 10:13:22,2,-73.961349487304688,40.764869689941406,-73.990692138671875,40.741970062255859,N,995 +id0019663,1,2016-04-07 21:10:29,2016-04-07 21:22:47,1,-73.982231140136719,40.768455505371094,-73.990768432617188,40.750617980957031,N,738 +id0293507,1,2016-01-20 08:03:10,2016-01-20 08:26:55,1,-74.008598327636719,40.707988739013672,-73.976242065429687,40.753696441650391,N,1425 +id2727075,1,2016-02-26 19:05:46,2016-02-26 19:11:44,1,-73.954109191894531,40.730243682861328,-73.955253601074219,40.720298767089844,N,358 +id2328728,1,2016-04-03 00:08:52,2016-04-03 00:24:17,1,-73.97491455078125,40.73504638671875,-74.005424499511719,40.717952728271484,N,925 +id1918191,2,2016-06-15 22:26:48,2016-06-15 22:29:22,5,-73.983436584472656,40.738353729248047,-73.979530334472656,40.732666015625,N,154 +id1991668,2,2016-02-23 21:03:35,2016-02-23 21:15:02,2,-73.970672607421875,40.76495361328125,-73.992034912109375,40.749179840087891,N,687 +id1129058,2,2016-03-18 20:25:00,2016-03-18 20:32:02,6,-73.974411010742188,40.742328643798828,-73.976058959960937,40.751300811767578,N,422 +id1498848,1,2016-06-27 05:03:40,2016-06-27 05:09:05,1,-73.99017333984375,40.756725311279297,-73.975814819335938,40.758136749267578,N,325 +id1306325,1,2016-03-19 01:45:41,2016-03-19 01:49:47,3,-73.997573852539063,40.725605010986328,-73.988479614257813,40.723365783691406,N,246 +id1656564,2,2016-04-02 17:21:36,2016-04-02 17:31:25,2,-73.991928100585938,40.742706298828125,-73.977821350097656,40.763278961181641,N,589 +id3484297,1,2016-06-12 20:01:19,2016-06-12 20:27:27,1,-73.862899780273438,40.769107818603516,-73.988265991210937,40.761421203613281,N,1568 +id1580012,2,2016-06-18 04:10:47,2016-06-18 04:32:40,1,-73.988388061523438,40.718761444091797,-73.94061279296875,40.70159912109375,N,1313 +id3384791,2,2016-04-26 08:21:25,2016-04-26 08:24:18,5,-73.992767333984375,40.730228424072266,-73.994918823242188,40.723213195800781,N,173 +id0399285,2,2016-04-25 09:10:06,2016-04-25 09:26:51,5,-73.992454528808594,40.714046478271484,-73.954254150390625,40.763725280761719,N,1005 +id2770701,2,2016-02-18 19:52:18,2016-02-18 19:56:15,1,-73.97833251953125,40.748619079589844,-73.98504638671875,40.739448547363281,N,237 +id0135157,2,2016-01-31 00:26:11,2016-01-31 00:38:49,1,-74.007431030273437,40.740749359130859,-73.983261108398438,40.748729705810547,N,758 +id2221978,1,2016-04-04 04:42:13,2016-04-04 04:50:54,1,-73.98980712890625,40.7623291015625,-73.995323181152344,40.749656677246094,N,521 +id0612319,2,2016-04-28 11:22:53,2016-04-28 11:26:20,6,-73.964736938476562,40.770088195800781,-73.958229064941406,40.772911071777344,N,207 +id2213602,2,2016-06-29 19:33:06,2016-06-29 19:47:13,1,-74.005317687988281,40.740139007568359,-73.9786376953125,40.75225830078125,N,847 +id1085592,1,2016-01-22 16:18:06,2016-01-22 16:28:13,2,-74.001754760742188,40.709331512451172,-73.999359130859375,40.721687316894531,N,607 +id1958170,1,2016-03-26 17:56:13,2016-03-26 18:22:14,2,-73.953514099121094,40.788692474365234,-73.993080139160156,40.757575988769531,N,1561 +id2812298,1,2016-04-28 22:48:44,2016-04-28 23:08:08,1,-74.007591247558594,40.748252868652344,-73.952308654785156,40.777751922607422,N,1164 +id2633092,2,2016-01-27 16:48:48,2016-01-27 16:51:45,1,-73.958686828613281,40.772518157958984,-73.950599670410156,40.771152496337891,N,177 +id0562260,2,2016-01-21 10:08:22,2016-01-21 10:38:21,1,-73.971717834472656,40.750339508056641,-74.000579833984375,40.726291656494141,N,1799 +id0518107,1,2016-01-20 06:28:58,2016-01-20 06:37:55,1,-73.949737548828125,40.783077239990234,-73.977210998535156,40.762702941894531,N,537 +id1728458,2,2016-04-09 22:01:26,2016-04-09 22:03:28,1,-73.963661193847656,40.765571594238281,-73.955520629882813,40.776660919189453,N,122 +id2279365,1,2016-03-19 13:21:48,2016-03-19 13:41:15,1,-73.991386413574219,40.750602722167969,-73.968719482421875,40.759185791015625,N,1167 +id2997911,2,2016-05-05 12:25:20,2016-05-05 12:46:17,1,-73.983787536621094,40.754791259765625,-74.009689331054688,40.704441070556641,N,1257 +id2363847,1,2016-04-13 22:12:06,2016-04-13 22:37:03,1,-73.990913391113281,40.750759124755859,-73.965110778808594,40.763313293457031,N,1497 +id2940239,1,2016-05-10 07:49:11,2016-05-10 07:55:55,1,-73.964195251464844,40.776214599609375,-73.953712463378906,40.787956237792969,N,404 +id2277235,2,2016-02-09 23:05:06,2016-02-09 23:17:40,1,-73.982879638671875,40.769489288330078,-73.945266723632812,40.835018157958984,N,754 +id1420987,2,2016-04-18 08:33:20,2016-04-18 08:45:04,1,-73.960151672363281,40.7701416015625,-73.974136352539062,40.754199981689453,N,704 +id1437283,1,2016-06-24 21:19:18,2016-06-24 21:31:08,1,-73.9935302734375,40.735916137695312,-73.998451232910156,40.749412536621094,N,710 +id1914564,2,2016-06-06 11:02:04,2016-06-06 11:05:52,1,-73.983673095703125,40.755409240722656,-73.976310729980469,40.765110015869141,N,228 +id1485709,1,2016-04-12 21:18:41,2016-04-12 21:27:06,2,-73.99151611328125,40.724552154541016,-73.999130249023437,40.718971252441406,N,505 +id3839776,1,2016-01-25 17:19:05,2016-01-25 17:27:30,1,-73.764785766601563,40.639026641845703,-73.76470947265625,40.638721466064453,N,505 +id3885225,1,2016-05-15 02:46:33,2016-05-15 02:54:02,1,-73.98565673828125,40.738414764404297,-73.999801635742187,40.738624572753906,N,449 +id2701500,2,2016-01-06 12:50:03,2016-01-06 13:03:49,1,-73.961952209472656,40.770420074462891,-73.97698974609375,40.764381408691406,N,826 +id2851757,2,2016-04-18 12:44:51,2016-04-18 12:47:23,1,-73.993019104003906,40.723541259765625,-73.995208740234375,40.717449188232422,N,152 +id0777938,2,2016-05-23 13:34:21,2016-05-23 13:40:23,6,-73.978683471679688,40.748661041259766,-73.984642028808594,40.751140594482422,N,362 +id3773814,2,2016-01-26 20:45:45,2016-01-26 21:09:51,1,-73.951515197753906,40.785121917724609,-73.979690551757812,40.730998992919922,N,1446 +id3317872,1,2016-01-26 22:36:25,2016-01-26 22:58:42,1,-73.985580444335937,40.726821899414063,-73.960670471191406,40.659645080566406,N,1337 +id2905263,2,2016-04-09 10:49:49,2016-04-09 10:49:52,1,-74.004692077636719,40.707561492919922,-74.004722595214844,40.707588195800781,N,3 +id2539057,1,2016-04-05 19:03:50,2016-04-05 19:29:25,1,-73.789901733398437,40.643974304199219,-73.921035766601562,40.775634765625,N,1535 +id3603083,2,2016-05-20 14:07:40,2016-05-20 15:23:08,5,-74.005996704101563,40.705162048339844,-73.777603149414063,40.644718170166016,N,4528 +id0953750,1,2016-05-07 11:03:10,2016-05-07 11:05:36,1,-73.99127197265625,40.755226135253906,-73.986015319824219,40.766395568847656,N,146 +id2701755,1,2016-04-28 22:50:59,2016-04-28 22:57:10,2,-73.955772399902344,40.763973236083984,-73.947784423828125,40.783618927001953,N,371 +id0165478,2,2016-06-16 22:28:31,2016-06-16 22:37:27,5,-73.990882873535156,40.727718353271484,-74.004501342773438,40.7308349609375,N,536 +id2673517,1,2016-03-16 05:27:53,2016-03-16 05:48:00,1,-73.977210998535156,40.751792907714844,-73.861434936523438,40.768161773681641,N,1207 +id0341677,1,2016-05-25 14:14:34,2016-05-25 14:20:25,1,-73.978759765625,40.756237030029297,-73.986457824707031,40.745807647705078,N,351 +id2987193,1,2016-04-20 12:28:38,2016-04-20 13:01:56,1,-73.985946655273438,40.751621246337891,-74.0013427734375,40.717330932617188,N,1998 +id0183572,2,2016-02-22 08:01:41,2016-02-22 08:43:13,6,-73.789886474609375,40.646919250488281,-73.95428466796875,40.679771423339844,N,2492 +id0596672,1,2016-01-15 07:55:50,2016-01-15 08:02:36,1,-73.96221923828125,40.767795562744141,-73.953689575195313,40.784618377685547,N,406 +id1785868,1,2016-05-03 00:53:34,2016-05-03 01:08:17,2,-73.991920471191406,40.753833770751953,-73.964248657226562,40.807071685791016,N,883 +id2244905,1,2016-05-05 10:50:38,2016-05-05 11:05:27,1,-73.968109130859375,40.801246643066406,-73.988746643066406,40.774082183837891,N,889 +id2232287,1,2016-06-21 15:12:01,2016-06-21 15:21:23,2,-74.011245727539062,40.719066619873047,-74.015083312988281,40.70477294921875,N,562 +id0212496,1,2016-05-21 15:35:28,2016-05-21 16:06:37,1,-73.870803833007813,40.773593902587891,-73.995712280273437,40.721725463867188,Y,1869 +id0547415,2,2016-03-24 23:07:44,2016-03-24 23:16:18,1,-73.994888305664063,40.760349273681641,-73.987533569335938,40.760330200195312,N,514 +id2836080,1,2016-05-05 11:33:19,2016-05-05 11:56:37,1,-73.95404052734375,40.766128540039063,-73.976959228515625,40.757568359375,N,1398 +id3128010,2,2016-01-30 13:07:28,2016-01-30 13:13:59,1,-73.978759765625,40.782451629638672,-73.964271545410156,40.794841766357422,N,391 +id2304741,1,2016-03-24 16:40:37,2016-03-24 18:22:40,1,-74.005340576171875,40.741058349609375,-73.783828735351563,40.643638610839844,N,6123 +id2712979,2,2016-01-12 18:45:09,2016-01-12 19:09:26,1,-73.989280700683594,40.751930236816406,-73.949729919433594,40.784538269042969,N,1457 +id1287183,1,2016-05-05 19:33:17,2016-05-05 19:47:05,1,-73.981239318847656,40.781021118164063,-73.947288513183594,40.772602081298828,N,828 +id3519525,1,2016-05-04 15:29:00,2016-05-04 15:33:03,1,-73.987586975097656,40.755210876464844,-73.988197326660156,40.748439788818359,N,243 +id2035467,2,2016-03-26 18:02:10,2016-03-26 18:11:13,1,-73.9822998046875,40.770820617675781,-73.961570739746094,40.771369934082031,N,543 +id1832881,1,2016-02-08 06:47:57,2016-02-08 06:57:24,1,-73.961563110351562,40.800945281982422,-73.981597900390625,40.765331268310547,N,567 +id3686124,1,2016-06-13 16:10:23,2016-06-13 16:18:20,1,-73.974128723144531,40.759731292724609,-73.957260131835937,40.77435302734375,N,477 +id1912536,2,2016-03-10 07:30:25,2016-03-10 07:54:10,1,-73.955833435058594,40.776390075683594,-73.872772216796875,40.774326324462891,N,1425 +id1238650,1,2016-02-13 12:42:36,2016-02-13 12:47:59,1,-74.001930236816406,40.735301971435547,-73.989822387695313,40.740745544433594,N,323 +id2929729,1,2016-02-07 18:23:41,2016-02-07 19:07:54,2,-74.002655029296875,40.744758605957031,-73.785087585449219,40.643184661865234,N,2653 +id1896608,1,2016-02-24 19:25:31,2016-02-24 19:34:32,1,-73.991493225097656,40.7598876953125,-73.991508483886719,40.750240325927734,N,541 +id2783087,2,2016-06-22 22:26:34,2016-06-22 22:37:46,1,-73.989608764648437,40.702438354492188,-73.943428039550781,40.708091735839844,N,672 +id0332833,2,2016-05-10 00:17:03,2016-05-10 00:34:24,2,-73.977043151855469,40.758102416992188,-73.911430358886719,40.764286041259766,N,1041 +id1820131,2,2016-04-25 04:29:52,2016-04-25 04:31:03,4,-73.984718322753906,40.742347717285156,-73.988822937011719,40.736591339111328,N,71 +id2389814,2,2016-01-02 20:32:27,2016-01-02 20:36:06,1,-74.000999450683594,40.74639892578125,-73.990928649902344,40.745571136474609,N,219 +id1525849,2,2016-05-28 16:52:07,2016-05-28 16:59:28,5,-73.991386413574219,40.752948760986328,-73.980026245117188,40.745769500732422,N,441 +id0917866,1,2016-06-22 22:04:13,2016-06-22 22:19:24,1,-73.977470397949219,40.738334655761719,-73.948135375976563,40.776660919189453,N,911 +id0041634,2,2016-05-26 01:48:30,2016-05-26 02:12:04,2,-73.98406982421875,40.742488861083984,-73.985610961914062,40.661998748779297,N,1414 +id3363597,1,2016-06-26 02:21:13,2016-06-26 02:41:38,2,-73.981681823730469,40.728660583496094,-74.007270812988281,40.741115570068359,N,1225 +id0352315,1,2016-05-05 16:47:08,2016-05-05 16:50:14,1,-73.961250305175781,40.768787384033203,-73.954627990722656,40.778018951416016,N,186 +id1309001,2,2016-05-23 17:45:00,2016-05-23 17:48:24,1,-74.008323669433594,40.720954895019531,-74.006317138671875,40.733509063720703,N,204 +id0655400,2,2016-05-07 15:11:33,2016-05-07 16:03:34,1,-73.788688659667969,40.641986846923828,-73.8431396484375,40.944393157958984,N,3121 +id1354075,2,2016-01-27 11:39:03,2016-01-27 11:46:41,1,-73.971351623535156,40.755485534667969,-73.964378356933594,40.770244598388672,N,458 +id3483532,2,2016-02-01 03:18:23,2016-02-01 03:39:15,2,-74.00048828125,40.727298736572266,-73.957283020019531,40.726921081542969,N,1252 +id3868654,1,2016-05-21 22:58:15,2016-05-21 23:08:47,1,-73.979469299316406,40.737171173095703,-73.949760437011719,40.772605895996094,N,632 +id0065334,2,2016-06-16 17:33:31,2016-06-16 17:41:51,5,-73.972808837890625,40.793468475341797,-73.97467041015625,40.779941558837891,N,500 +id0287782,1,2016-04-09 10:23:27,2016-04-09 10:36:10,2,-73.946990966796875,40.781646728515625,-73.970138549804687,40.762218475341797,N,763 +id1095390,2,2016-03-08 21:15:35,2016-03-08 21:29:54,5,-73.977699279785156,40.752063751220703,-73.952690124511719,40.805652618408203,N,859 +id2795461,1,2016-01-13 05:25:09,2016-01-13 05:31:33,1,-73.989387512207031,40.75250244140625,-73.986869812011719,40.733757019042969,N,384 +id3798243,1,2016-05-15 03:36:43,2016-05-15 03:43:22,2,-73.991943359375,40.726394653320312,-74.00042724609375,40.739696502685547,N,399 +id1967384,2,2016-06-13 19:00:02,2016-06-13 19:21:28,1,-73.870841979980469,40.773731231689453,-73.988533020019531,40.721328735351562,N,1286 +id1234817,2,2016-02-21 02:51:55,2016-02-21 02:55:31,2,-73.941497802734375,40.814449310302734,-73.951492309570313,40.802719116210937,N,216 +id3044990,1,2016-01-02 15:45:28,2016-01-02 15:51:14,2,-73.982093811035156,40.764801025390625,-73.982093811035156,40.774967193603516,N,346 +id1607105,2,2016-04-21 16:59:08,2016-04-21 17:09:20,1,-73.979690551757812,40.76641845703125,-73.987037658691406,40.752750396728516,N,612 +id2461922,2,2016-01-19 18:48:16,2016-01-19 18:57:02,1,-73.985809326171875,40.756969451904297,-74.008438110351563,40.743228912353516,N,526 +id0977199,1,2016-02-13 19:52:33,2016-02-13 20:02:44,2,-73.9781494140625,40.788150787353516,-73.981719970703125,40.769092559814453,N,611 +id0995694,2,2016-04-24 20:12:12,2016-04-24 20:23:45,1,-73.958328247070312,40.815448760986328,-73.925193786621094,40.817935943603516,N,693 +id0195721,2,2016-03-08 15:35:45,2016-03-08 15:40:54,1,-73.975448608398438,40.755661010742187,-73.968307495117188,40.764701843261719,N,309 +id2107276,2,2016-06-19 01:27:20,2016-06-19 01:39:05,5,-73.987480163574219,40.760643005371094,-73.982856750488281,40.735118865966797,N,705 +id1739027,2,2016-02-15 10:11:50,2016-02-15 10:25:06,5,-73.978378295898437,40.763561248779297,-74.006538391113281,40.739345550537109,N,796 +id0196607,2,2016-03-08 23:32:15,2016-03-08 23:47:41,5,-73.95947265625,40.771205902099609,-73.946884155273437,40.83660888671875,N,926 +id3316764,2,2016-02-28 05:57:29,2016-02-28 06:02:03,1,-73.876579284667969,40.75653076171875,-73.893577575683594,40.754768371582031,N,274 +id1228104,1,2016-05-11 18:53:58,2016-05-11 19:09:21,1,-73.984512329101563,40.75909423828125,-74.008132934570313,40.74786376953125,N,923 +id0399058,2,2016-01-17 02:21:27,2016-01-17 02:40:41,2,-73.988327026367188,40.722938537597656,-73.951492309570313,40.683860778808594,N,1154 +id3711754,2,2016-04-03 10:29:27,2016-04-03 11:06:28,5,-73.870933532714844,40.773651123046875,-73.940803527832031,40.626251220703125,N,2221 +id0546792,2,2016-05-17 16:16:39,2016-05-17 16:29:21,1,-73.975990295410156,40.755439758300781,-73.987632751464844,40.732791900634766,N,762 +id2054671,1,2016-05-08 16:15:40,2016-05-08 16:19:59,2,-73.979728698730469,40.754825592041016,-73.98529052734375,40.747394561767578,N,259 +id3634402,2,2016-01-21 23:09:50,2016-01-21 23:29:11,1,-73.989768981933594,40.7340087890625,-73.946731567382813,40.777431488037109,N,1161 +id3697953,1,2016-04-27 00:00:48,2016-04-27 00:18:49,1,-74.000404357910156,40.730079650878906,-73.9061279296875,40.761238098144531,N,1081 +id0212333,1,2016-01-03 20:05:53,2016-01-03 20:11:47,1,-73.975257873535156,40.792598724365234,-73.985946655273438,40.777923583984375,N,354 +id0947497,2,2016-02-05 23:37:51,2016-02-05 23:46:03,1,-73.995536804199219,40.720958709716797,-73.998077392578125,40.733890533447266,N,492 +id2386269,1,2016-05-28 14:38:36,2016-05-28 14:53:51,3,-73.97113037109375,40.76702880859375,-73.971755981445312,40.792060852050781,N,915 +id2760393,1,2016-04-29 09:22:24,2016-04-29 09:55:36,1,-74.017158508300781,40.705875396728516,-74.177970886230469,40.690128326416016,N,1992 +id0784264,2,2016-01-14 13:59:10,2016-01-14 14:21:23,1,-73.972358703613281,40.756610870361328,-73.871208190917969,40.774139404296875,N,1333 +id0451215,2,2016-05-06 21:22:33,2016-05-06 21:33:39,1,-73.991241455078125,40.744678497314453,-73.991813659667969,40.764602661132813,N,666 +id0396245,1,2016-06-21 12:49:45,2016-06-21 13:09:33,1,-73.990570068359375,40.756095886230469,-73.968482971191406,40.752468109130859,N,1188 +id0250917,1,2016-05-16 22:44:42,2016-05-16 22:48:57,1,-73.995841979980469,40.743659973144531,-74.007736206054687,40.732208251953125,N,255 +id0845968,2,2016-04-06 22:21:35,2016-04-06 22:37:07,1,-73.98956298828125,40.762729644775391,-73.999763488769531,40.728660583496094,N,932 +id0885906,1,2016-02-04 20:30:34,2016-02-04 20:36:57,1,-73.972206115722656,40.763099670410156,-73.957649230957031,40.782451629638672,N,383 +id2706000,1,2016-01-17 00:25:13,2016-01-17 00:28:10,1,-73.954666137695313,40.821002960205078,-73.954666137695313,40.821002960205078,N,177 +id0445705,2,2016-02-17 20:48:36,2016-02-17 20:52:01,1,-73.95416259765625,40.778781890869141,-73.947441101074219,40.780330657958984,N,205 +id2858935,2,2016-01-06 17:21:11,2016-01-06 17:38:06,1,-73.947898864746094,40.780429840087891,-73.967849731445312,40.804630279541016,N,1015 +id3158611,2,2016-05-06 00:40:10,2016-05-06 00:57:23,1,-74.005088806152344,40.719566345214844,-73.986961364746094,40.747913360595703,N,1033 +id3129576,2,2016-05-23 09:57:52,2016-05-23 10:03:37,1,-74.001167297363281,40.747150421142578,-74.0079345703125,40.7513427734375,N,345 +id3336756,1,2016-03-03 06:38:32,2016-03-03 06:42:02,1,-74.001388549804688,40.741226196289063,-73.992828369140625,40.75189208984375,N,210 +id0322853,2,2016-04-01 00:48:36,2016-04-01 00:55:57,1,-73.989814758300781,40.73870849609375,-73.973281860351562,40.747161865234375,N,441 +id3213454,2,2016-02-20 11:00:23,2016-02-20 11:48:25,1,-73.980842590332031,40.741828918457031,-73.776321411132813,40.645530700683594,N,2882 +id0118079,1,2016-03-03 11:04:34,2016-03-03 11:19:32,1,-73.991477966308594,40.750225067138672,-73.975425720214844,40.749664306640625,N,898 +id1393135,2,2016-05-02 22:42:08,2016-05-02 22:51:04,1,-73.976409912109375,40.756660461425781,-73.972457885742187,40.785610198974609,N,536 +id3381950,1,2016-06-05 09:43:59,2016-06-05 10:04:11,1,-73.951240539550781,40.774280548095703,-73.985565185546875,40.678260803222656,N,1212 +id2770284,1,2016-03-25 07:11:35,2016-03-25 07:21:13,1,-73.99395751953125,40.751445770263672,-73.970451354980469,40.752548217773438,N,578 +id1019546,1,2016-04-17 22:46:26,2016-04-17 22:53:57,1,-73.970001220703125,40.757301330566406,-73.980545043945313,40.730373382568359,N,451 +id2200563,2,2016-03-21 16:09:27,2016-03-21 16:17:29,5,-73.958457946777344,40.778461456298828,-73.972503662109375,40.762458801269531,N,482 +id1545782,1,2016-03-31 19:15:31,2016-03-31 19:30:41,1,-73.977516174316406,40.764095306396484,-73.981689453125,40.747024536132812,N,910 +id0511838,1,2016-03-15 19:51:43,2016-03-15 19:59:40,2,-73.970237731933594,40.793983459472656,-73.948600769042969,40.782188415527344,N,477 +id1816297,1,2016-03-26 18:14:42,2016-03-26 18:17:49,2,-73.975120544433594,40.752098083496094,-73.974899291992187,40.744312286376953,N,187 +id2889474,1,2016-01-12 02:09:10,2016-01-12 02:13:14,1,-73.957054138183594,40.714309692382813,-73.957260131835937,40.722194671630859,N,244 +id2742062,2,2016-06-10 07:08:21,2016-06-10 07:17:34,3,-73.975059509277344,40.787689208984375,-73.983291625976562,40.759601593017578,N,553 +id3057707,2,2016-01-10 19:47:42,2016-01-10 19:55:25,4,-73.984748840332031,40.758480072021484,-73.987899780273437,40.744068145751953,N,463 +id0212522,1,2016-05-08 11:43:52,2016-05-08 11:54:22,1,-73.993843078613281,40.746341705322266,-73.998420715332031,40.724811553955078,N,630 +id1181722,1,2016-06-19 02:41:43,2016-06-19 02:45:13,1,-74.0054931640625,40.738761901855469,-74.000648498535156,40.728752136230469,N,210 +id2636148,2,2016-05-24 09:55:27,2016-05-24 09:58:27,1,-73.997673034667969,40.746551513671875,-74.005897521972656,40.750019073486328,N,180 +id2923461,1,2016-05-10 09:58:03,2016-05-10 10:21:43,1,-73.958206176757813,40.776321411132812,-73.976287841796875,40.759910583496094,N,1420 +id0459389,1,2016-03-13 09:42:00,2016-03-13 10:12:50,1,-73.997894287109375,40.765933990478516,-73.870750427246094,40.774021148681641,N,1850 +id3627945,1,2016-05-08 17:32:33,2016-05-08 17:37:32,2,-73.983596801757812,40.749961853027344,-73.996406555175781,40.732265472412109,N,299 +id1397262,2,2016-04-24 09:07:59,2016-04-24 09:17:51,1,-73.976707458496094,40.750236511230469,-73.99639892578125,40.732269287109375,N,592 +id2902339,1,2016-05-04 12:32:15,2016-05-04 13:03:01,1,-73.952461242675781,40.768608093261719,-73.991447448730469,40.749893188476562,N,1846 +id3984207,1,2016-02-26 22:06:06,2016-02-26 22:23:01,2,-73.952644348144531,40.776657104492188,-73.984443664550781,40.732925415039063,N,1015 +id1021463,1,2016-05-14 08:50:47,2016-05-14 08:59:35,1,-73.9390869140625,40.752296447753906,-73.923736572265625,40.776531219482422,N,528 +id3876330,2,2016-03-08 23:42:30,2016-03-08 23:42:34,2,-73.789108276367188,40.641391754150391,-73.788429260253906,40.642009735107422,N,4 +id3631217,2,2016-03-10 11:41:36,2016-03-10 11:53:18,1,-73.9847412109375,40.728282928466797,-73.996780395507813,40.715221405029297,N,702 +id3702582,2,2016-04-30 23:20:53,2016-04-30 23:29:48,1,-73.96722412109375,40.756755828857422,-73.9873046875,40.740692138671875,N,535 +id3872875,1,2016-02-11 22:27:03,2016-02-11 22:31:10,1,-74.001327514648437,40.731178283691406,-73.987541198730469,40.741016387939453,N,247 +id0304778,1,2016-02-23 20:38:44,2016-02-23 21:19:17,1,-73.982925415039062,40.7618408203125,-74.379631042480469,40.745273590087891,N,2433 +id0208288,1,2016-06-09 08:25:29,2016-06-09 08:38:54,1,-73.981201171875,40.744434356689453,-73.985435485839844,40.753517150878906,N,805 +id1675267,2,2016-02-12 10:05:38,2016-02-12 10:20:52,5,-73.983268737792969,40.767707824707031,-73.978126525878906,40.751602172851562,N,914 +id0208886,2,2016-01-24 18:41:14,2016-01-24 18:49:51,1,-73.989830017089844,40.756916046142578,-73.988533020019531,40.7666015625,N,517 +id3294733,1,2016-04-13 12:38:57,2016-04-13 12:52:37,1,-73.982765197753906,40.767913818359375,-73.966026306152344,40.766334533691406,N,820 +id2691111,1,2016-01-17 17:16:17,2016-01-17 17:35:06,1,-73.995018005371094,40.717945098876953,-73.9913330078125,40.749210357666016,N,1129 +id3059876,1,2016-05-09 00:05:39,2016-05-09 00:21:45,1,-73.960403442382812,40.781543731689453,-73.987258911132813,40.722312927246094,N,966 +id1737665,2,2016-03-25 08:29:17,2016-03-25 08:37:13,6,-73.989547729492188,40.726028442382813,-73.982429504394531,40.736919403076172,N,476 +id0138185,2,2016-01-18 06:26:39,2016-01-18 06:51:15,1,-73.974136352539062,40.752159118652344,-73.870559692382813,40.773860931396484,N,1476 +id2541212,2,2016-03-18 23:43:46,2016-03-18 23:47:50,3,-73.99017333984375,40.746601104736328,-73.993850708007813,40.745746612548828,N,244 +id1874461,1,2016-06-11 22:12:08,2016-06-11 22:35:35,1,-74.005828857421875,40.725803375244141,-73.933753967285156,40.710926055908203,N,1407 +id3962180,2,2016-06-15 07:11:30,2016-06-15 07:16:36,1,-73.981742858886719,40.746959686279297,-73.994796752929688,40.727581024169922,N,306 +id1927226,1,2016-05-20 06:37:56,2016-05-20 06:48:51,2,-73.975799560546875,40.751708984375,-74.009269714355469,40.703754425048828,N,655 +id2028353,1,2016-05-16 09:26:32,2016-05-16 09:37:53,1,-73.995124816894531,40.760257720947266,-73.99407958984375,40.747604370117187,N,681 +id2532213,2,2016-02-19 17:30:53,2016-02-19 18:09:25,1,-73.977455139160156,40.750846862792969,-73.959877014160156,40.813777923583984,N,2312 +id0638273,2,2016-03-25 12:14:30,2016-03-25 12:20:19,3,-74.006126403808594,40.740108489990234,-73.998359680175781,40.741355895996094,N,349 +id1980642,2,2016-05-20 00:42:24,2016-05-20 00:48:12,5,-73.97467041015625,40.756149291992188,-73.961112976074219,40.774509429931641,N,348 +id3435907,1,2016-06-22 21:07:20,2016-06-22 21:24:38,1,-73.985244750976563,40.751995086669922,-73.939399719238281,40.792030334472656,N,1038 +id1964573,2,2016-06-26 04:17:02,2016-06-26 04:18:18,1,-73.869621276855469,40.749591827392578,-73.867599487304688,40.749481201171875,N,76 +id0991426,1,2016-01-23 01:42:47,2016-01-23 02:19:22,1,-73.972320556640625,40.759151458740234,-73.940284729003906,40.843841552734375,N,2195 +id3093751,1,2016-05-13 13:47:28,2016-05-13 13:48:34,1,-74.008460998535156,40.719009399414063,-74.007194519042969,40.719173431396484,N,66 +id0065036,2,2016-04-11 11:07:56,2016-04-11 11:18:54,5,-73.918350219726562,40.742916107177734,-73.889503479003906,40.746383666992188,N,658 +id3405929,1,2016-01-28 18:20:08,2016-01-28 18:42:02,1,-73.9710693359375,40.764995574951172,-73.994255065917969,40.739921569824219,N,1314 +id2399030,1,2016-06-20 12:10:55,2016-06-20 12:24:51,1,-73.946014404296875,40.773075103759766,-73.980751037597656,40.746952056884766,N,836 +id2526788,2,2016-04-30 17:21:42,2016-04-30 17:30:40,1,-73.978408813476563,40.763126373291016,-73.981803894042969,40.778289794921875,N,538 +id1865679,2,2016-03-02 08:11:10,2016-03-02 08:15:05,6,-74.000411987304688,40.738971710205078,-74.008056640625,40.739307403564453,N,235 +id2558020,1,2016-01-25 09:49:29,2016-01-25 09:59:02,1,-74.016807556152344,40.706325531005859,-74.012176513671875,40.708728790283203,N,573 +id2739426,1,2016-02-20 09:47:02,2016-02-20 09:56:38,1,-73.995330810546875,40.765037536621094,-74.007659912109375,40.743793487548828,N,576 +id2076710,2,2016-02-07 02:31:08,2016-02-07 02:37:40,1,-73.914825439453125,40.699302673339844,-73.940231323242188,40.693851470947266,N,392 +id1614147,2,2016-05-13 20:00:34,2016-05-13 20:18:46,1,-73.955207824707031,40.788867950439453,-73.988899230957031,40.763641357421875,N,1092 +id3033642,2,2016-03-11 17:53:06,2016-03-11 18:21:43,1,-73.873207092285156,40.774120330810547,-73.940269470214844,40.698638916015625,N,1717 +id3669399,2,2016-02-26 13:50:36,2016-02-26 13:59:31,1,-74.007980346679688,40.705455780029297,-74.015655517578125,40.715618133544922,N,535 +id2283166,2,2016-02-09 09:27:59,2016-02-09 09:34:02,1,-73.964248657226562,40.764808654785156,-73.964485168457031,40.773235321044922,N,363 +id1274301,1,2016-03-14 08:11:06,2016-03-14 08:18:23,1,-73.982147216796875,40.738395690917969,-73.971405029296875,40.754924774169922,N,437 +id3585980,1,2016-01-27 10:12:44,2016-01-27 10:42:39,1,-73.991828918457031,40.715927124023438,-74.003761291503906,40.748146057128906,N,1795 +id0743188,2,2016-06-11 09:21:58,2016-06-11 09:35:36,1,-73.98577880859375,40.727020263671875,-74.005996704101563,40.748592376708984,N,818 +id0602796,2,2016-01-28 12:25:51,2016-01-28 12:31:17,1,-73.983818054199219,40.737586975097656,-73.983818054199219,40.737586975097656,N,326 +id2750976,1,2016-04-19 20:05:57,2016-04-19 20:12:56,1,-73.981636047363281,40.777729034423828,-73.965797424316406,40.790225982666016,N,419 +id3411658,2,2016-01-19 11:55:58,2016-01-19 12:00:54,1,-73.984085083007812,40.746498107910156,-73.983123779296875,40.741302490234375,N,296 +id1409547,2,2016-06-24 11:35:14,2016-06-24 11:39:20,5,-73.954742431640625,40.773281097412109,-73.960380554199219,40.772811889648438,N,246 +id1571447,2,2016-06-27 20:55:44,2016-06-27 21:03:29,3,-73.988998413085938,40.753959655761719,-73.984893798828125,40.737228393554688,N,465 +id3092433,2,2016-05-29 13:06:41,2016-05-29 13:22:40,5,-73.992401123046875,40.724918365478516,-74.008369445800781,40.711441040039063,N,959 +id1695240,2,2016-02-06 09:10:49,2016-02-06 09:14:51,1,-73.963165283203125,40.771675109863281,-73.955047607421875,40.777305603027344,N,242 +id2100968,2,2016-06-03 12:59:26,2016-06-03 13:20:58,4,-73.98724365234375,40.733135223388672,-73.984237670898438,40.720127105712891,N,1292 +id0750063,1,2016-02-17 08:52:45,2016-02-17 08:57:54,1,-73.989189147949219,40.768375396728516,-73.976333618164062,40.764167785644531,N,309 +id3867376,2,2016-05-03 12:47:37,2016-05-03 13:08:14,1,-73.984161376953125,40.754928588867188,-73.967086791992187,40.757110595703125,N,1237 +id0302553,1,2016-03-16 20:36:07,2016-03-16 20:47:19,1,-73.968154907226562,40.762580871582031,-73.986038208007813,40.748863220214844,N,672 +id1379569,2,2016-06-26 23:06:39,2016-06-26 23:24:04,5,-73.8634033203125,40.769725799560547,-73.951042175292969,40.777763366699219,N,1045 +id3712669,1,2016-01-06 06:56:48,2016-01-06 07:05:24,1,-74.006172180175781,40.717105865478516,-73.987510681152344,40.739406585693359,N,516 +id2431140,2,2016-05-20 17:23:24,2016-05-20 17:28:30,5,-73.954437255859375,40.808330535888672,-73.964149475097656,40.802478790283203,N,306 +id2516777,2,2016-02-16 11:52:19,2016-02-16 12:01:33,1,-73.9951171875,40.755020141601563,-73.993583679199219,40.744926452636719,N,554 +id2353782,2,2016-06-11 10:49:12,2016-06-11 11:03:06,1,-73.973777770996094,40.748001098632813,-73.993141174316406,40.75537109375,N,834 +id3927941,1,2016-05-02 17:21:00,2016-05-02 17:36:27,1,-73.995208740234375,40.749748229980469,-73.974708557128906,40.788101196289063,N,927 +id1848129,1,2016-04-29 19:35:56,2016-04-29 19:49:07,1,-73.986923217773437,40.739288330078125,-73.976898193359375,40.749683380126953,N,791 +id2570889,2,2016-04-26 23:17:58,2016-04-26 23:22:20,1,-73.992691040039063,40.723941802978516,-73.984397888183594,40.728931427001953,N,262 +id1056284,2,2016-03-29 10:40:18,2016-03-29 10:45:14,1,-73.99420166015625,40.751121520996094,-74.004531860351563,40.756961822509766,N,296 +id0467393,2,2016-06-11 16:39:21,2016-06-11 16:44:37,1,-74.008087158203125,40.739551544189453,-74.01019287109375,40.725299835205078,N,316 +id3628551,2,2016-06-01 19:07:54,2016-06-01 19:11:45,1,-73.965888977050781,40.756248474121094,-73.970550537109375,40.755031585693359,N,231 +id2322089,2,2016-02-12 08:14:15,2016-02-12 08:17:36,1,-73.919822692871094,40.816719055175781,-73.926429748535156,40.812210083007812,N,201 +id2838294,2,2016-06-20 19:59:24,2016-06-20 20:16:57,1,-73.978073120117187,40.737499237060547,-73.986183166503906,40.768196105957031,N,1053 +id3540686,2,2016-04-02 10:01:57,2016-04-02 10:17:07,1,-73.949012756347656,40.776931762695312,-73.97540283203125,40.752449035644531,N,910 +id2639021,2,2016-01-06 09:57:09,2016-01-06 10:09:39,6,-73.997901916503906,40.740932464599609,-74.007286071777344,40.728836059570313,N,750 +id0275398,2,2016-04-14 13:57:35,2016-04-14 14:03:41,1,-73.967819213867188,40.759815216064453,-73.958351135253906,40.774837493896484,N,366 +id2244528,2,2016-03-18 21:24:22,2016-03-18 21:36:24,3,-73.978187561035156,40.757549285888672,-73.991828918457031,40.758998870849609,N,722 +id3529477,2,2016-04-17 13:15:12,2016-04-17 13:29:46,1,-73.978981018066406,40.723850250244141,-73.991783142089844,40.749099731445313,N,874 +id3809052,2,2016-05-23 14:27:14,2016-05-23 14:30:51,6,-73.989875793457031,40.756431579589844,-73.983970642089844,40.764930725097656,N,217 +id3380603,1,2016-06-03 12:11:21,2016-06-03 12:22:22,1,-73.981651306152344,40.732582092285156,-73.996658325195312,40.737262725830078,N,661 +id3012067,1,2016-01-13 14:13:15,2016-01-13 14:37:38,2,-74.007438659667969,40.714420318603516,-73.974617004394531,40.751029968261719,N,1463 +id1197167,2,2016-04-21 20:19:43,2016-04-21 20:30:32,6,-74.005470275878906,40.726909637451172,-74.016372680664063,40.710319519042969,N,649 +id1720428,1,2016-04-18 12:29:35,2016-04-18 12:45:26,1,-74.008644104003906,40.719760894775391,-73.989364624023438,40.735752105712891,N,951 +id3342588,1,2016-04-09 20:02:47,2016-04-09 20:13:24,2,-73.965126037597656,40.755275726318359,-73.978553771972656,40.777397155761719,N,637 +id1724745,2,2016-03-13 14:30:19,2016-03-13 14:48:17,1,-73.985603332519531,40.747001647949219,-73.958511352539062,40.782341003417969,N,1078 +id3044373,2,2016-03-19 16:25:50,2016-03-19 16:37:21,2,-74.007003784179688,40.743511199951172,-73.996040344238281,40.725139617919922,N,691 +id2897426,2,2016-04-09 19:57:59,2016-04-09 20:07:10,3,-74.007240295410156,40.743488311767578,-74.016387939453125,40.716838836669922,N,551 +id2565139,2,2016-03-18 20:59:01,2016-03-18 21:43:35,1,-73.785148620605469,40.648525238037109,-74.000091552734375,40.719959259033203,N,2674 +id3431035,2,2016-01-15 07:01:06,2016-01-15 07:09:30,2,-74.002395629882813,40.750141143798828,-73.98309326171875,40.762626647949219,N,504 +id2282351,1,2016-02-10 21:31:05,2016-02-10 22:12:21,1,-73.982208251953125,40.768821716308594,-74.030891418457031,40.637260437011719,N,2476 +id2156889,2,2016-01-01 19:35:56,2016-01-01 19:49:01,1,-73.973106384277344,40.792800903320312,-73.9393310546875,40.805160522460937,N,785 +id2307346,2,2016-01-02 11:51:38,2016-01-02 12:01:59,2,-73.978378295898437,40.756538391113281,-73.990089416503906,40.774761199951172,N,621 +id0798014,1,2016-01-28 15:08:04,2016-01-28 15:17:45,1,-73.970390319824219,40.762645721435547,-73.964263916015625,40.754940032958984,N,581 +id3453713,2,2016-02-10 13:16:17,2016-02-10 13:37:23,1,-73.939804077148437,40.751453399658203,-73.98138427734375,40.737163543701172,N,1266 +id0779599,1,2016-02-23 15:16:57,2016-02-23 15:21:08,1,-73.953704833984375,40.781875610351563,-73.953651428222656,40.779083251953125,N,251 +id1572572,1,2016-03-28 08:14:22,2016-03-28 08:26:49,1,-73.961257934570313,40.77752685546875,-73.981620788574219,40.763134002685547,Y,747 +id1156817,1,2016-02-06 14:54:27,2016-02-06 15:09:02,1,-73.978866577148438,40.736820220947266,-74.010101318359375,40.719497680664063,N,875 +id0404596,2,2016-06-11 10:54:57,2016-06-11 11:02:21,1,-73.948974609375,40.7774658203125,-73.956077575683594,40.775909423828125,N,444 +id1978961,2,2016-05-01 05:15:33,2016-05-01 05:40:07,2,-73.974967956542969,40.761783599853516,-73.789031982421875,40.641620635986328,N,1474 +id3253348,2,2016-04-23 16:38:38,2016-04-23 16:50:30,1,-73.94915771484375,40.77777099609375,-73.977508544921875,40.779441833496094,N,712 +id3442481,2,2016-03-07 09:40:18,2016-03-07 09:57:02,2,-73.992515563964844,40.728549957275391,-73.984153747558594,40.754638671875,N,1004 +id1259903,2,2016-02-29 19:09:02,2016-02-29 19:23:57,1,-73.98480224609375,40.724750518798828,-73.996849060058594,40.714801788330078,N,895 +id2692522,1,2016-05-24 08:47:23,2016-05-24 08:52:44,1,-73.961204528808594,40.769084930419922,-73.952964782714844,40.782535552978516,N,321 +id2141757,1,2016-02-27 14:35:55,2016-02-27 14:47:43,1,-73.995994567871094,40.732982635498047,-73.998390197753906,40.718830108642578,N,708 +id0120839,1,2016-05-21 21:38:30,2016-05-21 21:59:11,3,-73.95977783203125,40.688808441162109,-73.889823913574219,40.672782897949219,N,1241 +id3053948,2,2016-02-10 22:22:14,2016-02-10 22:38:51,1,-74.004066467285156,40.738128662109375,-73.979019165039063,40.772510528564453,N,997 +id3781041,2,2016-06-18 03:59:57,2016-06-18 04:26:10,1,-73.983474731445313,40.743824005126953,-73.9420166015625,40.714542388916016,N,1573 +id3418466,2,2016-02-11 18:53:35,2016-02-11 19:00:57,2,-73.988380432128906,40.723388671875,-73.993988037109375,40.73529052734375,N,442 +id1731311,2,2016-04-16 19:10:35,2016-04-16 19:27:16,1,-73.972572326660156,40.760910034179688,-73.985198974609375,40.758460998535156,N,1001 +id2780271,2,2016-05-20 23:20:53,2016-05-20 23:24:38,2,-73.954902648925781,40.815471649169922,-73.949241638183594,40.808441162109375,N,225 +id3192419,1,2016-05-27 08:19:47,2016-05-27 08:28:54,1,-73.982627868652344,40.739597320556641,-73.991279602050781,40.723381042480469,N,547 +id3723641,2,2016-05-07 22:58:16,2016-05-07 23:25:30,1,-73.783470153808594,40.648601531982422,-73.958480834960938,40.764270782470703,N,1634 +id3801944,2,2016-05-01 08:53:58,2016-05-01 08:59:11,6,-73.98876953125,40.774478912353516,-73.984016418457031,40.768089294433594,N,313 +id0291530,1,2016-05-10 22:31:52,2016-05-10 22:38:29,1,-73.972877502441406,40.785430908203125,-73.952888488769531,40.772235870361328,N,397 +id0474638,2,2016-04-27 21:57:04,2016-04-27 22:17:26,3,-74.009841918945313,40.735355377197266,-73.970359802246094,40.799106597900391,N,1222 +id1461325,2,2016-05-20 11:44:56,2016-05-20 12:00:48,1,-73.987739562988281,40.718578338623047,-73.965400695800781,40.762783050537109,N,952 +id3264451,2,2016-04-27 19:57:49,2016-04-27 20:01:52,2,-73.981391906738281,40.780841827392578,-73.982261657714844,40.778129577636719,N,243 +id2050147,1,2016-06-26 19:44:08,2016-06-26 19:49:31,1,-73.986198425292969,40.740070343017578,-73.978294372558594,40.751113891601563,N,323 +id3804548,2,2016-05-23 06:51:47,2016-05-23 06:56:50,1,-73.990364074707031,40.771793365478516,-73.982078552246094,40.759037017822266,N,303 +id2286922,1,2016-01-13 15:10:56,2016-01-13 15:22:52,1,-73.976249694824219,40.788196563720703,-73.953956604003906,40.777225494384766,Y,716 +id3182533,2,2016-05-26 11:26:14,2016-05-26 11:34:28,2,-73.974288940429688,40.760269165039063,-73.962478637695313,40.775951385498047,N,494 +id3134730,1,2016-03-23 03:35:28,2016-03-23 03:40:44,2,-73.985954284667969,40.717769622802734,-73.951530456542969,40.713470458984375,N,316 +id3947931,2,2016-02-06 15:41:10,2016-02-06 15:58:25,5,-73.974990844726563,40.777641296386719,-73.959373474121094,40.761871337890625,N,1035 +id0102470,1,2016-05-09 08:04:07,2016-05-09 08:08:59,1,-73.984703063964844,40.739669799804688,-73.978866577148438,40.750785827636719,N,292 +id1297212,1,2016-03-31 07:39:12,2016-03-31 07:58:41,2,-73.979957580566406,40.786296844482422,-73.970977783203125,40.761524200439453,N,1169 +id1520989,1,2016-06-21 07:55:37,2016-06-21 08:03:43,1,-73.964401245117188,40.770320892333984,-73.97259521484375,40.76080322265625,N,486 +id3635184,1,2016-06-02 01:07:46,2016-06-02 01:20:46,1,-74.002449035644531,40.733364105224609,-73.968803405761719,40.750885009765625,N,780 +id1177529,2,2016-03-07 19:31:44,2016-03-07 19:45:13,2,-73.990913391113281,40.771762847900391,-73.990554809570313,40.737758636474609,N,809 +id0098739,1,2016-01-18 08:32:01,2016-01-18 08:37:43,1,-73.989982604980469,40.746959686279297,-73.97625732421875,40.765735626220703,N,342 +id2307231,1,2016-01-14 19:44:21,2016-01-14 19:49:47,1,-73.987060546875,40.760856628417969,-73.977958679199219,40.753654479980469,N,326 +id2292803,1,2016-01-13 12:18:14,2016-01-13 12:36:18,2,-73.993553161621094,40.749778747558594,-73.960319519042969,40.813949584960938,N,1084 +id2663179,2,2016-02-23 08:34:00,2016-02-23 08:46:06,1,-73.972160339355469,40.757713317871094,-73.964065551757813,40.772102355957031,N,726 +id2466113,2,2016-05-22 09:59:56,2016-05-22 10:02:52,2,-73.988746643066406,40.745311737060547,-73.988746643066406,40.745311737060547,N,176 +id0330471,1,2016-02-02 07:15:02,2016-02-02 07:26:55,1,-73.979202270507812,40.773334503173828,-73.9605712890625,40.7784423828125,N,713 +id2929760,2,2016-04-17 00:52:23,2016-04-17 01:00:46,1,-73.988975524902344,40.736530303955078,-73.992202758789063,40.7493896484375,N,503 +id3149100,1,2016-03-11 14:18:38,2016-03-11 14:32:30,1,-73.98199462890625,40.768283843994141,-73.964073181152344,40.771282196044922,N,832 +id2823618,2,2016-02-26 17:09:35,2016-02-26 17:23:50,1,-73.970802307128906,40.785865783691406,-73.987663269042969,40.765201568603516,N,855 +id2193067,2,2016-06-25 17:50:29,2016-06-25 18:05:57,2,-73.985206604003906,40.763500213623047,-73.969192504882813,40.756679534912109,N,928 +id1110041,2,2016-03-05 20:21:15,2016-03-05 20:47:22,2,-73.988616943359375,40.777759552001953,-73.998542785644531,40.734889984130859,N,1567 +id2500568,1,2016-03-12 09:41:03,2016-03-12 09:42:24,1,-74.007942199707031,40.711223602294922,-74.007553100585937,40.711551666259766,N,81 +id3367956,1,2016-04-28 21:10:09,2016-04-28 21:19:58,1,-73.969085693359375,40.761245727539062,-73.986381530761719,40.766483306884766,N,589 +id1432655,2,2016-06-02 22:56:19,2016-06-02 23:08:58,1,-73.984046936035156,40.743476867675781,-73.994865417480469,40.720676422119141,N,759 +id3295029,2,2016-04-10 12:23:51,2016-04-10 13:20:11,2,-73.781936645507813,40.644771575927734,-73.979606628417969,40.677501678466797,N,3380 +id0831183,1,2016-02-07 22:29:40,2016-02-07 22:47:54,1,-73.984481811523438,40.764408111572266,-73.944923400878906,40.803440093994141,N,1094 +id3471953,2,2016-03-20 02:18:37,2016-03-20 02:21:07,1,-73.961738586425781,40.764350891113281,-73.968818664550781,40.757469177246094,N,150 +id2924857,1,2016-05-20 06:42:11,2016-05-20 06:48:13,1,-74.007415771484375,40.703804016113281,-74.0146484375,40.71807861328125,N,362 +id0603894,2,2016-03-18 18:04:21,2016-03-18 18:08:06,1,-73.971366882324219,40.78729248046875,-73.980323791503906,40.775234222412109,N,225 +id1022132,2,2016-06-19 13:33:38,2016-06-19 14:00:45,1,-73.941017150878906,40.839653015136719,-73.940841674804688,40.83984375,N,1627 +id0797647,1,2016-04-26 14:35:22,2016-04-26 14:37:55,1,-73.949920654296875,40.780582427978516,-73.955558776855469,40.779453277587891,N,153 +id0030488,1,2016-06-24 12:55:11,2016-06-24 13:14:49,1,-73.949287414550781,40.781333923339844,-73.968605041503906,40.764999389648438,N,1178 +id2107424,2,2016-04-11 22:29:36,2016-04-11 22:35:39,1,-73.985786437988281,40.722988128662109,-73.986618041992188,40.728141784667969,N,363 +id0520758,2,2016-06-03 13:56:41,2016-06-03 15:16:24,1,-73.802421569824219,40.676158905029297,-73.979202270507812,40.761680603027344,N,4783 +id2202175,2,2016-04-05 08:29:23,2016-04-05 08:37:17,5,-73.982383728027344,40.76678466796875,-73.966941833496094,40.760841369628906,N,474 +id2568344,2,2016-05-21 00:22:33,2016-05-21 00:33:21,1,-73.981010437011719,40.765163421630859,-73.962417602539062,40.755897521972656,N,648 +id0381145,1,2016-02-25 20:41:40,2016-02-25 21:22:08,3,-73.967170715332031,40.807090759277344,-73.790245056152344,40.643657684326172,Y,2428 +id2360412,2,2016-03-11 06:15:11,2016-03-11 06:20:50,1,-73.964149475097656,40.767509460449219,-73.982162475585937,40.773170471191406,N,339 +id0290659,1,2016-01-24 11:59:16,2016-01-24 12:08:42,3,-73.993255615234375,40.76324462890625,-73.971435546875,40.762790679931641,N,566 +id2698812,2,2016-04-04 17:15:16,2016-04-04 17:35:48,1,-73.926246643066406,40.743690490722656,-73.975090026855469,40.751953125,N,1232 +id1302243,1,2016-02-26 07:54:36,2016-02-26 07:58:57,1,-73.972969055175781,40.755805969238281,-73.978492736816406,40.758106231689453,N,261 +id0570550,1,2016-05-01 03:01:23,2016-05-01 03:24:28,1,-73.987831115722656,40.732452392578125,-73.945777893066406,40.833030700683594,N,1385 +id2131757,2,2016-02-10 13:06:28,2016-02-10 13:14:27,6,-73.993927001953125,40.752353668212891,-73.984375,40.775260925292969,N,479 +id0611346,2,2016-04-15 20:39:23,2016-04-15 20:45:04,1,-73.998329162597656,40.756690979003906,-74.006996154785156,40.74359130859375,N,341 +id1199554,1,2016-03-20 13:45:45,2016-03-20 13:50:54,1,-73.986175537109375,40.735511779785156,-73.984710693359375,40.74322509765625,N,309 +id3407960,2,2016-03-15 19:04:04,2016-03-15 19:07:19,3,-74.009429931640625,40.712760925292969,-74.0030517578125,40.719749450683594,N,195 +id2038132,2,2016-02-01 20:18:44,2016-02-01 20:53:57,5,-73.973876953125,40.758899688720703,-73.785469055175781,40.648670196533203,N,2113 +id2279310,2,2016-06-15 18:30:00,2016-06-15 18:45:32,2,-73.982772827148438,40.751091003417969,-73.989959716796875,40.714099884033203,N,932 +id3347479,2,2016-02-26 18:20:13,2016-02-26 18:35:45,1,-73.993507385253906,40.729831695556641,-74.004287719726563,40.721870422363281,N,932 +id2353316,1,2016-06-19 22:40:17,2016-06-19 23:27:24,1,-73.789207458496094,40.642875671386719,-73.974357604980469,40.761524200439453,N,2827 +id1531783,1,2016-02-14 09:27:02,2016-02-14 09:31:27,1,-73.99285888671875,40.754302978515625,-74.000511169433594,40.757656097412109,N,265 +id0468639,2,2016-05-27 19:19:36,2016-05-27 19:42:48,1,-73.980583190917969,40.744388580322266,-73.992668151855469,40.762580871582031,N,1392 +id2222623,2,2016-04-17 04:02:11,2016-04-17 04:23:14,5,-73.993263244628906,40.762828826904297,-73.924949645996094,40.740440368652344,N,1263 +id3643301,1,2016-03-02 12:45:31,2016-03-02 12:51:25,1,-73.998603820800781,40.745315551757813,-73.994651794433594,40.739894866943359,N,354 +id3509477,2,2016-02-06 15:02:38,2016-02-06 15:10:23,2,-73.9541015625,40.774543762207031,-73.966560363769531,40.75738525390625,N,465 +id1902590,1,2016-04-19 09:35:17,2016-04-19 09:42:00,1,-73.953338623046875,40.782817840576172,-73.944473266601563,40.802337646484375,N,403 +id1186343,1,2016-06-02 12:37:20,2016-06-02 13:09:58,2,-73.971542358398438,40.765945434570313,-74.011253356933594,40.710903167724609,N,1958 +id3740896,1,2016-06-01 17:11:47,2016-06-01 18:07:54,1,-73.870918273925781,40.773799896240234,-73.974983215332031,40.793655395507813,Y,3367 +id2816255,2,2016-02-13 16:55:57,2016-02-13 17:07:22,1,-74.016410827636719,40.715038299560547,-74.001777648925781,40.746730804443359,N,685 +id2303115,2,2016-01-14 02:16:25,2016-01-14 02:23:03,1,-73.955696105957031,40.776351928710937,-73.940727233886719,40.804943084716797,N,398 +id2548910,1,2016-06-27 07:16:34,2016-06-27 07:20:27,1,-73.959632873535156,40.814002990722656,-73.971572875976562,40.795108795166016,N,233 +id2235619,1,2016-05-24 09:58:52,2016-05-24 10:17:49,2,-73.961296081542969,40.760143280029297,-73.984298706054688,40.742641448974609,N,1137 +id2498420,1,2016-03-04 13:59:12,2016-03-04 14:23:46,1,-73.994049072265625,40.751155853271484,-73.998268127441406,40.725948333740234,N,1474 +id0868897,2,2016-04-24 13:15:37,2016-04-24 13:25:44,2,-73.991111755371094,40.730220794677734,-73.970046997070312,40.74884033203125,N,607 +id2222553,1,2016-05-12 19:57:10,2016-05-12 20:09:32,1,-73.959579467773438,40.780071258544922,-73.954147338867188,40.808784484863281,N,742 +id2214196,1,2016-05-29 15:43:54,2016-05-29 15:54:34,1,-73.998771667480469,40.760189056396484,-74.000892639160156,40.736850738525391,N,640 +id1238023,1,2016-05-12 22:48:41,2016-05-12 22:51:51,1,-73.970405578613281,40.75628662109375,-73.966178894042969,40.76214599609375,N,190 +id1020400,1,2016-03-17 21:13:44,2016-03-17 21:21:58,1,-73.987213134765625,40.755271911621094,-74.005928039550781,40.731662750244141,N,494 +id1580374,2,2016-02-05 18:11:28,2016-02-05 18:18:40,2,-73.978668212890625,40.736797332763672,-73.96392822265625,40.757480621337891,N,432 +id3133692,2,2016-01-08 04:16:16,2016-01-08 04:20:29,6,-73.987281799316406,40.733089447021484,-73.972763061523438,40.753139495849609,N,253 +id0167085,2,2016-03-30 08:46:13,2016-03-30 09:00:03,3,-73.98260498046875,40.727363586425781,-74.000274658203125,40.742107391357422,N,830 +id3735134,1,2016-04-11 17:16:51,2016-04-11 17:29:14,1,-73.957771301269531,40.76141357421875,-73.972190856933594,40.754070281982422,N,743 +id1652428,2,2016-05-06 23:07:27,2016-05-06 23:32:59,1,-74.009552001953125,40.723381042480469,-73.981330871582031,40.679821014404297,N,1532 +id0833704,2,2016-06-20 21:36:27,2016-06-20 21:49:29,1,-73.985435485839844,40.768775939941406,-74.005462646484375,40.739101409912109,N,782 +id0657955,1,2016-03-17 00:39:02,2016-03-17 01:01:03,3,-73.992401123046875,40.714035034179688,-73.985153198242188,40.763736724853516,N,1321 +id3733192,2,2016-02-06 13:09:30,2016-02-06 13:10:53,1,-73.949440002441406,40.776710510253906,-73.949127197265625,40.781070709228516,N,83 +id3234182,2,2016-04-09 19:22:01,2016-04-09 19:33:58,1,-73.939666748046875,40.793670654296875,-73.953460693359375,40.807109832763672,N,717 +id1644689,2,2016-06-21 11:37:56,2016-06-21 11:57:15,5,-74.005683898925781,40.750858306884766,-73.984466552734375,40.732891082763672,N,1159 +id2504761,1,2016-04-19 11:34:03,2016-04-19 11:44:28,1,-73.995986938476562,40.743785858154297,-73.991340637207031,40.733478546142578,N,625 +id0137739,2,2016-04-21 08:04:08,2016-04-21 08:41:09,5,-73.993919372558594,40.746479034423828,-73.914497375488281,40.701988220214844,N,2221 +id1647263,2,2016-02-11 22:58:29,2016-02-11 23:09:19,1,-73.990272521972656,40.731021881103516,-73.989044189453125,40.755821228027344,N,650 +id2248180,1,2016-04-29 23:24:23,2016-04-29 23:28:28,2,-73.975395202636719,40.751674652099609,-73.970787048339844,40.752250671386719,N,245 +id1097058,2,2016-06-05 22:12:13,2016-06-05 22:16:13,1,-73.974136352539062,40.750389099121094,-73.961318969726563,40.760181427001953,N,240 +id1737887,2,2016-05-01 22:07:47,2016-05-01 22:25:15,5,-73.982070922851562,40.773223876953125,-73.99847412109375,40.732517242431641,N,1048 +id3921018,2,2016-06-02 17:29:12,2016-06-02 17:35:55,1,-73.946792602539062,40.775798797607422,-73.95166015625,40.782188415527344,N,403 +id0901444,2,2016-03-04 23:47:46,2016-03-04 23:54:13,1,-73.952713012695312,40.714199066162109,-73.966018676757813,40.712001800537109,N,387 +id1536887,2,2016-06-04 09:46:10,2016-06-04 09:54:00,2,-73.956375122070313,40.783821105957031,-73.977897644042969,40.773681640625,N,470 +id2485716,1,2016-03-30 14:33:37,2016-03-30 14:43:59,1,-74.001136779785156,40.757209777832031,-73.984161376953125,40.756763458251953,N,622 +id1930183,2,2016-06-11 23:41:59,2016-06-11 23:57:15,1,-73.971611022949219,40.689590454101563,-73.991188049316406,40.658199310302734,N,916 +id0206112,2,2016-04-10 22:23:46,2016-04-10 22:40:17,1,-73.982780456542969,40.7611083984375,-73.949951171875,40.821910858154297,N,991 +id2340782,1,2016-04-11 22:08:06,2016-04-11 22:32:21,1,-73.953628540039063,40.771137237548828,-73.978111267089844,40.643436431884766,N,1455 +id0637775,1,2016-04-07 10:40:41,2016-04-07 10:58:50,1,-73.931411743164062,40.760242462158203,-73.869178771972656,40.734203338623047,N,1089 +id3249530,2,2016-02-29 18:22:33,2016-02-29 19:11:33,1,-73.780265808105469,40.645584106445313,-73.973800659179688,40.755157470703125,N,2940 +id0060364,1,2016-01-16 14:53:52,2016-01-16 15:10:32,1,-73.994491577148438,40.732078552246094,-73.970016479492188,40.763904571533203,N,1000 +id0285333,2,2016-03-13 04:41:05,2016-03-13 04:50:57,1,-73.988822937011719,40.727039337158203,-73.990646362304687,40.750789642333984,N,592 +id0674914,2,2016-04-29 13:31:16,2016-04-29 14:07:21,3,-73.972190856933594,40.765270233154297,-73.783401489257812,40.643741607666016,N,2165 +id2730899,2,2016-03-20 08:10:17,2016-03-20 08:39:24,1,-73.979202270507812,40.761501312255859,-73.874038696289063,40.773700714111328,N,1747 +id0130139,2,2016-04-18 19:52:51,2016-04-18 20:01:09,1,-73.991722106933594,40.745098114013672,-73.974479675292969,40.751338958740234,N,498 +id3765491,1,2016-01-13 14:10:08,2016-01-13 14:15:25,1,-73.948272705078125,40.795291900634766,-73.957664489746094,40.801261901855469,N,317 +id0648485,2,2016-02-25 16:51:23,2016-02-25 17:19:38,1,-74.005500793457031,40.740718841552734,-74.008468627929687,40.7049560546875,N,1695 +id1304934,1,2016-03-25 07:48:33,2016-03-25 07:56:07,1,-73.949974060058594,40.779678344726563,-73.967071533203125,40.763839721679688,N,454 +id2717884,2,2016-05-20 14:48:53,2016-05-20 15:49:55,1,-73.957809448242188,40.765190124511719,-73.8709716796875,40.774040222167969,N,3662 +id1415600,1,2016-04-27 10:48:04,2016-04-27 10:52:52,1,-73.989913940429687,40.753963470458984,-73.993972778320312,40.746318817138672,N,288 +id0843588,1,2016-04-18 17:59:31,2016-04-18 18:11:23,1,-73.990638732910156,40.719417572021484,-74.008430480957031,40.706352233886719,N,712 +id0808393,2,2016-01-17 00:02:46,2016-01-17 00:16:45,1,-73.983451843261719,40.726207733154297,-73.999000549316406,40.729267120361328,N,839 +id1372029,2,2016-05-20 13:28:08,2016-05-20 14:14:35,1,-73.781837463378906,40.644771575927734,-73.947227478027344,40.775909423828125,N,2787 +id3578988,2,2016-02-07 09:32:17,2016-02-07 09:34:58,2,-73.96063232421875,40.772518157958984,-73.957923889160156,40.778850555419922,N,161 +id2645847,1,2016-04-06 06:29:32,2016-04-06 06:32:00,1,-73.990516662597656,40.756069183349609,-73.985000610351563,40.759723663330078,N,148 +id0314137,2,2016-05-05 06:54:09,2016-05-05 07:09:42,1,-73.953575134277344,40.772750854492188,-73.987541198730469,40.752128601074219,N,933 +id2116775,2,2016-03-19 23:31:29,2016-03-19 23:44:06,1,-73.870841979980469,40.773735046386719,-73.92645263671875,40.759273529052734,N,757 +id1105693,2,2016-05-30 12:08:55,2016-05-30 12:43:33,1,-73.984283447265625,40.746360778808594,-74.188247680664062,40.691059112548828,N,2078 +id2843399,1,2016-01-26 14:17:58,2016-01-26 14:55:11,1,-73.863479614257813,40.769973754882813,-73.987701416015625,40.775489807128906,N,2233 +id1571903,2,2016-03-23 14:29:49,2016-03-23 14:54:16,5,-73.978828430175781,40.763881683349609,-73.996528625488281,40.734691619873047,N,1467 +id3170849,2,2016-05-21 18:09:30,2016-05-21 18:19:06,1,-73.99066162109375,40.686431884765625,-73.972496032714844,40.69158935546875,N,576 +id0710248,1,2016-05-17 08:32:37,2016-05-17 08:47:06,1,-73.971092224121094,40.762477874755859,-73.988784790039063,40.763507843017578,N,869 +id0381203,1,2016-06-21 14:33:20,2016-06-21 14:36:34,1,-73.993911743164062,40.741527557373047,-74.000404357910156,40.741600036621094,N,194 +id3414062,1,2016-02-19 20:38:38,2016-02-19 21:06:33,2,-73.963516235351563,40.777301788330078,-74.009933471679688,40.733951568603516,N,1675 +id0774314,1,2016-03-09 21:41:10,2016-03-09 22:10:09,1,-74.008522033691406,40.721233367919922,-73.948036193847656,40.780448913574219,N,1739 +id0085741,2,2016-05-06 09:22:56,2016-05-06 09:26:13,1,-73.967239379882813,40.766315460205078,-73.963912963867188,40.771373748779297,N,197 +id0170368,2,2016-04-19 14:12:30,2016-04-19 14:38:47,1,-73.9786376953125,40.746101379394531,-73.991256713867188,40.758705139160156,N,1577 +id2093041,1,2016-05-07 12:31:10,2016-05-07 12:48:56,1,-73.958633422851563,40.778472900390625,-73.988510131835938,40.737594604492188,N,1066 +id0443787,2,2016-06-11 14:34:27,2016-06-11 14:58:31,1,-73.9986572265625,40.739910125732422,-73.978240966796875,40.751270294189453,N,1444 +id3191895,1,2016-02-22 09:50:26,2016-02-22 10:00:43,1,-73.989631652832031,40.754619598388672,-74.000541687011719,40.758491516113281,N,617 +id0178115,1,2016-03-06 14:20:03,2016-03-06 14:26:32,1,-73.99481201171875,40.740211486816406,-73.9915771484375,40.752185821533203,N,389 +id2697532,2,2016-04-21 18:51:31,2016-04-21 19:01:48,6,-74.000007629394531,40.743080139160156,-73.993087768554688,40.752670288085938,N,617 +id2772653,1,2016-04-03 11:10:56,2016-04-03 11:27:45,3,-73.979118347167969,40.731216430664063,-74.010444641113281,40.672161102294922,N,1009 +id0038193,2,2016-04-14 00:02:44,2016-04-14 00:14:44,1,-73.978958129882813,40.719871520996094,-73.987289428710938,40.722408294677734,N,720 +id2453914,1,2016-05-18 21:52:24,2016-05-18 22:28:19,2,-73.87298583984375,40.774166107177734,-73.985572814941406,40.763008117675781,N,2155 +id1700978,2,2016-01-27 15:20:10,2016-01-27 15:28:45,2,-73.999862670898438,40.723129272460938,-73.997032165527344,40.732585906982422,N,515 +id2690163,2,2016-01-06 11:31:21,2016-01-06 11:36:21,1,-73.997718811035156,40.724330902099609,-73.996810913085938,40.718208312988281,N,300 +id3653241,2,2016-04-09 12:22:19,2016-04-09 12:29:32,1,-74.002601623535156,40.749500274658203,-73.993759155273438,40.742450714111328,N,433 +id3679237,1,2016-04-06 14:24:13,2016-04-06 14:54:10,1,-73.996315002441406,40.732143402099609,-73.982673645019531,40.766265869140625,Y,1797 +id1584234,1,2016-02-10 14:54:13,2016-02-10 15:11:35,3,-74.007598876953125,40.732654571533203,-73.990219116210938,40.737403869628906,N,1042 +id3037913,1,2016-02-25 16:58:15,2016-02-25 17:07:44,2,-73.954154968261719,40.779010772705078,-73.975532531738281,40.778537750244141,N,569 +id1444677,2,2016-03-27 03:06:24,2016-03-27 03:28:00,1,-73.967414855957031,40.756336212158203,-73.838180541992188,40.69891357421875,N,1296 +id0043978,1,2016-01-09 11:48:09,2016-01-09 12:11:23,2,-73.974227905273438,40.762611389160156,-73.987724304199219,40.719718933105469,N,1394 +id3533407,1,2016-06-08 20:46:47,2016-06-08 20:50:05,1,-73.976799011230469,40.7476806640625,-73.967964172363281,40.759567260742187,N,198 +id1846357,1,2016-06-24 11:29:42,2016-06-24 11:47:36,1,-73.976882934570313,40.790119171142578,-73.973091125488281,40.762504577636719,N,1074 +id2154802,2,2016-05-01 09:47:44,2016-05-01 10:09:27,1,-73.992942810058594,40.735801696777344,-73.998344421386719,40.732051849365234,N,1303 +id0957165,2,2016-03-06 05:32:42,2016-03-06 05:36:29,1,-74.001777648925781,40.719470977783203,-74.010093688964844,40.720058441162109,N,227 +id2544652,2,2016-04-15 19:56:02,2016-04-15 20:21:08,2,-73.973159790039063,40.763988494873047,-74.001777648925781,40.719451904296875,N,1506 +id0315933,2,2016-02-06 12:07:53,2016-02-06 12:19:19,5,-73.970100402832031,40.762321472167969,-73.958183288574219,40.781410217285156,N,686 +id2773419,1,2016-02-20 23:59:01,2016-02-21 00:22:08,1,-73.987884521484375,40.743968963623047,-73.986846923828125,40.760303497314453,N,1387 +id1376279,1,2016-04-14 18:56:15,2016-04-14 19:07:34,1,-73.98626708984375,40.762081146240234,-73.970184326171875,40.785728454589844,N,679 +id0160409,2,2016-01-17 13:27:35,2016-01-17 13:43:27,1,-73.995162963867188,40.760231018066406,-73.97747802734375,40.75177001953125,N,952 +id3622157,2,2016-03-04 20:31:21,2016-03-04 20:41:41,5,-74.007118225097656,40.706951141357422,-74.006477355957031,40.732505798339844,N,620 +id3667889,2,2016-05-06 12:27:33,2016-05-06 12:54:27,3,-73.970649719238281,40.75775146484375,-74.005531311035156,40.725940704345703,N,1614 +id0655835,2,2016-06-10 23:45:26,2016-06-10 23:52:23,1,-73.982070922851562,40.762481689453125,-73.962608337402344,40.767421722412109,N,417 +id3414097,2,2016-03-16 15:13:10,2016-03-16 15:22:35,2,-73.982597351074219,40.774570465087891,-73.971382141113281,40.78240966796875,N,565 +id0472628,2,2016-06-11 18:15:53,2016-06-11 18:52:36,3,-73.98681640625,40.725349426269531,-73.993965148925781,40.743488311767578,N,2203 +id3418252,1,2016-01-19 09:27:32,2016-01-19 09:42:44,2,-73.989006042480469,40.758647918701172,-74.000083923339844,40.758651733398438,N,912 +id2891600,2,2016-06-27 22:12:08,2016-06-27 22:17:03,3,-73.985687255859375,40.757518768310547,-73.986495971679688,40.750408172607422,N,295 +id1205609,2,2016-02-04 07:08:47,2016-02-04 07:14:04,1,-73.991706848144531,40.75018310546875,-73.978050231933594,40.754619598388672,N,317 +id1465095,1,2016-06-11 13:46:08,2016-06-11 13:55:33,1,-73.959144592285156,40.709117889404297,-73.945053100585937,40.702472686767578,N,565 +id0008309,2,2016-04-12 13:30:55,2016-04-12 13:44:13,1,-73.99456787109375,40.731525421142578,-73.9854736328125,40.741077423095703,N,798 +id0605237,1,2016-01-02 16:11:11,2016-01-02 16:15:52,1,-73.9775390625,40.764545440673828,-73.987594604492187,40.769920349121094,N,281 +id2060853,2,2016-06-18 08:07:44,2016-06-18 08:12:46,2,-74.004119873046875,40.707569122314453,-73.986930847167969,40.713291168212891,N,302 +id1795325,2,2016-04-08 04:23:37,2016-04-08 04:24:06,2,-74.040542602539062,40.717086791992188,-74.040550231933594,40.717090606689453,N,29 +id2599010,2,2016-06-12 02:48:55,2016-06-12 02:56:24,1,-73.983345031738281,40.762645721435547,-73.9761962890625,40.751396179199219,N,449 +id1134446,2,2016-06-19 01:18:36,2016-06-19 01:21:49,1,-73.987220764160156,40.756370544433594,-73.985992431640625,40.762599945068359,N,193 +id0715251,1,2016-01-26 23:06:16,2016-01-26 23:25:52,1,-73.990036010742188,40.741622924804688,-73.985885620117187,40.687347412109375,N,1176 +id1589715,1,2016-02-24 20:00:52,2016-02-24 20:16:27,1,-73.974838256835938,40.752941131591797,-73.982688903808594,40.771507263183594,N,935 +id3539882,2,2016-02-21 14:17:06,2016-02-21 14:19:09,6,-73.98931884765625,40.730438232421875,-73.98797607421875,40.733646392822266,N,123 +id1016899,2,2016-04-27 17:32:50,2016-04-27 17:49:26,5,-73.994560241699219,40.75054931640625,-73.985809326171875,40.7589111328125,N,996 +id3172251,2,2016-06-16 16:02:28,2016-06-16 16:18:08,5,-73.9681396484375,40.767978668212891,-73.973617553710938,40.764541625976562,N,940 +id0910170,1,2016-05-26 09:35:14,2016-05-26 10:06:26,2,-73.992584228515625,40.749912261962891,-74.0142822265625,40.702812194824219,N,1872 +id0067146,1,2016-05-21 00:11:28,2016-05-21 00:20:50,1,-74.006019592285156,40.745216369628906,-73.982490539550781,40.767807006835938,N,562 +id2271657,1,2016-05-11 21:47:29,2016-05-11 21:50:30,1,-74.001808166503906,40.740634918212891,-74.003852844238281,40.747531890869141,N,181 +id3713460,2,2016-02-22 18:50:35,2016-02-22 18:54:26,3,-73.953872680664063,40.787689208984375,-73.960151672363281,40.798191070556641,N,231 +id1545656,1,2016-03-01 22:14:32,2016-03-01 22:27:12,1,-73.996315002441406,40.752616882324219,-73.97802734375,40.789768218994141,N,760 +id3430916,2,2016-04-17 19:49:23,2016-04-17 19:52:20,1,-73.950874328613281,40.7747802734375,-73.956398010253906,40.771335601806641,N,177 +id0649469,1,2016-02-05 20:09:04,2016-02-05 20:10:46,1,-74.004875183105469,40.729759216308594,-74.005638122558594,40.726253509521484,N,102 +id3276909,2,2016-01-04 22:32:58,2016-01-04 22:59:51,3,-73.788177490234375,40.641490936279297,-73.96356201171875,40.716941833496094,N,1613 +id2940898,1,2016-03-30 09:45:26,2016-03-30 09:48:27,1,-73.984336853027344,40.779705047607422,-73.990074157714844,40.77593994140625,N,181 +id2358441,1,2016-05-19 08:58:11,2016-05-19 09:19:32,1,-73.979629516601563,40.760585784912109,-73.98834228515625,40.751880645751953,N,1281 +id0772367,1,2016-01-13 04:36:54,2016-01-13 04:43:15,1,-73.9625244140625,40.760669708251953,-73.976203918457031,40.719284057617187,N,381 +id1494001,2,2016-03-10 20:34:22,2016-03-10 20:44:31,1,-73.975105285644531,40.765079498291016,-73.985313415527344,40.747119903564453,N,609 +id2278015,2,2016-05-13 12:55:41,2016-05-13 13:34:52,2,-73.961349487304688,40.771640777587891,-73.970199584960938,40.752601623535156,N,2351 +id1116353,2,2016-05-20 16:31:28,2016-05-20 16:38:23,1,-73.964706420898437,40.807098388671875,-73.96661376953125,40.794219970703125,N,415 +id2654560,1,2016-03-14 10:48:09,2016-03-14 10:56:47,1,-73.979331970214844,40.761692047119141,-73.972679138183594,40.780544281005859,N,518 +id3974039,2,2016-04-02 11:55:11,2016-04-02 12:19:05,1,-73.976005554199219,40.765895843505859,-74.014640808105469,40.712741851806641,N,1434 +id3430608,1,2016-03-11 14:51:05,2016-03-11 15:05:44,1,-73.966438293457031,40.764629364013672,-73.981864929199219,40.746494293212891,N,879 +id0712003,2,2016-04-21 23:09:15,2016-04-21 23:22:17,1,-73.976737976074219,40.750556945800781,-74.0062255859375,40.709438323974609,N,782 +id2889726,1,2016-05-05 03:56:12,2016-05-05 03:59:02,1,-73.987518310546875,40.765392303466797,-73.987167358398438,40.759468078613281,N,170 +id0329642,2,2016-01-24 17:18:31,2016-01-24 17:46:53,2,-74.008155822753906,40.747966766357422,-73.959800720214844,40.768619537353516,N,1702 +id1397521,2,2016-05-14 12:57:37,2016-05-14 13:03:05,1,-74.001243591308594,40.731266021728516,-74.000755310058594,40.72601318359375,N,328 +id0272202,2,2016-01-12 00:27:37,2016-01-12 00:30:48,1,-73.981781005859375,40.732387542724609,-73.987770080566406,40.737674713134766,N,191 +id3431126,1,2016-03-13 12:42:01,2016-03-13 12:47:22,1,-74.002655029296875,40.728595733642578,-73.992973327636719,40.742778778076172,N,321 +id0380173,1,2016-03-22 16:54:04,2016-03-22 17:01:49,1,-73.978530883789063,40.756492614746094,-73.982879638671875,40.763378143310547,N,465 +id3035843,1,2016-03-17 18:37:08,2016-03-17 18:51:38,2,-73.989151000976563,40.756488800048828,-73.972457885742187,40.753047943115234,N,870 +id3622900,1,2016-06-02 14:46:37,2016-06-02 14:53:27,1,-73.995796203613281,40.732833862304688,-74.0054931640625,40.736953735351563,N,410 +id3958231,2,2016-04-24 19:36:24,2016-04-24 19:41:29,1,-73.963790893554688,40.757083892822266,-73.947158813476562,40.779880523681641,N,305 +id2429437,1,2016-04-05 20:04:22,2016-04-05 20:09:48,1,-73.940467834472656,40.808849334716797,-73.952438354492188,40.808345794677734,N,326 +id1706533,2,2016-01-14 09:00:42,2016-01-14 09:09:56,1,-73.988044738769531,40.768886566162109,-73.994987487792969,40.749958038330078,N,554 +id3462335,2,2016-05-24 22:20:59,2016-05-24 22:38:04,1,-74.008277893066406,40.704669952392578,-73.940788269042969,40.808368682861328,N,1025 +id0165627,2,2016-06-27 15:48:18,2016-06-27 16:02:47,1,-73.999031066894531,40.744651794433594,-73.97601318359375,40.741527557373047,N,869 +id1008871,2,2016-04-08 18:47:51,2016-04-08 18:53:34,6,-73.974922180175781,40.753288269042969,-73.981201171875,40.741539001464844,N,343 +id0738911,1,2016-06-30 10:38:38,2016-06-30 11:03:07,1,-73.987411499023437,40.721534729003906,-73.990959167480469,40.748928070068359,N,1469 +id1701152,2,2016-05-14 14:34:07,2016-05-14 15:02:15,1,-73.97406005859375,40.791301727294922,-73.861778259277344,40.768424987792969,N,1688 +id2901986,1,2016-03-20 02:22:35,2016-03-20 02:33:11,1,-73.949432373046875,40.713981628417969,-73.988265991210937,40.718677520751953,N,636 +id2337495,1,2016-05-14 18:54:22,2016-05-14 18:57:33,1,-73.984390258789063,40.742637634277344,-73.978118896484375,40.751106262207031,N,191 +id0092267,1,2016-04-18 14:42:51,2016-04-18 14:49:48,1,-73.97406005859375,40.779014587402344,-73.978096008300781,40.764640808105469,N,417 +id3247539,2,2016-01-30 21:39:01,2016-01-30 22:01:27,1,-73.991432189941406,40.75006103515625,-74.012359619140625,40.704868316650391,N,1346 +id3931432,1,2016-05-13 22:32:17,2016-05-13 23:04:51,2,-73.991645812988281,40.747222900390625,-73.945693969726563,40.725494384765625,N,1954 +id0039935,2,2016-03-11 17:02:52,2016-03-11 17:10:37,4,-73.994972229003906,40.760372161865234,-73.981040954589844,40.774349212646484,N,465 +id3730391,2,2016-05-31 09:17:09,2016-05-31 09:40:19,3,-73.996040344238281,40.716411590576172,-73.977485656738281,40.635711669921875,N,1390 +id2697904,2,2016-06-21 12:57:01,2016-06-21 13:01:10,1,-73.974151611328125,40.783851623535156,-73.980567932128906,40.775039672851563,N,249 +id0080113,2,2016-02-09 23:32:03,2016-02-09 23:38:28,2,-73.955398559570313,40.779296875,-73.935623168945313,40.795780181884766,N,385 +id0557620,1,2016-03-26 19:53:39,2016-03-26 20:19:59,1,-74.006507873535156,40.722942352294922,-73.956710815429687,40.717128753662109,N,1580 +id3594793,1,2016-03-28 19:19:30,2016-03-28 19:28:53,2,-73.915634155273438,40.743236541748047,-73.919059753417969,40.758834838867188,N,563 +id0513243,2,2016-02-22 03:53:21,2016-02-22 04:02:00,2,-73.984619140625,40.726516723632813,-74.00775146484375,40.740699768066406,N,519 +id0030369,1,2016-02-07 02:34:08,2016-02-07 02:38:44,1,-74.004280090332031,40.742401123046875,-73.997978210449219,40.755767822265625,N,276 +id1446119,1,2016-05-17 10:53:59,2016-05-17 11:17:13,1,-73.992477416992188,40.724090576171875,-74.002586364746094,40.755962371826172,N,1394 +id0565587,1,2016-01-11 15:59:43,2016-01-11 16:07:47,1,-73.9593505859375,40.763339996337891,-73.945014953613281,40.779170989990234,N,484 +id0854369,1,2016-05-03 13:29:20,2016-05-03 13:37:41,1,-73.989547729492188,40.735958099365234,-74.00225830078125,40.733509063720703,N,501 +id2863985,1,2016-05-14 22:35:10,2016-05-14 22:41:54,1,-73.987228393554688,40.762775421142578,-73.975990295410156,40.780593872070312,N,404 +id1282735,2,2016-03-12 02:47:25,2016-03-12 03:02:00,1,-74.008552551269531,40.736351013183594,-73.986129760742188,40.722499847412109,N,875 +id2418015,2,2016-03-31 07:38:24,2016-03-31 08:11:06,2,-73.961433410644531,40.796230316162109,-74.004791259765625,40.706821441650391,N,1962 +id2574790,2,2016-01-12 10:22:00,2016-01-12 10:39:50,1,-73.959754943847656,40.762523651123047,-73.98199462890625,40.766048431396484,N,1070 +id3467404,1,2016-01-19 07:23:03,2016-01-19 07:31:43,1,-73.984039306640625,40.780235290527344,-73.967582702636719,40.789516448974609,N,520 +id2012728,2,2016-05-15 06:56:37,2016-05-15 07:01:02,1,-73.950469970703125,40.775260925292969,-73.9327392578125,40.795570373535156,N,265 +id3475860,2,2016-05-14 23:43:46,2016-05-14 23:52:44,2,-74.003921508789063,40.742790222167969,-73.993827819824219,40.750289916992188,N,538 +id1276463,2,2016-04-28 23:47:31,2016-04-28 23:54:39,1,-73.987442016601563,40.749500274658203,-73.977401733398437,40.738140106201172,N,428 +id2979733,1,2016-02-23 15:26:26,2016-02-23 15:46:54,1,-73.948036193847656,40.770217895507813,-73.993415832519531,40.736003875732422,Y,1228 +id2995108,1,2016-04-15 09:11:00,2016-04-15 09:26:12,1,-73.99176025390625,40.754497528076172,-73.971641540527344,40.75372314453125,N,912 +id3348136,2,2016-06-06 22:47:43,2016-06-06 23:01:09,1,-73.986885070800781,40.739788055419922,-73.955184936523438,40.745918273925781,N,806 +id0954119,2,2016-01-28 22:38:26,2016-01-28 22:47:41,2,-73.99212646484375,40.744186401367188,-73.999954223632813,40.761386871337891,N,555 +id0656267,1,2016-05-18 14:57:48,2016-05-18 15:02:53,2,-74.002952575683594,40.728115081787109,-74.006866455078125,40.719612121582031,N,305 +id1156655,1,2016-06-26 20:30:55,2016-06-26 20:41:12,1,-73.980545043945313,40.730613708496094,-73.993461608886719,40.721561431884766,N,617 +id1724536,1,2016-06-01 19:03:10,2016-06-01 19:14:09,1,-73.998420715332031,40.740455627441406,-73.9954833984375,40.749416351318359,N,659 +id3812504,2,2016-01-17 07:14:09,2016-01-17 07:22:37,1,-73.982086181640625,40.778892517089844,-73.954818725585937,40.764995574951172,N,508 +id2880745,2,2016-05-07 23:24:19,2016-05-07 23:44:02,1,-73.993766784667969,40.720901489257813,-73.963943481445312,40.677608489990234,N,1183 +id2631052,1,2016-02-03 16:17:59,2016-02-03 16:49:59,1,-74.013031005859375,40.715068817138672,-73.980331420898438,40.761283874511719,N,1920 +id0955435,2,2016-01-13 00:11:18,2016-01-13 00:19:02,1,-73.98150634765625,40.758819580078125,-73.97918701171875,40.740398406982422,N,464 +id2658840,2,2016-01-30 12:23:08,2016-01-30 13:04:17,6,-73.971000671386719,40.795940399169922,-73.780258178710937,40.64556884765625,N,2469 +id3826436,1,2016-01-19 07:46:53,2016-01-19 07:51:11,1,-73.991073608398438,40.755649566650391,-73.978988647460938,40.760211944580078,N,258 +id2746707,2,2016-01-28 12:44:35,2016-01-28 13:01:06,1,-73.966117858886719,40.773830413818359,-73.973190307617187,40.762031555175781,N,991 +id1163780,1,2016-01-06 21:09:31,2016-01-06 21:13:42,1,-73.949668884277344,40.776908874511719,-73.937545776367188,40.796989440917969,N,251 +id0757317,1,2016-02-07 17:45:40,2016-02-07 17:59:31,4,-73.994926452636719,40.760528564453125,-73.976051330566406,40.795211791992188,N,831 +id1925427,1,2016-03-04 10:00:50,2016-03-04 10:27:53,1,-74.009445190429687,40.710098266601563,-74.013420104980469,40.622905731201172,N,1623 +id3898913,1,2016-02-19 15:12:53,2016-02-19 15:42:02,1,-73.986221313476563,40.741134643554688,-73.872665405273437,40.774345397949219,N,1749 +id1465386,1,2016-03-25 22:33:58,2016-03-25 22:47:51,1,-74.01080322265625,40.708740234375,-73.999778747558594,40.733310699462891,N,833 +id2365167,2,2016-06-05 21:54:18,2016-06-05 22:02:54,1,-73.975372314453125,40.752571105957031,-73.991661071777344,40.74334716796875,N,516 +id1061813,1,2016-02-29 22:11:09,2016-02-29 22:41:16,1,-73.987823486328125,40.740856170654297,-73.934104919433594,40.855823516845703,N,1807 +id1246707,2,2016-06-19 13:28:10,2016-06-19 13:35:43,1,-73.994697570800781,40.732425689697266,-74.002433776855469,40.729331970214844,N,453 +id2442511,1,2016-06-13 15:00:00,2016-06-13 15:09:38,1,-73.978065490722656,40.783279418945313,-73.96160888671875,40.776199340820313,N,578 +id2112388,2,2016-06-18 00:21:46,2016-06-18 01:14:04,1,-73.902412414550781,40.633628845214844,-73.902458190917969,40.633708953857422,N,3138 +id2566067,2,2016-02-14 22:12:44,2016-02-14 22:34:14,1,-73.940330505371094,40.750930786132813,-73.911453247070313,40.703170776367188,N,1290 +id1733838,1,2016-02-09 16:53:22,2016-02-09 17:05:37,1,-73.967681884765625,40.802959442138672,-73.949249267578125,40.785148620605469,N,735 +id3285959,1,2016-03-24 01:28:33,2016-03-24 01:35:46,1,-73.962364196777344,40.760341644287109,-73.954376220703125,40.783061981201172,N,433 +id3170139,1,2016-03-11 21:27:29,2016-03-11 21:43:46,2,-73.99029541015625,40.728961944580078,-74.007293701171875,40.74090576171875,N,977 +id3308232,2,2016-03-13 12:39:35,2016-03-13 12:43:53,1,-73.957405090332031,40.779983520507812,-73.960037231445312,40.771263122558594,N,258 +id3898924,1,2016-01-28 08:58:03,2016-01-28 09:18:23,1,-73.974662780761719,40.750431060791016,-73.981109619140625,40.765960693359375,N,1220 +id2474650,1,2016-03-23 23:49:19,2016-03-23 23:53:53,1,-73.997055053710938,40.742271423339844,-74.006668090820312,40.749191284179688,N,274 +id1358671,1,2016-06-26 12:07:55,2016-06-26 12:21:19,3,-73.978553771972656,40.752288818359375,-73.982063293457031,40.757392883300781,N,804 +id0568962,1,2016-06-13 20:55:49,2016-06-13 21:08:35,1,-73.980270385742187,40.748878479003906,-73.98919677734375,40.774246215820313,N,766 +id1674701,1,2016-01-10 15:05:48,2016-01-10 15:23:48,1,-74.007133483886719,40.734416961669922,-73.978294372558594,40.753822326660156,N,1080 +id2572207,1,2016-04-19 15:45:12,2016-04-19 15:46:55,1,-73.965927124023438,40.794437408447266,-73.968833923339844,40.790683746337891,N,103 +id3653534,2,2016-03-19 18:48:23,2016-03-19 18:57:53,1,-73.972160339355469,40.756278991699219,-73.99365234375,40.750038146972656,N,570 +id1142389,2,2016-05-21 12:42:56,2016-05-21 12:49:52,1,-73.944808959960938,40.779186248779297,-73.959083557128906,40.776767730712891,N,416 +id1205737,1,2016-01-25 20:12:54,2016-01-25 20:14:46,1,-73.990745544433594,40.760860443115234,-73.993232727050781,40.757484436035156,N,112 +id0341321,2,2016-03-18 14:11:49,2016-03-18 14:19:27,1,-73.963890075683594,40.765308380126953,-73.956207275390625,40.784049987792969,N,458 +id1292293,2,2016-06-04 17:52:04,2016-06-04 18:28:39,2,-74.016059875488281,40.711200714111328,-73.96282958984375,40.796878814697266,N,2195 +id0264842,2,2016-05-17 07:26:27,2016-05-17 07:48:04,1,-74.016281127929688,40.706439971923828,-73.978080749511719,40.752799987792969,N,1297 +id0859022,2,2016-05-26 18:12:15,2016-05-26 18:26:43,1,-73.975883483886719,40.760261535644531,-73.986648559570313,40.745689392089844,N,868 +id3535931,1,2016-04-22 10:53:37,2016-04-22 11:16:48,1,-73.995559692382813,40.759429931640625,-74.001335144042969,40.731742858886719,N,1391 +id2891771,2,2016-04-29 17:03:21,2016-04-29 17:09:54,5,-73.986129760742188,40.726341247558594,-73.990966796875,40.73291015625,N,393 +id3822217,1,2016-02-18 00:46:56,2016-02-18 00:49:23,1,-73.989883422851562,40.734195709228516,-73.998527526855469,40.738174438476562,N,147 +id0551859,2,2016-02-24 18:37:01,2016-02-24 18:45:36,1,-73.989540100097656,40.735771179199219,-73.981758117675781,40.746059417724609,N,515 +id3549836,2,2016-06-19 11:43:25,2016-06-19 11:54:44,5,-73.978805541992188,40.752941131591797,-74.004081726074219,40.756744384765625,N,679 +id2037670,1,2016-04-03 17:34:59,2016-04-03 17:45:38,1,-73.979690551757812,40.765586853027344,-73.98260498046875,40.779060363769531,N,639 +id0078126,2,2016-02-13 01:08:05,2016-02-13 01:12:53,2,-73.984840393066406,40.711387634277344,-73.981353759765625,40.722053527832031,N,288 +id3644165,1,2016-02-24 19:20:29,2016-02-24 19:36:00,1,-73.988029479980469,40.754524230957031,-73.959396362304688,40.776092529296875,N,931 +id3819108,1,2016-06-08 12:06:42,2016-06-08 12:07:42,1,-73.867088317871094,40.770343780517578,-73.867088317871094,40.770343780517578,N,60 +id2860324,2,2016-05-19 22:44:42,2016-05-19 22:49:48,2,-73.988456726074219,40.696319580078125,-74.010902404785156,40.713718414306641,N,306 +id0752258,2,2016-01-22 09:59:55,2016-01-22 10:31:03,1,-73.870933532714844,40.773700714111328,-73.970848083496094,40.755229949951172,N,1868 +id3325936,2,2016-02-10 06:40:20,2016-02-10 06:53:22,1,-73.96923828125,40.800205230712891,-73.968460083007813,40.762290954589844,N,782 +id1668665,2,2016-02-19 20:41:20,2016-02-19 20:55:59,1,-73.982246398925781,40.731178283691406,-74.002838134765625,40.734130859375,N,879 +id3397398,1,2016-03-28 14:41:36,2016-03-28 14:55:06,1,-73.991600036621094,40.749736785888672,-73.98468017578125,40.756759643554687,N,810 +id1350825,1,2016-04-28 05:15:37,2016-04-28 05:40:52,2,-73.955856323242188,40.779563903808594,-73.777626037597656,40.644771575927734,N,1515 +id0309508,2,2016-04-30 00:27:52,2016-04-30 00:38:03,1,-73.989036560058594,40.730789184570313,-73.989036560058594,40.730789184570313,N,611 +id2109494,2,2016-06-09 09:35:34,2016-06-09 09:53:20,1,-73.947074890136719,40.780868530273438,-73.975776672363281,40.751117706298828,N,1066 +id1810443,1,2016-05-27 00:16:00,2016-05-27 00:28:54,1,-73.990463256835938,40.760963439941406,-73.964729309082031,40.755775451660156,N,774 +id0033827,2,2016-02-02 11:04:50,2016-02-02 11:07:07,1,-73.9752197265625,40.789997100830078,-73.970809936523438,40.794170379638672,N,137 +id3581243,2,2016-01-08 19:58:17,2016-01-08 20:03:35,2,-74.002418518066406,40.747840881347656,-73.999671936035156,40.739479064941406,N,318 +id1704261,1,2016-02-19 00:02:02,2016-02-19 00:02:09,1,-73.982398986816406,40.763599395751953,-73.982391357421875,40.763599395751953,N,7 +id2328769,2,2016-02-24 08:29:52,2016-02-24 08:47:59,2,-73.980155944824219,40.751438140869141,-74.008087158203125,40.717033386230469,N,1087 +id1086220,2,2016-05-22 19:37:09,2016-05-22 19:42:51,4,-73.998985290527344,40.734317779541016,-73.986488342285156,40.734260559082031,N,342 +id2203756,1,2016-01-04 12:34:46,2016-01-04 13:35:22,1,-73.995330810546875,40.744735717773437,-74.001815795898437,40.745845794677734,N,3636 +id1301192,2,2016-02-09 13:20:30,2016-02-09 13:32:24,1,-73.988166809082031,40.754337310791016,-73.976089477539063,40.764125823974609,N,714 +id0951078,1,2016-02-04 20:42:18,2016-02-04 20:51:20,1,-73.993682861328125,40.749752044677734,-73.978500366210938,40.764732360839844,N,542 +id0283037,2,2016-02-03 11:27:17,2016-02-03 11:41:54,2,-73.982048034667969,40.757358551025391,-73.990180969238281,40.751289367675781,N,877 +id3931898,2,2016-04-10 08:06:55,2016-04-10 08:32:02,6,-73.781829833984375,40.644687652587891,-73.956268310546875,40.779808044433594,N,1507 +id1340606,1,2016-04-28 16:07:15,2016-04-28 17:19:01,1,-73.970474243164063,40.762416839599609,-73.788955688476562,40.641586303710938,N,4306 +id0579770,2,2016-04-17 11:54:13,2016-04-17 12:03:54,1,-73.969047546386719,40.763950347900391,-73.980117797851563,40.770671844482422,N,581 +id0599918,2,2016-03-24 16:20:42,2016-03-24 16:27:28,1,-73.975349426269531,40.75067138671875,-73.959663391113281,40.760272979736328,N,406 +id2278996,2,2016-01-03 09:02:14,2016-01-03 09:11:12,5,-73.963119506835938,40.774169921875,-73.971649169921875,40.750560760498047,N,538 +id3676178,2,2016-01-16 18:12:00,2016-01-16 18:20:42,1,-73.994316101074219,40.750965118408203,-73.990280151367188,40.744365692138672,N,522 +id2668316,1,2016-02-16 04:25:30,2016-02-16 04:29:13,1,-74.006744384765625,40.744167327880859,-73.99749755859375,40.7420654296875,N,223 +id1658352,1,2016-05-26 00:11:22,2016-05-26 00:14:21,1,-73.953460693359375,40.780277252197266,-73.94903564453125,40.781421661376953,N,179 +id2442124,1,2016-06-04 17:06:48,2016-06-04 17:20:43,2,-73.991104125976563,40.749973297119141,-73.998298645019531,40.722515106201172,N,835 +id2402293,2,2016-02-25 19:03:34,2016-02-25 19:17:03,2,-73.9918212890625,40.733470916748047,-74.004676818847656,40.752220153808594,N,809 +id1028202,1,2016-03-05 18:54:55,2016-03-05 19:07:23,1,-73.983955383300781,40.780586242675781,-73.957748413085937,40.801071166992188,N,748 +id0753785,2,2016-04-02 22:23:43,2016-04-02 22:45:03,1,-74.003448486328125,40.732688903808594,-73.989875793457031,40.760551452636719,N,1280 +id3212292,2,2016-04-13 19:43:50,2016-04-13 19:49:17,6,-73.976669311523438,40.750518798828125,-73.984428405761719,40.737091064453125,N,327 +id3549678,2,2016-06-04 21:46:27,2016-06-04 21:59:50,2,-74.013107299804688,40.705371856689453,-74.00567626953125,40.746635437011719,N,803 +id2719613,1,2016-03-05 20:48:17,2016-03-05 20:59:21,2,-73.984695434570313,40.779697418212891,-74.003288269042969,40.752338409423828,N,664 +id2983067,2,2016-02-25 01:16:55,2016-02-25 01:21:29,2,-74.007896423339844,40.741291046142578,-74.002403259277344,40.73968505859375,N,274 +id0744695,2,2016-03-11 10:50:46,2016-03-11 10:58:55,1,-73.996246337890625,40.715923309326172,-73.991622924804687,40.726768493652344,N,489 +id1809414,2,2016-01-12 18:04:10,2016-01-12 18:28:16,3,-73.9774169921875,40.757915496826172,-74.010566711425781,40.709095001220703,N,1446 +id0426296,2,2016-01-04 22:49:20,2016-01-04 23:04:56,1,-73.922279357910156,40.702457427978516,-73.976470947265625,40.694442749023438,N,936 +id2697235,1,2016-01-24 19:36:18,2016-01-24 19:47:13,1,-74.009681701660156,40.710727691650391,-74.005958557128906,40.735736846923828,N,655 +id3466408,2,2016-04-10 00:04:19,2016-04-10 00:13:37,1,-73.98895263671875,40.745029449462891,-74.002082824707031,40.745140075683594,N,558 +id2730777,2,2016-02-24 06:45:36,2016-02-24 06:53:54,6,-73.9847412109375,40.747798919677734,-73.995079040527344,40.755451202392578,N,498 +id1297602,1,2016-04-22 15:35:42,2016-04-22 16:32:02,1,-74.0157470703125,40.710857391357422,-73.791107177734375,40.662216186523438,N,3380 +id3460434,1,2016-05-04 07:21:33,2016-05-04 07:30:42,1,-73.960182189941406,40.779003143310547,-73.965782165527344,40.803066253662109,N,549 +id0094496,2,2016-02-23 08:54:32,2016-02-23 09:09:39,6,-73.862800598144531,40.768695831298828,-73.871902465820312,40.728958129882812,N,907 +id1713877,2,2016-01-27 12:55:03,2016-01-27 13:27:52,1,-73.976356506347656,40.748302459716797,-73.961784362792969,40.771598815917969,N,1969 +id1825810,2,2016-02-29 02:40:18,2016-02-29 03:13:46,1,-74.012901306152344,40.708011627197266,-73.743919372558594,40.707088470458984,N,2008 +id0939230,2,2016-03-16 11:30:41,2016-03-16 11:39:18,2,-73.98211669921875,40.731960296630859,-73.975830078125,40.748950958251953,N,517 +id0387644,1,2016-05-02 16:13:08,2016-05-02 16:25:05,1,-73.974800109863281,40.749832153320313,-73.967018127441406,40.760795593261719,N,717 +id2383579,2,2016-03-04 21:32:25,2016-03-04 21:40:21,5,-73.984916687011719,40.758575439453125,-73.989608764648437,40.741317749023438,N,476 +id3812173,1,2016-01-14 11:12:23,2016-01-14 11:22:52,1,-74.006538391113281,40.735153198242187,-73.998291015625,40.724868774414063,N,629 +id2400251,1,2016-03-02 00:43:19,2016-03-02 00:55:48,1,-73.999198913574219,40.724971771240234,-73.978378295898437,40.751407623291016,N,749 +id1244481,2,2016-01-15 13:45:35,2016-01-15 14:39:37,5,-73.996322631835938,40.733100891113281,-73.801666259765625,40.666831970214844,N,3242 +id1454368,2,2016-03-19 01:39:35,2016-03-19 01:55:46,1,-73.993888854980469,40.756839752197266,-73.94927978515625,40.827789306640625,N,971 +id1441924,1,2016-03-27 01:21:27,2016-03-27 01:36:59,2,-73.997222900390625,40.719306945800781,-73.986656188964844,40.761302947998047,N,932 +id3024892,1,2016-06-13 10:33:06,2016-06-13 10:39:18,1,-73.987190246582031,40.760955810546875,-73.982147216796875,40.768260955810547,N,372 +id2827899,1,2016-03-25 15:57:28,2016-03-25 16:02:23,1,-73.975090026855469,40.756076812744141,-73.968574523925781,40.764621734619141,N,295 diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index f0faf502c8d..dbe1fdda83b 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -243,7 +243,7 @@ def _convert_timestamp(df, timestamp_col): """Converts the given df's timestamp column to ISO8601 format """ df[timestamp_col] = pd.to_datetime(df[timestamp_col]).dt \ - .strftime("%Y-%m-%dT%H:%M:%S%z") + .strftime("%Y-%m-%dT%H:%M:%S%zZ") def _properties(source, size, require_staging, remote): diff --git a/sdk/python/feast/sdk/utils/types.py b/sdk/python/feast/sdk/utils/types.py index 9516a74ed1b..3f441a94fdc 100644 --- a/sdk/python/feast/sdk/utils/types.py +++ b/sdk/python/feast/sdk/utils/types.py @@ -19,7 +19,10 @@ "float64": ValueType.DOUBLE, "float32": ValueType.FLOAT, "int64": ValueType.INT64, + "uint64": ValueType.INT64, "int32": ValueType.INT32, + "uint32": ValueType.INT32, + "uint8": ValueType.INT32, "int8": ValueType.INT32, "bool": ValueType.BOOL, "timedelta": ValueType.INT64, From 9ec6bdfc697fe046442ad2dcf3e712f08219f587 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 14 Jan 2019 10:11:54 +0800 Subject: [PATCH 43/50] Rename method, remove email --- .../examples/quickstart/Quickstart.ipynb | 2 +- sdk/python/feast/sdk/client.py | 6 ++--- sdk/python/setup.py | 2 -- sdk/python/tests/sdk/test_client.py | 24 +++++++++---------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/sdk/python/examples/quickstart/Quickstart.ipynb b/sdk/python/examples/quickstart/Quickstart.ipynb index e3ccc644365..9034741a03b 100644 --- a/sdk/python/examples/quickstart/Quickstart.ipynb +++ b/sdk/python/examples/quickstart/Quickstart.ipynb @@ -178,7 +178,7 @@ " \"ride.none.vi_2\",\n", " \"ride.none.sf_n\",\n", " \"ride.none.sf_y\"])\n", - "dataset_info = fs.create_training_dataset(feature_set, \"2016-06-01\", \"2016-08-01\")\n", + "dataset_info = fs.create_dataset(feature_set, \"2016-06-01\", \"2016-08-01\")\n", "dataset = fs.download_dataset_to_df(dataset_info, staging_location=STAGING_LOCATION)\n", "\n", "dataset.head()\n", diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 68d128ead25..5299076b167 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -179,7 +179,7 @@ def run(self, importer, name_override=None, print("Submitted job with id: {}".format(response.jobId)) return response.jobId - def create_training_dataset(self, feature_set, start_date, end_date, + def create_dataset(self, feature_set, start_date, end_date, limit=None, name_prefix=None): """ Create training dataset for a feature set. The training dataset @@ -201,7 +201,7 @@ def create_training_dataset(self, feature_set, start_date, end_date, feast.resources.feature_set.DatasetInfo: DatasetInfo containing the information of training dataset """ - self._check_create_training_dataset_args(feature_set, start_date, + self._check_create_dataset_args(feature_set, start_date, end_date, limit) req = TrainingServiceTypes.CreateTrainingDatasetRequest( @@ -432,7 +432,7 @@ def _apply_storage(self, storage): "{}\n{}".format(response.storageId, storage)) return response.storageId - def _check_create_training_dataset_args(self, feature_set, start_date, + def _check_create_dataset_args(self, feature_set, start_date, end_date, limit): if len(feature_set.features) < 1: raise ValueError("feature set is empty") diff --git a/sdk/python/setup.py b/sdk/python/setup.py index a7cef102e4c..6e3fe62f6cf 100644 --- a/sdk/python/setup.py +++ b/sdk/python/setup.py @@ -19,7 +19,6 @@ NAME = 'Feast' DESCRIPTION = 'Python sdk for Feast' URL = 'https://github.com/gojek/feast' -EMAIL = 'zhiling.c@go-jek.com' AUTHOR = 'Feast' REQUIRES_PYTHON = '>=3.6.0' VERSION = imp.load_source( @@ -41,7 +40,6 @@ version=VERSION, description=DESCRIPTION, author=AUTHOR, - author_email=EMAIL, python_requires=REQUIRES_PYTHON, url=URL, packages=find_packages(exclude=('tests',)), diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index e20a7bbf978..d34842d7ab0 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -140,34 +140,34 @@ def test_run_job_no_staging(self, client, mocker): job_id = client.run(importer) assert job_id == "myjob12312" - def test_create_training_dataset_invalid_args(self, client): + def test_create_dataset_invalid_args(self, client): feature_set = FeatureSet("entity", ["entity.none.feature1"]) # empty feature set with pytest.raises(ValueError, match="feature set is empty"): inv_feature_set = FeatureSet("entity", []) - client.create_training_dataset(inv_feature_set, "2018-12-01", + client.create_dataset(inv_feature_set, "2018-12-01", "2018-12-02") # invalid start date with pytest.raises(ValueError, match="Incorrect date format, should be YYYY-MM-DD"): - client.create_training_dataset(feature_set, "20181201", + client.create_dataset(feature_set, "20181201", "2018-12-02") # invalid end date with pytest.raises(ValueError, match="Incorrect date format, should be YYYY-MM-DD"): - client.create_training_dataset(feature_set, "2018-12-01", + client.create_dataset(feature_set, "2018-12-01", "20181202") # start date > end date with pytest.raises(ValueError, match="end_date is before start_date"): - client.create_training_dataset(feature_set, "2018-12-02", + client.create_dataset(feature_set, "2018-12-02", "2018-12-01") # invalid limit with pytest.raises(ValueError, match="limit is not a positive integer"): - client.create_training_dataset(feature_set, "2018-12-01", + client.create_dataset(feature_set, "2018-12-01", "2018-12-02", -1) - def test_create_training_dataset(self, client, mocker): + def test_create_dataset(self, client, mocker): entity_name = "myentity" feature_ids = ["myentity.none.feature1", "myentity.second.feature2"] fs = FeatureSet(entity_name, feature_ids) @@ -183,7 +183,7 @@ def test_create_training_dataset(self, client, mocker): .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) client._training_service_stub = mock_trn_stub - ds = client.create_training_dataset(fs, start_date, end_date) + ds = client.create_dataset(fs, start_date, end_date) assert "dataset_name" == ds.name assert "project.dataset.table" == ds.table_id @@ -197,7 +197,7 @@ def test_create_training_dataset(self, client, mocker): ) ) - def test_create_training_dataset_with_limit(self, client, mocker): + def test_create_dataset_with_limit(self, client, mocker): entity_name = "myentity" feature_ids = ["myentity.none.feature1", "myentity.second.feature2"] fs = FeatureSet(entity_name, feature_ids) @@ -214,7 +214,7 @@ def test_create_training_dataset_with_limit(self, client, mocker): .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) client._training_service_stub = mock_trn_stub - ds = client.create_training_dataset(fs, start_date, end_date, + ds = client.create_dataset(fs, start_date, end_date, limit=limit) assert "dataset_name" == ds.name @@ -229,7 +229,7 @@ def test_create_training_dataset_with_limit(self, client, mocker): ) ) - def test_create_training_dataset_with_name_prefix(self, client, mocker): + def test_create_dataset_with_name_prefix(self, client, mocker): entity_name = "myentity" feature_ids = ["myentity.none.feature1", "myentity.second.feature2"] fs = FeatureSet(entity_name, feature_ids) @@ -247,7 +247,7 @@ def test_create_training_dataset_with_name_prefix(self, client, mocker): .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) client._training_service_stub = mock_trn_stub - ds = client.create_training_dataset(fs, start_date, end_date, + ds = client.create_dataset(fs, start_date, end_date, limit=limit, name_prefix=name_prefix) From b2df51804176cc92950b976335af69dce6b2c51c Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 14 Jan 2019 10:56:38 +0800 Subject: [PATCH 44/50] Add retrieve serving data steps --- .../examples/quickstart/Quickstart.ipynb | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/sdk/python/examples/quickstart/Quickstart.ipynb b/sdk/python/examples/quickstart/Quickstart.ipynb index 9034741a03b..9fa4c0689c4 100644 --- a/sdk/python/examples/quickstart/Quickstart.ipynb +++ b/sdk/python/examples/quickstart/Quickstart.ipynb @@ -32,7 +32,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "# Feature engineering steps \n", @@ -112,6 +114,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -205,7 +208,21 @@ "# Retrieving data: Serving\n", "\n", "# set serving endpoint\n", - "fs.serving_url = FEAST_SERVING_URL\n", + "fs = Client(serving_url=FEAST_SERVING_URL, verbose=True)\n", + "\n", + "feature_set = FeatureSet(entity=\"ride\", \n", + " features=[\"ride.none.log_trip_duration\", \n", + " \"ride.none.distance_haversine\",\n", + " \"ride.none.distance_dummy_manhattan\",\n", + " \"ride.none.direction\",\n", + " \"ride.none.month\",\n", + " \"ride.none.day_of_month\",\n", + " \"ride.none.hour\",\n", + " \"ride.none.day_of_week\",\n", + " \"ride.none.vi_1\",\n", + " \"ride.none.vi_2\",\n", + " \"ride.none.sf_n\",\n", + " \"ride.none.sf_y\"])\n", "\n", "# retrieve features\n", "feats = fs.get_serving_data(feature_set, entity_keys=[\"id2875421\",\"id1244481\"])\n", From 7e2a394cf232060a366e977826abf51a3c839cc8 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 14 Jan 2019 11:08:53 +0800 Subject: [PATCH 45/50] Change gs to gcs --- sdk/python/feast/sdk/importer.py | 6 +++--- sdk/python/feast/sdk/utils/bq_util.py | 4 ++-- sdk/python/feast/sdk/utils/gs_utils.py | 4 ++-- sdk/python/tests/sdk/utils/test_bq_utils.py | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index dbe1fdda83b..0219bb5ebeb 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -17,7 +17,7 @@ import time import datetime from feast.specs.ImportSpec_pb2 import ImportSpec, Schema -from feast.sdk.utils.gs_utils import gs_to_df, is_gs_path, df_to_gs +from feast.sdk.utils.gs_utils import gcs_to_df, is_gs_path, df_to_gcs from feast.sdk.utils.print_utils import spec_to_yaml from feast.sdk.utils.types import dtype_to_value_type from feast.sdk.utils.bq_util import head @@ -104,7 +104,7 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, import_spec_options["path"], require_staging = _get_remote_location(path, staging_location) if is_gs_path(path): - df = gs_to_df(path) + df = gcs_to_df(path) else: df = pd.read_csv(path) schema, features = _detect_schema_and_feature(entity, @@ -220,7 +220,7 @@ def stage(self): return ts_col = self.spec.schema.timestampColumn _convert_timestamp(self.df, ts_col) - df_to_gs(self.df, self.remote_path) + df_to_gcs(self.df, self.remote_path) def describe(self): """Print out the import spec. diff --git a/sdk/python/feast/sdk/utils/bq_util.py b/sdk/python/feast/sdk/utils/bq_util.py index e3a418093bb..535d56a14cc 100644 --- a/sdk/python/feast/sdk/utils/bq_util.py +++ b/sdk/python/feast/sdk/utils/bq_util.py @@ -22,7 +22,7 @@ from google.cloud.bigquery.table import Table from google.cloud.storage import Client as GCSClient -from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gs_to_df +from feast.sdk.utils.gs_utils import is_gs_path, split_gs_path, gcs_to_df def head(client, table, max_rows=10): @@ -151,4 +151,4 @@ def download_table_as_df(self, table_id, staging_location): # await completion job.result() - return gs_to_df(staging_file_path) + return gcs_to_df(staging_file_path) diff --git a/sdk/python/feast/sdk/utils/gs_utils.py b/sdk/python/feast/sdk/utils/gs_utils.py index be70fb2c811..4a37fb416de 100644 --- a/sdk/python/feast/sdk/utils/gs_utils.py +++ b/sdk/python/feast/sdk/utils/gs_utils.py @@ -23,7 +23,7 @@ _GCS_PATH_REGEX = r'^gs:\/\/[a-z0-9\.\-_\/]*$' -def gs_to_df(path): +def gcs_to_df(path): """Reads a file from gs to pandas Args: @@ -44,7 +44,7 @@ def gs_to_df(path): return df -def df_to_gs(df, path): +def df_to_gcs(df, path): """Writes the given df to the path specified. Will fail if the bucket does not exist. diff --git a/sdk/python/tests/sdk/utils/test_bq_utils.py b/sdk/python/tests/sdk/utils/test_bq_utils.py index f7ae151abf5..f45202ee784 100644 --- a/sdk/python/tests/sdk/utils/test_bq_utils.py +++ b/sdk/python/tests/sdk/utils/test_bq_utils.py @@ -44,8 +44,8 @@ def test_get_table_name_not_bq(): class TestTableDownloader(object): def test_download_table_as_df(self, mocker): self._stop_time(mocker) - mocked_gs_to_df = mocker.patch( - "feast.sdk.utils.bq_util.gs_to_df", + mocked_gcs_to_df = mocker.patch( + "feast.sdk.utils.bq_util.gcs_to_df", return_value=None) staging_path = "gs://temp/" @@ -70,7 +70,7 @@ def test_download_table_as_df(self, mocker): table_id).full_table_id assert args[1] == exp_staging_path assert kwargs['job_config'].destination_format == "CSV" - mocked_gs_to_df.assert_called_once_with(exp_staging_path) + mocked_gcs_to_df.assert_called_once_with(exp_staging_path) def test_download_csv(self, mocker): self._stop_time(mocker) From e5b85dbb2bdb92a4e792c661003c8e9cd93f8f5a Mon Sep 17 00:00:00 2001 From: Pradithya Aria Date: Mon, 14 Jan 2019 11:57:24 +0800 Subject: [PATCH 46/50] Rename TrainingService into DatasetService --- .../feast/core/config/TrainingConfig.java | 14 +- ...rviceImpl.java => DatasetServiceImpl.java} | 34 ++--- ...eator.java => BigQueryDatasetCreator.java} | 16 +-- ...ter.java => BigQueryDatasetTemplater.java} | 6 +- ...lTest.java => DatasetServiceImplTest.java} | 68 ++++----- ...t.java => BigQueryDatasetCreatorTest.java} | 18 +-- ...java => BigQueryDatasetTemplaterTest.java} | 12 +- ...ningService.proto => DatasetService.proto} | 13 +- ...ngService_pb2.py => DatasetService_pb2.py} | 130 +++++++++--------- .../feast/core/DatasetService_pb2_grpc.py | 46 +++++++ .../feast/core/TrainingService_pb2_grpc.py | 46 ------- sdk/python/feast/sdk/client.py | 12 +- sdk/python/feast/sdk/resources/feature_set.py | 2 +- sdk/python/tests/sdk/test_client.py | 48 +++---- 14 files changed, 232 insertions(+), 233 deletions(-) rename core/src/main/java/feast/core/grpc/{TrainingServiceImpl.java => DatasetServiceImpl.java} (74%) rename core/src/main/java/feast/core/training/{BigQueryTrainingDatasetCreator.java => BigQueryDatasetCreator.java} (92%) rename core/src/main/java/feast/core/training/{BigQueryTrainingDatasetTemplater.java => BigQueryDatasetTemplater.java} (98%) rename core/src/test/java/feast/core/grpc/{TrainingServiceImplTest.java => DatasetServiceImplTest.java} (74%) rename core/src/test/java/feast/core/training/{BigQueryTrainingDatasetCreatorTest.java => BigQueryDatasetCreatorTest.java} (86%) rename core/src/test/java/feast/core/training/{BigQueryTrainingDatasetTemplaterTest.java => BigQueryDatasetTemplaterTest.java} (95%) rename protos/feast/core/{TrainingService.proto => DatasetService.proto} (80%) rename sdk/python/feast/core/{TrainingService_pb2.py => DatasetService_pb2.py} (53%) create mode 100644 sdk/python/feast/core/DatasetService_pb2_grpc.py delete mode 100644 sdk/python/feast/core/TrainingService_pb2_grpc.py diff --git a/core/src/main/java/feast/core/config/TrainingConfig.java b/core/src/main/java/feast/core/config/TrainingConfig.java index 1581c845a98..02525b88e51 100644 --- a/core/src/main/java/feast/core/config/TrainingConfig.java +++ b/core/src/main/java/feast/core/config/TrainingConfig.java @@ -6,8 +6,8 @@ import com.google.common.io.CharStreams; import com.hubspot.jinjava.Jinjava; import feast.core.dao.FeatureInfoRepository; -import feast.core.training.BigQueryTrainingDatasetCreator; -import feast.core.training.BigQueryTrainingDatasetTemplater; +import feast.core.training.BigQueryDatasetCreator; +import feast.core.training.BigQueryDatasetTemplater; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -23,21 +23,21 @@ public class TrainingConfig { @Bean - public BigQueryTrainingDatasetTemplater getBigQueryTrainingDatasetTemplater( + public BigQueryDatasetTemplater getBigQueryTrainingDatasetTemplater( FeatureInfoRepository featureInfoRepository) throws IOException { Resource resource = new ClassPathResource("templates/bq_training.tmpl"); InputStream resourceInputStream = resource.getInputStream(); String tmpl = CharStreams.toString(new InputStreamReader(resourceInputStream, Charsets.UTF_8)); - return new BigQueryTrainingDatasetTemplater(new Jinjava(), tmpl, featureInfoRepository); + return new BigQueryDatasetTemplater(new Jinjava(), tmpl, featureInfoRepository); } @Bean - public BigQueryTrainingDatasetCreator getBigQueryTrainingDatasetCreator( - BigQueryTrainingDatasetTemplater templater, + public BigQueryDatasetCreator getBigQueryTrainingDatasetCreator( + BigQueryDatasetTemplater templater, @Value("${feast.core.projectId}") String projectId, @Value("${feast.core.datasetPrefix}") String datasetPrefix) { BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId(projectId).build().getService(); Clock clock = Clock.systemUTC(); - return new BigQueryTrainingDatasetCreator(templater, bigquery, clock, projectId, datasetPrefix); + return new BigQueryDatasetCreator(templater, bigquery, clock, projectId, datasetPrefix); } } diff --git a/core/src/main/java/feast/core/grpc/TrainingServiceImpl.java b/core/src/main/java/feast/core/grpc/DatasetServiceImpl.java similarity index 74% rename from core/src/main/java/feast/core/grpc/TrainingServiceImpl.java rename to core/src/main/java/feast/core/grpc/DatasetServiceImpl.java index 76ba6778a4f..508f99d328d 100644 --- a/core/src/main/java/feast/core/grpc/TrainingServiceImpl.java +++ b/core/src/main/java/feast/core/grpc/DatasetServiceImpl.java @@ -18,12 +18,12 @@ import com.google.common.base.Strings; import com.google.protobuf.Timestamp; -import feast.core.TrainingServiceGrpc.TrainingServiceImplBase; -import feast.core.TrainingServiceProto.DatasetInfo; -import feast.core.TrainingServiceProto.FeatureSet; -import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetRequest; -import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetResponse; -import feast.core.training.BigQueryTrainingDatasetCreator; +import feast.core.DatasetServiceGrpc.DatasetServiceImplBase; +import feast.core.DatasetServiceProto.DatasetInfo; +import feast.core.DatasetServiceProto.FeatureSet; +import feast.core.DatasetServiceProto.DatasetServiceTypes.CreateDatasetRequest; +import feast.core.DatasetServiceProto.DatasetServiceTypes.CreateDatasetResponse; +import feast.core.training.BigQueryDatasetCreator; import io.grpc.Status; import io.grpc.Status.Code; import io.grpc.stub.StreamObserver; @@ -35,19 +35,19 @@ @Slf4j @GRpcService -public class TrainingServiceImpl extends TrainingServiceImplBase { +public class DatasetServiceImpl extends DatasetServiceImplBase { - private final BigQueryTrainingDatasetCreator trainingDatasetCreator; + private final BigQueryDatasetCreator datasetCreator; @Autowired - public TrainingServiceImpl(BigQueryTrainingDatasetCreator trainingDatasetCreator) { - this.trainingDatasetCreator = trainingDatasetCreator; + public DatasetServiceImpl(BigQueryDatasetCreator DatasetCreator) { + this.datasetCreator = DatasetCreator; } @Override - public void createTrainingDataset( - CreateTrainingDatasetRequest request, - StreamObserver responseObserver) { + public void createDataset( + CreateDatasetRequest request, + StreamObserver responseObserver) { try { checkRequest(request); } catch (IllegalArgumentException e) { @@ -61,14 +61,14 @@ public void createTrainingDataset( try { DatasetInfo datasetInfo = - trainingDatasetCreator.createTrainingDataset( + datasetCreator.createDataset( request.getFeatureSet(), request.getStartDate(), request.getEndDate(), request.getLimit(), request.getNamePrefix()); - CreateTrainingDatasetResponse response = - CreateTrainingDatasetResponse.newBuilder().setDatasetInfo(datasetInfo).build(); + CreateDatasetResponse response = + CreateDatasetResponse.newBuilder().setDatasetInfo(datasetInfo).build(); responseObserver.onNext(response); responseObserver.onCompleted(); @@ -82,7 +82,7 @@ public void createTrainingDataset( } } - private void checkRequest(CreateTrainingDatasetRequest request) { + private void checkRequest(CreateDatasetRequest request) { FeatureSet featureSet = request.getFeatureSet(); Timestamp startDate = request.getStartDate(); Timestamp endDate = request.getEndDate(); diff --git a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java b/core/src/main/java/feast/core/training/BigQueryDatasetCreator.java similarity index 92% rename from core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java rename to core/src/main/java/feast/core/training/BigQueryDatasetCreator.java index a936393bd2a..53428d96d0f 100644 --- a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetCreator.java +++ b/core/src/main/java/feast/core/training/BigQueryDatasetCreator.java @@ -23,8 +23,8 @@ import com.google.cloud.bigquery.TableId; import com.google.common.base.Strings; import com.google.protobuf.Timestamp; -import feast.core.TrainingServiceProto.DatasetInfo; -import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.DatasetServiceProto.DatasetInfo; +import feast.core.DatasetServiceProto.FeatureSet; import feast.core.exception.TrainingDatasetCreationException; import java.time.Clock; import java.time.Instant; @@ -33,17 +33,17 @@ import lombok.extern.slf4j.Slf4j; @Slf4j -public class BigQueryTrainingDatasetCreator { +public class BigQueryDatasetCreator { private final String projectId; private final String datasetPrefix; - private final BigQueryTrainingDatasetTemplater templater; + private final BigQueryDatasetTemplater templater; private final BigQuery bigQuery; private final DateTimeFormatter formatter; private final Clock clock; - public BigQueryTrainingDatasetCreator( - BigQueryTrainingDatasetTemplater templater, + public BigQueryDatasetCreator( + BigQueryDatasetTemplater templater, BigQuery bigQuery, Clock clock, String projectId, @@ -57,7 +57,7 @@ public BigQueryTrainingDatasetCreator( } /** - * Create training dataset for a feature set + * Create dataset for a feature set * * @param featureSet feature set for which the training dataset should be created * @param startDate starting date of the training dataset (inclusive) @@ -66,7 +66,7 @@ public BigQueryTrainingDatasetCreator( * @param namePrefix prefix for dataset name * @return dataset info associated with the created training dataset */ - public DatasetInfo createTrainingDataset( + public DatasetInfo createDataset( FeatureSet featureSet, Timestamp startDate, Timestamp endDate, diff --git a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java b/core/src/main/java/feast/core/training/BigQueryDatasetTemplater.java similarity index 98% rename from core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java rename to core/src/main/java/feast/core/training/BigQueryDatasetTemplater.java index c9003bd78e2..201ad220ca0 100644 --- a/core/src/main/java/feast/core/training/BigQueryTrainingDatasetTemplater.java +++ b/core/src/main/java/feast/core/training/BigQueryDatasetTemplater.java @@ -20,7 +20,7 @@ import com.google.protobuf.Timestamp; import com.hubspot.jinjava.Jinjava; -import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.DatasetServiceProto.FeatureSet; import feast.core.dao.FeatureInfoRepository; import feast.core.model.FeatureInfo; import feast.core.model.StorageInfo; @@ -41,7 +41,7 @@ import java.util.stream.Collectors; import lombok.Getter; -public class BigQueryTrainingDatasetTemplater { +public class BigQueryDatasetTemplater { private final FeatureInfoRepository featureInfoRepository; private final Jinjava jinjava; private final String template; @@ -49,7 +49,7 @@ public class BigQueryTrainingDatasetTemplater { private Comparator featureGroupComparator = new FeatureGroupTemplateComparator().reversed(); - public BigQueryTrainingDatasetTemplater( + public BigQueryDatasetTemplater( Jinjava jinjava, String templateString, FeatureInfoRepository featureInfoRepository) { this.featureInfoRepository = featureInfoRepository; this.jinjava = jinjava; diff --git a/core/src/test/java/feast/core/grpc/TrainingServiceImplTest.java b/core/src/test/java/feast/core/grpc/DatasetServiceImplTest.java similarity index 74% rename from core/src/test/java/feast/core/grpc/TrainingServiceImplTest.java rename to core/src/test/java/feast/core/grpc/DatasetServiceImplTest.java index ba585a7a3c0..5740648848a 100644 --- a/core/src/test/java/feast/core/grpc/TrainingServiceImplTest.java +++ b/core/src/test/java/feast/core/grpc/DatasetServiceImplTest.java @@ -10,12 +10,12 @@ import com.google.protobuf.Timestamp; import com.google.protobuf.util.Timestamps; -import feast.core.TrainingServiceGrpc; -import feast.core.TrainingServiceProto.DatasetInfo; -import feast.core.TrainingServiceProto.FeatureSet; -import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetRequest; -import feast.core.TrainingServiceProto.TrainingServiceTypes.CreateTrainingDatasetResponse; -import feast.core.training.BigQueryTrainingDatasetCreator; +import feast.core.DatasetServiceGrpc; +import feast.core.DatasetServiceProto.DatasetInfo; +import feast.core.DatasetServiceProto.FeatureSet; +import feast.core.DatasetServiceProto.DatasetServiceTypes.CreateDatasetRequest; +import feast.core.DatasetServiceProto.DatasetServiceTypes.CreateDatasetResponse; +import feast.core.training.BigQueryDatasetCreator; import io.grpc.StatusRuntimeException; import io.grpc.inprocess.InProcessChannelBuilder; import io.grpc.inprocess.InProcessServerBuilder; @@ -28,13 +28,13 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; -public class TrainingServiceImplTest { +public class DatasetServiceImplTest { @Rule public final GrpcCleanupRule grpcCleanup = new GrpcCleanupRule(); @Rule public final ExpectedException expectedException = ExpectedException.none(); - @Mock private BigQueryTrainingDatasetCreator trainingDatasetCreator; - private TrainingServiceGrpc.TrainingServiceBlockingStub client; + @Mock private BigQueryDatasetCreator trainingDatasetCreator; + private DatasetServiceGrpc.DatasetServiceBlockingStub client; private Timestamp validStartDate; private Timestamp validEndDate; @@ -44,18 +44,18 @@ public class TrainingServiceImplTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - TrainingServiceImpl trainingService = new TrainingServiceImpl(trainingDatasetCreator); + DatasetServiceImpl DatasetService = new DatasetServiceImpl(trainingDatasetCreator); String serverName = InProcessServerBuilder.generateName(); grpcCleanup.register( InProcessServerBuilder.forName(serverName) .directExecutor() - .addService(trainingService) + .addService(DatasetService) .build() .start()); client = - TrainingServiceGrpc.newBlockingStub( + DatasetServiceGrpc.newBlockingStub( InProcessChannelBuilder.forName(serverName).directExecutor().build()); validStartDate = Timestamps.parse("2018-01-02T10:00:20.021-05:00"); @@ -70,10 +70,10 @@ public void setUp() throws Exception { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - public void shouldCallCreateTrainingDatasetWithCorrectRequest() { + public void shouldCallcreateDatasetWithCorrectRequest() { DatasetInfo datasetInfo = DatasetInfo.newBuilder().setName("mydataset").setTableUrl("project.dataset.table").build(); - when(trainingDatasetCreator.createTrainingDataset( + when(trainingDatasetCreator.createDataset( any(FeatureSet.class), any(Timestamp.class), any(Timestamp.class), @@ -83,8 +83,8 @@ public void shouldCallCreateTrainingDatasetWithCorrectRequest() { long limit = 9999; String namePrefix = "mydataset"; - CreateTrainingDatasetRequest request = - CreateTrainingDatasetRequest.newBuilder() + CreateDatasetRequest request = + CreateDatasetRequest.newBuilder() .setFeatureSet(validFeatureSet) .setStartDate(validStartDate) .setEndDate(validEndDate) @@ -92,17 +92,17 @@ public void shouldCallCreateTrainingDatasetWithCorrectRequest() { .setNamePrefix(namePrefix) .build(); - client.createTrainingDataset(request); + client.createDataset(request); verify(trainingDatasetCreator) - .createTrainingDataset(validFeatureSet, validStartDate, validEndDate, limit, namePrefix); + .createDataset(validFeatureSet, validStartDate, validEndDate, limit, namePrefix); } @Test public void shouldPropagateCreatedDatasetInfo() { DatasetInfo datasetInfo = DatasetInfo.newBuilder().setName("mydataset").setTableUrl("project.dataset.table").build(); - when(trainingDatasetCreator.createTrainingDataset( + when(trainingDatasetCreator.createDataset( any(FeatureSet.class), any(Timestamp.class), any(Timestamp.class), @@ -112,8 +112,8 @@ public void shouldPropagateCreatedDatasetInfo() { long limit = 9999; String namePrefix = "mydataset"; - CreateTrainingDatasetRequest request = - CreateTrainingDatasetRequest.newBuilder() + CreateDatasetRequest request = + CreateDatasetRequest.newBuilder() .setFeatureSet(validFeatureSet) .setStartDate(validEndDate) .setEndDate(validEndDate) @@ -121,7 +121,7 @@ public void shouldPropagateCreatedDatasetInfo() { .setNamePrefix(namePrefix) .build(); - CreateTrainingDatasetResponse resp = client.createTrainingDataset(request); + CreateDatasetResponse resp = client.createDataset(request); DatasetInfo actual = resp.getDatasetInfo(); assertThat(actual, equalTo(datasetInfo)); @@ -132,8 +132,8 @@ public void shouldPropagateCreatedDatasetInfo() { public void shouldThrowExceptionIfFeatureSetEmpty() { FeatureSet emptyFeatureSet = FeatureSet.newBuilder().setEntityName("myentity").build(); - CreateTrainingDatasetRequest request = - CreateTrainingDatasetRequest.newBuilder() + CreateDatasetRequest request = + CreateDatasetRequest.newBuilder() .setFeatureSet(emptyFeatureSet) .setStartDate(validStartDate) .setEndDate(validEndDate) @@ -142,7 +142,7 @@ public void shouldThrowExceptionIfFeatureSetEmpty() { expectedException.expect(StatusRuntimeException.class); expectedException.expectMessage("feature set is empty"); - client.createTrainingDataset(request); + client.createDataset(request); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -150,8 +150,8 @@ public void shouldThrowExceptionIfFeatureSetEmpty() { public void shouldThrowExceptionIfFeatureSetHasEmptyEntity() { FeatureSet emptyFeatureSet = FeatureSet.newBuilder().setEntityName("").build(); - CreateTrainingDatasetRequest request = - CreateTrainingDatasetRequest.newBuilder() + CreateDatasetRequest request = + CreateDatasetRequest.newBuilder() .setFeatureSet(emptyFeatureSet) .setStartDate(validStartDate) .setEndDate(validEndDate) @@ -160,7 +160,7 @@ public void shouldThrowExceptionIfFeatureSetHasEmptyEntity() { expectedException.expect(StatusRuntimeException.class); expectedException.expectMessage("entity name in feature set is null or empty"); - client.createTrainingDataset(request); + client.createDataset(request); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -173,8 +173,8 @@ public void shouldThrowExceptionIfFeatureSetHasDifferentEntity() { .addFeatureIds("driver.none.feature2") .build(); - CreateTrainingDatasetRequest request = - CreateTrainingDatasetRequest.newBuilder() + CreateDatasetRequest request = + CreateDatasetRequest.newBuilder() .setFeatureSet(emptyFeatureSet) .setStartDate(validStartDate) .setEndDate(validEndDate) @@ -183,7 +183,7 @@ public void shouldThrowExceptionIfFeatureSetHasDifferentEntity() { expectedException.expect(StatusRuntimeException.class); expectedException.expectMessage("feature set contains different entity name: driver"); - client.createTrainingDataset(request); + client.createDataset(request); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -191,8 +191,8 @@ public void shouldThrowExceptionIfFeatureSetHasDifferentEntity() { public void shouldThrowExceptionWhenStartDateIsAfterEndDate() throws ParseException { Timestamp laterStartDate = Timestamps.parse("2020-12-01T10:00:20.021-05:00"); - CreateTrainingDatasetRequest request = - CreateTrainingDatasetRequest.newBuilder() + CreateDatasetRequest request = + CreateDatasetRequest.newBuilder() .setFeatureSet(validFeatureSet) .setStartDate(laterStartDate) .setEndDate(validEndDate) @@ -201,6 +201,6 @@ public void shouldThrowExceptionWhenStartDateIsAfterEndDate() throws ParseExcept expectedException.expect(StatusRuntimeException.class); expectedException.expectMessage("startDate is after endDate"); - client.createTrainingDataset(request); + client.createDataset(request); } } diff --git a/core/src/test/java/feast/core/training/BigQueryTrainingDatasetCreatorTest.java b/core/src/test/java/feast/core/training/BigQueryDatasetCreatorTest.java similarity index 86% rename from core/src/test/java/feast/core/training/BigQueryTrainingDatasetCreatorTest.java rename to core/src/test/java/feast/core/training/BigQueryDatasetCreatorTest.java index f4947d7856a..bde137c9c7e 100644 --- a/core/src/test/java/feast/core/training/BigQueryTrainingDatasetCreatorTest.java +++ b/core/src/test/java/feast/core/training/BigQueryDatasetCreatorTest.java @@ -26,8 +26,8 @@ import com.google.cloud.bigquery.BigQuery; import com.google.protobuf.Timestamp; import com.google.protobuf.util.Timestamps; -import feast.core.TrainingServiceProto.DatasetInfo; -import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.DatasetServiceProto.DatasetInfo; +import feast.core.DatasetServiceProto.FeatureSet; import java.time.Clock; import java.time.Instant; import java.util.Arrays; @@ -36,12 +36,12 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; -public class BigQueryTrainingDatasetCreatorTest { +public class BigQueryDatasetCreatorTest { public static final String projectId = "the-project"; public static final String datasetPrefix = "feast"; // class under test - private BigQueryTrainingDatasetCreator creator; - @Mock private BigQueryTrainingDatasetTemplater templater; + private BigQueryDatasetCreator creator; + @Mock private BigQueryDatasetTemplater templater; @Mock private BigQuery bq; @Mock private Clock clock; @@ -49,7 +49,7 @@ public class BigQueryTrainingDatasetCreatorTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - creator = new BigQueryTrainingDatasetCreator(templater, bq, clock, projectId, datasetPrefix); + creator = new BigQueryDatasetCreator(templater, bq, clock, projectId, datasetPrefix); when(templater.createQuery( any(FeatureSet.class), any(Timestamp.class), any(Timestamp.class), anyLong())) @@ -74,7 +74,7 @@ public void shouldCreateCorrectDatasetIfPrefixNotSpecified() { String namePrefix = ""; DatasetInfo dsInfo = - creator.createTrainingDataset(featureSet, startDate, endDate, limit, namePrefix); + creator.createDataset(featureSet, startDate, endDate, limit, namePrefix); assertThat(dsInfo.getName(), equalTo("myentity_0_20180101_20190101")); assertThat( dsInfo.getTableUrl(), @@ -101,7 +101,7 @@ public void shouldCreateCorrectDatasetIfPrefixIsSpecified() { String namePrefix = "mydataset"; DatasetInfo dsInfo = - creator.createTrainingDataset(featureSet, startDate, endDate, limit, namePrefix); + creator.createDataset(featureSet, startDate, endDate, limit, namePrefix); assertThat( dsInfo.getTableUrl(), equalTo( @@ -123,7 +123,7 @@ public void shouldPassArgumentToTemplater() { long limit = 999; String namePrefix = ""; - creator.createTrainingDataset(featureSet, startDate, endDate, limit, namePrefix); + creator.createDataset(featureSet, startDate, endDate, limit, namePrefix); verify(templater).createQuery(featureSet, startDate, endDate, limit); } diff --git a/core/src/test/java/feast/core/training/BigQueryTrainingDatasetTemplaterTest.java b/core/src/test/java/feast/core/training/BigQueryDatasetTemplaterTest.java similarity index 95% rename from core/src/test/java/feast/core/training/BigQueryTrainingDatasetTemplaterTest.java rename to core/src/test/java/feast/core/training/BigQueryDatasetTemplaterTest.java index a700c1a31b1..239d44d66e9 100644 --- a/core/src/test/java/feast/core/training/BigQueryTrainingDatasetTemplaterTest.java +++ b/core/src/test/java/feast/core/training/BigQueryDatasetTemplaterTest.java @@ -28,12 +28,12 @@ import com.google.protobuf.Timestamp; import com.google.protobuf.util.Timestamps; import com.hubspot.jinjava.Jinjava; -import feast.core.TrainingServiceProto.FeatureSet; +import feast.core.DatasetServiceProto.FeatureSet; import feast.core.dao.FeatureInfoRepository; import feast.core.model.EntityInfo; import feast.core.model.FeatureInfo; import feast.core.model.StorageInfo; -import feast.core.training.BigQueryTrainingDatasetTemplater.FeatureGroup; +import feast.core.training.BigQueryDatasetTemplater.FeatureGroup; import feast.specs.EntitySpecProto.EntitySpec; import feast.specs.FeatureSpecProto.DataStore; import feast.specs.FeatureSpecProto.DataStores; @@ -59,8 +59,8 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; -public class BigQueryTrainingDatasetTemplaterTest { - private BigQueryTrainingDatasetTemplater templater; +public class BigQueryDatasetTemplaterTest { + private BigQueryDatasetTemplater templater; private BasicFormatterImpl formatter = new BasicFormatterImpl(); @Mock private FeatureInfoRepository featureInfoRespository; @@ -74,7 +74,7 @@ public void setUp() throws Exception { Resource resource = new ClassPathResource("templates/bq_training.tmpl"); InputStream resourceInputStream = resource.getInputStream(); sqlTemplate = CharStreams.toString(new InputStreamReader(resourceInputStream, Charsets.UTF_8)); - templater = new BigQueryTrainingDatasetTemplater(jinjava, sqlTemplate, featureInfoRespository); + templater = new BigQueryDatasetTemplater(jinjava, sqlTemplate, featureInfoRespository); } @Test(expected = NoSuchElementException.class) @@ -90,7 +90,7 @@ public void shouldThrowNoSuchElementExceptionIfFeatureNotFound() { @Test public void shouldPassCorrectArgumentToTemplateEngine() { Jinjava jinjava = mock(Jinjava.class); - templater = new BigQueryTrainingDatasetTemplater(jinjava, sqlTemplate, featureInfoRespository); + templater = new BigQueryDatasetTemplater(jinjava, sqlTemplate, featureInfoRespository); Timestamp startDate = Timestamps.fromSeconds(Instant.parse("2018-01-01T00:00:00.00Z").getEpochSecond()); diff --git a/protos/feast/core/TrainingService.proto b/protos/feast/core/DatasetService.proto similarity index 80% rename from protos/feast/core/TrainingService.proto rename to protos/feast/core/DatasetService.proto index 7ec2cbd01bb..9e972859a23 100644 --- a/protos/feast/core/TrainingService.proto +++ b/protos/feast/core/DatasetService.proto @@ -21,16 +21,16 @@ package feast.core; import "google/protobuf/timestamp.proto"; option java_package = "feast.core"; -option java_outer_classname = "TrainingServiceProto"; +option java_outer_classname = "DatasetServiceProto"; option go_package = "github.com/gojektech/feast/protos/generated/go/feast/core"; -service TrainingService { +service DatasetService { // Create training dataset for a feature set - rpc CreateTrainingDataset(TrainingServiceTypes.CreateTrainingDatasetRequest) returns (TrainingServiceTypes.CreateTrainingDatasetResponse){}; + rpc CreateDataset(DatasetServiceTypes.CreateDatasetRequest) returns (DatasetServiceTypes.CreateDatasetResponse){}; } -message TrainingServiceTypes { - message CreateTrainingDatasetRequest { +message DatasetServiceTypes { + message CreateDatasetRequest { // set of features for which its training data should be created FeatureSet featureSet = 1; // start date of the training data (inclusive) @@ -41,11 +41,10 @@ message TrainingServiceTypes { // (default: none) int64 limit = 4; // (optional) prefix for dataset name - // (default: generated based on feature set's entity, current date, start date, and end date) string namePrefix = 5; } - message CreateTrainingDatasetResponse { + message CreateDatasetResponse { // information of the created training dataset DatasetInfo datasetInfo = 1; } diff --git a/sdk/python/feast/core/TrainingService_pb2.py b/sdk/python/feast/core/DatasetService_pb2.py similarity index 53% rename from sdk/python/feast/core/TrainingService_pb2.py rename to sdk/python/feast/core/DatasetService_pb2.py index a678549e5f3..273b271426e 100644 --- a/sdk/python/feast/core/TrainingService_pb2.py +++ b/sdk/python/feast/core/DatasetService_pb2.py @@ -1,5 +1,5 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! -# source: feast/core/TrainingService.proto +# source: feast/core/DatasetService.proto import sys _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) @@ -16,54 +16,54 @@ DESCRIPTOR = _descriptor.FileDescriptor( - name='feast/core/TrainingService.proto', + name='feast/core/DatasetService.proto', package='feast.core', syntax='proto3', - serialized_options=_b('\n\nfeast.coreB\024TrainingServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), - serialized_pb=_b('\n feast/core/TrainingService.proto\x12\nfeast.core\x1a\x1fgoogle/protobuf/timestamp.proto\"\xb1\x02\n\x14TrainingServiceTypes\x1a\xc9\x01\n\x1c\x43reateTrainingDatasetRequest\x12*\n\nfeatureSet\x18\x01 \x01(\x0b\x32\x16.feast.core.FeatureSet\x12-\n\tstartDate\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x65ndDate\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05limit\x18\x04 \x01(\x03\x12\x12\n\nnamePrefix\x18\x05 \x01(\t\x1aM\n\x1d\x43reateTrainingDatasetResponse\x12,\n\x0b\x64\x61tasetInfo\x18\x01 \x01(\x0b\x32\x17.feast.core.DatasetInfo\"4\n\nFeatureSet\x12\x12\n\nentityName\x18\x01 \x01(\t\x12\x12\n\nfeatureIds\x18\x02 \x03(\t\"-\n\x0b\x44\x61tasetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08tableUrl\x18\x02 \x01(\t2\xac\x01\n\x0fTrainingService\x12\x98\x01\n\x15\x43reateTrainingDataset\x12=.feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest\x1a>.feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse\"\x00\x42]\n\nfeast.coreB\x14TrainingServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') + serialized_options=_b('\n\nfeast.coreB\023DatasetServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/core'), + serialized_pb=_b('\n\x1f\x66\x65\x61st/core/DatasetService.proto\x12\nfeast.core\x1a\x1fgoogle/protobuf/timestamp.proto\"\xa0\x02\n\x13\x44\x61tasetServiceTypes\x1a\xc1\x01\n\x14\x43reateDatasetRequest\x12*\n\nfeatureSet\x18\x01 \x01(\x0b\x32\x16.feast.core.FeatureSet\x12-\n\tstartDate\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x65ndDate\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05limit\x18\x04 \x01(\x03\x12\x12\n\nnamePrefix\x18\x05 \x01(\t\x1a\x45\n\x15\x43reateDatasetResponse\x12,\n\x0b\x64\x61tasetInfo\x18\x01 \x01(\x0b\x32\x17.feast.core.DatasetInfo\"4\n\nFeatureSet\x12\x12\n\nentityName\x18\x01 \x01(\t\x12\x12\n\nfeatureIds\x18\x02 \x03(\t\"-\n\x0b\x44\x61tasetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08tableUrl\x18\x02 \x01(\t2\x90\x01\n\x0e\x44\x61tasetService\x12~\n\rCreateDataset\x12\x34.feast.core.DatasetServiceTypes.CreateDatasetRequest\x1a\x35.feast.core.DatasetServiceTypes.CreateDatasetResponse\"\x00\x42\\\n\nfeast.coreB\x13\x44\x61tasetServiceProtoZ9github.com/gojektech/feast/protos/generated/go/feast/coreb\x06proto3') , dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) -_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST = _descriptor.Descriptor( - name='CreateTrainingDatasetRequest', - full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest', +_DATASETSERVICETYPES_CREATEDATASETREQUEST = _descriptor.Descriptor( + name='CreateDatasetRequest', + full_name='feast.core.DatasetServiceTypes.CreateDatasetRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( - name='featureSet', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.featureSet', index=0, + name='featureSet', full_name='feast.core.DatasetServiceTypes.CreateDatasetRequest.featureSet', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='startDate', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.startDate', index=1, + name='startDate', full_name='feast.core.DatasetServiceTypes.CreateDatasetRequest.startDate', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='endDate', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.endDate', index=2, + name='endDate', full_name='feast.core.DatasetServiceTypes.CreateDatasetRequest.endDate', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='limit', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.limit', index=3, + name='limit', full_name='feast.core.DatasetServiceTypes.CreateDatasetRequest.limit', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='namePrefix', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest.namePrefix', index=4, + name='namePrefix', full_name='feast.core.DatasetServiceTypes.CreateDatasetRequest.namePrefix', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, @@ -81,19 +81,19 @@ extension_ranges=[], oneofs=[ ], - serialized_start=107, - serialized_end=308, + serialized_start=105, + serialized_end=298, ) -_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE = _descriptor.Descriptor( - name='CreateTrainingDatasetResponse', - full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse', +_DATASETSERVICETYPES_CREATEDATASETRESPONSE = _descriptor.Descriptor( + name='CreateDatasetResponse', + full_name='feast.core.DatasetServiceTypes.CreateDatasetResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( - name='datasetInfo', full_name='feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse.datasetInfo', index=0, + name='datasetInfo', full_name='feast.core.DatasetServiceTypes.CreateDatasetResponse.datasetInfo', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, @@ -111,13 +111,13 @@ extension_ranges=[], oneofs=[ ], - serialized_start=310, - serialized_end=387, + serialized_start=300, + serialized_end=369, ) -_TRAININGSERVICETYPES = _descriptor.Descriptor( - name='TrainingServiceTypes', - full_name='feast.core.TrainingServiceTypes', +_DATASETSERVICETYPES = _descriptor.Descriptor( + name='DatasetServiceTypes', + full_name='feast.core.DatasetServiceTypes', filename=None, file=DESCRIPTOR, containing_type=None, @@ -125,7 +125,7 @@ ], extensions=[ ], - nested_types=[_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST, _TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE, ], + nested_types=[_DATASETSERVICETYPES_CREATEDATASETREQUEST, _DATASETSERVICETYPES_CREATEDATASETRESPONSE, ], enum_types=[ ], serialized_options=None, @@ -134,8 +134,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=82, - serialized_end=387, + serialized_start=81, + serialized_end=369, ) @@ -172,8 +172,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=389, - serialized_end=441, + serialized_start=371, + serialized_end=423, ) @@ -210,54 +210,54 @@ extension_ranges=[], oneofs=[ ], - serialized_start=443, - serialized_end=488, + serialized_start=425, + serialized_end=470, ) -_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.fields_by_name['featureSet'].message_type = _FEATURESET -_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.fields_by_name['startDate'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP -_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.fields_by_name['endDate'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP -_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST.containing_type = _TRAININGSERVICETYPES -_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE.fields_by_name['datasetInfo'].message_type = _DATASETINFO -_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE.containing_type = _TRAININGSERVICETYPES -DESCRIPTOR.message_types_by_name['TrainingServiceTypes'] = _TRAININGSERVICETYPES +_DATASETSERVICETYPES_CREATEDATASETREQUEST.fields_by_name['featureSet'].message_type = _FEATURESET +_DATASETSERVICETYPES_CREATEDATASETREQUEST.fields_by_name['startDate'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_DATASETSERVICETYPES_CREATEDATASETREQUEST.fields_by_name['endDate'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_DATASETSERVICETYPES_CREATEDATASETREQUEST.containing_type = _DATASETSERVICETYPES +_DATASETSERVICETYPES_CREATEDATASETRESPONSE.fields_by_name['datasetInfo'].message_type = _DATASETINFO +_DATASETSERVICETYPES_CREATEDATASETRESPONSE.containing_type = _DATASETSERVICETYPES +DESCRIPTOR.message_types_by_name['DatasetServiceTypes'] = _DATASETSERVICETYPES DESCRIPTOR.message_types_by_name['FeatureSet'] = _FEATURESET DESCRIPTOR.message_types_by_name['DatasetInfo'] = _DATASETINFO _sym_db.RegisterFileDescriptor(DESCRIPTOR) -TrainingServiceTypes = _reflection.GeneratedProtocolMessageType('TrainingServiceTypes', (_message.Message,), dict( +DatasetServiceTypes = _reflection.GeneratedProtocolMessageType('DatasetServiceTypes', (_message.Message,), dict( - CreateTrainingDatasetRequest = _reflection.GeneratedProtocolMessageType('CreateTrainingDatasetRequest', (_message.Message,), dict( - DESCRIPTOR = _TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST, - __module__ = 'feast.core.TrainingService_pb2' - # @@protoc_insertion_point(class_scope:feast.core.TrainingServiceTypes.CreateTrainingDatasetRequest) + CreateDatasetRequest = _reflection.GeneratedProtocolMessageType('CreateDatasetRequest', (_message.Message,), dict( + DESCRIPTOR = _DATASETSERVICETYPES_CREATEDATASETREQUEST, + __module__ = 'feast.core.DatasetService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.DatasetServiceTypes.CreateDatasetRequest) )) , - CreateTrainingDatasetResponse = _reflection.GeneratedProtocolMessageType('CreateTrainingDatasetResponse', (_message.Message,), dict( - DESCRIPTOR = _TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE, - __module__ = 'feast.core.TrainingService_pb2' - # @@protoc_insertion_point(class_scope:feast.core.TrainingServiceTypes.CreateTrainingDatasetResponse) + CreateDatasetResponse = _reflection.GeneratedProtocolMessageType('CreateDatasetResponse', (_message.Message,), dict( + DESCRIPTOR = _DATASETSERVICETYPES_CREATEDATASETRESPONSE, + __module__ = 'feast.core.DatasetService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.DatasetServiceTypes.CreateDatasetResponse) )) , - DESCRIPTOR = _TRAININGSERVICETYPES, - __module__ = 'feast.core.TrainingService_pb2' - # @@protoc_insertion_point(class_scope:feast.core.TrainingServiceTypes) + DESCRIPTOR = _DATASETSERVICETYPES, + __module__ = 'feast.core.DatasetService_pb2' + # @@protoc_insertion_point(class_scope:feast.core.DatasetServiceTypes) )) -_sym_db.RegisterMessage(TrainingServiceTypes) -_sym_db.RegisterMessage(TrainingServiceTypes.CreateTrainingDatasetRequest) -_sym_db.RegisterMessage(TrainingServiceTypes.CreateTrainingDatasetResponse) +_sym_db.RegisterMessage(DatasetServiceTypes) +_sym_db.RegisterMessage(DatasetServiceTypes.CreateDatasetRequest) +_sym_db.RegisterMessage(DatasetServiceTypes.CreateDatasetResponse) FeatureSet = _reflection.GeneratedProtocolMessageType('FeatureSet', (_message.Message,), dict( DESCRIPTOR = _FEATURESET, - __module__ = 'feast.core.TrainingService_pb2' + __module__ = 'feast.core.DatasetService_pb2' # @@protoc_insertion_point(class_scope:feast.core.FeatureSet) )) _sym_db.RegisterMessage(FeatureSet) DatasetInfo = _reflection.GeneratedProtocolMessageType('DatasetInfo', (_message.Message,), dict( DESCRIPTOR = _DATASETINFO, - __module__ = 'feast.core.TrainingService_pb2' + __module__ = 'feast.core.DatasetService_pb2' # @@protoc_insertion_point(class_scope:feast.core.DatasetInfo) )) _sym_db.RegisterMessage(DatasetInfo) @@ -265,27 +265,27 @@ DESCRIPTOR._options = None -_TRAININGSERVICE = _descriptor.ServiceDescriptor( - name='TrainingService', - full_name='feast.core.TrainingService', +_DATASETSERVICE = _descriptor.ServiceDescriptor( + name='DatasetService', + full_name='feast.core.DatasetService', file=DESCRIPTOR, index=0, serialized_options=None, - serialized_start=491, - serialized_end=663, + serialized_start=473, + serialized_end=617, methods=[ _descriptor.MethodDescriptor( - name='CreateTrainingDataset', - full_name='feast.core.TrainingService.CreateTrainingDataset', + name='CreateDataset', + full_name='feast.core.DatasetService.CreateDataset', index=0, containing_service=None, - input_type=_TRAININGSERVICETYPES_CREATETRAININGDATASETREQUEST, - output_type=_TRAININGSERVICETYPES_CREATETRAININGDATASETRESPONSE, + input_type=_DATASETSERVICETYPES_CREATEDATASETREQUEST, + output_type=_DATASETSERVICETYPES_CREATEDATASETRESPONSE, serialized_options=None, ), ]) -_sym_db.RegisterServiceDescriptor(_TRAININGSERVICE) +_sym_db.RegisterServiceDescriptor(_DATASETSERVICE) -DESCRIPTOR.services_by_name['TrainingService'] = _TRAININGSERVICE +DESCRIPTOR.services_by_name['DatasetService'] = _DATASETSERVICE # @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/core/DatasetService_pb2_grpc.py b/sdk/python/feast/core/DatasetService_pb2_grpc.py new file mode 100644 index 00000000000..f6b714f5651 --- /dev/null +++ b/sdk/python/feast/core/DatasetService_pb2_grpc.py @@ -0,0 +1,46 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +from feast.core import DatasetService_pb2 as feast_dot_core_dot_DatasetService__pb2 + + +class DatasetServiceStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.CreateDataset = channel.unary_unary( + '/feast.core.DatasetService/CreateDataset', + request_serializer=feast_dot_core_dot_DatasetService__pb2.DatasetServiceTypes.CreateDatasetRequest.SerializeToString, + response_deserializer=feast_dot_core_dot_DatasetService__pb2.DatasetServiceTypes.CreateDatasetResponse.FromString, + ) + + +class DatasetServiceServicer(object): + # missing associated documentation comment in .proto file + pass + + def CreateDataset(self, request, context): + """Create training dataset for a feature set + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DatasetServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'CreateDataset': grpc.unary_unary_rpc_method_handler( + servicer.CreateDataset, + request_deserializer=feast_dot_core_dot_DatasetService__pb2.DatasetServiceTypes.CreateDatasetRequest.FromString, + response_serializer=feast_dot_core_dot_DatasetService__pb2.DatasetServiceTypes.CreateDatasetResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.core.DatasetService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/sdk/python/feast/core/TrainingService_pb2_grpc.py b/sdk/python/feast/core/TrainingService_pb2_grpc.py deleted file mode 100644 index 962d17d9b34..00000000000 --- a/sdk/python/feast/core/TrainingService_pb2_grpc.py +++ /dev/null @@ -1,46 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -import grpc - -from feast.core import TrainingService_pb2 as feast_dot_core_dot_TrainingService__pb2 - - -class TrainingServiceStub(object): - # missing associated documentation comment in .proto file - pass - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.CreateTrainingDataset = channel.unary_unary( - '/feast.core.TrainingService/CreateTrainingDataset', - request_serializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetRequest.SerializeToString, - response_deserializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetResponse.FromString, - ) - - -class TrainingServiceServicer(object): - # missing associated documentation comment in .proto file - pass - - def CreateTrainingDataset(self, request, context): - """Create training dataset for a feature set - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_TrainingServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'CreateTrainingDataset': grpc.unary_unary_rpc_method_handler( - servicer.CreateTrainingDataset, - request_deserializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetRequest.FromString, - response_serializer=feast_dot_core_dot_TrainingService__pb2.TrainingServiceTypes.CreateTrainingDatasetResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'feast.core.TrainingService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) diff --git a/sdk/python/feast/sdk/client.py b/sdk/python/feast/sdk/client.py index 5299076b167..ea2d2317c6a 100644 --- a/sdk/python/feast/sdk/client.py +++ b/sdk/python/feast/sdk/client.py @@ -28,8 +28,8 @@ from feast.core.CoreService_pb2_grpc import CoreServiceStub from feast.core.JobService_pb2 import JobServiceTypes from feast.core.JobService_pb2_grpc import JobServiceStub -from feast.core.TrainingService_pb2 import TrainingServiceTypes -from feast.core.TrainingService_pb2_grpc import TrainingServiceStub +from feast.core.DatasetService_pb2 import DatasetServiceTypes +from feast.core.DatasetService_pb2_grpc import DatasetServiceStub from feast.sdk.env import FEAST_CORE_URL_ENV_KEY, FEAST_SERVING_URL_ENV_KEY from feast.sdk.resources.entity import Entity from feast.sdk.resources.feature import Feature @@ -79,7 +79,7 @@ def __init__(self, core_url=None, serving_url=None, verbose=False): self.__serving_channel = None self._core_service_stub = None self._job_service_stub = None - self._training_service_stub = None + self._dataset_service_stub = None self._serving_service_stub = None self._verbose = verbose @@ -204,7 +204,7 @@ def create_dataset(self, feature_set, start_date, end_date, self._check_create_dataset_args(feature_set, start_date, end_date, limit) - req = TrainingServiceTypes.CreateTrainingDatasetRequest( + req = DatasetServiceTypes.CreateDatasetRequest( featureSet=feature_set.proto, startDate=_timestamp_from_datetime(_parse_date(start_date)), endDate=_timestamp_from_datetime(_parse_date(end_date)), @@ -215,7 +215,7 @@ def create_dataset(self, feature_set, start_date, end_date, print("creating training dataset for features: " + str(feature_set.features)) self._connect_core() - resp = self._training_service_stub.CreateTrainingDataset(req) + resp = self._dataset_service_stub.CreateDataset(req) if self.verbose: print("created dataset {}: {}".format(resp.datasetInfo.name, @@ -309,7 +309,7 @@ def _connect_core(self): self.__core_channel = grpc.insecure_channel(self.core_url) self._core_service_stub = CoreServiceStub(self.__core_channel) self._job_service_stub = JobServiceStub(self.__core_channel) - self._training_service_stub = TrainingServiceStub(self.__core_channel) + self._dataset_service_stub = DatasetServiceStub(self.__core_channel) def _connect_serving(self): """Connect to serving api""" diff --git a/sdk/python/feast/sdk/resources/feature_set.py b/sdk/python/feast/sdk/resources/feature_set.py index 8c082f72ea8..b39979b1554 100644 --- a/sdk/python/feast/sdk/resources/feature_set.py +++ b/sdk/python/feast/sdk/resources/feature_set.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from feast.core.TrainingService_pb2 import FeatureSet as FeatureSet_pb +from feast.core.DatasetService_pb2 import FeatureSet as FeatureSet_pb class FeatureSet: diff --git a/sdk/python/tests/sdk/test_client.py b/sdk/python/tests/sdk/test_client.py index d34842d7ab0..81909349244 100644 --- a/sdk/python/tests/sdk/test_client.py +++ b/sdk/python/tests/sdk/test_client.py @@ -22,12 +22,12 @@ import feast.core.CoreService_pb2_grpc as core import feast.core.JobService_pb2_grpc as jobs -import feast.core.TrainingService_pb2_grpc as training +import feast.core.DatasetService_pb2_grpc as training import feast.serving.Serving_pb2 as serving_pb from feast.core.CoreService_pb2 import CoreServiceTypes from feast.core.JobService_pb2 import JobServiceTypes -from feast.core.TrainingService_pb2 import TrainingServiceTypes -from feast.core.TrainingService_pb2 import DatasetInfo as DatasetInfo_pb +from feast.core.DatasetService_pb2 import DatasetServiceTypes +from feast.core.DatasetService_pb2 import DatasetInfo as DatasetInfo_pb from feast.sdk.client import Client, _parse_date, _timestamp_from_datetime from feast.sdk.client import ServingRequestType from feast.sdk.importer import Importer @@ -177,18 +177,18 @@ def test_create_dataset(self, client, mocker): ds_pb = DatasetInfo_pb(name="dataset_name", tableUrl="project.dataset.table") - mock_trn_stub = training.TrainingServiceStub(grpc.insecure_channel("")) - mocker.patch.object(mock_trn_stub, "CreateTrainingDataset", - return_value=TrainingServiceTypes - .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) - client._training_service_stub = mock_trn_stub + mock_trn_stub = training.DatasetServiceStub(grpc.insecure_channel("")) + mocker.patch.object(mock_trn_stub, "CreateDataset", + return_value=DatasetServiceTypes + .CreateDatasetResponse(datasetInfo=ds_pb)) + client._dataset_service_stub = mock_trn_stub ds = client.create_dataset(fs, start_date, end_date) assert "dataset_name" == ds.name assert "project.dataset.table" == ds.table_id - mock_trn_stub.CreateTrainingDataset.assert_called_once_with( - TrainingServiceTypes.CreateTrainingDatasetRequest( + mock_trn_stub.CreateDataset.assert_called_once_with( + DatasetServiceTypes.CreateDatasetRequest( featureSet=fs.proto, startDate=_timestamp_from_datetime(_parse_date(start_date)), endDate=_timestamp_from_datetime(_parse_date(end_date)), @@ -208,19 +208,19 @@ def test_create_dataset_with_limit(self, client, mocker): ds_pb = DatasetInfo_pb(name="dataset_name", tableUrl="project.dataset.table") - mock_trn_stub = training.TrainingServiceStub(grpc.insecure_channel("")) - mocker.patch.object(mock_trn_stub, "CreateTrainingDataset", - return_value=TrainingServiceTypes - .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) - client._training_service_stub = mock_trn_stub + mock_trn_stub = training.DatasetServiceStub(grpc.insecure_channel("")) + mocker.patch.object(mock_trn_stub, "CreateDataset", + return_value=DatasetServiceTypes + .CreateDatasetResponse(datasetInfo=ds_pb)) + client._dataset_service_stub = mock_trn_stub ds = client.create_dataset(fs, start_date, end_date, limit=limit) assert "dataset_name" == ds.name assert "project.dataset.table" == ds.table_id - mock_trn_stub.CreateTrainingDataset.assert_called_once_with( - TrainingServiceTypes.CreateTrainingDatasetRequest( + mock_trn_stub.CreateDataset.assert_called_once_with( + DatasetServiceTypes.CreateDatasetRequest( featureSet=fs.proto, startDate=_timestamp_from_datetime(_parse_date(start_date)), endDate=_timestamp_from_datetime(_parse_date(end_date)), @@ -241,11 +241,11 @@ def test_create_dataset_with_name_prefix(self, client, mocker): ds_pb = DatasetInfo_pb(name="dataset_name", tableUrl="project.dataset.table") - mock_trn_stub = training.TrainingServiceStub(grpc.insecure_channel("")) - mocker.patch.object(mock_trn_stub, "CreateTrainingDataset", - return_value=TrainingServiceTypes - .CreateTrainingDatasetResponse(datasetInfo=ds_pb)) - client._training_service_stub = mock_trn_stub + mock_dssvc_stub = training.DatasetServiceStub(grpc.insecure_channel("")) + mocker.patch.object(mock_dssvc_stub, "CreateDataset", + return_value=DatasetServiceTypes + .CreateDatasetResponse(datasetInfo=ds_pb)) + client._dataset_service_stub = mock_dssvc_stub ds = client.create_dataset(fs, start_date, end_date, limit=limit, @@ -253,8 +253,8 @@ def test_create_dataset_with_name_prefix(self, client, mocker): assert "dataset_name" == ds.name assert "project.dataset.table" == ds.table_id - mock_trn_stub.CreateTrainingDataset.assert_called_once_with( - TrainingServiceTypes.CreateTrainingDatasetRequest( + mock_dssvc_stub.CreateDataset.assert_called_once_with( + DatasetServiceTypes.CreateDatasetRequest( featureSet=fs.proto, startDate=_timestamp_from_datetime(_parse_date(start_date)), endDate=_timestamp_from_datetime(_parse_date(end_date)), From e7343f36f5d3f465606f906cec4446e610018c31 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 14 Jan 2019 13:27:33 +0800 Subject: [PATCH 47/50] Update importer api to support default datastores --- .../examples/quickstart/Quickstart.ipynb | 10 +- sdk/python/feast/sdk/importer.py | 97 +++++++++--- sdk/python/feast/sdk/resources/feature.py | 6 +- sdk/python/tests/sdk/test_importer.py | 148 ++++++++++-------- 4 files changed, 165 insertions(+), 96 deletions(-) diff --git a/sdk/python/examples/quickstart/Quickstart.ipynb b/sdk/python/examples/quickstart/Quickstart.ipynb index 9fa4c0689c4..9c617dfeaec 100644 --- a/sdk/python/examples/quickstart/Quickstart.ipynb +++ b/sdk/python/examples/quickstart/Quickstart.ipynb @@ -124,6 +124,9 @@ "# Initialise client\n", "fs = Client(core_url=FEAST_CORE_URL, verbose=True)\n", "\n", + "serving_ds=Datastore(id='REDIS1')\n", + "warehouse_ds=Datastore(id='NOOP')\n", + "\n", "# Create importer\n", "importer = Importer.from_df(df_complete, \n", " entity='ride', \n", @@ -131,11 +134,12 @@ " owner='user@website.com', \n", " staging_location=STAGING_LOCATION,\n", " id_column='ride', \n", - " timestamp_column='pickup_datetime')\n", + " timestamp_column='pickup_datetime',\n", + " serving_store=serving_ds,\n", + " w)\n", "\n", "# Update feature and entity metadata\n", - "serving_ds=Datastore(id='REDIS1').spec\n", - "warehouse_ds=Datastore(id='NOOP').spec\n", + "\n", "\n", "# Update feature and entity metadata. Ideally you want to update these manually\n", "# so that they contain adequate information for the next user\n", diff --git a/sdk/python/feast/sdk/importer.py b/sdk/python/feast/sdk/importer.py index 0219bb5ebeb..d6800c45d94 100644 --- a/sdk/python/feast/sdk/importer.py +++ b/sdk/python/feast/sdk/importer.py @@ -75,7 +75,7 @@ def entity(self): @classmethod def from_csv(cls, path, entity, granularity, owner, staging_location=None, id_column=None, feature_columns=None, timestamp_column=None, - timestamp_value=None): + timestamp_value=None, serving_store=None, warehouse_store=None): """Creates an importer from a given csv dataset. This file can be either local or remote (in gcs). If it's a local file then staging_location must be determined. @@ -95,21 +95,27 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, timestamp_column (str, optional): Defaults to None. Timestamp column in the csv. If not set, defaults to timestamp value. timestamp_value (datetime, optional): Defaults to current datetime. - Timestamp value to assign to all features in the dataset. + Timestamp value to assign to all features in the dataset. + serving_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Serving store to write the features in this instance to. + warehouse_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Warehouse store to write the features in this instance to. Returns: Importer: the importer for the dataset provided. """ import_spec_options = {"format": "csv"} - import_spec_options["path"], require_staging = _get_remote_location(path, - staging_location) + import_spec_options["path"], require_staging = \ + _get_remote_location(path, staging_location) if is_gs_path(path): df = gcs_to_df(path) else: df = pd.read_csv(path) - schema, features = _detect_schema_and_feature(entity, - granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, df) + schema, features = \ + _detect_schema_and_feature(entity, granularity, owner, id_column, + feature_columns, timestamp_column, + timestamp_value, serving_store, + warehouse_store, df) iport_spec = _create_import("file", import_spec_options, entity, schema) props = (_properties("csv", len(df.index), require_staging, @@ -121,7 +127,7 @@ def from_csv(cls, path, entity, granularity, owner, staging_location=None, @classmethod def from_bq(cls, bq_path, entity, granularity, owner, limit=10, id_column=None, feature_columns=None, timestamp_column=None, - timestamp_value=None): + timestamp_value=None, serving_store=None, warehouse_store=None): """Creates an importer from a given bigquery table. Args: @@ -140,7 +146,11 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, timestamp_column (str, optional): Defaults to None. Timestamp column in the csv. If not set, defaults to timestamp value. timestamp_value (datetime, optional): Defaults to current datetime. - Timestamp value to assign to all features in the dataset. + Timestamp value to assign to all features in the dataset. + serving_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Serving store to write the features in this instance to. + warehouse_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Warehouse store to write the features in this instance to. Returns: Importer: the importer for the dataset provided. @@ -158,9 +168,11 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, "table": table_id } df = head(cli, table, limit) - schema, features = _detect_schema_and_feature(entity, - granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, df) + schema, features = \ + _detect_schema_and_feature(entity, granularity, owner, id_column, + feature_columns, timestamp_column, + timestamp_value, serving_store, + warehouse_store, df) iport_spec = _create_import("bigquery", import_spec_options, entity, schema) @@ -171,7 +183,7 @@ def from_bq(cls, bq_path, entity, granularity, owner, limit=10, @classmethod def from_df(cls, df, entity, granularity, owner, staging_location, id_column=None, feature_columns=None, timestamp_column=None, - timestamp_value=None): + timestamp_value=None, serving_store=None, warehouse_store=None): """Creates an importer from a given pandas dataframe. To import a file from a dataframe, the data will have to be staged. @@ -190,7 +202,11 @@ def from_df(cls, df, entity, granularity, owner, staging_location, timestamp_column (str, optional): Defaults to None. Timestamp column in the csv. If not set, defaults to timestamp value. timestamp_value (datetime, optional): Defaults to current datetime. - Timestamp value to assign to all features in the dataset. + Timestamp value to assign to all features in the dataset. + serving_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Serving store to write the features in this instance to. + warehouse_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Warehouse store to write the features in this instance to. Returns: Importer: the importer for the dataset provided. @@ -202,9 +218,11 @@ def from_df(cls, df, entity, granularity, owner, staging_location, } import_spec_options["path"], require_staging = ( _get_remote_location(tmp_file_name, staging_location)) - schema, features = _detect_schema_and_feature(entity, - granularity, owner, id_column, feature_columns, timestamp_column, - timestamp_value, df) + schema, features = \ + _detect_schema_and_feature(entity, granularity, owner, id_column, + feature_columns, timestamp_column, + timestamp_value, serving_store, + warehouse_store, df) iport_spec = _create_import("file", import_spec_options, entity, schema) props = _properties("dataframe", len(df.index), require_staging, @@ -304,7 +322,9 @@ def _get_remote_location(path, staging_location): def _detect_schema_and_feature(entity, granularity, owner, id_column, - feature_columns, timestamp_column, timestamp_value, df): + feature_columns, timestamp_column, + timestamp_value, serving_store, + warehouse_store, df): """Create schema object for import spec. Args: @@ -317,7 +337,15 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, rows in dataset feature_columns (str): list of column to be extracted df (pandas.Dataframe): pandas dataframe of the data - + serving_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Serving store to write the features in this instance to. + warehouse_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Warehouse store to write the features in this instance to. + + Returns: + feast.specs.ImportSpec_pb2.Schema: schema of the data + dict of str: feast.specs.FeatureSpec_pb2.FeatureSpec: features in the data + Raises: Exception -- [description] """ @@ -338,7 +366,8 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, ts.GetCurrentTime() else: ts = Timestamp(seconds= - int((timestamp_value - datetime.datetime(1970, 1, 1)).total_seconds())) + int((timestamp_value - datetime.datetime(1970, 1, 1)) + .total_seconds())) schema.timestampValue.CopyFrom(ts) features = {} @@ -347,7 +376,9 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, for column in feature_columns: if column not in df.columns: raise ValueError("Column with name {} is not found".format(column)) - features[column] = _create_feature(df[column], entity, granularity, owner) + features[column] = _create_feature(df[column], entity, + granularity, owner, + serving_store, warehouse_store) else: # get all column except entity id and timestampColumn feature_columns = list(df.columns.values) @@ -355,7 +386,8 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, _remove_safely(feature_columns, schema.timestampColumn) for column in feature_columns: features[column] = _create_feature(df[column], entity, - granularity, owner) + granularity, owner, + serving_store, warehouse_store) for col in df.columns: field = schema.fields.add() @@ -363,10 +395,15 @@ def _detect_schema_and_feature(entity, granularity, owner, id_column, if col in features: field.featureId = features[col].id - return schema, [features[k] for k in features] + features_dict = {} + for k in features: + features_dict[features[k].id] = features[k] + + return schema, features_dict -def _create_feature(column, entity, granularity, owner): +def _create_feature(column, entity, granularity, owner, + serving_store, warehouse_store): """Create Feature object. Args: @@ -375,16 +412,26 @@ def _create_feature(column, entity, granularity, owner): granularity (feast.types.Granularity_pb2.Granularity): granularity of the feature owner (str): owner of the feature + serving_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Serving store to write the features in this instance to. + warehouse_store (feast.sdk.resources.feature.DataStore): Defaults to None. + Warehouse store to write the features in this instance to. Returns: feast.sdk.resources.Feature: feature for this data column """ - return Feature( + + feature = Feature( name=column.name, entity=entity, granularity=granularity, owner=owner, value_type=dtype_to_value_type(column.dtype)) + if serving_store is not None: + feature.serving_store = serving_store + if warehouse_store is not None: + feature.warehouse_store = warehouse_store + return feature def _create_import(import_type, options, entity, schema): diff --git a/sdk/python/feast/sdk/resources/feature.py b/sdk/python/feast/sdk/resources/feature.py index f34a40b06d9..5a88ae53692 100644 --- a/sdk/python/feast/sdk/resources/feature.py +++ b/sdk/python/feast/sdk/resources/feature.py @@ -146,7 +146,8 @@ def warehouse_store(self): @warehouse_store.setter def warehouse_store(self, value): - self.__spec.dataStores.warehouse.CopyFrom(value) + """Set warehouse store from given Datastore""" + self.__spec.dataStores.warehouse.CopyFrom(value.spec) @property def serving_store(self): @@ -154,7 +155,8 @@ def serving_store(self): @serving_store.setter def serving_store(self, value): - self.__spec.dataStores.serving.CopyFrom(value) + """Set serving store from given Datastore""" + self.__spec.dataStores.serving.CopyFrom(value.spec) @property def description(self): diff --git a/sdk/python/tests/sdk/test_importer.py b/sdk/python/tests/sdk/test_importer.py index 1017f72b5bf..ba18deea371 100644 --- a/sdk/python/tests/sdk/test_importer.py +++ b/sdk/python/tests/sdk/test_importer.py @@ -15,7 +15,7 @@ import pandas as pd import pytest import ntpath -from feast.sdk.resources.feature import Feature, Granularity, ValueType +from feast.sdk.resources.feature import Feature, Granularity, ValueType, Datastore from feast.sdk.importer import _create_feature, Importer from feast.sdk.utils.gs_utils import is_gs_path from feast.types.Granularity_pb2 import Granularity as Granularity_pb2 @@ -29,39 +29,39 @@ def test_from_csv(self): owner = "owner@feast.com" staging_location = "gs://test-bucket" id_column = "driver_id" - feature_columns = ["avg_distance_completed", + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] timestamp_column = "ts" - importer = Importer.from_csv(path = csv_path, - entity = entity_name, - granularity = feature_granularity, - owner = owner, - staging_location=staging_location, + importer = Importer.from_csv(path = csv_path, + entity = entity_name, + granularity = feature_granularity, + owner = owner, + staging_location=staging_location, id_column = id_column, feature_columns=feature_columns, timestamp_column=timestamp_column) - - self._validate_csv_importer(importer, csv_path, entity_name, - feature_granularity, owner, staging_location, id_column, + + self._validate_csv_importer(importer, csv_path, entity_name, + feature_granularity, owner, staging_location, id_column, feature_columns, timestamp_column) def test_from_csv_id_column_not_specified(self): - with pytest.raises(ValueError, + with pytest.raises(ValueError, match="Column with name driver is not found") as e_info: - feature_columns = ["avg_distance_completed", + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] csv_path = "tests/data/driver_features.csv" - importer = Importer.from_csv(path = csv_path, - entity = "driver", - granularity = Granularity.DAY, - owner = "owner@feast.com", - staging_location="gs://test-bucket", + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location="gs://test-bucket", feature_columns=feature_columns, timestamp_column="ts") def test_from_csv_timestamp_column_not_specified(self): - feature_columns = ["avg_distance_completed", + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed", "avg_distance_cancelled"] csv_path = "tests/data/driver_features.csv" entity_name = "driver" @@ -69,18 +69,18 @@ def test_from_csv_timestamp_column_not_specified(self): owner = "owner@feast.com" staging_location = "gs://test-bucket" id_column = "driver_id" - importer = Importer.from_csv(path = csv_path, - entity = entity_name, - granularity = granularity, - owner = owner, - staging_location=staging_location, + importer = Importer.from_csv(path = csv_path, + entity = entity_name, + granularity = granularity, + owner = owner, + staging_location=staging_location, id_column = id_column, feature_columns= feature_columns) self._validate_csv_importer(importer, csv_path, entity_name, - granularity, owner, staging_location = staging_location, + granularity, owner, staging_location = staging_location, id_column=id_column, feature_columns=feature_columns) - + def test_from_csv_feature_columns_not_specified(self): csv_path = "tests/data/driver_features.csv" entity_name = "driver" @@ -89,63 +89,63 @@ def test_from_csv_feature_columns_not_specified(self): staging_location = "gs://test-bucket" id_column = "driver_id" timestamp_column = "ts" - importer = Importer.from_csv(path = csv_path, - entity = entity_name, - granularity = granularity, - owner = owner, - staging_location=staging_location, + importer = Importer.from_csv(path = csv_path, + entity = entity_name, + granularity = granularity, + owner = owner, + staging_location=staging_location, id_column = id_column, timestamp_column=timestamp_column) - - self._validate_csv_importer(importer, csv_path, entity_name, - granularity, owner, staging_location = staging_location, + + self._validate_csv_importer(importer, csv_path, entity_name, + granularity, owner, staging_location = staging_location, id_column=id_column, timestamp_column=timestamp_column) def test_from_csv_staging_location_not_specified(self): - with pytest.raises(ValueError, + with pytest.raises(ValueError, match="Specify staging_location for importing local file/dataframe") as e_info: - feature_columns = ["avg_distance_completed", + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] csv_path = "tests/data/driver_features.csv" - importer = Importer.from_csv(path = csv_path, - entity = "driver", - granularity = Granularity.DAY, - owner = "owner@feast.com", + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", feature_columns=feature_columns, timestamp_column="ts") - - with pytest.raises(ValueError, + + with pytest.raises(ValueError, match="Staging location must be in GCS") as e_info: - feature_columns = ["avg_distance_completed", + feature_columns = ["avg_distance_completed", "avg_customer_distance_completed"] csv_path = "tests/data/driver_features.csv" - importer = Importer.from_csv(path = csv_path, - entity = "driver", - granularity = Granularity.DAY, - owner = "owner@feast.com", + importer = Importer.from_csv(path = csv_path, + entity = "driver", + granularity = Granularity.DAY, + owner = "owner@feast.com", staging_location = "/home", feature_columns=feature_columns, timestamp_column="ts") - + def test_from_df(self): csv_path = "tests/data/driver_features.csv" df = pd.read_csv(csv_path) staging_location = "gs://test-bucket" entity = "driver" - importer = Importer.from_df(df = df, - entity = entity, - granularity = Granularity.DAY, - owner = "owner@feast.com", - staging_location=staging_location, + importer = Importer.from_df(df = df, + entity = entity, + granularity = Granularity.DAY, + owner = "owner@feast.com", + staging_location=staging_location, id_column = "driver_id", timestamp_column="ts") assert importer.require_staging == True - assert ("{}/tmp_{}".format(staging_location, entity) + assert ("{}/tmp_{}".format(staging_location, entity) in importer.remote_path) - for feature in importer.features: + for feature in importer.features.values(): assert feature.name in df.columns assert feature.id == "driver.day." + feature.name @@ -157,29 +157,29 @@ def test_from_df(self): schema = import_spec.schema assert schema.entityIdColumn == "driver_id" assert schema.timestampValue is not None - feature_columns = ["completed", "avg_distance_completed", - "avg_customer_distance_completed", + feature_columns = ["completed", "avg_distance_completed", + "avg_customer_distance_completed", "avg_distance_cancelled"] for col, field in zip(df.columns.values, schema.fields): assert col == field.name if col in feature_columns: assert field.featureId == "driver.day." + col - def _validate_csv_importer(self, - importer, csv_path, entity_name, feature_granularity, owner, - staging_location = None, id_column = None, feature_columns = None, + def _validate_csv_importer(self, + importer, csv_path, entity_name, feature_granularity, owner, + staging_location = None, id_column = None, feature_columns = None, timestamp_column = None, timestamp_value = None): df = pd.read_csv(csv_path) assert not importer.require_staging == is_gs_path(csv_path) if importer.require_staging: - assert importer.remote_path == "{}/{}".format(staging_location, + assert importer.remote_path == "{}/{}".format(staging_location, ntpath.basename(csv_path)) # check features created - for feature in importer.features: + for feature in importer.features.values(): assert feature.name in df.columns - assert feature.id == "{}.{}.{}".format(entity_name, - Granularity_pb2.Enum.Name(feature_granularity.value).lower(), + assert feature.id == "{}.{}.{}".format(entity_name, + Granularity_pb2.Enum.Name(feature_granularity.value).lower(), feature.name) import_spec = importer.spec @@ -204,20 +204,36 @@ def _validate_csv_importer(self, for col, field in zip(df.columns.values, schema.fields): assert col == field.name if col in feature_columns: - assert field.featureId == "{}.{}.{}".format(entity_name, + assert field.featureId == "{}.{}.{}".format(entity_name, Granularity_pb2.Enum.Name(feature_granularity.value).lower(), col) class TestHelpers: def test_create_feature(self): col = pd.Series([1]*3,dtype='int32',name="test") - expected = Feature(name="test", + expected = Feature(name="test", entity="test", granularity=Granularity.NONE, owner="person", value_type=ValueType.INT32) - actual = _create_feature(col, "test", Granularity.NONE, "person") + actual = _create_feature(col, "test", Granularity.NONE, "person", None, None) assert actual.id == expected.id assert actual.value_type == expected.value_type assert actual.owner == expected.owner + def test_create_feature_with_stores(self): + col = pd.Series([1] * 3, dtype='int32', name="test") + expected = Feature(name="test", + entity="test", + granularity=Granularity.NONE, + owner="person", + value_type=ValueType.INT32, + serving_store=Datastore(id="SERVING"), + warehouse_store=Datastore(id="WAREHOUSE")) + actual = _create_feature(col, "test", Granularity.NONE, "person", + Datastore(id="SERVING"), Datastore(id="WAREHOUSE")) + assert actual.id == expected.id + assert actual.value_type == expected.value_type + assert actual.owner == expected.owner + assert actual.serving_store == expected.serving_store + assert actual.warehouse_store == expected.warehouse_store From 14a6a1bf59395da18ef1bf2f2b4ad9a21fb2d1eb Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 14 Jan 2019 13:28:32 +0800 Subject: [PATCH 48/50] Update quickstart to reflect new api --- sdk/python/examples/quickstart/Quickstart.ipynb | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/sdk/python/examples/quickstart/Quickstart.ipynb b/sdk/python/examples/quickstart/Quickstart.ipynb index 9c617dfeaec..5b9d6f3e8b9 100644 --- a/sdk/python/examples/quickstart/Quickstart.ipynb +++ b/sdk/python/examples/quickstart/Quickstart.ipynb @@ -136,18 +136,13 @@ " id_column='ride', \n", " timestamp_column='pickup_datetime',\n", " serving_store=serving_ds,\n", - " w)\n", - "\n", - "# Update feature and entity metadata\n", - "\n", + " warehouse_store=warehouse_ds)\n", "\n", "# Update feature and entity metadata. Ideally you want to update these manually\n", "# so that they contain adequate information for the next user\n", "importer.entity.description = 'nyc taxi dataset' \n", - "for feature in importer.features:\n", - " feature.serving_store = serving_ds\n", - " feature.warehouse_store = warehouse_ds\n", - " feature.description = 'nyc taxi dataset'\n", + "for feature_id in importer.features:\n", + " importer.features[feature_id].description = 'nyc taxi dataset'\n", " \n", "# Ingest the feature data into the store\n", "fs.run(importer, apply_features=True, apply_entity=True)" From 0a88e02c642f78348112f538f706a3c44e7744b6 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 14 Jan 2019 13:34:52 +0800 Subject: [PATCH 49/50] Change datasetPrefix env var key --- core/src/main/resources/application.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/resources/application.properties b/core/src/main/resources/application.properties index c338360dfc1..9a641599052 100644 --- a/core/src/main/resources/application.properties +++ b/core/src/main/resources/application.properties @@ -14,12 +14,12 @@ # limitations under the License. # # -grpc.port=${GRPC_PORT:8433} +grpc.port=${GRPC_PORT:6565} feast.core.projectId = ${PROJECT_ID:} -feast.core.datasetPrefix = ${TRAINING_DATASET_PREFIX:fs} +feast.core.datasetPrefix = ${DATASET_PREFIX:fs} -feast.jobs.coreUri=${CORE_API_URI:localhost:8433} +feast.jobs.coreUri=${CORE_API_URI:localhost:6565} feast.jobs.runner=${JOB_RUNNER:DirectRunner} feast.jobs.options=${JOB_OPTIONS:{}} feast.jobs.executable=${JOB_EXECUTABLE:feast-ingestion.jar} From 29c052da77f3348237ab7fa0d52b407330bcd2b8 Mon Sep 17 00:00:00 2001 From: zhilingc Date: Mon, 14 Jan 2019 13:35:32 +0800 Subject: [PATCH 50/50] Update serving default port --- serving/src/main/resources/application.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/serving/src/main/resources/application.properties b/serving/src/main/resources/application.properties index 662d7780f19..ff14ded7422 100644 --- a/serving/src/main/resources/application.properties +++ b/serving/src/main/resources/application.properties @@ -15,9 +15,9 @@ # # server.port=${FEAST_SERVING_HTTP_PORT:8080} -grpc.port=${FEAST_SERVING_GRPC_PORT:6565} +grpc.port=${FEAST_SERVING_GRPC_PORT:6566} feast.core.host=${FEAST_CORE_HOST:localhost} -feast.core.grpc.port=${FEAST_CORE_GRPC_PORT:8433} +feast.core.grpc.port=${FEAST_CORE_GRPC_PORT:6565} feast.threadpool.max=${FEAST_MAX_NB_THREAD:128} feast.maxentity=${FEAST_MAX_ENTITY_PER_BATCH:2000}