summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/deliverables.json1
-rw-r--r--tools/deliverables_generator.js41
-rw-r--r--tools/sage.csv166
-rw-r--r--tools/sage.json1
-rwxr-xr-xtools/sage_csv_to_sage_json.py78
5 files changed, 287 insertions, 0 deletions
diff --git a/tools/deliverables.json b/tools/deliverables.json
new file mode 100644
index 00000000..4203e991
--- /dev/null
+++ b/tools/deliverables.json
@@ -0,0 +1 @@
+{"nodes":[{"id":"Task 0","name":"Task 0","type":"deliverable","start":"2016-04-30T08:37:12.683Z","end":"2016-09-09T01:03:51.463Z","status":"status"},{"id":"Task 1","name":"Task 1","type":"deliverable","start":"2015-07-08T03:30:12.940Z","end":"2015-08-12T01:37:31.478Z","status":"status"},{"id":"Task 2","name":"Task 2","type":"deliverable","start":"2015-03-05T07:01:02.409Z","end":"2015-07-22T03:29:43.399Z","status":"status"},{"id":"Task 3","name":"Task 3","type":"deliverable","start":"2015-06-25T19:37:43.998Z","end":"2017-04-06T07:29:19.534Z","status":"status"},{"id":"Task 4","name":"Task 4","type":"deliverable","start":"2014-10-10T09:05:49.708Z","end":"2015-05-21T11:00:51.532Z","status":"status"},{"id":"Task 5","name":"Task 5","type":"deliverable","start":"2014-11-28T06:05:34.865Z","end":"2015-05-06T08:00:35.195Z","status":"status"},{"id":"Task 6","name":"Task 6","type":"deliverable","start":"2015-10-27T07:42:58.931Z","end":"2016-07-03T14:38:19.366Z","status":"status"},{"id":"Task 7","name":"Task 7","type":"deliverable","start":"2015-11-21T13:23:42.529Z","end":"2015-12-26T14:49:52.538Z","status":"status"},{"id":"Task 8","name":"Task 8","type":"deliverable","start":"2014-12-28T22:09:09.815Z","end":"2016-12-30T14:18:13.896Z","status":"status"},{"id":"Task 9","name":"Task 9","type":"deliverable","start":"2016-04-09T05:10:18.337Z","end":"2016-12-15T08:32:49.799Z","status":"status"},{"id":"Task 10","name":"Task 10","type":"deliverable","start":"2014-12-06T13:55:00.569Z","end":"2015-01-03T17:13:04.481Z","status":"status"},{"id":"Task 11","name":"Task 11","type":"deliverable","start":"2016-11-24T14:51:51.412Z","end":"2016-12-22T17:22:23.325Z","status":"status"},{"id":"Task 12","name":"Task 12","type":"deliverable","start":"2015-01-03T08:56:24.319Z","end":"2015-03-26T02:48:21.902Z","status":"status"},{"id":"Task 13","name":"Task 13","type":"deliverable","start":"2014-11-17T22:10:27.785Z","end":"2015-01-13T02:59:06.665Z","status":"status"},{"id":"Task 14","name":"Task 14","type":"deliverable","start":"2015-05-14T20:57:01.738Z","end":"2016-01-19T06:26:07.792Z","status":"status"},{"id":"Task 15","name":"Task 15","type":"deliverable","start":"2014-10-20T23:46:14.993Z","end":"2014-12-28T01:04:06.960Z","status":"status"},{"id":"Task 16","name":"Task 16","type":"deliverable","start":"2016-02-04T23:53:02.378Z","end":"2016-04-28T03:05:27.979Z","status":"status"},{"id":"Task 17","name":"Task 17","type":"deliverable","start":"2014-10-31T19:29:02.691Z","end":"2015-10-28T02:06:11.945Z","status":"status"},{"id":"Task 18","name":"Task 18","type":"deliverable","start":"2016-10-18T22:21:24.444Z","end":"2017-02-03T00:04:31.620Z","status":"status"},{"id":"Task 19","name":"Task 19","type":"deliverable","start":"2015-04-21T14:21:04.489Z","end":"2017-04-20T04:27:46.550Z","status":"status"},{"id":"Task 20","name":"Task 20","type":"deliverable","start":"2015-08-08T09:58:18.210Z","end":"2017-01-17T19:17:03.461Z","status":"status"},{"id":"Task 21","name":"Task 21","type":"deliverable","start":"2014-12-24T21:16:12.913Z","end":"2015-01-01T09:34:24.343Z","status":"status"},{"id":"Task 22","name":"Task 22","type":"deliverable","start":"2015-03-17T06:36:32.812Z","end":"2017-02-26T08:16:29.245Z","status":"status"},{"id":"Task 23","name":"Task 23","type":"deliverable","start":"2014-12-19T06:54:32.664Z","end":"2015-07-06T03:58:46.189Z","status":"status"},{"id":"Task 24","name":"Task 24","type":"deliverable","start":"2015-02-28T23:44:55.756Z","end":"2017-09-22T06:25:24.231Z","status":"status"},{"id":"Task 25","name":"Task 25","type":"deliverable","start":"2016-05-17T18:30:06.053Z","end":"2016-06-11T00:02:04.160Z","status":"status"},{"id":"Task 26","name":"Task 26","type":"deliverable","start":"2015-02-11T15:10:59.651Z","end":"2015-02-13T13:36:51.336Z","status":"status"},{"id":"Task 27","name":"Task 27","type":"deliverable","start":"2014-10-25T17:14:32.625Z","end":"2016-07-22T04:06:36.707Z","status":"status"},{"id":"Task 28","name":"Task 28","type":"deliverable","start":"2015-08-18T22:29:10.086Z","end":"2016-05-16T05:51:13.041Z","status":"status"},{"id":"Task 29","name":"Task 29","type":"deliverable","start":"2016-03-21T01:16:14.630Z","end":"2016-04-17T15:28:39.022Z","status":"status"},{"id":"Task 30","name":"Task 30","type":"deliverable","start":"2015-01-10T03:33:30.059Z","end":"2015-03-14T04:20:59.232Z","status":"status"},{"id":"Task 31","name":"Task 31","type":"deliverable","start":"2016-07-26T00:28:47.818Z","end":"2017-02-14T01:54:24.709Z","status":"status"},{"id":"Task 32","name":"Task 32","type":"deliverable","start":"2014-12-31T04:17:17.645Z","end":"2015-07-07T14:00:59.326Z","status":"status"},{"id":"Task 33","name":"Task 33","type":"deliverable","start":"2015-03-25T08:56:56.251Z","end":"2015-04-14T03:33:21.477Z","status":"status"},{"id":"Task 34","name":"Task 34","type":"deliverable","start":"2015-03-04T00:06:51.335Z","end":"2015-04-16T09:44:22.639Z","status":"status"},{"id":"Task 35","name":"Task 35","type":"deliverable","start":"2015-09-01T17:44:42.171Z","end":"2016-01-03T01:31:47.983Z","status":"status"},{"id":"Task 36","name":"Task 36","type":"deliverable","start":"2015-09-12T14:18:10.662Z","end":"2017-09-08T08:12:53.576Z","status":"status"},{"id":"Task 37","name":"Task 37","type":"deliverable","start":"2015-06-24T20:13:24.195Z","end":"2016-02-22T19:34:52.918Z","status":"status"},{"id":"Task 38","name":"Task 38","type":"deliverable","start":"2014-11-02T01:27:36.276Z","end":"2014-11-28T18:26:14.568Z","status":"status"},{"id":"Task 39","name":"Task 39","type":"deliverable","start":"2015-01-08T13:13:05.715Z","end":"2016-01-14T00:33:01.352Z","status":"status"},{"id":"Task 40","name":"Task 40","type":"deliverable","start":"2015-11-25T08:13:31.081Z","end":"2017-05-06T17:47:17.412Z","status":"status"},{"id":"Task 41","name":"Task 41","type":"deliverable","start":"2015-07-19T13:33:11.894Z","end":"2015-08-11T13:18:47.711Z","status":"status"},{"id":"Task 42","name":"Task 42","type":"deliverable","start":"2016-03-07T17:29:49.101Z","end":"2017-03-04T21:09:19.962Z","status":"status"},{"id":"Task 43","name":"Task 43","type":"deliverable","start":"2016-04-03T04:48:44.085Z","end":"2017-05-21T16:22:09.215Z","status":"status"},{"id":"Task 44","name":"Task 44","type":"deliverable","start":"2014-12-06T02:42:39.789Z","end":"2015-03-27T17:42:02.900Z","status":"status"},{"id":"Task 45","name":"Task 45","type":"deliverable","start":"2015-09-07T03:56:23.356Z","end":"2017-09-23T04:33:05.181Z","status":"status"},{"id":"Task 46","name":"Task 46","type":"deliverable","start":"2015-06-05T21:32:34.124Z","end":"2017-08-21T11:38:00.254Z","status":"status"},{"id":"Task 47","name":"Task 47","type":"deliverable","start":"2015-12-23T11:47:06.514Z","end":"2017-10-30T02:10:27.791Z","status":"status"},{"id":"Task 48","name":"Task 48","type":"deliverable","start":"2015-01-01T05:37:06.279Z","end":"2017-11-16T06:31:50.419Z","status":"status"},{"id":"Task 49","name":"Task 49","type":"deliverable","start":"2016-01-13T00:57:49.793Z","end":"2016-01-19T23:53:22.652Z","status":"status"},{"id":"Task 50","name":"Task 50","type":"deliverable","start":"2015-02-06T09:23:41.697Z","end":"2015-05-12T07:20:05.370Z","status":"status"},{"id":"Task 51","name":"Task 51","type":"deliverable","start":"2015-03-17T00:26:54.631Z","end":"2015-06-03T21:53:42.036Z","status":"status"},{"id":"Task 52","name":"Task 52","type":"deliverable","start":"2015-05-03T19:31:42.971Z","end":"2017-01-28T14:54:34.571Z","status":"status"},{"id":"Task 53","name":"Task 53","type":"deliverable","start":"2014-10-08T20:59:51.475Z","end":"2014-12-09T03:30:55.504Z","status":"status"},{"id":"Task 54","name":"Task 54","type":"deliverable","start":"2014-12-29T22:45:19.265Z","end":"2017-03-12T00:51:43.497Z","status":"status"},{"id":"Task 55","name":"Task 55","type":"deliverable","start":"2014-11-16T13:50:07.013Z","end":"2014-12-02T12:25:40.929Z","status":"status"},{"id":"Task 56","name":"Task 56","type":"deliverable","start":"2014-10-01T02:02:43.861Z","end":"2014-11-15T10:03:18.139Z","status":"status"},{"id":"Task 57","name":"Task 57","type":"deliverable","start":"2015-01-29T22:27:33.013Z","end":"2017-02-16T03:25:00.833Z","status":"status"},{"id":"Task 58","name":"Task 58","type":"deliverable","start":"2014-12-17T20:26:42.880Z","end":"2015-08-22T20:06:20.360Z","status":"status"},{"id":"Task 59","name":"Task 59","type":"deliverable","start":"2016-03-02T06:11:49.448Z","end":"2017-09-07T17:37:52.289Z","status":"status"},{"id":"Task 60","name":"Task 60","type":"deliverable","start":"2016-07-31T19:33:46.473Z","end":"2017-11-08T04:52:46.438Z","status":"status"},{"id":"Task 61","name":"Task 61","type":"deliverable","start":"2014-12-06T18:20:58.623Z","end":"2017-01-17T10:30:16.642Z","status":"status"},{"id":"Task 62","name":"Task 62","type":"deliverable","start":"2014-11-05T12:47:45.323Z","end":"2016-08-02T14:15:57.380Z","status":"status"},{"id":"Task 63","name":"Task 63","type":"deliverable","start":"2015-03-24T00:26:09.182Z","end":"2015-07-07T17:48:59.217Z","status":"status"},{"id":"Task 64","name":"Task 64","type":"deliverable","start":"2014-12-23T23:27:24.263Z","end":"2015-06-18T08:23:01.172Z","status":"status"},{"id":"Task 65","name":"Task 65","type":"deliverable","start":"2015-06-28T02:18:46.574Z","end":"2017-09-05T12:46:47.950Z","status":"status"},{"id":"Task 66","name":"Task 66","type":"deliverable","start":"2015-03-10T08:20:40.283Z","end":"2017-03-23T14:16:59.730Z","status":"status"},{"id":"Task 67","name":"Task 67","type":"deliverable","start":"2014-12-28T04:30:47.656Z","end":"2015-01-28T19:31:30.099Z","status":"status"},{"id":"Task 68","name":"Task 68","type":"deliverable","start":"2015-05-18T08:19:35.553Z","end":"2015-11-28T23:43:55.476Z","status":"status"},{"id":"Task 69","name":"Task 69","type":"deliverable","start":"2015-02-02T04:00:37.568Z","end":"2015-03-24T06:23:16.511Z","status":"status"},{"id":"Task 70","name":"Task 70","type":"deliverable","start":"2015-04-26T14:09:24.684Z","end":"2015-06-04T08:51:41.086Z","status":"status"},{"id":"Task 71","name":"Task 71","type":"deliverable","start":"2016-08-11T14:44:41.002Z","end":"2017-06-10T07:05:37.874Z","status":"status"},{"id":"Task 72","name":"Task 72","type":"deliverable","start":"2016-11-23T21:14:26.122Z","end":"2016-12-16T03:37:13.467Z","status":"status"},{"id":"Task 73","name":"Task 73","type":"deliverable","start":"2014-11-23T15:25:07.048Z","end":"2015-02-26T05:11:36.831Z","status":"status"},{"id":"Task 74","name":"Task 74","type":"deliverable","start":"2015-03-13T16:12:21.788Z","end":"2015-12-08T07:13:08.826Z","status":"status"},{"id":"Task 75","name":"Task 75","type":"deliverable","start":"2015-09-09T00:45:20.897Z","end":"2016-01-15T04:49:27.941Z","status":"status"},{"id":"Task 76","name":"Task 76","type":"deliverable","start":"2015-10-30T09:09:11.549Z","end":"2016-06-06T02:49:51.452Z","status":"status"},{"id":"Task 77","name":"Task 77","type":"deliverable","start":"2016-09-30T13:34:43.276Z","end":"2017-07-06T03:22:14.477Z","status":"status"},{"id":"Task 78","name":"Task 78","type":"deliverable","start":"2014-12-24T22:03:35.325Z","end":"2015-03-17T11:25:30.059Z","status":"status"},{"id":"Task 79","name":"Task 79","type":"deliverable","start":"2015-04-18T05:54:49.815Z","end":"2015-08-12T05:25:35.173Z","status":"status"},{"id":"Task 80","name":"Task 80","type":"deliverable","start":"2015-01-02T07:30:27.272Z","end":"2015-03-23T19:47:21.145Z","status":"status"},{"id":"Task 81","name":"Task 81","type":"deliverable","start":"2015-03-23T05:07:59.101Z","end":"2015-06-03T00:54:49.008Z","status":"status"},{"id":"Task 82","name":"Task 82","type":"deliverable","start":"2015-01-05T11:51:24.521Z","end":"2015-06-26T05:27:52.987Z","status":"status"},{"id":"Task 83","name":"Task 83","type":"deliverable","start":"2016-03-04T14:26:59.497Z","end":"2016-08-28T09:06:09.386Z","status":"status"},{"id":"Task 84","name":"Task 84","type":"deliverable","start":"2015-09-06T09:55:55.458Z","end":"2015-12-28T03:18:01.232Z","status":"status"},{"id":"Task 85","name":"Task 85","type":"deliverable","start":"2015-01-24T19:38:28.569Z","end":"2017-04-30T17:28:34.650Z","status":"status"},{"id":"Task 86","name":"Task 86","type":"deliverable","start":"2015-03-20T18:23:25.122Z","end":"2015-07-14T01:50:18.772Z","status":"status"},{"id":"Task 87","name":"Task 87","type":"deliverable","start":"2015-05-28T22:16:36.422Z","end":"2016-04-21T05:59:40.038Z","status":"status"},{"id":"Task 88","name":"Task 88","type":"deliverable","start":"2017-03-27T07:00:22.809Z","end":"2017-05-22T17:06:09.454Z","status":"status"},{"id":"Task 89","name":"Task 89","type":"deliverable","start":"2015-07-22T15:32:40.368Z","end":"2017-04-19T04:35:58.897Z","status":"status"},{"id":"Task 90","name":"Task 90","type":"deliverable","start":"2015-11-02T23:12:19.441Z","end":"2017-10-17T01:26:36.886Z","status":"status"},{"id":"Task 91","name":"Task 91","type":"deliverable","start":"2016-03-31T20:32:03.327Z","end":"2016-05-13T09:16:21.862Z","status":"status"},{"id":"Task 92","name":"Task 92","type":"deliverable","start":"2014-09-30T00:25:19.076Z","end":"2014-10-25T13:53:03.989Z","status":"status"},{"id":"Task 93","name":"Task 93","type":"deliverable","start":"2015-01-08T12:44:13.188Z","end":"2016-05-21T05:39:53.053Z","status":"status"},{"id":"Task 94","name":"Task 94","type":"deliverable","start":"2016-07-11T07:48:02.366Z","end":"2017-11-07T05:16:14.216Z","status":"status"},{"id":"Task 95","name":"Task 95","type":"deliverable","start":"2015-10-18T17:59:52.549Z","end":"2016-01-05T19:36:54.921Z","status":"status"},{"id":"Task 96","name":"Task 96","type":"deliverable","start":"2015-10-14T01:03:15.261Z","end":"2017-10-29T08:01:00.968Z","status":"status"},{"id":"Task 97","name":"Task 97","type":"deliverable","start":"2015-09-25T03:34:32.221Z","end":"2017-03-26T12:35:26.178Z","status":"status"},{"id":"Task 98","name":"Task 98","type":"deliverable","start":"2014-12-20T01:26:14.891Z","end":"2017-04-09T04:48:46.362Z","status":"status"},{"id":"Task 99","name":"Task 99","type":"deliverable","start":"2014-11-12T18:41:41.961Z","end":"2015-07-03T01:36:54.658Z","status":"status"},{"id":"Task 100","name":"Task 100","type":"deliverable","start":"2015-04-25T04:15:18.546Z","end":"2016-06-17T06:10:03.493Z","status":"status"},{"id":"Task 101","name":"Task 101","type":"deliverable","start":"2014-12-28T18:01:37.219Z","end":"2015-12-27T22:15:25.045Z","status":"status"},{"id":"Task 102","name":"Task 102","type":"deliverable","start":"2016-03-06T04:49:45.666Z","end":"2016-12-26T01:11:50.398Z","status":"status"},{"id":"Task 103","name":"Task 103","type":"deliverable","start":"2015-09-09T11:53:03.014Z","end":"2016-06-05T13:43:53.735Z","status":"status"},{"id":"Task 104","name":"Task 104","type":"deliverable","start":"2015-07-31T07:36:37.729Z","end":"2015-08-14T05:51:25.218Z","status":"status"},{"id":"Task 105","name":"Task 105","type":"deliverable","start":"2014-10-12T17:32:24.215Z","end":"2015-02-27T23:44:58.031Z","status":"status"},{"id":"Task 106","name":"Task 106","type":"deliverable","start":"2014-10-08T04:53:54.971Z","end":"2015-03-23T11:59:43.682Z","status":"status"},{"id":"Task 107","name":"Task 107","type":"deliverable","start":"2015-06-03T03:45:10.093Z","end":"2015-06-19T21:44:10.467Z","status":"status"},{"id":"Task 108","name":"Task 108","type":"deliverable","start":"2015-01-07T13:04:42.542Z","end":"2016-03-08T00:38:12.470Z","status":"status"},{"id":"Task 109","name":"Task 109","type":"deliverable","start":"2015-04-07T00:22:21.622Z","end":"2015-09-29T04:41:30.466Z","status":"status"},{"id":"Task 110","name":"Task 110","type":"deliverable","start":"2015-01-19T22:01:42.727Z","end":"2015-06-14T11:57:33.751Z","status":"status"},{"id":"Task 111","name":"Task 111","type":"deliverable","start":"2014-10-07T08:38:31.981Z","end":"2015-05-16T16:12:56.942Z","status":"status"},{"id":"Task 112","name":"Task 112","type":"deliverable","start":"2015-05-25T04:21:41.483Z","end":"2015-05-28T07:42:55.621Z","status":"status"},{"id":"Task 113","name":"Task 113","type":"deliverable","start":"2014-11-12T17:00:13.990Z","end":"2017-03-15T13:42:23.527Z","status":"status"},{"id":"Task 114","name":"Task 114","type":"deliverable","start":"2014-12-23T00:08:38.964Z","end":"2015-11-30T19:00:19.525Z","status":"status"},{"id":"Task 115","name":"Task 115","type":"deliverable","start":"2016-06-05T23:22:12.919Z","end":"2016-06-09T02:53:45.273Z","status":"status"},{"id":"Task 116","name":"Task 116","type":"deliverable","start":"2015-11-27T00:11:35.996Z","end":"2016-11-28T11:33:18.125Z","status":"status"},{"id":"Task 117","name":"Task 117","type":"deliverable","start":"2015-02-17T14:14:00.392Z","end":"2015-11-09T01:12:14.451Z","status":"status"},{"id":"Task 118","name":"Task 118","type":"deliverable","start":"2014-11-15T09:08:50.571Z","end":"2015-11-23T01:29:39.921Z","status":"status"},{"id":"Task 119","name":"Task 119","type":"deliverable","start":"2014-12-23T16:22:34.721Z","end":"2015-08-19T05:57:36.546Z","status":"status"},{"id":"Task 120","name":"Task 120","type":"deliverable","start":"2015-12-17T12:23:13.800Z","end":"2016-06-21T12:56:16.422Z","status":"status"},{"id":"Task 121","name":"Task 121","type":"deliverable","start":"2015-01-13T16:03:06.491Z","end":"2016-01-03T13:56:34.167Z","status":"status"},{"id":"Task 122","name":"Task 122","type":"deliverable","start":"2014-11-13T10:35:03.181Z","end":"2014-12-30T06:38:33.167Z","status":"status"},{"id":"Task 123","name":"Task 123","type":"deliverable","start":"2014-10-03T10:22:57.000Z","end":"2014-10-14T07:23:55.503Z","status":"status"},{"id":"Task 124","name":"Task 124","type":"deliverable","start":"2014-11-18T04:30:22.794Z","end":"2015-11-08T10:36:28.978Z","status":"status"},{"id":"Task 125","name":"Task 125","type":"deliverable","start":"2015-09-10T13:23:33.457Z","end":"2016-02-09T13:30:51.544Z","status":"status"},{"id":"Task 126","name":"Task 126","type":"deliverable","start":"2015-03-05T02:01:21.506Z","end":"2015-09-20T18:11:09.019Z","status":"status"},{"id":"Task 127","name":"Task 127","type":"deliverable","start":"2015-03-24T06:34:12.380Z","end":"2016-01-03T13:25:39.214Z","status":"status"},{"id":"Task 128","name":"Task 128","type":"deliverable","start":"2014-10-05T09:34:09.184Z","end":"2014-10-08T21:33:21.515Z","status":"status"},{"id":"Task 129","name":"Task 129","type":"deliverable","start":"2014-12-10T17:14:36.472Z","end":"2014-12-20T17:48:13.223Z","status":"status"},{"id":"Task 130","name":"Task 130","type":"deliverable","start":"2014-10-03T04:32:39.176Z","end":"2014-10-25T03:35:36.830Z","status":"status"},{"id":"Task 131","name":"Task 131","type":"deliverable","start":"2015-06-15T13:50:45.302Z","end":"2015-08-03T20:59:23.373Z","status":"status"},{"id":"Task 132","name":"Task 132","type":"deliverable","start":"2015-10-23T08:56:16.944Z","end":"2016-11-15T19:51:09.472Z","status":"status"},{"id":"Task 133","name":"Task 133","type":"deliverable","start":"2015-06-08T00:01:12.273Z","end":"2017-08-07T18:20:30.163Z","status":"status"},{"id":"Task 134","name":"Task 134","type":"deliverable","start":"2014-12-27T19:28:27.536Z","end":"2016-10-10T05:38:10.854Z","status":"status"},{"id":"Task 135","name":"Task 135","type":"deliverable","start":"2015-05-30T18:24:25.051Z","end":"2016-01-14T07:03:32.734Z","status":"status"},{"id":"Task 136","name":"Task 136","type":"deliverable","start":"2014-12-02T13:32:53.629Z","end":"2014-12-02T23:07:27.132Z","status":"status"},{"id":"Task 137","name":"Task 137","type":"deliverable","start":"2015-09-15T01:47:35.473Z","end":"2015-11-07T18:41:01.779Z","status":"status"},{"id":"Task 138","name":"Task 138","type":"deliverable","start":"2015-09-12T20:42:52.024Z","end":"2016-06-25T23:32:40.008Z","status":"status"},{"id":"Task 139","name":"Task 139","type":"deliverable","start":"2015-05-29T23:58:13.829Z","end":"2017-09-19T09:41:35.588Z","status":"status"},{"id":"Task 140","name":"Task 140","type":"deliverable","start":"2015-02-09T20:30:37.818Z","end":"2017-11-09T05:45:28.830Z","status":"status"},{"id":"Task 141","name":"Task 141","type":"deliverable","start":"2015-06-14T05:16:38.677Z","end":"2015-07-13T00:25:15.109Z","status":"status"},{"id":"Task 142","name":"Task 142","type":"deliverable","start":"2016-05-10T00:29:30.493Z","end":"2016-12-19T12:24:29.227Z","status":"status"},{"id":"Task 143","name":"Task 143","type":"deliverable","start":"2015-09-09T10:58:25.912Z","end":"2016-10-12T15:59:23.224Z","status":"status"},{"id":"Task 144","name":"Task 144","type":"deliverable","start":"2017-04-05T01:26:41.609Z","end":"2017-05-12T17:35:54.264Z","status":"status"},{"id":"Task 145","name":"Task 145","type":"deliverable","start":"2015-08-05T14:08:16.870Z","end":"2017-08-18T17:28:25.278Z","status":"status"},{"id":"Task 146","name":"Task 146","type":"deliverable","start":"2015-06-20T09:30:22.963Z","end":"2016-02-22T13:39:56.896Z","status":"status"},{"id":"Task 147","name":"Task 147","type":"deliverable","start":"2014-10-02T04:28:35.979Z","end":"2014-10-03T22:07:12.054Z","status":"status"},{"id":"Task 148","name":"Task 148","type":"deliverable","start":"2015-04-09T22:12:11.720Z","end":"2017-10-31T03:27:08.940Z","status":"status"},{"id":"Task 149","name":"Task 149","type":"deliverable","start":"2016-06-08T04:23:31.921Z","end":"2017-09-01T16:26:49.860Z","status":"status"}],"links":[{"source":"Task 44","target":"Task 47","name":"depends on"},{"source":"Task 58","target":"Task 98","name":"depends on"},{"source":"Task 34","target":"Task 29","name":"depends on"},{"source":"Task 137","target":"Task 0","name":"depends on"},{"source":"Task 8","target":"Task 93","name":"depends on"},{"source":"Task 123","target":"Task 104","name":"depends on"},{"source":"Task 147","target":"Task 123","name":"depends on"},{"source":"Task 53","target":"Task 138","name":"depends on"},{"source":"Task 69","target":"Task 3","name":"depends on"},{"source":"Task 61","target":"Task 141","name":"depends on"},{"source":"Task 3","target":"Task 94","name":"depends on"},{"source":"Task 4","target":"Task 139","name":"depends on"},{"source":"Task 8","target":"Task 121","name":"depends on"},{"source":"Task 67","target":"Task 88","name":"depends on"},{"source":"Task 128","target":"Task 49","name":"depends on"},{"source":"Task 4","target":"Task 91","name":"depends on"},{"source":"Task 44","target":"Task 127","name":"depends on"},{"source":"Task 122","target":"Task 14","name":"depends on"},{"source":"Task 149","target":"Task 77","name":"depends on"},{"source":"Task 4","target":"Task 96","name":"depends on"},{"source":"Task 32","target":"Task 69","name":"depends on"},{"source":"Task 117","target":"Task 70","name":"depends on"},{"source":"Task 93","target":"Task 30","name":"depends on"},{"source":"Task 90","target":"Task 25","name":"depends on"},{"source":"Task 8","target":"Task 97","name":"depends on"},{"source":"Task 59","target":"Task 29","name":"depends on"},{"source":"Task 114","target":"Task 34","name":"depends on"},{"source":"Task 99","target":"Task 8","name":"depends on"},{"source":"Task 34","target":"Task 84","name":"depends on"},{"source":"Task 134","target":"Task 29","name":"depends on"},{"source":"Task 48","target":"Task 26","name":"depends on"},{"source":"Task 127","target":"Task 116","name":"depends on"},{"source":"Task 2","target":"Task 127","name":"depends on"},{"source":"Task 109","target":"Task 84","name":"depends on"},{"source":"Task 79","target":"Task 97","name":"depends on"},{"source":"Task 123","target":"Task 75","name":"depends on"},{"source":"Task 108","target":"Task 126","name":"depends on"},{"source":"Task 44","target":"Task 60","name":"depends on"},{"source":"Task 74","target":"Task 120","name":"depends on"},{"source":"Task 85","target":"Task 132","name":"depends on"},{"source":"Task 12","target":"Task 76","name":"depends on"},{"source":"Task 80","target":"Task 66","name":"depends on"},{"source":"Task 110","target":"Task 51","name":"depends on"},{"source":"Task 110","target":"Task 3","name":"depends on"},{"source":"Task 108","target":"Task 112","name":"depends on"},{"source":"Task 114","target":"Task 30","name":"depends on"},{"source":"Task 57","target":"Task 132","name":"depends on"},{"source":"Task 147","target":"Task 101","name":"depends on"},{"source":"Task 38","target":"Task 58","name":"depends on"},{"source":"Task 87","target":"Task 149","name":"depends on"},{"source":"Task 96","target":"Task 11","name":"depends on"},{"source":"Task 121","target":"Task 149","name":"depends on"},{"source":"Task 100","target":"Task 14","name":"depends on"},{"source":"Task 7","target":"Task 31","name":"depends on"},{"source":"Task 135","target":"Task 88","name":"depends on"},{"source":"Task 119","target":"Task 90","name":"depends on"},{"source":"Task 95","target":"Task 31","name":"depends on"},{"source":"Task 121","target":"Task 142","name":"depends on"},{"source":"Task 57","target":"Task 97","name":"depends on"},{"source":"Task 121","target":"Task 43","name":"depends on"},{"source":"Task 5","target":"Task 65","name":"depends on"},{"source":"Task 53","target":"Task 88","name":"depends on"},{"source":"Task 80","target":"Task 6","name":"depends on"},{"source":"Task 15","target":"Task 24","name":"depends on"},{"source":"Task 57","target":"Task 141","name":"depends on"},{"source":"Task 13","target":"Task 35","name":"depends on"},{"source":"Task 76","target":"Task 59","name":"depends on"},{"source":"Task 3","target":"Task 143","name":"depends on"},{"source":"Task 118","target":"Task 49","name":"depends on"},{"source":"Task 99","target":"Task 59","name":"depends on"},{"source":"Task 10","target":"Task 60","name":"depends on"},{"source":"Task 103","target":"Task 125","name":"depends on"},{"source":"Task 66","target":"Task 91","name":"depends on"},{"source":"Task 130","target":"Task 7","name":"depends on"},{"source":"Task 128","target":"Task 45","name":"depends on"},{"source":"Task 122","target":"Task 82","name":"depends on"},{"source":"Task 30","target":"Task 125","name":"depends on"},{"source":"Task 128","target":"Task 95","name":"depends on"},{"source":"Task 92","target":"Task 49","name":"depends on"},{"source":"Task 17","target":"Task 99","name":"depends on"},{"source":"Task 54","target":"Task 22","name":"depends on"},{"source":"Task 147","target":"Task 14","name":"depends on"},{"source":"Task 15","target":"Task 116","name":"depends on"},{"source":"Task 130","target":"Task 11","name":"depends on"},{"source":"Task 124","target":"Task 52","name":"depends on"},{"source":"Task 27","target":"Task 65","name":"depends on"},{"source":"Task 27","target":"Task 38","name":"depends on"},{"source":"Task 117","target":"Task 45","name":"depends on"},{"source":"Task 113","target":"Task 124","name":"depends on"},{"source":"Task 139","target":"Task 11","name":"depends on"},{"source":"Task 35","target":"Task 72","name":"depends on"},{"source":"Task 67","target":"Task 12","name":"depends on"},{"source":"Task 80","target":"Task 9","name":"depends on"},{"source":"Task 124","target":"Task 51","name":"depends on"},{"source":"Task 78","target":"Task 60","name":"depends on"},{"source":"Task 27","target":"Task 54","name":"depends on"},{"source":"Task 24","target":"Task 52","name":"depends on"},{"source":"Task 111","target":"Task 97","name":"depends on"},{"source":"Task 13","target":"Task 1","name":"depends on"},{"source":"Task 128","target":"Task 60","name":"depends on"},{"source":"Task 5","target":"Task 5","name":"depends on"},{"source":"Task 63","target":"Task 91","name":"depends on"},{"source":"Task 111","target":"Task 91","name":"depends on"},{"source":"Task 135","target":"Task 131","name":"depends on"},{"source":"Task 140","target":"Task 90","name":"depends on"},{"source":"Task 23","target":"Task 18","name":"depends on"},{"source":"Task 39","target":"Task 142","name":"depends on"},{"source":"Task 5","target":"Task 35","name":"depends on"},{"source":"Task 62","target":"Task 146","name":"depends on"},{"source":"Task 92","target":"Task 133","name":"depends on"},{"source":"Task 101","target":"Task 81","name":"depends on"},{"source":"Task 51","target":"Task 146","name":"depends on"},{"source":"Task 123","target":"Task 35","name":"depends on"},{"source":"Task 1","target":"Task 149","name":"depends on"},{"source":"Task 48","target":"Task 84","name":"depends on"},{"source":"Task 76","target":"Task 40","name":"depends on"},{"source":"Task 98","target":"Task 94","name":"depends on"},{"source":"Task 61","target":"Task 34","name":"depends on"},{"source":"Task 98","target":"Task 102","name":"depends on"},{"source":"Task 58","target":"Task 32","name":"depends on"},{"source":"Task 142","target":"Task 88","name":"depends on"},{"source":"Task 19","target":"Task 59","name":"depends on"},{"source":"Task 4","target":"Task 102","name":"depends on"},{"source":"Task 38","target":"Task 89","name":"depends on"},{"source":"Task 86","target":"Task 60","name":"depends on"},{"source":"Task 93","target":"Task 125","name":"depends on"},{"source":"Task 114","target":"Task 77","name":"depends on"},{"source":"Task 98","target":"Task 86","name":"depends on"},{"source":"Task 57","target":"Task 9","name":"depends on"},{"source":"Task 97","target":"Task 144","name":"depends on"},{"source":"Task 75","target":"Task 142","name":"depends on"},{"source":"Task 56","target":"Task 71","name":"depends on"},{"source":"Task 114","target":"Task 60","name":"depends on"},{"source":"Task 141","target":"Task 145","name":"depends on"},{"source":"Task 92","target":"Task 38","name":"depends on"},{"source":"Task 30","target":"Task 86","name":"depends on"},{"source":"Task 99","target":"Task 136","name":"depends on"},{"source":"Task 53","target":"Task 13","name":"depends on"},{"source":"Task 62","target":"Task 52","name":"depends on"},{"source":"Task 39","target":"Task 79","name":"depends on"},{"source":"Task 38","target":"Task 103","name":"depends on"},{"source":"Task 122","target":"Task 30","name":"depends on"},{"source":"Task 123","target":"Task 45","name":"depends on"},{"source":"Task 92","target":"Task 148","name":"depends on"},{"source":"Task 147","target":"Task 145","name":"depends on"},{"source":"Task 82","target":"Task 1","name":"depends on"},{"source":"Task 111","target":"Task 25","name":"depends on"},{"source":"Task 44","target":"Task 86","name":"depends on"},{"source":"Task 15","target":"Task 139","name":"depends on"},{"source":"Task 32","target":"Task 89","name":"depends on"}]} \ No newline at end of file
diff --git a/tools/deliverables_generator.js b/tools/deliverables_generator.js
new file mode 100644
index 00000000..c4454609
--- /dev/null
+++ b/tools/deliverables_generator.js
@@ -0,0 +1,41 @@
+var fs = require('fs');
+
+function randomDate(start, end) {
+ return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
+}
+
+function deliverableTest() {
+ links=[];
+ nodes=[];
+ var status = "unknown";
+ var nodecounter = 150;
+
+ var addLink = function (source, target, name) {
+ links.push({source:source, target:target, name:name});
+ };
+
+ for (var i = 0; i < nodecounter; i++) {
+ if (Math.random() > 0.7) status = "done";
+ else if (Math.random() > 0.5) status = "current";
+ else status = "waiting";
+ var end = randomDate(new Date(), new Date("01/01/2018"));
+ var start = randomDate(new Date(), end);
+ nodes.push({id:"Task " + i, name: "Task " + i,
+ type:"deliverable", start:start, end:end,
+ status:'status'});
+ }
+
+ for (var i = 0; i < nodecounter; i++) {
+ var endindex = Math.floor(Math.random() * nodecounter);
+ var startindex = Math.floor(Math.random() * nodecounter);
+ if (nodes[endindex].start > nodes[startindex].start && startindex !== endindex) {
+ addLink("Task " + startindex, "Task " + endindex, "depends on", "perm");
+ } else {
+ addLink("Task " + endindex, "Task " + startindex, "depends on", "perm");
+ }
+ }
+
+ return {nodes:nodes, links:links};
+}
+
+fs.writeFileSync('deliverables.json', JSON.stringify(deliverableTest()));
diff --git a/tools/sage.csv b/tools/sage.csv
new file mode 100644
index 00000000..01ee8017
--- /dev/null
+++ b/tools/sage.csv
@@ -0,0 +1,166 @@
+id,name,dependent on
+1,Kick-off meeting,
+2,Definition of project plan,
+3,Definition of roles and responsibilities,
+4,Agreement on Data sharing modalities,
+5,,
+6,Aim 1 - Screen drugs against merlin-deficient VS and M cells,
+7,Final list of compounds ready,
+8,Assemble 20 to 40 drugs panel,
+9,Drugs in hands,8
+10,QC check on purchased drugs,9
+11,MTA negotiation with companies to secure drug supply,
+12,"Assemble, test growth rates and choose hum Upfront meningioma lines for M screening set ",
+13,Assemble pairs of lines for VS screening set (total 8 lines) Upfront,
+14,Optimize assay conditions,
+15,Primary Screening of 20 to 40 drugs against both M and VS,"14,11,9"
+16,Analysis of data from primary screening,15
+17,Upload of primary screening data into Synapse and report,16
+18,Secondary screening (independent Human M and VS lines) of top drugs,17
+19,Analysis of secondary screening data from secondary screening and interpretation,18
+20,Upload of data into Synapse and reporting - Identification report of active single agents,19
+21,Primary screening of drug combination,"17,58"
+22,Upload of primary screening of combination data into report Synapse and reporting,21
+23,Secondary screening of drug combination,"57,21"
+24,Upload of secondary screening data into Synapse and report - reporting,23
+25,Selection of drug(s)/Combination(s) for invivo screening,23
+26,Analysis of Human vs Mouse cell lines and selection of winner cell line for NCATS screen,"18,58,60,62"
+27,Selection of 'winner' cell line,"26,64"
+28,NCATS screening ,27
+29,NCATS hit evaluation,28
+30,Upload of data into Synapse and reporting,29
+31,NCATS hits in primary (or secondary?) screening panels (?),30
+32,Upload of data into Synapse and reporting,31
+33,,
+34,,
+35,Aim 2 - Collect and Integrate molecular System data to define targets and improve models,
+36,Exome/RNA analysis of human NF2-associated tumor at Novartis,"13,12"
+37,First deposition of data into the Cancer Cell Line Encyclopedia,36
+38,Report on Novartis's activities at project's meetings,36
+39,Report on Novartis's activities at project's meetings,36
+40,Report on Novartis's activities at project's meetings,36
+41,Report on Novartis's activities at project's meetings,36
+42,Report on Novartis's activities at project's meetings,36
+43,,
+44,Availability of data from DoD program at Gusella Lab on Exome scanning and RNAseq of Schwannomas and Meningiomas and upload on Synapse,
+45,Upload of consortium members pre-existing data into Synapse,
+46,Upload of publicly available data into the Synapse,"44, 45"
+47,Transcriptome profile of untreated cell lines (baseline analysis),"12,13"
+48,Upload Cell lines baseline characterization only,"13, 47"
+49,Transcriptome profile of screening lines control vs treated/responders,17
+50,Upload Control vs treated/responsers,49
+51,Transcriptome profile of screening lines control vs treated/responders of drug combination,"49, 24"
+52,Upload Control vs combination's responders,51
+53,Report on transcriptome profiling,52
+54,Jumping Library analysis of structural genomic changes in screening set lines,"12,13"
+55,Report on Jumping Library analysis,54
+56,TC call to decide first 6 cell lines to analyse,
+57,Kinome analysis of cell lines for baseline characterization ,"56,12,13"
+58,Upload of data into Synapse and reporting,57
+59,Kinome analysis of single agent drug responding cell lines,17
+60,Upload of data of single agent drug responding cell lines into Synapse,59
+61,Kinome analysis of combination of drugs responding cell lines,24
+62,Upload of data of combination of drugs responding cell lines into Synapse,61
+63,Report of both single agent and combination responders cell lines,"59, 62"
+64,Analysis of integrated system data,"44,37,46,51"
+65,Report on analysis of integrated system data - Generate report a list of proposed new targets,"64,68,70"
+66,"Target (genes, pathways) validation by shRNA",58
+67,Report on ongoing activities,66
+68,Final Report - ID of new targets for NF2,66
+69,Screening of drugs against validated targets,68
+70,Upload of data into Synapse and reporting,69
+71,Develop CRISP/Cas modified NF2 mutant AC and SC lines,58
+72,Upload of data into Synapse and reporting,71
+73,Develop CRISPR/Cas modified lines bearing cooperating mutations,72
+74,Upload of data into Synapse and reporting,73
+75,Test CRISPR-Cas lines with active drug(s)/combination(s),22
+76,Upload of data into Synapse and reporting,75
+77,RNAseq of genetically mod lines,"65, 72"
+78,Upload of data into Synapse and reporting,77
+79,Creation of a new set of genetically-accurate screening panel for NF2,"75, 74"
+80,Kinome analysis of invivo tumors,90
+81,Upload of data into Synapse and reporting,80
+82,RNAseq analysis of invivo tumors,90
+83,Upload of data into Synapse and reporting,82
+84,,
+85,Aim 3 - Screen drugs invivo in genetically engineered mouse (VS) and xenograft (M) models,
+86,Breeding of PeriostinCre; nf2flox/flox mice,
+87,Report on first year activities,86
+88,Evaluation of single agent responders for animal studies,"50, 60"
+89,Test drug(s)/combination(s) in PeriostinCre; nf2flox/flox mice,"20,88,86"
+90,First invivo drug testing (treatment),89
+91,First invivo drug testing (statistics),90
+92,Upload of data into Synapse and reporting,91
+93,Evaluation of single agent responders for animal studies,"52, 62"
+94,First invivo combination drug testing (treatment),93
+95,First invivo combination drug testing (statistics),94
+96,Upload of data into Synapse and reporting,95
+97,Last invivo drug testing slot (treatment),
+98,Last invivo drug testing (statistics),"89, 97"
+99,Upload of data into Synapse and reporting,98
+100,Colony breeding and stereotactic transplantation studies,
+101,Report on first year activities,100
+102,Evaluation of single agent responsers for animal studies,88
+103,Test drug(s)/combination(s) in BenMen1 xenograft model,"100, 20, 10"
+104,First invivo drug testing,103
+105,Upload of data into Synapse and reporting,104
+106,Evaluation of single agent responders for animal studies,93
+107,First invivo drug testing,106
+108,Upload of data into Synapse and reporting,107
+109,Last invivo drug testing slot,103
+110,Upload of data into Synapse and reporting,109
+111,Prioritize drug(s) for NF2 clinical trials,"80, 82"
+112,Supply human tumors,
+113,Report on first year activities,112
+114,Report on second year activities,113
+115,Final report,112
+116,Supply human tumors to Novartis for transcriptome and exome analysis and generation of transplantable human,
+117,Analysis of human tumors from patients,
+118,Report on first year activities,116
+119,Report on second year activities,118
+120,Neuropathological assessment of mouse model tumors,89
+121,Upload of data into Synapse and Final Reporting,120
+122,Generation of transplantable human xenograft,116
+123,Model available to the community (???),122
+124,,
+125,Aim 4 - Identify at least 1 drug to move forward for a clinical trial,
+126,Evaluation and Design of potential clinical trial(s),111
+127,Clinical trial start,126
+128,,
+129,"Aim 5 - Data Sharing, Dissemination plan and management",
+130,Setting up of Synapse platform (website,
+131,Training of researchers for data input,130
+132,"Data deposition, integration and sharing",131
+133,Report on 1y activities,
+134,Report on 2y activities,133
+135,Final report,132
+136,,
+137,Project Group calls (bi-weekly),
+138,Group call: decision on drug panel,
+139,Group call: decision on first cell lines to investigate for kinome and transcriptome profile,
+140,Group call: pre-existing data on drugs or cell lines to be uploaded in Synapse,
+141,,
+142,,
+143,,
+144,Project Management,
+145,Synodos Meeting (kick-off),
+146,General management,145
+147,Synodos Meeting(NF conference),146
+148,Synodos Meeting (Ext Review committee),146
+149,First Year report,148
+150,Synodos Meeting(NF conference),146
+151,Synodos Meeting (Ext Review committee),146
+152,Second Year report,151
+153,Synodos Meeting(NF conference),146
+154,Synodos Meeting (Ext Review committee),146
+155,Final report,"154,146"
+156,,
+157,,
+158,,
+159,,
+160,,
+161,,
+162,,
+163,,
+164,,
+165,, \ No newline at end of file
diff --git a/tools/sage.json b/tools/sage.json
new file mode 100644
index 00000000..ba97c06a
--- /dev/null
+++ b/tools/sage.json
@@ -0,0 +1 @@
+{"nodes": [{"status": "unknown", "end": 1514844000, "name": "Kick-off meeting", "start": 1514757600, "type": "deliverable", "id": "1"}, {"status": "unknown", "end": 1516831200, "name": "Definition of project plan", "start": 1515362400, "type": "deliverable", "id": "2"}, {"status": "waiting", "end": 1517349600, "name": "Definition of roles and responsibilities", "start": 1515967200, "type": "deliverable", "id": "3"}, {"status": "current", "end": 1517868000, "name": "Agreement on Data sharing modalities", "start": 1516572000, "type": "deliverable", "id": "4"}, {"status": "waiting", "end": 1518386400, "name": "", "start": 1517176800, "type": "deliverable", "id": "5"}, {"status": "current", "end": 1518904800, "name": "Aim 1 - Screen drugs against merlin-deficient VS and M cells", "start": 1517781600, "type": "deliverable", "id": "6"}, {"status": "done", "end": 1519423200, "name": "Final list of compounds ready", "start": 1518386400, "type": "deliverable", "id": "7"}, {"status": "unknown", "end": 1519941600, "name": "Assemble 20 to 40 drugs panel", "start": 1518991200, "type": "deliverable", "id": "8"}, {"status": "unknown", "end": 1520460000, "name": "Drugs in hands", "start": 1519596000, "type": "deliverable", "id": "9"}, {"status": "current", "end": 1520978400, "name": "QC check on purchased drugs", "start": 1520200800, "type": "deliverable", "id": "10"}, {"status": "current", "end": 1521496800, "name": "MTA negotiation with companies to secure drug supply", "start": 1520805600, "type": "deliverable", "id": "11"}, {"status": "waiting", "end": 1522011600, "name": "Assemble, test growth rates and choose hum Upfront meningioma lines for M screening set ", "start": 1521410400, "type": "deliverable", "id": "12"}, {"status": "done", "end": 1522530000, "name": "Assemble pairs of lines for VS screening set (total 8 lines) Upfront", "start": 1522011600, "type": "deliverable", "id": "13"}, {"status": "waiting", "end": 1523048400, "name": "Optimize assay conditions", "start": 1522616400, "type": "deliverable", "id": "14"}, {"status": "waiting", "end": 1523566800, "name": "Primary Screening of 20 to 40 drugs against both M and VS", "start": 1523221200, "type": "deliverable", "id": "15"}, {"status": "done", "end": 1524085200, "name": "Analysis of data from primary screening", "start": 1523826000, "type": "deliverable", "id": "16"}, {"status": "waiting", "end": 1524603600, "name": "Upload of primary screening data into Synapse and report", "start": 1524430800, "type": "deliverable", "id": "17"}, {"status": "current", "end": 1525122000, "name": "Secondary screening (independent Human M and VS lines) of top drugs", "start": 1525035600, "type": "deliverable", "id": "18"}, {"status": "done", "end": 1527109200, "name": "Analysis of secondary screening data from secondary screening and interpretation", "start": 1525640400, "type": "deliverable", "id": "19"}, {"status": "done", "end": 1527627600, "name": "Upload of data into Synapse and reporting - Identification report of active single agents", "start": 1526245200, "type": "deliverable", "id": "20"}, {"status": "done", "end": 1528146000, "name": "Primary screening of drug combination", "start": 1526850000, "type": "deliverable", "id": "21"}, {"status": "waiting", "end": 1528664400, "name": "Upload of primary screening of combination data into report Synapse and reporting", "start": 1527454800, "type": "deliverable", "id": "22"}, {"status": "waiting", "end": 1529182800, "name": "Secondary screening of drug combination", "start": 1528059600, "type": "deliverable", "id": "23"}, {"status": "current", "end": 1529701200, "name": "Upload of secondary screening data into Synapse and report - reporting", "start": 1528664400, "type": "deliverable", "id": "24"}, {"status": "unknown", "end": 1530219600, "name": "Selection of drug(s)/Combination(s) for invivo screening", "start": 1529269200, "type": "deliverable", "id": "25"}, {"status": "current", "end": 1530738000, "name": "Analysis of Human vs Mouse cell lines and selection of winner cell line for NCATS screen", "start": 1529874000, "type": "deliverable", "id": "26"}, {"status": "current", "end": 1531256400, "name": "Selection of 'winner' cell line", "start": 1530478800, "type": "deliverable", "id": "27"}, {"status": "unknown", "end": 1531774800, "name": "NCATS screening ", "start": 1531083600, "type": "deliverable", "id": "28"}, {"status": "waiting", "end": 1532293200, "name": "NCATS hit evaluation", "start": 1531688400, "type": "deliverable", "id": "29"}, {"status": "current", "end": 1532811600, "name": "Upload of data into Synapse and reporting", "start": 1532293200, "type": "deliverable", "id": "30"}, {"status": "unknown", "end": 1533330000, "name": "NCATS hits in primary (or secondary?) screening panels (?)", "start": 1532898000, "type": "deliverable", "id": "31"}, {"status": "done", "end": 1533848400, "name": "Upload of data into Synapse and reporting", "start": 1533502800, "type": "deliverable", "id": "32"}, {"status": "waiting", "end": 1534366800, "name": "", "start": 1534107600, "type": "deliverable", "id": "33"}, {"status": "waiting", "end": 1534885200, "name": "", "start": 1534712400, "type": "deliverable", "id": "34"}, {"status": "unknown", "end": 1535403600, "name": "Aim 2 - Collect and Integrate molecular System data to define targets and improve models", "start": 1535317200, "type": "deliverable", "id": "35"}, {"status": "unknown", "end": 1537390800, "name": "Exome/RNA analysis of human NF2-associated tumor at Novartis", "start": 1535922000, "type": "deliverable", "id": "36"}, {"status": "done", "end": 1537909200, "name": "First deposition of data into the Cancer Cell Line Encyclopedia", "start": 1536526800, "type": "deliverable", "id": "37"}, {"status": "waiting", "end": 1538427600, "name": "Report on Novartis's activities at project's meetings", "start": 1537131600, "type": "deliverable", "id": "38"}, {"status": "done", "end": 1538946000, "name": "Report on Novartis's activities at project's meetings", "start": 1537736400, "type": "deliverable", "id": "39"}, {"status": "unknown", "end": 1539464400, "name": "Report on Novartis's activities at project's meetings", "start": 1538341200, "type": "deliverable", "id": "40"}, {"status": "done", "end": 1539982800, "name": "Report on Novartis's activities at project's meetings", "start": 1538946000, "type": "deliverable", "id": "41"}, {"status": "unknown", "end": 1540501200, "name": "Report on Novartis's activities at project's meetings", "start": 1539550800, "type": "deliverable", "id": "42"}, {"status": "done", "end": 1541023200, "name": "", "start": 1540155600, "type": "deliverable", "id": "43"}, {"status": "current", "end": 1541541600, "name": "Availability of data from DoD program at Gusella Lab on Exome scanning and RNAseq of Schwannomas and Meningiomas and upload on Synapse", "start": 1540764000, "type": "deliverable", "id": "44"}, {"status": "unknown", "end": 1542060000, "name": "Upload of consortium members pre-existing data into Synapse", "start": 1541368800, "type": "deliverable", "id": "45"}, {"status": "unknown", "end": 1542578400, "name": "Upload of publicly available data into the Synapse", "start": 1541973600, "type": "deliverable", "id": "46"}, {"status": "current", "end": 1543096800, "name": "Transcriptome profile of untreated cell lines (baseline analysis)", "start": 1542578400, "type": "deliverable", "id": "47"}, {"status": "current", "end": 1543615200, "name": "Upload Cell lines baseline characterization only", "start": 1543183200, "type": "deliverable", "id": "48"}, {"status": "waiting", "end": 1544133600, "name": "Transcriptome profile of screening lines control vs treated/responders", "start": 1543788000, "type": "deliverable", "id": "49"}, {"status": "waiting", "end": 1544652000, "name": "Upload Control vs treated/responsers", "start": 1544392800, "type": "deliverable", "id": "50"}, {"status": "waiting", "end": 1545170400, "name": "Transcriptome profile of screening lines control vs treated/responders of drug combination", "start": 1544997600, "type": "deliverable", "id": "51"}, {"status": "waiting", "end": 1545688800, "name": "Upload Control vs combination's responders", "start": 1545602400, "type": "deliverable", "id": "52"}, {"status": "unknown", "end": 1547676000, "name": "Report on transcriptome profiling", "start": 1546207200, "type": "deliverable", "id": "53"}, {"status": "done", "end": 1548194400, "name": "Jumping Library analysis of structural genomic changes in screening set lines", "start": 1546812000, "type": "deliverable", "id": "54"}, {"status": "waiting", "end": 1548712800, "name": "Report on Jumping Library analysis", "start": 1547416800, "type": "deliverable", "id": "55"}, {"status": "waiting", "end": 1549231200, "name": "TC call to decide first 6 cell lines to analyse", "start": 1548021600, "type": "deliverable", "id": "56"}, {"status": "current", "end": 1549749600, "name": "Kinome analysis of cell lines for baseline characterization ", "start": 1548626400, "type": "deliverable", "id": "57"}, {"status": "unknown", "end": 1550268000, "name": "Upload of data into Synapse and reporting", "start": 1549231200, "type": "deliverable", "id": "58"}, {"status": "done", "end": 1550786400, "name": "Kinome analysis of single agent drug responding cell lines", "start": 1549836000, "type": "deliverable", "id": "59"}, {"status": "done", "end": 1551304800, "name": "Upload of data of single agent drug responding cell lines into Synapse", "start": 1550440800, "type": "deliverable", "id": "60"}, {"status": "unknown", "end": 1551823200, "name": "Kinome analysis of combination of drugs responding cell lines", "start": 1551045600, "type": "deliverable", "id": "61"}, {"status": "done", "end": 1552341600, "name": "Upload of data of combination of drugs responding cell lines into Synapse", "start": 1551650400, "type": "deliverable", "id": "62"}, {"status": "done", "end": 1552860000, "name": "Report of both single agent and combination responders cell lines", "start": 1552255200, "type": "deliverable", "id": "63"}, {"status": "unknown", "end": 1553378400, "name": "Analysis of integrated system data", "start": 1552860000, "type": "deliverable", "id": "64"}, {"status": "current", "end": 1553893200, "name": "Report on analysis of integrated system data - Generate report a list of proposed new targets", "start": 1553464800, "type": "deliverable", "id": "65"}, {"status": "current", "end": 1554411600, "name": "Target (genes, pathways) validation by shRNA", "start": 1554066000, "type": "deliverable", "id": "66"}, {"status": "done", "end": 1554930000, "name": "Report on ongoing activities", "start": 1554670800, "type": "deliverable", "id": "67"}, {"status": "current", "end": 1555448400, "name": "Final Report - ID of new targets for NF2", "start": 1555275600, "type": "deliverable", "id": "68"}, {"status": "current", "end": 1555966800, "name": "Screening of drugs against validated targets", "start": 1555880400, "type": "deliverable", "id": "69"}, {"status": "unknown", "end": 1557954000, "name": "Upload of data into Synapse and reporting", "start": 1556485200, "type": "deliverable", "id": "70"}, {"status": "current", "end": 1558472400, "name": "Develop CRISP/Cas modified NF2 mutant AC and SC lines", "start": 1557090000, "type": "deliverable", "id": "71"}, {"status": "unknown", "end": 1558990800, "name": "Upload of data into Synapse and reporting", "start": 1557694800, "type": "deliverable", "id": "72"}, {"status": "done", "end": 1559509200, "name": "Develop CRISPR/Cas modified lines bearing cooperating mutations", "start": 1558299600, "type": "deliverable", "id": "73"}, {"status": "current", "end": 1560027600, "name": "Upload of data into Synapse and reporting", "start": 1558904400, "type": "deliverable", "id": "74"}, {"status": "unknown", "end": 1560546000, "name": "Test CRISPR-Cas lines with active drug(s)/combination(s)", "start": 1559509200, "type": "deliverable", "id": "75"}, {"status": "unknown", "end": 1561064400, "name": "Upload of data into Synapse and reporting", "start": 1560114000, "type": "deliverable", "id": "76"}, {"status": "waiting", "end": 1561582800, "name": "RNAseq of genetically mod lines", "start": 1560718800, "type": "deliverable", "id": "77"}, {"status": "unknown", "end": 1562101200, "name": "Upload of data into Synapse and reporting", "start": 1561323600, "type": "deliverable", "id": "78"}, {"status": "current", "end": 1562619600, "name": "Creation of a new set of genetically-accurate screening panel for NF2", "start": 1561928400, "type": "deliverable", "id": "79"}, {"status": "unknown", "end": 1563138000, "name": "Kinome analysis of invivo tumors", "start": 1562533200, "type": "deliverable", "id": "80"}, {"status": "done", "end": 1563656400, "name": "Upload of data into Synapse and reporting", "start": 1563138000, "type": "deliverable", "id": "81"}, {"status": "done", "end": 1564174800, "name": "RNAseq analysis of invivo tumors", "start": 1563742800, "type": "deliverable", "id": "82"}, {"status": "current", "end": 1564693200, "name": "Upload of data into Synapse and reporting", "start": 1564347600, "type": "deliverable", "id": "83"}, {"status": "current", "end": 1565211600, "name": "", "start": 1564952400, "type": "deliverable", "id": "84"}, {"status": "current", "end": 1565730000, "name": "Aim 3 - Screen drugs invivo in genetically engineered mouse (VS) and xenograft (M) models", "start": 1565557200, "type": "deliverable", "id": "85"}, {"status": "waiting", "end": 1566248400, "name": "Breeding of PeriostinCre; nf2flox/flox mice", "start": 1566162000, "type": "deliverable", "id": "86"}, {"status": "done", "end": 1568235600, "name": "Report on first year activities", "start": 1566766800, "type": "deliverable", "id": "87"}, {"status": "waiting", "end": 1568754000, "name": "Evaluation of single agent responders for animal studies", "start": 1567371600, "type": "deliverable", "id": "88"}, {"status": "unknown", "end": 1569272400, "name": "Test drug(s)/combination(s) in PeriostinCre; nf2flox/flox mice", "start": 1567976400, "type": "deliverable", "id": "89"}, {"status": "unknown", "end": 1569790800, "name": "First invivo drug testing (treatment)", "start": 1568581200, "type": "deliverable", "id": "90"}, {"status": "current", "end": 1570309200, "name": "First invivo drug testing (statistics)", "start": 1569186000, "type": "deliverable", "id": "91"}, {"status": "unknown", "end": 1570827600, "name": "Upload of data into Synapse and reporting", "start": 1569790800, "type": "deliverable", "id": "92"}, {"status": "done", "end": 1571346000, "name": "Evaluation of single agent responders for animal studies", "start": 1570395600, "type": "deliverable", "id": "93"}, {"status": "waiting", "end": 1571864400, "name": "First invivo combination drug testing (treatment)", "start": 1571000400, "type": "deliverable", "id": "94"}, {"status": "done", "end": 1572386400, "name": "First invivo combination drug testing (statistics)", "start": 1571605200, "type": "deliverable", "id": "95"}, {"status": "waiting", "end": 1572904800, "name": "Upload of data into Synapse and reporting", "start": 1572213600, "type": "deliverable", "id": "96"}, {"status": "unknown", "end": 1573423200, "name": "Last invivo drug testing slot (treatment)", "start": 1572818400, "type": "deliverable", "id": "97"}, {"status": "done", "end": 1573941600, "name": "Last invivo drug testing (statistics)", "start": 1573423200, "type": "deliverable", "id": "98"}, {"status": "waiting", "end": 1574460000, "name": "Upload of data into Synapse and reporting", "start": 1574028000, "type": "deliverable", "id": "99"}, {"status": "unknown", "end": 1574978400, "name": "Colony breeding and stereotactic transplantation studies", "start": 1574632800, "type": "deliverable", "id": "100"}, {"status": "done", "end": 1575496800, "name": "Report on first year activities", "start": 1575237600, "type": "deliverable", "id": "101"}, {"status": "unknown", "end": 1576015200, "name": "Evaluation of single agent responsers for animal studies", "start": 1575842400, "type": "deliverable", "id": "102"}, {"status": "done", "end": 1576533600, "name": "Test drug(s)/combination(s) in BenMen1 xenograft model", "start": 1576447200, "type": "deliverable", "id": "103"}, {"status": "unknown", "end": 1578520800, "name": "First invivo drug testing", "start": 1577052000, "type": "deliverable", "id": "104"}, {"status": "current", "end": 1579039200, "name": "Upload of data into Synapse and reporting", "start": 1577656800, "type": "deliverable", "id": "105"}, {"status": "waiting", "end": 1579557600, "name": "Evaluation of single agent responders for animal studies", "start": 1578261600, "type": "deliverable", "id": "106"}, {"status": "current", "end": 1580076000, "name": "First invivo drug testing", "start": 1578866400, "type": "deliverable", "id": "107"}, {"status": "done", "end": 1580594400, "name": "Upload of data into Synapse and reporting", "start": 1579471200, "type": "deliverable", "id": "108"}, {"status": "current", "end": 1581112800, "name": "Last invivo drug testing slot", "start": 1580076000, "type": "deliverable", "id": "109"}, {"status": "unknown", "end": 1581631200, "name": "Upload of data into Synapse and reporting", "start": 1580680800, "type": "deliverable", "id": "110"}, {"status": "current", "end": 1582149600, "name": "Prioritize drug(s) for NF2 clinical trials", "start": 1581285600, "type": "deliverable", "id": "111"}, {"status": "done", "end": 1582668000, "name": "Supply human tumors", "start": 1581890400, "type": "deliverable", "id": "112"}, {"status": "unknown", "end": 1583186400, "name": "Report on first year activities", "start": 1582495200, "type": "deliverable", "id": "113"}, {"status": "current", "end": 1583704800, "name": "Report on second year activities", "start": 1583100000, "type": "deliverable", "id": "114"}, {"status": "current", "end": 1584223200, "name": "Final report", "start": 1583704800, "type": "deliverable", "id": "115"}, {"status": "waiting", "end": 1584741600, "name": "Supply human tumors to Novartis for transcriptome and exome analysis and generation of transplantable human", "start": 1584309600, "type": "deliverable", "id": "116"}, {"status": "waiting", "end": 1585260000, "name": "Analysis of human tumors from patients", "start": 1584914400, "type": "deliverable", "id": "117"}, {"status": "unknown", "end": 1585774800, "name": "Report on first year activities", "start": 1585515600, "type": "deliverable", "id": "118"}, {"status": "waiting", "end": 1586293200, "name": "Report on second year activities", "start": 1586120400, "type": "deliverable", "id": "119"}, {"status": "waiting", "end": 1586811600, "name": "Neuropathological assessment of mouse model tumors", "start": 1586725200, "type": "deliverable", "id": "120"}, {"status": "current", "end": 1588798800, "name": "Upload of data into Synapse and Final Reporting", "start": 1587330000, "type": "deliverable", "id": "121"}, {"status": "waiting", "end": 1589317200, "name": "Generation of transplantable human xenograft", "start": 1587934800, "type": "deliverable", "id": "122"}, {"status": "done", "end": 1589835600, "name": "Model available to the community (???)", "start": 1588539600, "type": "deliverable", "id": "123"}, {"status": "unknown", "end": 1590354000, "name": "", "start": 1589144400, "type": "deliverable", "id": "124"}, {"status": "unknown", "end": 1590872400, "name": "Aim 4 - Identify at least 1 drug to move forward for a clinical trial", "start": 1589749200, "type": "deliverable", "id": "125"}, {"status": "done", "end": 1591390800, "name": "Evaluation and Design of potential clinical trial(s)", "start": 1590354000, "type": "deliverable", "id": "126"}, {"status": "unknown", "end": 1591909200, "name": "Clinical trial start", "start": 1590958800, "type": "deliverable", "id": "127"}, {"status": "unknown", "end": 1592427600, "name": "", "start": 1591563600, "type": "deliverable", "id": "128"}, {"status": "waiting", "end": 1592946000, "name": "Aim 5 - Data Sharing, Dissemination plan and management", "start": 1592168400, "type": "deliverable", "id": "129"}, {"status": "unknown", "end": 1593464400, "name": "Setting up of Synapse platform (website", "start": 1592773200, "type": "deliverable", "id": "130"}, {"status": "unknown", "end": 1593982800, "name": "Training of researchers for data input", "start": 1593378000, "type": "deliverable", "id": "131"}, {"status": "done", "end": 1594501200, "name": "Data deposition, integration and sharing", "start": 1593982800, "type": "deliverable", "id": "132"}, {"status": "waiting", "end": 1595019600, "name": "Report on 1y activities", "start": 1594587600, "type": "deliverable", "id": "133"}, {"status": "unknown", "end": 1595538000, "name": "Report on 2y activities", "start": 1595192400, "type": "deliverable", "id": "134"}, {"status": "waiting", "end": 1596056400, "name": "Final report", "start": 1595797200, "type": "deliverable", "id": "135"}, {"status": "waiting", "end": 1596574800, "name": "", "start": 1596402000, "type": "deliverable", "id": "136"}, {"status": "done", "end": 1597093200, "name": "Project Group calls (bi-weekly)", "start": 1597006800, "type": "deliverable", "id": "137"}, {"status": "done", "end": 1599080400, "name": "Group call: decision on drug panel", "start": 1597611600, "type": "deliverable", "id": "138"}, {"status": "current", "end": 1599598800, "name": "Group call: decision on first cell lines to investigate for kinome and transcriptome profile", "start": 1598216400, "type": "deliverable", "id": "139"}, {"status": "done", "end": 1600117200, "name": "Group call: pre-existing data on drugs or cell lines to be uploaded in Synapse", "start": 1598821200, "type": "deliverable", "id": "140"}, {"status": "unknown", "end": 1600635600, "name": "", "start": 1599426000, "type": "deliverable", "id": "141"}, {"status": "waiting", "end": 1601154000, "name": "", "start": 1600030800, "type": "deliverable", "id": "142"}, {"status": "done", "end": 1601672400, "name": "", "start": 1600635600, "type": "deliverable", "id": "143"}, {"status": "current", "end": 1602190800, "name": "Project Management", "start": 1601240400, "type": "deliverable", "id": "144"}, {"status": "current", "end": 1602709200, "name": "Synodos Meeting (kick-off)", "start": 1601845200, "type": "deliverable", "id": "145"}, {"status": "current", "end": 1603227600, "name": "General management", "start": 1602450000, "type": "deliverable", "id": "146"}, {"status": "waiting", "end": 1603749600, "name": "Synodos Meeting(NF conference)", "start": 1603054800, "type": "deliverable", "id": "147"}, {"status": "unknown", "end": 1604268000, "name": "Synodos Meeting (Ext Review committee)", "start": 1603663200, "type": "deliverable", "id": "148"}, {"status": "current", "end": 1604786400, "name": "First Year report", "start": 1604268000, "type": "deliverable", "id": "149"}, {"status": "done", "end": 1605304800, "name": "Synodos Meeting(NF conference)", "start": 1604872800, "type": "deliverable", "id": "150"}, {"status": "done", "end": 1605823200, "name": "Synodos Meeting (Ext Review committee)", "start": 1605477600, "type": "deliverable", "id": "151"}, {"status": "current", "end": 1606341600, "name": "Second Year report", "start": 1606082400, "type": "deliverable", "id": "152"}, {"status": "waiting", "end": 1606860000, "name": "Synodos Meeting(NF conference)", "start": 1606687200, "type": "deliverable", "id": "153"}, {"status": "current", "end": 1607378400, "name": "Synodos Meeting (Ext Review committee)", "start": 1607292000, "type": "deliverable", "id": "154"}, {"status": "current", "end": 1609365600, "name": "Final report", "start": 1607896800, "type": "deliverable", "id": "155"}, {"status": "current", "end": 1609884000, "name": "", "start": 1608501600, "type": "deliverable", "id": "156"}, {"status": "current", "end": 1610402400, "name": "", "start": 1609106400, "type": "deliverable", "id": "157"}, {"status": "waiting", "end": 1610920800, "name": "", "start": 1609711200, "type": "deliverable", "id": "158"}, {"status": "current", "end": 1611439200, "name": "", "start": 1610316000, "type": "deliverable", "id": "159"}, {"status": "unknown", "end": 1611957600, "name": "", "start": 1610920800, "type": "deliverable", "id": "160"}, {"status": "current", "end": 1612476000, "name": "", "start": 1611525600, "type": "deliverable", "id": "161"}, {"status": "unknown", "end": 1612994400, "name": "", "start": 1612130400, "type": "deliverable", "id": "162"}, {"status": "waiting", "end": 1613512800, "name": "", "start": 1612735200, "type": "deliverable", "id": "163"}, {"status": "unknown", "end": 1614031200, "name": "", "start": 1613340000, "type": "deliverable", "id": "164"}, {"status": "done", "end": 1614549600, "name": "", "start": 1613944800, "type": "deliverable", "id": "165"}], "links": [{"source": "1", "target": "", "name": "depends on"}, {"source": "2", "target": "", "name": "depends on"}, {"source": "3", "target": "", "name": "depends on"}, {"source": "4", "target": "", "name": "depends on"}, {"source": "5", "target": "", "name": "depends on"}, {"source": "6", "target": "", "name": "depends on"}, {"source": "7", "target": "", "name": "depends on"}, {"source": "8", "target": "", "name": "depends on"}, {"source": "9", "target": "8", "name": "depends on"}, {"source": "10", "target": "9", "name": "depends on"}, {"source": "11", "target": "", "name": "depends on"}, {"source": "12", "target": "", "name": "depends on"}, {"source": "13", "target": "", "name": "depends on"}, {"source": "14", "target": "", "name": "depends on"}, {"source": "15", "target": "14", "name": "depends on"}, {"source": "15", "target": "11", "name": "depends on"}, {"source": "15", "target": "9", "name": "depends on"}, {"source": "16", "target": "15", "name": "depends on"}, {"source": "17", "target": "16", "name": "depends on"}, {"source": "18", "target": "17", "name": "depends on"}, {"source": "19", "target": "18", "name": "depends on"}, {"source": "20", "target": "19", "name": "depends on"}, {"source": "21", "target": "17", "name": "depends on"}, {"source": "21", "target": "58", "name": "depends on"}, {"source": "22", "target": "21", "name": "depends on"}, {"source": "23", "target": "57", "name": "depends on"}, {"source": "23", "target": "21", "name": "depends on"}, {"source": "24", "target": "23", "name": "depends on"}, {"source": "25", "target": "23", "name": "depends on"}, {"source": "26", "target": "18", "name": "depends on"}, {"source": "26", "target": "58", "name": "depends on"}, {"source": "26", "target": "60", "name": "depends on"}, {"source": "26", "target": "62", "name": "depends on"}, {"source": "27", "target": "26", "name": "depends on"}, {"source": "27", "target": "64", "name": "depends on"}, {"source": "28", "target": "27", "name": "depends on"}, {"source": "29", "target": "28", "name": "depends on"}, {"source": "30", "target": "29", "name": "depends on"}, {"source": "31", "target": "30", "name": "depends on"}, {"source": "32", "target": "31", "name": "depends on"}, {"source": "33", "target": "", "name": "depends on"}, {"source": "34", "target": "", "name": "depends on"}, {"source": "35", "target": "", "name": "depends on"}, {"source": "36", "target": "13", "name": "depends on"}, {"source": "36", "target": "12", "name": "depends on"}, {"source": "37", "target": "36", "name": "depends on"}, {"source": "38", "target": "36", "name": "depends on"}, {"source": "39", "target": "36", "name": "depends on"}, {"source": "40", "target": "36", "name": "depends on"}, {"source": "41", "target": "36", "name": "depends on"}, {"source": "42", "target": "36", "name": "depends on"}, {"source": "43", "target": "", "name": "depends on"}, {"source": "44", "target": "", "name": "depends on"}, {"source": "45", "target": "", "name": "depends on"}, {"source": "46", "target": "44", "name": "depends on"}, {"source": "46", "target": " 45", "name": "depends on"}, {"source": "47", "target": "12", "name": "depends on"}, {"source": "47", "target": "13", "name": "depends on"}, {"source": "48", "target": "13", "name": "depends on"}, {"source": "48", "target": " 47", "name": "depends on"}, {"source": "49", "target": "17", "name": "depends on"}, {"source": "50", "target": "49", "name": "depends on"}, {"source": "51", "target": "49", "name": "depends on"}, {"source": "51", "target": " 24", "name": "depends on"}, {"source": "52", "target": "51", "name": "depends on"}, {"source": "53", "target": "52", "name": "depends on"}, {"source": "54", "target": "12", "name": "depends on"}, {"source": "54", "target": "13", "name": "depends on"}, {"source": "55", "target": "54", "name": "depends on"}, {"source": "56", "target": "", "name": "depends on"}, {"source": "57", "target": "56", "name": "depends on"}, {"source": "57", "target": "12", "name": "depends on"}, {"source": "57", "target": "13", "name": "depends on"}, {"source": "58", "target": "57", "name": "depends on"}, {"source": "59", "target": "17", "name": "depends on"}, {"source": "60", "target": "59", "name": "depends on"}, {"source": "61", "target": "24", "name": "depends on"}, {"source": "62", "target": "61", "name": "depends on"}, {"source": "63", "target": "59", "name": "depends on"}, {"source": "63", "target": " 62", "name": "depends on"}, {"source": "64", "target": "44", "name": "depends on"}, {"source": "64", "target": "37", "name": "depends on"}, {"source": "64", "target": "46", "name": "depends on"}, {"source": "64", "target": "51", "name": "depends on"}, {"source": "65", "target": "64", "name": "depends on"}, {"source": "65", "target": "68", "name": "depends on"}, {"source": "65", "target": "70", "name": "depends on"}, {"source": "66", "target": "58", "name": "depends on"}, {"source": "67", "target": "66", "name": "depends on"}, {"source": "68", "target": "66", "name": "depends on"}, {"source": "69", "target": "68", "name": "depends on"}, {"source": "70", "target": "69", "name": "depends on"}, {"source": "71", "target": "58", "name": "depends on"}, {"source": "72", "target": "71", "name": "depends on"}, {"source": "73", "target": "72", "name": "depends on"}, {"source": "74", "target": "73", "name": "depends on"}, {"source": "75", "target": "22", "name": "depends on"}, {"source": "76", "target": "75", "name": "depends on"}, {"source": "77", "target": "65", "name": "depends on"}, {"source": "77", "target": " 72", "name": "depends on"}, {"source": "78", "target": "77", "name": "depends on"}, {"source": "79", "target": "75", "name": "depends on"}, {"source": "79", "target": " 74", "name": "depends on"}, {"source": "80", "target": "90", "name": "depends on"}, {"source": "81", "target": "80", "name": "depends on"}, {"source": "82", "target": "90", "name": "depends on"}, {"source": "83", "target": "82", "name": "depends on"}, {"source": "84", "target": "", "name": "depends on"}, {"source": "85", "target": "", "name": "depends on"}, {"source": "86", "target": "", "name": "depends on"}, {"source": "87", "target": "86", "name": "depends on"}, {"source": "88", "target": "50", "name": "depends on"}, {"source": "88", "target": " 60", "name": "depends on"}, {"source": "89", "target": "20", "name": "depends on"}, {"source": "89", "target": "88", "name": "depends on"}, {"source": "89", "target": "86", "name": "depends on"}, {"source": "90", "target": "89", "name": "depends on"}, {"source": "91", "target": "90", "name": "depends on"}, {"source": "92", "target": "91", "name": "depends on"}, {"source": "93", "target": "52", "name": "depends on"}, {"source": "93", "target": " 62", "name": "depends on"}, {"source": "94", "target": "93", "name": "depends on"}, {"source": "95", "target": "94", "name": "depends on"}, {"source": "96", "target": "95", "name": "depends on"}, {"source": "97", "target": "", "name": "depends on"}, {"source": "98", "target": "89", "name": "depends on"}, {"source": "98", "target": " 97", "name": "depends on"}, {"source": "99", "target": "98", "name": "depends on"}, {"source": "100", "target": "", "name": "depends on"}, {"source": "101", "target": "100", "name": "depends on"}, {"source": "102", "target": "88", "name": "depends on"}, {"source": "103", "target": "100", "name": "depends on"}, {"source": "103", "target": " 20", "name": "depends on"}, {"source": "103", "target": " 10", "name": "depends on"}, {"source": "104", "target": "103", "name": "depends on"}, {"source": "105", "target": "104", "name": "depends on"}, {"source": "106", "target": "93", "name": "depends on"}, {"source": "107", "target": "106", "name": "depends on"}, {"source": "108", "target": "107", "name": "depends on"}, {"source": "109", "target": "103", "name": "depends on"}, {"source": "110", "target": "109", "name": "depends on"}, {"source": "111", "target": "80", "name": "depends on"}, {"source": "111", "target": " 82", "name": "depends on"}, {"source": "112", "target": "", "name": "depends on"}, {"source": "113", "target": "112", "name": "depends on"}, {"source": "114", "target": "113", "name": "depends on"}, {"source": "115", "target": "112", "name": "depends on"}, {"source": "116", "target": "", "name": "depends on"}, {"source": "117", "target": "", "name": "depends on"}, {"source": "118", "target": "116", "name": "depends on"}, {"source": "119", "target": "118", "name": "depends on"}, {"source": "120", "target": "89", "name": "depends on"}, {"source": "121", "target": "120", "name": "depends on"}, {"source": "122", "target": "116", "name": "depends on"}, {"source": "123", "target": "122", "name": "depends on"}, {"source": "124", "target": "", "name": "depends on"}, {"source": "125", "target": "", "name": "depends on"}, {"source": "126", "target": "111", "name": "depends on"}, {"source": "127", "target": "126", "name": "depends on"}, {"source": "128", "target": "", "name": "depends on"}, {"source": "129", "target": "", "name": "depends on"}, {"source": "130", "target": "", "name": "depends on"}, {"source": "131", "target": "130", "name": "depends on"}, {"source": "132", "target": "131", "name": "depends on"}, {"source": "133", "target": "", "name": "depends on"}, {"source": "134", "target": "133", "name": "depends on"}, {"source": "135", "target": "132", "name": "depends on"}, {"source": "136", "target": "", "name": "depends on"}, {"source": "137", "target": "", "name": "depends on"}, {"source": "138", "target": "", "name": "depends on"}, {"source": "139", "target": "", "name": "depends on"}, {"source": "140", "target": "", "name": "depends on"}, {"source": "141", "target": "", "name": "depends on"}, {"source": "142", "target": "", "name": "depends on"}, {"source": "143", "target": "", "name": "depends on"}, {"source": "144", "target": "", "name": "depends on"}, {"source": "145", "target": "", "name": "depends on"}, {"source": "146", "target": "145", "name": "depends on"}, {"source": "147", "target": "146", "name": "depends on"}, {"source": "148", "target": "146", "name": "depends on"}, {"source": "149", "target": "148", "name": "depends on"}, {"source": "150", "target": "146", "name": "depends on"}, {"source": "151", "target": "146", "name": "depends on"}, {"source": "152", "target": "151", "name": "depends on"}, {"source": "153", "target": "146", "name": "depends on"}, {"source": "154", "target": "146", "name": "depends on"}, {"source": "155", "target": "154", "name": "depends on"}, {"source": "155", "target": "146", "name": "depends on"}, {"source": "156", "target": "", "name": "depends on"}, {"source": "157", "target": "", "name": "depends on"}, {"source": "158", "target": "", "name": "depends on"}, {"source": "159", "target": "", "name": "depends on"}, {"source": "160", "target": "", "name": "depends on"}, {"source": "161", "target": "", "name": "depends on"}, {"source": "162", "target": "", "name": "depends on"}, {"source": "163", "target": "", "name": "depends on"}, {"source": "164", "target": "", "name": "depends on"}, {"source": "165", "target": "", "name": "depends on"}]} \ No newline at end of file
diff --git a/tools/sage_csv_to_sage_json.py b/tools/sage_csv_to_sage_json.py
new file mode 100755
index 00000000..b89670ab
--- /dev/null
+++ b/tools/sage_csv_to_sage_json.py
@@ -0,0 +1,78 @@
+#!/bin/env python
+
+"""
+Convert sage.csv to a loadable file. Here is our current 'file format':
+
+json dictionary with two keys:
+'nodes' is a list of dictionaries, each containing
+'state': 'perm' (should not be required, try without it)
+'id': must be unique
+'name': display only (will be used as id if it is missing, true that?)
+'type': for gannt should be 'deliverable'
+'start': a date for 'deliverable' typed nodes
+'end': a date for 'deliverable' typed nodes
+'status': one of 'done', 'current', 'waiting' for 'deliverable' type
+
+'links is a list of dictionaries with mandatory keys:
+'name'
+'source': id (string)
+'target' id (string)
+"""
+import json
+import csv
+import random
+from datetime import datetime, timedelta
+from time import mktime
+
+class MyEncoder(json.JSONEncoder):
+
+ def default(self, obj):
+ if isinstance(obj, datetime):
+ return int(mktime(obj.timetuple()))
+ return json.JSONEncoder.default(self, obj)
+
+def write_json(output_filename, nodes, links):
+ seen_ids = set()
+ assert(type(nodes) == list)
+ assert(type(links) == list)
+ for node in nodes:
+ assert(type(node) == dict)
+ assert('id' in node)
+ assert(node['id'] not in seen_ids)
+ seen_ids.add(node['id'])
+ assert('name' in node)
+ for link in links:
+ assert(type(link) == dict)
+ assert('name' in link)
+ assert('source' in link)
+ assert('target' in link)
+ with open(output_filename, 'w+') as fd:
+
+ json.dump({'nodes': nodes, 'links':links}, fd,
+ cls=MyEncoder)
+
+def read_sage_csv():
+ week = timedelta(days=7)
+ day = timedelta(days=1)
+ all_start = datetime(year=2018, month=1, day=1)
+ lines = list(csv.reader(open('sage.csv')))
+ assert(['id', 'name', 'dependent on'] == lines[0])
+ del lines[0]
+ nodes = [{'id': num, 'name': desc,
+ 'type': 'deliverable',
+ 'start': all_start + week * i,
+ 'end': all_start + week * i + day * (((i * 33) % 17) + 1),
+ 'status': random.choice(['unknown', 'done', 'current', 'waiting']),
+ } for i, (num, desc, _) in enumerate(lines)]
+ links = []
+ for num, desc, deps in lines:
+ deps = deps.split(',')
+ if len(deps) == 0:
+ continue
+ for dep in deps:
+ links.append({'source': num, 'target': dep, 'name': 'depends on'})
+ return nodes, links
+
+if __name__ == '__main__':
+ nodes, links = read_sage_csv()
+ write_json('sage.json', nodes, links)