EDtv (1999) 3 1/2 stars out of 4. Starring Matthew McConaughey, Jenna Elfman, Woody Harrelson, Ellen DeGeneres, Martin Landau, Sally Kirkland and Elizabeth Hurley.
Inevitably, someone is going to liken EDtv to The Truman Show.
But comparisons, in this case, are invalid.
The only thing these two movies have in common is that both concern individuals whose life is continually put before the public.
But while Truman Burbank was the unwitting and unknowing star of his own life, Ed Pekurny allows his life to be taped and presented uncensored to a curious and, later, demanding public.
Ron Howard's EDtv is a comedy about our obsession with fame and celebrity. Along the way, it skewers our notion of what constitutes these qualities and how people acquire them.
 He's a 31-year-old transplanted Texan working in a San Francisco video store when he is plucked from obscurity by Cynthia (Ellen DeGeneres), the programming director for True TV, a new network looking for an audience hook.
Her idea is to follow around one person for 24 hours a day, seven days a week, capturing every facet of his life on television.
Cynthia chooses Ed because he is such a schnook, a good old boy with no pretenses.
At first, Ed likes the idea, but when he realizes the price that fame costs him, his girlfriend and his family, he becomes disillusioned.
The charm of Howard's film, written by his usual collaborators, Lowell Ganz and Babaloo Mandel, is in the wonderful performances Howard elicits from his all-star cast, which also includes Woody Harrelson, Jenna Elfman, Martin Landau, the great Sally Kirkland, Dennis Hopper, Elizabeth Hurley and Rob Reiner.
The essence of screen acting is to perform as if the camera is not there. To be successful, an actor cannot be self-conscious. A performer must forget about the camera.
But in EDtv, the cast has to continually switch emotions, going from ignoring the camera to the realization that their lives are being shown live nationwide. In other words, the actors must act self-consciously during those scenes in which they realize they're being broadcast on video.
It is not a simple task, yet Howard's cast is most successful at differentiating between being on-camera and "on camera."
McConaughey displays a goofy kind of innocence as Ed, even though his part could have been an unsympathetic one. By not caring or realizing the havoc his decision would rain on his family and friends, McConaughey's Ed comes across as a bit of a self-absorbed geek.
Yet his Ed is so likable, so down to earth, that we forgive his trespass and root for him.
Elfman, as Shari, the woman whom 71 percent of the people in a USA Today poll say is no good for Ed, is wonderful and photogenic.
Elfman is one of those actresses the camera loves. When she is on the screen, she grabs a scene and holds it.
Harrelson is funny as Ed's braggart older brother who uses Ed's 15 minutes of fame to promote his gym concept.
DeGeneres is sly and witty as the TV programmer who continually manipulates Ed. Landau almost steals the film as Ed's wise-cracking stepfather, while Kirkland as his publicity-hungry mom is given little to do.
Hurley contributes some nice physical comedy as the model who uses Ed as a publicity ploy.
The script continually cuts to various groups watching Ed's life unfold. They are our Greek chorus, commenting on the action. It's a slick device that keeps the movie moving.
EDtv is not as vicious a satire as I would have liked. Its swipes at the media are more jabs and love taps than uppercuts, and its finale seems contrived.
Still, it is an enjoyable two hours filled with solid performances and some genuine laughs.
Bob Bloom is the film critic at the Journal and Courier in Lafayette, IN. He can be reached by e-mail at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


This is a major release from 0.11.0 and includes several new features and enhancements along with a large number of bug fixes.
Highlights include a consistent I/O API naming scheme, routines to read html, write MultiIndexes to csv files, read & write STATA data files, read & write JSON format files, Python 3 support for HDFStore, filtering of groupby expressions via filter, and a revamped replace routine that accepts regular expressions.
HDFStore
filter
replace
The I/O API is now much more consistent with a set of top level reader functions accessed like pd.read_csv() that generally return a pandas object. read_csv read_excel read_hdf read_sql read_json read_html read_stata read_clipboard The corresponding writer functions are object methods that are accessed like df.to_csv() to_csv to_excel to_hdf to_sql to_json to_html to_stata to_clipboard Fix modulo and integer division on Series,DataFrames to act similarly to float dtypes to return np.nan or np.inf as appropriate (GH3590). This correct a numpy bug that treats integer and float dtypes differently. In [1]: p = pd.DataFrame({'first': [4, 5, 8], 'second': [0, 0, 3]}) In [2]: p % 0 Out[2]: first second 0 NaN NaN 1 NaN NaN 2 NaN NaN In [3]: p % p Out[3]: first second 0 0.0 NaN 1 0.0 NaN 2 0.0 0.0 In [4]: p / p Out[4]: first second 0 1.0 NaN 1 1.0 NaN 2 1.0 1.0 In [5]: p / 0 Out[5]: first second 0 inf NaN 1 inf NaN 2 inf inf Add squeeze keyword to groupby to allow reduction from DataFrame -> Series if groups are unique. This is a Regression from 0.10.1. We are reverting back to the prior behavior. This means groupby will return the same shaped objects whether the groups are unique or not. Revert this issue (GH2893) with (GH3596). In [6]: df2 = pd.DataFrame([{"val1": 1, "val2": 20}, ...: {"val1": 1, "val2": 19}, ...: {"val1": 1, "val2": 27}, ...: {"val1": 1, "val2": 12}]) ...: In [7]: def func(dataf): ...: return dataf["val2"] - dataf["val2"].mean() ...: # squeezing the result frame to a series (because we have unique groups) In [8]: df2.groupby("val1", squeeze=True).apply(func) Out[8]: 0 0.5 1 -0.5 2 7.5 3 -7.5 Name: 1, dtype: float64 # no squeezing (the default, and behavior in 0.10.1) In [9]: df2.groupby("val1").apply(func) Out[9]: val2 0 1 2 3 val1 1 0.5 -0.5 7.5 -7.5 Raise on iloc when boolean indexing with a label based indexer mask e.g. a boolean Series, even with integer labels, will raise. Since iloc is purely positional based, the labels on the Series are not alignable (GH3631) This case is rarely used, and there are plenty of alternatives. This preserves the iloc API to be purely positional based. In [10]: df = pd.DataFrame(range(5), index=list('ABCDE'), columns=['a']) In [11]: mask = (df.a % 2 == 0) In [12]: mask Out[12]: A True B False C True D False E True Name: a, dtype: bool # this is what you should use In [13]: df.loc[mask] Out[13]: a A 0 C 2 E 4 # this will work as well In [14]: df.iloc[mask.values] Out[14]: a A 0 C 2 E 4 df.iloc[mask] will raise a ValueError The raise_on_error argument to plotting functions is removed. Instead, plotting functions raise a TypeError when the dtype of the object is object to remind you to avoid object arrays whenever possible and thus you should cast to an appropriate numeric dtype if you need to plot something. Add colormap keyword to DataFrame plotting methods. Accepts either a matplotlib colormap object (ie, matplotlib.cm.jet) or a string name of such an object (ie, ‘jet’). The colormap is sampled to select the color for each column. Please see Colormaps for more information. (GH3860) DataFrame.interpolate() is now deprecated. Please use DataFrame.fillna() and DataFrame.replace() instead. (GH3582, GH3675, GH3676) the method and axis arguments of DataFrame.replace() are deprecated DataFrame.replace ‘s infer_types parameter is removed and now performs conversion by default. (GH3907) Add the keyword allow_duplicates to DataFrame.insert to allow a duplicate column to be inserted if True, default is False (same as prior to 0.12) (GH3679) Implement __nonzero__ for NDFrame objects (GH3691, GH3696) IO api added top-level function read_excel to replace the following, The original API is deprecated and will be removed in a future version from pandas.io.parsers import ExcelFile xls = ExcelFile('path_to_file.xls') xls.parse('Sheet1', index_col=None, na_values=['NA']) With import pandas as pd pd.read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA']) added top-level function read_sql that is equivalent to the following from pandas.io.sql import read_frame read_frame(...) DataFrame.to_html and DataFrame.to_latex now accept a path for their first argument (GH3702) Do not allow astypes on datetime64[ns] except to object, and timedelta64[ns] to object/int (GH3425) The behavior of datetime64 dtypes has changed with respect to certain so-called reduction operations (GH3726). The following operations now raise a TypeError when performed on a Series and return an empty Series when performed on a DataFrame similar to performing these operations on, for example, a DataFrame of slice objects: sum, prod, mean, std, var, skew, kurt, corr, and cov read_html now defaults to None when reading, and falls back on bs4 + html5lib when lxml fails to parse. a list of parsers to try until success is also valid The internal pandas class hierarchy has changed (slightly). The previous PandasObject now is called PandasContainer and a new PandasObject has become the base class for PandasContainer as well as Index, Categorical, GroupBy, SparseList, and SparseArray (+ their base classes). Currently, PandasObject provides string methods (from StringMixin). (GH4090, GH4092) New StringMixin that, given a __unicode__ method, gets python 2 and python 3 compatible string methods (__str__, __bytes__, and __repr__). Plus string safety throughout. Now employed in many places throughout the pandas library. (GH4090, GH4092)
The I/O API is now much more consistent with a set of top level reader functions accessed like pd.read_csv() that generally return a pandas object.
reader
pd.read_csv()
pandas
read_csv
read_excel
read_hdf
read_sql
read_json
read_html
read_stata
read_clipboard
The corresponding writer functions are object methods that are accessed like df.to_csv()
writer
df.to_csv()
to_csv
to_excel
to_hdf
to_sql
to_json
to_html
to_stata
to_clipboard
Fix modulo and integer division on Series,DataFrames to act similarly to float dtypes to return np.nan or np.inf as appropriate (GH3590). This correct a numpy bug that treats integer and float dtypes differently.
float
np.nan
np.inf
integer
In [1]: p = pd.DataFrame({'first': [4, 5, 8], 'second': [0, 0, 3]}) In [2]: p % 0 Out[2]: first second 0 NaN NaN 1 NaN NaN 2 NaN NaN In [3]: p % p Out[3]: first second 0 0.0 NaN 1 0.0 NaN 2 0.0 0.0 In [4]: p / p Out[4]: first second 0 1.0 NaN 1 1.0 NaN 2 1.0 1.0 In [5]: p / 0 Out[5]: first second 0 inf NaN 1 inf NaN 2 inf inf
Add squeeze keyword to groupby to allow reduction from DataFrame -> Series if groups are unique. This is a Regression from 0.10.1. We are reverting back to the prior behavior. This means groupby will return the same shaped objects whether the groups are unique or not. Revert this issue (GH2893) with (GH3596).
squeeze
groupby
In [6]: df2 = pd.DataFrame([{"val1": 1, "val2": 20}, ...: {"val1": 1, "val2": 19}, ...: {"val1": 1, "val2": 27}, ...: {"val1": 1, "val2": 12}]) ...: In [7]: def func(dataf): ...: return dataf["val2"] - dataf["val2"].mean() ...: # squeezing the result frame to a series (because we have unique groups) In [8]: df2.groupby("val1", squeeze=True).apply(func) Out[8]: 0 0.5 1 -0.5 2 7.5 3 -7.5 Name: 1, dtype: float64 # no squeezing (the default, and behavior in 0.10.1) In [9]: df2.groupby("val1").apply(func) Out[9]: val2 0 1 2 3 val1 1 0.5 -0.5 7.5 -7.5
Raise on iloc when boolean indexing with a label based indexer mask e.g. a boolean Series, even with integer labels, will raise. Since iloc is purely positional based, the labels on the Series are not alignable (GH3631)
iloc
This case is rarely used, and there are plenty of alternatives. This preserves the iloc API to be purely positional based.
In [10]: df = pd.DataFrame(range(5), index=list('ABCDE'), columns=['a']) In [11]: mask = (df.a % 2 == 0) In [12]: mask Out[12]: A True B False C True D False E True Name: a, dtype: bool # this is what you should use In [13]: df.loc[mask] Out[13]: a A 0 C 2 E 4 # this will work as well In [14]: df.iloc[mask.values] Out[14]: a A 0 C 2 E 4
df.iloc[mask] will raise a ValueError
df.iloc[mask]
ValueError
The raise_on_error argument to plotting functions is removed. Instead, plotting functions raise a TypeError when the dtype of the object is object to remind you to avoid object arrays whenever possible and thus you should cast to an appropriate numeric dtype if you need to plot something.
raise_on_error
TypeError
dtype
object
Add colormap keyword to DataFrame plotting methods. Accepts either a matplotlib colormap object (ie, matplotlib.cm.jet) or a string name of such an object (ie, ‘jet’). The colormap is sampled to select the color for each column. Please see Colormaps for more information. (GH3860)
colormap
DataFrame.interpolate() is now deprecated. Please use DataFrame.fillna() and DataFrame.replace() instead. (GH3582, GH3675, GH3676)
DataFrame.interpolate()
DataFrame.fillna()
DataFrame.replace()
the method and axis arguments of DataFrame.replace() are deprecated
method
axis
DataFrame.replace ‘s infer_types parameter is removed and now performs conversion by default. (GH3907)
DataFrame.replace
infer_types
Add the keyword allow_duplicates to DataFrame.insert to allow a duplicate column to be inserted if True, default is False (same as prior to 0.12) (GH3679)
allow_duplicates
DataFrame.insert
True
False
Implement __nonzero__ for NDFrame objects (GH3691, GH3696)
__nonzero__
NDFrame
IO api
added top-level function read_excel to replace the following, The original API is deprecated and will be removed in a future version
from pandas.io.parsers import ExcelFile xls = ExcelFile('path_to_file.xls') xls.parse('Sheet1', index_col=None, na_values=['NA'])
With
import pandas as pd pd.read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA'])
added top-level function read_sql that is equivalent to the following
from pandas.io.sql import read_frame read_frame(...)
DataFrame.to_html and DataFrame.to_latex now accept a path for their first argument (GH3702)
DataFrame.to_html
DataFrame.to_latex
Do not allow astypes on datetime64[ns] except to object, and timedelta64[ns] to object/int (GH3425)
datetime64[ns]
timedelta64[ns]
object/int
The behavior of datetime64 dtypes has changed with respect to certain so-called reduction operations (GH3726). The following operations now raise a TypeError when performed on a Series and return an empty Series when performed on a DataFrame similar to performing these operations on, for example, a DataFrame of slice objects:
datetime64
Series
DataFrame
slice
sum, prod, mean, std, var, skew, kurt, corr, and cov
read_html now defaults to None when reading, and falls back on bs4 + html5lib when lxml fails to parse. a list of parsers to try until success is also valid
None
bs4
html5lib
The internal pandas class hierarchy has changed (slightly). The previous PandasObject now is called PandasContainer and a new PandasObject has become the base class for PandasContainer as well as Index, Categorical, GroupBy, SparseList, and SparseArray (+ their base classes). Currently, PandasObject provides string methods (from StringMixin). (GH4090, GH4092)
PandasObject
PandasContainer
Index
Categorical
GroupBy
SparseList
SparseArray
StringMixin
New StringMixin that, given a __unicode__ method, gets python 2 and python 3 compatible string methods (__str__, __bytes__, and __repr__). Plus string safety throughout. Now employed in many places throughout the pandas library. (GH4090, GH4092)
__unicode__
__str__
__bytes__
__repr__
pd.read_html() can now parse HTML strings, files or urls and return DataFrames, courtesy of @cpcloud. (GH3477, GH3605, GH3606, GH3616). It works with a single parser backend: BeautifulSoup4 + html5lib See the docs You can use pd.read_html() to read the output from DataFrame.to_html() like so In [15]: df = pd.DataFrame({'a': range(3), 'b': list('abc')}) In [16]: print(df) a b 0 0 a 1 1 b 2 2 c In [17]: html = df.to_html() In [18]: alist = pd.read_html(html, index_col=0) In [19]: print(df == alist[0]) a b 0 True True 1 True True 2 True True Note that alist here is a Python list so pd.read_html() and DataFrame.to_html() are not inverses. pd.read_html() no longer performs hard conversion of date strings (GH3656). Warning You may have to install an older version of BeautifulSoup4, See the installation docs Added module for reading and writing Stata files: pandas.io.stata (GH1512) accessible via read_stata top-level function for reading, and to_stata DataFrame method for writing, See the docs Added module for reading and writing json format files: pandas.io.json accessible via read_json top-level function for reading, and to_json DataFrame method for writing, See the docs various issues (GH1226, GH3804, GH3876, GH3867, GH1305) MultiIndex column support for reading and writing csv format files The header option in read_csv now accepts a list of the rows from which to read the index. The option, tupleize_cols can now be specified in both to_csv and read_csv, to provide compatibility for the pre 0.12 behavior of writing and reading MultIndex columns via a list of tuples. The default in 0.12 is to write lists of tuples and not interpret list of tuples as a MultiIndex column. Note: The default behavior in 0.12 remains unchanged from prior versions, but starting with 0.13, the default to write and read MultiIndex columns will be in the new format. (GH3571, GH1651, GH3141) If an index_col is not specified (e.g. you don’t have an index, or wrote it with df.to_csv(..., index=False), then any names on the columns index will be lost. In [20]: from pandas._testing import makeCustomDataframe as mkdf In [21]: df = mkdf(5, 3, r_idx_nlevels=2, c_idx_nlevels=4) In [22]: df.to_csv('mi.csv') In [23]: print(open('mi.csv').read()) C0,,C_l0_g0,C_l0_g1,C_l0_g2 C1,,C_l1_g0,C_l1_g1,C_l1_g2 C2,,C_l2_g0,C_l2_g1,C_l2_g2 C3,,C_l3_g0,C_l3_g1,C_l3_g2 R0,R1,,, R_l0_g0,R_l1_g0,R0C0,R0C1,R0C2 R_l0_g1,R_l1_g1,R1C0,R1C1,R1C2 R_l0_g2,R_l1_g2,R2C0,R2C1,R2C2 R_l0_g3,R_l1_g3,R3C0,R3C1,R3C2 R_l0_g4,R_l1_g4,R4C0,R4C1,R4C2 In [24]: pd.read_csv('mi.csv', header=[0, 1, 2, 3], index_col=[0, 1]) Out[24]: C0 C_l0_g0 C_l0_g1 C_l0_g2 C1 C_l1_g0 C_l1_g1 C_l1_g2 C2 C_l2_g0 C_l2_g1 C_l2_g2 C3 C_l3_g0 C_l3_g1 C_l3_g2 R0 R1 R_l0_g0 R_l1_g0 R0C0 R0C1 R0C2 R_l0_g1 R_l1_g1 R1C0 R1C1 R1C2 R_l0_g2 R_l1_g2 R2C0 R2C1 R2C2 R_l0_g3 R_l1_g3 R3C0 R3C1 R3C2 R_l0_g4 R_l1_g4 R4C0 R4C1 R4C2 Support for HDFStore (via PyTables 3.0.0) on Python3 Iterator support via read_hdf that automatically opens and closes the store when iteration is finished. This is only for tables In [25]: path = 'store_iterator.h5' In [26]: pd.DataFrame(np.random.randn(10, 2)).to_hdf(path, 'df', table=True) In [27]: for df in pd.read_hdf(path, 'df', chunksize=3): ....: print(df) ....: 0 1 0 0.713216 -0.778461 1 -0.661062 0.862877 2 0.344342 0.149565 0 1 3 -0.626968 -0.875772 4 -0.930687 -0.218983 5 0.949965 -0.442354 0 1 6 -0.402985 1.111358 7 -0.241527 -0.670477 8 0.049355 0.632633 0 1 9 -1.502767 -1.225492 read_csv will now throw a more informative error message when a file contains no columns, e.g., all newline characters
pd.read_html() can now parse HTML strings, files or urls and return DataFrames, courtesy of @cpcloud. (GH3477, GH3605, GH3606, GH3616). It works with a single parser backend: BeautifulSoup4 + html5lib See the docs
pd.read_html()
You can use pd.read_html() to read the output from DataFrame.to_html() like so
DataFrame.to_html()
In [15]: df = pd.DataFrame({'a': range(3), 'b': list('abc')}) In [16]: print(df) a b 0 0 a 1 1 b 2 2 c In [17]: html = df.to_html() In [18]: alist = pd.read_html(html, index_col=0) In [19]: print(df == alist[0]) a b 0 True True 1 True True 2 True True
Note that alist here is a Python list so pd.read_html() and DataFrame.to_html() are not inverses.
alist
list
pd.read_html() no longer performs hard conversion of date strings (GH3656).
Warning
You may have to install an older version of BeautifulSoup4, See the installation docs
Added module for reading and writing Stata files: pandas.io.stata (GH1512) accessible via read_stata top-level function for reading, and to_stata DataFrame method for writing, See the docs
pandas.io.stata
Added module for reading and writing json format files: pandas.io.json accessible via read_json top-level function for reading, and to_json DataFrame method for writing, See the docs various issues (GH1226, GH3804, GH3876, GH3867, GH1305)
pandas.io.json
MultiIndex column support for reading and writing csv format files
MultiIndex
The header option in read_csv now accepts a list of the rows from which to read the index.
header
The option, tupleize_cols can now be specified in both to_csv and read_csv, to provide compatibility for the pre 0.12 behavior of writing and reading MultIndex columns via a list of tuples. The default in 0.12 is to write lists of tuples and not interpret list of tuples as a MultiIndex column.
tupleize_cols
MultIndex
Note: The default behavior in 0.12 remains unchanged from prior versions, but starting with 0.13, the default to write and read MultiIndex columns will be in the new format. (GH3571, GH1651, GH3141)
If an index_col is not specified (e.g. you don’t have an index, or wrote it with df.to_csv(..., index=False), then any names on the columns index will be lost.
index_col
df.to_csv(..., index=False
names
In [20]: from pandas._testing import makeCustomDataframe as mkdf In [21]: df = mkdf(5, 3, r_idx_nlevels=2, c_idx_nlevels=4) In [22]: df.to_csv('mi.csv') In [23]: print(open('mi.csv').read()) C0,,C_l0_g0,C_l0_g1,C_l0_g2 C1,,C_l1_g0,C_l1_g1,C_l1_g2 C2,,C_l2_g0,C_l2_g1,C_l2_g2 C3,,C_l3_g0,C_l3_g1,C_l3_g2 R0,R1,,, R_l0_g0,R_l1_g0,R0C0,R0C1,R0C2 R_l0_g1,R_l1_g1,R1C0,R1C1,R1C2 R_l0_g2,R_l1_g2,R2C0,R2C1,R2C2 R_l0_g3,R_l1_g3,R3C0,R3C1,R3C2 R_l0_g4,R_l1_g4,R4C0,R4C1,R4C2 In [24]: pd.read_csv('mi.csv', header=[0, 1, 2, 3], index_col=[0, 1]) Out[24]: C0 C_l0_g0 C_l0_g1 C_l0_g2 C1 C_l1_g0 C_l1_g1 C_l1_g2 C2 C_l2_g0 C_l2_g1 C_l2_g2 C3 C_l3_g0 C_l3_g1 C_l3_g2 R0 R1 R_l0_g0 R_l1_g0 R0C0 R0C1 R0C2 R_l0_g1 R_l1_g1 R1C0 R1C1 R1C2 R_l0_g2 R_l1_g2 R2C0 R2C1 R2C2 R_l0_g3 R_l1_g3 R3C0 R3C1 R3C2 R_l0_g4 R_l1_g4 R4C0 R4C1 R4C2
Support for HDFStore (via PyTables 3.0.0) on Python3
PyTables 3.0.0
Iterator support via read_hdf that automatically opens and closes the store when iteration is finished. This is only for tables
In [25]: path = 'store_iterator.h5' In [26]: pd.DataFrame(np.random.randn(10, 2)).to_hdf(path, 'df', table=True) In [27]: for df in pd.read_hdf(path, 'df', chunksize=3): ....: print(df) ....: 0 1 0 0.713216 -0.778461 1 -0.661062 0.862877 2 0.344342 0.149565 0 1 3 -0.626968 -0.875772 4 -0.930687 -0.218983 5 0.949965 -0.442354 0 1 6 -0.402985 1.111358 7 -0.241527 -0.670477 8 0.049355 0.632633 0 1 9 -1.502767 -1.225492
read_csv will now throw a more informative error message when a file contains no columns, e.g., all newline characters
DataFrame.replace() now allows regular expressions on contained Series with object dtype. See the examples section in the regular docs Replacing via String Expression For example you can do In [25]: df = pd.DataFrame({'a': list('ab..'), 'b': [1, 2, 3, 4]}) In [26]: df.replace(regex=r'\s*\.\s*', value=np.nan) Out[26]: a b 0 a 1 1 b 2 2 NaN 3 3 NaN 4 to replace all occurrences of the string '.' with zero or more instances of surrounding white space with NaN. Regular string replacement still works as expected. For example, you can do In [27]: df.replace('.', np.nan) Out[27]: a b 0 a 1 1 b 2 2 NaN 3 3 NaN 4 to replace all occurrences of the string '.' with NaN. pd.melt() now accepts the optional parameters var_name and value_name to specify custom column names of the returned DataFrame. pd.set_option() now allows N option, value pairs (GH3667). Let’s say that we had an option 'a.b' and another option 'b.c'. We can set them at the same time: In [31]: pd.get_option('a.b') Out[31]: 2 In [32]: pd.get_option('b.c') Out[32]: 3 In [33]: pd.set_option('a.b', 1, 'b.c', 4) In [34]: pd.get_option('a.b') Out[34]: 1 In [35]: pd.get_option('b.c') Out[35]: 4 The filter method for group objects returns a subset of the original object. Suppose we want to take only elements that belong to groups with a group sum greater than 2. In [28]: sf = pd.Series([1, 1, 2, 3, 3, 3]) In [29]: sf.groupby(sf).filter(lambda x: x.sum() > 2) Out[29]: 3 3 4 3 5 3 dtype: int64 The argument of filter must a function that, applied to the group as a whole, returns True or False. Another useful operation is filtering out elements that belong to groups with only a couple members. In [30]: dff = pd.DataFrame({'A': np.arange(8), 'B': list('aabbbbcc')}) In [31]: dff.groupby('B').filter(lambda x: len(x) > 2) Out[31]: A B 2 2 b 3 3 b 4 4 b 5 5 b Alternatively, instead of dropping the offending groups, we can return a like-indexed objects where the groups that do not pass the filter are filled with NaNs. In [32]: dff.groupby('B').filter(lambda x: len(x) > 2, dropna=False) Out[32]: A B 0 NaN NaN 1 NaN NaN 2 2.0 b 3 3.0 b 4 4.0 b 5 5.0 b 6 NaN NaN 7 NaN NaN Series and DataFrame hist methods now take a figsize argument (GH3834) DatetimeIndexes no longer try to convert mixed-integer indexes during join operations (GH3877) Timestamp.min and Timestamp.max now represent valid Timestamp instances instead of the default datetime.min and datetime.max (respectively), thanks @SleepingPills read_html now raises when no tables are found and BeautifulSoup==4.2.0 is detected (GH4214)
DataFrame.replace() now allows regular expressions on contained Series with object dtype. See the examples section in the regular docs Replacing via String Expression
For example you can do
In [25]: df = pd.DataFrame({'a': list('ab..'), 'b': [1, 2, 3, 4]}) In [26]: df.replace(regex=r'\s*\.\s*', value=np.nan) Out[26]: a b 0 a 1 1 b 2 2 NaN 3 3 NaN 4
to replace all occurrences of the string '.' with zero or more instances of surrounding white space with NaN.
'.'
NaN
Regular string replacement still works as expected. For example, you can do
In [27]: df.replace('.', np.nan) Out[27]: a b 0 a 1 1 b 2 2 NaN 3 3 NaN 4
to replace all occurrences of the string '.' with NaN.
pd.melt() now accepts the optional parameters var_name and value_name to specify custom column names of the returned DataFrame.
pd.melt()
var_name
value_name
pd.set_option() now allows N option, value pairs (GH3667).
pd.set_option()
Let’s say that we had an option 'a.b' and another option 'b.c'. We can set them at the same time:
'a.b'
'b.c'
In [31]: pd.get_option('a.b') Out[31]: 2 In [32]: pd.get_option('b.c') Out[32]: 3 In [33]: pd.set_option('a.b', 1, 'b.c', 4) In [34]: pd.get_option('a.b') Out[34]: 1 In [35]: pd.get_option('b.c') Out[35]: 4
The filter method for group objects returns a subset of the original object. Suppose we want to take only elements that belong to groups with a group sum greater than 2.
In [28]: sf = pd.Series([1, 1, 2, 3, 3, 3]) In [29]: sf.groupby(sf).filter(lambda x: x.sum() > 2) Out[29]: 3 3 4 3 5 3 dtype: int64
The argument of filter must a function that, applied to the group as a whole, returns True or False.
Another useful operation is filtering out elements that belong to groups with only a couple members.
In [30]: dff = pd.DataFrame({'A': np.arange(8), 'B': list('aabbbbcc')}) In [31]: dff.groupby('B').filter(lambda x: len(x) > 2) Out[31]: A B 2 2 b 3 3 b 4 4 b 5 5 b
Alternatively, instead of dropping the offending groups, we can return a like-indexed objects where the groups that do not pass the filter are filled with NaNs.
In [32]: dff.groupby('B').filter(lambda x: len(x) > 2, dropna=False) Out[32]: A B 0 NaN NaN 1 NaN NaN 2 2.0 b 3 3.0 b 4 4.0 b 5 5.0 b 6 NaN NaN 7 NaN NaN
Series and DataFrame hist methods now take a figsize argument (GH3834)
figsize
DatetimeIndexes no longer try to convert mixed-integer indexes during join operations (GH3877)
Timestamp.min and Timestamp.max now represent valid Timestamp instances instead of the default datetime.min and datetime.max (respectively), thanks @SleepingPills
read_html now raises when no tables are found and BeautifulSoup==4.2.0 is detected (GH4214)
Added experimental CustomBusinessDay class to support DateOffsets with custom holiday calendars and custom weekmasks. (GH2301) Note This uses the numpy.busdaycalendar API introduced in Numpy 1.7 and therefore requires Numpy 1.7.0 or newer. In [33]: from pandas.tseries.offsets import CustomBusinessDay In [34]: from datetime import datetime # As an interesting example, let's look at Egypt where # a Friday-Saturday weekend is observed. In [35]: weekmask_egypt = 'Sun Mon Tue Wed Thu' # They also observe International Workers' Day so let's # add that for a couple of years In [36]: holidays = ['2012-05-01', datetime(2013, 5, 1), np.datetime64('2014-05-01')] In [37]: bday_egypt = CustomBusinessDay(holidays=holidays, weekmask=weekmask_egypt) In [38]: dt = datetime(2013, 4, 30) In [39]: print(dt + 2 * bday_egypt) 2013-05-05 00:00:00 In [40]: dts = pd.date_range(dt, periods=5, freq=bday_egypt) In [41]: print(pd.Series(dts.weekday, dts).map(pd.Series('Mon Tue Wed Thu Fri Sat Sun'.split()))) 2013-04-30 Tue 2013-05-02 Thu 2013-05-05 Sun 2013-05-06 Mon 2013-05-07 Tue Freq: C, dtype: object
Added experimental CustomBusinessDay class to support DateOffsets with custom holiday calendars and custom weekmasks. (GH2301)
CustomBusinessDay
DateOffsets
Note
This uses the numpy.busdaycalendar API introduced in Numpy 1.7 and therefore requires Numpy 1.7.0 or newer.
numpy.busdaycalendar
In [33]: from pandas.tseries.offsets import CustomBusinessDay In [34]: from datetime import datetime # As an interesting example, let's look at Egypt where # a Friday-Saturday weekend is observed. In [35]: weekmask_egypt = 'Sun Mon Tue Wed Thu' # They also observe International Workers' Day so let's # add that for a couple of years In [36]: holidays = ['2012-05-01', datetime(2013, 5, 1), np.datetime64('2014-05-01')] In [37]: bday_egypt = CustomBusinessDay(holidays=holidays, weekmask=weekmask_egypt) In [38]: dt = datetime(2013, 4, 30) In [39]: print(dt + 2 * bday_egypt) 2013-05-05 00:00:00 In [40]: dts = pd.date_range(dt, periods=5, freq=bday_egypt) In [41]: print(pd.Series(dts.weekday, dts).map(pd.Series('Mon Tue Wed Thu Fri Sat Sun'.split()))) 2013-04-30 Tue 2013-05-02 Thu 2013-05-05 Sun 2013-05-06 Mon 2013-05-07 Tue Freq: C, dtype: object
Plotting functions now raise a TypeError before trying to plot anything if the associated objects have have a dtype of object (GH1818, GH3572, GH3911, GH3912), but they will try to convert object arrays to numeric arrays if possible so that you can still plot, for example, an object array with floats. This happens before any drawing takes place which eliminates any spurious plots from showing up. fillna methods now raise a TypeError if the value parameter is a list or tuple. Series.str now supports iteration (GH3638). You can iterate over the individual elements of each string in the Series. Each iteration yields yields a Series with either a single character at each index of the original Series or NaN. For example, In [42]: strs = 'go', 'bow', 'joe', 'slow' In [43]: ds = pd.Series(strs) In [44]: for s in ds.str: ....: print(s) ....: 0 g 1 b 2 j 3 s dtype: object 0 o 1 o 2 o 3 l dtype: object 0 NaN 1 w 2 e 3 o dtype: object 0 NaN 1 NaN 2 NaN 3 w dtype: object In [45]: s Out[45]: 0 NaN 1 NaN 2 NaN 3 w dtype: object In [46]: s.dropna().values.item() == 'w' Out[46]: True The last element yielded by the iterator will be a Series containing the last element of the longest string in the Series with all other elements being NaN. Here since 'slow' is the longest string and there are no other strings with the same length 'w' is the only non-null string in the yielded Series. HDFStore will retain index attributes (freq,tz,name) on recreation (GH3499) will warn with a AttributeConflictWarning if you are attempting to append an index with a different frequency than the existing, or attempting to append an index with a different name than the existing support datelike columns with a timezone as data_columns (GH2852) Non-unique index support clarified (GH3468). Fix assigning a new index to a duplicate index in a DataFrame would fail (GH3468) Fix construction of a DataFrame with a duplicate index ref_locs support to allow duplicative indices across dtypes, allows iget support to always find the index (even across dtypes) (GH2194) applymap on a DataFrame with a non-unique index now works (removed warning) (GH2786), and fix (GH3230) Fix to_csv to handle non-unique columns (GH3495) Duplicate indexes with getitem will return items in the correct order (GH3455, GH3457) and handle missing elements like unique indices (GH3561) Duplicate indexes with and empty DataFrame.from_records will return a correct frame (GH3562) Concat to produce a non-unique columns when duplicates are across dtypes is fixed (GH3602) Allow insert/delete to non-unique columns (GH3679) Non-unique indexing with a slice via loc and friends fixed (GH3659) Allow insert/delete to non-unique columns (GH3679) Extend reindex to correctly deal with non-unique indices (GH3679) DataFrame.itertuples() now works with frames with duplicate column names (GH3873) Bug in non-unique indexing via iloc (GH4017); added takeable argument to reindex for location-based taking Allow non-unique indexing in series via .ix/.loc and __getitem__ (GH4246) Fixed non-unique indexing memory allocation issue with .ix/.loc (GH4280) DataFrame.from_records did not accept empty recarrays (GH3682) read_html now correctly skips tests (GH3741) Fixed a bug where DataFrame.replace with a compiled regular expression in the to_replace argument wasn’t working (GH3907) Improved network test decorator to catch IOError (and therefore URLError as well). Added with_connectivity_check decorator to allow explicitly checking a website as a proxy for seeing if there is network connectivity. Plus, new optional_args decorator factory for decorators. (GH3910, GH3914) Fixed testing issue where too many sockets where open thus leading to a connection reset issue (GH3982, GH3985, GH4028, GH4054) Fixed failing tests in test_yahoo, test_google where symbols were not retrieved but were being accessed (GH3982, GH3985, GH4028, GH4054) Series.hist will now take the figure from the current environment if one is not passed Fixed bug where a 1xN DataFrame would barf on a 1xN mask (GH4071) Fixed running of tox under python3 where the pickle import was getting rewritten in an incompatible way (GH4062, GH4063) Fixed bug where sharex and sharey were not being passed to grouped_hist (GH4089) Fixed bug in DataFrame.replace where a nested dict wasn’t being iterated over when regex=False (GH4115) Fixed bug in the parsing of microseconds when using the format argument in to_datetime (GH4152) Fixed bug in PandasAutoDateLocator where invert_xaxis triggered incorrectly MilliSecondLocator (GH3990) Fixed bug in plotting that wasn’t raising on invalid colormap for matplotlib 1.1.1 (GH4215) Fixed the legend displaying in DataFrame.plot(kind='kde') (GH4216) Fixed bug where Index slices weren’t carrying the name attribute (GH4226) Fixed bug in initializing DatetimeIndex with an array of strings in a certain time zone (GH4229) Fixed bug where html5lib wasn’t being properly skipped (GH4265) Fixed bug where get_data_famafrench wasn’t using the correct file edges (GH4281)
Plotting functions now raise a TypeError before trying to plot anything if the associated objects have have a dtype of object (GH1818, GH3572, GH3911, GH3912), but they will try to convert object arrays to numeric arrays if possible so that you can still plot, for example, an object array with floats. This happens before any drawing takes place which eliminates any spurious plots from showing up.
fillna methods now raise a TypeError if the value parameter is a list or tuple.
fillna
value
Series.str now supports iteration (GH3638). You can iterate over the individual elements of each string in the Series. Each iteration yields yields a Series with either a single character at each index of the original Series or NaN. For example,
Series.str
In [42]: strs = 'go', 'bow', 'joe', 'slow' In [43]: ds = pd.Series(strs) In [44]: for s in ds.str: ....: print(s) ....: 0 g 1 b 2 j 3 s dtype: object 0 o 1 o 2 o 3 l dtype: object 0 NaN 1 w 2 e 3 o dtype: object 0 NaN 1 NaN 2 NaN 3 w dtype: object In [45]: s Out[45]: 0 NaN 1 NaN 2 NaN 3 w dtype: object In [46]: s.dropna().values.item() == 'w' Out[46]: True
The last element yielded by the iterator will be a Series containing the last element of the longest string in the Series with all other elements being NaN. Here since 'slow' is the longest string and there are no other strings with the same length 'w' is the only non-null string in the yielded Series.
'slow'
'w'
will retain index attributes (freq,tz,name) on recreation (GH3499)
will warn with a AttributeConflictWarning if you are attempting to append an index with a different frequency than the existing, or attempting to append an index with a different name than the existing
AttributeConflictWarning
support datelike columns with a timezone as data_columns (GH2852)
Non-unique index support clarified (GH3468).
Fix assigning a new index to a duplicate index in a DataFrame would fail (GH3468)
Fix construction of a DataFrame with a duplicate index
ref_locs support to allow duplicative indices across dtypes, allows iget support to always find the index (even across dtypes) (GH2194)
applymap on a DataFrame with a non-unique index now works (removed warning) (GH2786), and fix (GH3230)
Fix to_csv to handle non-unique columns (GH3495)
Duplicate indexes with getitem will return items in the correct order (GH3455, GH3457) and handle missing elements like unique indices (GH3561)
Duplicate indexes with and empty DataFrame.from_records will return a correct frame (GH3562)
Concat to produce a non-unique columns when duplicates are across dtypes is fixed (GH3602)
Allow insert/delete to non-unique columns (GH3679)
Non-unique indexing with a slice via loc and friends fixed (GH3659)
loc
Extend reindex to correctly deal with non-unique indices (GH3679)
reindex
DataFrame.itertuples() now works with frames with duplicate column names (GH3873)
DataFrame.itertuples()
Bug in non-unique indexing via iloc (GH4017); added takeable argument to reindex for location-based taking
takeable
Allow non-unique indexing in series via .ix/.loc and __getitem__ (GH4246)
.ix/.loc
__getitem__
Fixed non-unique indexing memory allocation issue with .ix/.loc (GH4280)
DataFrame.from_records did not accept empty recarrays (GH3682)
DataFrame.from_records
read_html now correctly skips tests (GH3741)
Fixed a bug where DataFrame.replace with a compiled regular expression in the to_replace argument wasn’t working (GH3907)
to_replace
Improved network test decorator to catch IOError (and therefore URLError as well). Added with_connectivity_check decorator to allow explicitly checking a website as a proxy for seeing if there is network connectivity. Plus, new optional_args decorator factory for decorators. (GH3910, GH3914)
network
IOError
URLError
with_connectivity_check
optional_args
Fixed testing issue where too many sockets where open thus leading to a connection reset issue (GH3982, GH3985, GH4028, GH4054)
Fixed failing tests in test_yahoo, test_google where symbols were not retrieved but were being accessed (GH3982, GH3985, GH4028, GH4054)
Series.hist will now take the figure from the current environment if one is not passed
Series.hist
Fixed bug where a 1xN DataFrame would barf on a 1xN mask (GH4071)
Fixed running of tox under python3 where the pickle import was getting rewritten in an incompatible way (GH4062, GH4063)
tox
Fixed bug where sharex and sharey were not being passed to grouped_hist (GH4089)
Fixed bug in DataFrame.replace where a nested dict wasn’t being iterated over when regex=False (GH4115)
Fixed bug in the parsing of microseconds when using the format argument in to_datetime (GH4152)
format
to_datetime
Fixed bug in PandasAutoDateLocator where invert_xaxis triggered incorrectly MilliSecondLocator (GH3990)
PandasAutoDateLocator
invert_xaxis
MilliSecondLocator
Fixed bug in plotting that wasn’t raising on invalid colormap for matplotlib 1.1.1 (GH4215)
Fixed the legend displaying in DataFrame.plot(kind='kde') (GH4216)
DataFrame.plot(kind='kde')
Fixed bug where Index slices weren’t carrying the name attribute (GH4226)
Fixed bug in initializing DatetimeIndex with an array of strings in a certain time zone (GH4229)
DatetimeIndex
Fixed bug where html5lib wasn’t being properly skipped (GH4265)
Fixed bug where get_data_famafrench wasn’t using the correct file edges (GH4281)
See the full release notes or issue tracker on GitHub for a complete list.
A total of 50 people contributed patches to this release. People with a “+” by their names contributed a patch for the first time.
Andy Hayden
Chang She
Christopher Whelan
Damien Garaud
Dan Allan
Dan Birken
Dieter Vandenbussche
Dražen Lučanin
Gábor Lipták +
Jeff Mellen +
Jeff Tratner +
Jeffrey Tratner +
Jonathan deWerd +
Joris Van den Bossche +
Juraj Niznan +
Karmel Allison
Kelsey Jordahl
Kevin Stone +
Kieran O’Mahony
Kyle Meyer +
Mike Kelly +
PKEuS +
Patrick O’Brien +
Phillip Cloud
Richard Höchenberger +
Skipper Seabold
SleepingPills +
Tobias Brandt
Tom Farnbauer +
TomAugspurger +
Trent Hauck +
Wes McKinney
Wouter Overmeire
Yaroslav Halchenko
conmai +
danielballan +
davidshinn +
dieterv77
duozhang +
ejnens +
gliptak +
jniznan +
jreback
lexual
nipunreddevil +
ogiaquino +
stonebig +
tim smith +
timmie
y-p


You can click on “select all” on filtered data which will select all filtered rows
The same appliesto for unselect logic


Shanghai Dragons
Upcoming Matches
Stage 4
| Sunday, August 25 |
|
win prob. |
map +/- |
|
Dragons |
0 |
47% |
-0.1 |
|
Spark |
4 |
53% |
+0.1 |
| Saturday, August 17 |
|
win prob. |
map +/- |
|
Dragons |
1 |
85% |
+1.8 |
|
Eternal |
3 |
15% |
-1.8 |
| Thursday, August 15 |
|
win prob. |
map +/- |
|
Dragons |
1 |
59% |
+0.4 |
|
Dynasty |
3 |
41% |
-0.4 |
| Friday, August 9 |
|
win prob. |
map +/- |
|
Dragons |
1 |
11% |
-2.0 |
|
Shock |
3 |
89% |
+2.0 |
| Thursday, August 1 |
|
win prob. |
map +/- |
|
Dragons |
1 |
>99% |
+3.6 |
|
Defiant |
2 |
<1% |
-3.6 |
| Thursday, July 25 |
|
win prob. |
map +/- |
|
Dragons |
1 |
45% |
-0.3 |
|
Titans |
3 |
55% |
+0.3 |
Stage 3 Title Matches
| Sunday, July 14 |
|
win prob. |
map +/- |
|
Dragons |
4 |
13% |
-2.1 |
|
Shock |
3 |
87% |
+2.1 |
| Saturday, July 13 |
|
win prob. |
map +/- |
|
Dragons |
4 |
7% |
-2.6 |
|
Titans |
1 |
93% |
+2.6 |
Stage 3
| Sunday, July 7 |
|
win prob. |
map +/- |
|
Dragons |
3 |
69% |
+0.9 |
|
Fusion |
1 |
31% |
-0.9 |
| Saturday, July 6 |
|
win prob. |
map +/- |
|
Dragons |
1 |
82% |
+1.6 |
|
Charge |
3 |
18% |
-1.6 |
| Saturday, June 29 |
|
win prob. |
map +/- |
|
Dragons |
3 |
81% |
+1.5 |
|
Charge |
1 |
19% |
-1.5 |
| Thursday, June 20 |
|
win prob. |
map +/- |
|
Dragons |
1 |
60% |
+0.5 |
|
Valiant |
3 |
40% |
-0.5 |
| Thursday, June 13 |
|
win prob. |
map +/- |
|
Dragons |
3 |
40% |
-0.5 |
|
Reign |
2 |
60% |
+0.5 |
| Thursday, June 6 |
|
win prob. |
map +/- |
|
Dragons |
3 |
67% |
+0.8 |
|
Valiant |
1 |
33% |
-0.8 |
Stage 2 Title Matches
| Thursday, May 9 |
|
win prob. |
map +/- |
|
Dragons |
1 |
1% |
-2.6 |
|
Shock |
3 |
99% |
+2.6 |
Stage 2
| Sunday, May 5 |
|
win prob. |
map +/- |
|
Dragons |
0 |
3% |
-2.8 |
|
Shock |
4 |
97% |
+2.8 |
| Sunday, April 21 |
|
win prob. |
map +/- |
|
Dragons |
3 |
68% |
+0.9 |
|
Outlaws |
0 |
32% |
-0.9 |
| Saturday, April 20 |
|
win prob. |
map +/- |
|
Dragons |
3 |
90% |
+2.1 |
|
Mayhem |
1 |
10% |
-2.1 |
| Friday, April 12 |
|
win prob. |
map +/- |
|
Dragons |
3 |
23% |
-1.3 |
|
Hunters |
1 |
77% |
+1.3 |
Stage 1
| Friday, March 8 |
|
win prob. |
map +/- |
|
Dragons |
0 |
47% |
-0.1 |
|
Fuel |
4 |
53% |
+0.1 |
| Saturday, March 2 |
|
win prob. |
map +/- |
|
Dragons |
2 |
69% |
+0.9 |
|
Fuel |
3 |
31% |
-0.9 |
| Saturday, February 16 |
|
win prob. |
map +/- |
|
Dragons |
0 |
36% |
-0.7 |
|
Titans |
4 |
64% |
+0.7 |
| Thursday, February 14 |
|
win prob. |
map +/- |
|
Dragons |
1 |
52% |
+0.1 |
|
Spark |
3 |
48% |
-0.1 |


Thank you to "The Standells" for that lovely introduction. Boston. A city with a great mix of revolutionary history, elite universities, incredible theatre productions, and undying sports fever. Boston has it all, folks. Come and visit. Stay awhile. Have some "chowdah". See the "Green Monstah" at Fenway. Throw some tea in the harbor. Be a rebel.
There is so much to do in Beantown. You can take a stroll down the Freedom Trail and see famous colonial areas such as the Old North Church (One if by land, Two if by sea) and the Battle of Bunker Hill site. You could catch a show in one of the many historic theatres on Washington Street. Do some kayaking on the Charles River. View Massachusetts from "Top of the Hub" at the apex of the Prudential Tower. Why not grab some New England clam chowder in Quincy Market? Grab a brew at the iconic Cask 'n Flagon outside Fenway Park and then catch a game! If you are here in the winter, head over to the TD Garden to watch either the Celtics or Bruins. Whatever it is, Boston has it for you. We also have plenty of Bostonians to let you know how wicked awesome our sports teams are (see below).
| Place | Address | Web Link For Additional Info |
|---|---|---|
| Prudential Center | 800 Boylston Street | To the "Pru" |
| Fenway Park | 4 Yawkey Way | Go Sox! |
| Faneuil Hall Marketplace | 4 South Market Street | Quincy "Mahket" |
| Old North Church | 193 Salem Street | One If By Land... |
| Theatre District | Washington Street | Grab a drink, see a show |
For more information on visiting Boston, visit here and explore!!! The site has a bunch of content on it. Plenty of advanced HTML that I have not learned yet. It also has a Google translate feature that can instantly translate the entire website into any language!


There is no user wth this identifier in the database!
[{{vm.member.UUID}}]
| Member since | {{vm.member.memberSince}} |
|---|---|
| Address | {{vm.member.address}}, {{vm.member.city}} |
| Postal Code | {{vm.member.postalCode}} |
| Birthdate | {{vm.member.birthDate}} |
| Phone | {{vm.member.phoneNumber}} |
| {{vm.member.email}} |
There are no books to be displayed!
| Title | Lend date | Return date | Due date | Overdue | Return |
|---|---|---|---|---|---|
| {{book.title}} | {{book.startLendDate}} | {{book.endLendDate || "-"}} | {{book.dueDate}} | {{book.overdue > 0 ? book.overdue + ' days late' : book.overdue * (0 - 1) + ' days left'}} |
Too many borrowed books!
There are no available books withe the given search criteria!
| Title | Borrow |
|---|---|
| {{book.title}} |


About me
Hey, my name is Nikolina and I am a frontend developer with passion for UI/UX. I am originally from Bulgaria, but I have been living in Copenhagen for the past 4 years. I am a bachelor in Software engineering and I have around 4 years of experience as a Frontend developer.
I love diving deep in HTML and CSS, but I also don't mind getting my hands dirty with some JavaScript. I am also very passionate about ideation, user research and prototyping.
Download CV


Olin Course Catalog: {{ area }}
To learn more about any {{ area }} course, click on its name.
-
{% for index, course in courses %}
- {{ course.course_number }}: {{ course.course_name }} ({{ course.course_contact }})
- {{ course.course_description }}


Installation & Administration
Installation
SqlPad can be installed on Mac, Linux, and Windows.
In order to install SqlPad, you'll first need to install Node.js.
Once node is installed, open up a command line and run
npm install sqlpad -g
This will install the SqlPad command line utility used to run a SqlPad server.
To spin up a SqlPad Server, type the following from the command line:
sqlpad
To get help and see parameters:
sqlpad --help
A Realistic Example:
sqlpad --dir c:/sqlpad/ --port 3000 --passphrase secret-encryption-phrase
The dir argument specifies where to keep the sqlpad query/user/connection files. If not provided, SqlPad will put its files in the user's home directory under /sqlpad/db.
The port argument specifies the port on which SqlPad should run. The default is port 80, but that may not be available.
The passphrase argument is used to encrypt database connection usernames and passwords, and cookie encryption. If not provided, SqlPad will use the default to at least prevent usernames and passwords from being stored in plaintext.
If a passphrase is ever changed or forgotten, you'll need to re-add the connection usernames and passwords to each database connection.
If you ever want to save the arguments you are passing in so you don't have to remember them, you can save them by passing in the --save
argument.
sqlpad --dir ./sqlpad/ --port 3000 --passphrase secret-encryption-phrase --save
Then the next time you can simply run...
sqlpad
...and Sqlpad will use directory ./sqlpad, on port 3000, with the proper encryption passphrase.
These settings can be forgotten by running
sqlpad --forget
Administration
Once SqlPad is running, create an initial admin account by navigating to http://localhost/signup.
Once an initial admin account has been created, all future users must be whitelisted by an admin within the users page. Other users may also be given admin rights, allowing them to add/edit database connections and whitelist/modify/remove SqlPad users.
If for whatever reason you lose admin rights, and the last-admin-standing won't give you admin rights back, you can reinstate them to yourself by running
sqlpad --admin<EMAIL_ADDRESS>Running as a Service
If you are running SqlPad for your team, chances are you'd like SqlPad to start up when your server boots up, and stay running if an unhandled exception occurs. How this is accomplished largely depends on the operating system you are running.
Full disclosure - this isn't my area of expertise so if anyone knows of any better options or better practices, please let me know at<EMAIL_ADDRESS>Windows: Use nssm to create a windows service
Ubuntu: Create a job conf file for use with upstart.
Here's a script I've gotten to work - but again not sure if this is good practice or if there's a better way to go about it:
description "sqlpad"
author "yourname<EMAIL_ADDRESS>start on runlevel [2345]
stop on shutdown
# I used -u to change the user it executes with,
# which means by default SqlPad uses that user's home directory
# for its database files
exec sudo -u UserAccountToUse /usr/bin/sqlpad --port 3000
respawn
Mac: ???
Platform agnostic: Clone or download the GitHub repository and use forever to run server.js directly. (The downside to this though is that you miss out on updating SqlPad with the easy npm install command, and you still have to run the forever command on startup)
Configuration
Beyond SqlPad's initial setup options (port, file location, passphrase), there are a few areas where you can opt-in, opt-out, or change the default limits.
These settings are configured by either adding a configuration key in the configuration page, or by setting an environment variable (depending on the behavior or feature being modified).
Change query result record limit
To change the maximum records returned by a SQL query, add a new item with key queryResultMaxRows
and set the value to the max number of rows you would like returned. If the key is missing or set to a non-number, SqlPad will return a maximum of 50,000 rows.
Disable CSV (and now XLSX) downloads
To disable CSV downloads, visit the "Configuration" page and add a new item with key allowCsvDownload
and value false
. If the key is missing or set to any other value, CSV downloads will be enabled.
Show Schema Copy Buttons
Some databases (like Vertica) require the fully qualified table and column names within a SQL statement. This can be a hassle to remember or type when you have long and complicated names. For convenience, you can enable fully-qualified-name copy buttons that appear in the schema sidebar. When hovering over an item in the schema tree, a copy button will appear. Click it and the schema name, table name, and column name will be copied to your clipboard.
To enable the schema copy buttons, add a new configuration item with key showSchemaCopyButton
with value true.
Google OAuth Authentication
Google OAuth authentication can be enabled by setting environment variables GOOGLE_CLIENT_ID
, GOOGLE_CLIENT_SECRET
, AND PUBLIC_URL
. The plain old regular authentication can be disabled by setting environment variable DISABLE_USERPASS_AUTH
.
Post Query to Slack When Saved
A SqlPad query can be posted to a Slack webhook when saved. To enable, create a configuration item with key slackWebhook
and set the value to a Slack incoming webhook URL.
Whitelist Domains for User Administration
An entire domain can be whitelisted for username administration by setting enviornment variable WHITELISTED_DOMAINS


| Project | Number | Date |
|---|---|---|
| cucumber-jvm-example | 3 | 07 May 2018, 18:14 |
The following graph shows passing and failing statistics for features
| Scenarios | Steps | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Feature | Total | Passed | Failed | Total | Passed | Failed | Skipped | Pending | Undefined | Missing | Duration | Status |
| CheckOut feature | 1 | 1 | 0 | 9 | 9 | 0 | 0 | 0 | 0 | 0 | 2m 22s 142ms | Passed |
| Login feature | 1 | 1 | 0 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1m 23s 849ms | Passed |
| Registration feature | 2 | 1 | 1 | 9 | 6 | 1 | 2 | 0 | 0 | 0 | 3m 35s 953ms | Failed |
| Sign Up feature | 1 | 1 | 0 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 1m 08s 020ms | Passed |
| Summer Dresses | 2 | 2 | 0 | 11 | 11 | 0 | 0 | 0 | 0 | 0 | 2m 58s 293ms | Passed |
| 5 | 7 | 6 | 1 | 34 | 31 | 1 | 2 | 0 | 0 | 0 | 11m 28s 259ms | Totals |


MARGY received a request for mailto code ‘{{ code }}’ from this address. That code does not match any files in MARGY’s database. For questions, or if you believe you received this email in error, please contact admin@margymail.com.


{% extends "layout_task-list.html" %}
{% block page_title %}
Money Claims Prototype
{% endblock %}
{% block home_link %} ../../task-list {% endblock %}
{% block proposition_header %}
{% set my_account="1" %}
{% include "includes/propositional_navigation.html" %}
{% endblock %}
{% import 'prototypes/prototype-may-2020/includes/address.html' as address %}
{% block content %}
{% include 'prototypes/prototype-may-2020/includes/contact.html' %}


|
easy_perception_deployment
|
An ONNXRuntime (Ort) Base class object. This is the base class for P1OrtBase, P2OrtBase and P3OrtBase. It serves an auxillary class object to directly interface with the ONNXRuntime CPP API to instantiate an Ort session to run as an inference engine. More...
#include <ort_base.hpp>
Classes | |
| class | OrtBaseImpl |
Public Types | |
| using | DataOutputType = std::pair< float *, std::vector< std::int64_t > > |
| A convienence datatype to store output inference result. | |
Public Member Functions | |
| OrtBase (const std::string &modelPath, const boost::optional< size_t > &gpuIdx=boost::none, const boost::optional< std::vector< std::vector< std::int64_t >>> &inputShapes=boost::none) | |
| A Constructor function. | |
| ~OrtBase () | |
| A Destructor function. | |
| std::vector< DataOutputType > | operator() (const std::vector< float * > &inputImgData) |
| A Mutator operator function that conducts inference with preprocessed input image data. | |
| int | getNumOutputs (void) |
| A Getter function that gets the number of outputs which is used to determine the level of precision in EPDContainer class object. | |
An ONNXRuntime (Ort) Base class object. This is the base class for P1OrtBase, P2OrtBase and P3OrtBase. It serves an auxillary class object to directly interface with the ONNXRuntime CPP API to instantiate an Ort session to run as an inference engine.


My Name is Debabrata Khanra from Cognizant.
B.Tech from Camellia Institute Of Technology on 2016.
3.5 years Exp. as Software Developer.


TZInfo-Data uses the tz database (www.twinsun.com/tz/tz-link.htm) to provide daylight-savings aware transformations between times in different timezones for tzinfo.
The tz database has been imported (using TZDataParser) and turned into a set of Ruby modules (which are packaged with this release).
This database (once installed) will be used automatically with tzinfo library if zoneinfo database is not installed on your machine. This shouldn’t be necessary on UNIX-like machines that usually come with preinstalled zoneinfo.
The latest version of TZInfo-Data can be found at
*
API documentation can be found at
*
The preferred method of installing TZInfo-Data is through the GEM file (RubyGems required):
% gem install tzinfo-data-x.y.z.gem
or to automatically download and install:
% gem install tzinfo-data --remote
TZInfo-Data is released under the MIT license.
Please post to the TZInfo Users mailing list (rubyforge.org/mailman/listinfo/tzinfo-users) if you require assistance or have any suggestions.
Alternatively, you can contact the author Philip Ross directly at gmail at phil.ross.com.


Setting up Openfire XMPP server on Arch Linux, Miscellaneous, Java.
Install and configure Openfire XMPP Server – Arch Linux
Difficulty: 2
Time: 30 minutes
This article will help you to understand the installation and configuration of Openfire XMPP Server on Arch Linux.
Extensible Messaging and Presence Protocol (XMPP) is an XML-based communication protocol for middleware. It enables the near-real-time exchange of structured yet extensible data between any two or more network entities.
Openfires enables collaboration in real time and provides a tightly secured and high performing server. You can use Open Source Apache License for Openfire and can easily set up and configure it using Java.
Openfire is a Java based tool to use utility of XMPP server.
Openfire disallows chat options.
Install Openfire
- Update the operating system.
sudo pacman -Sy
- To install Java, run the following command:
sudo pacman -S jre7-openjdk-headless
- Install Openfire.
sudo pacman -S openfire
- Check Openfire package and again update operating system.
sudo pacman -Si openfire
sudo pacman -Sy
Type the following command to start the Openfire service:
sudo systemctl start openfire.service
Type the following command to stop the Openfire service:
sudo systemctl stop openfire.service
Test Openfire
- Test the Openfire installation on your system by visiting the following URL on your browser:
http://your_IP:9090
- Successful installation of Openfire would show the Openfire wizard on your browser. Follow the instructions to proceed with the set up.
- On the first page, choose the language and on the second page, provide appropriate values for domain and associated ports.
Keep the default values for the rest of the steps.
- After you are completed with the setup procedure, login into the admin console using the Admin account.
- After logging in, the first screen shows the Server Manager tab under the Server tab. The server manager provides information about server properties and environment, system properties, language and time, clustering, database, logs, email setting and security audit viewer.
- The Server Settings tab provides information about profile settings, client connections, server to server connections, external components, http bindings, update management, registration and login management, resources policies, offline messages, audit policies for messages, private data storage options, security settings, server certificates, compression settings and file transfer settings.
- The Media Services tab provides information about Media Proxy settings.
Conclusion
You have installed and configured Openfire XMPP server on Arch Linux.


Source code for cleverhans.compat
"""
Wrapper functions for writing code that is compatible with many versions
of TensorFlow.
"""
import warnings
import tensorflow as tf
# The following 2 imports are not used in this module. They are imported so that users of cleverhans.compat can
# get access to device_lib, app, and flags. A pylint bug makes these imports cause errors when using python3+tf1.8.
# Doing the sanitized import here once makes it possible to do "from cleverhans.compat import flags" throughout the
# library without needing to repeat the pylint boilerplate.
from tensorflow.python.client import device_lib # pylint: disable=no-name-in-module,unused-import
from tensorflow.python.platform import app, flags # pylint: disable=no-name-in-module,unused-import
def _wrap(f):
"""
Wraps a callable `f` in a function that warns that the function is deprecated.
"""
def wrapper(*args, **kwargs):
"""
Issues a deprecation warning and passes through the arguments.
"""
warnings.warn(str(f) + " is deprecated. Switch to calling the equivalent function in tensorflow. "
" This function was originally needed as a compatibility layer for old versions of tensorflow, "
" but support for those versions has now been dropped.")
return f(*args, **kwargs)
return wrapper
reduce_sum = _wrap(tf.reduce_sum)
reduce_max = _wrap(tf.reduce_max)
reduce_min = _wrap(tf.reduce_min)
reduce_mean = _wrap(tf.reduce_mean)
reduce_prod = _wrap(tf.reduce_prod)
reduce_any = _wrap(tf.reduce_any)
def reduce_function(op_func, input_tensor, axis=None, keepdims=None,
name=None, reduction_indices=None):
"""
This function used to be needed to support tf 1.4 and early, but support for tf 1.4 and earlier is now dropped.
:param op_func: expects the function to handle eg: tf.reduce_sum.
:param input_tensor: The tensor to reduce. Should have numeric type.
:param axis: The dimensions to reduce. If None (the default),
reduces all dimensions. Must be in the range
[-rank(input_tensor), rank(input_tensor)).
:param keepdims: If true, retains reduced dimensions with length 1.
:param name: A name for the operation (optional).
:param reduction_indices: The old (deprecated) name for axis.
:return: outputs same value as op_func.
"""
warnings.warn("`reduce_function` is deprecated and may be removed on or after 2019-09-08.")
out = op_func(input_tensor, axis=axis, keepdims=keepdims, name=name, reduction_indices=reduction_indices)
return out
[docs]def softmax_cross_entropy_with_logits(sentinel=None,
labels=None,
logits=None,
dim=-1):
"""
Wrapper around tf.nn.softmax_cross_entropy_with_logits_v2 to handle
deprecated warning
"""
# Make sure that all arguments were passed as named arguments.
if sentinel is not None:
name = "softmax_cross_entropy_with_logits"
raise ValueError("Only call `%s` with "
"named arguments (labels=..., logits=..., ...)"
% name)
if labels is None or logits is None:
raise ValueError("Both labels and logits must be provided.")
try:
f = tf.nn.softmax_cross_entropy_with_logits_v2
except AttributeError:
raise RuntimeError("This version of TensorFlow is no longer supported. See cleverhans/README.md")
labels = tf.stop_gradient(labels)
loss = f(labels=labels, logits=logits, dim=dim)
return loss


---
layout: slides
title: "On cooperating"
category: hidden
type: course
semester: Fall 2020
college: Stevens Institute of Technology
permalink: /thought-and-behavior/cooperation/
---
# On cooperating.
???
---
# The Prisoner's Dilemma
- Two options, cooperate or defect
- Best if both cooperate
- Worst if both defect
- But...
???
Two members of a criminal gang are arrested and imprisoned. Each prisoner is in solitary confinement with no means of communicating with the other. The prosecutors lack sufficient evidence to convict the pair on the principal charge, but they have enough to convict both on a lesser charge. Simultaneously, the prosecutors offer each prisoner a bargain. Each prisoner is given the opportunity either to betray the other by testifying that the other committed the crime, or to cooperate with the other by remaining silent. The possible outcomes are:
If A and B each betray the other, each of them serves two years in prison
If A betrays B but B remains silent, A will be set free and B will serve three years in prison
If A remains silent but B betrays A, A will serve three years in prison and B will be set free
If A and B both remain silent, both of them will serve only one year in prison (on the lesser charge).
---
# Payoff matrices in PD
- Bimatrix game
- T > R > P > S
???
Temptation, Reward, Sucker's, Punishment
---
# Pareto optimality, Nash equilbrium
- Pareto: nobody can switch without making other worse off
- Nash: strategies are best responses to others
---
# One shot vs. repeated games
- "Iterated" prisoner's dilemma
- Chance to learn, use feedback
- What changes?
---
# Strategies in the IDP
- All cooperate
- All defect
- Random
and...
---
# Tit-for-tat
- Robert Axelrod's tournaments
- Clear, nice, provocable, and forgiving
???
Firstly, It is a clear and recognizable strategy. Those using it quickly recognize its contingencies and adjust their behavior accordingly. Moreover, it is considered to be nice as it begins with cooperation and only defects in following competitive move. The strategy is also provocable because it provides immediate retaliation for those who compete. Finally, it is forgiving as it immediately produces cooperation should the competitor make a cooperative move
---
# Evolutionary IDP
- What is the object of evolution?
- What is the "genome" of cooperation? (y, p, q)
- What is selection?
???
Frequency-dependent fitness
---
# Thinking through evolutionary dynamics
- Is evolution always survival of the fittest?
- Nash equlibrium vs. evolutionarily stable strategy (ESS)
???
Nash: strategies are best responses to others
---
# Evolutionary phenomena in IPD
- Neutral drift
- Dominance (ALLD vs. ALLC)
- Bistability (ALLD vs. stochastic TFT)
- Stable polymorphism (ALLC vs. (y, 1, 0))
- Cycles (ALLC, ALLD, (y, 1, 0))
???
ALLD is dominated by (y, 1, 0);
(y, 1, 0) is dominated by ALLC;
ALLC is dominated by ALLD
---
class: center, middle
# Fin.


Mocha Pot
Features
How it Works
Pricing
Looking for that next cup?
Sign-In
Delicious Coffee
Simple Brewing
Fresh Cups Within Minutes
Bialetti Express Moka
Bialetti Express Moka
Price
Price
$34
$36


Our expert event and meeting planners work tirelessly with our
clients until they are satisfied with every details of the event.
Reward and recognition events
Fundraisers and galas
Grand openings
Team building and appreciation events
Corporate sales and leadership meetings
Conferences
Press and product launches
International and incentive events


Start Again
$0
HOW MANY MARKETING PAGES DO YOU WANT ?
1-3
4-9
10+
NONE/DON'T KNOW
1 / 10
About
/Made By ·
Tier5


. ± . acid fatty DGLA circinelloides gene acids {border-style lipid production px;} #ffffff;} (GLELO) alpina cell strains Mucor accumulation Song linolenic GLA Mortierella PCR control n-) overexpressing recombinant weight Appl Chen Microbiol data dry elongase expression oleaginous used using enzyme produce strain Cell Mc-DE Science Shandong Table Zhang analysis fungus genes medium producing px; {font-family (Fig. Mc- Ratledge Wang cloning culture font-size fungi growth overexpression polyunsaturated ./s--- Biotechnol C(:) Fig. Funding Garre Yang Yuanda arachidonic confirmed double; increased level mRNA mg/l plasmid results rpm strain, target total ARA Environ article border-color border-width carried containing content corresponding delta- file genetic genome glucose levels min, nitrogen pMAT-GLELO plasmids protoplasts sequences series solid; {font-style {font-weight (CDW), ATCC Additional DGLA. Fact Fatty Foundation Natural PUFA RT-qPCR Saccharomyces Sakuradani Shimizu according added amplification biosynthesis bold catalyzed centrifugation cerevisiae conditions courier; electroporation em; engineering essential experiments. extracted fermenter filamentous following gamma grown high homologous mean medium, method microorganisms mutant overexpressed pMAT performed pleu-MU primers pt;} significant site sorbitol step time transformants transformation work


Summarizing a network¶
Basics from Graph Theory¶
Walk is a sequence of nodes and a sequence of edges that joins two nodes. A walk from \(i_j\) to \(i_k\) is a sequene of nodes (\(i_j\), \(i_j+1\), …,\(i_k\)), and a sequence of edges (\(i_j\)\(i_{j+1}\), \(i_{j+1}\)\(i_{j+2}\), …, \(i_{k-1}\)\(i_{k}\)). Usually, we can just use a list of nodes to describe the sequence.
Path is a walk that each node is distinct. It just basically means that you can not cycle back.
Cycle is a walk where the first node is the last node. We end up with the starting node.
Geodesic is the shortest path between nodes. It means that you calculate how many links are in all possible paths between two nodes and pick the one with the fewest number of links (for an unweighted graph).
Diameter & Average Path Length¶
The diameter of a graph is the length of the longest geodesic (i.e., the longest shortest path) between any pairs of nodes.
It describes how close nodes are to each other.
How long will it take to get from one node to another in some sense
How fast will information spread?
How quickly can we get from one part of the graph to another
Average Path Length is the average geodesic in the network (less prone to outliers).
Looking at social networks in the real world is that they tend to have short average path lengths and short diameters:
Milgram (1967) letter experiments – median 5 for the 25% that made it
Co‐Authorship studies – Grossman (2002) Math mean 7.6, max 27, – Newman (2001) Physics mean 5.9, max 20 – Goyal et al (2004) Economics mean 9.5, max 29
WWW – Adamic, Pitkow (1999) – mean 3.1 (85.4% possible of 50M pages)
Facebook – Backstrom et al (2012) – mean 4.74 (721 million users)
Note
Global network properties on resilience: the largest connected component, the average shortage path length (APL), diameter (D), clustering coefficient (CC), BC, etc. Lower APL and higher CC are typically considered indicators of the small-world-ness property and are sometimes associated with higher resilience.
Density¶
The density of a graph is a measure of how many ties between nodes exist compared to how many edges between nodes are possible, given the graph size (number of nodes) and the graph order (number of links) \(d={2m \over (n)(n-1)}\)
Denser networks are less vulnerable to disruption due to the removal of key nodes.
Connected Network & Components¶
A network is connected if there is a path between every two nodes.
Component is a maximum connected subgraph. Assume \(G= (N, E)\) is a network, then the component of G must satisfy the following rules:
(\(N', E' \)) must be a subset of \((N, E)\)
(\(N', E' \)) must be connected
\(i\) in \(N'\) and \(ij\) in E must imply \(j\) in \(N'\) and \(ij\) in \(E'\)
Connectivity¶
Connectivity minimum number of nodes that need to be removed to separate the remaining nodes into two or more components. How hard it is to disconnect a graph by removing vertices or edges.
By Menger’s theorem, this is equal to the number of node independent paths (paths that share no nodes other than source and target
Homophily¶
“Birds of a feather flock together”
age, race, gender, religion, profession…
opportunity – contact theory
benefits/costs
social pressure
social competition…
Strength of Weak Ties¶
Assortativity¶
Is there a tendency of nodes with the same magnitude of the degree to connect to each other, or are large-degree nodes primarily connected to low-degree nodes?
Assortativity measures the similarity of connections in the graph with respect to the node degree.
Local Structures¶
Clustering¶
Basic idea: how dense is a network at a local level?
e.g. What fraction of the people who I’m friends with, are friends with each other?
Clustering looks at if we have a given node \(i\), and we look at two of \(i\)’s friends j and k, what’s the chance that those two are related to each other?
Local clustering coefficient:
For a node \(i\) in graph \(g\), we have the local clustering coefficient \(Ci(g)\) calculated as:
\(\#\{\) \(kj\) in \(g\) | \(k, j\) in \(N_i(g)\}\)}
divided by
\(\#\{\) \(kj\) | \(k, j\) in \(N_i(g)\}\)
Average clustering coefficient: \(C^{avg}(g) ={∑_i C_i(g) \over n}\)
Triads¶
A triangle is a set of three nodes where each node has a relationship to the other two.
In the context of social networks, three individuals \(x, y, z\) such \(x\) and \(z\) are both friends of \(y\) are called a triad centered at \(y\).
Triadic Closure¶
The triad is said to be open if the link from \(x\) to \(z\) is missing. A closed triad centered at \(y\) is a particular triad centered at \(y\) with the additional link from \(x\) to \(z\). The process of closing an open triad is called triadic closure.
Transitivity¶
Transitivity is the overall probability for the network to have adjacent nodes interconnected, thus revealing the existence of tightly connected communities (or clusters, subgroups, cliques). It is calculated by the ratio between the observed number of closed triplets and the maximum possible number of closed triplets in the graph.
\(T={\# of Triads \over \# of connected Triads}\)
Cliques¶
Cliques are identified by their size k, which is the number of nodes that are present in the clique.
A triangle is what we would consider to be a k-clique where k=3.
Maximal Cliques¶
A maximal clique is a clique that cannot be extended by including one more adjacent vertex, meaning it is not a subset of a larger clique. A maximum clique (i.e., clique of the largest size in a given graph) is therefore always maximal, but the converse does not hold.
Motifs¶
Motifs patterns of interconnections occurring in complex networks at numbers that are significantly higher than those in randomized networks
Triad Motifs¶
The triads are numbered 1-16, and have a code associated with them. The code reads like this:
The first number is the number of bidirectional edges.
The second number is the number of single edges.
The third number is the number of “non-existent” edges.
A letter code to distinguish directed variations of the same triad—U for “up,” D for “down,” C for “circle,” and T for “transitive” (i.e., having 2 paths that lead to the same endpoint).
Triads 1-3 in the figure are unconnected, triads 4-8 and 11 represent variations on structural holes, and triads 9,10 and 12-16 are variations on closed triads.
Important triads:
structural-hole triads (code 201)
closed triads (code 300).
The ratio between the structural holes and closed triads is also important—a hierarchy is largely composed of structural holes, while more egalitarian structures would have a higher ratio of closed triads.


Defines a distant light source.
Syntax
<feDistantLight azimuth="45" elevation="45"/>
DOM Information
Inheritance Hierarchy
Node
Element
SVGElement
SVGFEDistantLightElement
Members
The SVGFEDistantLightElement object has these types of members:
Properties
The SVGFEDistantLightElement object has these properties.
| Property | Description |
|---|---|
|
Gets the direction angle for the light source on the xy plane (clockwise). | |
|
Gets the direction angle for the light source from the xy plane towards the z-axis. |
Standards information
- Scalable Vector Graphics: Filter Effects, Section 15.25.14
Build date: 1/13/2014


layout: true class: slide
--- class: center,middle # Enabling New Finance Options with Health Credit Outcomes #### John Riney, Technical Evangelist, PokitDok --- # /about/me .center[
] --- # /about/pokitdok -- ### "The Operating System For The Business Of Health" --- class: center, middle # Health? --- class: center, middle # whyTF are you here? --- class: center, middle # # --- class: center, middle # # # # # # --- #
spreadsheets?
.center[
] .center[(thank you http://spreadsheethell.tumblr.com/post/58145804281/omg-noooooooo)] --- class: center, middle # #1 -- Medical bills are the primary cause of personal bankruptcy in the U.S. --- class: center, middle # $12,900 -- Average out of pocket spend before insurance starts paying, for families on HDHPs --- class: center, middle # $42.8 billion -- National uncompensated care costs (charity care + bad debt), 2014 --- class: center, middle # Healthcare has changed --- class: center, middle #
Healthcare has changed
# Healthcare _has been_ changing --- class: center, middle #
Healthcare has changed
#
Healthcare _has been_ changing
--- class: center, middle # Healthcare is an absolute dumpster fire .center[
] --- # Three points -- ### Price transparency and ease of use can buy down risk -- ### The core transactions of health are now commoditized (and useful outside of health!) -- ### Analyzing data from health transactions can inform lending decisions --- class: center, middle .center[
] --- .center[
] Source: "What’s Really Killing Digital Health Startups" 10/30/2015 by John Sung Kim (@JohnSungKim) [http://techcrunch.com/2015/10/30/whats-really-killing-digital-health-startups/](http://techcrunch.com/2015/10/30/whats-really-killing-digital-health-startups/) --- class: center, middle # The core .center[
] --- # The core == insurance companies (payers)
Eligibility (coverage, plan structure, deductibles)
Claims and claims status
Enrollment
Authorizations
Referrals
### ... AKA ASC X12 5010. --- # X12 Eligibility request ```html HL*1**20*1~NM1*PR*2*Premium Gold Insurance Co.*****PI*0123456~HL*2*1*21*1~NM1*1P* 1*Back*Has*Your***XX*9876543210~HL*3*2*22*0~TRN*1*89368DC6A14E4E529AA876ED416E8A9F *1453915417~NM1*IL*1*A-lot*Lifts****MI*MEM10001~DMG*D8*19820315*M~EQ*98^33~ ``` #### (the spec for this one request is 552 pages) --- # Our Eligibility request ```javascript { "member": { "birth_date": "1982-03-15", "first_name": "Lifts", "last_name": "A-Lot", "id": "MEM10001" }, "provider": { "first_name": "Has-Your", "last_name": "Back", "npi": "9876543210" }, "service_types": ["professional_physician_visit_office", "chiropractic"], "trading_partner_id": "premium_gold_insurance" } ``` --- # X12 Eligibility response ```html HL*1**20*1~NM1*PR*2*Premium Gold Insurance Co.*****PI*0123456~HL*2*1*21*1~NM1*1P* 1*Back*Has*Your***XX*9876543210~HL*3*2*22*0~TRN*2*89368DC6A14E4E529AA876ED416E8A9F*<PHONE_NUMBER>NM1*IL*1*A-lot*Lifts****MI*MEM10001~N3*2150 Pleasant Drive~N4*Sunny*CA* 900010001~DMG*D8*19820315*M~DTP*291*D8*20141001~EB*B**98****10~EB*A**33*****.20~ ``` ### oh God make it stop --- # Our Eligibility response ```javascript { "coverage": [ "coinsurance": [ { "benefit_percent": 0.2, "service_types": [ "chiropractic" ] } ], "copay": { "copayment": { "amount": "10", "currency": "USD" }, "service_types": [ "professional_physician_visit_office" ] } ], "plan_begin_date": "2014-10-01", (...and so on...) } ``` --- class: center, middle ### Acredited Standards Committee (ASC) started work in 1979. --- # Other hot tech from 1979 .center[
] --- class: center, middle APIs > legacy “standards” no startup / maintenance / transactional costs > any of those things --- class: center, middle # We lower the barriers ### and therefore process more transactions --- class: center, middle ### To quote one of our Ph.D. data scientists: --- class: center, middle ### To quote one of our Ph.D. data scientists: # “Nom nom nom, more data” --- class: center, middle .center[
] --- class: center, middle ### Data products for more industries than just health --- class: center, middle # Like finance --- class: center, middle # #1 Medical bills are the primary cause of personal bankruptcy in the U.S. --- class: center, middle # HCO ### Health Credit Outcome --- .center[
] --- class: center, middle ### Demo -- # ¯\_(ツ)_/¯ --- # Links * PokitDok
[https://pokitdok.com](https://pokitdok.com) * PokitDok Platform
[https://platform.pokitdok.com](https://platform.pokitdok.com) * These slides
[https://rin3y.github.io/slide-decks/findevr-nyc-2016](https://rin3y.github.io/slide-decks/findevr-nyc-2016) * @riney


Office Graph Integration
login
tasks
mail
profile
update profile
To manage app permissions go to
https://myapps.microsoft.com


Upload | Unsorted Images | Images without Faces | Images with Faces


Debugging using Gad Domnit
CodeMirror has a rendering issue if it's initialized inside a container with display: none;
. In dynamic sites which change the visibility of a

, this rendering issue might be hard to replicate.
The
on the right demonstrates this property. 50% of the time, CodeMirror is initialized inside
an invisible

, which is then made visible. Otherwise, the

is made visible before
CodeMirror is initialized. Click below to reload the
.
When CodeMirror loads properly, the editor is visible, with line numbers to the left.
However, when CodeMirror's container is made visible after load, the screen is white.
Clicking on the white

will make the editor appear, but the line numbers cover the first few
characters of the editor.
Domnit enhances the bug report
by including inspectable output, instead of just a screenshot. Gad Domnit produced the content below from the examples above. From the dynamic script, Domnit captured a static HTML representation of exactly what was on screen, allowing the bug report to be repeatable.
Properly loaded output
This output is a static snapshot in time. It looks identical to the iframe
above, but has none of the
CodeMirror scripts or stylesheets included.
Improperly loaded output
Display Full Output
Comparable output
The HTML generated above is compared, and will be displayed below. The improperly loaded CodeMirror is displayed in red, while the correct output is in green. This output could be used to debug CodeMirror's internals, see if our program using CodeMirror has issues, or write unit tests checking the computed values to see how often these rendering issues occur.


You suggest a course of activity (limited to a sentence or two) and magically influence a creature you can see within range that can hear and understand you.
Creatures that can't be charmed are immune to this effect. The suggestion must be worded in such a manner as to make the course of action sound reasonable.
Asking the creature to stab itself, throw itself onto a spear, immolate itself, or do some other obviously harmful act ends the spell.
The target must make a Wisdom saving throw. On a failed save, it pursues the course of action you described to the best of its ability. The suggested course of action can continue for the entire duration. If the suggested activity can be completed in a shorter time, the spell ends when the subject finishes what it w as asked to do.
You can also specify conditions that will trigger a special activity during the duration. For example, you might suggest that a knight give her warhorse to the first beggar she meets. If the condition isn't met before the spell expires, the activity isn't performed.
If you or any of your companions damage the target, the spell ends.


There are three main JavaScript methods which show alert dialogs: alert, confirm and prompt. This page has examples of each.
The following button will display an alert when clicked.
The following button will display a confirm dialog when clicked.
The following button will display a prompt dialog when clicked.


Components
When working on larger and more structured projects, you may find that you want to structure your code using a component paradigm like you would find using React. This module provides just that, specifically constructors and middleware necessary to render a React-like JavaScript class/function or Web Component.
Overview
In order to use components, you must install/fetch the components package. This contains middleware which will render functions, stateless classes, and stateful classes. Unlike middleware, this package will automatically hook its middleware into the running diffHTML build.
Using components in diffHTML always requires installing or including the base package:
npm install diffhtml-components
If you need to import React components, install the compat package:
npm install diffhtml-react-compat
This will allow you to replace
react
andreact-dom
in your project and import
There are two primary packages for components: diffhtml-components and diffhtml-react-compat .Unlike other frameworks diffHTML is extremely flexible with what you can return, and allows for seamless JSX integration, top-level fragments, and supports stateless classes that do not need to extend from a base class.
Function component
import { html, innerHTML } from 'diffhtml';
function MyComponent(props) {
return html`

Some prop = ${props.someProp}

`;
}
innerHTML(document.body, html`<${MyComponent} someProp="value" />`);
Class component
import { html, innerHTML } from 'diffhtml';
class MyComponent {
render(props) {
return html`

Some prop = ${props.someProp}

`;
}
}
innerHTML(document.body, html`<${MyComponent} someProp="value" />`);
Lifecycle hooks
The following hooks will be called during the respective mounting and
unmounting flow. You do not need to extend from Component
to use these hooks.
Simple classes can just define them as methods and they will be called.
Hooks
componentWillMount
componentDidUpdate
componentWillReceiveProps
shouldComponentUpdate
componentWillUnmount
Component
The stateful class component, which is used by importing the Component
class.
import { Component } from 'diffhtml-components';
Once you have this base class, you can extend your ES6 class to get access to sub-tree rendering. A component render result is treated as a fragment, and are compared with previous results. All top-level elements are tracked and efficient diffing is applied against the previously rendered contents.
import { innerHTML, html } from 'diffhtml-components';
import { Component } from 'diffhtml-components';
class ListComponent extends Component {
render({ items }) {
return html`
${items.map(item => html`

${item}

`)}
`;
}
}
innerHTML(document.body, html`

<${ListComponent} items=${['List item 1', 'List item 2']} />

`);
Props
These are incoming values that map to the props you set using the element
attributes. Like in React, there will be a children
prop automatically added
which maps to the passed in child elements. You can access props on
this.props
or in the render(props) {}
method.
PropTypes
State
forceUpdate
setState
Web Component
The WebComponent implementation is nearly identical to the standard
Component
, except this
points to an HTML element, children are
rendered into the Shadow DOM, and when props and attributes are set on an
element that match propTypes
cause an automatic re-render.
import { WebComponent } from 'diffhtml-components';
JSX
JSX is supported out-of-the-box.
React Compat
This experimental module aims to replicate the public API surface-area of React that is sufficient to execute and render components from that ecosystem. The reason this is important, is that diffHTML should be able to adopt and help contribute back to the community that it borrows so much from. It also helps keep down the level of fragmentation required and initial investment if someone wants to try out diffHTML in an existing React project.
You can install it by running:
npm install diffhtml-react-compat


Every small business owner wants to succeed. Why put your blood, sweat, and tears into launching a new venture, only to watch it fail? And yet, many of them do. Over the years, I have worked with hundreds of small business owners and I have learned that in order to create a successful small business, your venture has to abide by certain principles.


Welcome to my site.
Please come in and stay awhile.
I started this website because Halloween has always been my favorite holiday. But during the last year, I started selling some of my favorite Halloween products, and they've become quite a hit.
If you click on the Personal link, you can browse my favorite Halloween pictures, stories, and films. And if you join my email list, I will keep you up-to-date on all things Halloween.
Product of the week
20" Derranged Cat
My guarantee
If you aren't completely satisfied with everything you buy from my site, you can return it for a full refund. No questions asked!


I currently have one completed research project, hoping to add to this list soon!
We develop a compression method that solves the fundamental symmetry issue with rank-1 factorizations,
implement it as a library module for the TensorFlow framework, and show that we achieve up to 60% better
accuracy than all other methods (pruning, HashedNet, same-size network, simple factorization) while
increasing inference speed by up to 14X with a custom, fused matrix multiplication kernel.
We hope to open-source our library and kernel implementation soon.
Extended abstract presented at SysML 2018, full paper under review at ICML 2018.


Marcus Rashford excited by England's attacking trio
by Shambhu AjithMarcus Rashford, Harry Kane and Raheem Sterling are in the form of their lives for England at the moment, and the Manchester United star is excited by the partnership they have struck up.
Rashford was talking to Sky Sports when he heaped praise on Kane, Sterling and himself, stating:
"I think it is obviously a good combination but we have played games without that particular front three and it is frightening what we can do as a group of attackers.”
Aside from Rashford, Kane and Sterling, the England squad has plenty of quality attackers, with the likes of Jadon Sancho, Callum Hudson-Odoi and Tammy Abraham ready to step in when required.
Rashford went on to state that England will have to take advantage of the depth they have in the squad.
“You have to use it to your advantage and maybe it isn't working in one game for that three and someone has to come in and make the difference - we have to use that to our advantage, 100 per cent!”
England managed to score 37 goals in 8 EURO 2020 qualifying games while conceding just 3. They scored 7 against Montenegro last week at Wembley in what was the country's 1000th international game.
In their last 3 matches, against Bulgaria, Montenegro and Kosovo, England scored 17 goals without reply.


@import uk.gov.hmrc.govukfrontend.views.html.components._ @import uk.gov.hmrc.govukfrontend.views.viewmodels.cookiebanner.Message @import uk.gov.hmrc.govukfrontend.views.viewmodels.cookiebanner.Action @this(govukCookieBanner : GovukCookieBanner) @() @html = {
We use some essential cookies to make this service work.
We’d like to set additional cookies so we can remember your settings, understand how people use the service and make improvements.
} @acceptHtml = {You’ve accepted additional cookies. You can change your cookie settings at any time.
} @rejectedHtml = {You’ve rejected additional cookies. You can change your cookie settings at any time.
}