Skip to content

Instantly share code, notes, and snippets.

@codersquid
Last active August 29, 2015 14:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codersquid/7fa837f5400b12503309 to your computer and use it in GitHub Desktop.
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.
#!/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')
#!/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)
#!/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)
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!
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