Home
Early Life
Current
FAQ
Gallery
Leadership
Quotes
Bibliography
Malala's Blog
About This Site
Frequently Asked Questions
How many years had Malala been writing for BBC when she was shot?
5 years
What was her cover name?
Gul Makai


With the increased use of social media platforms the problem of uncivilized speech has risen as well. A very common practice we see on social media platforms is a deliberate attack on person or group of people on the basis of attributes such as race, religion, ethnic origin, sexual orientation, disability, or gender. Due to uncivilized speech there is a lot of chaos and violence these days.  Often social media sites like Facebook and Twitter face the problem of identifying and censoring problematic posts while weighing the right to freedom of speech.
 Early identification of users promoting hate speech could enable outreach programs that attempt to prevent an escalation from speech to action.
 So, the task is to classify racist or sexist tweets from other tweets.


Name
lua-oocairo-path - Path object
Introduction
A path object represents a series of path instructions like move_to
and line_to
, as supplied to a context object when defining shapes for
drawing. They can be created by issuing instructions on a context object
and then calling cr:copy_path()
or cr:copy_path_flat()
(see
lua-oocairo-context(3)). A path can then be added back to the
current path by calling cr:append_path()
.
Methods
Currently only the following method can be called on a path object:
- path:each ()
Returns an iterator function and initial values needed to iterate over the instructions in the path using a Lua
for
loop. This can be used to translate the Cairo path piece by piece, perhaps to encode it in some unusual vector graphics format, or to translate it into calls to another API like OpenGL.The iterator function will return three values each time it is called. The first is a number, which should be ignored (but is needed to keep track of the current position in the list of instructions). The second value is a string naming the instruction to be performed, and the last value is either nil or a table (array) of numbers which are the arguments of the instruction.
This example simply prints out the instructions in the order they were issued on the context object cr:
for _, instr, args in cr:copy_path():each() do if args then print(instr, unpack(args)) else print(instr) end end
The following instructions can be included:
- move-to
Set current point. Comes with a table of two numbers.
- line-to
Draw straight line. Comes with a table of two numbers.
- curve-to
Draw curved line. Comes with a table of two numbers, the two control points first and then the destination point.
- close-path
Draw line back to start point. The extra arguments value will be nil.


Technology leader and computer scientist with over 8 years of experience and expertise in the areas of mobile engineering,
team management, project execution, product management, open source and software development on iOS, Android and Windows.
Specialties: Leadership, Architecture, Technology and Product Engineering.
Enthusiastic, knowledge-hungry self-starter, eager to meet challenges and quickly assimilate newest and latest technologies,
skills, concepts, and ideas.
Proven leader & project manager from relevant startup experience; drive system architecture decisions, lead projects through
the release process and deliver projects within the timeline.
Innovator in developing next generation solutions with a quality startup experience from college who envisions technical
and business perspectives.
MetricStream, the independent market leader in enterprise and cloud
applications for Governance, Risk, Compliance (GRC)
and Quality Management, makes GRC simple.
My key responsibilities are divided into below key areas:-


Welcome to Hypercities!
To complete your registration, you must read the Terms of Service set forth below, make sure you understand them, and certify to the statement below, indicating your acknowledgement and acceptance of these terms.
Your Passwords and Account Security
- You agree and understand that you are responsible for maintaining the confidentiality of passwords associated with any account you use to access the Services.
- Accordingly, you agree that you will be solely responsible to Hypercities for all activities that occur under your account.
- If you become aware of any unauthorized use of your password or of your account, you agree to notify Hypercities Administrator immediately.
Content in the Services
- You understand that all information (such as data files, written text, photographs, audio files or videos) which you may have access to as part of, or through your use of, the Services are the sole responsibility of the person from which such content originated. All such information is referred to below as the "Content"
- Hypercities reserves the right (but shall have no obligation) to pre-screen, review, flag, filter, modify, refuse or remove any or all Content from any Service.
- You agree that you are solely responsible for (and that Hypercities has no responsibility to you or to any third party for) any Content that you create, transmit or display while using the Services and for the consequences of your actions (including any loss or damage which Hypermedia may suffer) by doing so.
Change to the Terms
- We reserve the right, at our sole discretion, to change, modify, add, or delete portions of these Terms of Service at any time without further notice. If we do this, we will post the changes to these Terms of Service on our website. Your continued use of the Service or the Site after any such changes constitutes your acceptance of the new Terms of Service.


UPDWTMP
Section: Linux Programmer's Manual (3)
Updated: 2014-08-19
Index
Return to Main Contents
NAME
updwtmp, logwtmp - append an entry to the wtmp file
SYNOPSIS
#include <utmp.h>
void updwtmp(const char *wtmp_file, const struct utmp *ut);
void logwtmp(const char *line, const char *name, const char *host);
For
logwtmp(),
link with -lutil.
DESCRIPTION
updwtmp()
appends the utmp structure
ut
to the wtmp file.
logwtmp()
constructs a utmp structure using
line, name, host,
current time and current process ID.
Then it calls
updwtmp()
to append the structure to the wtmp file.
FILES
- /var/log/wtmp
-
database of past user logins
CONFORMING TO
Not in POSIX.1-2001.
Present on Solaris, NetBSD, and perhaps other systems.
NOTES
For consistency with the other "utmpx" functions (see
getutxent(3)),
glibc provides (since version 2.1):
#include <utmpx.h>
void updwtmpx (const char *wtmpx_file, const struct utmpx *utx);
This function performs the same task as
updwtmp(),
but differs in that it takes a
utmpx
structure as its last argument.
SEE ALSO
getutxent(3),
wtmp(5)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- FILES
-
- CONFORMING TO
-
- NOTES
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:54:55 GMT, September 18, 2014


from __future__ import print_function, division
from sympy.core.basic import Basic
from sympy.core.mul import Mul
from sympy.core.singleton import S, Singleton
from sympy.core.symbol import Dummy, Symbol
from sympy.core.compatibility import (range, integer_types, with_metaclass,
is_sequence, iterable, ordered)
from sympy.core.decorators import call_highest_priority
from sympy.core.cache import cacheit
from sympy.core.sympify import sympify
from sympy.core.containers import Tuple
from sympy.core.evaluate import global_evaluate
from sympy.polys import lcm
from sympy.sets.sets import Interval, Intersection
from sympy.utilities.iterables import flatten
from sympy.tensor.indexed import Idx
###############################################################################
# SEQUENCES #
###############################################################################
[docs]class SeqBase(Basic):
"""Base class for sequences"""
is_commutative = True
_op_priority = 15
@staticmethod
def _start_key(expr):
"""Return start (if possible) else S.Infinity.
adapted from Set._infimum_key
"""
try:
start = expr.start
except (NotImplementedError,
AttributeError, ValueError):
start = S.Infinity
return start
def _intersect_interval(self, other):
"""Returns start and stop.
Takes intersection over the two intervals.
"""
interval = Intersection(self.interval, other.interval)
return interval.inf, interval.sup
@property
def gen(self):
"""Returns the generator for the sequence"""
raise NotImplementedError("(%s).gen" % self)
@property
def interval(self):
"""The interval on which the sequence is defined"""
raise NotImplementedError("(%s).interval" % self)
@property
def start(self):
"""The starting point of the sequence. This point is included"""
raise NotImplementedError("(%s).start" % self)
@property
def stop(self):
"""The ending point of the sequence. This point is included"""
raise NotImplementedError("(%s).stop" % self)
@property
def length(self):
"""Length of the sequence"""
raise NotImplementedError("(%s).length" % self)
@property
def variables(self):
"""Returns a tuple of variables that are bounded"""
return ()
@property
def free_symbols(self):
"""
This method returns the symbols in the object, excluding those
that take on a specific value (i.e. the dummy symbols).
Examples
========
>>> from sympy import SeqFormula
>>> from sympy.abc import n, m
>>> SeqFormula(m*n**2, (n, 0, 5)).free_symbols
set([m])
"""
return (set(j for i in self.args for j in i.free_symbols
.difference(self.variables)))
@cacheit
[docs] def coeff(self, pt):
"""Returns the coefficient at point pt"""
if pt < self.start or pt > self.stop:
raise IndexError("Index %s out of bounds %s" % (pt, self.interval))
return self._eval_coeff(pt)
def _eval_coeff(self, pt):
raise NotImplementedError("The _eval_coeff method should be added to"
"%s to return coefficient so it is available"
"when coeff calls it."
% self.func)
def _ith_point(self, i):
"""Returns the i'th point of a sequence.
If start point is negative infinity, point is returned from the end.
Assumes the first point to be indexed zero.
Examples
=========
>>> from sympy import oo
>>> from sympy.series.sequences import SeqPer
bounded
>>> SeqPer((1, 2, 3), (-10, 10))._ith_point(0)
-10
>>> SeqPer((1, 2, 3), (-10, 10))._ith_point(5)
-5
End is at infinity
>>> SeqPer((1, 2, 3), (0, oo))._ith_point(5)
5
Starts at negative infinity
>>> SeqPer((1, 2, 3), (-oo, 0))._ith_point(5)
-5
"""
if self.start is S.NegativeInfinity:
initial = self.stop
else:
initial = self.start
if self.start is S.NegativeInfinity:
step = -1
else:
step = 1
return initial + i*step
def _add(self, other):
"""
Should only be used internally.
self._add(other) returns a new, term-wise added sequence if self
knows how to add with other, otherwise it returns ``None``.
``other`` should only be a sequence object.
Used within :class:`SeqAdd` class.
"""
return None
def _mul(self, other):
"""
Should only be used internally.
self._mul(other) returns a new, term-wise multiplied sequence if self
knows how to multiply with other, otherwise it returns ``None``.
``other`` should only be a sequence object.
Used within :class:`SeqMul` class.
"""
return None
[docs] def coeff_mul(self, other):
"""
Should be used when ``other`` is not a sequence. Should be
defined to define custom behaviour.
Examples
========
>>> from sympy import S, oo, SeqFormula
>>> from sympy.abc import n
>>> SeqFormula(n**2).coeff_mul(2)
SeqFormula(2*n**2, (n, 0, oo))
Notes
=====
'*' defines multiplication of sequences with sequences only.
"""
return Mul(self, other)
def __add__(self, other):
"""Returns the term-wise addition of 'self' and 'other'.
``other`` should be a sequence.
Examples
========
>>> from sympy import S, oo, SeqFormula
>>> from sympy.abc import n
>>> SeqFormula(n**2) + SeqFormula(n**3)
SeqFormula(n**3 + n**2, (n, 0, oo))
"""
if not isinstance(other, SeqBase):
raise TypeError('cannot add sequence and %s' % type(other))
return SeqAdd(self, other)
@call_highest_priority('__add__')
def __radd__(self, other):
return self + other
def __sub__(self, other):
"""Returns the term-wise subtraction of 'self' and 'other'.
``other`` should be a sequence.
Examples
========
>>> from sympy import S, oo, SeqFormula
>>> from sympy.abc import n
>>> SeqFormula(n**2) - (SeqFormula(n))
SeqFormula(n**2 - n, (n, 0, oo))
"""
if not isinstance(other, SeqBase):
raise TypeError('cannot subtract sequence and %s' % type(other))
return SeqAdd(self, -other)
@call_highest_priority('__sub__')
def __rsub__(self, other):
return (-self) + other
def __neg__(self):
"""Negates the sequence.
Examples
========
>>> from sympy import S, oo, SeqFormula
>>> from sympy.abc import n
>>> -SeqFormula(n**2)
SeqFormula(-n**2, (n, 0, oo))
"""
return self.coeff_mul(-1)
def __mul__(self, other):
"""Returns the term-wise multiplication of 'self' and 'other'.
``other`` should be a sequence. For ``other`` not being a
sequence see :func:`coeff_mul` method.
Examples
========
>>> from sympy import S, oo, SeqFormula
>>> from sympy.abc import n
>>> SeqFormula(n**2) * (SeqFormula(n))
SeqFormula(n**3, (n, 0, oo))
"""
if not isinstance(other, SeqBase):
raise TypeError('cannot multiply sequence and %s' % type(other))
return SeqMul(self, other)
@call_highest_priority('__mul__')
def __rmul__(self, other):
return self * other
def __iter__(self):
for i in range(self.length):
pt = self._ith_point(i)
yield self.coeff(pt)
def __getitem__(self, index):
if isinstance(index, integer_types):
index = self._ith_point(index)
return self.coeff(index)
elif isinstance(index, slice):
start, stop = index.start, index.stop
if start is None:
start = 0
if stop is None:
stop = self.length
return [self.coeff(self._ith_point(i)) for i in
range(start, stop, index.step or 1)]
[docs]class EmptySequence(with_metaclass(Singleton, SeqBase)):
"""Represents an empty sequence.
The empty sequence is available as a
singleton as ``S.EmptySequence``.
Examples
========
>>> from sympy import S, SeqPer, oo
>>> from sympy.abc import x
>>> S.EmptySequence
EmptySequence()
>>> SeqPer((1, 2), (x, 0, 10)) + S.EmptySequence
SeqPer((1, 2), (x, 0, 10))
>>> SeqPer((1, 2)) * S.EmptySequence
EmptySequence()
>>> S.EmptySequence.coeff_mul(-1)
EmptySequence()
"""
@property
def interval(self):
return S.EmptySet
@property
def length(self):
return S.Zero
[docs] def coeff_mul(self, coeff):
"""See docstring of SeqBase.coeff_mul"""
return self
def __iter__(self):
return iter([])
class SeqExpr(SeqBase):
"""Sequence expression class.
Various sequences should inherit from this class.
Examples
========
>>> from sympy.series.sequences import SeqExpr
>>> from sympy.abc import x
>>> s = SeqExpr((1, 2, 3), (x, 0, 10))
>>> s.gen
(1, 2, 3)
>>> s.interval
[0, 10]
>>> s.length
11
See Also
========
sympy.series.sequences.SeqPer
sympy.series.sequences.SeqFormula
"""
@property
def gen(self):
return self.args[0]
@property
def interval(self):
return Interval(self.args[1][1], self.args[1][2])
@property
def start(self):
return self.interval.inf
@property
def stop(self):
return self.interval.sup
@property
def length(self):
return self.stop - self.start + 1
@property
def variables(self):
return (self.args[1][0],)
[docs]class SeqPer(SeqExpr):
"""Represents a periodic sequence.
The elements are repeated after a given period.
Examples
========
>>> from sympy import SeqPer, oo
>>> from sympy.abc import k
>>> s = SeqPer((1, 2, 3), (0, 5))
>>> s.periodical
(1, 2, 3)
>>> s.period
3
For value at a particular point
>>> s.coeff(3)
1
supports slicing
>>> s[:]
[1, 2, 3, 1, 2, 3]
iterable
>>> list(s)
[1, 2, 3, 1, 2, 3]
sequence starts from negative infinity
>>> SeqPer((1, 2, 3), (-oo, 0))[0:6]
[1, 2, 3, 1, 2, 3]
Periodic formulas
>>> SeqPer((k, k**2, k**3), (k, 0, oo))[0:6]
[0, 1, 8, 3, 16, 125]
See Also
========
sympy.series.sequences.SeqFormula
"""
def __new__(cls, periodical, limits=None):
periodical = sympify(periodical)
def _find_x(periodical):
free = periodical.free_symbols
if len(periodical.free_symbols) == 1:
return free.pop()
else:
return Dummy('k')
x, start, stop = None, None, None
if limits is None:
x, start, stop = _find_x(periodical), 0, S.Infinity
if is_sequence(limits, Tuple):
if len(limits) == 3:
x, start, stop = limits
elif len(limits) == 2:
x = _find_x(periodical)
start, stop = limits
if not isinstance(x, (Symbol, Idx)) or start is None or stop is None:
raise ValueError('Invalid limits given: %s' % str(limits))
if start is S.NegativeInfinity and stop is S.Infinity:
raise ValueError("Both the start and end value"
"cannot be unbounded")
limits = sympify((x, start, stop))
if is_sequence(periodical, Tuple):
periodical = sympify(tuple(flatten(periodical)))
else:
raise ValueError("invalid period %s should be something "
"like e.g (1, 2) " % periodical)
if Interval(limits[1], limits[2]) is S.EmptySet:
return S.EmptySequence
return Basic.__new__(cls, periodical, limits)
@property
def period(self):
return len(self.gen)
@property
def periodical(self):
return self.gen
def _eval_coeff(self, pt):
if self.start is S.NegativeInfinity:
idx = (self.stop - pt) % self.period
else:
idx = (pt - self.start) % self.period
return self.periodical[idx].subs(self.variables[0], pt)
def _add(self, other):
"""See docstring of SeqBase._add"""
if isinstance(other, SeqPer):
per1, lper1 = self.periodical, self.period
per2, lper2 = other.periodical, other.period
per_length = lcm(lper1, lper2)
new_per = []
for x in range(per_length):
ele1 = per1[x % lper1]
ele2 = per2[x % lper2]
new_per.append(ele1 + ele2)
start, stop = self._intersect_interval(other)
return SeqPer(new_per, (self.variables[0], start, stop))
def _mul(self, other):
"""See docstring of SeqBase._mul"""
if isinstance(other, SeqPer):
per1, lper1 = self.periodical, self.period
per2, lper2 = other.periodical, other.period
per_length = lcm(lper1, lper2)
new_per = []
for x in range(per_length):
ele1 = per1[x % lper1]
ele2 = per2[x % lper2]
new_per.append(ele1 * ele2)
start, stop = self._intersect_interval(other)
return SeqPer(new_per, (self.variables[0], start, stop))
[docs] def coeff_mul(self, coeff):
"""See docstring of SeqBase.coeff_mul"""
coeff = sympify(coeff)
per = [x * coeff for x in self.periodical]
return SeqPer(per, self.args[1])
[docs]def sequence(seq, limits=None):
"""Returns appropriate sequence object.
If ``seq`` is a sympy sequence, returns :class:`SeqPer` object
otherwise returns :class:`SeqFormula` object.
Examples
========
>>> from sympy import sequence, SeqPer, SeqFormula
>>> from sympy.abc import n
>>> sequence(n**2, (n, 0, 5))
SeqFormula(n**2, (n, 0, 5))
>>> sequence((1, 2, 3), (n, 0, 5))
SeqPer((1, 2, 3), (n, 0, 5))
See Also
========
sympy.series.sequences.SeqPer
sympy.series.sequences.SeqFormula
"""
seq = sympify(seq)
if is_sequence(seq, Tuple):
return SeqPer(seq, limits)
else:
return SeqFormula(seq, limits)
###############################################################################
# OPERATIONS #
###############################################################################
class SeqExprOp(SeqBase):
"""Base class for operations on sequences.
Examples
========
>>> from sympy.series.sequences import SeqExprOp, sequence
>>> from sympy.abc import n
>>> s1 = sequence(n**2, (n, 0, 10))
>>> s2 = sequence((1, 2, 3), (n, 5, 10))
>>> s = SeqExprOp(s1, s2)
>>> s.gen
(n**2, (1, 2, 3))
>>> s.interval
[5, 10]
>>> s.length
6
See Also
========
sympy.series.sequences.SeqAdd
sympy.series.sequences.SeqMul
"""
@property
def gen(self):
"""Generator for the sequence.
returns a tuple of generators of all the argument sequences.
"""
return tuple(a.gen for a in self.args)
@property
def interval(self):
"""Sequence is defined on the intersection
of all the intervals of respective sequences
"""
return Intersection(a.interval for a in self.args)
@property
def start(self):
return self.interval.inf
@property
def stop(self):
return self.interval.sup
@property
def variables(self):
"""Cumulative of all the bound variables"""
return tuple(flatten([a.variables for a in self.args]))
@property
def length(self):
return self.stop - self.start + 1
[docs]class SeqAdd(SeqExprOp):
"""Represents term-wise addition of sequences.
Rules:
* The interval on which sequence is defined is the intersection
of respective intervals of sequences.
* Anything + :class:`EmptySequence` remains unchanged.
* Other rules are defined in ``_add`` methods of sequence classes.
Examples
========
>>> from sympy import S, oo, SeqAdd, SeqPer, SeqFormula
>>> from sympy.abc import n
>>> SeqAdd(SeqPer((1, 2), (n, 0, oo)), S.EmptySequence)
SeqPer((1, 2), (n, 0, oo))
>>> SeqAdd(SeqPer((1, 2), (n, 0, 5)), SeqPer((1, 2), (n, 6, 10)))
EmptySequence()
>>> SeqAdd(SeqPer((1, 2), (n, 0, oo)), SeqFormula(n**2, (n, 0, oo)))
SeqAdd(SeqFormula(n**2, (n, 0, oo)), SeqPer((1, 2), (n, 0, oo)))
>>> SeqAdd(SeqFormula(n**3), SeqFormula(n**2))
SeqFormula(n**3 + n**2, (n, 0, oo))
See Also
========
sympy.series.sequences.SeqMul
"""
def __new__(cls, *args, **kwargs):
evaluate = kwargs.get('evaluate', global_evaluate[0])
# flatten inputs
args = list(args)
# adapted from sympy.sets.sets.Union
def _flatten(arg):
if isinstance(arg, SeqBase):
if isinstance(arg, SeqAdd):
return sum(map(_flatten, arg.args), [])
else:
return [arg]
if iterable(arg):
return sum(map(_flatten, arg), [])
raise TypeError("Input must be Sequences or "
" iterables of Sequences")
args = _flatten(args)
args = [a for a in args if a is not S.EmptySequence]
# Addition of no sequences is EmptySequence
if not args:
return S.EmptySequence
if Intersection(a.interval for a in args) is S.EmptySet:
return S.EmptySequence
# reduce using known rules
if evaluate:
return SeqAdd.reduce(args)
args = list(ordered(args, SeqBase._start_key))
return Basic.__new__(cls, *args)
@staticmethod
[docs] def reduce(args):
"""Simplify :class:`SeqAdd` using known rules.
Iterates through all pairs and ask the constituent
sequences if they can simplify themselves with any other constituent.
Notes
=====
adapted from ``Union.reduce``
"""
new_args = True
while(new_args):
for id1, s in enumerate(args):
new_args = False
for id2, t in enumerate(args):
if id1 == id2:
continue
new_seq = s._add(t)
# This returns None if s does not know how to add
# with t. Returns the newly added sequence otherwise
if new_seq is not None:
new_args = [a for a in args if a not in (s, t)]
new_args.append(new_seq)
break
if new_args:
args = new_args
break
if len(args) == 1:
return args.pop()
else:
return SeqAdd(args, evaluate=False)
def _eval_coeff(self, pt):
"""adds up the coefficients of all the sequences at point pt"""
return sum(a.coeff(pt) for a in self.args)
[docs]class SeqMul(SeqExprOp):
"""Represents term-wise multiplication of sequences.
Handles multiplication of sequences only. For multiplication
with other objects see :func:`SeqBase.coeff_mul`.
Rules:
* The interval on which sequence is defined is the intersection
of respective intervals of sequences.
* Anything \* :class:`EmptySequence` returns :class:`EmptySequence`.
* Other rules are defined in ``_mul`` methods of sequence classes.
Examples
========
>>> from sympy import S, oo, SeqMul, SeqPer, SeqFormula
>>> from sympy.abc import n
>>> SeqMul(SeqPer((1, 2), (n, 0, oo)), S.EmptySequence)
EmptySequence()
>>> SeqMul(SeqPer((1, 2), (n, 0, 5)), SeqPer((1, 2), (n, 6, 10)))
EmptySequence()
>>> SeqMul(SeqPer((1, 2), (n, 0, oo)), SeqFormula(n**2))
SeqMul(SeqFormula(n**2, (n, 0, oo)), SeqPer((1, 2), (n, 0, oo)))
>>> SeqMul(SeqFormula(n**3), SeqFormula(n**2))
SeqFormula(n**5, (n, 0, oo))
See Also
========
sympy.series.sequences.SeqAdd
"""
def __new__(cls, *args, **kwargs):
evaluate = kwargs.get('evaluate', global_evaluate[0])
# flatten inputs
args = list(args)
# adapted from sympy.sets.sets.Union
def _flatten(arg):
if isinstance(arg, SeqBase):
if isinstance(arg, SeqMul):
return sum(map(_flatten, arg.args), [])
else:
return [arg]
elif iterable(arg):
return sum(map(_flatten, arg), [])
raise TypeError("Input must be Sequences or "
" iterables of Sequences")
args = _flatten(args)
# Multiplication of no sequences is EmptySequence
if not args:
return S.EmptySequence
if Intersection(a.interval for a in args) is S.EmptySet:
return S.EmptySequence
# reduce using known rules
if evaluate:
return SeqMul.reduce(args)
args = list(ordered(args, SeqBase._start_key))
return Basic.__new__(cls, *args)
@staticmethod
[docs] def reduce(args):
"""Simplify a :class:`SeqMul` using known rules.
Iterates through all pairs and ask the constituent
sequences if they can simplify themselves with any other constituent.
Notes
=====
adapted from ``Union.reduce``
"""
new_args = True
while(new_args):
for id1, s in enumerate(args):
new_args = False
for id2, t in enumerate(args):
if id1 == id2:
continue
new_seq = s._mul(t)
# This returns None if s does not know how to multiply
# with t. Returns the newly multiplied sequence otherwise
if new_seq is not None:
new_args = [a for a in args if a not in (s, t)]
new_args.append(new_seq)
break
if new_args:
args = new_args
break
if len(args) == 1:
return args.pop()
else:
return SeqMul(args, evaluate=False)
def _eval_coeff(self, pt):
"""multiplies the coefficients of all the sequences at point pt"""
val = 1
for a in self.args:
val *= a.coeff(pt)
return val


call: xxx-xxxxxxxx Address: QLU University of Technology, Jinan City, Shandong Province (Shandong Academy of Sciences)


[gecode-users] Analysing search performance
Lars Otten
ottenl at student.chalmers.se
Tue Feb 28 00:29:23 CET 2006
Hello everyone,
I've modeled the basic parts of the Tail Assignment Problem [1] in Gecode,
specifically by implementing two custom constraints inverse(x,y) and
tunneling(x,y,z) -- x,y,z being variable arrays of the same length.
I also have access to some of the example instances the author of [1] used
and have tried them on my self-extended Gecode. Unfortunately the running
times for finding a single solution is orders of magnitude worse than what
was accomplished in [1]. The original system is admittedly hand-tailored to
the problem, but then again I've only implemented the basic model, which
lacks some of the more complicated custom constraints the solution in [1]
takes into account.
Hence I'd like to make some kind of analysis of where the depth first search
in Gecode spends it time, to find potential bottlenecks. For a start it
would e.g. be nice to see how much time is spent propagating my custom
constraints (or all constraints in general).
Is there any way to do this in Gecode? I realize this might also be a more
general C++ question, in this case I'd appreciate any pointers on where to
look for more info...
Thanks in advance,
/Lars
[1] http://publications.lib.chalmers.se/records/full_record/6207.html
More information about the gecode-users
mailing list


Across: 5. Quiet morning for her (3) 8. Aggravate former champion outside Queen's Club (10) 9. Wary about being wrong (4) 10. Mat seen in frugal household (3) 11. I return with supporters around certain windows (10) 14. Uncovered universal delight initially in Tyneside (4) 15. Dai's girl? (3) 16.  (10) 20. Very small part is c-cool! (4) 21. Shown up by cheap university accommodation? (7) 22. Russian fighter's tirade to traveller (7) 24. Fiery saint chopped up mole! (4) 25. Signs found in car diagrams? (10) 29. Tear with rake (3) 30. Point to soldiers at junction (4) 31. Confine friend inside (10) 35. Conditions I find squalid, initially (3) 36. Sounds like a single Mexican (4) 37. Soviet line broadcast in part of media (10) 38. Boy found in August (3) Down: 1. Test originally scheduled for the morning? (4) 2. Mark and Bob Ford (4) 3. Boats around Sark (4) 4. Countryman in disturbance on strike (7) 5. Sister runs about in first half of game, refusing to give up (10) 6. Nag Ma about incomplete road fund document (5 5) 7. Steeplejack had fen bird confused! (4 6) 11. Great King George goes off to have a meal (3) 12. Smell a snake (3) 13. Boxer is the best at fifty-one! (3) 17. Troublesome puzzle about the Spanish oil spill (10) 18. Twisting torn digits badly! (10) 19. Knock out believers and doctors! (10) 23. Majestic gallery in secret setting (7) 26. Fled north after artist (3) 27. Dad left friend (3) 28. Agent was quiet during second year (3) 32. Vicar's cycles? (4) 33. And the French turn round thus (4) 34. Hammer may be returned with stolen goods (4)


Each of these demonstrate modal self-control vs call-site control.
Emulate alert()
Emulate confirm()
Emulate prompt()
Each of these demonstrate the chaining of modals.
Confirm + Alert
Item list + editor Items are: {{$ctrl.itemString()}}


|
STM8S Standard Peripheral Libary
2.2.0
|
Card Identification Data: CID Register. More...
#include <stm8s_eval_spi_sd.h>
Data Fields | |
| __IO uint8_t | ManufacturerID |
| __IO uint16_t | OEM_AppliID |
| __IO uint32_t | ProdName1 |
| __IO uint8_t | ProdName2 |
| __IO uint8_t | ProdRev |
| __IO uint32_t | ProdSN |
| __IO uint8_t | Reserved1 |
| __IO uint16_t | ManufactDate |
| __IO uint8_t | CID_CRC |
| __IO uint8_t | Reserved2 |
Card Identification Data: CID Register.
Definition at line 137 of file stm8s_eval_spi_sd.h.
| __IO uint8_t CID_CRC |
CID CRC
Definition at line 147 of file stm8s_eval_spi_sd.h.
| __IO uint16_t ManufactDate |
Manufacturing Date
Definition at line 146 of file stm8s_eval_spi_sd.h.
| __IO uint8_t ManufacturerID |
ManufacturerID
Definition at line 139 of file stm8s_eval_spi_sd.h.
| __IO uint16_t OEM_AppliID |
OEM/Application ID
Definition at line 140 of file stm8s_eval_spi_sd.h.
Product Name part1
Definition at line 141 of file stm8s_eval_spi_sd.h.
| __IO uint8_t ProdName2 |
Product Name part2
Definition at line 142 of file stm8s_eval_spi_sd.h.
| __IO uint8_t ProdRev |
Product Revision
Definition at line 143 of file stm8s_eval_spi_sd.h.
Product Serial Number
Definition at line 144 of file stm8s_eval_spi_sd.h.
| __IO uint8_t Reserved1 |
Reserved1
Definition at line 145 of file stm8s_eval_spi_sd.h.
| __IO uint8_t Reserved2 |
always 1
Definition at line 148 of file stm8s_eval_spi_sd.h.


Caradine:
Good to see you! Thank you for helping us. We've been trying to find you since we received this letter from Virgil, addressed to you.
"Let me see the letter."


Wednesday, April 1, 2019
Last visit: 9:10am, TuesdayApril 2, 2019
You can view accounts of users below.


Plugins
Installed
Installed on:
Off
On
X
Available
made by {{::plugin.madeBy}}
file_download
Download


Albert04 Great stuff you guys always make my days
DKemwa Why didnt I hear of this before, you guys are a bomb
Farida2 Is there a mobile application for this?
OmoNdizi Where do you get your stuff my people?
Salwa How do you make holy water?  No eye deer


{% if site.layout == 'stacked' %} {% assign metadata_styles = 'd-md-inline-block mr-3' %} {% else %} {% assign metadata_styles = 'd-flex flex-items-center mb-3' %} {% endif %}
Hi, I'm Nikhil. I'm a software and infrastructure engineer at $CYBERSECURITY_FIRM
. I have previously
worked at $TRAVEL_TECH_COMPANY
and $DATABASE_TECH_COMPANY
. I also do freelance work: I set
up and automate lightweight software stacks for small companies. Feel free to fill in my
environment variables with some DuckDuckGo searches. For job opportunities and business inquiries, please
email me at nikhilphatak1
AT gmail
DOT com
.
At work I write a lot of Scala
, Java
, Ruby/Rails
, Bash
, and
Python
.
At past jobs and recreationally, I have developed applications using C
, C++
, Go
,
Rust
, and Node.js
.
I am fluent in using infrastructure automation tools like Terraform
, Docker
,
Jenkins
, and Spinnaker
.
On a daily basis I work with technologies like Kafka
, Redis
, NGINX
,
ELK
, MySQL
, PostgreSQL
, Debian
and Ubuntu Linux
, and cloud providers AWS
and Azure
.
This site is intended to be lightweight. It doesn't require javascript to run. I may add links to other parts of my web presence, but at the moment I have not done so. I'm sure you'll be able to find me either way.


labeled
by Jane Sandberg at 2023-02-09 19:15:55.referenced
by Peter Green at 2023-02-09 20:11:47.merged
by Peter Green at 2023-02-09 20:11:47.closed
by Peter Green at 2023-02-09 20:11:47.renamed
by Jane Sandberg at 2023-02-09 18:15:13.referenced
by Jane Sandberg at 2023-02-09 21:40:55.merged
by Jane Sandberg at 2023-02-09 21:40:55.closed
by Jane Sandberg at 2023-02-09 21:40:55.head_ref_deleted
by Jane Sandberg at 2023-02-09 21:40:57.head_ref_force_pushed
by Christina Chortaria at 2023-02-09 20:37:14.There was an outstanding request to have these cPanel accounts removed, and I have just confirmed that these may be safely deleted (they have no relationship to the current ITIMS hosts used for oawaiver deployments).
Hi Bess,
It looks like something may have changed on your end. Here is the error message we get when we try to connect:
Check with your IT Team. Once they think they have it fixed, let me know and we will run another test and then redeliver the dissertations you need. :)
Sincerely, Carl
assigned
by James R. Griffin III at 2023-02-09 15:04:42.labeled
by James R. Griffin III at 2023-02-09 15:04:59.assigned
by James R. Griffin III at 2023-02-09 18:33:30.assigned
by James R. Griffin III at 2023-02-09 18:33:41.closed
by James R. Griffin III at 2023-02-09 17:00:23.ready_for_review
by None at 2023-02-09 14:03:41.labeled
by None at 2023-02-09 14:09:08.labeled
by None at 2023-02-09 14:09:08.labeled
by None at 2023-02-09 14:09:08.assigned
by None at 2023-02-09 15:47:16.labeled
by None at 2023-02-09 20:28:08.labeled
by None at 2023-02-09 20:28:08.labeled
by None at 2023-02-09 20:28:08.head_ref_force_pushed
by None at 2023-02-09 20:08:43.ready_for_review
by None at 2023-02-09 20:28:39.ready_for_review
by Thanya Begum at 2023-02-09 21:38:36.deployed
by None at 2023-02-09 17:31:49.ready_for_review
by Eliot Jordan at 2023-02-09 18:06:26.convert_to_draft
by Eliot Jordan at 2023-02-09 21:43:07.referenced
by Trey Pendragon at 2023-02-09 23:55:23.merged
by Trey Pendragon at 2023-02-09 23:55:23.closed
by Trey Pendragon at 2023-02-09 23:55:23.head_ref_deleted
by Trey Pendragon at 2023-02-09 23:55:25.referenced
by None at 2023-02-09 15:22:58.closed
by Trey Pendragon at 2023-02-09 23:55:25.deployed
by None at 2023-02-08 22:42:23.referenced
by Jane Sandberg at 2023-02-08 22:45:38.merged
by Jane Sandberg at 2023-02-08 22:45:38.closed
by Jane Sandberg at 2023-02-08 22:45:38.head_ref_deleted
by Jane Sandberg at 2023-02-08 22:45:39.closed
by Jane Sandberg at 2023-02-08 22:45:39.head_ref_force_pushed
by Jane Sandberg at 2023-02-08 22:58:58.referenced
by Christina Chortaria at 2023-02-09 00:23:30.merged
by Christina Chortaria at 2023-02-09 00:23:30.closed
by Christina Chortaria at 2023-02-09 00:23:31.head_ref_deleted
by Christina Chortaria at 2023-02-09 00:23:32.closed
by Christina Chortaria at 2023-02-09 00:23:32.labeled
by Kevin Reiss at 2023-02-09 15:12:02.referenced
by Christina Chortaria at 2023-02-09 17:55:29.merged
by Christina Chortaria at 2023-02-09 17:55:29.closed
by Christina Chortaria at 2023-02-09 17:55:30.head_ref_deleted
by Christina Chortaria at 2023-02-09 17:55:31.closed
by Christina Chortaria at 2023-02-09 17:55:31.referenced
by Christina Chortaria at 2023-02-09 17:42:50.merged
by Christina Chortaria at 2023-02-09 17:42:50.closed
by Christina Chortaria at 2023-02-09 17:42:50.head_ref_deleted
by Christina Chortaria at 2023-02-09 17:42:51.assigned
by Jane Sandberg at 2023-02-09 17:50:44.renamed
by Christina Chortaria at 2023-02-09 19:16:46.renamed
by Christina Chortaria at 2023-02-09 19:17:47.labeled
by Jane Sandberg at 2023-02-09 19:19:28.labeled
by Jane Sandberg at 2023-02-09 19:19:28.renamed
by Jane Sandberg at 2023-02-09 19:20:11.deployed
by None at 2023-02-09 20:49:17.referenced
by Jane Sandberg at 2023-02-09 20:50:30.merged
by Jane Sandberg at 2023-02-09 20:50:30.closed
by Jane Sandberg at 2023-02-09 20:50:31.head_ref_deleted
by Jane Sandberg at 2023-02-09 20:50:32.referenced
by Jane Sandberg at 2023-02-09 20:50:58.merged
by Jane Sandberg at 2023-02-09 20:50:59.closed
by Jane Sandberg at 2023-02-09 20:50:59.head_ref_deleted
by Jane Sandberg at 2023-02-09 20:51:00.review_requested
by Jane Sandberg at 2023-02-09 20:47:26.referenced
by Christina Chortaria at 2023-02-09 20:51:29.merged
by Christina Chortaria at 2023-02-09 20:51:29.closed
by Christina Chortaria at 2023-02-09 20:51:29.head_ref_deleted
by Christina Chortaria at 2023-02-09 20:51:30.referenced
by Christina Chortaria at 2023-02-09 20:54:27.merged
by Christina Chortaria at 2023-02-09 20:54:27.closed
by Christina Chortaria at 2023-02-09 20:54:27.head_ref_deleted
by Christina Chortaria at 2023-02-09 20:54:28.referenced
by Christina Chortaria at 2023-02-09 21:26:33.merged
by Christina Chortaria at 2023-02-09 21:26:33.closed
by Christina Chortaria at 2023-02-09 21:26:34.head_ref_deleted
by Christina Chortaria at 2023-02-09 21:26:35.Note for when we do an upgrade:
After upgrade, update the second 1024 in setenv.sh file to 4096 (line76):
cd /opt/atlassian/confluence/bin opt/atlassian/confluence/bin$ sudo vi setenv.sh ```
CATALINAOPTS="-Xms1024m -Xmx4096m ${CATALINAOPTS}" ``` /opt/atlassian/confluence/bin$ sudo systemctl restart confluence
Coverage: 94.538%. Remained the same when pulling 5634c50b785f548c2f9df8b4e6840a0dc9b9dcbf on include-eslint-circleci into 0528c1d2ac991fc7ed87bf82e72e7af802d7ccc6 on main.
head_ref_force_pushed
by Christina Chortaria at 2023-02-08 22:44:03.review_requested
by Christina Chortaria at 2023-02-08 22:44:59.referenced
by Christina Chortaria at 2023-02-08 23:15:03.merged
by Christina Chortaria at 2023-02-08 23:15:03.closed
by Christina Chortaria at 2023-02-08 23:15:03.head_ref_deleted
by Christina Chortaria at 2023-02-08 23:15:04.labeled
by Christina Chortaria at 2023-02-08 22:25:19.assigned
by Christina Chortaria at 2023-02-08 22:25:19.closed
by Christina Chortaria at 2023-02-08 23:15:04.Per @kevinreiss we don't need to change anything in our code to handle this case. This was a special case the book is lost. Items in this state cannot have a status.
closed
by Christina Chortaria at 2023-02-09 13:51:08.mentioned
by Kevin Reiss at 2023-02-09 13:51:09.subscribed
by Kevin Reiss at 2023-02-09 13:51:09.labeled
by Kevin Reiss at 2023-02-09 15:13:21.Coverage: 94.465% (-0.07%) from 94.538% when pulling f3bbc5c1d6ad98b4c8269d72658fb115fe750d60 on i3331harmfullanguage_form into 0528c1d2ac991fc7ed87bf82e72e7af802d7ccc6 on main.
review_requested
by Max Kadel at 2023-02-09 15:09:19.deployed
by None at 2023-02-09 15:10:03.referenced
by Jane Sandberg at 2023-02-09 16:26:02.merged
by Jane Sandberg at 2023-02-09 16:26:02.closed
by Jane Sandberg at 2023-02-09 16:26:02.head_ref_deleted
by Jane Sandberg at 2023-02-09 16:26:04.closed
by Jane Sandberg at 2023-02-09 16:26:04.referenced
by Jane Sandberg at 2023-02-09 16:26:04.Coverage: 94.538%. Remained the same when pulling 09fe91b93dc7cabeb305c613b44fc153c7fe00bf on circleci-jest-tests into b3f9306ee2fa7f83084bd838b225b27db18fc22c on main.
referenced
by Jane Sandberg at 2023-02-09 16:26:59.merged
by Jane Sandberg at 2023-02-09 16:26:59.closed
by Jane Sandberg at 2023-02-09 16:26:59.head_ref_deleted
by Jane Sandberg at 2023-02-09 16:27:01.labeled
by Jane Sandberg at 2023-02-08 22:51:45.assigned
by Christina Chortaria at 2023-02-09 15:22:55.closed
by Jane Sandberg at 2023-02-09 16:27:01.Coverage: 94.482% (-0.06%) from 94.538% when pulling 0c3c676cda02f8b3fde2214d24c774bcdf0269fc on 3330-suggest-correction-form into b3f9306ee2fa7f83084bd838b225b27db18fc22c on main.
assigned
by Jane Sandberg at 2023-02-09 19:40:21.assigned
by Christina Chortaria at 2023-02-09 19:40:22.labeled
by Jane Sandberg at 2023-02-09 21:12:48.Coverage: 94.465%. Remained the same when pulling 3341e8de78c67678fc967e2c7b309fda718497fe on update-template-accessibility into 73d2a11dc30d58cfecd9932badab2eb60ce355da on main.
Coverage: 94.465%. Remained the same when pulling 3341e8de78c67678fc967e2c7b309fda718497fe on update-template-accessibility into 73d2a11dc30d58cfecd9932badab2eb60ce355da on main.
referenced
by Jane Sandberg at 2023-02-09 21:12:59.merged
by Jane Sandberg at 2023-02-09 21:12:59.closed
by Jane Sandberg at 2023-02-09 21:12:59.head_ref_deleted
by Jane Sandberg at 2023-02-09 21:13:00.Spoke with vendor. They will update the label and fix the aria issue. They will also update the display to do more to highlight the pushpin for the shelf location at the current display size and zoom level it can be hard to pick that up quickly. They asked that we add two new data attributes that will help with the display of the labels on the modal in addition to data-map-location. We should add a data attribute containing the Library Name and another containing the human readable shelf label.
We decided this approach would add complications at this time. I'm closing this ticket, but we can revisit later if appropriate.
closed
by Hannah H at 2023-02-09 14:36:42.head_ref_force_pushed
by None at 2023-02-09 02:08:59.referenced
by Bess Sadler at 2023-02-09 18:08:40.merged
by Bess Sadler at 2023-02-09 18:08:40.closed
by Bess Sadler at 2023-02-09 18:08:40.head_ref_deleted
by Bess Sadler at 2023-02-09 18:08:41.This will have merge conflicts with - #965
and I'd rather not block that. Easier to redo this post merge than sort out the conflicts. Closing.
closed
by Chuck McCallum at 2023-02-09 18:27:07.head_ref_deleted
by Chuck McCallum at 2023-02-09 18:27:12.head_ref_force_pushed
by None at 2023-02-09 18:42:32.ready_for_review
by None at 2023-02-09 19:04:31.referenced
by Chuck McCallum at 2023-02-09 19:11:17.merged
by Chuck McCallum at 2023-02-09 19:11:17.closed
by Chuck McCallum at 2023-02-09 19:11:17.head_ref_deleted
by Chuck McCallum at 2023-02-09 19:11:19.labeled
by None at 2023-02-09 20:48:35.head_ref_force_pushed
by Bess Sadler at 2023-02-09 21:08:52.ready_for_review
by Bess Sadler at 2023-02-09 21:09:12.renamed
by Bess Sadler at 2023-02-09 21:09:42.convert_to_draft
by Bess Sadler at 2023-02-09 21:11:05.head_ref_force_pushed
by Bess Sadler at 2023-02-09 21:14:26.renamed
by Bess Sadler at 2023-02-09 21:14:53.PR message had typo, so this issue wasn't linked, but it is fixed with - #970
closed
by Chuck McCallum at 2023-02-09 21:21:09.ready_for_review
by Chuck McCallum at 2023-02-09 22:02:26.@carolyncole we are down to only two failing tests in work_upload_edit_service_spec.rb
. I fixed two of them today, hopefully the last two are easier.
mentioned
by None at 2023-02-09 23:10:15.subscribed
by None at 2023-02-09 23:10:15.Tested in the Ansible Open House.
referenced
by Alicia Cozine at 2023-02-08 22:03:31.merged
by Alicia Cozine at 2023-02-08 22:03:31.closed
by Alicia Cozine at 2023-02-08 22:03:31.head_ref_deleted
by Alicia Cozine at 2023-02-08 22:03:33.closed
by Alicia Cozine at 2023-02-08 22:03:33.Also an issue for the Princeton and Slavery role.
Known roles where this is an issue libwww special_collections pas recap
labeled
by Kevin Reiss at 2023-02-09 03:06:29.renamed
by Kevin Reiss at 2023-02-09 16:27:42.renamed
by Kevin Reiss at 2023-02-09 16:27:50.It looks like the gem has already been installed, and the remote console works. Maybe this issue was opened on the wrong project?
assigned
by None at 2023-02-09 14:08:25.closed
by None at 2023-02-09 15:46:28.labeled
by Jane Sandberg at 2023-02-09 19:21:37.labeled
by Jane Sandberg at 2023-02-09 19:21:37.Spoke with Sara, we are going to close this and revisit this question again later if it comes up.
closed
by Kevin Reiss at 2023-02-09 19:47:44.renamed
by Chuck McCallum at 2023-02-09 15:03:44.ready_for_review
by Chuck McCallum at 2023-02-09 15:02:23.convert_to_draft
by Chuck McCallum at 2023-02-09 16:33:47.ready_for_review
by Chuck McCallum at 2023-02-09 17:35:46.referenced
by Francis Kayiwa at 2023-02-09 15:35:35.merged
by Francis Kayiwa at 2023-02-09 15:35:35.closed
by Francis Kayiwa at 2023-02-09 15:35:35.head_ref_deleted
by Francis Kayiwa at 2023-02-09 15:35:37.head_ref_force_pushed
by Francis Kayiwa at 2023-02-09 15:53:12.head_ref_force_pushed
by Francis Kayiwa at 2023-02-09 15:57:49.head_ref_force_pushed
by Francis Kayiwa at 2023-02-09 16:02:55.head_ref_force_pushed
by Francis Kayiwa at 2023-02-09 16:11:49.


ORSON WELLES: THE ONE-MAN BAND (1996) Reviewed by Jerry Saravia August 1st, 2001
There are directors who never get noticed and those who have one major hit only to have a slew of flops follow them. Then there are directors who have one major masterpiece and a host of films that follow, never quite matching the brilliance of their initial masterwork. Orson Welles falls in this category, though I have found that "Touch of Evil," "The Trial" and "F For Fake" are brilliant films that arguably surpass his most famous film, "Citizen Kane." This wonderful documentary, "Orson Welles: The One-Man Band," traces Welles's last twenty years of his life where he desperately tried to find financing to complete his films only to be turned down again and again.
Most people think that there was not much to Welles beyond "Citizen Kane" and some other studio efforts, not to mention his slew of acting jobs left and right. After "Chimes at Midnight" and "F For Fake," it is assumed that Welles was a has-been left to his acting in any and every film, narrating documentaries, and performing in wine commercials. He was a genius who was no longer the shining star of the past. This is, of course, not true at all. Welles was very busy and never got dismayed from lack of funds. He would finance some of his projects with money he obtained from acting. According to his partner and collaborator, Oja Kodar, Welles would travel everywhere with his 16mm camera and an editing table. He was filled with ideas and wanted to explore them all.
Some of his projects include the unfinished Hollywood satire, "The Other Side of the Wind," "The Merchant of Venice," "The Deep" and "The Dreamers." In some cases, the incomplete status of some of these films was a result of either poor business entanglements or financiers who feared Welles's lack of wanting to finish anything, thus based on his reputation. In the case of "Other Side of the Wind," a relative of the Shah of Iran helped to finance the project and then pulled out holding the footage of Welles's 3 hour opus hostage. "The Merchant of Venice" was to be made for television and the film was actually completed but the negative was stolen! "The Deep" is based on a novel by Charles Williams III, which later became the basis for "Dead Calm" starring Nicole Kidman. Film was almost completed until the main lead, Laurence Harvey, died. "The Dreamers" was a project that began in the early 1980's and was shot in his own L.A. home, but financing was harder to come by at that po! int. A "King Lear" project was p lanned but no one was interested.
Some other footage shown is interesting though whether the films themselves were ever completed remains a mystery. A short clip about tailors measuring Welles's girth is good for a few laughs. An even funnier clip is shown of Welles playing a lord of the manor interviewed by a bearded Welles! There is also a seven-minute long trailer for "F For Fake" that makes most trailers today look positively unimaginative in comparison. Powerful film fragments of Welles performing a one-man show of "Moby Dick" sans makeup or costuming show what a grand, majestic actor he was, and what an enthralling voice he had! There is also a clip from "Swinging London" which shows typical Welles impersonations of a Chinese ticket-taker, a housewife, a police inspector and a one-man band player.
Oja Kodar held all these fragments and incompleted films in a storage room until one day she decided to release them as part of this documentary. What we witness is a fallen giant who had gone from a Hollywood director to an independent film artist who never got the financing he so desired and deserved (his last Hollywood film as a director was 1958's "Touch of Evil"). Director Vassili Silovic, however, fails to make us understand why Welles had so much trouble. One possible reason is that Welles languished for an eternity making his films. According to author Joseph McBride's book on Welles, "The Other Side of the Wind" was a project that lasted from 1970 to 1976. In this film, there is a scene where Welles is interviewed by a college class. He tells them that his dormant project from the 50's, "Don Quixote," will be finished in his own time, just like an author works on an unfinished novel. But why was the negative of "Merchant of Venice" stolen? Did Welles perhaps forget ! to pay the lab bill, as did Ed W ood with "Bride of the Monster"? Or was he overextending his finances? And how does one explain "F For Fake" and "Filming Othello," both from the 70's and both of them completed?
The main treat of "Orson Welles: The One-Man Band" is watching what the master was up to in that 20-year stretch. Clips from "Other Side of the Wind" prove to be extraordinary and way ahead of its time. One scene shows John Huston as a film director greeted by the press and there are dozens of fast cuts and jump cuts from different angles that anticipate MTV by more than a decade! Another clip shown from "Wind" is a sex scene in a car with Oja Kodar that is as erotic as anything I've ever seen. Curiously, clips from "The Deep" are shown minus a soundtrack. We only hear Welles's booming voice explaining the action that is occurring on screen. There are also clips of his magic shows with the Muppets, his crowd-pleasing acceptance of his Lifetime Achievement Award from the very industry that shunned him, and so much more.
"One-Man Band" is plain evidence of a man who had unfulfilled his legacy of a legendary film director - for his detractors, this film will prove to be quite illuminating. It is sad and upsetting to watch what might have been. I heartily recommend Frank Brady's book, "Citizen Welles," which covers Welles's whole career, including his last few years where he could not get financial help from Steven Spielberg and the inability to procure a Hollywood star like Jack Nicholson for his completed screenplay, "The Big Brass Ring." It will serve to amplify the sadness of a man who remained obsessive and forthright, determined to keep making films at any cost.
For more reviews, check out JERRY AT THE MOVIES at http://moviething.com/members/movies/faust/JATMindex.shtml
E-mail me with any questions, comments or general complaints at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>========== X-RAMR-ID: 29016 X-Language: en X-RT-SourceID: 875 X-RT-AuthorID: 1314
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


Date - 24th of January 2016
Step 1: Sit back and Relax
Step 2: Close your eyes
Step 3: Rewind your day, last week or journey of your life
Just look at yourself.
The journey of my life- my work, my relationships, my family, my friends, my social responsibilities. As I play my every roles, fulfil my every responsibility perform y every karma. Let me look at my state of being.
How I feel?
What is it?
Who is it?
That disturbs my state of mind. I am peaceful, calm, relaxed and very happy. And then what is it that shifts me from my originality?
What is it that causes me to create slight irritation, aggression and even haterate sometimes. - Hurt, fear, rejection, jealousy non of these motions look me feel nice. But, what is it that causes me to feel this?
I want to be happy and I want to be happy always.
Do I have a choice?
What is it that shifts me from my state of stability, happiness and peace?
Let me just check today, half the day pass. What was the reason, what was the situation that stimulus and caused my mind to shift?
– OM SHANTI –
Thank you BK Sister Shivani.


The Sage Repository on GitHub#
The center of Sage development is the SageMath organization on GitHub, which consists of many repositories related with Sage. The most important one among them is of course the Sage repository, which we call “the Sage repo” for short.
Obtaining a GitHub account#
To share your work on Sage, you need a GitHub account. If you do not have one yet, choose a username and create an account. In the following, we assume your username “alice”. So you always read your own username if you see “alice”.
Using the GitHub CLI#
GitHub provides a command-line interface, the GitHub CLI, that can be used
instead of the web interface. The central component of the GitHub CLI is the
gh
command that you can use in your terminal.
Installation#
The page github_cli: Command-line interface for GitHub documents how to install the gh
command for
your platform. Or see GitHub CLI from GitHub.
Configuration#
You have to authenticate to your GitHub account to allow gh
command to
interact with GitHub. Typically the authorization proceeds as follows:
[alice@localhost sage]$ gh auth login
? What is your preferred protocol for Git operations? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: 3DA8-5ADA
Press Enter to open github.com in your browser...
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as sage
where a web browser is used to enter credentials. You can also use an authentication token instead, in which case you must first generate a Personal Access Token here.
Next set the default repo for the gh
command:
[alice@localhost sage]$ gh repo set-default sagemath/sage
and check:
[alice@localhost sage]$ gh repo view
sagemath/sage
...
which will show the default repo along with its readme, which is quite long.
Linking Git to your GitHub account#
In order for your Git to work with GitHub, your GitHub account needs to be linked with your Git. No action is needed if you have already contributed to any other project on GitHub and set up Git credentials or SSH keys for this.
The above dialogue from gh auth login
linked your Git to GitHub by HTTPS
protocol using your GitHub credentials. Alternatively you may like to use
popular Git Credential Manager which stores your
credentials natively to your platform. For more information, see Caching your
GitHub credentials in Git.
If you prefer SSH to HTTPS for authenticating Git to GitHub, then you follow
Git authentication through SSH to generate an SSH keypair and add the SSH public key to
your GitHub account. A simple way to upload the public key is to choose SSH
protocol for Git operations in the dialogue from gh auth login
command
above. For more details, see Connecting to GitHub with SSH.
We assume HTTPS protocol in the rest of this guide.
Forking the Sage repository#
The first step is to create your personal fork of the Sage repo on GitHub. After logging in to your GitHub account, visit the Sage repo https://github.com/sagemath/sage, and simply click “Fork” on the Sage repo. Then your fork of the Sage repo is created at https://github.com/alice/sage.

Resolving deltas: 100% (725438/725438), done.
Updating files: 100% (9936/9936), done.
[alice@localhost ~]$ cd sage
[alice@localhost sage]$ git remote -v
origin https://github.com/alice/sage.git (fetch)
origin https://github.com/alice/sage.git (push)
If you already have a local Git repo and only want to link your fork as origin
remote, then do:
[alice@localhost sage]$ git remote add origin https://github.com/alice/sage.git
[alice@localhost sage]$ git remote -v
origin https://github.com/alice/sage.git (fetch)
origin https://github.com/alice/sage.git (push)
[alice@localhost sage]$ git fetch origin
remote: Enumerating objects: 1136, done.
remote: Counting objects: 100% (1084/1084), done.
remote: Compressing objects: 100% (308/308), done.
remote: Total 1136 (delta 825), reused 982 (delta 776), pack-reused 52
Receiving objects: 100% (1136/1136), 2.62 MiB | 5.30 MiB/s, done.
Resolving deltas: 100% (838/838), completed with 145 local objects.
From https://github.com/alice/sage
* [new branch] develop -> origin/develop
You also add the Sage repo sagemath/sage
as your remote upstream
:
[alice@localhost sage]$ git remote add upstream https://github.com/sagemath/sage.git
[alice@localhost sage]$ git remote -v
origin https://github.com/alice/sage.git (fetch)
origin https://github.com/alice/sage.git (push)
upstream https://github.com/sagemath/sage.git (fetch)
upstream https://github.com/sagemath/sage.git (push)
Note
If you linked your Git to GitHub by SSH protocol, then do the following instead to set up remotes:
[alice@localhost sage]$ git remote add origin git@github.com:alice/sage.git
[alice@localhost sage]$ git remote add upstream git@github.com:sagemath/sage.git
[alice@localhost sage]$ git remote -v
origin git@github.com:alice/sage.git (fetch)
origin git@github.com:alice/sage.git (push)
upstream git@github.com:sagemath/sage.git (fetch)
upstream git@github.com:sagemath/sage.git (push)
To prevent accidental pushes to upstream
(instead of origin
), you may want to disable it by running:
[alice@localhost sage]$ git remote set-url --push upstream DISABLE
Of course, you can give arbitrary names to your Git remotes, but origin
and
upstream
are the established defaults, which will make it easier to use tools
such as the GitHub CLI.
Reporting bugs#
If you think you have found a bug in Sage, here is the procedure:
Search through our Google groups sage-devel, sage-support for postings related to your possible bug (it may have been fixed/reported already). You also search the GitHub issues to see if anyone else has already opened an issue about your bug.
If you do not find anything but you are not sure that you have found a bug, ask about it on sage-devel.
If you are sure that you have found a bug, then create on GitHub a new issue about the bug.
A bug report should contain:
An explicit and reproducible example illustrating your bug (and/or the steps required to reproduce the buggy behavior). It also helps to describe what behaviour is expected.
The version of Sage you run, as well as the version of the optional packages that may be involved in the bug.
If relevant, describe your operating system as accurately as you can and the architecture of your CPU (32 bit, 64 bit, …).
Follow Opening an issue for further guide. Thank you in advance for reporting bugs to improve Sage!
Planning an enhancement#
In addition to bug reports, you should also open an issue if you have some new code or an idea that makes Sage better. If you have a feature request, start a discussion on sage-devel first, and then if there seems to be a general agreement that you have a good idea, open an issue describing the idea.
Before opening a new issue, consider the following points:
Make sure that nobody else has opened an issue (or a PR) about the same or closely related issue. Search through the existing issues and PRs with some key words.
It is much better to open several specific issues than one that is very broad. Indeed, a single issue which deals with lots of different issues can be quite problematic, and should be avoided.
Be precise: If foo does not work on macOS but is fine on Linux, mention that in the title. Use the keyword option so that searches will pick up the issue.
The problem described in the issue must be solvable. For example, it would be silly to open an issue whose purpose was “Make Sage the best mathematical software in the world”. There is no metric to measure this properly and it is highly subjective.
If appropriate, provide URLs to background information or sage-devel conversation relevant to the issue you are reporting.
Opening an issue#
Whether it’s reporting a bug or planning an enhancement, issue should be opened on our Sage repo sagemath/sage on GitHub.
Think of an apt title. People scan through the titles of issues to decide which ones to look into further. So write a title that concisely describes what the issue is about.
Describe the issue in detail in the issue body. What is the issue? How can we solve the issue? Add links to relevant issues/PRs, and other resources.
You may use GitHub mention
@USERNAME
to get attention from the people who would be interested in the issue or has expertise in this issue.Add appropriate labels to the created issue:
Type labels with prefix
t:
such ast: bug
,t: enhancement
,t: feature
,t: performance
,t: refactoring
,t: tests
Component labels with prefix
c:
such asc: basic arithmetic
,c: linear algebra
,c: geometry
, etc.Priority labels with prefix
p:
such asp: trivial / 5
,p: minor / 4
,p: major / 3
,p: critical / 2
, andp: blocker / 1
If the issue is not expected to be solved in the near future, you may add
wishlist item
label.
Creating a Pull Request#
If you worked on an issue, and prepared a fix for a bug or wrote code for enhancing Sage, then you create a PR on the Sage repo sagemath/sage.
In addition to what were said about opening an issue, the following applies:
The title should concisely describe what the PR does. If the PR solves an issue, describe briefly what the PR solves (do not simply put the issue number in the title).
Explain what the PR solves in detail in the body. If the PR solves an issue, you may mention the issue here.
Add type, component, and priority labels. If this PR solves an existing issue, please duplicate the labels of the issue to this PR.
Dependencies: Use the phrase
- Depends on
, followed by the issue or PR reference. Repeat this in separate lines if there is more than one dependency. This format is understood by various dependency managers.
If you are working on a PR and the PR is not yet quite ready for review, then open the PR as draft.
The status of a PR#
If a PR is in the state of draft, the review process does not start. Otherwise,
review process will start for the PR as soon as a reviewer gets interested with
the PR, and the status of the PR will be indicated by status labels with
prefix s:
.
s: needs review
: The code is ready to be peer-reviewed. If the code is not yours, then you can review it. See Reviewing Code.s: needs work
: Something needs to be changed in the code. The reason should appear in the comments.s: needs info
: The author of the PR or someone else should answer to a question or provide information to proceed the review process.s: positive review
: The PR has been reviewed positively, and the release manager will merge it to thedevelop
branch of the Sage repo in due time.
If the PR does not get positive review and it is decided to close the PR, then
the PR will get one of resolution labels: r: duplicate
, r: invalid
,
r: wontfix
, r: worksforme
.
The stopgap#
When Sage returns wrong results, an issue and a PR should be created:
A stopgap issue with all available details.
A stopgap PR (e.g. github issue #12699)
The stopgap PR does not fix the problem but adds a warning that will be printed whenever anyone uses the relevant code, until the problem is finally fixed.
To produce the warning message, use code like the following:
from sage.misc.stopgap import stopgap
stopgap("This code contains bugs and may be mathematically unreliable.",
ISSUE_NUM)
Replace ISSUE_NUM
by the reference number for the stopgap issue. On the stopgap issue, enter the reference number for the stopgap PR. Stopgap issues and PRs should be marked as critical.
Note
If mathematically valid code causes Sage to raise an error or crash, for example, there is no need for a stopgap. Rather, stopgaps are to warn users that they may be using buggy code; if Sage crashes, this is not an issue.
Commenting issues and PRs#
Anyone can comment on an issue or a PR. If a PR is linked to an issue, you may not be sure where the comment should go. Then
Comments on the reported issue should go on the issue.
Comments on the submitted code should go on the PR.
Checks on PRs#
If you manage to fix a bug or enhance Sage, you are our hero. See Development Walk-through for making changes to the Sage source code and Creating a Pull Request to create a PR for the changes.
For each push to a PR, automated tests for the branch of the PR run on GitHub Actions.
A linting workflow checks that the code of the current branch adheres to the style guidelines using Pycodestyle (in the
pycodestyle-minimal
configuration) and Relint.In order to see details when it fails, you can click on the check and then select the most recent workflow run.
The build and test workflow on GitHub Actions builds Sage for the current branch (incrementally on top of an installation of the
develop
branch) and runs the test. Details are again available by clicking on the check.The automatic workflow runs on a container based on
ubuntu-focal-standard
. To request a run of the workflow on a different platform, you can issue a workflow dispatch. You can select any of the platforms for which a prebuilt container image exists.The build documentation workflow on GitHub Actions builds the HTML documentation for the current branch.
A link to the built doc is added in a comment, and so you can easily inspect changes to the documentation without the need to locally rebuild the docs yourself.
If the doc build fails, you can go to Actions tab and examine documentation build workflow and choose the particular branch to see what went wrong.
Final notes#
Every bug fixed should result in a doctest.
There are many enhancements possible for Sage and too few developers to implement all the good ideas.
If you are a developer, be nice and try to solve a stale/old issue every once in a while.
Some people regularly do triage. In this context, this means that we look at new bugs and classify them according to our perceived priority. It is very likely that different people will see priorities of bugs very differently from us, so please let us know if you see a problem with specific PRs.


GIS Project
01
HOME
(current)
PROJECT
WEBGIS
DOWNLOAD
ABOUT US
GIS Project
01
Harmonizing data flows in Energy Saving EU policies for Sondrio province.
READ MORE
DOWNLOAD


|
To use moblog, you need to configure the details of your blog. The first time that you start up moblog, you will
be presented with a screen where you can enter the following details about your blog.
- XML-RPC URL
- XML-RPC username
- XML-RPC password
- Blog ID
Choose the Save option to save the configuration. If you need to go back and edit the configuration, simply select the Preferenes option to return to this screen.
|


About
LizardHQ is a community of security researchers and activists, and information security think tank founded in September 2013 by some ex-LulzSec hackers. We release security advisories and research, and we particularly enjoy studying, exploiting and repurposing corporate and state surveillance technology.


WebCL
WebCL is a web version of OpenCL.
WebGL
WebGL is a web version of OpenGL ES.
PNaCl
PNaCl is a sandboxing technology which enables execution of LLVM bytecode in a browser.
NaCl
NaCl is a sandboxing technology which enables execution of native machine code in a browser.
Web Workers
Web Workers are the analogs of processes in JavaScript world. Web Workers let JavaScript applications utilize additional processor cores for computations.
Asm.js
Asm.js is a statically typed subset of JavaScript which can be compiled into native code by a browser.
SIMD.js
SIMD.js is a JavaScript extension that introduces SIMD types and operations.


This example shows that JSON Forms is capable of inferring the UI schema if it hasn't been specified.


This project serves to present the findings and final map set of the spatial analysis undertaken for the Re-introduction of the Finlay’s Fabulous Fictitious Fern (Osmunda Finlayensis). Niagara College’s horticultural group, along with the environmental restoration group had the foresight to collect specimens of the fern for propagation and eventually re-introduce the species into its natural habitat. A spatial analysis is undertaken to determine the ideal placement for introduction. The spatial analysis was completed as a Multi-criteria Evaluation (MCE) of four quintessential factors determining the growth of the fern species. The criteria is as follows: Slope, Aspect, Hill shade and Soil composition.
Highlights include:


Why I Got a Budgie
Before getting Apollo, in February of 2016, I thought a lot about why I wanted a pet. In the following posts I share my thought process, as well as links to other blogs and sites that have important information worth considering before deciding to bring a budgie into your home.
Growing up with pets
I grew up living with animals, and animal lovers. In this section I talk a bit about what that was like and the pets I had.
Deciding to get a pet again
I had been living without a pet since I moved to Victoria in 2009. Find out why I decided to get one again seven years later.
Inspiring Bird Videos
You know how everybody is obsessed with cat videos on Youtube? Well I happen to think the budgie ones are even better. You can watch some of my favourite budgie (and other kinds of parot) videos here.
Ethics of pet keeping
To weigh the decision of whether or not it is moral and ethical to keep a budgie as a pet, I went to the internet to find out about how budgies fair in captivity. This is what I found out.
Where do I get a bird?
After deciding that I wanted a pet, and specifically that I wanted a budgie, I had to figure out where to get one. I talk about all the options I found here, and the pros and cons of each of them.
Choosing Apollo
This is the story of the day I brought my new baby budgie home to live with me, and of how he got his name.


updateAceEditor.Rd
Update the styling or mode of an aceEditor component.
updateAceEditor(session, editorId, value, theme, readOnly, mode, fontSize, wordWrap, useSoftTabs, tabSize, showInvisibles, border = c("normal", "alert", "flash"), autoComplete = c("disabled", "enabled", "live"), autoCompleters = c("snippet", "text", "keyword", "static", "rlang"), autoCompleteList = NULL)
| session | The Shiny session to whom the editor belongs |
|---|---|
| editorId | The ID associated with this element |
| value | The initial text to be contained in the editor. |
| theme | The Ace |
| readOnly | If set to |
| mode | The Ace |
| fontSize | If set, will update the font size (in px) used in the editor. Should be an integer. |
| wordWrap | If set to |
| useSoftTabs | Replace tabs by spaces. Default value is TRUE |
| tabSize | Set tab size. Default value is 4 |
| showInvisibles | Show invisible characters (e.g., spaces, tabs, newline characters). Default value is FALSE |
| border | Set the |
| autoComplete | Enable/Disable code completion. See |
| autoCompleters | Character vector of completers to enable. If set to |
| autoCompleteList | If set to |
# NOT RUN { shinyServer(function(input, output, session) { observe({ updateAceEditor(session, "myEditor", "Updated text for editor here", mode = "r", theme = "ambiance") }) } # }


class: center, middle, inverse, title-slide # Decomposition Techniques for Social Epidemiology ## Advanced Social Epidemiology PhD Course ### Sam Harper ###
### University of Copenhagen
2021-10-11 to 2021-10-15 --- class: center, top, inverse # .orange[**3. Decomposition**] .left[ ## .orange[**3.1 Life Table Decomposition**] ## .orange[**3.2 Concentration Index Decomposition**] ## .orange[**3.3 Kitagawa-Blinder-Oaxaca Decomposition**] ] --- class: center, top, inverse # .orange[**3. Decomposition**] .left[ ## .orange[**3.1 Life Table Decomposition**] ## .gray[**3.2 Concentration Index Decomposition**] ## .gray[**3.3 Kitagawa-Blinder-Oaxaca Decomposition**] ] --- # Overview of Decomposition Techniques .pull-left[ ## Today: - Life table decomposition - Inequality decomposition: Concentration Index - Decomposing two-group differences: Kitagawa-Blinder-Oaxaca ] .pull-right[ ## Not covered here: - Effect decomposition (i.e., mediation) - Decomposition of population rates - Inequality decomposition: Indexes for Nominal social groups ] --- # Moving from Description to Explanation .right-column[ - Ultimately, we want to know why health inequalities are changing over time—what changed? - Risk factors? - Demographic composition? - Social conditions? - Unpacking the ‘components’ of health inequality is an opportunity to better integrate the monitoring of health inequalities with the etiology of health inequalities. - These techniques often involve various kinds of ‘counterfactual’ scenarios ] --- class: center, top, inverse # .orange[**3. Decomposition**] .left[ ## .orange[**3.1 Life Table Decomposition**] ## .gray[**3.2 Concentration Index Decomposition**] ## .gray[**3.3 Kitagawa-Blinder-Oaxaca Decomposition**] ] --- ## Why does life expectancy go up and down? .right-column[  ] --- ## Decomposing changes in life expectancy .right-column[ Uses age- and cause-specific mortality rate differences between two (or more) populations to estimate the contribution of specific age groups and causes of death to changes in life expectancy. Not causal. Can provide a means of evaluating 'explanations' for changes in mortality. Between countries, genders, ethnic groups, social classes, etc. ] --- .center[  ] --- ### Example from recent events .pull-left[  ] .pull-right[ >Over the last century, Americans’ life expectancy at birth has risen from 49 to 77. Yet in recent years, that rise has faltered. Among white people age 45-54 — or a time many view as the prime of life — deaths have risen. .red[Especially vulnerable are white men without a four-year bachelor’s degree]. Curiously, midlife deaths have not climbed in other rich countries, nor, for the most part, have they risen for American Hispanics or blacks. > NY Times Book Review, March 17, 2020 ] --- ## Specific causes are a key part of this narrative .right-column[ >Although the surge in deaths in America is what we might see during the ravages of an infectious disease, like the Great Influenza Pandemic of 1918, this is an epidemic that is not carried by a virus or a bacterium, nor is it caused by an external agent, such as poisoning of the air or the fallout from a nuclear accident. Instead, people are doing this to themselves. .red[They are drinking themselves to death, or poisoning themselves with drugs, or shooting or hanging themselves]. > Case and Deaton (2019, p38) ] --- ## Example of using life table decomposition .pull-left[ .center[  ]] .pull-right[ Decompose the decline in life expectancy in the US between 2014 and 2017 - By age - By cause of death - For 8 race-ethnic groups ] --- .left-column[ ### Trends in life expectancy ] .right-column[  ] --- .center[ What are we explaining?  ] Declines evident for all men and for most women Largest for black men --- .center[ .blue[Remember what a life table is?]  ] --- ## Decomposing between 2 groups .footnote[Arriaga (1984)] - E.g., between 2 time periods (2014 and 2017), the general formula is: `$$_{n}\Delta_{x}=\left[\underbrace{l_{x}^{2017}/l_{0}^{2017}}_{\textrm{fraction of survivors}}\times\overbrace{\left(\dfrac{_{n}L_{x}^{2014}}{l_{x}^{2014}}-\dfrac{_{n}L_{x}^{2017}}{l_{x}^{2017}}\right)}^{\textrm{direct effect}}\right]+\overbrace{\left[\dfrac{T_{x+n}^{2014}}{l_{x+n}^{2014}}\times\dfrac{\dfrac{l_{x}^{2017}l_{x+n}^{2014}}{l_{x}^{2014}}-l_{x+n}^{2017}}{l_{0}^{2017}}\right]}^{\textrm{indirect effect + interaction}}$$` - Direct effect multiplies the fraction of survivors at each age by the difference between the 2 groups in 'temporary life expectancy' at a given age. - Indirect effect happens because differences in the direct effect means more survivors at subsequent ages. --- ## Partial life tables for black men .footnote[Source: Harper et al. 2020] Our aim is to *decompose* the 0.7 year decline in life expectancy at birth that happened between 2014 and 2017 by age. .pull-left[ .center[Black Men, 2014] Age | lx | Tx | Lx | ex ----|-------|---------|---------|----- 0-1 | 100000 | 98945 | 7266771 | .red[72.7] 1-4 | 98828 | 394953 | 7167826 | 72.5 5-14 | 98649 | 985394 | 6772872 | 68.7 ...| | | | 85+ | 27676 | 204278 | 204278 | 7.4 ] .pull-right[ .center[Black Men, 2017] Age | lx | Tx | Lx | ex ----|-------|---------|---------|---- 0-1 | 100000 | 98919 | 7201581 | .red[72.0] 1-4 | 98799 | 394856 | 7102662 |71.9 5-14 | 98629 | 985064 | 6707806 | 68.0 ...| | | | 85+ | 27104 | 205713 | 205713 | 7.6 ] --- .center[Plug in values to estimate, e.g., contribution of 1-4 age group] .pull-left[ .center[Black Men, 2014] Age | lx | Tx | Lx | ex ----|-------|---------|---------|----- 0-1 | 100000 | 98945 | 7266771 | .red[72.7] 1-4 | 98828 | 394953 | 7167826 | 72.5 5-14 | 98649 | 985394 | 6772872 | 68.7 ...| | | | 85+ | 27676 | 204278 | 204278 | 7.4 ] .pull-right[ .center[Black Men, 2017] Age | lx | Tx | Lx | ex ----|-------|---------|---------|---- 0-1 | 100000 | 98919 | 7201581 | .red[72.0] 1-4 | 98799 | 394856 | 7102662 |71.9 5-14 | 98629 | 985064 | 6707806 | 68.0 ...| | | | 85+ | 27104 | 205713 | 205713 | 7.6 ] .white[x] `$$_{4}\Delta_{1}=\left[98799/100000\times\left(\dfrac{7167826}{98828}-\dfrac{7102662}{98799}\right)\right]+\left[\dfrac{985394}{98649}\times \dfrac{ {\dfrac{98799\times98649}{98828} - 98629}}{100000}\right]$$` .left[ `\(_{4}\Delta_{1}=-0.01\)` years ] --- .footnote[Harper et al. 2020] .left-column[ ### Results by age - Black men lost the most years. - Mostly worsening mortality among the young (15-44) ] .right-column[  ] --- ## Decomposing life expectancy differences by cause .footnote[Arriaga (1989)] The contribution `\(_{n}\Delta_{x}^{i}\)` of each cause of death `\(i\)` within a given age group is a function of the difference between the two time periods in the proportion of deaths due to a given cause: `$$_{n}\Delta_{x}^{i}={}_{n}\Delta_{x}\times\dfrac{\overbrace{\left(_{n}p_{x}^{i,2014}\times{}_{n}r_{x}^{2014}\right)-\left(_{n}p_{x}^{i,2017}\times{}_{n}r_{x}^{2017}\right)}^{\textrm{difference in share of deaths for cause}\,i}}{\underbrace{_{n}r_{x}^{2014}-_{n}r_{x}^{2017}}_{\textrm{overall mortality rate difference}}}$$` where `\(_{n}\Delta_{x}\)` is the total contribution for an age group, `\(_{n}p_{x}^{i}\)` is the proportion of deaths within age group `\(x\)` due to cause `\(i\)`, and `\(_{n}r_{x}\)` is the overall age-specific death rate. The total difference in life expectancy is the net sum of the age-cause components: `$$\sum_{i}{}_{n}\Delta_{x}^{i}={}_{n}\Delta_{x},\:\textrm{and}\:e_{0}^{2014}-e_{0}^{2017}=\sum_{x}{}_{n}\Delta_{x}=\sum_{x}\sum_{i}{}_{n}\Delta_{x}^{i}$$` --- ### Results by cause: Men .footnote[Harper et al. 2020] .left-column[ - Opioids (unintentional overdoses) played a large part. - Homicide for black men - Little role for suicide or alcohol. ] .right-column[  ] --- ### Results by cause: Women .footnote[Harper et al. 2020] .left-column[ - Opioids, but also Alzheimer's. - Variations by race-ethnicity - Cancer mortality improved. ] .right-column[  ] --- ## Summary .right-column[ Life table decomposition useful for understanding links between proximal risks and mortality, and how they may 'explain' changing patterns of life expectancy. Minimal assumptions, but not causal. Example showing how the 'Deaths of Despair' narrative is hard to reconcile with diverse mortality patterns: - Declines have affected all race-ethnic groups. - Most of the decline due to opioid overdoses, homicide, and Alzheimer’s disease. - Deaths from suicide and alcohol-related causes have risen but explain little of America’s stagnating life expectancy trends. ] --- class: center, top, inverse # .orange[**3. Decomposition**] .left[ ## .gray[**3.1 Life Table Decomposition**] ## .orange[**3.2 Concentration Index Decomposition**] ## .gray[**3.3 Kitagawa-Blinder-Oaxaca Decomposition**] ] --- # The 'usual' approach .pull-left[ Conventional methods for “explaining” effects of social exposures - Estimate crude or demographic-adjusted effect (logit, hazard) - Add “conventional” risk factors (physiological, behavioural) - Add “novel” risk factors (flavour-of-the-week) - Interpret accordingly ] -- .pull-right[ Limitations of conventional approach - Often fail to consider entire socioeconomic distribution (typically low vs. high only) in the context of “explanation” - Often ignore absolute risk - Typically do not provide estimates of the specific contributions of other factors to the “explained” proportion ] --- We want to understand this .center[  ] --- .left-column[ ## Relative Concentration Curve ] .right-column[ .center[  ]] --- ## Formula for writing the Concentration Index .footnote[Kakwani et al. (1997)] .pull-left[ Recall that we can write the CI as: `$$RCI= \frac{2}{n\mu} \sum_{i=1}^{n}y_{i}R_{i}-1$$` where `\(\mu\)` is the mean of `\(y_{i}\)` (e.g., smoking status), `\(R_{i}\)` is the fractional rank of the *i*th person in the socioeconomic (i.e., income) distribution. ] .pull-right[ The basic idea here is to develop a model for predicting `\(y\)` using several determinants, then plug that model back into the equation for the `\(RCI\)` ] --- ## Decomposition of the RCI .footnote[Wagstaff et al. *J Econometrics* 2003] Since the `\(RCI\)` is a function of a health variable `\((y_{i})\)` and a socioeconomic rank variable `\((R_{i})\)`, i.e. `$$RCI= \frac{2}{n\mu} \sum_{i=1}^{n}{\color{red}{y_{i}}}R_{i}-1$$` -- Then suppose that one can write a regression equation expressing the health outcome of interest `\((y_{i})\)` as a function of several `\(k_{i}\)` determinants (e.g., age, gender, urban/rural status): `$$\color{red}{y_{i}}=\alpha + \sum{\beta_{x}x_{k_{i}}}+\epsilon_{i}$$` --- ## Decomposition of the RCI Since *RCI* is a function of `\(y_{i}\)` and socioeconomic rank, one can then re-express the concentration index as: `$$RCI=\sum{(\beta_{k}\bar{x}_{k}/\mu)RCI_{k}}+gRCI_{e}/\mu$$` Where - `\(\mu\)` is the mean of *y*, - `\(\bar{x}_{k}\)` is the mean of `\(x_{k}\)`, - `\(\beta_{k}\)` is the regression coefficient for `\(x_{k}\)`, and - `\(RCI_{k}\)` is the concentration index for `\(x_{k}\)`. The basic idea: how much of the overall inequality is due to other factors that are both differentially distributed by `\(x\)` (income) and also affect `\(y\)` (e.g., smoking)? --- ## Explained and unexplained components This equation results in 2 components of socioeconomic inequality: `$$RCI=\sum{(\beta_{k}\bar{x}_{k}/\mu)RCI_{k}}+gRCI_{e}/\mu$$` .pull-left[ One part `\((\beta_{k}\bar{x}_{k}/\mu)RCI_{k}\)` that is due to the association between income and other factors that predict health ] .pull-right[ The other part `\((gRCI_{e}/\mu)\)` is ‘unexplained’, i.e., inequality that cannot be explained by systematic variation across income groups in the determinants of health. ] --- ## Two types of 'explained' components .pull-left[  ] .pull-right[ The influence of determinants depends on 2 things: ### `\(\color{blue}{RCI_{k}}\)` #### the strength of the relationship between each factor and income `\((C_{k})\)` ### `\(\color{blue}{\beta_{k}\bar{x}_{k}/\mu}\)` #### the strength of the relationship between each factor and health, and its prevalence in the population (elasticity). ] --- ## Procedure for decomposing the Concentration Index 1 Estimate a regression equation predicting `\(y\)` (‘health’) from its determinants `\((\beta_{k}x_{k})\)`: `$$\color{red}{y_{i}}=\alpha + \sum{\beta_{x}x_{k_{i}}}+\epsilon_{i}$$` 2 Calculate the mean of `\(y\)` `\((\mu)\)` and of each of the determinants (e.g., education, age) 3 Calculate the Concentration Index for the health variable (C) *and* for each determinant in the equation predicting health `\((C_{k})\)`. - That is, use each determinant `\(x_{k}\)` as the "outcome" and estimate a CI for age, CI for education, etc. --- ## Procedure for decomposing the Concentration Index 4 Calculate the absolute contribution of each determinant by multiplying its ‘elasticity’ by its concentration index `\((C_{k})\)`: `$$(\beta_{k}\bar{x}_{k}/\mu)RCI_{k}$$` 5 Calculate the percentage contribution of each determinant: `$$[(\beta_{k}\bar{x}_{k}/\mu)RCI_{k}]/RCI$$` --- .footnote[Hosseinpoor et al. IJE (2005)] .left-column[ ### A few examples... ] .right-column[ .center[  ]] --- background-image: url(../../images/can-usa-decomp.png) background-size: contain .footnote[McGrail et al. AJPH (2007)] --- .footnote[McKinnon et al. (2011)]  --- class: center, middle, inverse # Example: Decomposing Socioeconomic Inequality in Current Smoking --- .left-column[ ### Smoking by income quintile ] .right-column[  ] --- .left-column[ ### Concentration curve for smoking ] .right-column[  ] --- .left-column[ ### Estimation for a specific factor: Education ] .right-column[ Recall the decomposition formula: `$$RCI=\sum{(\beta_{k}\bar{x}_{k}/\mu)RCI_{k}}+gRCI_{e}/\mu$$` - Estimated `\(\beta\)` coeff on education (logit scale): -.0389 (OR = 0.96) - Marginal effect on probability scale: -.0051 (0.5 pct points) - Mean education: 8.9 yrs - Mean smoking rate: 17.5% With these parameters, the elasticity of smoking with respect to education is: (-.0051 * 8.9 / .175) = -.2582 Interpretation: a 1% increase in education decreases smoking by 26% (not percentage points!). What about the RCI for education? ] --- .left-column[ ### Concentration curve for education Note the y-axis is cumulative share of *education* ] .right-column[  ] --- .left-column[ ### Estimation for a specific factor: Education ] .right-column[ Recall the decomposition formula: `$$RCI=\sum{(\color{red}{\beta_{k}\bar{x}_{k}/\mu})\color{blue}{RCI_{k}}}+gRCI_{e}/\mu$$` So the .red[elasticity of smoking] (from the previous slide) with respect to education is (-.0051 * 8.9 / .175) = -.2582 Now we have the .blue[RCI for education] = 0.156 So now we can calculate the contribution of education as: `$$\text{Elasticity}\times RCI_{ed} = -.2582 * .156 = -.04$$` Thus education accounts for -.04/ -.0939 = 41.6% of the overall `\(RCI\)` ] --- .left-column[ Decomposition of Income-Related Inequality in Smoking: Americas region Overall RCI = -0.094 ] .right-column[  ] --- .left-column[ Contrasting components of income-related inequality Education: - Elasticity stronger in W Pacific - `\(RCI_{ed}\)` stronger in Americas - Implications for intervention? ] .right-column[  ] --- ## Caveats for decomposing the RCI .right-column[ Decomposition results will be sensitive to the choice of determinants included (i.e., how well-specified the model is for predicting y). The regression equations are predictive and not causal models. Main utility is not in estimating the potential impact on y of changing the distribution of socioeconomic position, but in indicating the potential role that other factors may play in generating socioeconomic inequalities in health. ] --- class: center, top, inverse # .orange[**3. Decomposition**] .left[ ## .gray[**3.1 Life Table Decomposition**] ## .gray[**3.2 Concentration Index Decomposition**] ## .orange[**3.3 Kitagawa-Blinder-Oaxaca Decomposition**] ] --- # Idea for Decomposition of Means .right-column[ The core idea is to explain the distribution of the outcome variable in question by a set of factors that vary systematically with exposure status. Thus, we want to know, on average, **why the mean level of health or disease differs between exposed and unexposed groups**. Since, for most health outcomes there are multiple determinants, we may want to know which of these determinants plays more or less important roles in explaining the difference in average outcomes. “Unpacking” or “decomposing” difference. ] --- # Origins .left-column[  ] .right-column[ Evelyn Kitagawa was sociologist and demographer who devised a non-parametric method (1955) for decomposing differences between rates, refined by Prithwis das Gupta in 1978. - Focused on understanding group contributions to rate differences. Studies by Oaxaca (1973) and Blinder (1973) applied regression-based decomposition methods to analyze the wage gap between men and women and between whites and blacks in the USA. - Focused on how much of wage gap was 'explained' by differences in observable characteristics ] --- ## Brief note on interpretation .right-column[ Decomposition methods are based on regression analyses, and thus all of the usual caveats about good specification apply If regressions are purely descriptive, they reveal the associations that characterize the health inequality Then inequality is explained in a statistical sense but implications for policies to reduce inequality are limited If data allow identification of causal effects, then the factors that generate the inequality are identified Then one can (potentially) draw conclusions about how policies would impact on inequality ] .footnote[O'Donnell 2008] --- background-image: url(../../images/decomp-ex-spain.png) background-size: contain --- # Kitagawa-Blinder-Oaxaca: Basic Idea .right-column[ ### Two potential sources of mean differences in outcomes ### 1. Means #### Differences in the prevalence of determinants of outcome ### 2. Effects #### Differences in the effect of a given determinant on the outcome (i.e., effect measure modification) ] --- .left-column[ Think of 2 regressions for a given determinant `\(X\)`: 1. Exposed 2. Unexposed Each generates its own coefficient and uses its own mean. Use these to generate counterfactuals. ] .right-column[ .center[  ]] --- ### Two ways of expressing the mean difference in `\(y\)` .right-column[ The overall gap between exposed and unexposed can be written as a function of differences the respective beta coefficients, evaluated at the mean for each group:  ] --- .left-column[ ### First method - Coefficients of unexposed - Means of exposed ] .right-column[ .center[ `\(y^{exp} - y^{unexp} = \Delta\bar{x}\beta^{unexp}-\Delta\beta x^{exp}\)`  ]] --- .left-column[ ### Second method - Coefficients of exposed - Means of unexposed ] .right-column[ .center[ `\(y^{exp} - y^{unexp} = \Delta\bar{x}\beta^{exp}-\Delta\beta x^{unexp}\)`  ]] --- ## The two methods are equally valid .right-column[ In the first,the differences in the x’s are weighted by the .red[coefficients of the unexposed group] and the differences in the coefficients are weighted by the x’s of the exposed group: `$$y^{exp} - y^{unexp} = \Delta\bar{x}\beta^{unexp}-\Delta\beta x^{exp}$$` whereas, in the second, the differences in the x’s are weighted by the .blue[coefficients of the exposed group] and the differences in the coefficients are weighted by the x’s of the unexposed group: `$$y^{exp} - y^{unexp} = \Delta\bar{x}\beta^{exp}-\Delta\beta x^{unexp}$$` ] --- General decomposition formula shows the mean gap as deriving from a difference in endowments (E), a gap in coefficients (C), and .red[a gap arising from the interaction of endowments and coefficients] (CE): .center[  ] --- class: center, middle, inverse # Example: Decomposing Educational Differences in Blood Pressure --- # Basic question .left-column[  ] .right-column[ What is the average difference in blood pressure between those with low vs. high education? How much of this difference is due to the fact that determinants of blood pressure (e.g., BMI, smoking, demographics) differ between low and high educated groups? Any residual difference is due to educational differences in the associations of risk factors for blood pressure. ] --- # Example data .left-column[  ] .right-column[ US NHANES follow up survey (1988-2006), baseline data Systolic blood pressure as outcome (mmHg) Overall difference by education (0: >=12y educ, 1: <12y educ) Potential determinants (the Xs): - age (years) - age squared - race (1 = non-white, 0 = other) - marital status (1=married, 0=other) - body mass index (kg/m^2) - smoking (1=current smoker, 0=other) ] --- background-image: url(../../images/kbo-density.png) background-size: contain --- ## Differences in determinants .left-column[ - Lower educated have higher BMI and are more likely to be smokers, as well as being older ] .right-column[  ] --- ## Differences in coefficients .left-column[ - BMI and smoking both have larger coefficients for the better educated group. - Age has a slightly stronger association for the less educated. ] .right-column[  ] --- background-image: url(../../images/kbo-margins.png) background-size: contain --- background-image: url(../../images/kbo-decomp.png) background-size: contain --- background-image: url(../../images/kbo-decomp-means.png) background-size: contain --- background-image: url(../../images/kbo-decomp-coefs.png) background-size: contain --- background-image: url(../../images/kbo-decomp-coefs2.png) background-size: contain --- background-image: url(../../images/kbo-decomp-pooled.png) background-size: contain --- ## Caveat: results depend on specification .left-column[ Adding gender increases the “explained” component (i.e., “endowments”) from -2.77 to -2.95, so important consequences for how much of the gap is “unexplained” ] .right-column[  ] --- .footnote[Jackson (2021)] .left-column[ ## Methods frontier - Attempting to reconcile the non-causal framework of KBO with mediation methods, new estimators. ] .right-column[  ] --- # Summary .left-column[  ] .right-column[ Various decomposition techniques exist that may be useful for analyzing social determinants of health Life table decomposition—over time or between groups, or both Regression-based decomposition of Concentration Index Oaxaca decomposition of mean health between groups All of these techniques make assumptions that need to be evaluated in the course of analysis When used properly, decomposition techniques can help to provide key evidence on why health inequalities exist and change over time. ]


WebGL Animated Flowers + ThreeJS
Pink
Red
Red+Yellow
Red+White
Red+Yellow+Rand
Red+White+Rand
Red+Yellow+Strip
Red+White+Strip
Yellow+Strip
Yellow
White
Blue
Rose
Rose2
Daisy
Tulip
Tooth
Tooth2
Apple
Weed
Lotus*
Lily*
Stem
Procedural Lathe Flowers lib is used. Set Flower name and color. Use mouse to control the model.
updated
4 May 2021


---
layout: viewer-components
---
Unordered Lists
Default
- List item with a much longer description or more content.
- List item
- List item
- Nested list item
- Nested list item
- Nested list item
- List item
- List item
- List item
Link List
Use .list-linked
to make an unordered of links that use the href file type to show an icon. Nesting is not allowed.


Traffic Light Violation Monitoring System
LTO
Database Records
Violations
RFID
PLATE
MAKE / MODEL
OWNER
ADDRESS
CONTACT
Traffic Light 1
RFID:
Send to LTO
RFID:
Send to LTO
Traffic Light 2
RFID:
Send to LTO
RFID:
Send to LTO
Traffic Light 3
RFID:
Send to LTO
RFID:
Send to LTO
Violations
RFID / IMAGE / DATE
DETAILS


func_geo v0.0.1 FuncGeo
Functional Geometry
This work is based on the Functional Geometry paper by Peter Henderson, the most recent version of this document is from 2002, the original version is from 1982. In this paper Peter Henderson deconstructs the M.C. Escher’s woodcut Square Limit using an algebra of pictures.
Peter Henderson also mentions that this idea can be applied to many more complex domains such as music or animation.
Other implementations
Summary
Functions
Returns picture that has p
in the upper half of its locating box and q
in
the lower half
Place picture p
above q
scaled by m
and n
Returns picture that has p
in the left half of its locating box and q
in
the right half
Place picture p
besides q
scaled by m
and n
Represents an empty picture
Returns four times the p, layouted in a square and rotated
Returns picture p
flipped through its vertical centre axis
Defines a picture function from lines in a grid
Overlays one picture p
directly on top of the other picture q
Writes the given picture in the given format
Convert the given points, which specifies a polygon, in a list of lines
Returns the picture p, q, r and s, layouted in a square
Returns picture p
rotated anticlockwise by 90 degrees
Rotates a picture about its top left corner, through 45 degrees
anticlockwise. It also reduces the picture is size by sqrt(2)
Functions
Returns picture that has p
in the upper half of its locating box and q
in
the lower half
Returns picture that has p
in the left half of its locating box and q
in
the right half