Last active
August 29, 2015 14:03
-
-
Save codersquid/7fa837f5400b12503309 to your computer and use it in GitHub Desktop.
one-offs to generate a csv file from symposion Presentations and generate bitly links for them. very sloppy at the moment.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import os, urllib | |
import bitly_api | |
import csvify | |
import secrets | |
class BitlyPresentations: | |
def __init__(self, presentation_csv, | |
bitly_csv=None, | |
urlbase='http://conference.scipy.org/scipy2014/schedule/presentation'): | |
self.urlbase = urlbase | |
self.bitly = bitly_api.Connection(access_token=secrets.BITLY_ACCESS_TOKEN) | |
self.presentations = self._snarf_presentations(presentation_csv) | |
self.bitly_links = {} | |
if bitly_csv is not None: | |
self.bitly_links.update(self._snarf_bitly_links(bitly_csv)) | |
def shorten_all(self): | |
""" shorten all presentations. do not update any existing links """ | |
for k, d in self.presentations.items(): | |
url = '{}/{}'.format(self.urlbase, d['presentation_id']) | |
title = d['title'] | |
results = {} | |
try: | |
response = self.bitly.user_link_save(long_url=url, title=title, note=k) | |
results[k] = {'status': 'ok', 'response': response} | |
print 'OK', k, response | |
except bitly_api.BitlyError as e: | |
error_msg = "ERROR proposal_id: {} code: {} message: {}".format(k, e.code, e.message) | |
print error_msg | |
results[k] = {'status': error_msg, 'response': {}} | |
return results | |
def update_titles(self): | |
for k, d in self.bitly_links.items(): | |
link = d.get('link', '') | |
if 'link' == '' or k not in self.presentations: | |
print 'ERROR not updating {}'.format(k) | |
continue | |
link = d['link'] | |
title = self.presentations[k]['title'] | |
results = {} | |
try: | |
response = self.bitly.user_link_edit(link, 'title', title=title) | |
results[k] = {'status': 'ok', 'response': response} | |
print 'OK', k, response | |
except bitly_api.BitlyError as e: | |
error_msg = "ERROR proposal_id: {} code: {} message: {}".format(k, e.code, e.message) | |
print error_msg | |
results[k] = {'status': error_msg, 'response': {}} | |
def add_to_bundle(self, bundle_link='https://bitly.com/bundles/o_1uh69cuveq/4'): | |
for k, d in self.bitly_links.items(): | |
link = d.get('link', '') | |
try: | |
response = self.bitly.bundle_link_add(bundle_link, link) | |
print 'OK', k, response | |
except bitly_api.BitlyError as e: | |
error_msg = "ERROR proposal_id: {} code: {} message: {}".format(k, e.code, e.message) | |
print error_msg | |
def save_bitly_results(self, results, targetfile='results.csv'): | |
""" save results to csv file, clobbering the file | |
""" | |
with open(targetfile, 'w') as f: | |
writer = csvify.UnicodeWriter(f) | |
for k,d in results.items(): | |
response = d['response'] | |
row = [ | |
k, | |
response.get('long_url', ''), | |
response.get('aggregate_link', ''), | |
response.get('link', ''), | |
] | |
writer.writerow(row) | |
def _snarf_bitly_links(self, csvfile): | |
with open(csvfile) as f: | |
bitly_reader = csvify.UnicodeReader(f) | |
return dict((row[0], {'long_url': row[1], 'aggregate_link': row[2], 'link': row[3]})\ | |
for row in bitly_reader) | |
def _snarf_presentations(self, csvfile): | |
with open(csvfile) as f: | |
presentation_reader = csvify.UnicodeReader(f) | |
return dict((row[0], {'presentation_id': row[1], 'title': row[2]}) for row in presentation_reader) | |
if __name__ == '__main__': | |
bp = BitlyPresentations('presentations.csv', bitly_csv='results.csv') | |
#bp = BitlyPresentations('test.csv', bitly_csv='testresults.csv', urlbase="http://example.com") | |
#bp.update_titles() | |
bp.add_to_bundle() | |
#results = bp.shorten_all() | |
#bp.save_bitly_results(results, 'testresults.csv') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import os, codecs, csv, cStringIO | |
# from https://docs.python.org/2/library/csv.html#examples | |
class UTF8Recoder: | |
""" | |
Iterator that reads an encoded stream and reencodes the input to UTF-8 | |
""" | |
def __init__(self, f, encoding): | |
self.reader = codecs.getreader(encoding)(f) | |
def __iter__(self): | |
return self | |
def next(self): | |
return self.reader.next().encode("utf-8") | |
class UnicodeReader: | |
""" | |
A CSV reader which will iterate over lines in the CSV file "f", | |
which is encoded in the given encoding. | |
""" | |
def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): | |
f = UTF8Recoder(f, encoding) | |
self.reader = csv.reader(f, dialect=dialect, **kwds) | |
def next(self): | |
row = self.reader.next() | |
return [unicode(s, "utf-8") for s in row] | |
def __iter__(self): | |
return self | |
class UnicodeWriter: | |
""" | |
A CSV writer which will write rows to CSV file "f", | |
which is encoded in the given encoding. | |
""" | |
def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): | |
# Redirect output to a queue | |
self.queue = cStringIO.StringIO() | |
self.writer = csv.writer(self.queue, dialect=dialect, **kwds) | |
self.stream = f | |
self.encoder = codecs.getincrementalencoder(encoding)() | |
def writerow(self, row): | |
self.writer.writerow([s.encode("utf-8") for s in row]) | |
# Fetch UTF-8 output from the queue ... | |
data = self.queue.getvalue() | |
data = data.decode("utf-8") | |
# ... and reencode it into the target encoding | |
data = self.encoder.encode(data) | |
# write to the target stream | |
self.stream.write(data) | |
# empty queue | |
self.queue.truncate(0) | |
def writerows(self, rows): | |
for row in rows: | |
self.writerow(row) | |
def csvify(presentations): | |
with open('presentations.csv', 'w') as fh: | |
writer = UnicodeWriter(fh) | |
for p in presentations: | |
writer.writerow([str(p.proposal.id), str(p.id), p.title]) | |
if __name__ == '__main__': | |
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "scipy2014.settings") | |
from symposion.schedule.models import Presentation | |
presentations = Presentation.objects.order_by('proposal_base') | |
csvify(presentations) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import os, codecs, csv, cStringIO, json | |
def schedule_dict(bitly_links={}): | |
""" json in lanyard format """ | |
presentations = Presentation.objects.filter(cancelled=False) | |
sessions = [] | |
for p in presentations: | |
sessions.append(to_session(p, bitly_links=bitly_links)) | |
return sessions | |
# based on https://docs.google.com/document/d/1aT_mIJ7Q-eawamGs_9HrBZL_Lfa0dBohXhc1SpfYSj0/pub?embedded=true | |
def to_session(presentation, bitly_links={}): | |
# get the room of a presentation | |
# from slot to slotroom to room | |
slot = presentation.slot | |
slotroom = SlotRoom.objects.get(slot=slot) | |
room = slotroom.room | |
year = slot.day.date.strftime('%Y-%m-%d') | |
d = bitly_links.get(str(presentation.proposal.id), {}) | |
url = d.get('link', '') | |
speakers = [] | |
for s in presentation.speakers(): | |
speakers.append(to_speaker(s)) | |
return { | |
'crowdsource_ref': presentation.proposal.id, | |
'title': presentation.title, | |
'abstract': presentation.description.raw, # not LML. | |
'url': url, | |
'start_time': '{} {}'.format(year, slot.start.strftime('%H:%M')), | |
'end_time': '{} {}'.format(year, slot.end.strftime('%H:%M')), | |
'space_name': room.name, | |
'venue': 'vd', # default to AT&T conference center | |
'speakers': speakers, # list of speakers | |
} | |
# http://lanyrd.com/venues/austin/vd/ att | |
# http://lanyrd.com/venues/austin/vdqym/ enthought | |
# http://lanyrd.com/venues/austin/vdqyp/ scholtz | |
def to_speaker(speaker): | |
return { | |
'crowdsource_ref': speaker.user.id, | |
'name': speaker.name, | |
#'role': '', | |
'bio': speaker.biography.raw, # not LML | |
} | |
# from https://docs.python.org/2/library/csv.html#examples | |
class UTF8Recoder: | |
""" | |
Iterator that reads an encoded stream and reencodes the input to UTF-8 | |
""" | |
def __init__(self, f, encoding): | |
self.reader = codecs.getreader(encoding)(f) | |
def __iter__(self): | |
return self | |
def next(self): | |
return self.reader.next().encode("utf-8") | |
class UnicodeReader: | |
""" | |
A CSV reader which will iterate over lines in the CSV file "f", | |
which is encoded in the given encoding. | |
""" | |
def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): | |
f = UTF8Recoder(f, encoding) | |
self.reader = csv.reader(f, dialect=dialect, **kwds) | |
def next(self): | |
row = self.reader.next() | |
return [unicode(s, "utf-8") for s in row] | |
def __iter__(self): | |
return self | |
def snarf_bitly_links(csvfile): | |
with open(csvfile) as f: | |
bitly_reader = UnicodeReader(f) | |
return dict((row[0], {'long_url': row[1], 'aggregate_link': row[2], 'link': row[3]})\ | |
for row in bitly_reader) | |
if __name__ == '__main__': | |
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "scipy2014.settings") | |
from symposion.schedule.models import Presentation, SlotRoom, Slot, Room | |
from symposion.speakers.models import Speaker | |
bitly_links = snarf_bitly_links('results.csv') | |
d = schedule_dict(bitly_links=bitly_links) | |
with open('lanyard.json', 'w') as f: | |
json.dump(d, f, indent=2) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 | 1693 | airspeed velocity: tracking performance of Python projects over their lifetime | |
---|---|---|---|
11 | 1742 | A success story in using Python in a graduate chemical engineering course | |
12 | 1662 | Bayesian Statistical Analysis using Python | |
13 | 1694 | Scientific Computing in the Undergraduate Meteorology Curriculum at Millersville University | |
14 | 1681 | SociaLite: Python-integrated query language for data analysis | |
15 | 1691 | Zeke: A Python Platform for Teaching Mathematical Modeling of Infectious Diseases | |
19 | 1766 | Introduction to Biopython | |
20 | 1767 | Plotly: Scientific, Web-Based Plotting | |
21 | 1768 | Investigating Stiffness Controls on Earthquake Behavior - An Ideal Environment for Python Workflows | |
22 | 1756 | Interactive visualization in the browser | |
23 | 1671 | Integrating Python and C++ with Boost.Python | |
24 | 1722 | The KBase Narrative: Bioinformatics for the 99% | |
25 | 1667 | Multibody Dynamics and Control with Python | |
26 | 1726 | Enhancements to Ginga: an Astronomical Image Viewer and Toolkit | |
27 | 1734 | Prototyping a Geophysical Algorithm in Python | |
28 | 1701 | Rasterio: Geospatial Raster Data Access for Programmers and Future Programmers | |
31 | 1663 | Interactive Parallel Computing with IPython | |
33 | 1684 | the failure of python object serialization: why HPC in python is broken, and how to fix it | |
36 | 1724 | Clustering of high-content screen images to discover off-target phenotypes | |
37 | 1682 | Practical experience in teaching numerical methods with IPython notebooks | |
38 | 1705 | Bokeh: Interactive Visualizations in the Browser | |
39 | 1728 | Astropy in 2014; What's new, where we are headed | |
40 | 1660 | Astropy and astronomical tools Part I | |
42 | 1743 | Synthesis and analysis of circuits in the IPython notebook | |
45 | 1741 | Perceptions of Matplotlib colormaps | |
46 | 1740 | How to choose a good colour map | |
47 | 1713 | TracPy: Wrapping the FORTRAN Lagrangian trajectory model TRACMASS | |
50 | 1738 | Epipy: Visualization of emerging zoonoses through temporal networks | |
52 | 1714 | A Python Framework for 3D Gamma Ray Imaging | |
57 | 1689 | Climate & GIS: User friendly data access, workflows, manipulation, analysis and visualization of cli | |
60 | 1733 | The history and design behind the Python Geophysical Modelling and Interpretation (PyGMI) package | |
64 | 1720 | Zero Dependency Python | |
65 | 1670 | Image analysis in Python with scipy and scikit-image | |
66 | 1727 | Simulating X-ray Observations with Python | |
67 | 1702 | Object-oriented programming with NumPy using CPython & PyPy; comparison with C++ & modern Fortran | |
74 | 1744 | CodaLab - a new service for data exchange, code execution, benchmarks and reproducible research | |
76 | 1665 | Anatomy of Matplotlib | |
80 | 1692 | Cartopy | |
81 | 1729 | yt: volumetric data analysis | |
82 | 1703 | Behind the Scenes of the University and Supplier Relationship | |
84 | 1737 | Multi-Purpose Particle Tracking | |
85 | 1735 | SimpleITK - Advanced Image Analysis for Python | |
86 | 1731 | The road to Modelr: building a commercial web application on an open source foundation | |
88 | 1673 | Frequentism and Bayesianim: What's the Big Deal? | |
91 | 1711 | Time Series Analysis for Network Security | |
92 | 1718 | IPython-Reveal.js attacks again, but now... it is alive! | |
94 | 1723 | Building petabyte-scale comparative genomics pipelines | |
95 | 1715 | putting the v in IPython: vim-ipython and ipython-vimception | |
96 | 1761 | Teaching spatial analysis using python | |
97 | 1710 | Measuring rainshafts: Bringing python to bear on remote sensing data. | |
98 | 1679 | Project-based introduction to scientific computing for physics majors | |
99 | 1763 | Geospatial Data and Analysis Stack | |
101 | 1725 | Software for Panoptes: A Citizen Science Observatory | |
102 | 1661 | SymPy | |
103 | 1695 | Ocean Model Assessment for Everyone | |
104 | 1680 | The PlaceIQ Location-Based Analytic Platform: | |
105 | 1717 | Blaze: Building a Foundation for Array-Oriented Computing in Python | |
106 | 1677 | Fast Algorithms for Binary Spatial Adjacency Measures | |
108 | 1708 | Conda: a cross-platform package manager for any binary distribution | |
109 | 1687 | WCSAxes: a framework for plotting astronomical and geospatial data | |
113 | 1668 | Reproducible Science - Walking the Walk | |
114 | 1706 | The Berkeley Institute for Data Science: a place for people like us | |
115 | 1753 | Python 3 and the SciPy ecosystem | |
116 | 1690 | PyViennaCL: Very easy GPGPU linear algebra | |
117 | 1658 | Fundamentals of the IPython Display Architecture and Interactive Widgets | |
119 | 1748 | Scientific Knowledge Management with Web of Trails | |
122 | 1732 | Advanced 3D Seismic Visualization in Python | |
123 | 1755 | Tools for Open and Reproducible Workflows | |
126 | 1664 | Geospatial data in Python: Database, desktop, and the web | |
128 | 1675 | Python backends for climate science web-apps | |
130 | 1678 | Integrating pylearn2 and hyperopt: taking deep learning further with hyperparameter optimization | |
131 | 1698 | Real-time Crunching of Petabytes of Geospatial Data with Google Earth Engine | |
134 | 1712 | Campaign for IT literacy through FOSS and Spoken Tutorials | |
135 | 1683 | Light-weight real-time event detection with Python | |
138 | 1669 | Introduction to Julia | |
140 | 1709 | MASA: A Tool for the Verification of Scientific Software | |
141 | 1699 | PyMC: Markov chain Monte Carlo in Python | |
145 | 1747 | Reflexive data science on SciPy communities | |
146 | 1666 | Birds in Random Kaggle Forests | |
147 | 1672 | Teaching numerical methods with IPython notebooks | |
149 | 1685 | Taking Control - Enabling Mathematicians and Scientists | |
153 | 1696 | Reproducible, relocatable, customizable builds and packaging with HashDist | |
156 | 1697 | Python for economists (and other social scientists!) | |
157 | 1745 | Plasticity in OOF | |
160 | 1686 | Spatial-Temporal Prediction of Climate Change Impacts using pyimpute, scikit-learn and GDAL | |
161 | 1730 | Transient detection and image analysis pipeline for TOROS project | |
166 | 1739 | How interactive visualization led to insights in digital holographic microscopy | |
169 | 1700 | Teaching Python to undergraduate students | |
170 | 1719 | Activity detection from GPS tracker data | |
172 | 1716 | pySI: A Python Framework for Spatial Interaction Modelling | |
174 | 1657 | The wonderful world of scientific computing with Python | |
175 | 1721 | scikit-bio: core bioinformatics data structures and algorithms in Python | |
176 | 1674 | GeoPandas: Geospatial data + pandas | |
177 | 1676 | A Common Scientific Compute Environment for Research and Education | |
179 | 1704 | Using PyNIO and MPI for Python to help solve a big data problem for the CESM | |
181 | 1659 | HDF5 is for Lovers | |
182 | 1746 | Mapping Networks of Violence | |
183 | 1736 | HoloPy: Holograpy and Light Scattering in Python | |
184 | 1707 | Deploying Python tools to GIS users | |
185 | 1688 | Creating a browser-based virtual computer lab for classroom instruction | |
191 | 1758 | You Win or You SciPy | |
195 | 1757 | Visualization | |
196 | 1764 | Emacs and Python BoF | |
197 | 1750 | Programmers in Research: their place in Universities | |
199 | 1751 | Matplotlib Enhancement Proposal discussion | |
200 | 1759 | IPython | |
201 | 1754 | Python in the Atmospheric and Oceanic Sciences | |
202 | 1760 | SymPy | |
203 | 1749 | NumFOCUS | |
204 | 1762 | Teaching the SciPy Stack | |
205 | 1765 | NumPy | |
207 | 1752 | Volunteer SciPy2015! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 | http://conference.scipy.org/scipy2014/schedule/presentation/1693 | http://bit.ly/1mOk7Zu | http://bit.ly/1mOk7Jh | |
---|---|---|---|---|
11 | http://conference.scipy.org/scipy2014/schedule/presentation/1742 | http://bit.ly/1mOk9kk | http://bit.ly/1mOk9kj | |
12 | http://conference.scipy.org/scipy2014/schedule/presentation/1662 | http://bit.ly/1mOkeUY | http://bit.ly/1mOkeUX | |
13 | http://conference.scipy.org/scipy2014/schedule/presentation/1694 | http://bit.ly/ViNmOI | http://bit.ly/ViNmOH | |
14 | http://conference.scipy.org/scipy2014/schedule/presentation/1681 | http://bit.ly/1mOkd3l | http://bit.ly/1mOkd3k | |
15 | http://conference.scipy.org/scipy2014/schedule/presentation/1691 | http://bit.ly/ViNptE | http://bit.ly/ViNptC | |
19 | http://conference.scipy.org/scipy2014/schedule/presentation/1766 | http://bit.ly/ViNptT | http://bit.ly/ViNptS | |
20 | http://conference.scipy.org/scipy2014/schedule/presentation/1767 | http://bit.ly/ViNfCx | http://bit.ly/ViNfCw | |
21 | http://conference.scipy.org/scipy2014/schedule/presentation/1768 | http://bit.ly/1mOk3ZW | http://bit.ly/1mOk3ZV | |
22 | http://conference.scipy.org/scipy2014/schedule/presentation/1756 | http://bit.ly/ViNduD | http://bit.ly/ViNduC | |
23 | http://conference.scipy.org/scipy2014/schedule/presentation/1671 | http://bit.ly/1mOk6Vq | http://bit.ly/1mOk403 | |
24 | http://conference.scipy.org/scipy2014/schedule/presentation/1722 | http://bit.ly/ViNde0 | http://bit.ly/ViNddY | |
25 | http://conference.scipy.org/scipy2014/schedule/presentation/1667 | http://bit.ly/1mOk9AD | http://bit.ly/1mOk9AC | |
26 | http://conference.scipy.org/scipy2014/schedule/presentation/1726 | http://bit.ly/ViNdus | http://bit.ly/ViNdur | |
27 | http://conference.scipy.org/scipy2014/schedule/presentation/1734 | http://bit.ly/1mOk9AK | http://bit.ly/1mOk9AJ | |
28 | http://conference.scipy.org/scipy2014/schedule/presentation/1701 | http://bit.ly/1mOk9Re | http://bit.ly/1mOk9Rd | |
31 | http://conference.scipy.org/scipy2014/schedule/presentation/1663 | http://bit.ly/1mOk8g7 | http://bit.ly/1mOk8g6 | |
33 | http://conference.scipy.org/scipy2014/schedule/presentation/1684 | http://bit.ly/ViNiyk | http://bit.ly/ViNiyh | |
36 | http://conference.scipy.org/scipy2014/schedule/presentation/1724 | http://bit.ly/1mOkbIR | http://bit.ly/1mOkbIQ | |
37 | http://conference.scipy.org/scipy2014/schedule/presentation/1682 | http://bit.ly/ViNiyu | http://bit.ly/ViNiyt | |
38 | http://conference.scipy.org/scipy2014/schedule/presentation/1705 | http://bit.ly/1mOkbIK | http://bit.ly/1mOkbIJ | |
39 | http://conference.scipy.org/scipy2014/schedule/presentation/1728 | http://bit.ly/ViNihM | http://bit.ly/ViNihL | |
40 | http://conference.scipy.org/scipy2014/schedule/presentation/1660 | http://bit.ly/1mOkdjX | http://bit.ly/1mOkdjW | |
42 | http://conference.scipy.org/scipy2014/schedule/presentation/1743 | http://bit.ly/ViNq0O | http://bit.ly/ViNq0N | |
45 | http://conference.scipy.org/scipy2014/schedule/presentation/1741 | http://bit.ly/1mOkd3A | http://bit.ly/1mOkd3z | |
46 | http://conference.scipy.org/scipy2014/schedule/presentation/1740 | http://bit.ly/1mOkd3t | http://bit.ly/1mOkd3s | |
47 | http://conference.scipy.org/scipy2014/schedule/presentation/1713 | http://bit.ly/ViNnC3 | http://bit.ly/ViNnC2 | |
50 | http://conference.scipy.org/scipy2014/schedule/presentation/1738 | http://bit.ly/1mOka7L | http://bit.ly/1mOka7K | |
52 | http://conference.scipy.org/scipy2014/schedule/presentation/1714 | http://bit.ly/ViNei0 | http://bit.ly/ViNehZ | |
57 | http://conference.scipy.org/scipy2014/schedule/presentation/1689 | http://bit.ly/ViNg9P | http://bit.ly/ViNg9O | |
60 | http://conference.scipy.org/scipy2014/schedule/presentation/1733 | http://bit.ly/ViNiOT | http://bit.ly/ViNiOS | |
64 | http://conference.scipy.org/scipy2014/schedule/presentation/1720 | http://bit.ly/1mOk8gh | http://bit.ly/1mOk8gg | |
65 | http://conference.scipy.org/scipy2014/schedule/presentation/1670 | http://bit.ly/ViNldB | http://bit.ly/ViNldA | |
66 | http://conference.scipy.org/scipy2014/schedule/presentation/1727 | http://bit.ly/1mOk8wx | http://bit.ly/1mOk8ww | |
67 | http://conference.scipy.org/scipy2014/schedule/presentation/1702 | http://bit.ly/ViNltV | http://bit.ly/ViNltU | |
74 | http://conference.scipy.org/scipy2014/schedule/presentation/1744 | http://bit.ly/ViNqxT | http://bit.ly/ViNqxS | |
76 | http://conference.scipy.org/scipy2014/schedule/presentation/1665 | http://bit.ly/1mOkdAt | http://bit.ly/1mOkdAs | |
80 | http://conference.scipy.org/scipy2014/schedule/presentation/1692 | http://bit.ly/1mOk7J1 | http://bit.ly/1mOk7J0 | |
81 | http://conference.scipy.org/scipy2014/schedule/presentation/1729 | http://bit.ly/ViNk9m | http://bit.ly/ViNk9k | |
82 | http://conference.scipy.org/scipy2014/schedule/presentation/1703 | http://bit.ly/ViNjT2 | http://bit.ly/ViNjT1 | |
84 | http://conference.scipy.org/scipy2014/schedule/presentation/1737 | http://bit.ly/ViNhKH | http://bit.ly/ViNhKG | |
85 | http://conference.scipy.org/scipy2014/schedule/presentation/1735 | http://bit.ly/1mOk7Jd | http://bit.ly/1mOk7Jc | |
86 | http://conference.scipy.org/scipy2014/schedule/presentation/1731 | http://bit.ly/1mOk7J5 | http://bit.ly/1mOk7J4 | |
88 | http://conference.scipy.org/scipy2014/schedule/presentation/1673 | http://bit.ly/1mOkaER | http://bit.ly/1mOkaEQ | |
91 | http://conference.scipy.org/scipy2014/schedule/presentation/1711 | http://bit.ly/ViNmhy | http://bit.ly/ViNmhx | |
92 | http://conference.scipy.org/scipy2014/schedule/presentation/1718 | http://bit.ly/ViNmyf | http://bit.ly/ViNmye | |
94 | http://conference.scipy.org/scipy2014/schedule/presentation/1723 | http://bit.ly/ViNpda | http://bit.ly/ViNpd8 | |
95 | http://conference.scipy.org/scipy2014/schedule/presentation/1715 | http://bit.ly/ViNfCH | http://bit.ly/ViNfCG | |
96 | http://conference.scipy.org/scipy2014/schedule/presentation/1761 | http://bit.ly/ViNpde | http://bit.ly/ViNpdd | |
97 | http://conference.scipy.org/scipy2014/schedule/presentation/1710 | http://bit.ly/1mOk9k8 | http://bit.ly/1mOk9k7 | |
98 | http://conference.scipy.org/scipy2014/schedule/presentation/1679 | http://bit.ly/ViNm1c | http://bit.ly/ViNm19 | |
99 | http://conference.scipy.org/scipy2014/schedule/presentation/1763 | http://bit.ly/1mOk8Nj | http://bit.ly/1mOk8Ni | |
101 | http://conference.scipy.org/scipy2014/schedule/presentation/1725 | http://bit.ly/ViNi1f | http://bit.ly/ViNi1e | |
102 | http://conference.scipy.org/scipy2014/schedule/presentation/1661 | http://bit.ly/ViNkq3 | http://bit.ly/ViNkq2 | |
103 | http://conference.scipy.org/scipy2014/schedule/presentation/1695 | http://bit.ly/1mOkbbV | http://bit.ly/1mOkbbU | |
104 | http://conference.scipy.org/scipy2014/schedule/presentation/1680 | http://bit.ly/ViNkGD | http://bit.ly/ViNkGC | |
105 | http://conference.scipy.org/scipy2014/schedule/presentation/1717 | http://bit.ly/1mOkbsj | http://bit.ly/1mOkbsi | |
106 | http://conference.scipy.org/scipy2014/schedule/presentation/1677 | http://bit.ly/1mOkbsf | http://bit.ly/1mOkbse | |
108 | http://conference.scipy.org/scipy2014/schedule/presentation/1708 | http://bit.ly/ViNkpT | http://bit.ly/ViNkpS | |
109 | http://conference.scipy.org/scipy2014/schedule/presentation/1687 | http://bit.ly/1mOkbbJ | http://bit.ly/1mOkbbI | |
113 | http://conference.scipy.org/scipy2014/schedule/presentation/1668 | http://bit.ly/1mOk7sL | http://bit.ly/1mOk7sK | |
114 | http://conference.scipy.org/scipy2014/schedule/presentation/1706 | http://bit.ly/ViNgXl | http://bit.ly/ViNgXk | |
115 | http://conference.scipy.org/scipy2014/schedule/presentation/1753 | http://bit.ly/1mOkaEL | http://bit.ly/1mOkaEK | |
116 | http://conference.scipy.org/scipy2014/schedule/presentation/1690 | http://bit.ly/ViNjSW | http://bit.ly/ViNjSV | |
117 | http://conference.scipy.org/scipy2014/schedule/presentation/1658 | http://bit.ly/1mOkeV8 | http://bit.ly/1mOkeV7 | |
119 | http://conference.scipy.org/scipy2014/schedule/presentation/1748 | http://bit.ly/1mOk6VB | http://bit.ly/1mOk6VA | |
122 | http://conference.scipy.org/scipy2014/schedule/presentation/1732 | http://bit.ly/ViNg9D | http://bit.ly/ViNg9C | |
123 | http://conference.scipy.org/scipy2014/schedule/presentation/1755 | http://bit.ly/1mOka7C | http://bit.ly/1mOk9Rp | |
126 | http://conference.scipy.org/scipy2014/schedule/presentation/1664 | http://bit.ly/ViNe1u | http://bit.ly/ViNe1t | |
128 | http://conference.scipy.org/scipy2014/schedule/presentation/1675 | http://bit.ly/1mOk7bY | http://bit.ly/1mOk7bX | |
130 | http://conference.scipy.org/scipy2014/schedule/presentation/1678 | http://bit.ly/ViNcH3 | http://bit.ly/ViNcH2 | |
131 | https://conference.scipy.org/scipy2014/schedule/presentation/1698/ | http://bit.ly/1mOiMBZ | ||
134 | http://conference.scipy.org/scipy2014/schedule/presentation/1712 | http://bit.ly/ViNcXv | http://bit.ly/ViNcXt | |
135 | http://conference.scipy.org/scipy2014/schedule/presentation/1683 | http://bit.ly/1mOk6F9 | http://bit.ly/1mOk6F8 | |
138 | http://conference.scipy.org/scipy2014/schedule/presentation/1669 | http://bit.ly/1mOk6Fd | http://bit.ly/1mOk6Fc | |
140 | http://conference.scipy.org/scipy2014/schedule/presentation/1709 | http://bit.ly/ViNqhs | http://bit.ly/ViNqhr | |
141 | http://conference.scipy.org/scipy2014/schedule/presentation/1699 | http://bit.ly/1mOkfsc | http://bit.ly/1mOkfsb | |
145 | http://conference.scipy.org/scipy2014/schedule/presentation/1747 | http://bit.ly/1mOkdk1 | http://bit.ly/1mOkdk0 | |
146 | http://conference.scipy.org/scipy2014/schedule/presentation/1666 | http://bit.ly/ViNq0V | http://bit.ly/ViNq0T | |
147 | http://conference.scipy.org/scipy2014/schedule/presentation/1672 | http://bit.ly/1mOkfrY | http://bit.ly/1mOkfrX | |
149 | http://conference.scipy.org/scipy2014/schedule/presentation/1685 | http://bit.ly/ViNo94 | http://bit.ly/ViNo93 | |
153 | http://conference.scipy.org/scipy2014/schedule/presentation/1696 | http://bit.ly/ViNnlx | http://bit.ly/ViNnlw | |
156 | http://conference.scipy.org/scipy2014/schedule/presentation/1697 | http://bit.ly/ViNnlL | http://bit.ly/ViNnlK | |
157 | http://conference.scipy.org/scipy2014/schedule/presentation/1745 | http://bit.ly/1mOkd3q | http://bit.ly/1mOkd3p | |
160 | http://conference.scipy.org/scipy2014/schedule/presentation/1686 | http://bit.ly/1mOk93R | http://bit.ly/1mOk93Q | |
161 | http://conference.scipy.org/scipy2014/schedule/presentation/1730 | http://bit.ly/ViNfT7 | http://bit.ly/ViNfT6 | |
166 | http://conference.scipy.org/scipy2014/schedule/presentation/1739 | http://bit.ly/1mOk93L | http://bit.ly/1mOk93K | |
169 | http://conference.scipy.org/scipy2014/schedule/presentation/1700 | http://bit.ly/1mOk93D | http://bit.ly/1mOk93C | |
170 | http://conference.scipy.org/scipy2014/schedule/presentation/1719 | http://bit.ly/ViNlKx | http://bit.ly/ViNlKv | |
172 | http://conference.scipy.org/scipy2014/schedule/presentation/1716 | http://bit.ly/1mOk8wN | http://bit.ly/1mOk8wM | |
174 | http://conference.scipy.org/scipy2014/schedule/presentation/1657 | http://bit.ly/ViNlu9 | http://bit.ly/ViNlu8 | |
175 | http://conference.scipy.org/scipy2014/schedule/presentation/1721 | http://bit.ly/1mOkbZp | http://bit.ly/1mOkbZo | |
176 | http://conference.scipy.org/scipy2014/schedule/presentation/1674 | http://bit.ly/ViNjlK | http://bit.ly/ViNj5x | |
177 | http://conference.scipy.org/scipy2014/schedule/presentation/1676 | http://bit.ly/1mOk8wB | http://bit.ly/1mOk8wA | |
179 | http://conference.scipy.org/scipy2014/schedule/presentation/1704 | http://bit.ly/1mOkaoc | http://bit.ly/1mOkaob | |
181 | http://conference.scipy.org/scipy2014/schedule/presentation/1659 | http://bit.ly/1mOk8N7 | http://bit.ly/1mOk8N6 | |
182 | http://conference.scipy.org/scipy2014/schedule/presentation/1746 | http://bit.ly/1mOkbZv | http://bit.ly/1mOkbZu | |
183 | http://conference.scipy.org/scipy2014/schedule/presentation/1736 | http://bit.ly/ViNjCk | http://bit.ly/ViNjCj | |
184 | http://conference.scipy.org/scipy2014/schedule/presentation/1707 | http://bit.ly/ViNm10 | http://bit.ly/ViNm0Z | |
185 | http://conference.scipy.org/scipy2014/schedule/presentation/1688 | http://bit.ly/1mOkcfV | http://bit.ly/1mOkcfU | |
191 | http://conference.scipy.org/scipy2014/schedule/presentation/1758 | http://bit.ly/ViNgXc | http://bit.ly/ViNgXb | |
195 | http://conference.scipy.org/scipy2014/schedule/presentation/1757 | http://bit.ly/1mOk7cf | http://bit.ly/1mOk7ce | |
196 | http://conference.scipy.org/scipy2014/schedule/presentation/1764 | http://bit.ly/1mOkaoo | http://bit.ly/1mOkaon | |
197 | http://conference.scipy.org/scipy2014/schedule/presentation/1750 | http://bit.ly/ViNgGQ | http://bit.ly/ViNgGP | |
199 | http://conference.scipy.org/scipy2014/schedule/presentation/1751 | http://bit.ly/ViNgqm | http://bit.ly/ViNgql | |
200 | http://conference.scipy.org/scipy2014/schedule/presentation/1759 | http://bit.ly/ViNgGI | http://bit.ly/ViNgGH | |
201 | http://conference.scipy.org/scipy2014/schedule/presentation/1754 | http://bit.ly/1mOka7U | http://bit.ly/1mOka7T | |
202 | http://conference.scipy.org/scipy2014/schedule/presentation/1760 | http://bit.ly/ViNm14 | http://bit.ly/ViNm13 | |
203 | http://conference.scipy.org/scipy2014/schedule/presentation/1749 | http://bit.ly/ViNqhh | http://bit.ly/ViNqhe | |
204 | http://conference.scipy.org/scipy2014/schedule/presentation/1762 | http://bit.ly/1mOkdk7 | http://bit.ly/1mOkdk6 | |
205 | http://conference.scipy.org/scipy2014/schedule/presentation/1765 | http://bit.ly/ViNnSA | http://bit.ly/ViNnSz | |
207 | http://conference.scipy.org/scipy2014/schedule/presentation/1752 | http://bit.ly/ViNk9B | http://bit.ly/ViNk9z |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment