Re: [GSOC2020][Boost.uBLAS] uBLAS DataFrame feature

Aniket Chowdhury via ublas <[email protected]> Fri, 20 Mar 2020 19:38:58 +0530
Newsgroups gmane.comp.lib.boost.ublas
Message-ID <CAD+OSvWEExSzF8AgeF9PMx1J2WLXAUbfE1-_=R0+9QcXD=7TGw@mail.gmail.com>
--===============5294124112575335195==
Content-Type: multipart/alternative; boundary="00000000000055a72e05a149d45c"

--00000000000055a72e05a149d45c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Oh okay. GCC 10 is supposed to have the support for Ranges. The beta
version supports Ranges and os going to get released in April. But, I guess
we can avoid that if they don't. Thanks.

On Fri, 20 Mar 2020, 19:35 Cem Bassoy via ublas, <[email protected]>
wrote:

> Hello Aniket,
>
> I cannot tell you which direction is the best for you. However, I
> recommend a topic that you are really interested in and that you want to
> continue even after GSOC.
>
> Clang and GCC still do not officially support Ranges - so I would leave
> that out (https://en.cppreference.com/w/cpp/compiler_support).
> Right now we should postpone the discussion of concepts for the tensor
> type.
>
> Best,
> CB
>
> Am Fr., 20. M=C3=A4rz 2020 um 13:54 Uhr schrieb Aniket Chowdhury via ubla=
s <
> [email protected]>:
>
>> Hey Cem.
>> I went through the draft proposal and had some questions.
>>
>> Which direction do you think I should pursue? I am more inclined towards
>> refactoring the enitre data_frame because if I believe correctly uBlas i=
s
>> moving towards C++20. Should I stick with ETs or can I use Ranges and
>> Concepts?
>>
>> I was thinking to stick to standard C++20 Ranges only instead of Eric
>> Neibler's One Ranges v3 library considering std to be more relevant.
>>
>>
>>
>> On Wed, 18 Mar 2020, 23:49 Aniket Chowdhury, <
>> [email protected]> wrote:
>>
>>> Hey Cem.
>>> Thanks for replying. Will do the needful and get back to you.
>>> I understand that the proposal could do with a few more code examples.
>>> Thanks.
>>>
>>> On Wed, Mar 18, 2020 at 8:15 PM Cem Bassoy via ublas <
>>> [email protected]> wrote:
>>>
>>>> Hi Aniket,
>>>>
>>>> thanks for considering Boost/uBLAS. Your potential mentor is David. If
>>>> he does not respond, just follow the instructions on the GSoC page and
>>>> upload your proposal.
>>>>
>>>> Please note that we appreciate concrete (with code samples), realistic
>>>> (regarding time) and referring (to previous or pull requests) proposal=
s.
>>>> Concrete examples inside the proposal will help us to understand inten=
tion
>>>> and it will demonstrate your experience and expertise.
>>>>
>>> I am pretty cobfident with the timeline that I have provided with.
>> Again, regarding code examples should I add them for both C++20 and/or E=
T?
>>
>>>
>>>> Additionally, I advise to read
>>>>
>>>>    - previous gsoc discussions on this or on the general boost mailing
>>>>    list
>>>>    - former gsoc student projects and proposals
>>>>
>>>> to have a good feeling of the requirements.
>>>>
>>>> Best,
>>>> Cem
>>>>
>>>>
>>>>
>>>> Am Mo., 16. M=C3=A4rz 2020 um 23:15 Uhr schrieb Aniket Chowdhury via u=
blas <
>>>> [email protected]>:
>>>>
>>>>> Hi,
>>>>> My name is Aniket Chowdhury
>>>>> <https://github.com/aniket-chowdhury?tab=3Drepositories> and I am
>>>>> second-year undergraduate student.
>>>>>
>>>>> I wish to implement the DataFrame library for Boost. I have made the
>>>>> project proposal and am attaching the same.
>>>>> As, this project is an expansion of the previous project
>>>>> <https://github.com/BoostGSoC19/data_frame> there are a few
>>>>> directions that I would like to work in whichever adds more to the pr=
oject.
>>>>>
>>>>> 1. We could be to keep the existing code base as it is and implement
>>>>> new features on top of it.
>>>>> 2. We could try to restructure the code into *Modules*(C++20 feature)
>>>>> and then implement the features.
>>>>> 3. Or, we could restructure the code without ET but rather using *C++=
20
>>>>> One Ranges*. This makes more sense to me as I believe that uBlas is
>>>>> being ported to C++20.
>>>>>
>>>>> The DataFrame would include the following features:
>>>>> 1. All the features already present(union, combine, join).
>>>>> 2. Read/write from *DataFrame using JSON*(boost::property_tree to
>>>>> DataFrame)
>>>>> 3. Operator support for addition, subtraction, multiplication,
>>>>> division, modulo and power, etc as well as support for comparison
>>>>> operators.
>>>>> 4. Functions to perform apply, apply_element_wise, aggregate,
>>>>> transform and expand on a given DataFrame.
>>>>> 5. Data analysis tools for standard deviation, variance, mean, etc.
>>>>> 6. Re-indexing methods like replace, duplicate, filter, etc.
>>>>> 7. Reshaping methods for sorting, append, pivot, etc.
>>>>>
>>>> Also, could you tell me if I am on the right track regarding the free
>> form functions that Boost is looking for?
>>
>>>
>>>>> *Full Details* of the same can be found in the *Project Proposal*.
>>>>>
>>>>> I have been in contact with David Bellot for the past week regarding
>>>>> GSoC. I have completed the first draft of the competency check and se=
nt the
>>>>> same to him. I would love to work  I am requesting him to be assigned=
 as a
>>>>> mentor for the same.
>>>>> *PFA: *The Project Proposal
>>>>> <https://docs.google.com/document/d/1wyegbUEbpOopaQSWtFd0a_ch4QeIERKX=
GVX6GJSSdBo/edit?usp=3Dsharing>(linked
>>>>> in case the attachment fails)
>>>>>
>>>> Here was the old proposal.
>>
>>>
>>>>> This is an official application for the GSoC' 20. I am open to any an=
d
>>>>> all suggestions.
>>>>>
>>>>> Aniket Chowdhury
>>>>> _______________________________________________
>>>>> ublas mailing list
>>>>> [email protected]
>>>>> https://lists.boost.org/mailman/listinfo.cgi/ublas
>>>>> Sent to: [email protected]
>>>>>
>>>> _______________________________________________
>>>> ublas mailing list
>>>> [email protected]
>>>> https://lists.boost.org/mailman/listinfo.cgi/ublas
>>>> Sent to: [email protected]
>>>>
>>> _______________________________________________
>> ublas mailing list
>> [email protected]
>> https://lists.boost.org/mailman/listinfo.cgi/ublas
>> Sent to: [email protected]
>>
> _______________________________________________
> ublas mailing list
> [email protected]
> https://lists.boost.org/mailman/listinfo.cgi/ublas
> Sent to: [email protected]
>

--00000000000055a72e05a149d45c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">Oh okay. GCC 10 is supposed to have the support for Range=
s. The beta version supports Ranges and os going to get released in April. =
But, I guess we can avoid that if they don&#39;t. Thanks.=C2=A0</div><br><d=
iv class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, 20 M=
ar 2020, 19:35 Cem Bassoy via ublas, &lt;<a href=3D"mailto:[email protected]=
t.org">[email protected]</a>&gt; wrote:<br></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-l=
eft:1ex"><div dir=3D"ltr"><div>Hello Aniket,</div><div><br></div><div>I can=
not tell you which direction is the best for you. However, I recommend a to=
pic that you are really interested in and that you want to continue even af=
ter GSOC. <br></div><div><br></div><div>Clang and GCC still do not official=
ly support Ranges - so I would leave that out (<a href=3D"https://en.cppref=
erence.com/w/cpp/compiler_support" target=3D"_blank" rel=3D"noreferrer">htt=
ps://en.cppreference.com/w/cpp/compiler_support</a>).<br></div><div>Right n=
ow we should postpone the discussion of concepts for the tensor type.<br></=
div><div><br></div><div>Best,</div><div>CB<br></div><br><div class=3D"gmail=
_quote"><div dir=3D"ltr" class=3D"gmail_attr">Am Fr., 20. M=C3=A4rz 2020 um=
 13:54=C2=A0Uhr schrieb Aniket Chowdhury via ublas &lt;<a href=3D"mailto:ub=
[email protected]" target=3D"_blank" rel=3D"noreferrer">[email protected]=
.org</a>&gt;:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><d=
iv dir=3D"auto">Hey Cem.=C2=A0<div dir=3D"auto">I went through the draft pr=
oposal and had some questions.<div dir=3D"auto"><br></div><div dir=3D"auto"=
>Which direction do you think I should pursue? I am more inclined towards r=
efactoring the enitre data_frame because if I believe correctly uBlas is mo=
ving towards C++20. Should I stick with ETs or can I use Ranges and Concept=
s?=C2=A0</div><div dir=3D"auto"><br></div><div dir=3D"auto">I was thinking =
to stick to standard C++20 Ranges only instead of Eric Neibler&#39;s One Ra=
nges v3 library considering std to be more relevant.=C2=A0</div><div dir=3D=
"auto"><br></div></div><br><br><div class=3D"gmail_quote" dir=3D"auto"><div=
 dir=3D"ltr" class=3D"gmail_attr">On Wed, 18 Mar 2020, 23:49 Aniket Chowdhu=
ry, &lt;<a href=3D"mailto:[email protected]" target=3D"_blank" r=
el=3D"noreferrer">[email protected]</a>&gt; wrote:<br></div><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Hey Cem.<div=
>Thanks for replying. Will do the needful and get back to you.=C2=A0</div><=
div>I understand that the proposal could do with a few more code examples.=
=C2=A0</div><div>Thanks.</div></div><br><div class=3D"gmail_quote"><div dir=
=3D"ltr" class=3D"gmail_attr">On Wed, Mar 18, 2020 at 8:15 PM Cem Bassoy vi=
a ublas &lt;<a href=3D"mailto:[email protected]" rel=3D"noreferrer nore=
ferrer" target=3D"_blank">[email protected]</a>&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hi Ani=
ket,</div><div><br></div><div>thanks for considering Boost/uBLAS. Your pote=
ntial mentor is David. If he does not respond, just follow the instructions=
 on the GSoC page and upload your proposal.</div><div><br></div><div>Please=
 note that we appreciate concrete (with code samples), realistic (regarding=
 time) and referring (to previous or pull requests) proposals. Concrete exa=
mples inside the proposal will help us to understand intention and it will =
demonstrate your experience and expertise. <br></div></div></blockquote></d=
iv></blockquote></div><div dir=3D"auto">I am pretty cobfident with the time=
line that I have provided with. Again, regarding code examples should I add=
 them for both C++20 and/or ET?</div><div class=3D"gmail_quote" dir=3D"auto=
"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quo=
te"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div=
></div><div><br></div><div>Additionally, I advise to read </div><div><ul><l=
i>previous gsoc discussions on this or on the general boost mailing list</l=
i><li>former gsoc student projects and proposals</li></ul><div>to have a go=
od feeling of the requirements.<br></div></div><div><br></div><div>Best,</d=
iv><div>Cem<br></div><div><br></div><div><br></div></div><br><div class=3D"=
gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">Am Mo., 16. M=C3=A4rz 20=
20 um 23:15=C2=A0Uhr schrieb Aniket Chowdhury via ublas &lt;<a href=3D"mail=
to:[email protected]" rel=3D"noreferrer noreferrer" target=3D"_blank">u=
[email protected]</a>&gt;:<br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex"><div dir=3D"ltr">Hi,=C2=A0<div>My name is=C2=A0<a href=3D"htt=
ps://github.com/aniket-chowdhury?tab=3Drepositories" rel=3D"noreferrer nore=
ferrer" target=3D"_blank">Aniket Chowdhury</a>=C2=A0and I am second-year un=
dergraduate student.</div><div><br></div><div>I wish to implement the DataF=
rame library for Boost. I have made the project proposal and am attaching t=
he same.</div><div><div><div><div></div></div></div><div></div></div><div>A=
s, this project is an expansion of the=C2=A0<a href=3D"https://github.com/B=
oostGSoC19/data_frame" rel=3D"noreferrer noreferrer" target=3D"_blank">prev=
ious project</a>=C2=A0there are a few directions that I would like to work =
in whichever adds more to the project.</div><div><br></div><div>1. We could=
 be to keep the existing code base as it is and implement new features on t=
op of it.</div><div>2. We could try to restructure the code into=C2=A0<b>Mo=
dules</b>(C++20 feature) and then implement the features.</div><div>3. Or, =
we could restructure the code without=C2=A0ET but rather using=C2=A0<b>C++2=
0 One Ranges</b>. This makes more sense to me as I believe that uBlas is be=
ing ported to C++20.</div><div><br></div><div>The DataFrame would include t=
he following features:</div><div>1. All the features already present(union,=
 combine, join).</div><div>2. Read/write from=C2=A0<b>DataFrame using JSON<=
/b>(<span style=3D"background-color:transparent;color:rgb(36,39,41);font-fa=
mily:&quot;Courier New&quot;;white-space:pre-wrap">boost::property_tree to =
DataFrame</span>)</div><div>3. Operator support for=C2=A0<span style=3D"bac=
kground-color:transparent;color:rgb(0,0,0);font-family:&quot;Proxima Nova&q=
uot;,sans-serif;font-weight:700;white-space:pre-wrap">addition, subtraction=
, multiplication, division, modulo and power, etc </span><span style=3D"bac=
kground-color:transparent;color:rgb(0,0,0);font-family:&quot;Proxima Nova&q=
uot;,sans-serif;white-space:pre-wrap">as well as support for comparison ope=
rators.</span></div><div>4. Functions to perform<span style=3D"background-c=
olor:transparent;font-variant-numeric:normal;font-variant-east-asian:normal=
;font-family:&quot;Proxima Nova&quot;,sans-serif;color:rgb(0,0,0);vertical-=
align:baseline;white-space:pre-wrap"> </span><span style=3D"background-colo=
r:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;fo=
nt-family:&quot;Proxima Nova&quot;,sans-serif;color:rgb(0,0,0);font-weight:=
700;vertical-align:baseline;white-space:pre-wrap">apply, apply_element_wise=
, aggregate, transform and expand</span><span style=3D"background-color:tra=
nsparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-fa=
mily:&quot;Proxima Nova&quot;,sans-serif;color:rgb(0,0,0);vertical-align:ba=
seline;white-space:pre-wrap"> on a given DataFrame.</span><br></div>5. Data=
 analysis tools for=C2=A0<span id=3D"m_-8301385799675461752m_-7376762986148=
225264gmail-m_-1255839329218212103m_-7149760812391761650gmail-m_-8094012315=
361310134gmail-m_1372898159282983835gmail-m_2539347862788583833gmail-m_-630=
67745495130108gmail-docs-internal-guid-7ab2eedf-7fff-5324-29fc-108f6de832ec=
"><span style=3D"font-family:&quot;Proxima Nova&quot;,sans-serif;color:rgb(=
0,0,0);background-color:transparent;font-weight:700;font-variant-numeric:no=
rmal;font-variant-east-asian:normal;vertical-align:baseline;white-space:pre=
-wrap">standard deviation, variance, mean, etc.</span></span><div>6. Re-ind=
exing methods like=C2=A0<span id=3D"m_-8301385799675461752m_-73767629861482=
25264gmail-m_-1255839329218212103m_-7149760812391761650gmail-m_-80940123153=
61310134gmail-m_1372898159282983835gmail-m_2539347862788583833gmail-m_-6306=
7745495130108gmail-docs-internal-guid-97de9fde-7fff-ff47-7f83-0a08903e6481"=
><span style=3D"font-family:&quot;Proxima Nova&quot;,sans-serif;color:rgb(0=
,0,0);background-color:transparent;font-weight:700;font-variant-numeric:nor=
mal;font-variant-east-asian:normal;vertical-align:baseline;white-space:pre-=
wrap">replace, duplicate, filter, etc.</span></span></div><div>7. Reshaping=
 methods for=C2=A0<span id=3D"m_-8301385799675461752m_-7376762986148225264g=
mail-m_-1255839329218212103m_-7149760812391761650gmail-m_-80940123153613101=
34gmail-m_1372898159282983835gmail-m_2539347862788583833gmail-m_-6306774549=
5130108gmail-docs-internal-guid-ed39d162-7fff-e164-cd1e-4f0db510492b"><span=
 style=3D"font-family:&quot;Proxima Nova&quot;,sans-serif;color:rgb(0,0,0);=
background-color:transparent;font-weight:700;font-variant-numeric:normal;fo=
nt-variant-east-asian:normal;vertical-align:baseline;white-space:pre-wrap">=
sorting, append, pivot, etc.</span></span></div></div></blockquote></div></=
blockquote></div></blockquote></div><div dir=3D"auto"><span style=3D"font-f=
amily:sans-serif">Also, could you tell me if I am on the right track regard=
ing the free form functions that Boost is looking for?</span><br></div><div=
 class=3D"gmail_quote" dir=3D"auto"><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex"><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex"><div dir=3D"ltr"><div><span style=3D"font-family:&quot;Proxi=
ma Nova&quot;,sans-serif;color:rgb(0,0,0);background-color:transparent;font=
-weight:700;font-variant-numeric:normal;font-variant-east-asian:normal;vert=
ical-align:baseline;white-space:pre-wrap"></span></div><div><font face=3D"P=
roxima Nova, sans-serif" color=3D"#000000"><span style=3D"white-space:pre-w=
rap"><br></span></font></div><div><font face=3D"Proxima Nova, sans-serif" c=
olor=3D"#000000"><span style=3D"white-space:pre-wrap"><b>Full Details</b> o=
f the same can be found in the <b>Project Proposal</b>.<b><br></b></span></=
font><div><div><br></div><div>I have been in contact with David Bellot for =
the past week regarding GSoC. I have completed the first draft of the compe=
tency check and sent the same to him. I would love to work=C2=A0 I am reque=
sting him to be assigned as a mentor for the same.</div></div></div><div><d=
iv><b>PFA:=C2=A0</b><a href=3D"https://docs.google.com/document/d/1wyegbUEb=
pOopaQSWtFd0a_ch4QeIERKXGVX6GJSSdBo/edit?usp=3Dsharing" style=3D"font-weigh=
t:bold" rel=3D"noreferrer noreferrer" target=3D"_blank">The Project Proposa=
l</a>(linked in case the attachment fails)<br></div></div></div></blockquot=
e></div></blockquote></div></blockquote></div><div dir=3D"auto">Here was th=
e old proposal.=C2=A0</div><div class=3D"gmail_quote" dir=3D"auto"><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div><div></=
div><div><br></div><div>This is an official application for the GSoC&#39; 2=
0. I am open to any and all suggestions.=C2=A0</div><font color=3D"#888888"=
><div><br></div></font></div><font color=3D"#888888"><div>Aniket Chowdhury<=
/div></font></div>
_______________________________________________<br>
ublas mailing list<br>
<a href=3D"mailto:[email protected]" rel=3D"noreferrer noreferrer" targ=
et=3D"_blank">[email protected]</a><br>
<a href=3D"https://lists.boost.org/mailman/listinfo.cgi/ublas" rel=3D"noref=
errer noreferrer noreferrer" target=3D"_blank">https://lists.boost.org/mail=
man/listinfo.cgi/ublas</a><br>
Sent to: <a href=3D"mailto:[email protected]" rel=3D"noreferrer noreferr=
er" target=3D"_blank">[email protected]</a><br>
</blockquote></div>
_______________________________________________<br>
ublas mailing list<br>
<a href=3D"mailto:[email protected]" rel=3D"noreferrer noreferrer" targ=
et=3D"_blank">[email protected]</a><br>
<a href=3D"https://lists.boost.org/mailman/listinfo.cgi/ublas" rel=3D"noref=
errer noreferrer noreferrer" target=3D"_blank">https://lists.boost.org/mail=
man/listinfo.cgi/ublas</a><br>
Sent to: <a href=3D"mailto:[email protected]" rel=3D"noreferrer =
noreferrer" target=3D"_blank">[email protected]</a><br>
</blockquote></div>
</blockquote></div></div>
_______________________________________________<br>
ublas mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank" rel=3D"noreferre=
r">[email protected]</a><br>
<a href=3D"https://lists.boost.org/mailman/listinfo.cgi/ublas" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://lists.boost.org/mailman/listinf=
o.cgi/ublas</a><br>
Sent to: <a href=3D"mailto:[email protected]" target=3D"_blank" rel=3D"n=
oreferrer">[email protected]</a><br>
</blockquote></div></div>
_______________________________________________<br>
ublas mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank" rel=3D"noreferre=
r">[email protected]</a><br>
<a href=3D"https://lists.boost.org/mailman/listinfo.cgi/ublas" rel=3D"noref=
errer noreferrer" target=3D"_blank">https://lists.boost.org/mailman/listinf=
o.cgi/ublas</a><br>
Sent to: <a href=3D"mailto:[email protected]" target=3D"_blank" =
rel=3D"noreferrer">[email protected]</a><br>
</blockquote></div>

--00000000000055a72e05a149d45c--

--===============5294124112575335195==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline