We may also use Discord and do something "somewhat live"

Phil

On Tue, May 16, 2017 at 7:23 PM, <serge.stinckw...@gmail.com> wrote:

> I was asking Philippe but hope to see you also at ESUG !
>
> Envoyé de mon iPhone
>
> Le 16 mai 2017 à 19:02, Oleksandr Zaytsev <olk.zayt...@gmail.com> a
> écrit :
>
> I would love to, but to go to Lille from my country I would need a visa.
> Which is not that easy to acquire.
> So maybe I will come to PharoDays 2018.
> And I will definitely try to come to ESUG Conference in September.
>
> Oleks
>
> On Tue, May 16, 2017 at 7:26 PM, <serge.stinckw...@gmail.com> wrote:
>
>>
>>
>> Envoyé de mon iPhone
>>
>> Le 11 mai 2017 à 11:43, "p...@highoctane.be" <p...@highoctane.be> a
>> écrit :
>>
>> ---------- Message transféré ----------
>> De : "p...@highoctane.be" <p...@highoctane.be>
>> Date : 11 mai 2017 10:54
>> Objet : Re: 11/05/17 - Tabular Data Structures for Data Analysis -
>> Oleksandr Zaytsev
>> À : "Nick Papoylias" <npapoyl...@gmail.com>
>> Cc :
>>
>>
>>
>> On Thu, May 11, 2017 at 10:20 AM, Nick Papoylias <npapoyl...@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Thu, May 11, 2017 at 5:24 AM, Oleksandr Zaytsev <
>>> olk.zayt...@gmail.com> wrote:
>>>
>>>>
>>>> *A. Work done*
>>>>
>>>>    - Downloaded the threaded VM as suggested by Esteban Lorenzano to
>>>>    make Iceberg work. And it does! I have successfully pushed my 
>>>> NeuralNetwork
>>>>    code to GitHub: https://github.com/olekscode/MLNeuralNetwork
>>>>    - Joined the PolyMath organization on GitHub
>>>>    - Created a repository for the TabularDataset project
>>>>    https://github.com/PolyMathOrg/TabularDataset
>>>>    <https://github.com/PolyMathOrg/TabularDataset> as a part of
>>>>    PolyMath organization on GitHub
>>>>    - Fixed a PolyMath issue #25 and made a PR
>>>>    - Read an article from Wolfram Mathematica documentation regarding
>>>>    Dataset. It was one of the reading suggestions sent to me by Nick 
>>>> Papoylias
>>>>
>>>>
>>>> *B. Next steps*
>>>>
>>>>    - Fix more issues of PolyMath, using Iceberg. I have to get used to
>>>>    it by the time the coding phase starts
>>>>    - Read the rest of Nick Papoylias's suggestions
>>>>
>>>>
>>>> *C. Help needed*
>>>>
>>>>    - The Dataset in Wolfram, as well as Pandas in Python, has a very
>>>>    advanced indexing system. Smalltalk has its own special conventions for
>>>>    indexing, so I think that it would be great if I got familiar with them.
>>>>    Could you suggest me some reading on this topic (what are the indexing
>>>>    conventions in Smalltalk?).
>>>>    For example, in Wolfram, I can write *dataset[[-1]]* to extract the
>>>>    last row. But in Pharo indexes can not be negative. In Pharo I would 
>>>> say *dataset
>>>>    last*. But how about *dataset[[-5]]*?
>>>>
>>>> This would be a good exercise for you ;) In Pharo you can easily add
>>> negative indexing yourself.
>>>
>>> *Hint:* You know the index of the last element, since this is the size
>>> of the collection, so... ;)
>>>
>>> No need for changes, this exists already.
>>
>> Use atWrap: index put: value and atWrap: with negative indexes.
>> 'hello' atWrap: -2
>>
>> There is a specific version for Array using a primitive.
>> #[ 10 20 30 40 ] atWrap: -1
>>
>> atWrap:0 gives you the last item.
>> atWrap: -1 gives 30
>>
>> This is different from 0 based index languages.
>>
>> The interesing thing about atWrap: is that it uses modulo interally so
>> you do not need to care about that.
>>
>> ($/ split: 'abc/def/ghi/jkl') atWrap: -1
>> --> 'ghi'
>>
>> The Matrix class has a bunch of things API wise but the class is highly
>> inefficient, doing copies all the time etc. It would be nice to have some
>> kind of futures/copy on write style things in there.
>>
>> I miss cbind and rbind. These are useful. I have some half baked super
>> inefficient implementations of these things for Matrix.
>>
>> https://stat.ethz.ch/R-manual/R-devel/library/base/html/cbind.html
>>
>> The ability to name columns is also nice to have.
>>
>> In R one does:
>>
>> df <- dataframe()
>> cbind(df, c(1,2,3))
>> cbind(df, c(4,5,6))
>> names(df)<-("C1", "C2", "C3")
>> names can be found back with:
>>
>> names(df)
>>
>> A Smalltalkish style would be welcome.
>>
>>
>>
>>
>> Interesting ! Are you coming to PharoDays ? We can talk about that if we
>> found time.
>>
>> Maybe looking at the Voyage queries can be helpful.
>>
>> Phil
>>
>>
>>
>>> Try adding an extention method to Ordrered or SequenceableCollection.
>>>
>>> If the Pharo by example chapter is not enough or the MOOC, read the
>>> source
>>> itself in the core, to see how basic methods are implemented (it is less
>>> scary,
>>> than it sounds).
>>>
>>> You can also try Chapters 9, 10, 11 of the blue book (some API changes
>>> may apply):
>>>
>>> <http://goog_1902892863>
>>> http://sdmeta.gforge.inria.fr/FreeBooks/BlueBook/Bluebook.pdf
>>>
>>>
>>>>    - Or what is the best way of implementing this index:
>>>>    *dataset[["name"]]* (extracts a named row), *dataset[[1]*]
>>>>    (extracts the first row)? Should I create two separate messages: 
>>>> *dataset
>>>>    rowNamed: 'name'* and *dataset rowAt: 1*?
>>>>
>>>> rowNamed:
>> rowAt:
>>
>> yes, look like it.
>>
>> But if we want to model things like R dataframes for example, this has to
>> be seen as a vectorized operation, so you can to use row slices, column
>> slices, and logical indexes.
>>
>> Check this out:
>>
>> http://www.r-tutor.com/r-introduction/data-frame/data-frame-row-slice
>> https://www.r-bloggers.com/working-with-data-frames/
>>
>>
>>
>>> The internal representation of your data-structure can be anything at
>>> the moment, *as long as you encapsulate it.*
>>>
>>> (ie it can be nested OrderedCollections with meta-data for column-names
>>> to indexes, or dictionary of collections etc).
>>>
>>> *If you don't expose it to the user* (ie return it from the public api,
>>> or expect knowledge of it in argument passing),
>>> we can easily change it later. So *first make it work, and we optimize
>>> later ;)*
>>>
>>> For your case it will be a little bit trickier because *you also have
>>> the notions of a) rows and b) columns*, which
>>> are exposed to the user. So *you would need to create abstractions* for
>>> these too.
>>>
>>> Cheers,
>>>
>>> Nick
>>>
>>>>
>>>>    -
>>>>
>>>>
>>>> If someone else is having problems with Iceberg on Linux, try
>>>> downloading the threaded VM:
>>>>
>>>> wget -O- get.pharo.org/vmT60 | bash
>>>>
>>>> And use SSH (not HTTPS) remote URL.
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Pharo Google Summer of Code" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to pharo-gsoc+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to pharo-g...@googlegroups.com.
>>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>>> gid/pharo-gsoc/CAEp0Uzu-8fw3dA6ezVoj-QptvLcB8cWPHvZ1tfLg1Ce8
>>>> qkTqfQ%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/pharo-gsoc/CAEp0Uzu-8fw3dA6ezVoj-QptvLcB8cWPHvZ1tfLg1Ce8qkTqfQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Pharo Google Summer of Code" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to pharo-gsoc+unsubscr...@googlegroups.com.
>>> To post to this group, send email to pharo-g...@googlegroups.com.
>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>> gid/pharo-gsoc/CACEStOgLC6HbYJ8HBLHWfs5%2BwqN3ib_kdVGuVizx7G
>>> h1c0sM%3DA%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/pharo-gsoc/CACEStOgLC6HbYJ8HBLHWfs5%2BwqN3ib_kdVGuVizx7Gh1c0sM%3DA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>

Reply via email to