class: title-slide, center, middle # Statistical methods for archaeological data analysis I: Basic methods ## 01 - Introduction ### Martin Hinz #### Institut für Archäologische Wissenschaften, Universität Bern 24.02.2021 .footnote[ .right[ .tiny[ You can download a [pdf of this presentation](smada01.pdf). ] ] ] --- ## Synopsis .pull-left[ ![](../images/01_session/snape.png) ] .pull-right[ > "There will be no foolish wand-waving or silly incantations in this class. As such, I don't expect many of you to appreciate the subtle science and exact art that is statistics." ] --- ## Why statistics at all... ### For you: Statistics are used! If you want to understand them, you have to learn it! ### For archaeology/science as discipline Statistics make everything easier! - Statements become more understandable and especially replicable - Statistical statements are right or wrong no matter what reputation the scientist has - Statements and data become comparable - Getting the Knowledge of all the material for intuitive understanding of scientific/archaeological relations takes decades, learning statistics only months --- ## Figures don't lie, but liars figure. Samuel Clemens (alias Mark Twain) ### Statistics are only correct if question, approach and method are correct e.g.: is social stratification observable on metal grave goods? Or on jewellery? What if this depends on the (not observed) sex of the deceased... ### Measuring and especially coding of measurements requires subjective decisions all the time: Reasons for the decisions are often not understandable → subjective influence ### Statistics for statistics sake? A logic (archaeologic) meaning have to be behind an analysis. And the results of analyses have to be logical (archaeological) testable. --- ## Statistic tool R: history (after Theus) R is the successor of S resp. S-Plus - S history: - 1976-1980: S-Version 1; (development by AT&T Labs) collection of Fortran routines - 1980-1984: S-Version 2 Porting to UNIX, definition of the command language - 1988-1991: S-Version 3 Porting to C, object-oriented, models - 1999-today: S-Version 4 improved object-orientation (parallel the commercial version S-Plus) - R history - early 90th: Development in New Zealand (R. Ihaka, R. Gentleman) Lisp based, only platform was Mac - middle 90th: expansion onto other platforms - end 90th: distributed development by the R-Core-Team - R-Core-Team: 17 developers all over the world - R-”specialists”: ca. 50 contributer - developers of R-packages: hundreds, daily more --- ## Why R? ### Open Source - Free accessible source code: transparency of the program - Free to distribute: you don't have to pay horrific prices or make illegal copies ### Reference of the used algorithms - Scientific citable ### Power - The tool can do everything! Really! Exept making coffee... ### Spread - Runs on all (major) operating systems - Is widely used in the scientific field --- ## Why R? ### Disadvantages - Command line: unfamiliar (new/old way to work with a computer) - GUIs look different - Knowledge of the english language is helpful - Names of functions and parameters have to be kept in mind: is it col.names, colnames or header? - Documentation is partly not very intuitiv: you should know what you are searching for --- ## Basic literature ### Stephan Shennan, Quantifying Archaeology. The textbook for this course. ### David L. Carlson, Quantitative Methods in Archaeology Using R A archaeology specific R textbook ### Dubravko Dolić, Statistik mit R. ### John Verzani, Using R for Introductory Statistics. R-specific (introductory) statistical books --- ## More literature - M. Fletcher/G. R. Lock, Digging Numbers: Elementary Statistics for Archaeologists. Oxford Univ. Comm. Arch. Monogr. 332 (Oxford 2005). - M. J. Baxter, Exploratory Multivariate Analysis in Archaeology (Edinburgh 1994). - M. Baxter, Statistics in Archaeology (London 2003). - P. Ihm, Statistik in der Archäologie: Probleme der Anwendung, allgemeine Methoden, Seriation und Klassifikation. Archaeo-Physika 9 (Köln 1978). - J. Bortz, Statistik für Sozialwissenschaftler4 (Berlin u. a. 1993). --- ## Schedule

  date 	  topic 	  chapt. Shennan

  24.02.2021 	  Session: Introduction](01_session/session_1_introduction.html) 	  1+2

  03.03.2021 	  Session: Introduction into R 	  -

  10.03.2021 	  Session: Explorative Statistics/Graph. Display 	  3

  17.03.2021 	  Session: Descriptive Statistics 	  4

  24.03.2021 	  Session: Nonparametric Tests 	  5

  31.03.2021 	  Session: Chi-square test 	  7

  14.04.2021 	  Session: Probability Theory and Distributions 	  5

  21.04.2021 	  Session: Distributions 	  6

  28.04.2021 	  Session: Parametric Tests 	  6

  05.05.2021 	  Session: Regression & Correlation 	  8

  12.05.2021 	  Session: Cluster Analysis 	  11

  26.05.2021 	  Session: Correspondence Analysis 	  13

  02.06.2021 	  Test 	  -

 --- ## Sample and Population ### Population: - Amount of all items of relevance for an analysis. ### Sample - Selection of items on basis of certain criteria (e.g. representativity) which - will be analysed instead of the population ### Example opinion poll - Population: all federal citizens who have a meaning - Sample: the citizens who are polled by the polling organization *complete record of all the values ↔ sampling* **In archaeology only sampling is possible! The population can never be investigated!** --- ## Flavours of statistics ### Descriptive statistics - Summary and description of data by using parameters (mean, standard deviation etc.) ### (graphical display) - Summary and description of data by using graphs (bar charts, pie charts etc.) - Useful for pattern detection and description, therefore intermediate position ### Explorative statistics - Summary and description of data for pattern detection (e.g. correspondence analysis) ### Statistical inference or statistical induction - testing of hypothesis on data (e.g. chi-squared test) --- ## Data, variables, values .pull-left[ - variable: - What ist measured or analysed. - e.g. height - item: - That whichs variable is measure - e.g. me as „possessor“ of a height, graves, persons... - values: - The actual measurement. - e.g. my height is 1.81 m. ] .pull-right[ ![](../images/01_session/variable_item_value.png) ] --- ## Flavours of Statistics 2: Troll math .pull-left[ ### one: univariate statistics: - Only on variable is involved - e.g. weight of bronze axes ### two: bivariate statistics: - Two variables are involved, of interest is their relation - e.g. relationship of length and width of bronze axes ] .pull-right[ ![:width 50%](../images/01_session/troll.png) ] ### many: multivariate statistik: - More than two variables are involved, of interest is their relation - e.g. place of finding of axes (grave, depot, settlement) in relation to their chemical composition (proportion of copper, tin, arsenic, lead etc.) --- ## More than one variable ### Independent Variable: - The assumed cause of a relationship ### Dependent variable: - The assumed effect of the independent variable in a relationship ### example: - Number of pearls in a grave (Dependent) vs. - sex of the deceased (independent) - Hypothesis: The number of pearls in a grave depends on the sex of the deceased ### Can (have to be) not always to be defined - e.g.: volume and height of a vessel... --- ## continuous vs. discrete .pull-left[ ### discrete variable: - Variable which can take only certain values without intermediate values - e.g. income, counts of ceramic objects, sex (?) - 'counted' ### continuous variables: - Variable which can take all value and intermediate value - e.g. height, temperature, proportion value - 'measured' ] .pull-right[ ![](../images/01_session/quantitative-data.jpg) .caption[Source: https://statsthewayilikeit.com] ] --- ## Levels of measurement ![](../images/01_session/categorical-data.jpg) ### nominal or categorical: - You can only decide if something belongs to a category - Categories which do not have a defined relationship among each other, only counting is possible (e.g. sex) --- ## Levels of measurement ![:width 70%](../images/01_session/ordinal_chilis.png) ### ordinal: - Categories which are comparable and differ from each other in their characteristic [size/power/intensity] - their rank is determinable (e.g. preservation conditions – bad < medium < good) --- ## Levels of measurement ![:width 70%](../images/01_session/Kelvin_og_Celsius_temperaturskalaer.png) ### metric: - Variable has a defined system of measurement, all calculations are possible. To distinguish are 1. interval: The variable has an arbitrary choosen neutral point (°C) 2. ratio: The variable has an absolute neutral point (°K) - Sometimes also used: absolut scale - counts (number of inhabitans) --- ## Levels of measurement ![](../images/01_session/scales_of_measurements.png) --- ## Levels of measurement

  scale 	  Meaningful statements 	  Examples

  nominal 	  equality, inequality 	  Telephon numbers, illnesses, ceramic types

  ordinal 	  bigger-smaller-relationship 	  Wind forces, academic ranks, classes of wealth, stratigraphic relations

  interval 	  Equality of differences 	  Temperature in °C, calender age

  ratio 	  Equality of ratios 	  Measurement of lengths, weight, height of a vessel

 .caption[after Bortz 2005] --- ## Levels of measurement Change of the level ### downscaling: - Always possible. - e.g. classification of measurements (small-medium-big) - But: leads to loss of information ### upscaling: - Sometimes possible - e.g.: instead of classification of ceramics in coarse-fine ware measurement of grain size - But: leads to larger data volume and higher complexity of measurement ### Conclusion: - For analysis should the best fitting level of measurement be choosen. - Because there can always occure a change in the requirements, rule of thumb: take one level finer than you think you will need in the end (as said, just a rule of thumb...) --- ## Data collection: list Simple list of the data example: ``` ## [1] 154 167 187 165 190 176 167 156 154 165 167 171 154 ``` --- ## data preparation: matrix of data Table of multiple values each item example: .tiny[

  name 	  height 	  sex

  Hannah 	  154 	  2(female)

  Leon 	  167 	  1(male)

  Lukas 	  187 	  1

  Leonie 	  165 	  2

  Luka 	  190 	  1

  Lea 	  176 	  2

  Lena 	  167 	  2

  Mia 	  156 	  2

  Tim 	  154 	  1

  Fynn 	  165 	  1

  Anna 	  167 	  2

  Emily 	  171 	  2

  Felix 	  154 	  1

 ] --- ## data preparation: “tally sheet” / frequency table Table of multiple items each value example:

  name 	  Tally marks 	  counts

  154 	  ||| 	  3

  156 	  | 	  1

  167 	  ||| 	  3

  165 	  || 	  2

  171 	  | 	  1

  176 	  | 	  1

  187 	  | 	  1

  190 	  | 	  1

 --- ## data preparation: classification Table of multiple items each class of value example:

  name 	  Tally marks 	  counts

  <150 	  	  0

  150-159 	  |||| 	  4

  160-169 	  ||||| 	  5

  170-179 	  || 	  2

  180-189 	  | 	  1

  >190 	  | 	  1

 Class width here 10 cm Rule of thumb: ca. 8 – 12 classes or Number of classes `\(k ≈ \sqrt{n}\)`, here therefore `\(k ≈ \sqrt{13} = 3.6055513 ≈ 4\)` --- ## Equations & symbols | meaning | symbol | |-|-| | ca. | `\(a≈b\)` | | count | `\(n\)` | | sum | `\(\sum_{i=1}^n x_i\)` | | This means | `\(x_1 =0, x_2 =4, x_3 =5, x_4 =2, x_5 =1, x_6 =1 ; n=6\)` | | `\(x_1 + x_2 + x_3 + x_4 + x_5 + x_6 =\sum_{i=1}^n x_i\)` | | Product the same way | `\(\prod_{i=1}^n x_i = x_1 ∗x_2 ∗x_3 ∗x_4 ∗x_5 ∗x_6 = 0\)` | --- ## Example arithm. mean Equations are recipes $$ \bar{x}=\frac{\sum_{i=1}^n x_i} n $$ observations : `\(x_i\)` ={154, 167, 187, 165, 190, 176, 167, 156, 154, 165, 167, 171, 154} number of observations : n=13 $$ \bar{x}=\frac{154 + 167 + 187 + 165 + 190 + 176 + 167 + 156 + 154 + 165 + 167 + 171 + 154} {13} \\\\ \bar{x}=\frac{2173} {13} \\\\ \bar{x}=167.1538462 $$ .right[ ![:width 15%](../images/01_session/cake.jpeg) .caption[.tiny[@charlesetoroma - unsplash]] ] --- class: inverse ## Homework: description of the participants **Choose one of the following five groups and collect the data about the participants accordingly** Data to collect for the groups - A) Email, number of the computer in front of you - B) Sex, Age - C) laptop yes/no, foot size - D) actual cash in your purse, height - E) homecountry, operation system used at home Collect the data matrix, determine the level of measurement of each variable and send me your data collection via email until weekend. **Make it a group work! organise yourself! No one is an island!**


--------------
PIRATE Airdrop
--------------
We will be airdropping 250,000 PIRATE to people who missed out on early mining.
There is now a public pool with working payouts to Z-address, if you want to mine it easily thanks to Webworker01: https://pirate.komodostats.com
To qualify for the air drop all you need to do is supply a Z-address in this BCT ANN.
The airdrop will happen on: 19th of September 2018 cut off for supplying Z address is the day before 18th September at 0 UTC, any Z-address submitted after this time will not be included in the airdrop. The PIRATE will be divided evenly over the address's supplied. If 250,000 people apply you will each get 1.
Any accounts made after 1st September 2018 will not be included in the airdrop!
(edited)


This is to test the border-image property. If the following text is surrounded by an image border, the test passes.
This is a test.
This is to test the border-image property. If the following text is surrounded by an image border, the test passes.
This is a test.
This is to test the border-image property. If the following text is surrounded by an image border, the test passes.
This is a test.
This is to test the border-image property. If the following text is surrounded by an image border, the test passes.
This is a test.


{% if error %} {% endif %}
Play With Yourself - Accompaniment Tool
Toggle navigation
Play With Yourself
MIR
Other Projects
>...
>...
...
About Us
Who are We?
>Contact Us
FAQs
Play With Yourself
An accompaniment tool for the modern musician using:
Librosa
Pymir
Many other things...
Select a wav file
Browse…
Choose Settings
Default
Manual
Melodic Instrument (MIDI):
Harmonic Instrument (MIDI):
Percussive Instrument (MIDI):
Percussive Pattern:
2-Beat
Rock 1
Rock 2
Rock 3
Punk
Reggae
Time Signature:
4/4
3/4
Instruments
Instrument List:
Piano
Acoustic Grand Piano
Bright Acoustic Piano
Electric Grand Piano
Honky-tonk Piano
Electric Piano 1
Electric Piano 2
Harpsichord
Clavinet
Organ
Drawbar Organ
Percussive Organ
Rock Organ
Church Organ
Reed Organ
Accordion
Harmonica
Tango Accordion
Guitar
Acoustic Guitar (nylon)
Acoustic Guitar (steel)
Electric Guitar (jazz)
Electric Guitar (clean)
Electric Guitar (muted)
Ovedriven Guitar
Distortion Guitar
Guitar Harmonics
Bass
Acoustic Bass
Electric Bass (finger)
Electric Bass (pick)
Fretless Bass
Slap Bass 1
Slap Bass 2
Synth Bass 1
Synth Bass 2
Strings
Violin
Viola
Cello
Contrabass
Tremolo Strings
Pizzicato Strings
Orchestral Harp
Timpani
Ensemble
String Ensemble 1
String Ensemble 2
Synth Strings 1
Synth Strings 2
Choir Aahs
Choir Oohs
Synth Choir
Orchestra Hit
Brass
Trumpet
Trombone
Tuba
Muted Trumped
French Horn
Brass Section
Synth Brass 1
Synth Brass 2
Reed
Soprano Sax
Alto Sax
Tenor Sax
Baritone Sax
Oboe
English Horn
Bassoon
Clarinet
Pipe
Piccolo
Flute
Recorder
Pan Flute
Blown Bottle
Shakahuachi
Whistle
Ocarina
Synth Lead
Lead 1 (square)
Lead 2 (sawtooth)
Lead 3 (calliope)
Lead 4 (chiff)
Lead 5 (charang)
Lead 6 (voice)
Lead 7 (fifths)
Lead 8 (bass + lead)
Synth Pad
Pad 1 (new age)
Pad 2 (warm)
Pad 3 (polysynth)
Pad 4 (choir)
Pad 5 (bowed)
Pad 6 (metallic)
Pad 7 (halo)
Pad 8 (sweep)
Synth Effects
FX 1 (rain)
FX 2 (soundtrack)
FX 3 (crystal)
FX 4 (atmosphere)
FX 5 (brightness)
FX 6 (goblins)
FX 7 (echoes)
FX 8 (sci-fi)
Ethnic
Sitar
Banjo
Shamisen
Koto
Kalimba
Bagpipe
Fiddle
Shanai
Sound Effects
Guitar Fret Noise
Breath Noise
Seashore
Bird Tweet
Telephone Ring
Helicopter
Applause
Gunshot
Percussion
Tinkle Bell
Agogo
Steel Drums
Woodblock
Taiko Drum
Melodic Tom
Synth Drum
Reverse Cymbal
Pitched Percussion
Celesta
Glockenspiel
Music Box
Vibraphone
Marimba
Xylophone
Tubular Bells
Dulcimer
Kits
Drum Set
Advanced Settings
Busyness:

9
Chord Style:
Closed
Open
Dynamics:

7
Accompaniment Tempo:
Half
Regular
Double
Quadruple
Tightness:

3
Render
Info
Help


Mule embedded in Web Application Example
First Name:
Last Name:
Street Address:
City:
State:
ZipCode:
Age:
View All People


--- title: "Image Segmentation: Implementing Graphcut algorithm" excerpt: " Implementation of basic graphcut algorithm for unsupervised image segmentation" collection: portfolio ---


HTML
- HTML stands for Hypertext Markup Language, and it is the most widely used language to write web pages.
- Hypertext refers to the way in which web pages (HTML documents) are linked together. Thus, the link available on a web page is called Hypertext.
- As its name suggests, HTML is a Markup Language which means you use HTML to simply "mark-up" a text document with tags that tell a web browser how to structure it to display.
Evolution of HTML
- HTML(I) was created in 1990 as a way to electronically connect documents via hyperlinks.
-
HTML, or Hypertext Markup Language, is used to create the basic structure and content of a web page.
CSS
CSS, or Cascading Style Sheets, is used for the design of a web page - where everything is placed and how it looks.
JavaScript
JavaScript is used to define the interactive elements of a web page that help to engage users.
Download Intro Presentation


Angular Denver was a two-day conference targeted at Angular professionals, developers, and enthusiasts. Held at the beautiful city of Denver, this was a fun conference with a focus on a wide variety of topics and hands-on sessions, ranging from the depths of RxJS to the heights of ML with Tensorflow.js. I had a great time representing Cyr3con along with my team lead, Anudeep.
What excited me the most when I first heard of the event was the opportunity to hear from the core maintainers of Angular. Angular is led by a small team of approx 25 core members, and a fair few were present at the event discusssing the latest advancements in Angular including development of version 9 and Ivy!
Sessions
The sessions that helped me the most were the ones on RxJS and State management, especially since I was tackling a problem requiring those at the time. The session "deep dive into RxJS Subjects" was especially helpful, since it helped cement my understanding and clear misconceptions I had been having, including when to use and the difference between Subjects, BehaviorSubjects, ReplaySubjects, and AsyncSubjects. I also learned the importance of proper cleanup after use, something that I hadn't given too much attention.
Another helpful session was the one on Zone.js, which is something I've always wanted to use but never got around to. This session opened my eyes to the possibilities offered by Zone.js, especially its applications in testing, debugging and error handling.
One of the most popular sessions was by 11-year old Aaron Ma, a self-taught ML expert. His session on ML on Angular with Tensorflow.js was met with wide acclaim, and the session explained how and when browser-based ML can be applied. This was interesting, although practical applications may be few.
Other sessions included one on security, human perception, ghost elements, ng Elements, and so on. Each of them was endearing on its own, and there was no one session that was underwhelming.
Thoughts on the conference:
The entire conference was split into multiple sessions running parallelly, and the sessions were either 40min or 15min long. This meant the breadth of the entirety of knowledge being shared was large, compromising the depth of a particular topic. That works, IMO. The attendees of these conferences are there to expand their knowledge, not to learn about a particular thing from scratch to guru. It also allows us to pick and choose topics as per interest/need. So kudos to them.


Welcome to NeuralNetLib’s documentation!¶
NeuralNetLib will support you create your own neural network. You can choose an amount of layers, length of each layer, activation function and learning rate.
This lib is written from the book “Make your own neural network by Tariq Rashid”
- Use:
>>> # create neural net with 3 layers, each are corresponds to 1, 1, 1 ... # learning rate = 0.1 ... # activation function is sigmoid ... # you can choose each of this params yourself ... nn = NN(layer=[1, 1, 1], lr=0.1, activation_func=my_sigmoid) ... # data for train our nn ... learn = [np.array([np.random.rand(), ]) for i in range(100)] ... uns = [my_sigmoid(0.3*my_sigmoid(0.7*i)) for i in learn] ... # train our nn ... nn.train(learn, uns) ... # and test it ... nn.query([0.8, ]) ... # the answer will be between 0.53 and 0.55
Installation¶
git clone https://github.com/NikitaSUAI/NeuralLib
py -m pip install -r requirements.txt
Requirements¶
Python 3.9
Numpy
Matplotlib
License¶
The project is licensed under the MIT license.
The User Guide¶
-
class
NN.
NN
¶
-
NN.NN.
__init__
(self, **params)¶ Configure your own network with key-word args
- Parameters
params (Dict) – Options.
layer (List[int]) – list of layers like [ size of first layer, size of second layer, …] len(layers) - amount of layers.
lr (float) – learning rate.
activation_func (def af(np.array)->np.array) – pointer to custom activation function
- Raise
KeyError from kwargs.
- Returns
NN object that ready to work.
- Return type
NN object
- Todo
add type hinting for kwargs
add loading from file
add kwargs for derivative of an activation function
-
NN.NN.
train
(self, signals: numpy.array, answer: numpy.array)¶ Methode use backpropagation of errors to train neural net
- Parameters
signals (np.array) – signal for input layer of neural net
answer (np.array) – answer for comparison
- Todo
detach plotting
-
NN.NN.
backpropagation
(self, err)¶ - Parameters
err (np.array) – difference between correct answer and answer of nn
- Returns
matrix of errors for each layer
- Return type
List[np.array]
- Todo
take away derivative of an af
remove unnecessary comments
-
NN.NN.
query
(self, signal: numpy.array)¶ Predict answer
- Parameters
signal (np.array) – signal for input layer of neural net. Len of signal must equal len of first layer.
- Raise
BaseException.
- Returns
predicted answer of neural net.
- Return type
np.array
- Todo
change exception
take away self.signals (PEP)
-
NN.NN.
save
(self, path='params/params.json')¶ Save params of nn to json file (not working yet)
- Parameters
path – path to json file with params of neural network, by default is “params/params.json”
- Todo
end this methode
-
NN.NN.
load
(self, path='params/params.json')¶ Load params of nn from json file (not working yet)
- Parameters
path – path to json file with params of neural network, by default is “params/params.json”
- Todo
end this methode
-
NodeModel.
sigmoid
(x)[source]¶ Template of an activation function. This template better with large arrays. It call scipy.special.expit().
- Parameters
x – (np.array)
- Returns
(np.array)


Name of the file that keeps a history of the cached data file directories.
Name of the file that stores the cached data file's file-size and file-modification-time. This info is used to sense auto data file changes.
Mobi_Mtld_DA_Device_TreeOptimized $obj = new Mobi_Mtld_DA_Device_TreeOptimized()
Create the JSON tree handler.
void $obj->getDataCreationTimestamp()
Get data file creation timestamp
void $obj->getDataVersion()
Get data file version
string $obj->getLookupSource()
Get the source properties fetch source to be used for debugging.
void $obj->getPropertyNames()
Get the list of all available property names from the tree (not contains client side props)
void $obj->loadTreeFromFile()
Load the JSON tree file into the handler.
void $obj->loadTreeFromString()
Load the JSON tree into the handler.
void $obj->putProperties(string userAgent, array stockUserAgents, string clientside)
Get properties from tree walk/ua/client-side and put them in the tree.properties use cached properties if exists.
void $obj->putTreeWalkProperties(userAgent user-agent, stockUserAgents list)
Get properties from tree walk/ua and put them in the tree.properties if stockUserAgents != null - iterate over stockUserAgents for each item: tree-walk and stop iteration if result has deviceId - use userAgent for detecting the ua-props if stockUserAgents == null - use userAgent for tree walk - use userAgent for detecting the ua-props
void $obj->setConfig(type $config)
Set new config settings via a new Config object.
void $obj->clearCache()
Remove all tree optimization cache files
bool $obj->populateCache(bool force=false)
Break down the DeviceAtlas JSON data file into smaller files and save the batch into "/da-api-temp-dir/batch-cache-dir".


Travis CI
Blog
Status
Something went wrong
It looks like something went wrong with your request.
Please try again later.


Health workers in Northern Ireland vote for strike action
Health workers in Northern Ireland have voted for strike action.
Trade union Unison said its ballot focused on pay and staffing levels.
The union’s elected representatives across the health system will meet on Friday to finalise details for what it described as a “comprehensive industrial action plan”.
It is expected to include strike action and other forms of industrial action across the system.
Health workers do not take industrial action lightly but they have been pushed to the brink
The first of the actions is expected to take place before the end of November.
Unison regional secretary Patricia McKeown said workers feel they have been “pushed to the brink”.
She said: “Health workers do not take industrial action lightly but they have been pushed to the brink.
“Responsibility for averting this critical situation lies with the Department of Health, the head of the NI Civil Service and the Department of Finance.
“They must access the funding necessary to resolve the pay problem and begin to address safe staffing levels as a matter of extreme urgency.
“Their current proposals are rejected by us as wholly inadequate.”
In a statement, the UK's Department of Health said it is currently experiencing a time of “intense budgetary pressures”.
“The department remains focused on finding a way forward – in this context we are currently finalising a formal pay offer for 2019/20,” the statement said.
Despite claims to the contrary, there is no separate or untapped source of funding that we can access - nor can money simply be found in the budget
“This will be the best offer possible within the budget available, but the reality is that our ability to address pay issues is inevitably constrained at a time of intense budgetary pressures for health and social care services.
“These budgetary pressures are clear for all to see, and we have been highlighting these for some considerable time.
“Despite claims to the contrary, there is no separate or untapped source of funding that we can access – nor can money simply be found in the budget.
“As with any other item of expenditure, pay costs come out of the one health budget, which is currently overcommitted. Every pound spent on one priority area is a pound not available for another.”
The vote by Unison workers comes a week after nurses in Northern Ireland voted to strike over staffing numbers and pay disputes.
READ MORE
Judge to be appointed ‘by end of week’ on NI abuse compensation panel


--- layout: post title: no title date: '2013-10-20T18:10:34-07:00' tags: - fermentation - frombrett tumblr_url: http://beekley.xyz/post/64636617292/i-started-reading-sandor-katzs-book-the-art-of ---
I started reading Sandor Katz’s book The Art of Fermentation to give me some insight into future hobby General Fermentation. My first batched of ginger ale were based on internet scouring and compilation of recipes. But Katz likes the do things a little more authentically, using ginger bug from the wild yeasts on the ginger skins. I’m pretty curious how that will turn out and will keep it in mind for Batch #4.
The Art will also advise me on endeavors such as vinegar-making. I’ve got a bottle of Charles Shaw’s finest ready to be converted to acetic acid.


Toggle Themes
Toggle sub-themes
Introduction
Course Intro
- About the course
- What you have to know and what you'll learn
- Prerequisites: setup python, pipenv, git
Git Overview
- Installing and configuring git
- Distributed VCS - Basic Concepts
- Create and configure a git repository
- Adding files to repository and committing changes
- Connect your local git repository to your GitHub/GitLab repository
Web Development Concepts - Overview
- Client-Server Communication. HTTP Basics.
- Client-Side vs Server-Side Rendering (or SPA vs. MPA)
- Web Services, RESTfull APIs.
Client-Side (Front-End) Programming in a Nutshell
- Structuring content with HTML5
- CSS: selectors, basic properties.
- JavaScript and DOM Overview.
- AJAX with XMLHttpRequest (and with jQuery)
Server-Side (Back-End) Programming Overview
- Overview. CGI and modern equivalents.
- Build a simple Web App without a Framework
- Popular Server-Side Frameworks
The Django Framework - Fundamentals
Django - introduction and architecture overview
- What is Django and what problem it solves? A brief history.
- Applications made with Django.
- Django versions.
- The MVC Pattern in Django - MTV (Model Template View)
- Project and Apps.
- Django - database tools overview
- Frame the "Demo App" in Django terms
- Create a skeleton Django Project
The Django Template System
- How Django Template System works?
- Templates Configuration
- Django Template Language Syntax
- Built-In Tags
- Filters
- Template inheritance - extend and reuse templates
Django and static resources (images, JavaScript, CSS, etc.)
- Access Static Resources in Django Templates
Views and Routing
- How Django Process a Request
- Views and URL configuration
- Path converters
- URL patterns
- URL parameters and query strings
- URL names and namespaces
- Class-based Views Introduction
Django ORM
Django ORM Overview
- Django ORM Overview
- The Migrations Workflow
- Model Fileds
- Models Relationships
- The Model Methods
- Model Transactions
- Initial Data Setup (fixtures)
Django ORM Model Queries
- Field lookup with Django ORM
- Merge and aggregate queries
- Expression and Function Queries
- Model Queries with Raw SQL
- Django ORM CRUD operations
Using Django ORM with MySQL/Oracle
- Connecting to and configuring the Database
- Common issues
Django Advanced Forms and CRUD Operations
File Upload With Django
- Overview and settings
- the
upload_to
parameter
CRUD Operations
- Configure a DB for Django Project
Advanced DB and ORM
Using Django with legacy DB
- Create the demo project
- The database
- Introspect the database tables with inspectdb
- Using more than one database
Access a database directly and execute SQL queries
- Connections and Cursors
- Using more than one database
Django middleware
Django’s middleware framework
- Overview
- Writing custom middlewares
Users, Authentication and Admin Management
Django User System
- Overview
- Create and manage Users
- Create and manage Groups
- User Permissions
- Model Permissions
- Enforce Django permissions in views, urls, templates, models
Django Session Framework
- Setup the Session Middleware
- Using Sessions in Views
- Setup Cookies
- Saving Sessions
Web Services, Web Sockets and Django
Django REST Framework
- Overview of REST Services with Django
- Introduction to Django REST Framework (DRF)
- Serializers and Views
- View Sets and Routers
[Optional] Django and Web Sockets
- WebSockets Overview
- WebSockets vs. REST APIs
- WebSockets with Django Channels
Building Full-Stack Applications with Django and Angular
Angular Crash Course
- Overview
- Getting started with Angular
- ES6 and Type Script concepts used in Angular
- Angular Components Basics
- Angular Directives
- Angular Data and Events Bindings
- Angular Services and Dependency Injection
- Angular Routers
Build a Full-Stack REST API App with Django and Angular
- Build the Django API Endpoints with DRF.
- Consuming the REST API Using Angular 6 HttpClient
- Deploy to production server
Build a Real time Web application with WebSockets, Django and Angular
- Setup the WebSockets in server (Django Channels)
- Setup the client-side with Angular WebSockets
- Deploy to production server
[Optional] Data Visualization with Angular and D3
- D3.js overview
- Using D3.js with Angular
Deployment and testing of Django Applications
Deploy a Django App to production server
- Separate project settings
- Setting up the (nginx/Apache) server (for demo/test purposes)


Last night I had my first breakthrough with Salvia divinorum. It was the fifth time that I've smoked it, but the first time that anything out of the ordinary happened. My first two times were with untreated leaves. They made me a little lightheaded. The next two times, I used about 3/4 leaves with a pinch of 6x extract. This fifth time, I used a tiny amount of leaves as a screen to keep the finely ground extract from falling into the bong. The rest of the bowl was filled with the extract.
I prepared the Salvia as suggested by others here and elsewhere. I used a bong, torch lighter and kept the flame on the leaf as I inhaled. I held it in for about fifteen seconds.
After I exhaled, I felt the same lightheadedness of the previous 4 times I used it. Then something new and terrifying. I had this sensation all over my body like I was standing in hundred mile per hour winds. Like my body was being blown away and my blood was boiling.
That sensation faded slightly and over the next ten minutes or so my peripheral vision was completely blurred. I was sitting and staring at the floor/wall in front of me. I had no sense of vertical or horizontal. Everything was on the same plane - it was all two dimensional. My computer was running on the other side of the room and the fan sounded DEAFENING. It was drowning out my own thoughts. I was also unable to move this whole time. I don't even think I blinked throughout these ten minutes.
My mind was racing. I was terrified having never experienced anything like this before. For a time I thought that I had died. I thought that my soul had fallen through a crack in the universe. I had a feeling of total isolation, like God himself was unable to find me and that I was going to be stuck in this place for eternity. Stuck staring at this two dimensional vision with the buzzing of my computer fan echoing through my head. I thought that I had unplugged myself from 'The Matrix' and that maybe this was reality. I was thrown into a new world without a physical body and without physical limits and I had no idea how I was going to navigate it.
After about ten minutes of complete shock I began to be able to turn my head from side to side. I realized that I wasn't dead after all. That's when I noticed that I was standing up. I don't know how I managed to do that without falling over. My body continued to have a very disconnected feeling for the next 20 minutes or so. I was still scared and started sweating like I had just sprinted a mile. I drank some water and sat down until the feeling left me completely.
Overall, it was a horrifying experience. It was like waking from a bad nightmare that sticks with you for the rest of the day. I had this incredible fear of dying for some time afterward. Thinking that I had already experienced death and the afterlife and it was worse than any description of hell I'd ever imagined. I do not plan to use this drug again.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


1. Overview
The OpenVINO™ (Open visual inference and neural network optimization) toolkit provides a ROS2 compatible runtime framework of neural network which quickly deploys applications and solutions for vision inference. By leveraging Intel® OpenVINO™ toolkit and corresponding libraries, this runtime framework extends workloads across Intel® hardware (including accelerators) and maximizes performance.
* Enables CNN-based deep learning inference at the edge.
* Supports heterogeneous execution across computer vision accelerators—CPU, GPU, Intel® Movidius™ Neural Compute Stick, and FPGA—using a common API.
* Speeds up time to market via a library of functions and preoptimized kernels.
* Includes optimized calls for OpenCV and OpenVX.
2. Running the demo
* Preparation
download and convert a trained model to produce an optimized Intermediate Representation (IR) of the model
source /opt/intel/computer_vision_sdk/bin/setupvars.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/computer_vision_sdk/deployment_tools/inference_engine/samples/build/intel64/Release/lib
* Connect Intel® Neural Compute Stick 2 to USB port of system
run face detection sample code input from standard RGB camera.
source /opt/robot_sdk/robot_sdk_setup.bash
ros2 launch dynamic_vino_sample pipeline_people_myriad.launch.py
run object detection sample code input from RealSense™.
source /opt/robot_sdk/robot_sdk_setup.bash
ros2 launch dynamic_vino_sample pipeline_object.launch.py
Please refer to here for more usages.
3. Key Interfaces
Subscribed Topic
* Image topic: /openvino_toolkit/image_raw(sensor_msgs::msg::Image)
Published Topic
* Face Detection: /ros2_openvino_toolkit/face_detection(object_msgs::msg::ObjectsInBoxes)
* Emotion Recognition: /ros2_openvino_toolkit/emotions_recognition(people_msgs::msg::EmotionsStamped)
* Age and Gender Recognition: /ros2_openvino_toolkit/age_genders_Recognition(people_msgs::msg::AgeGenderStamped)
* Head Pose Estimation: /ros2_openvino_toolkit/headposes_estimation(people_msgs::msg::HeadPoseStamped)
* Object Detection: /ros2_openvino_toolkit/detected_objects(object_msgs::msg::ObjectsInBoxes)
* Object Segmentation: /ros2_openvino_toolkit/segmented_obejcts(people_msgs::msg::ObjectsInMasks)
* Rviz Output: /ros2_openvino_toolkit/image_rviz(sensor_msgs::msg::Image)
Service
* Object Detection Service: /detect_object(object_msgs::srv::DetectObject)
* Face Detection Service: /detect_face(object_msgs::srv::DetectObject)
* Age & Gender Detection Service: /detect_age_gender(people_msgs::srv::AgeGender)
* Headpose Detection Service: /detect_head_pose(people_msgs::srv::HeadPose)
* Emotion Detection Service: /detect_emotion(people_msgs::srv::Emotion)
face detection input from image
object detection input from RealSense™
object segmentation input from video
Person Reidentification input from standard camera
4. Known issues
--
5. ToDo
* Support result filtering for inference process, so that the inference results can be filtered to different subsidiary inference. For example, given an image, firstly we do Object Detection on it, secondly we pass cars to vehicle brand recognition and pass license plate to license number recognition.
* Design resource manager to better use such resources as models, engines, and other external plugins.
* Develop GUI based configuration and management tools (and monitoring and diagnose tools), in order to provide easy entry for end users to simplify their operation.


public class TestOptions
extends java.lang.Object
implements java.io.Serializable
| Modifier and Type | Field and Description |
|---|---|
boolean |
addMissingFinalPunctuation
If a token list does not have sentence final punctuation near the
end, then automatically add the default one.
|
double |
depWeight
Weighting on dependency log probs.
|
boolean |
doRecovery
If true, then failure of the PCFG factor to parse a sentence
will trigger parse recovery mode.
|
boolean |
evalb
Write EvalB-readable output files.
|
int |
evalPCFGkBest
If using a kBest eval, use this many trees.
|
java.util.Properties |
evals
What evaluations to report and how to report them
(using LexicalizedParser).
|
boolean |
exhaustiveTest |
int |
fastFactoredCandidateAddend
This variable says to find k good factored parses, how many added on
best PCFG parses should be examined.
|
int |
fastFactoredCandidateMultiplier
This variable says to find k good fast factored parses, how many times
k of the best PCFG parses should be examined.
|
boolean |
forceTagBeginnings |
boolean |
forceTags
Parse using only tags given from correct answer or the POS tagger
|
boolean |
increasingLength
Parse trees in test treebank in order of increasing length.
|
boolean |
iterativeCKY
If true, use faster iterative deepening CKY algorithm.
|
boolean |
lengthNormalization
Turns on normalizing scores for sentence length.
|
int |
MAX_ITEMS
The maximum number of edges and hooks combined that the factored parser
will build before giving up.
|
int |
maxLength
The maximum sentence length (including punctuation, etc.) to parse.
|
int |
maxSpanForTags
The largest span to consider for word-hood.
|
boolean |
noFunctionalForcing
Only valid with force tags - strips away functionals when forcing
the tags, meaning tags have to start
appropriately but the parser will assign the functional part.
|
boolean |
noRecoveryTagging
If false, then failure of the PCFG parser to parse a sentence
will trigger allowing all tags for words in parse recovery mode,
with a log probability of -1000.
|
java.lang.String |
outputFilesDirectory
If the writeOutputFiles option is true, then output files appear in
this directory.
|
java.lang.String |
outputFilesExtension
If the writeOutputFiles option is true, then output files appear with
this extension.
|
java.lang.String |
outputFilesPrefix
If the writeOutputFiles option is true, then output files appear with
this prefix.
|
java.lang.String |
outputFormat
Determines format of output trees: choose among penn, oneline
|
java.lang.String |
outputFormatOptions |
java.lang.String |
outputkBestEquivocation
If this option is not null, output the k-best equivocation.
|
boolean |
pcfgThreshold
If this variable is true, and the sum of the inside and outside score
for a constituent is worse than the best known score for a sentence by
more than
pcfgThresholdValue , then -Inf is returned as the
outside Score by oScore() (while otherwise the true
outside score is returned). |
double |
pcfgThresholdValue |
boolean |
preTag
Tag the sentences first, then parse given those (coarse) tags.
|
boolean |
printAllBestParses
Print out all best PCFG parses.
|
int |
printFactoredKGood
Printing k-best parses from PCFG, when k > 0.
|
int |
printPCFGkBest
Printing k-best parses from PCFG, when k > 0.
|
boolean |
prunePunc |
boolean |
quietEvaluation
When evaluating, don't print out tons of text.
|
boolean |
sample
Used when you want to generate sample parses instead of finding the best
parse.
|
java.lang.String |
taggerSerializedFile
POS tagger model used when preTag is enabled.
|
int |
testingThreads
Number of threads to use at test time.
|
double |
unseenSmooth
The amount of smoothing put in (as an m-estimate) for unknown words.
|
boolean |
useFastFactored
If true, use approximate factored algorithm, which just rescores
PCFG k best, rather than exact factored algorithm.
|
boolean |
useLexiconToScoreDependencyPwGt
If this is true, the Lexicon is used to score P(w|t) in the backoff inside the
dependency grammar.
|
boolean |
useN5
If true, the n^4 "speed-up" is not used with the Factored Parser.
|
boolean |
useNonProjectiveDependencyParser
If this is true, perform non-projective dependency parsing.
|
boolean |
verbose
Print a lot of extra output as you parse.
|
boolean |
writeOutputFiles
If true, write files parsed to a new file with the same name except
for an added ".stp" extension.
|
| Constructor and Description |
|---|
TestOptions() |
| Modifier and Type | Method and Description |
|---|---|
void |
display() |
java.lang.String |
toString() |
TreePrint |
treePrint(TreebankLangParserParams tlpParams)
Determines method for print trees on output.
|
public boolean noRecoveryTagging
public boolean doRecovery
public boolean useN5
public boolean useFastFactored
public boolean iterativeCKY
public int maxLength
public int MAX_ITEMS
public double unseenSmooth
public boolean increasingLength
public boolean preTag
public boolean forceTags
public boolean forceTagBeginnings
public java.lang.String taggerSerializedFile
public boolean noFunctionalForcing
public boolean evalb
public boolean verbose
public final boolean exhaustiveTest
public final boolean pcfgThreshold
pcfgThresholdValue
, then -Inf is returned as the
outside Score by oScore()
(while otherwise the true
outside score is returned).public final double pcfgThresholdValue
public boolean printAllBestParses
public double depWeight
public boolean prunePunc
public boolean addMissingFinalPunctuation
public java.lang.String outputFormat
public java.lang.String outputFormatOptions
public boolean writeOutputFiles
public java.lang.String outputFilesDirectory
null
) means to use
the directory of the source files. Use ""
or .
for the current directory.public java.lang.String outputFilesExtension
""
for no extension.public java.lang.String outputFilesPrefix
public java.lang.String outputkBestEquivocation
public int maxSpanForTags
public boolean lengthNormalization
public boolean sample
public int printPCFGkBest
public int evalPCFGkBest
public int printFactoredKGood
public java.util.Properties evals
-evals "depDA=false"
) if you don't want
them.
LB = ParseEval labeled bracketing, public int fastFactoredCandidateMultiplier
public int fastFactoredCandidateAddend
public boolean useLexiconToScoreDependencyPwGt
public boolean useNonProjectiveDependencyParser
public int testingThreads
public boolean quietEvaluation
public TreePrint treePrint(TreebankLangParserParams tlpParams)
tlpParams
- The treebank parser paramspublic void display()
public java.lang.String toString()
toString
in class java.lang.Object


Module development utilities
What can help you write/test/improve your module(s)
Here is a list of modules that you can find in the Perl 6 ecosystem which aim to make the experience of developing Perl 6 modules more fun.
Module builder and authoring tools
Some modules and tools to help you with generating files that are part of a module distribution.
App::Assixt The module developer's assistant
App::Mi6 Minimal authoring tool for Perl 6
META6 Do things with Perl 6
META
filesModule::Skeleton Generate a skeleton module
p6doc Generate documentation end-products
Tests
Some tests of module quality.
Test::META Test your META6.json file
Test::Output Test the output to STDOUT and STDERR your program generates
Test::Screen Use GNU screen to test full screen VT applications
Test::When Control when your tests are run (author testing, online testing, etc.)
NativeCall
Here some modules to help you work with NativeCall.
NativeHelpers::Array Provides routines to deal with CArray
App::GPTrixie Generate NativeCall code from C headers file
NativeCall::TypeDiag Provides routines to test your CStruct
Sample modules
Modules that exist only as minimalist examples, tests for installers, or skeletons.
Foo A module with two distributions of different versions


Learned about the communication between computers, servers and web browsers. How opening a web page sends a HTTP Request to a server which in turn finds the appropriate HTML document for that page, sends it back to the computer and is tranlated into the page we see by the web browsers we have e.g Chrome, Firefox and if you're a really patient person, Internet Explorer
The HTML Document is made of several things: Text content that we see on the page, HTML Markup which edits how the page looks, References to images and videos, and even links to other pages.
Secondly: How HTML Documents are createdHTML documents are made of HTML elements. When writing HTML, we tell browsers the type of each element by using HTML tags.
Making text look different is one part of what HTML Markup is all about. HTML Markup consists of tags that appear in brackets like these < > - opening bracket and having a "/" - in the closing bracket ends that element. Several different tags make the text in the document look differently.
Examples are putting a "b" or an "em" in the tiny brackets. The first one makes everything in between the opening and closing bracket bold while the second one writes everything in italics.
Some tags are inline tags while some are block tags. Inline tag ends a line and starts the next words on a different line. While Block tags create an invisible block around the text. Pretty cool stuff and the further we go, the more I hope to learn more information that I can share.


Thursday, Apr 6, 2017
chef-os-hardening 2.0.0 is released
DevSec Hardening Framework project is releasing a new major release chef-os-hardening 2.0.0 today.
The major points of this release are listed below, however there are also many changes under the hood like cleanups of documentation, improvements of the cookbook testing.
Many thanks for the contributions and help we received from our users and community!
Highlights and breaking changes:
- New attribute namespace
['os-hardening']
for the entire cookbook - Removal of dependencies to the
apt
andyum
cookbooks - Usage of modern versions of
sysctl
dependency cookbook - Cleanup and resolution of Chef deprecations - preparation for the Chef 13 release
New attributes:
['os-hardening']['auth']['pw_warn_age']
allows the configuration of number of days before maximum password age occurs to warn of impending change change
Please checkout the full changelog and README for more details.
We are looking forward to get your feedback via GitHub issues or Gitter chatroom. And you can follow us on Twitter.


--- layout: default ---
{{ page.description }}
An interactive map of Austin parks that you can search by amenity.
A scorecard to track adoption of CoA’s Open Data Initiative
A data visualization of the bus’ actual versus planned schedule


First page Back Continue Last page Overview Graphics
forGL and Math
Math Notation : depends on context.
Different branches of Math use same notation to mean different things. Same notation may be used with different order of appearance.
Infix is typical & some prefix and postfix.
Math Concepts :
Absolute accuracy and exact precision may not fit well with computer Hardware or programming Software.


Kudija Kitchen Banana Bread Pot Roast Veggie Egg Scramble White Bean, Kale, and Sausage Soup Bowtie Caesar Salad BBQ Chicken Pizza Breakfast Burritos & Smoothie Harvest Skillet Ramen Noodle Veggie Stir Fry Chocolate Chip Cookies Lemon Garlic Chicken with Broccoli Banana Oat Muffins Garlic Butter Steak, Potatoes, and Asparagus Summer Roasted Salad Vegan Stuffed Sweet Potatoes Homemade Ice Cream Wedding Soup Sweet Sloppy Joes Pesto Tortellini With Veggies Mozzarella and Asparagus Stuffed Chicken Sweet & Sour Chicken Ice Cream Sandwich Turkey Burgers Special Orange Juice Spicy Tuna Wraps Honey Garlic Salmon Chicken Avocodo Burritos Pulled Pork Lava Cakes White Bean Turkey Chili Tortellini Bake White Chicken Spinach Pizza Roasted Pepper Fettuccine Pesto Grilled Cheese Lemon Broccoli Pasta Chicken Parmesan
Kudija Kitchen Hi there! We are Jordan and Matthew. We love to cook and experiment with new recipes! We wanted to create a blog to keep track of our creations and thought others might enjoy following along! Cheers! #kudijakitchen


Module deathinventorydrop
A system which makes the player drop their inventory when they die.
Functions
-
activate ()
-
Activates the system, if it has not been disabled in the configuration by
setting "deathinventorydrop_activate" to "false".
-
activate_internal ()
-
Activates the system, without checking the configuration. Multiple
invocations have no effect.
-
drop (player)
-
Drops the inventory of the given player.
Parameters:
- player
The Player object of which to drop the inventory.
-
drop_inventory (player, inventory, list_name)
-
Drops the given list from the given player, removing all items from
the list.
Parameters:
- player
The Player object.
- inventory
The InvRef object.
- list_name
The name of the list of which to drop.
-
take_from_inventory (items, total_item_count, range)
-
Takes random amount from the given list and returns the taken items.
Parameters:
- items
The list of items.
- total_item_count
The total count of items in the list.
- range
The range, having min and max values.
Returns:
The list of taken items.
Fields
-
activate_automatically
-
If the system should be activated automatically.
-
active
-
If the system is active/has been activated.
-
autopickup_disable
-
If the field should be set to disable auto-pickup.
-
autopickup_timeout
-
The timeout value to set for auto-pickup.
-
inventories
-
The list of inventories/list names to drop, they need to be in players
inventory, defaults to "main".
-
percentage_destroyed_items
-
The percentage of destroyed items.
-
percentage_retained_items
-
The percentage of retained items.
-
split
-
The split mode to use, can either be "random", "single" or "stack",
defaults to "random".
-
velocity
-
The velocity with which the items are dropped, defaults to "7, 10, 7".


Adam J Sullivan
Assistant Professor of Biostatistics
Brown University
time to event
), where rate can depend on time in many cases. Time to relapse after end of treatment among cancer patients.
Length of stay in hospital for patients who suffered a heart attack.
The random variable of interest, \(T\) is the time to the event of interest. We then know that \(T\) is positive and by definition: \[T\ge0\]
The Survival function, \(S(t)\), is the proportion of individuals who have not experienced at event at some time \(t>0\).This is defined by: \[S(t) = \Pr(T>t)\]
###Features of \(S(t)\)
A survivor function is a sequence of probabilities up till time \(t\) \[0\le S(t)\le1, \qquad \text{ for each } t\ge0\]
At time, \(t=0\), \(S(0)=1\).
\(S(t)\) decreases as events happen over \(t\)
For large, \(t\), such as \(t=\infty\), \(S(t)\) goes to 0.
Graphical displays are a common method to display summaries survivor functions.
The Hazard function is defined as the instantaneous rate of failure at time \(t\), given that a subject as survived up until time \(t\).
It is also referred to as:
In mathematical terms:
\[\begin{aligned} h(t) &= \lim_{\Delta t\to 0}\left[ \dfrac{\Pr\left(t\le T\le t + \Delta t| T\ge t\right)}{\Delta t} \right]\\ &= \lim_{\Delta t\to 0}\left[ \dfrac{\Pr\left(t\le T\le t + \Delta t \right)}{\Delta t \Pr\left(T\ge t\right)} \right]\\ \end{aligned}\]
Note:
Definitions:
Then we have that
\[(t) = \Pr(T\le t) = 1-\Pr(T\ge t) = 1-S(t)\] \[h(t) = \dfrac{f(t)}{S(t)} = \dfrac{f(t)}{1-F(t)}\]
This means by definition:
\[\dfrac{d}{dt}S(t) = \dfrac{d}{dt}F(t) = -f(t)\]
Thus we have that
\[h(t) = \dfrac{f(t)}{S(t)} = -\dfrac{\dfrac{d}{dt}S(t))}{S(t)} = -\dfrac{d}{dt}\log\left[S(t)\right]\]
Finally
\[S(t) = \exp\left(-\int_0^t h(u)du\right) = \exp\left(-\Lambda(t)\right)\]
where \(\Lambda(t) = \int_0^th(u)du\) is the cumulative risk (hazard) function.
\[\begin{aligned} h(t)&= \lambda\\ \Lambda(t) &= \int_0^t h(u)du = \lambda t\\ S(t) &= \exp\left(-\Lambda(t)\right) = e^{-\lambda t}\\ \end{aligned}\]
Let us say the we have a constant hazard of \[h(t) = 0.01\text{ cases/person-year}\]
Then the incidence of developing disease per year:
\[ \begin{aligned} \Pr(t=10) = 0.01e^{-0.01(10)}= 0.009\text{ in year 10}\\ \Pr(t=1) = 0.01e^{-0.01(1)}= 0.010\text{ in year 1}\\ \end{aligned} \]
This means the probability of developing the disease by year 10 is \[S(t)=e^{-0.01(10)}=0.905\]
Let us say that we have a hazard rate that changes linearly with time
\[ \begin{aligned} h(t) &= 0.01*t\text{ cases/person-year}\\ h(5) &= 0.05\\ h(10)&= 0.1\\ \end{aligned} \]
Then we have the following PDF:
\[ \begin{aligned} f(t) = h(t)\exp\left(-\int_0^th(u)du\right) &= 0.01\exp\left(-\int_0^t0.01udu\right)= 0.01\exp\left(-0.005t^2\right)\\ f(5) &= 0.088\\ f(10) &= 0.06\\ \end{aligned} \]
This gives us the following survival
\[\begin{aligned} S(t) = \exp\left(-\int_0^th(u)du\right) &= \exp\left(-\int_0^t0.01udu\right)= \exp\left(-0.005t^2\right)\\ S(5) &= 0.88\\ S(10) &= 0.6\\ \end{aligned}\]
All can be used if there was no censoring.
This implies that \[\Pr(C|T=t)=\Pr(C)\]
Example when valid
Example when not valid
Many times we use nonparametric estimators - This requires that \(C\) is independent of \(T\).
We begin with an example of Remission times (time to relapse) measured in weeks for 21 leukemia patients: \[T_i = 1,1,2,2,3,4,4,5,5,8,8,8,8,11,11,12,12,15,17,22,23\]
Our goal is to estimate \(S(t)\) so we consider:
\[\hat{S}(t) = \dfrac{1}{n}\sum_{i=1}^n I(T_i\ge t)\]
For example we have that
Then since this is a binomial random variable, we can consider the variance of \(S(t)\) as \[Var\left[S(t)\right]= nS(t)\left[1-S(t)\right]\]
library(survival)
T.1 <- c(1,1,2,2,3,4,4,5,5,8,8,8,8,11,11,12,12,15,17,22,23)
event.1 <- rep(1, length(T.1))
Y <- Surv(T.1, event.1==1)
K.M <- survfit(Y~1)
summary(K.M)
## Call: survfit(formula = Y ~ 1)
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 1 21 2 0.9048 0.0641 0.78754 1.000
## 2 19 2 0.8095 0.0857 0.65785 0.996
## 3 17 1 0.7619 0.0929 0.59988 0.968
## 4 16 2 0.6667 0.1029 0.49268 0.902
## 5 14 2 0.5714 0.1080 0.39455 0.828
## 8 12 4 0.3810 0.1060 0.22085 0.657
## 11 8 2 0.2857 0.0986 0.14529 0.562
## 12 6 2 0.1905 0.0857 0.07887 0.460
## 15 4 1 0.1429 0.0764 0.05011 0.407
## 17 3 1 0.0952 0.0641 0.02549 0.356
## 22 2 1 0.0476 0.0465 0.00703 0.322
## 23 1 1 0.0000 NaN NA NA
library(GGally)
plot(K.M, main="Survival Curve No Censoring", xlab="Weeks", ylab="Survival", col=c(3,4, 4))
legend(15, .9, c("Survival", "95% CI"), lty = 1:2, col=c(3,4))
We can also plot the hazard:
library(GGally)
plot(K.M, fun="cumhaz", main="Hazard Curve No Censoring", xlab="Weeks", ylab="Hazard", col=c(3,4, 4))
legend(0, 3, c("Hazard", "95% CI"), lty = 1:2, col=c(3,4))
We can also plot the hazard:
We go back to the same study as before. This was published in 1965 by Gehan. There were 21 patients in a control group and 21 patients in a drug group. They were followed to see how long in weeks before they relapsed.
We can enter these into R but this time we need to account for the censoring
T.1 <- c(1,1,2,2,3,4,4,5,5,8,8,8,8,11,11,12,12,15,17,22,23)
event.1 <- rep(1, length(T.1))
group.1 <- rep(0,length(T.1))
T.2 <- c(6,6,6,6,7,9,10,10,11,13,16,17,19,20,22,23,25,32,32,34,35)
event.2 <- c(0,1,1,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0)
group.2 <- rep(1, length(T.2))
T.all <- c(T.1,T.2)
event.all <- c(event.1,event.2)
group.all <- c(group.1, group.2)
leuk2 <- data.frame(cbind(T.all, event.all, group.all))
The control group was easy to analyze as it had no censoring so we could calculate it by hand. However with the introduction to censoring we need a new estimator.
Let
The Kaplan-Meier estimate of survival is:
Then
\[\Pr(T_i>t_k) = \Pr(T_i>t_1|\text{at risk at }t_1) \times \cdots \times \Pr(T_i>t_k|\text{at risk at }t_k)\]
Then we have that for \(0\le t < t_1\)
\[\hat{S}(t) = 1 \]
Then for \(t_1 \le t < t_2\) we have that:
\[\begin{aligned} \hat{S}(t) &= \Pr(T>t_1)|\text{at risk at }t_1)\\ &= 1- \dfrac{d_1}{n_1}\\ &= \dfrac{n_1-d_1}{n_1}\\ \end{aligned}\]
for \(t_2 \le t < t_3\) we have that:
\[\begin{aligned} \hat{S}(t) &= \Pr(T>t_1)|\text{at risk at }t_1) \times \Pr(T>t_2)|\text{at risk at }t_2)\\ &= \hat{q}_1 \times \hat{q}_2\\ &= \left(\dfrac{n_1-d_1}{n_1}\right)\left(\dfrac{n_2-d_2}{n_2}\right)\\ &= \prod_{j=1}^2 \left(\dfrac{n_j-d_j}{n_j}\right) \end{aligned}\]
thus for any \(t_i \[\hat{S}(t) = \prod_{j=1}^i \left(\dfrac{n_j-d_j}{n_j}\right) = \prod_{j=1}^i \hat{q}_j\]
In R:
leukemia.surv <- survfit(Surv(T.all, event.all) ~ group.all , data=leuk2)
summary(leukemia.surv)
In R:
## Call: survfit(formula = Surv(T.all, event.all) ~ group.all, data = leuk2)
##
## group.all=0
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 1 21 2 0.9048 0.0641 0.78754 1.000
## 2 19 2 0.8095 0.0857 0.65785 0.996
## 3 17 1 0.7619 0.0929 0.59988 0.968
## 4 16 2 0.6667 0.1029 0.49268 0.902
## 5 14 2 0.5714 0.1080 0.39455 0.828
## 8 12 4 0.3810 0.1060 0.22085 0.657
## 11 8 2 0.2857 0.0986 0.14529 0.562
## 12 6 2 0.1905 0.0857 0.07887 0.460
## 15 4 1 0.1429 0.0764 0.05011 0.407
## 17 3 1 0.0952 0.0641 0.02549 0.356
## 22 2 1 0.0476 0.0465 0.00703 0.322
## 23 1 1 0.0000 NaN NA NA
##
## group.all=1
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 6 21 3 0.857 0.0764 0.720 1.000
## 7 17 1 0.807 0.0869 0.653 0.996
## 10 15 1 0.753 0.0963 0.586 0.968
## 13 12 1 0.690 0.1068 0.510 0.935
## 16 11 1 0.627 0.1141 0.439 0.896
## 22 7 1 0.538 0.1282 0.337 0.858
## 23 6 1 0.448 0.1346 0.249 0.807
suppressMessages(library(survminer))
ggsurvplot(leukemia.surv, conf.int = TRUE, risk.table = TRUE, risk.table.col="strata",
legend.labs = c("Placebo", "Treatment"),break.time.by=5)
These are based on Greenwood Formula
\[\widehat{Var}\left(\log\left[\hat{S}(t_i)\right]\right) = \sum_{j=1}^i \dfrac{d_j}{n_j(n_j-d_j)}\]
Thus a 95% CI for \(\log\left[S(t_i)\right]\) is: \[\log\left[\hat{S}(t_i)\right] \pm 1.96\sqrt{\widehat{Var}\left(\log\left[\hat{S}(t_i)\right]\right)}\] and a 95% CI for \(S(t_i)\) is
\[\hat{S}(t_i)\cdot\exp\left[\pm 1.96\sqrt{\widehat{Var}\left(\log\left[\hat{S}(t_i)\right]\right)}\right]\]
Recall
\[\Lambda(t) = \int_0^t h(u)du\] \[\text{and}\] \[S(t) = \exp\left(-\Lambda(t)\right)\]
If we consider the cumulative risk (hazard) function:
This cumulative hazard estimator is
\[\hat{\Lambda}(t) = \sum_{t_j\le t} \dfrac{d_j}{n_j}\] where \(d_j\) is the number of events observed at \(t_j\) and \(n_j\) is the number of subjects at risk at time \(t_j\)
\[\widehat{Var}\left(\hat{\Lambda}(t)\right) = \sum_{t_j\le t} \dfrac{d_j}{n^2_j}\]
leukemia.haz <- survfit(Surv(T.all, event.all) ~ group.all, type='fleming', data=leuk2)
suppressMessages(library(survminer))
ggsurvplot(leukemia.haz, conf.int = TRUE,
risk.table = TRUE, risk.table.col = "strata",
fun = "cumhaz", legend.labs = c("Placebo", "Treatment"),
break.time.by=5)
The Logrank Test is a hypothesis test for 2 or more independent samples of survival data.
The hypothesis being tested are:
\[H_o: S_1(t) = S_2(t) \text{ for all }t\] \[\text{and}\] \[H_o: S_1(t) \ne S_2(t) \text{ for some }t\]
If \(H_0\) is true then
How do we calculate this test statistic?
We have \(K\) distinct observed failure times:
\[t_1<\cdots at the \(i^{\text{th}}\) observed failure time \(t_i\):
| Treatment | Died | Alive | At Risk |
|---|---|---|---|
| Control | \(a_i\) | \(b_i\) | \(n_{1i}\) |
| Treated | \(c_i\) | \(d_i\) | \(n_{2i}\) |
| total | \(m_{1i}\) | \(m_{2i}\) | \(n_i\) |
where \[\begin{aligned} n_{1i} &= \text{ numer at risk at } t_i \text{ from Control}\\ n_{2i} &= \text{ numer at risk at } t_i \text{ from Treated}\\ m_{1i} &= \text{ number of failures at } t_i\\ m_{2i} &= \text{ number surviving past } t_i\\ n_i &= \text{ total numer at risk at } t_i\\ \end{aligned}\]
This test is exactly the same as a Mantel-Haenszel test applied to \(K\) strata
\[\chi^2_{MH} = \dfrac{\left[\sum_{i=1}^K (a_i - E(a_i))\right]^2}{\sum_{i=1}^K Var(a_i)}\]
where
\[\begin{aligned} E(a_i) &= \dfrac{n_{1i}m_{1i}}{n_i}\\ Var(a_i) &= \dfrac{n_{1i}n_{2i}m_{1i}m_{2i}}{n_i^2(n_i-1)}\\ \end{aligned}\]
We compute the expectation that the null hypothesis is true and there is no difference in survival between the groups. We consider all margins fixed but \(a_i\) is random and thus we have a hypergeometric distribution.
We can run this test in R:
survdiff(Surv(T.all, event.all) ~ group.all)
## Call:
## survdiff(formula = Surv(T.all, event.all) ~ group.all)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## group.all=0 21 21 10.7 9.77 16.8
## group.all=1 21 9 19.3 5.46 16.8
##
## Chisq= 16.8 on 1 degrees of freedom, p= 0.00004
The logrank test can also be written
\[\chi^2_{MH} = \dfrac{\sum_{i=1}^K (a_i - E(a_i))}{\sqrt{\sum_{i=1}^K Var(a_i)}} = \dfrac{D}{\sqrt{v}}\] Which is a standard normal distribution under \(H_0\).
then the stratified logrank is
\[Z_{ST} = \dfrac{\sum_{l=1}^LD_l}{\sqrt{\sum_{l=1}^LV_l}}\]
Under \(H_0\) this is also a standard normal distribution.
For this reason we use continuous distributions but ones other than normal. We will discuss a couple of these:
This is the simplest situation
We have a random variable \(T\) which is the failure time
If treatment cuts the hazard in half, the median survival time is doubled
If survival times follow an exponential distribution with the hazard \(\lambda\) then the number of events \(t\) follows a Poisson distribution with mortality rate \(\lambda\).
Thus when we use Poisson regression the estimated regression coefficients are interpreted as log-hazard ratios.
For example:
Let
Then the exponential regression model is
\[h(t|X=x) = \exp(\beta_0+\beta_1x) = \exp(\beta_0)\exp(\beta_1x)\] This means
\[\begin{aligned} \log\left[h(t|X=0)\right] &= \beta_0\\ &= \log\left( \text{ hazard among people without diabetes}\right)\\ \log\left[h(t|X=1)\right] &= \beta_0 + \beta_1\\ &= \log\left( \text{ hazard among people with diabetes}\right)\\ \beta_1 &= \log\left[h(t|X=1)\right]- \log\left[h(t|X=0)\right]\\ &= \dfrac{\log\left[h(t|X=1)\right]}{\log\left[h(t|X=0)\right]}\\ &= \log\left(\text{ hazard ratio, diabetes vs no diabetes}\right)\\ \end{aligned}\]
We typically test this assumption with a graph
\[\Lambda(t) = \int_0^th(u)du=\lambda t\] This implies that it is a straight line with slope \(\lambda\) and intercept 0.
Recall our Colorectal Cancer data and smoking:
suppressMessages(library(foreign))
phscrc <- read.dta("https://drive.google.com/uc?export=download&id=0B8CsRLdwqzbzSno1bFF4SUpVQWs")
crc.haz <- survfit(Surv(cayrs, crc) ~ csmok, data= phscrc, type='fleming')
suppressMessages(library(survminer))
ggsurvplot(crc.haz, conf.int = TRUE,
risk.table = TRUE, risk.table.col = "strata",
fun = "cumhaz", legend.labs = c("Non-smoker", "<1 pack/day", ">1 pack/day"),
break.time.by=1)
We use the Weibull many times as an alternative to the exponential
The weibull has
The model for weibull hazard is
\[h(t|X_1,\ldots,X_p ) = \lambda\gamma t ^{\gamma-1}\exp\left(\beta_0+\beta_1x_1+\cdots\beta_px_p\right)\]
Then
survreg()
Weibull is not always applicable in some settings. For example
###Why do we use parametric models?
For a time to event \(T\) and covariates \(X_1, \ldots , X_p\) the exponential regression model is:
\[h(t|X_1,\ldots, X_p) = \exp\left(\beta_0 + \beta_1x_1 + \cdots + \beta_px_p\right)\]
The baseline hazard function is defined as the hazard function when all covariates are 0
\[h(t|X_1=0,\ldots, X_p=0) = \exp\left(\beta_0 \right) = h_0(t) = h_0\]
Thus we can rewrite the model as: \[h(t|X_1,\ldots, X_p) = h_0\exp\left( \beta_1x_1 + \cdots + \beta_px_p\right)\]
This suggest that covariate effects are **multiplicative* on the constant baseline hazard, \(h_0\).
For a time to event \(T\) and covariates \(X_1, \ldots , X_p\) the Weibull regression model is:
\[h(t|X_1,\ldots, X_p) = \gamma t^{\gamma-1}\exp\left(\beta_0 + \beta_1x_1 + \cdots + \beta_px_p\right)\] with baseline hazard \[h_0(t) = \exp(\beta_0)\gamma t^{\gamma-1} = \lambda\gamma t^{\gamma-1}\] We can rewrite this as \[h(t|X_1,\ldots, X_p) = h_0(t)\exp\left(\beta_1x_1 + \cdots + \beta_px_p\right)\]
The general Proportional Hazards Model is \[h(t|X_1,\ldots, X_p) = h_0(t)\exp\left(\beta_1x_1 + \cdots + \beta_px_p\right)\]
\[\text{or}\]
\[\log\left[h(t|X_1,\ldots, X_p)\right] = \log\left[h_0(t)\right] + \beta_1x_1 + \cdots + \beta_px_p\]
where \(h_0(t)\) is the baseline hazard function and the "intercept" is \(\log\left[h_0(t)\right]\).
Let
Then
\[\begin{aligned} h(t|X=x) &= h_0(t)\exp(\beta x)\\ h(t|X=0) &= h_0(t)\\ &= \text{ baseline hazard for control group}\\ h(t|X=1) &= h_0(t)\exp(\beta)\\ &= \text{ hazard for treated group}\\ \exp(\beta) &= \dfrac{h(t|X=1)}{h(t|X=0)}\\ \end{aligned}\]
\[\begin{aligned} \log\left[h]h(t|X=0)\right] &= \log\left[h_0(t)\right]\\ \log\left[h]h(t|X=1)\right] &= \log\left[h_0(t)\right] + \beta\\ \end{aligned}\]
Recall \[S(t) = \exp\left(-\Lambda(t)\right)\] with a binary \(X\) we have that
\[\begin{aligned} \Lambda_1(t) &= \Lambda_0(t)\exp(\beta)\\ S_0(t) &= \exp(\Lambda_0(t))\\ -\log(S_0(t)) &= \Lambda_0(t)\\ \log(-\log(S_0(t))) &=\log(\Lambda_0(t))\\ \end{aligned}\]
\[\begin{aligned} S_1(t) = exp(-\Lambda_1(t)) &= \exp\left[\Lambda_0(t)\exp(\beta)\right]\\ -\log(S_1(t)) &= \Lambda_0(t)\exp(\beta)\\ \log(-\log(S_1(t))) &= \log(\Lambda_0(t)) + \beta\\ \end{aligned} \]
Thus we can see that under the assumption of proportional hazards
ggsurvplot(leukemia.surv, legend.labs = c("Placebo", "Treatment"),break.time.by=5, fun="cloglog")
cox.leukemia <- coxph(Surv(T.all, event.all) ~ group.all , data=leuk2 )
summary(cox.leukemia)
## Call:
## coxph(formula = Surv(T.all, event.all) ~ group.all, data = leuk2)
##
## n= 42, number of events= 30
##
## coef exp(coef) se(coef) z Pr(>|z|)
## group.all -1.572 0.208 0.412 -3.81 0.00014 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## group.all 0.208 4.82 0.0925 0.466
##
## Concordance= 0.69 (se = 0.041 )
## Rsquare= 0.322 (max possible= 0.988 )
## Likelihood ratio test= 16.4 on 1 df, p=0.00005
## Wald test = 14.5 on 1 df, p=0.0001
## Score (logrank) test = 17.2 on 1 df, p=0.00003
This would suggest that the hazard for those in a placebo group is 4.8 times that of those in the treated group.
For another example could look at Colorectal Cancer in the PHS:
crc.cox <- coxph(Surv(cayrs, crc) ~ csmok + age , data= phscrc)
summary(crc.cox)
Then we could say that for two people with the same smoking status a one year increase in age would lead to an 8.2% increase in the hazard of colorectal cancer with a 95% CI of 6.9% to 9.6%.
## Call:
## coxph(formula = Surv(cayrs, crc) ~ csmok + age, data = phscrc)
##
## n= 16018, number of events= 254
## (16 observations deleted due to missingness)
##
## coef exp(coef) se(coef) z Pr(>|z|)
## csmok 0.31715 1.37320 0.09767 3.25 0.0012 **
## age 0.07904 1.08224 0.00628 12.58 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## csmok 1.37 0.728 1.13 1.66
## age 1.08 0.924 1.07 1.10
##
## Concordance= 0.724 (se = 0.015 )
## Rsquare= 0.01 (max possible= 0.262 )
## Likelihood ratio test= 160 on 2 df, p=<2e-16
## Wald test = 163 on 2 df, p=<2e-16
## Score (logrank) test = 177 on 2 df, p=<2e-16


{{define "content"}}
Note: work in progress. The message will be received by nobody.
Name
Email Address
Message


--- layout: post title: Python for S60 date: 2004-12-30 00:00:00 categories: mobile personal ---
Now I definitely need to learn Python, tho I'd agree with Rui that better Java bindings would be nicer...


Name*:
Email*:
Loan Amount*: $
Length of Loan*: 15yr 20yr 30yr
Accept the terms of the company’s “privacy policy”


The constructor.
the body of the response
The response data.
The paging of the response.
Gets an array with the caption of the all the media objects. If a media object does not have the 'caption' field, 'undefined' is returned for that object.
an array with the caption of the all the media objects.
Gets a map from the id of the media objects to their caption. If a media object does have not a the 'caption' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'caption'.
Gets an array with the children of the all the media objects. If a media object does not have the 'children' field, 'undefined' is returned for that object.
an array with the children of the all the media objects.
Gets a map from the id of the media objects to their children. If a media object does have not a the 'children' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'children'.
Gets an array with the comments count of the all the media objects. If a media object does not have the 'comments_count' field, 'undefined' is returned for that object.
an array with the 'comments_count' of the all the media objects.
Gets a map from the id of the media objects to their comments count. If a media object does have not a the 'comments_count' field, 'undefined' is returned for that object.
a map from the id of the media objects to whether their 'comments_count'.
Gets an array with the 'is_comment_enabled' of the all the media objects. If a media object does not have the 'is_comment_enabled' field, 'undefined' is returned for that object.
an array with the 'is_comment_enabled' of the all the media objects.
Gets a map from the id of the media objects to whether they have comments enabled. If a media object does have not a the 'is_comment_enabled' field, 'undefined' is returned for that object.
a map from the id of the media objects to whether they have comments enabled.
Gets the response data.
the response data.
Gets an array with the ids of all the media objects.
an array with the ids of all the media objects.
Gets an array with the ig_id of the all the media objects. If a media object does not have the 'like_count' field, 'undefined' is returned for that object.
an array with the ig_id of the all the media objects.
Gets a map from the id of the media objects to their ig_id. If a media object does not have the 'like_count' field, 'undefined' is returned for that object.
a map from the ig of the media objects to their 'ig_id'.
Gets an array with the like counts of the all the media objects. If a media object does not have the 'like_count' field, 'undefined' is returned for that object.
an array with the like counts of the all the media objects.
Gets a map from the id of the media objects to their like count. If a media object does have not a the 'like_count' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'like_count'.
Gets an array with the id of media owner of the all the media objects. If a media object does not have the 'owner' field, 'undefined' is returned for that object.
an array with the id of media owner of the all the media objects.
Gets a map from the id of the media objects to the id of their media owner. If a media object does have not a the 'owner' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'owner.id'.
Gets an array with the media owner of the all the media object. If a media object does not have the 'owner' field, 'undefined' is returned for that object.
an array with the media owner of the all the media objects.
Gets a map from the id of the media objects to their media owner. If a media object does have not a the 'owner' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'owner'.
Gets an array with the media product type of the all the media objects. If a media object does not have the 'media_product_type' field, 'undefined' is returned for that object.
an array with the media product type of the all the media objects.
Gets a map from the id of the media objects to their media product type. If a media object does have not a the 'media_product_type' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'media_product_type'.
Gets an array with the media types of the all the media objects. If a media object does not have the 'media_type' field, 'undefined' is returned for that object.
an array with the media types of the all the media objects.
Gets a map from the id of the media objects to their media type. If a media object does have not a the 'media_type' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'media_type'.
Gets an array with the media URLs of the all the media object. If a media object does not have the 'media_url' field, 'undefined' is returned for that object.
an array with the media URLs of the all the media objects.
Gets a map from the id of the media objects to their media URL. If a media object does have not a the 'media_url' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'media_url'.
Gets the paging of the response.
the paging of the response.
Gets an array with the permalinks of the all the media objects. If a media object does not have the 'permalink' field, 'undefined' is returned for that object.
an array with the permalinks of the all the media objects.
Gets a map from the id of the media objects to their permalink. If a media object does have not a the 'permalink' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'permalink'.
Getsan array with the shortcodes of the all the media objects. If a media object does not have the 'shortcode' field, 'undefined' is returned for that object.
an array with the shortcodes of the all the media objects.
Gets a map from the id of the media objects to their shortcode. If a media object does have not a the 'shortcode' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'shortcode'.
Gets an array with the timestamps of the all the media objects. If a media object does not have the 'timestamp' field, 'undefined' is returned for that object.
an array with the timestamps of the all the media objects.
Gets a map from the id of the media objects to their timestamp. If a media object does have not a the 'timestamp' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'timestamp'.
Gets an array with the usernames of the all the media objects. If a media object does not have the 'username' field, 'undefined' is returned for that object.
an array with the usernames of the all the media objects.
Gets a map from the id of the media objects to their username. If a media object does have not a the 'username' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'username'.
Gets an array with the video titles of the all the media objects. If a media object does not have the 'video_title' field, 'undefined' is returned for that object.
an array with the video titles of the all the media objects.
Gets a map from the id of the media objects to their video title. If a media object does have not a the 'video_title' field, 'undefined' is returned for that object.
a map from the id of the media objects to their 'video_title'.
Generated using TypeDoc
Class that represents a response from a Page Media request.
Tiago Grosso<EMAIL_ADDRESS>0.1.0


--- title: BFRecord keywords: documentation theme, jekyll, technical writers, help authoring tools, hat replacements last_updated: Dec 03, 2018 sidebar: matlab_docs_sidebar permalink: bfrecord.html folder: mydoc ---
BFRecord A representation of a metadata record
Supports local changes.
NOTE: Because of the way that the MATLAB client is implemented,
there are a number of properties names that are restricted as they
are used for internal logic. If you create models on the Blackfynn
platform with property names that match the following list, this
might result in errors in the client.
Restricted property names: {'createdAt', 'updatedAt', 'createdBy',
'updatedBy', 'session_', 'id_', 'type_', 'updated_', 'model_',
'dataset_', 'propNames_'}
| Superclasses | BFBaseNode, dynamicprops |
| Sealed | false |
| Construct on load | false |
| BFRecord | Construct an instance of the BFRECORD Class |
| dataset_ | The dataset that the record belongs to |
| model_ | Associated model |
| propNames_ | Cell array with dynamic property names |
| session_ | Session ID |
| type_ | Type of the record |
| updated_ | Flag to see if record changed |
| getFiles | Returns the files associated with the record | |
| getRelated | Returns an array of related records | |
| getRelatedCount | Returns relationship info for object | |
| Static | gotoSite | Opens the Blackfynn platform in an external browser. |
| link | create relationships between records | |
| linkFiles | LINKFILE Associates a file with the record. | |
| Sealed | methods | Shows all methods associated with the object. |
| update | Update object on the platform |
| ObjectBeingDestroyed | Notifies listeners that a particular object has been destroyed. |
| PropertyAdded | Notifies listeners that a dynamic property has been added. |
| PropertyRemoved | Notifies listeners that a dynamic property has been removed. |


Mustache and WinJS Mashup
This example demonstrates how to use Mustache templates with WinJS controls that accept WinJS.Binding.Template
Declarative Mustache Templates with Declarative WinJS Repeater
Programmatic Mustache Templates with Declarative WinJS Repeater
Programmatic Mustache Templates with Programmatic WinJS Repeater


Tanyaradzwa Mhangami (39) pulled an axe on his wife after a heated argument and threatened to use it on her.
Fearing for her life, she left the house and called the police.
Mhangami had to be forcibly subdued by the police after threatening them with a knife.
When he recovered from being stunned Mhangami was aggressive towards officers, kicking out them at the home and when they went to Colchester Hospital where he also spat at one constable.
He is reported to have taken too many anti-depressant medication at the time of the incident and he was on the verge of a mental breakdown .
He plans to report himself to the Nursing and Midwifery Council.
He was handed a two year jail sentence suspended for two years after he admitted affray and three assaults on emergency workers.
YOU MAY ALSO BE INTERESTED IN
WATCH: UK To FAST TRACK VISAS For Foreign Doctors, Nurses & Healthcare Workers
WATCH: UK Prime Minister Boris Johnson Reveals What He Thinks Of Mnangagwa Govt
WATCH: UK Prime Minister Boris Johnson Reveals What He Thinks Of Mnangagwa Govt
To View and Apply for the latest Jobs and Vacancies in Zimbabwe, Please Visit our Sister website iHarare Jobs