Open in new window / Try shogun cloud
--- Log opened Tue Jun 25 00:00:03 2013
@iglesiasggood night my friends00:13
-!- iglesiasg [] has quit [Quit: leaving]00:13
shogun-buildbotbuild #971 of cyg1 - libshogun is complete: Failure [failed configure]  Build details are at  blamelist: Soeren Sonnenburg <>00:14
shogun-buildbotbuild #1139 of bsd1 - libshogun is complete: Failure [failed test_1]  Build details are at  blamelist: Soeren Sonnenburg <>00:21
shogun-buildbotbuild #1261 of deb3 - modular_interfaces is complete: Success [build successful]  Build details are at
-!- shogun-notifier- [] has quit [Quit: transmission timeout]02:47
-!- foulwall` [~user@2001:da8:215:503:4fa:3f4c:6816:3fe8] has joined #shogun02:50
-!- linus_ [b612b18a@gateway/web/freenode/ip.] has joined #shogun02:50
-!- travis-ci [] has joined #shogun02:51
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 []02:51
-!- nube [~rho@] has quit [Ping timeout: 248 seconds]02:57
-!- foulwall` [~user@2001:da8:215:503:4fa:3f4c:6816:3fe8] has quit [Ping timeout: 245 seconds]02:59
-!- linus_ [b612b18a@gateway/web/freenode/ip.] has quit [Quit: Page closed]03:03
-!- foulwall` [~user@2001:da8:215:503:61fb:3cf5:6e5b:5a35] has joined #shogun03:06
-!- zxtx [~zv@] has quit [Ping timeout: 246 seconds]03:17
-!- foulwall` [~user@2001:da8:215:503:61fb:3cf5:6e5b:5a35] has quit [Ping timeout: 245 seconds]03:42
-!- mode/#shogun [+o sonney2k] by ChanServ03:52
-!- travis-ci [] has joined #shogun03:52
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 []03:52
-!- foulwall` [~user@2001:da8:215:6901:14c1:888e:6755:f0f] has joined #shogun04:09
shogun-buildbotbuild #438 of nightly_default is complete: Success [build successful]  Build details are at
-!- travis-ci [] has joined #shogun04:27
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 []04:27
-!- travis-ci [] has joined #shogun04:58
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 []04:58
-!- foulwall` [~user@2001:da8:215:6901:14c1:888e:6755:f0f] has quit [Ping timeout: 245 seconds]05:07
-!- travis-ci [] has joined #shogun05:11
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 []05:11
-!- travis-ci [] has joined #shogun05:35
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 []05:35
-!- nube [~rho@] has joined #shogun05:44
-!- nube [~rho@] has quit [Ping timeout: 240 seconds]06:21
-!- nube [~rho@] has joined #shogun06:23
-!- hushell [] has joined #shogun06:43
@sonney2kgood morning hushell!06:43
hushellhi sonney2k07:13
hushellwiking: So you think the StructuredOutputMachine::set_labels() should be removed?07:14
hushellwiking: regarding another question about risk(), you still think putting risk() in StructuredModel better than in StructuredOutputMachine?07:17
hushellwiking: Thanks for participating the discussion, it's really hard to optimize the code by my own ...07:19
-!- lambday [67157f4f@gateway/web/cgi-irc/] has joined #shogun07:19
lambdaysonney2k: good morning... you're back :D07:19
lambdaywiking: saw your comment... I'll change it :)07:20
@wikinglambday: thnx07:21
lambdayI didn't SG_ADD the parameters.. will add it too and sent the PR..07:21
lambdayso, all classes need to have this init, right?07:22
@wikinghushell: just woke up :)07:24
@wikinghushell: i'm happy to discuss but in 30 mins or so07:24
hushellwiking: short discussion is more than enough07:26
hushellwiking: okay. We got 3 issues. Let me list here:07:27
hushell1) about labels, so we keep it a member var in StructuredModel, right? and remove the set_labels() in SOMachine07:28
hushell2) for risk(), I'd like to have like this: risk(ENUM_Objective_formulation) as a router, and there are implmentations like risk_nslack_margin_rescaling() etc.07:30
-!- gsomix [~Miranda@] has quit [Quit: Miranda IM! Smaller, Faster, Easier.]07:31
hushell3) the libqp functions need the risk(), if we put this in StructuredModel, then is the original design. But I'd like to see it becomes independent of the model, so I want to put it in SOMachine, so now I pass a CDualLibQPMachine* to libqp to call the risk()07:32
@wikinghushell: just a sec i'm reading it07:37
hushellwiking: No hurries :)07:37
hushellAcutually my other part of GSOC is independent of the SSVM stuff. I don't mind if we need more discussion before the refinement07:39
hushellFor a little bit more clear, you may want to look at this paper, which lists the 4 basic opt problems:
@wiking1) yes i would to that, as although it's not strictly model dependent but you need those for being able to train....07:39
@wikingalthough one could argue of course that it's totally model independent, but then you would need to remove both Features and Labels from the StructuredModel's ctor07:40
hushellyes, indeed. and we need to access m_labels for implementing argmax() etc07:40
hushellkeep m_features and m_labels in StructuredModel make life easier07:41
@wikingso in this case i would remove the labels part from the machine and maybe just keep reference to it, if it's inevitable to have it in the machine as well07:41
hushellin machine, it has a reference to model, so during training m_features and m_labels can be obtained07:42
@wiking2) i'll put some code up today for latentSOMachine, and you'll see there some enum magic for choosing SOSVM solver... this way maybe we can avoid having more enums...07:42
hushellHappy to learn this! :D07:43
@wiking3) i know why you need to pass CDualLibQPMachine* (reference to risk() function) but i feel it that semantically it's totally misleading :(07:43
@wikingsonney2k: ping07:44
hushellbecause the libqp is kind of C code07:44
hushellWe need pass the class pointer to access the risk()07:44
@wikinghushell: it's not kind of ;) it is ansi c code :P07:44
@wikinghushell: let's try to think of a better alternative for 3)07:45
hushellbefore it calls like this: model->risk()07:45
@wikinghushell: although i have currently no better idea... :P07:45
@wikinghushell: you'll see from latentSOSVM hacks how it's done.... as obviously the risk() is a bit different in case of latentSOSVM07:45
hushellI was thinking put all libqp functions into DualLibQPSOSVM07:45
@wikinghushell: noup do do that... libqp should be separate07:46
@wikinghushell: as it's totally independent...07:46
@wikinghushell: i mean libqp is an external lib that we keep on updating when libqp itself is being updated07:46
hushellanother way maybe change the arguments of risk()07:46
hushellso move risk() out of any class07:47
hushelland pass a StructuredModel pointer to risk()07:47
hushellso it can access m_features m_labels and StructuredModel::argmax()07:47
@wikinghushell: we might have troubles with swig interfaces when passing around function pointers..07:47
@wikingah that way07:48
@wikingrisk(StructedModel*, ...)07:48
@wikingand where would risk be implemented?07:48
hushella little bit strange anyway07:48
@wikingit'd be still part of DualLibQPSOSVM?07:48
@wikingmmm have to think about this a bit07:49
hushellPatrick like to see it be a part of LinearSOMachine07:49
@wikingwhy exactly LinearSOMachine ? :))))07:49
hushellbecause for online solver also need this07:49
hushellthe subgradient ...07:49
hushellmaybe StructuredMachine?07:49
hushellI mean in StructuredMachine07:50
@wikingyeah i would actually put it on the top of the hierarch07:50
hushellIt's hard to incorporate C and C++ !!!07:51
@wikingno not that much :P07:51
@wikingboth of them is C :>07:51
hushellnot very compatible07:52
hushellso why do you think BmrmStatistics svm_bmrm_solver(                                                                                        |||     get_col [shogun]07:53
hushell        CDualLibQPBMSOSVM  *machine07:53
hushellit's not good?07:53
@wikingbecause basically u are passing the solver itself07:53
@wikingsvm_bmrm_solver  is the BMRM solver (one of them)07:54
@wikingand you are passing CDualLibQPBMSOSVM07:54
@wikingto it which is actually just the wrapper class for the BMRM solver itself...07:54
hushellyes, you mean inside DualLibQPSOSVM, svm_bmrm_solver being called?07:54
hushellyes, semantically, it's wierd07:55
@wikingi mean because CDualLibQPBMSOSVM is just a wrapper c++ class for the different BMRM solvers...07:55
hushellIn my opinion, the best way is letting svm_bmrm_solver etc be member functions07:56
hushellbut now we cant07:56
hushellso maybe passing CDual* is not bad07:57
@wikingmmm i'm strongly against this approach :)07:57
-!- votjakovr [] has joined #shogun07:57
hushellWell, I don't have a preference here, so keep risk() in StructuredModel seems the only solution07:59
hushellwe don't have other classes to put this function07:59
@wikinghushell: let's ask the others as well ;)08:00
hushellokay, I will copy and paste our discussion and email to Patrick and Fernando, is there anybody else know this well?08:01
sonne|workwiking: how come you are awake?08:17
@wikingsonne|work: dunno man....08:17
@wikingsonne|work: we need a factory of Features ;)08:17
sonne|workwiking: oki then back to wrk!08:18
-!- gsomix [~Miranda@] has joined #shogun08:36
hushellwiking: okay, I sent a long email :)08:38
@wikingcool thnx08:39
-!- nube [~rho@] has quit [Ping timeout: 276 seconds]08:44
-!- foulwall` [~user@2001:da8:215:c252:2c89:bf3f:5f7a:c953] has joined #shogun08:54
-!- lisitsyn [] has joined #shogun09:04
-!- foulwall` [~user@2001:da8:215:c252:2c89:bf3f:5f7a:c953] has quit [Ping timeout: 245 seconds]09:17
sonne|worklambday: hey there!09:20
lambdaysonne|work: hey :D09:20
lambdaywhere were you? :-o09:21
sonne|worklambday: just an update - the json serialization issue you found was actually a bug in the lib json-c 0.10.009:21
sonne|workupgrading to 0.11.0 helped09:21
sonne|workdon't ask how long it took me to figure that out09:21
lambday:-s okay not asking!! but it got fixed yayy09:21
lambdayis the failing unit-tests for pythom_modular also due to this?09:22
sonne|worklambday: so please add the tests back09:22
sonne|worklambday: failing unit test?09:23
sonne|worknothing should fail currently09:23
sonne|workyes all good
sonne|workonly wiking needs to update json-c on his bsd1 bot09:23
lambdayawesome! so travis will go green again :)09:24
lambdayI'll check the tests..09:24
sonne|workwiking: we also need to require newer json-c on travis...09:30
-!- nube [~rho@] has joined #shogun09:32
-!- foulwall` [~user@2001:da8:215:c252:8c3c:7aac:23e9:fb11] has joined #shogun09:33
sonne|workhey foulwall`!09:38
sonne|workI hope I manage to have a current version of the demo running soon on nn.7nn.de09:39
lambdaysonne|work: the initialize we're talking about is for precomputing some stuffs that will be needed by other methods later... what would be a good name for that?09:47
lambdaysonne|work: and also, shall I change the "init" to "register_params" now?09:47
lambdaysonne|work: alright :)09:47
sonne|worklambday: the init() rename is a big effort I guess best done with some eclipse style UI09:48
sonne|workso rather no not now but we should really do this09:48
sonne|workinit() is such a useless name09:48
@wikingsonne|work: mmmm well there's the package that comes with ubuntu... if that's not good enough then we can have the wget hack as we have for gmock09:49
lambdaysonne|work: okay.. yes I use vim so big trouble for me09:49
sonne|workwiking: there is a newer one in debian09:49
@wikingsonne|work: or that ;)09:50
sonne|workwiking: in any case please do - otherwise travis won't go back to green09:52
@wikingsonne|work: don't we have a detect for json version in ./configure?: )10:01
sonne|workyes we do but ?10:02
sonne|worktests need them10:02
@wikingbut that's stupid10:02
@wikingif json is not found because of being too old10:02
@wikingtest based on json10:03
@wikingshouldn't be ran at all10:03
sonne|workthen we will never know if we break sth in json10:05
sonne|workwe should have all deps installed on the buildbots10:05
lisitsynsonne|work: I was thinking about a way to provide casts for interfaces automatic way10:13
sonne|worklisitsyn: like gsomix did you mean?10:13
lisitsynone way is CRTP but I am not sure you'd like it10:13
lisitsynsonne|work: yes obtain_from_generic10:13
lisitsynsonne|work: this makes SGObject template10:13
lisitsynand all derived classes are inherited this way:10:14
lisitsynclass MyClass: public SGObject<MyClass>10:14
lisitsynthen we can get static polymorphism for these casts10:14
sonne|worklisitsyn: how would you do that with swig then?10:14
lisitsynsonne|work: I didn't try but is there any problem?10:15
sonne|workwell you need to assign a name to each templated class10:15
lisitsynderived classes are not templated10:15
sonne|workso SGObject<MyClass> needs to be e.g. MyCLassSGObject10:15
sonne|workyeah but SGObject ones10:16
lisitsynwhat happens when we don't rename it?10:16
lisitsynone other issue is that it needs some fancier thing for SGObject -> A -> B  case10:17
lisitsynclass B : public SGObject<B,A>10:17
lisitsynclass A : public SGObject<A,Empty>10:17
lisitsynlike that10:17
lisitsynsonne|work: I am afraid of that way too10:18
-!- votjakovr [] has left #shogun ["normal"]10:18
lisitsynbut these manually tinkered obtain_from_generic are wrong indeed10:18
sonne|workI think swig will say that the base class is unknown10:18
lisitsynargh okay discard then10:19
sonne|worklisitsyn: or we have a templated function doing A -> B10:19
-!- iglesiasg [] has joined #shogun10:20
-!- mode/#shogun [+o iglesiasg] by ChanServ10:20
lisitsynsonne|work: what do you mean?10:20
sonne|workI don't see how to do that automatically but we could have a *single* templated obtain_from_generic function to convert A -> B10:24
sonne|workat least in C++. in swig we again have the issue that we need to use %template10:24
-!- foulwall` [~user@2001:da8:215:c252:8c3c:7aac:23e9:fb11] has quit [Ping timeout: 245 seconds]10:26
-!- thoralf [] has joined #shogun10:26
lisitsynsonne|work: no it has to be defined everywhere10:26
lisitsynsonne|work: what matters is return type10:26
lisitsynso no place for templates here10:26
lisitsynsonne|work: would be nice to *always* convert to real type10:27
@wikingsonne|work lisitsyn do we support mixed features, i.e. real and string features mixed?10:27
sonne|workwiking: sure10:28
@wikingsonne|work: which featuretype is that?10:28
sonne|workcombinedfeatures / combineddotfeatures10:28
@wikingchecking the api10:29
sonne|workwiking: just check out the examples...10:33
sonne|workyou can stack together dense/sparse/byte/float/whatever/stringfeatures10:34
lambdaywiking: using CRamdon::std_normal_distrib(), the unit-tests fails.. with a large margin :(11:04
-!- van51 [] has joined #shogun11:05
lambdaywiking:  may be I am using it wrong :-/ I'm pushing to my fork may be you can take a look?11:07
@iglesiasgis it normal to get like a thousand txt, json, hdf5, and xml files after running make in tests/unit?11:09
@iglesiasgok maybe not a thousand :)11:09
@iglesiasgwow I just got my GSoC package!11:15
lambdayiglesiasg: congrats :) I haven't got mine yet :(11:16
lambdayiglesiasg: regarding unit-tests, yes, those things I did :(11:16
@iglesiasghehe ok11:16
@iglesiasglambday: let's just add them to gitignore11:16
lambdayiglesiasg:  okay.. :)11:17
-!- foulwall` [~user@2001:da8:215:c252:6c33:cca0:7f6e:f184] has joined #shogun11:22
-!- foulwall` [~user@2001:da8:215:c252:6c33:cca0:7f6e:f184] has quit [Ping timeout: 245 seconds]11:27
lambdayiglesiasg: added..11:33
@iglesiasgthank you11:33
thoralfGiven a SVMLight file with binary labels in first column - is there an easy way to load only the labels into an BinaryLabels?12:02
thoralfWithout writing plenty of boiler plate code? :)12:03
-!- nube [~rho@] has quit [Quit: Leaving.]12:07
@iglesiasglisitsyn, sonne|work : I should set the doodle for the next GSoC meeting, so when do you think it should be?12:11
@iglesiasgbefore workshop?12:12
@iglesiasgafter workshop and before midterm?12:12
-!- vgorbati [~vgorbati@] has joined #shogun12:15
-!- vgorbati_ [~vgorbati@] has joined #shogun12:22
-!- vgorbati [~vgorbati@] has quit [Ping timeout: 248 seconds]12:24
-!- vgorbati_ is now known as vgorbati12:24
-!- votjakovr [] has joined #shogun12:29
-!- iglesiasg [] has quit [Read error: Operation timed out]12:38
lambdaygot my welcome package yahoo!12:39
lambdayoops! got my welcome package google!12:39
-!- gsomix [~Miranda@] has quit [Read error: Connection reset by peer]12:46
-!- gsomix [~Miranda@] has joined #shogun12:47
gsomixlambday: huh, congrats.12:47
lambdaygsomix: ty ty :D12:47
-!- foulwall` [~user@2001:da8:215:6100:5d2a:4700:d2a9:32e7] has joined #shogun12:52
@wikinglambday: ok checking13:09
@wikinglambday: oh nooo not good13:09
lambdaywiking: how to use it then?13:09
@wikinglambday: see comments13:11
lambdaywiking: alright.. yes got it.. thanks13:11
lambdayI'm checking and will let you know13:11
@wikingok cool13:11
lambdaywiking: thanks.. it works :) but log-det sample unit-test needs to draw more samples to pass 0.1 precision test it seems..13:16
lambdaywiking: works! :D, raised it to 10,000 from 1,000 and it passes13:18
-!- nube [~rho@] has joined #shogun13:18
-!- votjakovr [] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]13:19
-!- shogun-notifier- [] has joined #shogun14:04
shogun-notifier-shogun: Soeren Sonnenburg :develop * 9ccdc30 / src/shogun/multiclass/KNN.h:
shogun-notifier-shogun: remove commented out function14:04
vgorbatisonney2k: hello, are you here?14:11
sonne|workvgorbati: yes!14:22
vgorbati@sonne|work: I've started some work on implementing NN's, and since they should be inherited from 'CMachine', and thus implement 'train' method, I have a question: how do you usually handle a case, when there are multiple suitable training algorithms?14:24
sonne|workvgorbati: multiple machines!14:24
sonne|workvgorbati: e.g. libsvm, svmlight, ...14:24
vgorbati@sonne|work: so, different class for each training method, right?14:25
sonne|workyes with a common base class (e.g. CSVM)14:25
shogun-buildbotbuild #1140 of bsd1 - libshogun is complete: Failure [failed test test_1]  Build details are at  blamelist: Soeren Sonnenburg <>14:27
shogun-buildbotbuild #972 of cyg1 - libshogun is complete: Failure [failed compile]  Build details are at  blamelist: Soeren Sonnenburg <>14:28
vgorbati@sonne|work: that doesn't sound sensible for NN's.. I mean, for one architecture - say multilayered perceptron, you can use quite a lot of training algorithms - one reaches global minimum, but it is slower, another reaches local, but is much faster, the third one is randomized and so on. And it makes no sense to me to name a class like 'BackpropagationMultilayeredPerceptron' or 'LevenbergMarquardtMultilayeredPerceptron')14:30
vgorbati@sonne|work: but anyway, if it a preferred way:)14:32
vgorbati@sonne|work: *it is a preferred way14:32
-!- FSCV [~FSCV@] has joined #shogun14:37
sonne|workvgorbati: well it is the same with svms.14:42
sonne|workvgorbati: however, we have other algorithms like liblinear that internally can handle various loss functions14:43
-!- FSCV_ [~FSCV@] has joined #shogun14:43
sonne|workso another option is to set the training algorithm14:43
-!- FSCV [~FSCV@] has quit [Ping timeout: 255 seconds]14:45
vgorbati@sonne|work: you mean, like some field, say 'm_TrainingAlgorithm', of a neural network class?14:48
-!- FSCV_ [~FSCV@] has quit [Quit: Leaving]14:51
-!- van51 [] has quit [Quit: Leaving.]14:57
sonne|workvgorbati: yes but recall all lowercase and _ separated14:57
shogun-buildbotbuild #1263 of deb3 - modular_interfaces is complete: Failure [failed test python_modular]  Build details are at  blamelist: Soeren Sonnenburg <>15:00
vgorbati@sonne|work: okay, just to make sure I got everything right: 1. Add a base class 'CTrainer'. All concrete training algorithm will inherit from it. 2. Add a field 'CTrainer m_trainer' to the base neural network class. 3. The method NeuralNetwork.train(data) will just call m_trainer.train(this, data).15:05
sonne|workor if you have certain re-occurring patterns your CTrainer just defines a few functions that are used in the NN's train method and can be overridden15:22
vgorbati@sonne|work: got it, thanks15:24
-!- foulwall` [~user@2001:da8:215:6100:5d2a:4700:d2a9:32e7] has quit [Ping timeout: 245 seconds]16:20
-!- vgorbati [~vgorbati@] has quit [Ping timeout: 268 seconds]16:25
-!- pickle27 [] has joined #shogun16:29
-!- vgorbati [~vgorbati@] has joined #shogun16:33
-!- lisitsyn [] has quit [Read error: Connection reset by peer]16:50
-!- lisitsyn [] has joined #shogun16:51
-!- shogun-notifier- [] has quit [Quit: transmission timeout]17:04
-!- hushell [] has quit [Ping timeout: 246 seconds]17:16
-!- vgorbati [~vgorbati@] has quit [Quit: vgorbati]17:24
-!- travis-ci [] has joined #shogun17:39
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 []17:39
-!- lisitsyn [] has quit [Quit: Leaving.]17:51
-!- hushell [~hushell@] has joined #shogun17:51
-!- kevin_ [] has joined #shogun18:16
-!- pickle27 [] has quit [Ping timeout: 264 seconds]18:19
-!- lambday [67157f4f@gateway/web/cgi-irc/] has quit [Ping timeout: 264 seconds]18:20
-!- FSCV [~FSCV@] has joined #shogun18:28
-!- kevin_ [] has quit [Quit: Leaving]18:58
-!- gsomix_ [~Miranda@] has joined #shogun19:13
-!- lisitsyn [~lisitsyn@] has joined #shogun19:20
-!- zxtx [] has joined #shogun19:20
-!- Netsplit *.net <-> *.split quits: gsomix, nube19:21
-!- vgorbati [~vgorbati@] has joined #shogun19:26
-!- Netsplit over, joins: nube19:29
-!- pickle27 [] has joined #shogun19:50
lisitsynpickle27: hey there19:55
lisitsynhow is it going?19:55
pickle27hey good!19:55
-!- vgorbati [~vgorbati@] has quit [Ping timeout: 260 seconds]20:15
-!- vgorbati_ [~vgorbati@] has joined #shogun20:15
-!- vgorbati_ [~vgorbati@] has quit [Client Quit]20:17
-!- hushell [~hushell@] has quit [Ping timeout: 245 seconds]20:19
-!- hushell [~hushell@] has joined #shogun20:26
-!- hushell [~hushell@] has quit [Ping timeout: 260 seconds]20:31
@sonney2klisitsyn, wiking we got the rooms for the post workshop hands on session :D20:39
lisitsynsonney2k: c-base?20:39
@sonney2klisitsyn, tu berlin20:39
lisitsynsonney2k: oh nice20:40
@sonney2kfor 2 days20:40
lisitsynsonney2k: what should we do here though.. :D20:40
lisitsynsonney2k: my visa is ready btw20:42
@sonney2klisitsyn, hack shogun of course!20:46
@sonney2kmake plans and talk to each other20:46
lisitsynsonney2k: you are going to be away, richtig?20:46
@sonney2kyeah on holidays20:47
lisitsynsonney2k: schlecht!20:47
lisitsynsonney2k: we will be missing you ;)20:47
@sonney2kit is ok if you miss me but you are all grown ups20:47
@sonney2kand yes I will miss you too :D20:48
-!- vgorbati [~vgorbati@] has joined #shogun21:09
@wikingjesus fuck21:12
@wikingsonney2k: ah ok21:12
@wikingsonney2k: cool how long we can stay in c-basE?21:12
@wikingi.e. the real hacking time... ?:)21:12
-!- iglesiasg [] has joined #shogun21:29
-!- mode/#shogun [+o iglesiasg] by ChanServ21:29
-!- lambday [67157d4f@gateway/web/cgi-irc/] has joined #shogun21:35
@iglesiasghey lisitsyn, how are you doing?21:44
lisitsyniglesiasg: hey, mostly fine what about you?21:44
@iglesiasglisitsyn: fine too :)21:44
@iglesiasglisitsyn: let me ask you, how do you want we take care of my PRs for the metric learning project?21:45
@iglesiasgshould I take care of merging them myself or are you going to review them?21:45
lisitsyniglesiasg: oops sorry I forgot to comment it21:45
lisitsyniglesiasg: I am mostly ok with everything here21:46
@iglesiasglisitsyn: ok, just tell me in github what should I change21:46
@iglesiasgno need to be now, when you find some time ;)21:46
lisitsyniglesiasg: I think nothing so far21:46
@iglesiasgany clue why serialization_complex crashes?21:50
@iglesiasglisitsyn: what about the next meeting btw? before or after workshop?21:54
lisitsyniglesiasg: I'd choose before, lets see what sonney2k thinks21:54
@iglesiasglisitsyn: ok, I'd say before mid-term is enough -- so after workshop, before mid-term21:55
@iglesiasgbut yeah, let's see21:55
@iglesiasghey lambday21:55
@iglesiasghow are you doing?21:55
lambdayiglesiasg: good :) how're you doing? :)21:56
@iglesiasglambday: fine!21:56
lambdayiglesiasg: I couldn't set the PIN of the debit card tonight21:56
@iglesiasglambday: aham! why so?21:56
lambdaycalled the number up that they had given, but couldn't hear clearly what the voice was saying :-/21:57
lambdayiglesiasg: how did you do it?21:57
@sonney2kwiking, we have the workshop on the 12 (friday) and the hands on session at TU on saturday & sunday 12/1321:58
@sonney2kso real hacking time is the whole weekend21:58
@iglesiasglambday: haven't do it for the one I got today21:58
@iglesiasglambday: last year I just called from skype and talked to them, I got no trouble21:58
@iglesiasglambday: try later again, maybe it gets better with another speaker21:58
lambdaylike, talked to people or just recorded IVRS stuffs :-/21:59
@iglesiasglambday: BTW, it seems NormalSampler unit test fails on travis, have you seen?
lambdayiglesiasg: let me check21:59
@iglesiasgaround line 2842 in the log above21:59
@sonney2kiglesiasg, lisitsyn I won't have time anyway so just do it as you can22:00
@iglesiasgsonney2k: all right22:00
@iglesiasglisitsyn: I guess I could fit both before or after workshop, so why do you prefer before?22:00
lambdayiglesiasg: oh no! yeah I'll make it 100,000 then :-/ no idea why it works on my system and fails on travis!22:00
lisitsyniglesiasg: my preference is not that strong22:00
lambdayor make the precision less22:01
@iglesiasglisitsyn: so my point is that we have to make it before the mid-term to talk about it22:01
lisitsyniglesiasg: did you book a flight? ;)22:01
@iglesiasgprovided that, I think the closer to the mid-term the better22:02
@iglesiasglisitsyn: still lot of places left in the plane to get the type of ticket I like22:02
@iglesiasgeconomy one :P22:02
lisitsyniglesiasg: ho(s)tel?22:02
@iglesiasgI checked available places two days ago, seems to be no trouble either ;)22:03
-!- vgorbati [~vgorbati@] has quit [Ping timeout: 240 seconds]22:03
lisitsyniglesiasg: one friend of mine choosed one let me find22:03
@iglesiasglisitsyn: oh thanks!22:04
@iglesiasglisitsyn: it seems very nice! thanks22:04
@iglesiasglisitsyn: is your friend coming to the workshop too?22:05
lisitsyniglesiasg: yes from cz22:05
@iglesiasglisitsyn: cool22:05
lisitsyniglesiasg: guy from my city22:05
@iglesiasgI like the prices very much, best ones I see so far22:05
lisitsynrussians all around the globe22:05
@iglesiasglisitsyn: ah what did you mean with cz then?22:05
lisitsyniglesiasg: czech republic22:05
@iglesiasgyeah sure22:06
lisitsyniglesiasg: he is from my city but studies here and I expect will never come back :D22:06
@iglesiasgI just got confused when you said from your city, later I got it with the Russians around the globe22:06
lambdayiglesiasg: sonney2k lisitsyn: in one PR it some method works and in another it doesn't :(
pickle27lisitsyn: got a question22:07
lambdayits because its random isn't it22:07
lisitsynpickle27: yes?22:07
pickle27well two actually22:07
pickle27in the end are we going to include all of the ADJ methods in shogun or just the best one?22:08
pickle27trying to decide how much effort I should put into cleaning up JADE right now vs moving onto FFdiag22:08
lisitsynpickle27: is there the best one?22:08
pickle27and second22:08
@iglesiasglambday: it should be due to randomness indeed22:08
pickle27lisitsyn: I don't think there is a clear best one but JADE is old, like 199322:08
lambdayiglesiasg: its really tough to set any bounds to those unit-tests :-/22:09
@iglesiasgI can imagine22:09
lambdayoh btw your PR fails for my old code, right? in the next PR I changed its implementation to use CRandom::std_normal_distrib instead of CMath::randn_double... may be that will solve it :-/22:10
lambdayincreased the number of samples too22:11
lambday1000 to 500022:11
lambdayonce it gets merged I mean22:11
pickle27Andreas said JADE is like a standard Im just wondering how we wanted this to look in the end22:11
@iglesiasglambday: aham! when was it merge?22:11
lisitsynpickle27: oh then we should have it I think22:11
lisitsynpickle27: SVM is quite near to 1993  too ;)22:12
lambdayiglesiasg: sunday, I think22:12
lisitsynwell closer to 1970s :D22:12
@iglesiasglambday: mmm I updated this morning before I did the PR so your new code should be there22:12
pickle27lisitsyn: okay, because I have the R version ported and working but it isn't the easiest to re-work22:12
lambdayI sent a PR today which contains the changes.. which is not merged yet22:12
lisitsynpickle27: ported to C++?22:12
pickle27lisitsyn: the author of JADE posted a C implementation which is broken down better22:13
lambdayiglesiasg:  no no today's code isn't merged yet :-(22:13
pickle27yeah the R package had a C function for the inner loop processing22:13
lambdaysorry for the confusion :(22:13
@iglesiasglambday: aham! no problem :)22:13
pickle27its the inner loop function that does most the work but its really hard to follow what its doing and I didn't have to touch this function for the port22:13
pickle27so if we want JADE in Shogun I think I might re-work it from the Author's C release22:14
pickle27because from that angle I'll be able to produce a more readable algorihtm22:14
pickle27a related question22:15
lisitsynpickle27: if the code is changeable go for it sure22:15
@iglesiasglambday: I guess we should wait for Heiko to review your PR and merge them22:15
pickle27because I am working separately from Shogun at the moment how should I share code for the time being?22:15
lambdayiglesiasg: yes... because travis passed for this new PR... I hope it will pass22:16
@iglesiasgit probably will :)22:16
pickle27lisitsyn: this will probably help explain the situation
pickle27lisitsyn: I wrote the top function but the second function is directly from the R package22:17
pickle27I just think it would be quite difficult to redo jadiagw using Eigen etc because the code isn't really commented at all22:18
pickle27so it depends what we want, because it works its just not readable. So if we want to include I think it would be best if I ported the authors code and used Eigen322:19
pickle27or maybe its not as bad as I think and I just need to spend some more time looking at the code22:19
lisitsynpickle27: no I think there is no need to rewire jadiagw22:21
pickle27lisitsyn: okay then I will leave it22:22
pickle27lisitsyn: then I'll focus on double checking that my result matches the jointDiag package before continuing onto FFdiag22:24
lisitsynpickle27: yes makes sense to me22:24
pickle27lisitsyn: any thoughts on what I should do about making my code available before its ready to merge in?22:25
pickle27pickle27: I mean I can keep making pastes when I want to discuss something22:25
lisitsynpickle27: do you have some test in mind?22:25
lisitsynpickle27: same thing as PR is better22:25
lisitsynas others can comment too and no need to say 'line XXX: something'22:26
pickle27okay so make PRs to shogun22:26
pickle27lisitsyn: as for the test yes I have something worked out. Its a synthetic example from the R package22:27
lisitsynpickle27: I'd say that code is quite simple though :D22:27
lisitsynpickle27: I integrated the SLEP library last gsoc22:28
lisitsynthat was much more crazy C code22:28
lisitsynthat's why I am unsure it works :D22:28
lisitsynwell I compared matrices and numbers and so on22:28
lisitsynbut one never knows what the code works in all the cases22:28
pickle27lisitsyn: yeah i mean its not that bad but it would take time to convert to eigen if thats what was wanted22:29
pickle27but if you think its okay as loops then Im okay with it22:29
lisitsynpickle27: as far as I can see it won't be much better with eigen22:29
pickle27lisitsyn: I was kind of thinking that too22:29
pickle27but I wouldn't mind a few more comments22:29
lisitsynI don't really imagine how such code is written22:29
pickle27for the test I have a synth example but it is randomly generated each time22:30
pickle27so I need to save the input case to disk so I can run the C++ code and the R package on the same data22:30
-!- lambday [67157d4f@gateway/web/cgi-irc/] has quit [Quit: - A hand crafted IRC client]22:30
pickle27make sure they get the same result22:30
lisitsynplease keep that test too22:30
pickle27lisitsyn: of course!22:31
pickle27its bascially a unit test as is22:31
lisitsynpickle27: heiko has an idea about that like comparing with libraries22:31
lisitsynyes though we can't really compare R and C++ in our unit-tests22:31
pickle27oh the test itself is self contained22:32
pickle27because in the end you can test if the matrix is a permutation matrix22:32
pickle27so if it is then the test passes22:32
@sonney2kiglesiasg, why do you need a custommahalanobis distance?22:32
pickle27otherwise fail22:32
pickle27its the same self contained test in both R and C++ but they each gen new data each time22:33
pickle27its just a one time check to make sure they give the same result22:33
lisitsynpickle27: I see22:33
@iglesiasgsonney2k: I didn't find any other distance which allowed me to compute (x_i - x_j)^T M (x_i - x_j) for a given matrix M22:33
lisitsynsonney2k: do you mean to allow custom matrices in mahalanobis?22:34
pickle27lisitsyn: okay I have to head out for a bit now22:36
pickle27I'll be back later22:36
lisitsynpickle27: see you!22:37
-!- pickle27 [] has quit [Quit: Leaving]22:37
@sonney2klisitsyn, it basically is the CMahalanobisdistance with a custom icov22:39
lisitsynsonney2k: yes22:39
@sonney2kquite some code duplication22:39
@iglesiasgsonney2k: yes, that is exactly the idea, the custom icov not to duplicate code :)22:39
@sonney2kcan't we generalize mahalanobisdistance to learn icov22:41
@iglesiasgit sounds pretty reasonable22:41
@sonney2kI don't mind it getting the eigen3 treat btw22:42
lisitsynsonney2k: oh I need your opinion on changing a bit in our io22:42
lisitsynsonney2k: I can change shogun to use it22:43
-!- shogun-notifier- [] has joined #shogun22:48
shogun-notifier-shogun: Soeren Sonnenburg :develop * 29e2882 / src/
shogun-notifier-shogun: use the current branch as merge base when creating version strings22:48
lisitsyn{} instead of %d %s %i et22:49
@sonney2klisitsyn, what will it do with pointers and what with SGObjects?22:49
lisitsynsonney2k: currently prints what lies under the pointer22:50
lisitsyneasy to specialize for SGObjects22:50
lisitsynwith ->name()22:50
-!- hushell [~hushell@] has joined #shogun22:50
@sonney2khow can I print the pointer itself for an SGObject?22:50
lisitsynsonney2k: static_cast<void*>(obj) could do that22:51
lisitsynis that usual case?22:51
lisitsynsonney2k: it has implementation class which is specialized so I think we can tune it if we go for that22:53
lisitsynwhen generic it just << the object/value22:53
@sonney2kshouldn't appear to often - we use it when printing objects (memory debugging IIRC Combined* etc)22:53
lisitsynsonney2k: other way would be to add an adapter like22:54
@sonney2kand how do you do formatting - I mean saying you want two digits for a double etc?22:55
lisitsynsonney2k: that's more difficult question22:55
lisitsynI didn't come with good solution so far22:55
@sonney2kor print a hex insteaf of an int?22:55
lisitsynsonney2k: I would do that through adapters like that22:55
@sonney2kI mean I don't like our SGIO* but it probably is not the biggest issue we have atm22:55
lisitsynformat("{}", hex(3));22:56
lisitsynsonney2k: no that was just my experiment22:56
@sonney2klisitsyn, would be cool to have your modelselection syntax22:56
@sonney2kanyway no more time cu22:56
lisitsynsonney2k: see you22:56
@iglesiasggood night22:56
lisitsynmod.sel. is on the way but I don't like some thing22:57
lisitsyniglesiasg: what do you think about string keys?22:57
@iglesiasgI don't see it, tell me more22:58
lisitsyniglesiasg: I hate getters and setters22:58
lisitsynthat's it :D22:58
lisitsynI mean writing them all around22:59
lisitsynthat's terrible thing I always feel pain right in my ass22:59
lisitsynand that's not the medical issue :D22:59
@iglesiasg:D yeah I also feel quite stupid when doing them22:59
lisitsynI spend my days writing getters in java23:00
lisitsynI would be younger and happier w/o them23:00
lisitsynand now I am 73 and I am still writing them23:00
@iglesiasgwell eclipse helps you quite a bit in java with them right?23:00
lisitsyniglesiasg: oh no eclipse, idea23:00
lisitsynidea is much much better23:00
lisitsyniglesiasg: I wish there was such an ide for C++ :D23:03
@iglesiasgyeah I wish it too sometimes23:04
shogun-buildbotbuild #973 of cyg1 - libshogun is complete: Failure [failed configure]  Build details are at  blamelist: Soeren Sonnenburg <>23:04
@iglesiasgon the other hand, I sometimes thinks it helps too much23:05
-!- hushell [~hushell@] has quit [Ping timeout: 264 seconds]23:05
shogun-buildbotbuild #1141 of bsd1 - libshogun is complete: Failure [failed test test_1]  Build details are at  blamelist: Soeren Sonnenburg <>23:12
-!- hushell [~hushell@] has joined #shogun23:16
-!- travis-ci [] has joined #shogun23:17
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 []23:17
-!- hushell [~hushell@] has quit [Ping timeout: 276 seconds]23:22
shogun-buildbotbuild #1264 of deb3 - modular_interfaces is complete: Failure [failed test python_modular]  Build details are at  blamelist: Soeren Sonnenburg <>23:46
--- Log closed Wed Jun 26 00:00:05 2013