{"action":"created","issue":{"url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/10","labels_url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/10/comments","events_url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/10/events","html_url":"https://github.com/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/10","id":59107035,"number":10,"title":"Finish implementation of interpolation for ellipsoidal tubes","user":{"login":"pgagarinov","id":4868370,"avatar_url":"https://avatars.githubusercontent.com/u/4868370?v=3","gravatar_id":"","url":"https://api.github.com/users/pgagarinov","html_url":"https://github.com/pgagarinov","followers_url":"https://api.github.com/users/pgagarinov/followers","following_url":"https://api.github.com/users/pgagarinov/following{/other_user}","gists_url":"https://api.github.com/users/pgagarinov/gists{/gist_id}","starred_url":"https://api.github.com/users/pgagarinov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pgagarinov/subscriptions","organizations_url":"https://api.github.com/users/pgagarinov/orgs","repos_url":"https://api.github.com/users/pgagarinov/repos","events_url":"https://api.github.com/users/pgagarinov/events{/privacy}","received_events_url":"https://api.github.com/users/pgagarinov/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"katemeron","id":11087568,"avatar_url":"https://avatars.githubusercontent.com/u/11087568?v=3","gravatar_id":"","url":"https://api.github.com/users/katemeron","html_url":"https://github.com/katemeron","followers_url":"https://api.github.com/users/katemeron/followers","following_url":"https://api.github.com/users/katemeron/following{/other_user}","gists_url":"https://api.github.com/users/katemeron/gists{/gist_id}","starred_url":"https://api.github.com/users/katemeron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/katemeron/subscriptions","organizations_url":"https://api.github.com/users/katemeron/orgs","repos_url":"https://api.github.com/users/katemeron/repos","events_url":"https://api.github.com/users/katemeron/events{/privacy}","received_events_url":"https://api.github.com/users/katemeron/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/milestones/1","html_url":"https://github.com/SystemAnalysisDpt-CMC-MSU/ellipsoids/milestones/Spring_2015","labels_url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/milestones/1/labels","id":998792,"number":1,"title":"Spring_2015","description":"","creator":{"login":"pgagarinov","id":4868370,"avatar_url":"https://avatars.githubusercontent.com/u/4868370?v=3","gravatar_id":"","url":"https://api.github.com/users/pgagarinov","html_url":"https://github.com/pgagarinov","followers_url":"https://api.github.com/users/pgagarinov/followers","following_url":"https://api.github.com/users/pgagarinov/following{/other_user}","gists_url":"https://api.github.com/users/pgagarinov/gists{/gist_id}","starred_url":"https://api.github.com/users/pgagarinov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pgagarinov/subscriptions","organizations_url":"https://api.github.com/users/pgagarinov/orgs","repos_url":"https://api.github.com/users/pgagarinov/repos","events_url":"https://api.github.com/users/pgagarinov/events{/privacy}","received_events_url":"https://api.github.com/users/pgagarinov/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":0,"state":"open","created_at":"2015-02-27T13:32:18Z","updated_at":"2015-04-23T15:52:20Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2015-02-26T17:24:41Z","updated_at":"2015-04-26T15:48:40Z","closed_at":null,"body":"This task includes finishing items 4) and 5) from https://code.google.com/p/ellipsoids/issues/detail?id=126\r\n\r\nThe task includes at least the following sub-tasks\r\n\r\n1)[Anton Lesnichiy] Finish the tests for the modified versions of GoodDir и ProbDynamics classes \r\n2)[Ekaterina Markova] Make all MatrixFunction classes from products\\+gras\\+mat comparable via implementing MatrixFunctionComparamble super class with its isEqualInternal and toStruct methods (covered with unit tests). Apart from these methods this super class should implement getCopy method for building a copy of an object. The code of getCopy should look like this:\r\n\r\nfunction otherObj=getCopy(self)\r\notherObj=getArrayFromByteStream(getByteStreamFromArray(self)\r\nend\r\n\r\nsee \r\nhttp://undocumentedmatlab.com/blog/serializing-deserializing-matlab-data\r\n\r\nfor details.\r\n\r\n3){Andrew Zanochkin] Make mlunitext.runtestcase('gras.ellapx.smartdb.test.mlunit.SuiteEllTube','testInterpAdvanced') pass and fix EllTubeProjBasic.getInterpDataInternal (and potentially EllTubeBasic.projectInternal)  \r\n\r\n4) [To be decided by the group] Find and fix all the problems with the blind copy-pasting of all matrix calculations from master on a symbolic level.\r\n5)[Anton Lesnichiy]  Remove prefix \"А\" from the names of non-abstract classes in products\\+gras\\+mat\r\n6) [Andrew Zanochkin] - make sure that getInterpDataInternal and other methods that are ultimately used for building a copy of the original object (in interp or cut methods for instance) do not just copy interpolation objects via \"=\". Instead of writing SData.interpAMatObj=self.interpASMatObj we need to write SData.interpAMatObj=self.interpASMatObj.getCopy(); \r\n\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/comments/96402062","html_url":"https://github.com/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/10#issuecomment-96402062","issue_url":"https://api.github.com/repos/SystemAnalysisDpt-CMC-MSU/ellipsoids/issues/10","id":96402062,"user":{"login":"pgagarinov","id":4868370,"avatar_url":"https://avatars.githubusercontent.com/u/4868370?v=3","gravatar_id":"","url":"https://api.github.com/users/pgagarinov","html_url":"https://github.com/pgagarinov","followers_url":"https://api.github.com/users/pgagarinov/followers","following_url":"https://api.github.com/users/pgagarinov/following{/other_user}","gists_url":"https://api.github.com/users/pgagarinov/gists{/gist_id}","starred_url":"https://api.github.com/users/pgagarinov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pgagarinov/subscriptions","organizations_url":"https://api.github.com/users/pgagarinov/orgs","repos_url":"https://api.github.com/users/pgagarinov/repos","events_url":"https://api.github.com/users/pgagarinov/events{/privacy}","received_events_url":"https://api.github.com/users/pgagarinov/received_events","type":"User","site_admin":false},"created_at":"2015-04-26T15:48:40Z","updated_at":"2015-04-26T15:48:40Z","body":"For Ekaterina Markova:\r\nComments for commit 14108fb31ba0ebe4f1b3db47ab6d052c2f40f21f:\r\n\"absTol and relTol properties are private\r\nAll non-abstract classes renamed\r\nM-files isEqual and toStructInternal's removed\r\nAdded toStructInternal for ProjArrayFunction, ProjOrthArrayFunction, MatrixLtDoodDirNormVecFunc\"\r\n-----------------\r\n\r\n-1) SEll is not ok as it is taken from Ellipsoid class\r\n0) toStructInternal methods should be protected, this is why we have \"Internal\" suffix. \r\ntoStruct is its public variant that calls toStructInternal in AMatrixComparable. Please create public toStruct in\r\nAMatrixComparable and make it call toStructInternal.\r\n1) names of variables are bad - size returns a vector, not array - thus \"Vec\" suffix\r\n2) object names should start with a small letter. Only structures should start with capital letters. Please fix this.\r\n3) please name all first arguments to the non-static methods as \"self\"\r\n4) please call static methods as self.methodName(...) instead of methodName(self,....)\r\n5) why do we need ConstArrayFunction function and what is the difference between ConstMatrixFunction\r\n6) please remove toStructInternalConst method in ConstMatrixFunction and move all the code to toStructInternal - \r\nhaving a public method that is not used is a bad practice. Even if it is private still no need for it. \r\nThe same goes for toStructInternalProjArray and other methods you created - we just do not need them, all logic should be within toStructInternal \r\n7)round brackets in if (isPropIncluded) should be omitted - Matlab is not C++\r\n9) Please do not name make fields \"protected\" unless you really need to - let them be \"private\" as a default.\r\n10) The code that extracts absTol and relTol properties is the same for all subclasses - thus it needs to be in\r\nAMatrixComparable. I think the best way to make this happen is to implement a non-empty body in toStructInternal in AMatrixComparable\r\nso that it just extracts absTol and relTol. Then all subclasses will override toStructInternal like this:\r\n\r\nMyFunction<gras.mat.AMatrixComparable\r\n\r\nmethods (Access=protected)\r\n\tfunction toStructInternal(self,varargin)\r\n\t\t[SRes,SFieldNames,SFieldDescr]=toStructInternal@gras.mat.AMatrixComparable(varargin{:});\r\n\t\t%here we add MyFunction -specific fields to all 3 structures\r\n\tend\r\nend\r\n\r\nend\r\n\r\n\r\n11) First of all - I do not think that we will need MatrixLtDoodDirNormVecFunc at all - please check with Andrew Zanochkin, \r\nthis class will be either removed or significantly re-written. \r\nSecond of all, you might already know that but just in case -  in any other \"Interp\" matrix function classes that are based on interpolation objects just putting\r\ninterpolation object into a structure is not enough as isequal will then just compare handles of those objects. \r\nThis means that this code    SEll = struct('ltGoodDirMatInterObj', MatObj.getltGoodDirMatInterObj()); is not correct.\r\nThe data we CAN put into SEll SHOULD only include simple data types: numeric types, character types and cell arrays of those.\r\n\r\n12) In ProjArrayFunction please do not forget to put fProjFunction into SEll as a string using func2str. Without\r\nthat field comparison doesn't make any sense. The same goes for ProjArrayFunction.\r\n13)\r\n\r\n\r\n\r\n"}}