tag:blogger.com,1999:blog-4629918208434821542009-07-01T00:37:44.619-07:00Fernando PerezFernandohttp://www.blogger.com/profile/12945463674195535011noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-462991820843482154.post-16177653420701992652009-06-30T23:35:00.000-07:002009-07-01T00:37:44.650-07:00Scipy advanced tutorials resultsWe recently conducted a poll on Doodle, soliciting feedback on the preferred topics for the advanced track, which is meant to contain 2 days with 8 2-hour sessions focusing on one specific topic at a time. The table below shows the complete results, which I've only sorted for convenient viewing and anonymized (the raw Doodle output contains the names given by each person voting). If anyone would like the raw spreadsheet, just drop me a line.<br /><br />The score was computed as #yes-#no (i.e., yes=+1, neutral=0, no=-1), from a total of 30 responses, and the results are in the table below, ranked from highest to lowest score. In my <span style="font-style: italic;">personal</span> opinion, all the topics offered would have made for very good and interesting tutorials, but the point of asking for feedback is obviously to follow it to some degree, which we will now do. I think it's worth noting --though not particularly surprising-- that the ranking roughly follows the generality of the tools: matplotlib and numpy are at the top, with finite elements and graph theory at the bottom. While I personally use NetworkX and love it, it's a specialized tool that for many probably offers no compelling reason to learn it, while pretty much every single numerical python user needs numpy and matplotlib.<br /><br />We are now in the process of contacting possible speakers for the top topics, and will communicate on the mailing list a final list of topics once we have confirmed speakers for all.<br /><br /><span style="font-weight: bold;">Note</span>: the html formatting of this table is hideous and for some odd reason it drops to the bottom of the page, so you need to scroll way down to the bottom of this page to see the results table. Sorry. I generated it from OpenOffice and it looks fine in Firefox, but it renders horrible here. If anyone can send me a note on how to fix it (such that I can copy/paste the corrected html), I'll be happy to do so.<br /><br /><table dir="ltr" id="Sheet17Ctable" style="margin-top: 0pt; margin-bottom: 0pt; border-collapse: separate; border-spacing: 0pt; table-layout: fixed; white-space: nowrap;" cellspacing="0"><tbody><br /> <tr style="height: 17.7216px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; font-weight: bold; vertical-align: bottom; width: 364.405px; text-align: left;"><br /> <p style="margin: 0pt; font-size: 1px;"> </p><br /> </td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; font-weight: bold; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">Yes</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; font-weight: bold; vertical-align: bottom; width: 56.9184px; text-align: left;">Neutral</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; font-weight: bold; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">No</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; font-weight: bold; vertical-align: bottom; width: 48.4128px; text-align: left;">Score</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; font-weight: bold; vertical-align: bottom; width: 43.6016px; text-align: left;">Rank</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Advanced topics in matplotlib use</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">18</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">10</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">2</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">16</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">1</td><br /> </tr><br /><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Advanced numpy</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">18</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">10</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">2</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">16</td><br /><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">2</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Designing scientific interfaces with Traits</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">15</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">11</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">4</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">11</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">3</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Mayavi/TVTK</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">13</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">11</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">6</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">7</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">4</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Cython</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">14</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">8</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">8</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">6</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">5</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Symbolic computing with sympy</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">15</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">6</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">9</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">6</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">6</td><br /> </tr><br /><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Statistics with Scipy</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">9</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">15</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">6</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">3</td><br /><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">7</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Using GPUs with PyCUDA</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">13</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">7</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">10</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">3</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">8</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Testing strategies for scientific codes</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">11</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">11</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">8</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">3</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">9</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Parallel computing in Python and mpi4py</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">12</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">8</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">10</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">2</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">10</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Sparse Linear Algebra with Scipy</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">9</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">12</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">9</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">0</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">11</td><br /> </tr><br /><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Structured and record arrays in numpy</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">8</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">14</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">8</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">0</td><br /><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">12</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Design patterns for efficient iterator-based scientific codes</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">9</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">7</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">14</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">-5</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">13</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Sage</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">8</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">6</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">16</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">-8</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">14</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">The TimeSeries scikit</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">4</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">13</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">13</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">-9</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">15</td><br /> </tr><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Hermes: high order Finite Element Methods</td><br /><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">6</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">9</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">15</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">-9</td><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">16</td><br /> </tr><br /><br /> <tr style="height: 17.2704px;"><br /> <td class="Default" style="border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); border-width: 1px medium 1px 1px; white-space: normal; vertical-align: bottom; width: 364.405px; text-align: left;">Graph theory with NetworkX</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(0, 128, 0); vertical-align: bottom; width: 36.0576px; text-align: left;">5</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 56.9184px; text-align: left;">9</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; color: rgb(128, 0, 0); vertical-align: bottom; width: 30.384px; text-align: left;">16</td><br /> <td class="Default" style="border-style: solid none; border-color: rgb(0, 0, 0) -moz-use-text-color; border-width: 1px medium; white-space: normal; vertical-align: bottom; width: 48.4128px; text-align: right;">-11</td><br /><br /> <td class="Default" style="border-style: solid solid solid none; border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) -moz-use-text-color; border-width: 1px 1px 1px medium; white-space: normal; vertical-align: bottom; width: 43.6016px; text-align: right;">17</td><br /> </tr><br /></tbody><br /></table><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/462991820843482154-1617765342070199265?l=fdoperez.blogspot.com'/></div>Fernandohttp://www.blogger.com/profile/12945463674195535011noreply@blogger.com0tag:blogger.com,1999:blog-462991820843482154.post-28096487369568614992009-03-09T13:48:00.000-07:002009-03-10T11:00:00.054-07:00Python at the SIAM CSE'09 meeting<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GrnE9RsNeYQ/SbW0yF0FuEI/AAAAAAAAEQc/Zx0mKG-9ll4/s1600-h/img_2451.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 270px; height: 203px;" src="http://1.bp.blogspot.com/_GrnE9RsNeYQ/SbW0yF0FuEI/AAAAAAAAEQc/Zx0mKG-9ll4/s320/img_2451.jpg" alt="" id="BLOGGER_PHOTO_ID_5311350108200482882" border="0" /></a>After the <a href="http://fdoperez.blogspot.com/2008/07/python-tools-for-science-go-to-siam.html">success</a> of last year's Python minisymposium at the annual SIAM meeting, this year we had a repeat: Simula's Hans-Petter Langtangen (author of the well-known <a href="http://www.amazon.com/Python-Scripting-Computational-Science-Engineering/dp/3540435085/ref=sr_11_1?ie=UTF8&qid=1236642434&sr=11-1">Python Scripting for Computational Science</a>), U. Washington's <a href="http://www.amath.washington.edu/%7Erjl/">Randy LeVeque</a> and I co-organized another minisymposium on Python for Scientific computing.<br /><br />At he <a href="http://www.siam.org/meetings/cse09">Computational Science and Engineering 2009 meeting</a>, held in downtown Miami March 2-6, we had again 3 sessions with 4 talks each (<a href="http://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=8044">part I</a>, <a href="http://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=8045">II</a> and <a href="http://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=8046">III</a>), with a different mix of speakers and focus than last year. While last year we spent some effort introducing the language and to a certain extent justyfing its use in real-world scientific work, we felt that this time, the growth of the many python projects out there speaks for itself and that we should instead turn our attention to actual tools and projects useful for specific work. Thus, we had no 'why python for science' talk, although obviously most speakers spent some time providing this kind of information in the context of their own projects.<br /><br />I think that this is the right path to follow: for a number of years, many of us have been developing tools and justyfing Python as a viable alternative to tools such as Matlab or IDL, but we need to start moving away from that mode. There is no doubt in my mind now that, while still immature in certain areas, Python is a credible, production alternative to said packages. In many contexts it can actually be far superior to its propietary and expensive counterparts, as many of us have found in practice.<br /><br />So hopefully as we move forward, we will do less of 'you can use python for scientific work' and more of 'here is a great scientific project/tool that happens to be implemented using Python'. Eventually, I hope we will not have <span style="font-style: italic;">any</span> Python-specific sessions at scientific meetings, just like we don't see any "Fortran for scientific computing" special sessions.<br /><br />This was a smaller meeting than the annual one, but attendance for our sessions was good. There were interesting discussions and questions from audience members who were obviously new to the tools and curious to learn more. Personally, I had a great time both catching up with some familiar faces and meeting some new ones, all of whom I hope will become more regular contributors to the greater ecosystem of scientific python tools. Ondrej Certik, always full of energy, promptly <a href="http://ondrejcertik.blogspot.com/2009/03/siam-2009-conference-in-miami-part-i.html">posted his own report</a>, along with some video from where we were staying.<br /><br />An aside: when I tried to book the conference hotel all available rooms at the conference rates were taken, so a plan B was in order. I found online a room across the street that was cheaper than the Miami Hilton's conference rate and rented it. It turned out to be a great condo on the 50th floor of <a href="http://www.operasuitesandmarina.com/">this tower</a>, with free high quality internet, lots of work space we could use and a gorgeous view. Lesson learned: in this economic crisis, shop around: we got a great place and still saved money over the normal conference rate... The conference hotel is just barely visible, in the lower right hand corner of this shot:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GrnE9RsNeYQ/SbW1bp44MqI/AAAAAAAAEQs/WVcd04PGgvE/s1600-h/img_2459.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 299px; height: 224px;" src="http://2.bp.blogspot.com/_GrnE9RsNeYQ/SbW1bp44MqI/AAAAAAAAEQs/WVcd04PGgvE/s320/img_2459.jpg" alt="" id="BLOGGER_PHOTO_ID_5311350822258881186" border="0" /></a><br />I am currently in the process of collecting <a href="https://cirl.berkeley.edu/fperez/py4science/2009_siam_cse">slides from the speakers</a>; check that page later if you are interested in any talk for which I haven't posted them yet: I'll continue to update it as I receive them.<br /><br />Until the next meeting...<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GrnE9RsNeYQ/SbW1NPGRY8I/AAAAAAAAEQk/hPcIk-HiccU/s1600-h/img_2482.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 250px; height: 188px;" src="http://1.bp.blogspot.com/_GrnE9RsNeYQ/SbW1NPGRY8I/AAAAAAAAEQk/hPcIk-HiccU/s320/img_2482.jpg" alt="" id="BLOGGER_PHOTO_ID_5311350574549132226" border="0" /></a><br />[ Image credits: John D. Hunter and F.P., <a href="http://picasaweb.google.com/fdo.perez/SIAMCSE09InMiami">full album available here</a> ]<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/462991820843482154-2809648736956861499?l=fdoperez.blogspot.com'/></div>Fernandohttp://www.blogger.com/profile/12945463674195535011noreply@blogger.com3tag:blogger.com,1999:blog-462991820843482154.post-35199964412194261922009-03-09T12:06:00.000-07:002009-03-14T11:50:38.562-07:00Book review: Expert Python Programming<strong>Update</strong>: I've slightly modified the language of this review, which as my wife correctly pointed out to me, was unnecessarily harsh. While I stand by my previous evaluation of the book, I think the same things can be said in a more constructive tone.<br /><br />While this isn't strictly a SciPy post, I've already have a few questions about this book, so I guess I'll tag it as 'scipy' as well, for those interested.<br /><br />I recently reviewed the book <a class="reference" href="http://www.packtpub.com/expert-python-programming/book">Expert Python Programming</a> by Tarek Ziadé. While not aimed at a scientific audience, the book covers a number of topics that we frequently discuss on the Numpy and Scipy lists (such as documentation and testing, workflows, API decisions, etc). Since I really prefer to write longer text in reST using Emacs than in a blog editor, I've posted the review over at my static site. Feel free to head over there if you are interested in the <a href="https://cirl.berkeley.edu/fperez/py4science/expert_python_programming_review.html">full review</a>, I've only reproduced here the summary: <span style="font-size:100%;"><a id="summary" name="summary"></a></span><br /><br /><span style="font-weight: bold;">Summary</span><br /><br /><span style="font-style: italic;">Expert Python Programming</span> covers a list of very interesting topics regarding real-world development using Python. It assumes a reader who already knows the basics of the language and covers a number of important topics, both in the more advanced parts of the language and in terms of developing applications using Python. There is a strong emphasis on agile development practices, testing, documentation, application life cycle management and other aspects of 'real world' work. The list of topics covered is excellent, and the book is well printed and bound. <br /><br />However, unfortunately it suffers from rather poor editing throughout, with a broken idea flow that makes for choppy reading. Very few ideas are properly developed, as the book relies excessively on code snippets, bullet lists and stand-out info boxes. Ultimately, this gives it more the feel of a set of notes than that of a coherent volume.<br /><br />This should not be read as an indictment of the book: the table of contents alone is a list of 'right things to do' when using Python, and there is a great deal of useful material in all of the chapters. If you are looking for reference material, links and starting points for further reading, <span style="font-style: italic;">Expert Python Programming</span> can be an excellent resource and well worth your investment. However, if you are searching for a text that develops complex concepts at length, delving into details and subtleties, it might not be the ideal tool for you. I hope this provides a useful picture of the qualities of this book.<br /><br /><div class="section"> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/462991820843482154-3519996441219426192?l=fdoperez.blogspot.com'/></div>Fernandohttp://www.blogger.com/profile/12945463674195535011noreply@blogger.com0tag:blogger.com,1999:blog-462991820843482154.post-16811806188052605362008-07-28T12:22:00.000-07:002008-08-06T00:45:25.516-07:00Python tools for science go to SIAM: a trip report<span style="font-weight: bold;">Update (2008.08.06):</span> I have <a href="https://cirl.berkeley.edu/fperez/py4science/2008_siam/">posted</a> the slides I have available from the minisymposium described below.<br /><br />The <a href="http://www.siam.org/meetings/an08/">2008 SIAM annual meeting</a> was held July 7-11 in San Diego, and we had a healthy presence of Python-based tools for scientific computing. <a href="http://www.amath.washington.edu/%7Erjl/">Randy LeVeque</a> from U. Washington and I co-organized a 3-part minisymposium entitled <span style="font-style: italic;">Python and Sage: Open Source Scientific Computing.</span> You can see the list of talks for parts <a href="http://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=7369">I</a>, <a href="http://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=7370">II</a> and <a href="http://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=7447">III</a> online. I should add that for the talks where we had cancellations, we ended up with excellent impromptu replacements by <a href="http://www.cs.sandia.gov/%7Ewehart/Main/Home.html">Bill Hart</a> from Sandia National Labs and <a href="http://www.enthought.com/company/executive-team.php">Travis Oliphant</a> from Enthought.<br /><br />Our sessions were well attended (especially considering the very large number of parallel sessions at the conference) and generated lively discussion. There's clearly a need in the scientific and mathematical community for <span style="font-style: italic;">open source</span>, high level tools that integrate well with existing high performance codes written in Fortran, C or C++, while providing interactivity, visualization, access to the network, etc. This is the kind of idea that many of us in the SciPy and Sage worlds have been preaching for a while, but now the response from the wider community is much more positive than before (admittedly, years ago the tools were immature enough that they were very much of the "user assembly required" variety).<br /><br />I am extremely pleased to report that we were chosen for the <a href="http://www.ams.org/ams/siam-2008.html#python">conference highlights</a> page (many thanks to John Hunter, of <a href="http://matplotlib.sf.net/">matplotlib</a> fame, for the great screenshot)! Given that this page mostly lists the invited plenaries and other special events, I am very happy about this (SIAM had literally hundreds of talks from parallel sessions to choose from and only two of those were highlighted). I think it is both a recognition of the work done by all our speakers, and of the relevance of the topic today. Thanks again to all who contributed.<br /><br />We should take this level of interest as both a recognition an a challenge: as more scientists become interested in these tools for their everyday research, the pressure on high quality documentation, easy installation and deployment, good tutorials, etc, will only increase. Everyone is working hard on this, and in particular it's worth mentioning the excellent work that is being done this summer as part of the <a href="http://scipy.org/Developer_Zone/DocMarathon2008">NumPy/SciPy <em>Documentation Marathon 2008</em></a>, where a lot of new documentation has been added to NumPy. This is an effort where <span style="font-style: italic;">anyone</span> can contribute! The infrastructure is just a wiki where you can register to edit docs, and developers will later review and merge your contributions into the core project for the next release.<br /><br /><a href="http://scipy.org/Developer_Zone/DocMarathon2008"><em></em></a>So let's all keep up the momentum going, and I hope to see many more interested faces, both new and old, at the upcoming <a href="http://conference.scipy.org/">SciPy 2008 conference</a> at Caltech in August!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/462991820843482154-1681180618805260536?l=fdoperez.blogspot.com'/></div>Fernandohttp://www.blogger.com/profile/12945463674195535011noreply@blogger.com0