Open in new window / Try shogun cloud
--- Log opened Thu Jul 18 00:00:36 2013
-!- FSCV [~FSCV@] has quit [Quit: Leaving]01:01
--- Log closed Thu Jul 18 01:10:47 2013
--- Log opened Thu Jul 18 01:16:21 2013
-!- shogun-toolbox [] has joined #shogun01:16
-!- Irssi: #shogun: Total of 11 nicks [2 ops, 0 halfops, 0 voices, 9 normal]01:16
-!- Irssi: Join to #shogun was synced in 6 secs01:16
@iglesiasggood night!01:21
-!- iglesiasg [] has quit [Quit: Leaving]01:21
-!- Guest95788 [] has joined #shogun02:17
-!- Guest95788 [] has left #shogun []02:19
-!- nube [~rho@] has joined #shogun02:20
-!- nube1 [~rho@] has joined #shogun02:43
-!- nube [~rho@] has quit [Ping timeout: 276 seconds]02:43
-!- zxtx [] has quit [Ping timeout: 248 seconds]02:55
-!- hushell [] has quit [Ping timeout: 260 seconds]03:04
-!- nube [~rho@] has joined #shogun03:12
-!- nube1 [~rho@] has quit [Ping timeout: 264 seconds]03:13
-!- pickle27 [] has joined #shogun03:14
-!- hushell [] has joined #shogun03:16
-!- pickle27 [] has quit [Quit: Leaving]03:26
-!- nube [~rho@] has quit [Ping timeout: 246 seconds]04:42
-!- nube [~rho@] has joined #shogun05:35
-!- zxtx [] has joined #shogun07:00
-!- gsomix__ [~gsomix@] has joined #shogun07:33
-!- gsomix_ [~gsomix@] has quit [Ping timeout: 245 seconds]07:36
-!- vgorbati [c3ee5cb1@gateway/web/freenode/ip.] has joined #shogun08:47
-!- iglesiasg [] has joined #shogun09:11
-!- mode/#shogun [+o iglesiasg] by ChanServ09:11
@iglesiasgmorning everyone09:12
-!- foulwall` [~user@2001:da8:215:503:55a7:5925:5abd:ac97] has joined #shogun09:18
-!- Yanglittle [b74040fc@gateway/web/freenode/ip.] has joined #shogun09:55
Yanglittlehey is there any body?09:55
@iglesiasgYanglittle: yes, sure. What is it?09:58
hushelliglesiasg: how are you?10:17
@iglesiasghushell: hey! good good, what about you?10:20
Yanglittlethe performance of mkl is lower than the best single kernel.  is there any suggestions?10:27
@iglesiasgYanglittle: what is the single kernel?10:28
@iglesiasgYanglittle: and what kernels are you using in MKL?10:28
@iglesiasgcorrect me if I am wrong, in MKL you input a set of kernels from which the algorithm will choose what weights to give to each one, right?10:28
hushelliglesiasg: good! seems you have finished the LMNN :)10:29
@iglesiasghushell: well, sort of the first version of it. I am preparing right now some unit tests before I send the pull request10:29
@iglesiasgYanglittle: so what is the kernel you are using in the single case and the ones you use in MKL?10:30
hushellsounds good, you are doing fast!10:30
Yanglittleboth are chi2kernel10:30
@iglesiasghushell: so so :)10:30
hushelliglesiasg: where can I watch your talk :D10:30
@iglesiasghushell: wiking and/or sonney2k will edit them and put them in youtube I think10:31
hushellThat's nice!10:33
hushellI am going to sleep now, I'll go back to check my PR tomorrow10:34
@iglesiasgok, good night!10:34
@iglesiasghushell: what about Patrick btw?10:34
@iglesiasgI read you said something he had moved10:34
hushellHe is kind of busy I think10:34
@iglesiasgaaah ok10:34
hushellbut it's okay10:34
@iglesiasgwe need him to have a look at the new code10:35
hushellI know what I should do right now :)10:35
hushellHe may miss the mid-term meeting10:35
@iglesiasgI see10:35
hushellbut we can find sometime to have a discussion here10:35
@iglesiasgSure, it shouldn't be a major issue10:36
hushelllet me get the inference work first :)10:36
@iglesiasgall right10:36
hushellall right! CU10:36
-!- hushell [] has quit [Quit: WeeChat 0.3.7]10:37
@iglesiasgYanglittle: so what is you MKL setting?10:37
@iglesiasgare you giving different values of some parameter for the chi2kernel?10:37
Yanglittleepsilon=1e-3, num_threads=1, mkl_epsilon=0.001, mkl_norm=2  , yes , i give many parameters for every different kernel.10:38
Yanglittlei thought it should choose the best combination that perform better than the single one.10:38
@iglesiasgI am no MKL expert actually10:39
Yanglittleand who  is ..10:40
@iglesiasgmy idea is that you give to MKL several kernels, and it will do a linear combination of these kernels that maximizes some measure10:40
@iglesiasgbut I am not sure how many kernels you ought input it and so on10:41
Yanglittlei didn't find where to set the measure.10:41
@iglesiasgwell I guess that is not something you can set, but a property of MKL10:41
@iglesiasgmaybe there is some freedom and you can choose someting about that I am not sure. Did you check examples and the documentation?10:42
Yanglittlei checked.10:42
Yanglittleall the examples i have checked.10:43
@iglesiasgiglesiasg: so you are using several chi2kernel with different values for the width parameter in MKL?10:45
@iglesiasgYanglittle: ^10:45
Yanglittleyes, that's it.10:46
@iglesiasgYanglittle: out of curiosity, do you know if that could be better than using one chi2kernel with the optimal choice of the width (chosen using model selection with cross-validation)10:48
@iglesiasgYanglittle: in the examples I can see that they normally use *different* kernels, not the same kernel with different parameters10:48
@iglesiasgthat's why I wondered10:48
Yanglittlein the examples, it is the same feature with different kernels, but here i  have different features from the same data.10:51
@iglesiasgYanglittle: the same feature with different kernels?10:52
Yanglittlefor example ,for the same features, use chi2kernel, powerkernel and so on, then to find the best combination.10:53
@iglesiasgthe features are the data10:54
Yanglittleso ?10:57
@iglesiasgthat when you say I have different features from the same data I don't understand what do you mean exactly10:59
@iglesiasgI mean, if you are using different data (features) for your MKL setting and your single kernel setting10:59
@iglesiasgit is not a surprise that the single one can be better10:59
Yanglittlefor training examples, we extract feature F1, and feature F2, here F1 and F2 are different features. if i concatenate F1 and F2, there'll be one feature.11:04
-!- gsomix__ [~gsomix@] has quit [Quit: Leaving]11:13
-!- Yanglittle [b74040fc@gateway/web/freenode/ip.] has quit [Ping timeout: 250 seconds]11:24
-!- lambday [67157e4c@gateway/web/freenode/ip.] has joined #shogun11:48
-!- HeikoS [] has joined #shogun12:02
-!- mode/#shogun [+o HeikoS] by ChanServ12:02
thoralfHeikoShi :)12:02
@HeikoSthoralfhi! :)12:02
-!- nube [~rho@] has quit [Quit: Leaving.]12:02
@iglesiasgHeikoS: hey! I've got a question about unit tests12:09
@HeikoSiglesiasg: hi, yes?12:09
@iglesiasgHeikoS: say I want to test several functions of the class using the same toy data12:09
@iglesiasgHeikoS: should I create just one test for all or one test for function?12:09
@iglesiasgHeikoS: in the second case, is it fine to have another function in the test file to have the data creation just in one part?12:10
@HeikoSiglesiasg: if you go with the classic unit tests, you should create tests that are as small as possible, i.e. one test for every function12:10
@iglesiasgall right12:11
@iglesiasgI like that better too12:11
@HeikoSiglesiasg: but there are also other ways with the mocking framework, see wiking 's examples for that12:11
@HeikoSiglesiasg: I would not use a shared function to create the data though12:11
@HeikoSjust copy/paste the code12:11
@HeikoSunit tests should depend on as little external code as possible12:11
@iglesiasgHeikoS: ok, but it feels bad to repeat code :S12:12
@HeikoSiglesiasg: true, but thats the point, that you fully controll things12:12
@HeikoSiglesiasg: just keep the toy data as small as possible to get a reasonable test12:12
@iglesiasgHeikoS: ok12:13
@HeikoSiglesiasg: no problem :)12:14
lambdayHeikoS: hi :)12:14
@HeikoSlambday: hi!12:15
lambdayI've got a problem - even creating a simple SGSparseMatrix<complex64_t> gives segfaults12:15
lambdayHeikoS: I'm sending you the code12:15
lambdayexact same code with float creates no problem12:15
@HeikoSlambday: what does the code?12:15
@HeikoSlambday: we have to remove the sparse matrices from the parameter framework again, nothing will work with them12:16
lambdayHeikoS: it just creates a SGSparseMatrix (I was writing unit-tests for operator*)12:16
@HeikoSlambday: I see12:16
@HeikoSshow me12:16
-!- mode/#shogun [+o sonney2k] by ChanServ12:16
@sonney2kfoulwall`, around?12:21
@sonney2kwiking, ping again?12:21
@HeikoS/home/heiko/Desktop/shogun/shogun/src/shogun/mathematics/eigen3.h:17:24: fatal error: Eigen/Eigen: No such file or directory12:21
@HeikoSlambday:  this is where is it for me12:22
lambdayHeikoS: that's really weird!!!!12:23
lambdayHeikoS: anyway you can comment that eigen3 part... its not needed anyway12:24
@HeikoSlambday: ok12:24
lambdaymy gdb says it gets screwed up in unref() in SGReferencedData.cpp I guess12:25
@HeikoSlambday: but the second test fails12:25
@HeikoSand it needs eigen12:25
lambdayHeikoS: umm... just comment that out :D even creating SGSparseMatrix with complex64_t gives segfaults :(12:25
@HeikoSlambday: ok compiled12:26
lambdayHeikoS: segfault? :-s12:26
@HeikoSyes, isolating the problem ...12:26
@HeikoStest1 segfaults here12:27
lambdaytest1?? the float 1??12:27
@HeikoSlambday:  not sorry12:27
@HeikoSwait :)12:27
lambdayhehe :D12:27
@iglesiasgsonney2k: ping12:29
@sonney2kiglesiasg, pong12:31
@iglesiasgsonney2k: so you mentioned something the other day about the PR12:31
-!- vgorbati [c3ee5cb1@gateway/web/freenode/ip.] has quit [Quit: Page closed]12:32
lambdayI'll be back in 5 mins12:32
@HeikoSlambday: the problem is caused by the = operator which unrefs the old SGSparseVector<complex64_t>, (which does not exist)12:36
@sonney2kiglesiasg, errm no I see this for the first time12:36
@sonney2kiglesiasg, I commented about thoralf's PR12:36
@sonney2kiglesiasg, IMHO with his we should drop all pthread stuff from the headers the same way you do it with eigen now12:37
@iglesiasgsonney2k: ah all right12:37
@iglesiasgthoralf: then you are interested about this ^ :)12:38
-!- nube [~rho@] has joined #shogun12:38
thoralfLet me see.12:38
@iglesiasgsonney2k: so about the LMNN PR, at the beginning I made the methods in LMNNImpl static12:38
@sonney2kiglesiasg, but it might not be possible12:39
@iglesiasgsonney2k: so there is no need in LMNN for a LMNNImpl member (I wanted to avoid include<LMNNImpl.h> in LMNN.h)12:39
thoralfsonney2k, iglesiasg: I don't see comments on github.12:39
@sonney2kiglesiasg, the train() function is way to long. you should split it up into at least 3 private sub-functions12:40
@iglesiasgsonney2k: but that can be done also with declaring the class. So should I keep the methods static? Does it make a difference?12:40
@sonney2kmaybe one checking the paratmeters12:40
@iglesiasgsonney2k: ok, that makes sense12:40
lambdayHeikoS: why it doesn't create problem for float64_t then? :(12:40
@HeikoSlambday: ah, good question12:40
lambdayHeikoS: its exactly the same code :(12:40
@sonney2kiglesiasg, basically the rule is if you need to write documentation then you better write a function which is named like your comment12:41
@sonney2kiglesiasg, so maybe check_parameters, init_training, find_cutrent_impostors etc12:42
@HeikoSsonney2k, iglesiasg this sometimes really fails, pls always write documentation12:42
@sonney2kthoralf, no comment there12:42
@HeikoSfor users12:42
@sonney2kHeikoS, ?12:42
@sonney2kHeikoS, not applicable here12:42
@HeikoSsonney2k: there are so many undocumented methods in shogun, just saying in gerneral12:42
@sonney2kwe are talking about a particular train method in a .cpp12:43
thoralfsonney2k: Are any actions/comments required on my side?12:43
@HeikoSsonney2k: ah sorry then12:43
@sonney2kthoralf, with the opaque pointers iglesiasg digged out I would rather try to solve it this way12:43
@HeikoSstill, I like comments in code, you are right it should be clear by itself, but still should be commented here and there to make reading easier12:43
@sonney2kthoralf, so shogun is self contained and doesn't need extra link flags12:43
@sonney2kI mean12:44
@HeikoSlambday: wow thats a really weird one12:44
thoralfsonney2k: Okay, but my commit contained two issues. :)12:44
@sonney2kwhen some C++ guy links agianst it12:44
lambdayHeikoS: complex64_t stores two doubles in two consecutive address..12:45
thoralfsonney2k, HeikoS: What I'm missing are not function comments (I can read them by myself) but some explaination of how classes intended to work.12:45
lambdaycomplex64_t v(1.0, 2.0);12:45
lambday0xffefffda0, val=1.000000 0xffefffda8, val=2.00000012:45
lambdayHeikoS: :-/12:45
@HeikoSthoralf: every public thing should be documented in my eyes, and classes need descriptions you are right12:46
@HeikoSlambday: yes, currently running debugger12:46
thoralfsonney2k, HeikoS: Good examples are classes, which tell "this method solves <x_i, w> >= 1 + for ..."12:46
@HeikoSthoralf: yes, agreed12:47
@sonney2kthoralf, yeah your best guess is the example12:47
thoralfHeikoS: Yes, but comments get outdated very fast when reafctoring.  But the purpose of a class seldom changes.12:47
thoralfHeikoS: Nobody changes comments once they are there. ;)12:48
@HeikoSyes, we do not need many comments, just a few, since the get outdated, but class documentation has to be updated upon refactoring, no way around that12:48
@sonney2kHeikoS, *amen*12:48
@sonney2kit is really tough to do this12:49
@sonney2kwhen you do a massive refactoring12:49
@sonney2kyou need to check all comments too12:49
@sonney2kfew people do this12:49
@sonney2kand it is a lot of work12:49
@sonney2kbut yes I know...12:49
@HeikoSsonney2k, thats true, but big picture comments dont change that often12:49
@HeikoSlike "this block does this and that where the idea is bla"12:50
@HeikoSsonney2k: lambday found an interesting bug12:50
@HeikoSmaybe you have an idea?12:50
@sonney2kwhich is?12:50
@iglesiasgwiking, HeikoS : I see we need jinja2 now to build the unit tests12:50
thoralf/ First do initialization12:50
@iglesiasgHeikoS: easy_install Jinja2 && pip install Jinja2?12:50
thoralf/ run training12:50
@sonney2kthoralf, :P12:51
@HeikoSthoralf: haha! :)12:51
@sonney2kthat is what I meant we shouldn't do12:52
@sonney2kiglesiasg, I've read more of your code. In general please shorten your functions a bit - split them up into smaller logical units12:52
@sonney2kthis makes things easier believe me :)12:52
thoralfAnyone here who did not read "Clean Code"?12:52
@iglesiasgsonney2k: all right, will do12:52
@HeikoSsonney2k: float64_t works, complex fails upon unrefing the "old" SGSParseVector in the matrix12:53
@iglesiasgthoralf: I didn't12:53
@sonney2kthoralf, me neither but I had a lecture from uncle bob just a week ago12:53
@sonney2kHeikoS, uiii subtle!12:54
@sonney2kHeikoS, lambday I know... it is my malloc hack12:55
lambdaysonney2k: malloc hack?12:55
@HeikoSwhen the matrix is allocated?12:55
@HeikoSsonney2k: I just tried replacing that by calloc but no help12:55
@sonney2klambday, I guess adding SG_SPECIALIZED_MALLOC(SGSparseVector<complex64_t>) to shogun/lib/memory.cpp (end of the file) will fix it12:55
lambdaysonney2k: aha! trying it12:56
thoralfsonney2k: I just contains rules like "speaking names instead of comments", etc.  But it also sets a "economical" state of mind for writing code, that can be understood.12:56
@HeikoSsonney2k: man12:56
@HeikoSwhere is this coming from?12:56
@sonney2kHeikoS, not sure you want to know12:56
@HeikoSwhat does this do?12:56
@sonney2kHeikoS, we have these SG_MALLOC etc macros12:57
@sonney2kwhich use malloc underneath12:57
@sonney2khowever there is one catch12:58
@HeikoSlambday: that fixes it :)12:58
@sonney2kwhen you use a try C++ object which needs an inplace constructor call12:58
thoralfsonney2k: Back to my PR: It also contains fixes for running "make check-examples" without calling "make install" first.12:58
@sonney2kas in you want to have an SGVector array12:58
@HeikoSsonney2k: yes like SGReferencedData12:58
@sonney2kwith malloc its constructor is not called12:59
thoralfsonney2k: I think its very handy when using IDEs.12:59
@HeikoSsonney2k: ok cool, learned another thing today12:59
@sonney2kso you would need to use new FOO[10]();12:59
@sonney2knote the () at the end12:59
@HeikoSsonney2k: yep I see12:59
@sonney2kit will call the constructor of FOO for all 10 elements12:59
@HeikoSsonney2k: why dont we have SG_NEW then?13:00
@sonney2know we could either overload our malloc code to use new[]() on SG* (which I did)13:00
@iglesiasglambday: tests/unit/lib/computation/ undefined reference to `shogun::CDenseMatrixOperator<double>::CDenseMatrixOperator(shogun::SGMatrix<double>)'13:00
@iglesiasglambday: do you get that too?13:00
@HeikoSsince the behaviour is not really MALLOC like (it initialises things=)13:00
@iglesiasglambday: I think it is in your unit tests13:00
@sonney2kor call new[]() directly13:00
@sonney2kor drop SG_MALLOC and always use new*13:00
@HeikoSsonney2k: but then its not traced13:00
@sonney2kno tracing and no realloc13:01
@sonney2kno idea13:01
@HeikoSsonney2k: mmmh13:01
lambdayiglesiasg: I'll check13:01
@sonney2kall not optimal13:01
@HeikoSsonney2k: I mean I like SG_MALLOC, but couldnt we just have SG_NEW in addition which does the new thing and traces?13:01
@HeikoSthen it would also be clear how they are used: the same way as in c++13:01
@iglesiasglambday: I get it running make in tests/unit13:01
lambdayHeikoS: did it fix? I get the same error :-/13:02
@HeikoSlambday: no fixes it for me13:02
@HeikoS(at least for my small example)13:02
lambdayiglesiasg: I'll surely check and change it.. I must have missed a few things :-/ don't know how that worked here13:02
lambdayHeikoS: checking again13:03
@HeikoSlambday:  no all fine13:03
@HeikoSjust tried once more13:03
@sonney2kHeikoS, no idea how to do it other than the way I do it with sgmalloc currently13:04
@HeikoSsonney2k:  new macro SG_NEW?13:05
@HeikoSwhich calls constructors?13:05
@HeikoSor even rename SG_MALLOC to SG_NEW13:05
@HeikoSwhich would then be consistent with c++ api13:05
@HeikoSbut thats a subtlety13:05
@iglesiasglambday: maybe it is my bad, who knows13:05
@HeikoSsonney2k, iglesiasg, ipython notebooks can even play sounds13:07
@sonney2kHeikoS, then you have to know when to use what... no idea I tried to hide that but as you can see it can cause issues...13:07
@iglesiasgHeikoS: funny!13:08
@sonney2kHeikoS, that would be cool for pickle27's demo!13:08
@HeikoSsonney2k: if we would call it SG_NEW, I think it would be fine, since c++ new does exactly what our SG_MALLOC does13:08
@HeikoSsonney2k: say do you got another minute?13:09
@HeikoSsonney2k: want to talk about model-selection framework13:09
@HeikoSsonney2k: so currently there is a problem with setting registered parameters: we directly modify the memory13:10
@HeikoSso no checks for illegal values, and no post-modification of things that depend on parameters13:10
@HeikoSwhich is both bad13:10
@HeikoSlisitsyn recently proposed automagic setters/getters based on registered parameters,13:11
@sonney2k(sounds like the intro of a paper)13:11
@HeikoSif we had them, maybe we could use them for the above case13:11
@HeikoSdevelopers could overload them and add checks if they want, or recompute maximum string length or whatever13:12
@HeikoSsonney2k: another problem I currently have with the grid-search framework:13:12
@HeikoSits way easier to just write a nested loop and use Shoguns cross-validation class to select parameters13:12
@sonney2kHeikoS, so all user set paraemters would go through lisitsyn's setters/getters right?13:12
@HeikoSsonney2k: yes13:13
@sonney2kwe just have to make sure that we don't cause some stupid slowdowns13:13
@HeikoSand we could call those automatically also13:13
@HeikoSI have to talk so sergey about this13:13
@HeikoSjust an idea13:13
@HeikoSI played a bit with all this for examples and had a few problems with it13:13
@HeikoSsonney2k: and the other thing:13:14
@HeikoSall those trees are horrible, and sometimes its also unstable13:14
@HeikoSso here is a provocative statement: lets drop the model-selection13:14
@HeikoSprovide proper (stable) cross-validation instead - it is the hard part of model selection anyway13:14
@HeikoSand then users would have to write the loop themselves and use setters to change parameters13:15
@HeikoSit seems so much easier and even more flexible (see SVM-C problem)13:15
@sonney2kdropping your own gsoc project is quite sth113:16
@HeikoSsonney2k: its somewhat extreme I know, but think about it13:16
@HeikoSwhat would that mean13:16
@HeikoSor: can we make things a bit easier to controll13:17
@HeikoSafter all, its only half of the gsoc project, since x-validation was a major part13:17
@HeikoSits just the grid-search13:17
@HeikoSwriting a nested loop and use setters seems so  much easier13:18
@HeikoSand much less work for us: no model-selection api, easier parameter framework changes, no parameter tree cross-product, smaller examples etc13:19
@sonney2kHeikoS, it is but I remember that we had lots of people asking back then for the grid search ms feature13:19
@HeikoSsonney2k: so if we have an example that explains how to do that? its just two lines per parameter: loop and setter call13:20
@HeikoSwe still have x-validation so its easy to get a performanc emeasure of your choice13:20
-!- shogun-notifier- [] has joined #shogun13:20
shogun-notifier-shogun: Soeren Sonnenburg :develop * f3b43d5 / src/shogun/lib/SGReferencedData.cpp,src/shogun/lib/SGReferencedData.h:
shogun-notifier-shogun: move pthread include from .h -> .cpp13:20
@sonney2kHeikoS, people rarely use x-validation but rather fixed splits when they have enough data13:20
@HeikoSsonney2k: well that can be emulated with the class easily13:21
@HeikoSsonney2k: just thinking about how to make things a bit easier13:21
@HeikoSsonney2k: but its just a thought, wanted to share it13:21
@sonney2kHeikoS, I get you point but I don't know. There is no win-win here...13:21
@HeikoSsonney2k: its just sooo hard to maintain the modelselection framework13:22
@HeikoSI mean we have it and it works, so one doesnt *have* to use it13:22
@sonney2kHeikoS, maybe explicit trees are not the best way then. maybe doing it recursively over the parameters would be easier13:22
@HeikoSsonney2k: I agree, but I have the feeling that doing this with the parameter framework is somewhat of an overkill - so much code, so  many things to test, so many cases, so much time spent. but its so easy to do it without the framework13:23
@sonney2kthoralf, only 14 classes with pthread left :D13:23
@HeikoSx-validation is harder to do, people shy away from that usually, but brute-force trying all parameters is something everyone knows13:24
@HeikoSsonney2k: btw for MMD, I did not even attempt to integrate the kernel selection in the modelselection framework, way too complicated13:24
@HeikoSsonney2k: and for GPs I am also unsure whether it would be easier to have  class that is specialised on GPs only. Easier to handle etc13:25
@sonney2kHeikoS, if it is that difficult than it is not useful13:25
@HeikoSsonney2k: Ill start a discussion on github, lets see what the others think13:27
@HeikoSsonney2k: how can I add issues labels on github?13:28
@HeikoSgot it13:29
shogun-buildbotbuild #1460 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Soeren Sonnenburg <>13:33
-!- foulwall [~user@2001:da8:215:503:4467:308e:f09f:763] has joined #shogun13:36
@sonney2kfoulwall, ping?13:36
foulwallHey sonney2k , I talked with lisitsyn about the demention reduction demo.13:37
-!- foulwall` [~user@2001:da8:215:503:55a7:5925:5abd:ac97] has quit [Ping timeout: 264 seconds]13:37
foulwallsonney2k: pong.13:37
@sonney2kfoulwall, yeah seen it13:37
@sonney2kfoulwall, so you can use his code right?13:37
foulwallright, just add a image uploader13:37
@sonney2kfoulwall, I am wondering about ocr currently13:38
@sonney2kare you still working on the ocr demo?13:38
foulwallah, forgot to send pr.13:38
-!- iglesiasg [] has quit [Quit: Leaving]13:38
foulwallproblems are fixed13:39
lisitsynfoulwall: sorry but that's dimension reduction :)13:39
-!- iglesiasg [] has joined #shogun13:39
-!- mode/#shogun [+o iglesiasg] by ChanServ13:39
foulwalllisitsyn: :)13:39
@sonney2kfoulwall, please do then and show us the demo :)13:39
lisitsyndemention is too close to dementia which is mental illness13:39
foulwallok sonney2k13:39
foulwalllisitsyn: haha13:40
@sonney2kfoulwall, you should give me a tour - so I can try to add a few algorithms my own with your framework13:43
-!- travis-ci [] has joined #shogun13:44
travis-ci[travis-ci] it's Soeren Sonnenburg's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []13:44
@sonney2kfoulwall, not now but soon. if you could maybe put this into a README would be great so I could try my own13:44
@sonney2kand it will be helpful for others later13:44
-!- lisitsyn [] has left #shogun []13:44
foulwallok sonney2k13:44
-!- lisitsyn [] has joined #shogun13:47
-!- mode/#shogun [+o lisitsyn] by ChanServ13:47
@sonney2kwiking, maybe you read this later - we need a blacklist for failing classes for the serialization tests for the time beeing13:51
@sonney2kthen we can fix them one by one13:51
@sonney2kwiking, I wrote some is_valid function - no idea if it works the intended way13:52
shogun-notifier-shogun: Soeren Sonnenburg :develop * e6c551d / src/shogun/ (4 files):
shogun-notifier-shogun: move pthread .h -> .cpp13:57
@sonney2kthoralf, 4 pthread's are missing now then all good :)13:57
shogun-buildbotbuild #1461 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Soeren Sonnenburg <>14:17
@wikingsonney2k: yeah i saw it14:19
@wikingit should work .... we should add a different list as well for classes like DenseFeatures... where the function arg for new_sgserializable is not PT_NOT_GENERIC14:20
-!- travis-ci [] has joined #shogun14:21
travis-ci[travis-ci] it's Soeren Sonnenburg's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []14:21
@iglesiasglambday, hey there! I just saw you issued a PR, that fixes already those tests we mentioned before?14:41
lambdayiglesiasg: yes14:41
lambdayiglesiasg: lol I just mentioned your name in that PR14:41
@iglesiasglambday, hehe14:42
@iglesiasglambday, thank you for fixing it so promptly!14:42
lambdayiglesiasg: but I can't get unit-tests compiled completely..14:42
lambdayiglesiasg: hehe14:42
@iglesiasglambday, oh really, still? What is it?14:42
lambdayiglesiasg: I installed jinja2 but it gives segfaults for one of the clone methods and gets out of there14:43
lambdaysorry, clone tests14:43
lambdayiglesiasg: sorry I meant, compiled just fine.. couldn't check14:44
@iglesiasglambday, all right14:44
lambdayiglesiasg: could you please check once when it gets merged? :(14:46
@iglesiasglambday, yes, I will14:46
lambdayiglesiasg: thanks :)14:46
@iglesiasgno problem ;)14:47
@sonney2kwiking, so shall we add an additional blacklist set / dictionary?14:52
shogun-notifier-shogun: lambday :develop * a892cdc / / (13 files):
shogun-notifier-shogun: fixes and added unit-tests in log-det15:09
shogun-notifier-shogun: Heiko Strathmann :develop * cb4ceff / / (13 files):
shogun-notifier-shogun: Merge pull request #1252 from lambday/feature/log_determinant15:09
shogun-notifier-shogun: fixes and added unit-tests in log-det15:09
@HeikoSlambday, iglesiasg yes the clone tests curently segfault15:10
lambdayHeikoS: alright..15:10
lambdayHeikoS: by the way, I used a non-SG type struct in CG solver...15:10
@HeikoSlambday: but thats good, bugs in clone are detected this way, for all classes from now :)15:10
lambdayHeikoS: yes.. :)15:10
@HeikoSlambday: could you explain this a bit?15:10
lambdayHeikoS: I added a class IterativeSolverIterator which is not SG type15:11
lambdayHeikoS: and I used that in solve method inside CG solver15:11
@HeikoSlambday: I see, that should be fine, just hide it to the outside world :)15:12
lambdayHeikoS: it takes Eigen3 things as params so didn't keep it in standard way15:12
lambdayHeikoS: hide as in?15:12
@HeikoSlambday: not expose it through modular interfaces or through methods as a parameter15:12
@HeikoSjust internal c++ parameter15:13
lambdayHeikoS: alright.. I haven't added any modular interface for any of the classes yet (not sure how that is done yet)..15:13
lambdayI'll keep in mind when I do15:13
@HeikoSlambday: dont worry its very easy15:13
@HeikoSlambday: but this class is not parameter or return value of some method right?15:14
lambdayHeikoS: nope15:14
lambdayHeikoS: just used internally inside solve method of CG15:14
@HeikoSlambday: you can do anything for internal things :)15:15
lambdayHeikoS: alright :D15:15
lambdayHeikoS: saw your comments.. will change the msgs :)15:17
@HeikoSlambday: yeah sorry I should have been more clear on this15:17
@HeikoSbut it is always good to have the numbers if there is a problem15:18
lambdayHeikoS: yes.. more helpful for the users15:18
shogun-buildbotbuild #1463 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>15:23
shogun-buildbotbuild #1462 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: lambday <>15:26
-!- gsomix [~gsomix@] has joined #shogun15:27
gsomixsonney2k, hey15:27
@HeikoSwiking: around?15:28
-!- travis-ci [] has joined #shogun15:39
travis-ci[travis-ci] it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []15:39
-!- iglesiasg_ [] has joined #shogun15:45
-!- iglesiasg [] has quit [Read error: Connection reset by peer]15:45
lambdayHeikoS: I'll be back later.. currently thinking what more tests can I add15:53
lambdayHeikoS: I'll add COCG by tonight I am hopinh15:53
@HeikoSlambday: ok, thats time well spent :)15:53
lambdayHeikoS: hehe :D15:54
lambdayHeikoS: bye for now :) see you15:55
-!- lambday [67157e4c@gateway/web/freenode/ip.] has quit []15:55
-!- foulwall [~user@2001:da8:215:503:4467:308e:f09f:763] has quit [Ping timeout: 264 seconds]16:00
gsomixsonney2k, sorry, was not availbale at morning/day. I'm working on csv, but have some questions.16:11
-!- nube [~rho@] has quit [Ping timeout: 240 seconds]16:18
iglesiasg_ok ,see you later people16:23
-!- iglesiasg_ [] has quit [Quit: Leaving]16:24
-!- pickle27 [] has joined #shogun16:24
-!- foulwall [~user@2001:da8:215:6901:1548:83bb:4040:5bd7] has joined #shogun16:28
foulwallHey sonney2k16:29
foulwallpr sent, and you can check the ocr @
-!- foulwall [~user@2001:da8:215:6901:1548:83bb:4040:5bd7] has quit [Ping timeout: 245 seconds]16:36
-!- foulwall [~user@2001:da8:215:c252:e1fd:aee6:b45f:82d6] has joined #shogun16:41
pickle27foulwall: very cool demo!16:42
thoralffoulwall: Cool, feels like Microsoft Paint ;)16:42
-!- lambday [67157d4c@gateway/web/freenode/ip.] has joined #shogun16:48
-!- foulwall [~user@2001:da8:215:c252:e1fd:aee6:b45f:82d6] has quit [Ping timeout: 245 seconds]16:58
-!- foulwall [~user@2001:da8:215:c252:b159:493b:b848:a6ab] has joined #shogun17:01
foulwallthanks pickle27 , thoralf17:02
foulwalldive into dementia reduction demo:)17:04
@lisitsynfoulwall: looks cool!17:27
@lisitsynfoulwall: just one bug I spotted - when you paint some more prediction is changed17:27
@lisitsynbut not the pixelized thing to the right17:28
foulwallthanks lisitsyn , I'll have a check17:31
-!- van51 [] has joined #shogun17:41
-!- foulwall [~user@2001:da8:215:c252:b159:493b:b848:a6ab] has quit [Ping timeout: 245 seconds]17:41
gsomixvan51, hey17:48
van51gsomix: hello17:48
gsomixvan51, how are you?17:49
van51gsomix: fine :) how about you?17:49
gsomixvan51, me too, but I have question.17:49
van51gsomix: shoot17:50
gsomixvan51, what solution for quoting in DelimiterTokenizer you keep in your mind?17:50
van51gsomix: you mean to handle situations like "... \".. " ?17:51
gsomixI think, I need it. And I can try to do it myself.17:51
gsomixBut need your advice17:52
van51gsomix: I guess I would add a case if the current char is \ to not consider the next char as a delimiter17:52
van51gsomix: by setting a flag maybe17:53
van51gsomix: but I think it needs to be discussed more if it is to be inserted in the delimiter phase17:54
van51gsomix: as in what it would do in "\\" etc17:55
van51gsomix: have you discussed it with sonney2k?17:56
thoralfgsomix: Could you do a trivial change for me?  gcc complaing about "#include <cstdio>_" in io/LineReader.cpp17:56
van51gsomix: if you 're parsing each line through the tokenizer it really feels like the support for that should be added in there17:57
gsomixthoralf, yeah, I'll fix it.17:57
thoralfgsomix: No hurry, it's only a warning.17:57
thoralfio/LineReader.cpp:10:18: warning: extra tokens at end of #include directive [enabled by default]17:57
van51gsomix: let me try to get through a compiler error and I'll see what I can do in the tokenizer class :)17:59
gsomixvan51, "have you discussed it with sonney2k?" nope, waiting for evening.17:59
gsomixvan51, ok!17:59
-!- shogun-notifier- [] has quit [Quit: transmission timeout]18:10
-!- lambday [67157d4c@gateway/web/freenode/ip.] has quit []18:13
@HeikoSlisitsyn, sonney2k around?18:18
@HeikoS{ return g == PT_NOT_GENERIC? new CRealFileFeatures(): NULL; }18:18
@HeikoSI dont understand that18:18
@HeikoScan I only create empty instances if the generic type is PT_NOT_GENERIC?18:19
-!- iglesiasg [~iglesias@2001:6b0:1:1041:6549:4678:d91c:7b6f] has joined #shogun18:20
-!- mode/#shogun [+o iglesiasg] by ChanServ18:20
@iglesiasgguten Tag18:22
thoralfGuten Tag :D18:23
@iglesiasgdo you guys have problems with git?18:27
@iglesiasggit fetch upstream18:27
@iglesiasghangs forever here18:27
thoralfiglesiasg: It took a while, but it works.18:29
-!- shogun-notifier- [] has joined #shogun18:29
shogun-notifier-shogun: Heiko Strathmann :develop * 2163945 / src/shogun/kernel/BesselKernel.cpp:
shogun-notifier-shogun: removed double parameter18:29
shogun-notifier-shogun: Heiko Strathmann :develop * ddcd0b6 / src/shogun/kernel/MultiquadricKernel.h,src/shogun/kernel/PyramidChi2.h:
shogun-notifier-shogun: fixed return of get_name18:29
shogun-notifier-shogun: Heiko Strathmann :develop * 7bc238f / src/shogun/kernel/BesselKernel.cpp:
shogun-notifier-shogun: removed another double parameter18:29
shogun-notifier-shogun: Heiko Strathmann :develop * faea6dd / src/shogun/base/SGObject.cpp:
shogun-notifier-shogun: fixed typo18:29
shogun-notifier-shogun: Heiko Strathmann :develop * a44ff18 / src/shogun/kernel/string/ (2 files):
shogun-notifier-shogun: cleaned up and fixed some uninitialised memory bugs. Proper parameter registering18:29
shogun-notifier-shogun: Heiko Strathmann :develop * 0e4ef5e / src/shogun/kernel/string/ (2 files):
shogun-notifier-shogun: autoformatter, some more cleanups18:29
shogun-notifier-shogun: removed PT_NOT_GENERIC thing again18:30
shogun-notifier-shogun: Heiko Strathmann :develop * fd06ef2 / src/shogun/ (14 files):
shogun-notifier-shogun: Merge pull request #1258 from karlnapf/develop18:30
shogun-notifier-shogun: A bunch of bugfixes detected by clone/equals automated tests18:30
shogun-buildbotbuild #1464 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>18:32
shogun-buildbotbuild #1466 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>18:34
@lisitsynHeikoS: still here?18:43
@HeikoSlisitsyn:  yes hi18:43
@lisitsynokay so you have a problem with realfilefeatures only right?18:43
@HeikoSlisitsyn: any idea about the PT_Generic thing18:43
@HeikoSlisitsyn: yes two issues:18:44
@HeikoSCSGObject* object = new_sgserializable("DynamicArray", PT_NOT_GENERIC);18:44
@HeikoSreturns NULL18:44
@lisitsynthat's correct18:44
@lisitsyniirc dynamic array is templated, right?18:44
@HeikoSso how to automatically extract that? :)18:45
@lisitsynlike whether the class is templated?18:45
@HeikoSlisitsyn: have a look at the file clone_unittest jinja18:45
@lisitsynwe have some detection for that in class_list.cpp.py18:45
@HeikoSlisitsyn: wiking has to add that to the test then :)18:46
@lisitsynI can do that18:46
@HeikoSlisitsyn: cool :)18:46
shogun-buildbotbuild #1465 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>18:46
@HeikoSlisitsyn: so the test then has to be generated for all types of all templated classes18:46
@HeikoSlisitsyn: cool!18:47
@HeikoSlisitsyn:  there is another problem:18:47
@HeikoSCSGObject* copy=new_sgserializable(get_name(), this->m_generic);18:47
@HeikoSthats done in clone18:47
@lisitsynyeah probably18:47
@HeikoSbut the problem is: if you have a class that inherits from a generic one with fixed T18:47
@HeikoSit is not detected as generic18:47
@HeikoSbut m_generic is still set to T18:48
@HeikoSso again, returns NULL18:48
@HeikoSthe way to fix that that I see is to manually set generic to PT_NOT_GENERIC when you derice from a generic class with fixed T18:48
@wikingHeikoS: ping18:48
@HeikoSlisitsyn: do you agree?18:48
@HeikoSwiking: hi!18:48
@wikingHeikoS: yes yes basically if u get null18:48
@wikingyou could start doing the rest18:48
@HeikoSwiking: ah good to see you, 100s of questions :)18:48
@lisitsynHeikoS: yes sure18:48
@wikingyeah yeah i kniw18:48
@lisitsynwiking: looks ukrainian18:49
@wikingso CSGObject* object = new_sgserializable("GaussianKernel", PT_NOT_GENERIC);18:49
@HeikoSwiking: so issue 2 first, manually do set_generic(PT_NOT_GENERIC)18:49
@lisitsynkniw :D18:49
@wikingand object == NULL18:49
@wikingthen you could start like18:49
@wikingCSGObject* object = new_sgserializable("GaussianKernel", PT_NOT_GENERIC);18:49
@wikingCSGObject* object = new_sgserializable("GaussianKernel", PT_BOOL);18:49
@wikingetc etc.18:49
@HeikoSwiking: but the problem is for example with RealFileFeatures: public CDenseFeatures<float64_t>18:49
@wikingHeikoS: nono18:49
@HeikoSwiking: yes thats the solution for problem 118:49
@wikingHeikoS: that is actually not the case18:50
@lisitsynHeikoS: but that's not generic right?18:50
@HeikoSwiking: but problem 2, how to solve that18:50
@HeikoSlisitsyn: true, but it inherits from a generic class18:50
@HeikoSand doesnt reset the m_generic flag18:50
@lisitsynuhmm I am a bit lost then18:50
@wikingHeikoS: why don't you do this:18:50
@wikingif the new_sgserializable(<whatever>, PT_NOT_GENERIC);18:51
@lisitsynso all our classes are generic once their parent is generic18:51
@wikingreturns NULL then you need to use PT_BOOL, PT_CHAR etc.18:51
@wikingeither you do this or do a list of classes that are 'special'18:51
@wikingmeaning that they are not generic...18:51
@wikinglike CDenseFeatures, CDenseSubsetFeatures etc.18:52
@wikingor this wouldn't work?18:52
@lisitsynwiking: yes that solves this problem18:52
@lisitsyntrouble arises when we have18:53
@HeikoSwiking: which problem are you talking about, 1 or 2?18:53
@lisitsynsgobject -> ... -> generic -> not generic18:53
@HeikoSlisitsyn:  thats problem 218:53
@HeikoSlets structure this a bit18:53
@lisitsynHeikoS: yes but 1 is easy to solve right?18:53
@HeikoSfirst problem:18:53
@wikingok what's the first problem? :)18:53
@wikingand what is 2nd?18:53
@HeikoSCSGObject* object = new_sgserializable("DynamicArray", PT_NOT_GENERIC);18:54
@HeikoSreturns NULL in the unit test template18:54
@wikingHeikoS: yes18:54
@HeikoSso we have to extract the PT_GENERIC for the class that we put in the template and fill it in accordingly18:54
@HeikoSthats not hard right?18:54 can do this already18:54
@lisitsyneasy yes18:54 does that so I am on it18:54
@HeikoSlisitsyn: cool, thanks!18:55
@HeikoSsecond problem:18:55
@HeikoSinheritance: sgbject->generic->non_generic18:55
@wikingHeikoS: example plz18:55
@HeikoSlike for example CRealFileFeatures: public CDenseFeatures<float64_t>18:55
@HeikoSthis->m_generic is set to PT_FLOAT6418:55
@HeikoSso creating an empty instance of CRealFileFeatures with PT_NOT_GENERIC fails18:56
@wikingHeikoS: this problem arises in the clone() method itself, or?18:56
@HeikoSwiking: yes18:56
@wikingso it's not related with the unit test itself18:56
@HeikoSsince when you clone, you want to create an empty instance of the same PT_GENERIC type18:56
@HeikoSwiking: no18:56
@HeikoSbut similar issue18:56
@wikingah i see18:57
@wikingshit :S18:57
@HeikoSso my solution would be that classes that inherit from generic ones but are not templated have to set m_generic=PT_NOT_GENERIC by hand18:57
@HeikoSthis can be detected through the automated unit tests (they fail otherwise)18:57
@wikingHeikoS: mmm that would make sense18:57
@HeikoSbut I wonder whether there is an automagic solution18:57
@wikingi mean THAT class is actually PT_NOT_GENERIC18:57
@HeikoSwiking: exactly18:58
@wikingso semantically takeing the meaning of PT_NOT_GENERIC and PT_GENERIC18:58
@HeikoSwiking: I mean it is not generic18:58
@wikingthe class that is inherited from a generic class, but itself is not generic18:58
@wikingit should be PT_NOT_GENERIC18:58
@HeikoSwiking: yes18:58
@HeikoSso where are the PT_GENERIC set?18:58
@wikingi'm for this solution18:58
@HeikoSlisitsyn: what do you think?18:58
@HeikoSwiking: I think thats fine. If people add new classes and forget that, unit tests will fail :D18:59
@HeikoSwiking: how do I add new files with tests?18:59
@HeikoSI tried (not hard) but failed :)18:59
@wikingHeikoS: i would set it in the constructor of the class or it's init() function if it has... like CRealFileFeatures should set m_generic or whatever to PT_NOT_GENERIC by hand19:00
@wikingHeikoS: ok what ya need19:00
@wikingwhat kind of unit test?19:00
@HeikoSI wanted to have some seperate tests for checking the output of get_name() that is executed before the others19:00
@wikingjust write on gist one TEST() block and i'll generate the automated template test for it19:01
@HeikoSthen test clone before clone_equals19:01
@HeikoSand also test equals (on empty instances) before clone_equals19:01
@HeikoSand then finally, test all sorts of serialisations19:01
@wikingthat's fine19:01
@HeikoSwiking: since currently clone_equals fails but one doesnt know the reason, the others would help there and are fast to run19:01
@wikingno worries19:01
@wikingcan u write one example of each?19:01
@wikingwith any class19:02
@wikinge.g. CRealFileFeatures19:02
@wikingput it on gist and i'll write the template + py script to generate the tests for all classes19:02
@HeikoSwiking: for the first ones thats trivial19:03
@HeikoSEXPECT_TRUE(strcmp(get_name(), {{class_name}})==0);19:03
@HeikoSwiking: but ok I will do19:03
@wikingHeikoS: i guess it should be not only a separate test but a separate file?19:04
@HeikoSwiking: yes19:04
@wikingor it could be part of the clone_unittest?19:04
@wiking(i wouldn't go with that option...)19:04
@HeikoSwiking: and could we soon try to run all those automated test with valgrind automagically?19:04
@HeikoSwiking: no new file would be better I think19:04
@HeikoSif these would be executed (in this order) before the clone_equals, this would help a lot19:09
@HeikoSwiking, lisitsyn maybe talk to each other as sergey is modifying the generator scripts for the tests to consider all generic cases19:13
@lisitsynsorry was trying to repair my bike :D19:14
@wikinglisitsyn: :DDDD19:14
@wikingHeikoS: so the gist1 would be testing equails19:14
@lisitsynchain got disconnected19:14
@wikingHeikoS: and gist2 would be testing clone itself19:14
@HeikoSwiking: ehm :)19:15
@wikingand after this clone+equails?19:15
@wikingah nooo19:15
@wikingi see19:15
@HeikoSwiking: yes, first equals on empty instances, then clone itself, then clone&equals19:15
@HeikoSso if we run them with valgrind, we will see where problems are coming from19:15
@wikingi'm on it19:18
shogun-notifier-shogun: Heiko Strathmann :develop * b757a6d / src/shogun/kernel/string/SpectrumMismatchRBFKernel.cpp:
shogun-notifier-shogun: whitespace change19:18
shogun-notifier-shogun: Heiko Strathmann :develop * a384e6b / src/shogun/features/RealFileFeatures.cpp,src/shogun/features/RealFileFeatures.h:
shogun-notifier-shogun: remove generic type by hand19:18
shogun-notifier-shogun: Heiko Strathmann :develop * e0b2b58 / src/shogun/ (3 files):
shogun-notifier-shogun: Merge pull request #1259 from karlnapf/develop19:18
shogun-notifier-shogun: unset generic for RealFileFeatures19:18
@HeikoSwiking, lisitsyn this fixes problem 2 :)19:18
@HeikoSman sooo many bugy detected by this automated stuff19:19
@HeikoSreally good, we will be able to rely on those methods in the future, good for parallel stuff etc19:19
@lisitsynHeikoS: ok let me fix the P1 then19:19
shogun-buildbotbuild #1468 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>19:23
shogun-buildbotbuild #1467 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>19:36
@HeikoSlisitsyn: MulticlassStrategy is missing in class_list.cpp any idea whsy?19:39
@lisitsynHeikoS: hmm19:39
@HeikoSlisitsyn: abstract :)19:40
@lisitsynah yes19:40
@HeikoSgetting tired  her e:)19:42
@sonney2kHeikoS, had a good day?19:45
@HeikoSsonney2k: ehm, why? )19:45
@sonney2kwiking, did you check the videos already?19:45
@sonney2kHeikoS, hacked like hell?19:45
@HeikoSsonney2k: yeah had some time today :)19:45
-!- travis-ci [] has joined #shogun19:48
travis-ci[travis-ci] it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []19:48
@HeikoSsonney2k: flow of bugs doesnt stop :)19:48
@HeikoSbut I am half way through19:48
@HeikoSthe class list19:48
@sonney2kHeikoS, it can only grow :)19:48
@HeikoSnow CGUIPluginEstimate19:48
@HeikoSsonney2k: these tests by wiking are worth gold19:48
@sonney2kwait everything CGUI* should not be in the test19:48
@HeikoSwe can actually make sure that all those things work19:48
@HeikoSwiking:  ^19:48
@HeikoSsonney2k: still contains uninitialsed variables19:49
@HeikoSwiking, sonney2k we can leave them in there19:52
@HeikoSits good to have these checks19:52
@sonney2kiglesiasg, with the opaque pointer stuff - we should somehow mark the classes that we don't want to expose externally19:53
@sonney2kso we don't install these headers19:53
@iglesiasgsonney2k, sure19:53
@iglesiasgsonney2k, so are we doing it to reduce compilation time mainly?19:54
@iglesiasgsonney2k, or are there other reasons?19:54
@sonney2kiglesiasg, I see 3 reasons19:55
@sonney2k1) reduce compilation time19:55
@sonney2k2) reduce swig wrapper code size19:55
@sonney2k3) don't have external library dependencies (like pthread/eigen...) in shogun code19:55
@iglesiasgsonney2k, a couple of questions: 1) the classes for opaque pointers, should they inherit from SGObject?19:56
@sonney2kiglesiasg, they can do whatever they want19:56
@iglesiasgall right19:57
@iglesiasgsonney2k,  that answers the second question too I guess so no need :)19:57
@HeikoSsonney2k: any reason why in GUI you dont ref parameters? SG_REF I mean19:57
@sonney2kHeikoS, legacy code...19:58
@HeikoSsonney2k: so its safe to add this?19:58
@sonney2kHeikoS, I woudln't voluntarily touch this code20:00
@HeikoShave to20:00
@HeikoSuninitialised mrmory20:00
thoralfHeikoS: Hehe, initialization should be safe for working code.20:04
thoralfHeikoS: If it doesn't work afterwards, you found something really-weird[tm]. ;)20:04
@HeikoSthoralf: indeed :)20:05
thoralfHeikoS: I like these kind of bugs. :)20:05
@HeikoSI mean all shogun objcets should not crash if you just call the base constructor and delete afterwards right?20:05
@iglesiasglet's say all objects :)20:06
thoralf"My fix shouldn't have any side effects.  Why did it stopped working anyway?"20:06
thoralfHeikoS: There are more objects like this.  One second.20:06
@wikingHeikoS: yes i can :)20:06
@HeikoSwiking:  thanks :)20:06
@HeikoSthoralf: I will find them all20:07
thoralfThis one should be one of them: src/shogun/structure/SequenceLabels.cpp20:07
thoralfJust an educated guess.  Tell me if I was right. :)20:07
@HeikoSthoralf: will do :)20:09
@HeikoSvery soon, we will have none of those20:09
gsomixsonney2k, hey?20:09
thoralfHeikoS: [ERROR] constructur CStructuredLabels() needs size argument20:09
thoralfHeikoS: I guess it should be at least marked as SG_NOTIMPLEMENTED20:09
thoralfHeikoS: But actually that's no crash.20:10
@HeikoSwiking: do you have an idea how we can test non-trivial class instances in an automatic way?20:12
@HeikoSso not base constructor20:12
@sonney2kgsomix, hey20:14
gsomixsonney2k, how are you?20:14
@sonney2kiglesiasg, problem is that I have this pthread class here20:14
@sonney2kiglesiasg, all in .h (templated class)20:14
thoralfHeikoS: Hmm.  The test generator then needs to understand the semantic of the parameters *and* also needs to initialize them properly.20:14
thoralfHeikoS: So if the parameters are also non-trivial? ;)20:14
@sonney2kiglesiasg, now I am refactoring it into a CLock class providing all the functions there20:14
@iglesiasgsonney2k, that sounds good. Is there any problem doing that?20:15
@sonney2kiglesiasg, but it has a state / a type variable so my CLock.h depends on pthread but I don't want it too20:15
@sonney2kgsomix, did swim my first few km20:15
@HeikoSthoralf: yes20:15
@sonney2kbut too much wind20:15
@HeikoSobviously devs have to write those20:16
thoralfHeikoS: Anyway, automated tests are bad since they don't have real assertions.20:16
gsomixsonney2k, I'm stuck with some details. are there some ideas how truly work with quotation?20:16
@HeikoSI am thinking of something that is being provided but then automatically checked20:16
@sonney2kgsomix, truly as in?20:16
thoralfHeikoS: But you could generate code for different corner cases for every data type (lets say SGMatrix) and then manually write code like: new CFooBar(empty_sgmatrix), new CFooBar(one_element_sgmatrix), etc.20:17
thoralfHeikoS: So everyone can re-use this code without bothering about trivial test cases.20:18
@sonney2kgsomix, I think you can only follow
thoralfHeikoS: Eliminate code duplication when initializing tests. :)20:18
@sonney2kgsomix, I don't really care if we don't support *all* of it though20:19
@sonney2kthe most basic format will be sufficient most of the time20:19
@sonney2kgsomix, as in just ,'s20:19
@iglesiasgsonney2k, any way to get rid of that state variable easily?20:20
@HeikoSthoralf: this is more to check that all is set up fine for serialisation and clone20:20
thoralfHeikoS: So forget automatic tests - just make it easy[tm] to write new tests.20:20
thoralfHeikoS: I know.  But you asked for automatic tests. ;)20:20
@HeikoSthoralf: no, this actually help developers writing new classes since theyx are forced to do the basic things correctly20:21
@iglesiasgsonney2k, if you make the methods in CLock used in the pthread class static, then the pthread class does not need a CLock member and it could make sense to have a pthread class member in CLock20:21
thoralfHeikoS: Writing tests as an tutorial into shogun?20:22
@HeikoSthoralf: thats always good :)20:22
thoralfHeikoS: I think if you ("we") provide code for trival corner cases, this will help even sonney2k to write more test. ;)20:22
@sonney2kiglesiasg, the only idea I have is to use a void* currently and alloc / cast it from the .cpp20:22
gsomixsonney2k, hm, ok. I just want to ask when I should process quotation: either in BufferedReader or in DelimiterTokenizer? I think that it's work for tokenizer - it will be automagically for readers.20:23
@iglesiasgit sounds pro-hacking :)20:23
@sonney2kgsomix, ohh I thought that this is not even the tokenizer nor the reader20:24
@sonney2kbut the csvreader20:24
thoralfHeikoS: Just imagine some kind of emplate: "CFoobar( __INSERT_SG_MATRIX_HERE__ )", then generate some code that iterates over all provided SG_MATRIX instances, instanciates and destroys instances.20:24
@HeikoSthoralf: totally20:25
gsomixsonney2k, in this case I should read line, then tokenize by <quote_char> and analyze it. right?20:25
@sonney2kgsomix, I mean stuff like " " can just be stripped for everything that is not string20:25
thoralfHeikoS: Some python script that generates CPP code.20:25
@HeikoSthoralf: we have this, look at wikings tests20:26
@sonney2kgsomix, and for strings you might need to merge multiple tokens if they contain a , (and this is the delimiter token)20:26
@sonney2kand the strings are in " "20:26
thoralfHeikoS: But why can't you use this to write automated tests for non-trivial constructors?20:26
@sonney2kgsomix, so  your job is easy for all non-string stuff20:27
@HeikoSthoralf: I get the idea now, nice idea20:27
@HeikoSso we have a set of objects of all sorts of types20:27
@HeikoSthat are then inserted into the constructors20:27
@HeikoSsounds tricky, but might actually be helpful20:27
thoralfHeikoS: All you need to do is to write a "template" for each constructor you want to test.20:27
thoralfHeikoS: Why tricky?20:27
thoralfHeikoS: just write: foreach my $sgmatrix (@sgmatrices) { print "void foo${i}Test() { CFoobar * f = new CFoobar( $placeholder ); delete f; }\n"; }20:29
@sonney2kgsomix, csv is no 'standard' so supporting a couple of formats is totally sufficient20:30
@HeikoSthoralf: we have a lot more classes in sghoun thats why I think its tricky20:30
thoralfHeikoS: Okay, I understand.20:30
@sonney2kgsomix, you should send a PR once you have the simplest variants working20:30
@sonney2kgsomix, we can always improve20:30
thoralfHeikoS: Need to go.  See you tomorrow?20:30
@HeikoSthoralf: bye! :)20:30
thoralfHeikoS: I like your idea, maybe I could help.20:30
@sonney2kgsomix, OK or questions?20:31
thoralfHeikoS: At least for memory-checking it could be handy.20:31
@sonney2kiglesiasg, better ideas?20:31
gsomixsonney2k, questions. :) reader is responsible for determining the number of columns, not user. right?20:32
@sonney2kiglesiasg, I mean this is what I have:
@HeikoSthoralf: cool, lets discuss soon!20:32
gsomixfor csv20:32
@sonney2kgsomix, sure20:32
@iglesiasgsonney2k, did you read the one with static methods?20:33
@sonney2kgsomix, but with an optional SGVector<index_t> argument where the user can specify which columns to take20:33
@sonney2kiglesiasg, yeah but you have no state then right?20:33
@iglesiasgtrue... stupid solution20:34
-!- zxtx [] has quit [Ping timeout: 248 seconds]20:34
-!- pickle27 [] has quit [Quit: Leaving]20:34
@iglesiasgI am thinking20:35
gsomixsonney2k, ok. now I'm little stuck with sequential read. My BufferedReader does not guarantee, that stream position will be at end of token after read.20:36
@iglesiasgsonney2k, but I don't understand. Why does it need the state from the pthread class?20:36
gsomixis it problem?20:36
@sonney2kiglesiasg, it is the lock20:37
@iglesiasgsonney2k, the class CLock here is *not* the one to cover with opaque pointer then?20:37
@sonney2kgsomix, I don't get it then. Doesn't your buffered reader read 1 line at a time?20:38
@sonney2kiglesiasg, no no it is CSGObject / CMap etc20:38
@sonney2kiglesiasg, these need some way to 'lock' things20:38
gsomixsonney2k, nope. reader read big block of file in buffer. and then tokenizing it in memory.20:38
@sonney2kagainst concurrent access (pthread)20:38
@sonney2kgsomix, I thought you use it to just read full lines? I mean I know that it internally reads big blocks but then?20:39
@sonney2kgsomix, what do you do?20:39
@iglesiasgsonney2k, so the CSGObject, the CMap, etc have a CLock member20:40
@sonney2kiglesiasg, problem is I need this pthread_spinlock_t or pthread_mutex_t in CLock20:40
@sonney2kiglesiasg, yes20:40
@sonney2kiglesiasg, I could certainly have a void* lock; in CLock20:41
@iglesiasgsonney2k, but we don't need to expose the CLock to the interfaces either20:41
@sonney2kand then allocate the real lock to this20:41
@sonney2kiglesiasg, no but it is some .h still20:41
gsomixsonney2k, then, after reading of big block, you can get token (part of the file between the delimiters) in useful form: string or number.20:42
gsomixbut stream position of your file is at end of big block.20:42
@iglesiasgsonney2k, aham ok. Then the problem here is different. I do include eigen and STL stuff in the LMNNImpl header20:42
@sonney2kiglesiasg, so you mean not to expose CLock to anything outside right?20:42
@iglesiasgsonney2k, yes20:43
@sonney2kgsomix, but why not get line by line? and then csv tokenize the line?20:43
@sonney2kiglesiasg, so how do we mark classes then that are not to be exported?20:44
@sonney2knot swigged etc?20:44
@iglesiasgsonney2k, isn't some SWIG instruction to do that?20:44
@iglesiasgI thought that was the whole point of it :)20:45
@iglesiasgthat there was something to tell SWIG not to create wrappers around some classes20:45
gsomixsonney2k, yes, that's what I was thinking today. it will produce little more SGVectors. but not critical.20:45
gsomixsonney2k, next question about ?File interface. Do we plan to change it?20:48
gsomixI mean change pure arrays to SGVectors.20:49
@sonney2kiglesiasg, ahh yes sure we just don't %include it20:49
@sonney2kiglesiasg, but not that we also install the .h files20:50
@iglesiasgsonney2k, that's it!20:50
@sonney2kiglesiasg, and in principle everyone can just use the* and the *.h files and do everything from c++ w/ shogun20:50
@iglesiasgsonney2k, yes20:51
@sonney2kgsomix, what are you doing currently20:51
@iglesiasgsonney2k,  although it would be actually nicer if the "opaque pointer classes" can only be used from a specific class20:51
@sonney2kiglesiasg, in this case having a CLock class might be actually useful (it works under osx/linux ...)20:51
@sonney2kiglesiasg, C++ has no package private so...20:52
@iglesiasgyeah, no idea how to do that20:52
@iglesiasgsonney2k, but anyway in this way we reduce the wrapper code size and thus, compilation time (I guess)20:53
@HeikoSsonney2k: wow CHMM.cpp serious stuff !20:55
@sonney2kHeikoS, I want to minimize shogun's external .h files20:56
@HeikoSsonney2k: agreed20:57
@sonney2kHeikoS, as in we currently have tons of functions in .h files that we don't want to see exposed to the outside20:57
@sonney2kwe had the issue with iglesiasg with eigen/std whatever external that was needed20:57
@iglesiasgsonney2k, to the outside is basically SWIG interfaces, right?20:57
@sonney2kbut could well be hidden20:57
@HeikoSsonney2k:  how do you want to proceed on this?20:58
@sonney2kiglesiasg, yeah basically what one can see from  swig or via out libshogun interface (the .h files we ship and will install)20:58
@iglesiasgthey are still exposed in libshogun using opaque pointers, I think20:58
@sonney2kHeikoS, the question is how to mark .h files external...20:58
@sonney2kHeikoS, either we use some other extension - say .hpp20:59
@HeikoSsonney2k: lisitsyn probably has best ideas on this20:59
@sonney2kand only install .h files20:59
@HeikoSsonney2k: I dont like that, too complicated20:59
@sonney2kor we mark the files somehow20:59
@iglesiasglisitsyn, hey!20:59
@lisitsynthe problem is ..20:59
@lisitsyniglesiasg: hey20:59
@sonney2kHeikoS, as in DO_NOT_EXPORT20:59
@lisitsynwe don't want to expose some .h?20:59
@HeikoSsonney2k: yep I like that more20:59
@sonney2klisitsyn, yes not install20:59
@lisitsynI think keeping that in filename would be better21:00
-!- pickle27 [~kevin@] has joined #shogun21:01
@sonney2kHeikoS, apart from that woaah! You were on some crazy cleanup spray today. I don't see how stuff can work with what you suggest but anyway! wow!21:02
@sonney2klisitsyn, what did you do with tapkee?21:02
@sonney2klisitsyn, .hpp? or .internal21:02
@lisitsynsonney2k: I think we are installing it21:02
@sonney2klisitsyn, bah :/21:02
@HeikoSsonney2k: the unit tests dont segfault anymore now21:03
@sonney2kHeikoS, and if we used a different file suffix21:03
@HeikoSsome fail, but thats fine21:03
@HeikoSsonney2k: if we want to seriously use clone/equals we have to do those tests21:03
@lisitsynsonney2k: easiest way is to not install .hpp21:03
@HeikoSsonney2k: I want to push things to be more stable21:03
@sonney2knot .hpp but .h_internal or whatever21:03
@sonney2kor .hpp21:03
@HeikoSsonney2k: and I really think we should drop tons of code, I saw sooo many things today that will never ever work again21:03
@sonney2kwe could of course have some #define DO_NOT_EXPORT21:03
@sonney2kand then put that in each file we don't want to expoert21:04
shogun-notifier-shogun: Heiko Strathmann :develop * 23ee5e6 / src/shogun/base/SGObject.cpp:
shogun-notifier-shogun: updated error message of clone fails21:04
shogun-notifier-shogun: Heiko Strathmann :develop * 5c4d110 / src/shogun/features/streaming/StreamingHashedDocDotFeatures.cpp:
shogun-notifier-shogun: fixed uninitialised memory issues21:04
shogun-notifier-shogun: Heiko Strathmann :develop * 9f30ba8 / src/shogun/classifier/vw/VowpalWabbit.cpp:
shogun-notifier-shogun: fixed uninitialised memory bugs21:04
@lisitsyndo not export is worse I believe as you can't see what file is exported without looking into it21:04
shogun-notifier-shogun: Heiko Strathmann :develop * 2298b8f / src/shogun/distance/KernelDistance.h:
shogun-notifier-shogun: fixed null-pointer exception21:04
shogun-notifier-shogun: Heiko Strathmann :develop * e542d2b / src/shogun/multiclass/ (3 files):
shogun-notifier-shogun: fixed some uninitialised memory related bugs21:04
shogun-notifier-shogun: Heiko Strathmann :develop * 15b307a / src/shogun/ui/GUIPluginEstimate.cpp,src/shogun/ui/GUIPluginEstimate.h:
shogun-notifier-shogun: added init method to fix uninitialsed memory bugs21:04
shogun-notifier-shogun: Heiko Strathmann :develop * ab0d397 / src/shogun/ui/ (6 files):
shogun-notifier-shogun: fixed uninitialised memory bugs21:04
shogun-notifier-shogun: Heiko Strathmann :develop * 783aa89 / src/shogun/ (11 files):
shogun-notifier-shogun: more uninitialised memory fixed21:04
shogun-notifier-shogun: Heiko Strathmann :develop * 8a9fd52 / src/shogun/evaluation/ (4 files):
shogun-notifier-shogun: fixed some ultra subtle bugs that broke clone/equals21:04
@HeikoSah I should have squashed that sorry21:04
@sonney2kHeikoS, seen lisitsyn's argument21:04
@sonney2kHeikoS, I think he has a point21:04
@sonney2kHeikoS, I would rather go for .hpp or some other suffix too21:05
@iglesiasgsonney2k, yes me too21:05
@iglesiasgI'd rather use another one than .hpp21:05
@sonney2kiglesiasg, which?21:06
@sonney2k.hsg ?21:06
@iglesiasgsonney2k, I don't know if there is something standard used for this21:06
@iglesiasglet's think first how would we use them21:06
@iglesiasgwould them files that are just included from .cpp files?21:07
@iglesiasgwhat should we keep in there, class definition + implementation?21:07
shogun-buildbotbuild #1469 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>21:07
@HeikoSsonney2k, lisitsyn you know better how to do that than me :)21:08
@sonney2kiglesiasg, these files should never be included from a .h file21:08
@sonney2kiglesiasg, apart from that they can contain anythin21:08
@iglesiasgsonney2k, agree21:09
shogun-buildbotbuild #1471 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>21:10
@sonney2kiglesiasg, I would move out all code from private (certain protected) functions into that stuff21:10
shogun-notifier-shogun: Heiko Strathmann :develop * 0a0df56 / src/shogun/multiclass/ecoc/ECOCStrategy.cpp:
shogun-notifier-shogun: fix forgotten SG_REF21:10
shogun-notifier-shogun: Heiko Strathmann :develop * 1207010 / src/shogun/multiclass/ecoc/ECOCStrategy.cpp:
@iglesiasgsonney2k, yes21:10
shogun-notifier-shogun: Merge pull request #1261 from karlnapf/develop21:10
shogun-notifier-shogun: fix forgotten SG_REF that broke a python example21:10
@HeikoSwiking, lisitsyn unit-tests are not segfaulting anymore, but some of them are failing, once wiking has added the other baseline tests, feel free to search for the problems21:11
@sonney2klisitsyn, HeikoS, iglesiasg I am for .hsg21:13
-!- travis-ci [] has joined #shogun21:14
travis-ci[travis-ci] it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []21:14
@HeikoSgoing home, see you guys!21:14
@iglesiasgHeikoS, bye!21:14
@iglesiasgsonney2k, .hsg files are a thing or something you came up with?21:14
@iglesiasgunassigned file extension21:14
@HeikoSwiking: in fact, the remaining unit tests might be caused by the PT_NOT_GENERIC thing, the few I checked were caused by this21:15
@HeikoSlisitsyn: ^21:15
van51hello sonney2k21:15
@HeikoSall of them are generic classes21:15
@lisitsynHeikoS: I am on it21:15
@lisitsynjust near to be done actually21:16
@lisitsynI am writing template21:16
@HeikoSlisitsyn: cool, how much longer does it take? will wait then21:16
van51sonney2k: first of all I'm sending a PR about the streaming version of the hashed sparse features21:16
@lisitsynHeikoS: may be 20 minutes I don't know21:16
@HeikoSlisitsyn: ok going then :) see you tomorrow21:16
van51sonney2k: but I'm having a weird problem which I'll explain there, maybe you have an idea21:16
@lisitsynHeikoS: see you!21:16
shogun-buildbotbuild #1472 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>21:17
van51sonney2k: secondly, Olivier in his email suggested that maybe I should do a cleanup of the StreamingVwFeatures class21:18
van51sonney2k: do you think I should do that?21:18
van51sonney2k: the next step would be to implement quadratic features21:18
shogun-buildbotbuild #1473 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>21:19
van51sonney2k: when I get started with them, should they be an extension/extra method of the StreamingVwFeatures class?21:19
@sonney2kiglesiasg, I came up with it would be a .h and sg for shogun internal21:19
@sonney2kvan51, hey there21:20
@iglesiasgsonney2k, aaah ok. Then it is funny, because I found this :D
shogun-buildbotbuild #1470 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>21:21
van51sonney2k: I g2g21:26
van51sonney2k: sorry for talking you so late..21:26
van51sonney2k: comment here and I'll check the logs21:27
van51sonney2k: also I've sent the PR21:27
-!- van51 [] has quit [Quit: Leaving.]21:27
gsomixsonney2k, writing marcoses for csv reader.21:33
gsomixsonney2k, I can send WIP PR, if it's needed.21:34
@sonney2kgsomix, better do so we have sth to discuss21:35
gsomixsonney2k, ok.21:37
gsomixsonney2k, btw there is header LibSVMFile.21:37
@sonney2kiglesiasg, ohh I have an issue wiht my CLock still21:38
gsomixbut where is code?21:38
@iglesiasgsonney2k, what is it?21:38
@sonney2kiglesiasg, the Map class is templated and it uses in its functions the lock.lock() etc functions *from the header*21:39
@sonney2kiglesiasg, so I cannot use forward declarations of CLock21:39
@sonney2kiglesiasg, and so my effort is rather pointless for CMap...21:39
@sonney2kgsomix, not sure what you are asking21:40
-!- HeikoS [] has quit [Quit: Leaving.]21:40
@sonney2kgsomix, do you mean how a libsvm == svmlight file looks like?21:40
gsomixsonney2k, yeah, it will be useful for me. :)21:41
@sonney2kgsomix, it is just21:42
@sonney2k+1 index:value index:value21:42
@sonney2kand +/-1 at the beginning is the label21:42
@iglesiasgsonney2k, it looks messy in CMap21:43
@sonney2kso result is a SGVector with the labels and SGSparseMatrix21:43
gsomixsonney2k, aha, thanks.21:44
@sonney2kgsomix, some may actually not have the labels though21:45
gsomixsonney2k, and last question while you are here. protobuf is Google's framework?21:45
gsomixerr, format21:45
@sonney2kgsomix, it is a general description language for data21:48
gsomixsonney2k, this?21:48
@sonney2kgsomix, it basically works like this:21:48
@sonney2kgsomix, you define something like a C struct { }; with all the data in tehre21:49
@sonney2kfor *one* small struct only21:49
@sonney2kin some .proto file21:49
@sonney2kso for an sgvector that could actually be the whole e.g. repeated double vector=1;21:50
@sonney2kand then you can take that .proto file and use protoc to compile it into a .cpp / .h file21:50
@sonney2kand you get classes that you can fill with dat21:50
@sonney2kand in the end can create a binary output stream to put on disc21:51
@sonney2ksame for loading21:51
gsomixsonney2k, aham.21:51
@sonney2k however there is one catch21:52
@sonney2kyou should not generate too big proto objects21:52
@sonney2ksince they need to be completely in memory21:52
@sonney2kto be decoded / written to disc21:53
gsomixsonney2k, there is not clear what is purpose for shogun. something like serialization for complex data?21:53
@sonney2kgsomix, no write the data in some efficient but portable binary format21:54
@sonney2kgsomix, protobuf exists for java python c ...21:54
gsomixah, ok21:55
@sonney2kit is not for serialization21:55
@sonney2kI mean what I would want to use it for21:55
@sonney2kbut rather for dumping objects21:55
@sonney2kgsomix, I think we should allow one of the compressors we have in shogun to be applied on top anyways21:55
@sonney2kbut first things first21:56
@sonney2k(see shogun/lib/Compressor.h)21:56
gsomixsonney2k, ok. got it, thanks for briefing.21:56
-!- pickle27 [~kevin@] has quit [Quit: Leaving]22:00
-!- zxtx [] has joined #shogun22:06
-!- travis-ci [] has joined #shogun22:06
travis-ci[travis-ci] it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []22:06
-!- foulwall [~user@2001:da8:215:c252:345c:3d3e:aa54:5dec] has joined #shogun22:29
@wikingtime to do some work on shogun22:50
@wikinganybody still awake?22:50
@sonney2kwiking, hey there!22:51
@wikingsonney2k: yo22:51
foulwallHey sonney2k22:51
@sonney2kwiking, how is it going with the videos? did you have a chance to look at them?22:51
@wikinghow's the island?22:51
@wikingsonney2k: yep22:51
@sonney2kfoulwall, awake already?22:51
foulwallHello wiking22:51
@wikingsonney2k: trying to cut them... but it'll need some nice postprocessing22:51
@wikingsonney2k: i'll have them before august22:52
@wikingbut i cannot promise more than that22:52
@sonney2kwiking, yes certainly - much faster than me!22:52
foulwallnop, too hot here, I cannot fall asleep.22:52
@sonney2kfoulwall, heh comfy here around 22 C at day time22:54
@sonney2kand 16C at night22:54
@sonney2kwiking, yeah it is nice here. wind is a bit strong to swim but body surfing is fun too22:54
@wikingsonney2k: i'm at 35+ day and 25+ night ;)22:54
@wikingsonney2k: the island is covered with 3g? :P22:55
@sonney2kwiking, poor guy22:55
@wikingsonney2k: nah i love hot weather22:55
@wikingso it's good for me22:55
@sonney2kwiking, yes I bought a t-mobile prepaid just for that22:55
@wikingsonney2k: hehehe cool22:55
@sonney2kbut for some reason I spent my 1G limit within 1 week already22:55
@wikingtoo much pr0n ;)))))22:56
@sonney2kso now I am on 32K22:56
@sonney2kand linux updates ;)22:56
@wikingah shit22:56
@wikingsomebody fix this22:56
@wikingas i keep forgetting it22:56
@sonney2kwiking, no seriously I was sharing this amoung a couple of android / linux devices22:56
@sonney2kI guess they all updated over night22:56
@wikingor is this intentional:22:56
@wikingio/LineReader.cpp:10:18: warning: extra tokens at end of #include directive [-Wextra-tokens]22:56
@wiking#include <cstdio>_22:56
@wikingaaah yeah for sure they work autoupdating all the apps22:57
@sonney2kwiking, no gsomix promised to fix this - but you are like #3 to report it22:57
@wikingah ok22:57
@wikingfixing it now22:57
@wikinggood that github has webeditor ;)22:57
shogun-notifier-shogun: Viktor Gal :develop * 26b76c6 / src/shogun/io/LineReader.cpp:
shogun-notifier-shogun: Remove extra tokens at end of #include22:58
gsomixwiking, tnx, you're my hero. :)22:59
-!- travis-ci [] has joined #shogun23:00
travis-ci[travis-ci] it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []23:00
@sonney2kwiking, one question also to you - I want to move all code that we don't want to expose to swig / libshogun headers somehow into extra classes23:01
@wikingwhich ones?23:02
@sonney2kwiking, i.e. all private functions go into some helper classes23:02
@sonney2kmaybe even useless protetcted functions23:03
@sonney2kthat are then just forward declared23:03
@sonney2kand no .h is included23:03
@wikingthat's a lot of tidious work23:05
@sonney2kwiking, sure but it will decrease swig wrapper code size23:05
@sonney2kand also improve compile speed23:05
@iglesiasgsonney2k, compilation speed wouldn't improve for any other reason apart from swig wrapper size, right?23:06
@sonney2kwiking, the question now is I need to place things into other header files - lisitsyn suggested to use some other suffix and I was thinking about using .hsg (for header shogun internal)23:06
@sonney2kiglesiasg, but also recompile time !!23:06
@iglesiasgsonney2k, true, indeed23:06
@sonney2kiglesiasg, you usually have all the heavy code in the private functions23:06
@iglesiasgI am very supportive with this change!23:07
@iglesiasgsonney2k, header shogun internal may be misleading though since these files will not be actually headers, right? I mean we will put in there both class definitions and implementations23:07
@sonney2kiglesiasg, no just headers23:08
@wikingsonney2k: nobody did this before? :)23:08
@sonney2kiglesiasg, and in .cpp still the impl.23:08
@sonney2kkid crying23:08
@iglesiasgwiking, do you mean in another project?23:09
@wikingsonney2k: i mean i guess some bigger project has done this before maybe... we should check out what they came up with. before completely reinventing the wheel23:09
@iglesiasgwiking, yes, I agree with you23:09
@iglesiasgwiking, any idea where?23:09
gsomixohmfg, big at my ceiling23:09
@iglesiasgwiking, opencv has matlab and python bindings I believe23:09
@iglesiasggsomix, run and save your life man!23:10
@wikingsince hopefully they're doing this for a while i.e. they even might have some know-how about this whole thing.23:10
@wikinggsomix: yeah i caught today 2 of them23:10
@iglesiasgfuck, I would scream like a girl for sure23:10
@iglesiasgI am really scared of insects :(23:10
@wikingiglesiasg: i know what i'll get u for your next bday ;D23:10
@iglesiasgactually, yesterday I had a bad time with a bee23:10
@iglesiasgno insects please!23:11
@wikingiglesiasg: a scorpio in a jar? :P23:11
@wikinghehe no worries23:11
@wikingit's already dead23:11
@wikingok anyhow now back to the unit tests heiko requested23:12
@iglesiasgI prefer a dog puppy ;)23:12
@lisitsyniglesiasg: ahh that's why you live in sweden23:13
@iglesiasglisitsyn, well, the insects are smaller in Spain23:14
@wikinglisitsyn: :DDDD23:14
@iglesiasgat least the ones I have come across23:14
@wikingiglesiasg: but more deadlier :D23:14
@iglesiasgwiking, really? I was never aware23:14
@wikingi mean there's no actual scary shit in northern europe23:15
gsomixiglesiasg, I'm scared a little. it's happened because of I have no glass in the window at my room.23:15
@wikingthe most scary stuff is a bear23:15
@wikinggsomix: hehehe invasion is about to start23:15
@lisitsynwiking: you speak like you met one23:15
@lisitsyndon't say you did23:15
@wikinglisitsyn: mmm not in sweden23:15
@sonney2kwiking, yes QT is using this everywhere23:15
@wikinglisitsyn: i've met one in a national park in the states... luckily i was on the high ground... so he just pissed off... but it was like 30m from me.23:16
@lisitsynhah damn man you have interesting life23:16
shogun-buildbotbuild #1474 of deb1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Viktor Gal <>23:16
@wikinglisitsyn: i had my camare on me....23:16
@lisitsynwiking: crazy!23:17
@wikingit's like 100mm focal23:17
@wikingso it was really not that far23:17
@lisitsynwiking: you take quite nice photos23:17
@wikinglisitsyn: that was long time ago23:17
@wikingexactly before i started my phd23:17
@iglesiasgwiking, amazing!23:18
@sonney2kwiking, so wiking yes this is standard and encouraged procedure - we just didn't know about it23:19
@wikingmaybe when i finish my phd i start finally again to take pix23:19
@wikingsonney2k: oh i see that's cool23:19
@wikingsonney2k: so we could take the ideas from qt23:19
@wikingsonney2k: so that we dont run into the same pitfalls23:20
@sonney2kbut we need a scheme of marking external and interanl files23:20
@lisitsynwiking: what camera do you use?23:20
@iglesiasgsonney2k, is there a link where they show this in qt or did you just find it in the code?23:20
@sonney2kiglesiasg, it was in the wikipedia page you gave me23:21
@wikinglisitsyn: i used to have a canon 400d, but it got stolen with my good objectives.... now i own a canon 5d mark ii23:21
@iglesiasgsonney2k, lol none like myself to put me in evidence23:21
@lisitsynwiking: you must have some money to have such a camera ;)23:23
@sonney2kOne type of opaque pointer commonly used in C++ class declarations is the d-pointer. The d-pointer is the only private data member of the class and points to an instance of a struct.... The d-pointer is heavily used in the Qt and KDE libraries.23:23
@wikinglisitsyn: well i dont spend too much on anything else... so i saved money for a long time.... and it's a big plus if your wife is doing stop motion animation where a pro camera is the minimum requirement ;P23:25
@wikingsonney2k: yeah i'm just reading this
@lisitsynwiking: I see :)23:25
@wikingas well23:27
-!- zxtx [] has quit [Ping timeout: 246 seconds]23:28
@sonney2kwiking, it will actually help us to have some stable ABI even23:28
-!- foulwall` [] has joined #shogun23:28
@wikingi was just reading that part23:29
-!- foulwall [~user@2001:da8:215:c252:345c:3d3e:aa54:5dec] has quit [Ping timeout: 264 seconds]23:30
@iglesiasgtime to get home, I will take a look about the conversation and the d-pointers links later23:32
@iglesiasgsee you!23:32
-!- iglesiasg [~iglesias@2001:6b0:1:1041:6549:4678:d91c:7b6f] has quit [Quit: Ex-Chat]23:33
@sonney2kfoulwall`, please cache the ocr demo23:35
@sonney2kfoulwall`, it takes ages to get feedback - and maybe print the detected number not as popup but as some text beneath23:35
@sonney2kfoulwall`, but it looks excellent apart from that!!23:35
@sonney2kwiking, only problem is templated classes23:37
@sonney2kwiking, they don't fit - because then one cannot use a class forward declaration23:37
@sonney2ksince in a truly templated class everythin is in the .h23:37
@sonney2kand so in the implementations one woudl need to access the forward declared class' member functions23:38
@sonney2kI need my 5hrs sleep23:39
foulwall`sonney2k, did you check the new version?23:46
@sonney2kfoulwall`, ahh yes much better23:52
@sonney2kfoulwall`, but one issue when one clicks recognize23:52
@sonney2kand then paints sth23:52
@sonney2kand clicks recognize23:52
@sonney2kthe image is not updated23:52
@sonney2knot the prediction23:53
foulwall`I'll fix that in today's pr23:55
@sonney2kfoulwall`, and the circle is sometimes white23:56
@sonney2kwhen painting23:56
-!- travis-ci [] has joined #shogun23:57
travis-ci[travis-ci] it's Viktor Gal's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []23:57
@sonney2kand while we are at it - we should probably collect the drawn images that a user classifies to improve accuracy23:57
* sonney2k Zzzzz23:58
foulwall`Oh, thanks for telling me :) night sonney2k23:58
--- Log closed Fri Jul 19 00:00:37 2013