{"action":"created","issue":{"url":"https://api.github.com/repos/cmap/cmapPy/issues/8","repository_url":"https://api.github.com/repos/cmap/cmapPy","labels_url":"https://api.github.com/repos/cmap/cmapPy/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/cmap/cmapPy/issues/8/comments","events_url":"https://api.github.com/repos/cmap/cmapPy/issues/8/events","html_url":"https://github.com/cmap/cmapPy/pull/8","id":249067146,"number":8,"title":"gmt.py","user":{"login":"levlitichev","id":9857827,"avatar_url":"https://avatars0.githubusercontent.com/u/9857827?v=4","gravatar_id":"","url":"https://api.github.com/users/levlitichev","html_url":"https://github.com/levlitichev","followers_url":"https://api.github.com/users/levlitichev/followers","following_url":"https://api.github.com/users/levlitichev/following{/other_user}","gists_url":"https://api.github.com/users/levlitichev/gists{/gist_id}","starred_url":"https://api.github.com/users/levlitichev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/levlitichev/subscriptions","organizations_url":"https://api.github.com/users/levlitichev/orgs","repos_url":"https://api.github.com/users/levlitichev/repos","events_url":"https://api.github.com/users/levlitichev/events{/privacy}","received_events_url":"https://api.github.com/users/levlitichev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2017-08-09T15:19:32Z","updated_at":"2017-08-09T17:40:13Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/cmap/cmapPy/pulls/8","html_url":"https://github.com/cmap/cmapPy/pull/8","diff_url":"https://github.com/cmap/cmapPy/pull/8.diff","patch_url":"https://github.com/cmap/cmapPy/pull/8.patch"},"body":"Added a module for parsing GMTs. I need to parse a GMT for changes I want to make to evaluate_sets.py, and I figured it would be worth adding here while I'm at it.\r\n\r\nI followed Corey's model of representing GMTs: a GMT is a list of dictionaries, where each dictionary corresponds to each line of the GMT file, and each dictionary has the following fields: head, desc, entry (paralleling Matlab).\r\n\r\nLet me know what you guys think. (There are a few other minor changes in this pull request as well.)"},"comment":{"url":"https://api.github.com/repos/cmap/cmapPy/issues/comments/321327929","html_url":"https://github.com/cmap/cmapPy/pull/8#issuecomment-321327929","issue_url":"https://api.github.com/repos/cmap/cmapPy/issues/8","id":321327929,"user":{"login":"oena","id":8075503,"avatar_url":"https://avatars0.githubusercontent.com/u/8075503?v=4","gravatar_id":"","url":"https://api.github.com/users/oena","html_url":"https://github.com/oena","followers_url":"https://api.github.com/users/oena/followers","following_url":"https://api.github.com/users/oena/following{/other_user}","gists_url":"https://api.github.com/users/oena/gists{/gist_id}","starred_url":"https://api.github.com/users/oena/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oena/subscriptions","organizations_url":"https://api.github.com/users/oena/orgs","repos_url":"https://api.github.com/users/oena/repos","events_url":"https://api.github.com/users/oena/events{/privacy}","received_events_url":"https://api.github.com/users/oena/received_events","type":"User","site_admin":false},"created_at":"2017-08-09T17:40:12Z","updated_at":"2017-08-09T17:40:12Z","body":"And, while we're having philosophical discussions-- \r\n\r\n@levlitichev and I were just talking about whether the (current) list of dictionaries structure is really the best data structure to use for these. So that we're all on the same page/can discuss more widely, the pros and cons we found were:  \r\n\r\nPros (keep it the way it is): \r\n- Compatible with other code in pestle already \r\n- Not thaaaat complicated \r\n- Easy to add, because it for the most part was already written \r\n\r\nCons (change it): \r\n- I think that, given that a GMT is a unique ID pointing to (1) a list of genes and (2) a description of the gene set, it would make more logical sense for a GMT to be structured as a dict where keys are UIDs and values are a tuple (for instance, where 0 = gene list and 1=description). Feel free to disagree, but I think it provides all the functionality we need (example: can get all the IDs more easily) and is a more straightforward use of the dictionary data structure. \r\n- While I see the value in keeping new things compatible with old, I'm not convinced it's enough justification in itself to not improve on the old when we're reviewing it anyway. \r\n\r\nThoughts? Lev, feel free to revise anything I got wrong. \r\n"}}
{"actor":{"display_login":"oena"}}