{"action":"created","comment":{"url":"https://api.github.com/repos/antha-lang/antha/pulls/comments/218067692","pull_request_review_id":155916274,"id":218067692,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxODA2NzY5Mg==","diff_hunk":"@@ -1746,6 +1744,103 @@ func (ins *SuckInstruction) GetParameter(name InstructionParameter) interface{}\n \t}\n }\n \n+func (ins *SuckInstruction) getInitialVolumesByWell() map[string]wunit.Volume {\n+\tret := make(map[string]wunit.Volume, ins.Multi)\n+\tfor i, well := range ins.WellFrom {\n+\t\t//overwrite, since these should be the same for each well\n+\t\tret[well] = wunit.CopyVolume(ins.FVolume[i])\n+\t}\n+\treturn ret\n+}\n+\n+func (ins *SuckInstruction) getRemovedVolumesByWell() map[string]wunit.Volume {\n+\tret := make(map[string]wunit.Volume, ins.Multi)\n+\tfor i, well := range ins.WellFrom {\n+\t\tif _, ok := ret[well]; !ok {\n+\t\t\tret[well] = wunit.CopyVolume(ins.Volume[i])\n+\t\t} else {\n+\t\t\tret[well].IncrBy(ins.Volume[i]) //nolint - since volume units are all compatible\n+\t\t}\n+\t}\n+\treturn ret\n+}\n+\n+func (ins *SuckInstruction) getFinalVolumesByWell() map[string]wunit.Volume {\n+\tret := make(map[string]wunit.Volume, ins.Multi)\n+\tinitial := ins.getInitialVolumesByWell()\n+\tremoved := ins.getRemovedVolumesByWell()\n+\tfor _, well := range ins.WellFrom {\n+\t\tret[well] = wunit.SubtractVolumes(initial[well], removed[well])\n+\t}\n+\treturn ret\n+}\n+\n+func (ins *SuckInstruction) getAspirate(volumes []wunit.Volume, useLLF []bool) RobotInstruction {\n+\taspins := NewAspirateInstruction()\n+\taspins.Head = ins.Head\n+\taspins.Multi = ins.Multi\n+\taspins.Overstroke = ins.Overstroke\n+\taspins.What = ins.What\n+\taspins.Plt = ins.FPlateType\n+\n+\tfor _, vol := range volumes {\n+\t\taspins.Volume = append(aspins.Volume, wunit.CopyVolume(vol))\n+\t}\n+\taspins.LLF = append(aspins.LLF, useLLF...)\n+\tfor len(aspins.LLF) < aspins.Multi {\n+\t\taspins.LLF = append(aspins.LLF, false)","path":"microArch/driver/liquidhandling/compositerobotinstruction.go","position":64,"original_position":64,"commit_id":"eda6bfb3a5c65b470075632387fedc9931b9fc38","original_commit_id":"eda6bfb3a5c65b470075632387fedc9931b9fc38","user":{"login":"msackman-synthace","id":40759484,"node_id":"MDQ6VXNlcjQwNzU5NDg0","avatar_url":"https://avatars0.githubusercontent.com/u/40759484?v=4","gravatar_id":"","url":"https://api.github.com/users/msackman-synthace","html_url":"https://github.com/msackman-synthace","followers_url":"https://api.github.com/users/msackman-synthace/followers","following_url":"https://api.github.com/users/msackman-synthace/following{/other_user}","gists_url":"https://api.github.com/users/msackman-synthace/gists{/gist_id}","starred_url":"https://api.github.com/users/msackman-synthace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msackman-synthace/subscriptions","organizations_url":"https://api.github.com/users/msackman-synthace/orgs","repos_url":"https://api.github.com/users/msackman-synthace/repos","events_url":"https://api.github.com/users/msackman-synthace/events{/privacy}","received_events_url":"https://api.github.com/users/msackman-synthace/received_events","type":"User","site_admin":false},"body":"how come you append to LLF to make sure it's at least as long as Multi (though it could also be longer), but you don't treat Volume the same way?","created_at":"2018-09-17T13:28:39Z","updated_at":"2018-09-17T13:39:51Z","html_url":"https://github.com/antha-lang/antha/pull/900#discussion_r218067692","pull_request_url":"https://api.github.com/repos/antha-lang/antha/pulls/900","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/antha-lang/antha/pulls/comments/218067692"},"html":{"href":"https://github.com/antha-lang/antha/pull/900#discussion_r218067692"},"pull_request":{"href":"https://api.github.com/repos/antha-lang/antha/pulls/900"}}},"pull_request":{"url":"https://api.github.com/repos/antha-lang/antha/pulls/900","id":215972441,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE1OTcyNDQx","html_url":"https://github.com/antha-lang/antha/pull/900","diff_url":"https://github.com/antha-lang/antha/pull/900.diff","patch_url":"https://github.com/antha-lang/antha/pull/900.patch","issue_url":"https://api.github.com/repos/antha-lang/antha/issues/900","number":900,"state":"open","locked":false,"title":"[Antha-2010] Fix Liquid Level Follow SuckInstruction generation","user":{"login":"haydnKing","id":978497,"node_id":"MDQ6VXNlcjk3ODQ5Nw==","avatar_url":"https://avatars2.githubusercontent.com/u/978497?v=4","gravatar_id":"","url":"https://api.github.com/users/haydnKing","html_url":"https://github.com/haydnKing","followers_url":"https://api.github.com/users/haydnKing/followers","following_url":"https://api.github.com/users/haydnKing/following{/other_user}","gists_url":"https://api.github.com/users/haydnKing/gists{/gist_id}","starred_url":"https://api.github.com/users/haydnKing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haydnKing/subscriptions","organizations_url":"https://api.github.com/users/haydnKing/orgs","repos_url":"https://api.github.com/users/haydnKing/repos","events_url":"https://api.github.com/users/haydnKing/events{/privacy}","received_events_url":"https://api.github.com/users/haydnKing/received_events","type":"User","site_admin":false},"body":"when aspirating with LLF, the head moves downwards to track the liquid level. Unlike when dispensing, when aspirating it is therefore possible to collide with the bottom of the well.\r\n\r\nThis PR implements LLF aspiration in a way which prevents this. First, the minimum liquid level for which LLF can be used is calculated as `ASPZOFFSET + LLFBELOWSURFACE`. SuckInstructions which don't go below this level are carried out entirely using LLF and ones where the starting well volume is already below this value aspirate from well bottom as normal without LLF. Otherwise, the SuckInstruction generates two Aspirate instructions - one using LLF until the minimum level is reached, and the next from the well bottom without LLF to aspirate the remaining volume.\r\n\r\nThis PR depends on: https://github.com/antha-lang/antha/pull/891 \r\nand https://github.com/Synthace/PipetMaxDriver/pull/52 and https://github.com/Synthace/PipetMaxDriver/pull/53","created_at":"2018-09-17T12:57:34Z","updated_at":"2018-09-17T13:39:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c9d5099ffa1bfa3e0fb15215729b9279c8c035d9","assignee":null,"assignees":[],"requested_reviewers":[{"login":"m-i-sadowski","id":7792504,"node_id":"MDQ6VXNlcjc3OTI1MDQ=","avatar_url":"https://avatars0.githubusercontent.com/u/7792504?v=4","gravatar_id":"","url":"https://api.github.com/users/m-i-sadowski","html_url":"https://github.com/m-i-sadowski","followers_url":"https://api.github.com/users/m-i-sadowski/followers","following_url":"https://api.github.com/users/m-i-sadowski/following{/other_user}","gists_url":"https://api.github.com/users/m-i-sadowski/gists{/gist_id}","starred_url":"https://api.github.com/users/m-i-sadowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/m-i-sadowski/subscriptions","organizations_url":"https://api.github.com/users/m-i-sadowski/orgs","repos_url":"https://api.github.com/users/m-i-sadowski/repos","events_url":"https://api.github.com/users/m-i-sadowski/events{/privacy}","received_events_url":"https://api.github.com/users/m-i-sadowski/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/antha-lang/antha/pulls/900/commits","review_comments_url":"https://api.github.com/repos/antha-lang/antha/pulls/900/comments","review_comment_url":"https://api.github.com/repos/antha-lang/antha/pulls/comments{/number}","comments_url":"https://api.github.com/repos/antha-lang/antha/issues/900/comments","statuses_url":"https://api.github.com/repos/antha-lang/antha/statuses/eda6bfb3a5c65b470075632387fedc9931b9fc38","head":{"label":"antha-lang:ANTHA-2010/fixLLFModel","ref":"ANTHA-2010/fixLLFModel","sha":"eda6bfb3a5c65b470075632387fedc9931b9fc38","user":{"login":"antha-lang","id":9553265,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NTMyNjU=","avatar_url":"https://avatars2.githubusercontent.com/u/9553265?v=4","gravatar_id":"","url":"https://api.github.com/users/antha-lang","html_url":"https://github.com/antha-lang","followers_url":"https://api.github.com/users/antha-lang/followers","following_url":"https://api.github.com/users/antha-lang/following{/other_user}","gists_url":"https://api.github.com/users/antha-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/antha-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antha-lang/subscriptions","organizations_url":"https://api.github.com/users/antha-lang/orgs","repos_url":"https://api.github.com/users/antha-lang/repos","events_url":"https://api.github.com/users/antha-lang/events{/privacy}","received_events_url":"https://api.github.com/users/antha-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":27073429,"node_id":"MDEwOlJlcG9zaXRvcnkyNzA3MzQyOQ==","name":"antha","full_name":"antha-lang/antha","private":false,"owner":{"login":"antha-lang","id":9553265,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NTMyNjU=","avatar_url":"https://avatars2.githubusercontent.com/u/9553265?v=4","gravatar_id":"","url":"https://api.github.com/users/antha-lang","html_url":"https://github.com/antha-lang","followers_url":"https://api.github.com/users/antha-lang/followers","following_url":"https://api.github.com/users/antha-lang/following{/other_user}","gists_url":"https://api.github.com/users/antha-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/antha-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antha-lang/subscriptions","organizations_url":"https://api.github.com/users/antha-lang/orgs","repos_url":"https://api.github.com/users/antha-lang/repos","events_url":"https://api.github.com/users/antha-lang/events{/privacy}","received_events_url":"https://api.github.com/users/antha-lang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/antha-lang/antha","description":"The Antha Cross-Compiler","fork":false,"url":"https://api.github.com/repos/antha-lang/antha","forks_url":"https://api.github.com/repos/antha-lang/antha/forks","keys_url":"https://api.github.com/repos/antha-lang/antha/keys{/key_id}","collaborators_url":"https://api.github.com/repos/antha-lang/antha/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/antha-lang/antha/teams","hooks_url":"https://api.github.com/repos/antha-lang/antha/hooks","issue_events_url":"https://api.github.com/repos/antha-lang/antha/issues/events{/number}","events_url":"https://api.github.com/repos/antha-lang/antha/events","assignees_url":"https://api.github.com/repos/antha-lang/antha/assignees{/user}","branches_url":"https://api.github.com/repos/antha-lang/antha/branches{/branch}","tags_url":"https://api.github.com/repos/antha-lang/antha/tags","blobs_url":"https://api.github.com/repos/antha-lang/antha/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/antha-lang/antha/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/antha-lang/antha/git/refs{/sha}","trees_url":"https://api.github.com/repos/antha-lang/antha/git/trees{/sha}","statuses_url":"https://api.github.com/repos/antha-lang/antha/statuses/{sha}","languages_url":"https://api.github.com/repos/antha-lang/antha/languages","stargazers_url":"https://api.github.com/repos/antha-lang/antha/stargazers","contributors_url":"https://api.github.com/repos/antha-lang/antha/contributors","subscribers_url":"https://api.github.com/repos/antha-lang/antha/subscribers","subscription_url":"https://api.github.com/repos/antha-lang/antha/subscription","commits_url":"https://api.github.com/repos/antha-lang/antha/commits{/sha}","git_commits_url":"https://api.github.com/repos/antha-lang/antha/git/commits{/sha}","comments_url":"https://api.github.com/repos/antha-lang/antha/comments{/number}","issue_comment_url":"https://api.github.com/repos/antha-lang/antha/issues/comments{/number}","contents_url":"https://api.github.com/repos/antha-lang/antha/contents/{+path}","compare_url":"https://api.github.com/repos/antha-lang/antha/compare/{base}...{head}","merges_url":"https://api.github.com/repos/antha-lang/antha/merges","archive_url":"https://api.github.com/repos/antha-lang/antha/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/antha-lang/antha/downloads","issues_url":"https://api.github.com/repos/antha-lang/antha/issues{/number}","pulls_url":"https://api.github.com/repos/antha-lang/antha/pulls{/number}","milestones_url":"https://api.github.com/repos/antha-lang/antha/milestones{/number}","notifications_url":"https://api.github.com/repos/antha-lang/antha/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/antha-lang/antha/labels{/name}","releases_url":"https://api.github.com/repos/antha-lang/antha/releases{/id}","deployments_url":"https://api.github.com/repos/antha-lang/antha/deployments","created_at":"2014-11-24T11:42:27Z","updated_at":"2018-09-17T10:07:11Z","pushed_at":"2018-09-17T12:57:35Z","git_url":"git://github.com/antha-lang/antha.git","ssh_url":"git@github.com:antha-lang/antha.git","clone_url":"https://github.com/antha-lang/antha.git","svn_url":"https://github.com/antha-lang/antha","homepage":null,"size":134080,"stargazers_count":97,"watchers_count":97,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":14,"mirror_url":null,"archived":false,"open_issues_count":45,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":14,"open_issues":45,"watchers":97,"default_branch":"master"}},"base":{"label":"antha-lang:master","ref":"master","sha":"ab95b1b2f28a01acfff807cc3f2d8c52c37602e5","user":{"login":"antha-lang","id":9553265,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NTMyNjU=","avatar_url":"https://avatars2.githubusercontent.com/u/9553265?v=4","gravatar_id":"","url":"https://api.github.com/users/antha-lang","html_url":"https://github.com/antha-lang","followers_url":"https://api.github.com/users/antha-lang/followers","following_url":"https://api.github.com/users/antha-lang/following{/other_user}","gists_url":"https://api.github.com/users/antha-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/antha-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antha-lang/subscriptions","organizations_url":"https://api.github.com/users/antha-lang/orgs","repos_url":"https://api.github.com/users/antha-lang/repos","events_url":"https://api.github.com/users/antha-lang/events{/privacy}","received_events_url":"https://api.github.com/users/antha-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":27073429,"node_id":"MDEwOlJlcG9zaXRvcnkyNzA3MzQyOQ==","name":"antha","full_name":"antha-lang/antha","private":false,"owner":{"login":"antha-lang","id":9553265,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk1NTMyNjU=","avatar_url":"https://avatars2.githubusercontent.com/u/9553265?v=4","gravatar_id":"","url":"https://api.github.com/users/antha-lang","html_url":"https://github.com/antha-lang","followers_url":"https://api.github.com/users/antha-lang/followers","following_url":"https://api.github.com/users/antha-lang/following{/other_user}","gists_url":"https://api.github.com/users/antha-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/antha-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antha-lang/subscriptions","organizations_url":"https://api.github.com/users/antha-lang/orgs","repos_url":"https://api.github.com/users/antha-lang/repos","events_url":"https://api.github.com/users/antha-lang/events{/privacy}","received_events_url":"https://api.github.com/users/antha-lang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/antha-lang/antha","description":"The Antha Cross-Compiler","fork":false,"url":"https://api.github.com/repos/antha-lang/antha","forks_url":"https://api.github.com/repos/antha-lang/antha/forks","keys_url":"https://api.github.com/repos/antha-lang/antha/keys{/key_id}","collaborators_url":"https://api.github.com/repos/antha-lang/antha/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/antha-lang/antha/teams","hooks_url":"https://api.github.com/repos/antha-lang/antha/hooks","issue_events_url":"https://api.github.com/repos/antha-lang/antha/issues/events{/number}","events_url":"https://api.github.com/repos/antha-lang/antha/events","assignees_url":"https://api.github.com/repos/antha-lang/antha/assignees{/user}","branches_url":"https://api.github.com/repos/antha-lang/antha/branches{/branch}","tags_url":"https://api.github.com/repos/antha-lang/antha/tags","blobs_url":"https://api.github.com/repos/antha-lang/antha/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/antha-lang/antha/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/antha-lang/antha/git/refs{/sha}","trees_url":"https://api.github.com/repos/antha-lang/antha/git/trees{/sha}","statuses_url":"https://api.github.com/repos/antha-lang/antha/statuses/{sha}","languages_url":"https://api.github.com/repos/antha-lang/antha/languages","stargazers_url":"https://api.github.com/repos/antha-lang/antha/stargazers","contributors_url":"https://api.github.com/repos/antha-lang/antha/contributors","subscribers_url":"https://api.github.com/repos/antha-lang/antha/subscribers","subscription_url":"https://api.github.com/repos/antha-lang/antha/subscription","commits_url":"https://api.github.com/repos/antha-lang/antha/commits{/sha}","git_commits_url":"https://api.github.com/repos/antha-lang/antha/git/commits{/sha}","comments_url":"https://api.github.com/repos/antha-lang/antha/comments{/number}","issue_comment_url":"https://api.github.com/repos/antha-lang/antha/issues/comments{/number}","contents_url":"https://api.github.com/repos/antha-lang/antha/contents/{+path}","compare_url":"https://api.github.com/repos/antha-lang/antha/compare/{base}...{head}","merges_url":"https://api.github.com/repos/antha-lang/antha/merges","archive_url":"https://api.github.com/repos/antha-lang/antha/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/antha-lang/antha/downloads","issues_url":"https://api.github.com/repos/antha-lang/antha/issues{/number}","pulls_url":"https://api.github.com/repos/antha-lang/antha/pulls{/number}","milestones_url":"https://api.github.com/repos/antha-lang/antha/milestones{/number}","notifications_url":"https://api.github.com/repos/antha-lang/antha/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/antha-lang/antha/labels{/name}","releases_url":"https://api.github.com/repos/antha-lang/antha/releases{/id}","deployments_url":"https://api.github.com/repos/antha-lang/antha/deployments","created_at":"2014-11-24T11:42:27Z","updated_at":"2018-09-17T10:07:11Z","pushed_at":"2018-09-17T12:57:35Z","git_url":"git://github.com/antha-lang/antha.git","ssh_url":"git@github.com:antha-lang/antha.git","clone_url":"https://github.com/antha-lang/antha.git","svn_url":"https://github.com/antha-lang/antha","homepage":null,"size":134080,"stargazers_count":97,"watchers_count":97,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":14,"mirror_url":null,"archived":false,"open_issues_count":45,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":14,"open_issues":45,"watchers":97,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/antha-lang/antha/pulls/900"},"html":{"href":"https://github.com/antha-lang/antha/pull/900"},"issue":{"href":"https://api.github.com/repos/antha-lang/antha/issues/900"},"comments":{"href":"https://api.github.com/repos/antha-lang/antha/issues/900/comments"},"review_comments":{"href":"https://api.github.com/repos/antha-lang/antha/pulls/900/comments"},"review_comment":{"href":"https://api.github.com/repos/antha-lang/antha/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/antha-lang/antha/pulls/900/commits"},"statuses":{"href":"https://api.github.com/repos/antha-lang/antha/statuses/eda6bfb3a5c65b470075632387fedc9931b9fc38"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"msackman-synthace"}}