{"action":"created","issue":{"url":"https://api.github.com/repos/ga4gh/server/issues/279","labels_url":"https://api.github.com/repos/ga4gh/server/issues/279/labels{/name}","comments_url":"https://api.github.com/repos/ga4gh/server/issues/279/comments","events_url":"https://api.github.com/repos/ga4gh/server/issues/279/events","html_url":"https://github.com/ga4gh/server/pull/279","id":64051677,"number":279,"title":"validation POC","user":{"login":"dcolligan","id":7422120,"avatar_url":"https://avatars.githubusercontent.com/u/7422120?v=3","gravatar_id":"","url":"https://api.github.com/users/dcolligan","html_url":"https://github.com/dcolligan","followers_url":"https://api.github.com/users/dcolligan/followers","following_url":"https://api.github.com/users/dcolligan/following{/other_user}","gists_url":"https://api.github.com/users/dcolligan/gists{/gist_id}","starred_url":"https://api.github.com/users/dcolligan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcolligan/subscriptions","organizations_url":"https://api.github.com/users/dcolligan/orgs","repos_url":"https://api.github.com/users/dcolligan/repos","events_url":"https://api.github.com/users/dcolligan/events{/privacy}","received_events_url":"https://api.github.com/users/dcolligan/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-03-24T17:18:23Z","updated_at":"2015-03-25T18:07:15Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ga4gh/server/pulls/279","html_url":"https://github.com/ga4gh/server/pull/279","diff_url":"https://github.com/ga4gh/server/pull/279.diff","patch_url":"https://github.com/ga4gh/server/pull/279.patch"},"body":"Issue #271"},"comment":{"url":"https://api.github.com/repos/ga4gh/server/issues/comments/86152819","html_url":"https://github.com/ga4gh/server/pull/279#issuecomment-86152819","issue_url":"https://api.github.com/repos/ga4gh/server/issues/279","id":86152819,"user":{"login":"dcolligan","id":7422120,"avatar_url":"https://avatars.githubusercontent.com/u/7422120?v=3","gravatar_id":"","url":"https://api.github.com/users/dcolligan","html_url":"https://github.com/dcolligan","followers_url":"https://api.github.com/users/dcolligan/followers","following_url":"https://api.github.com/users/dcolligan/following{/other_user}","gists_url":"https://api.github.com/users/dcolligan/gists{/gist_id}","starred_url":"https://api.github.com/users/dcolligan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcolligan/subscriptions","organizations_url":"https://api.github.com/users/dcolligan/orgs","repos_url":"https://api.github.com/users/dcolligan/repos","events_url":"https://api.github.com/users/dcolligan/events{/privacy}","received_events_url":"https://api.github.com/users/dcolligan/received_events","type":"User","site_admin":false},"created_at":"2015-03-25T18:07:15Z","updated_at":"2015-03-25T18:07:15Z","body":"Ok, so let's just solve the issue of sanitization in this PR.\r\n\r\nThis still leaves unanswered what the interface for that should be.  Putting this functionality in the `datamodel` hierarchy doesn't feel right to me.  What we're essentially asking for is a layer for the input data to pass through before it hits pysam, and pysam can be used in any number of places.\r\n\r\nOne heavyweight approach would be to wrap pysam in some module like `pysamwrapper` and then do the sanitization in that module.\r\n\r\nAnother, which I think I prefer, is to have some class like `PysamSanitizer` that provides class methods to sanitize data.  Of course, the downside of this would be that one might not remember to use it in the future before invoking pysam...\r\n\r\nThoughts?"}}