This is the readme for the models and computer code associated with the paper Short SM, Morse TM, McTavish TS, Shepherd GM, Verhagen JV (2016) Respiration gates sensory input responses in the Mitral Cell layer of the Olfactory Bulb. PLOS ONE This archive was contributed by Dr T Morse. NEURON simulator code and matlab code is available for this publication from ModelDB accession number 183300. The NEURON simulator is freely available from http://www.neuron.yale.edu. This archive contains the NEURON code for the paper. The model contained a 2 column network which includes a neural network of 2 mitral cells (mc), 2 peri-glomerular cells (pg) and 2 grantule cells (gc), and 2 external tufted cells (et). The model can also be reconfigured to have multiple columns. The mc and pg cells are stimulated with synaptic events that are from gaussian probability poisson rate breath and simulated light stimulated Olfactory Sensory Neurons (OSNs). The method to explore the gating of the breath cycle for light stimuli that start at different phases throughout the breath cycle: the breath and simulated light gaussians have slightly different periods for example, 400 ms and 399 ms. After 400 breath repetitions, the periods wrap through all possible phase diffences (at 1 ms steps). For higher resolution statistics using breath and light periods differing by .25 ms (e.g. 400, 399.75 ms) produce four times as much data, and this was the setting for most results in the paper. NEURON code Usage: Serial computer (desktop or laptop): Either auto-launch from ModelDB or download and extract this archive, compile the mod files (see https://senselab.med.yale.edu/ModelDB/NEURON_DwnldGuide.html help for more details) and start with mosinit.hoc (nrngui mosinit.hoc on the unix/linux command line, double click on mosinit.hoc on mswin file explorer, or drag and drop mosinit.hoc onto the nrngui icon on the mac os x platform). The configuration of this model corresponds to the full two column version shown in supporting information figure S6a. The ET cells are not connected in the default run however can easily be turned on by (if on a small screen you may have to drag open the research configuration panel to see the right of that dialog box) changing all the weights in the ET column from 0 to 1 (right click below and select view image if you want ane xpanded view): This demo code runs the full model for a short period (just two breath cycles) and generates a graph of the voltages for some of the cells: This version of the code records the pg cell activity as was used to generate the polar plots in supporting information figure S4 orange and light orange traces. Note that the simulations under all the run_X folders were run (see below for more details) to generate the data for S4 and that for the data analysis the run_test folder needs to renamed to something like prefix_run_test so that the matlab code does not look to where this serial demo writes files (run_test). Parallel (supercomputer or cluster or small serial computer batches): Instructions to run the model on the NSG or a cluster (was run on Louise at Yale HPC): there are additional instructions in readme.NSG and readme.louise. Note that the NSG method was also used to generate small batch run folders/files that could then be run on a serial computer. See the alternate models in the pop-up list under the model file tab in modeldb accession 183300 to find the matlab and other code versions available for this paper.


SetFormat (set display format and refresh)
SetFormat( LONG param_lFormat )
SetFormat Sets the DisplayFormat property of the DateTimePicker control based on a given format and redisplays the control.
param_lFormat The format to be used.
The param_lFormat parameter must be set to one of the following EQUATEs defined in DateTimePick.inc:
DTPLONGDATE EQUATE(0)
Displays the date in long format. The default format string for this style is defined by LOCALE_SLONGDATE, which produces output like "Friday, April 19, 1996".
DTPSHORTDATE EQUATE(1)
Displays the date in short format. The default format string for this style is defined by LOCALE_SSHORTDATE, which produces output like "4/19/96".
DTPTIME EQUATE(2)
Displays the time. The default format string for this style is defined by LOCALE_STIMEFORMAT, which produces output like "5:31:42 PM".
DTPCUSTOM EQUATE(3)
Sets the display of a DateTimePicker control based on the CustomFormat property.
Be sure to set the CustomFormat property using the SetCustomFormat method before calling SetFormat with the DTPCUSTOM format.
Return Value non-zero if successful or zero otherwise.


Performs the JIVE decomposition on a list of data sets when the data share a dimension, returning low-rank matrices that capture the joint and individual structure of the data [O'Connell, MJ and Lock, EF (2016) <doi:10.1093/bioinformatics/btw324>]. It provides two methods of rank selection when the rank is unknown, a permutation test and a BIC selection algorithm. Also included in the package are three plotting functions for visualizing the variance attributed to each data source: a bar plot that shows the percentages of the variability attributable to joint and individual structure, a heatmap that shows the structure of the variability, and principal component plots.
| Version: | 2.1 |
| Depends: | R (≥ 2.10.0) |
| Imports: | SpatioTemporal, gplots, abind, graphics, stats |
| Suggests: | knitr, rmarkdown |
| Published: | 2017-04-12 |
| Author: | Michael J. O'Connell and Eric F. Lock |
| Maintainer: | Michael J. O'Connell <oconn725 at umn.edu> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| CRAN checks: | r.jive results |
| Reference manual: | r.jive.pdf |
| Vignettes: |
Example with TCGA Data |
| Package source: | r.jive_2.1.tar.gz |
| Windows binaries: | r-devel: r.jive_2.1.zip, r-release: r.jive_2.1.zip, r-oldrel: r.jive_2.1.zip |
| OS X binaries: | r-release: r.jive_2.1.tgz, r-oldrel: r.jive_2.1.tgz |
| Old sources: | r.jive archive |
Please use the canonical form https://CRAN.R-project.org/package=r.jive to link to this page.


abstract fun stopProvidingAudio(sink: VoiceSink): Unit
Called when an outgoing stream can no longer receive audio. When a voice stream closes, this method is called to inform your voice source that the voice sink it has been sending audio to is no longer valid. You should stop calling methods on sink and release related resources.
sink
- the voice sink object passed to startProvidingAudio when the containing stream
started


| 044:013 Khan | : |
How can there be for them an admonition (at the time when the torment has reached them), when a Messenger explaining things clearly has already come to them. |
| 044:013 Maulana | : |
When will they be reminded? And a Messenger has indeed come, making clear; |
| 044:013 Pickthal | : |
How can there be remembrance for them, when a messenger making plain (the Truth) had already come unto them, |
| 044:013 Rashad | : |
Now that it is too late, they remember! An enlightening messenger had come to them. |
| 044:013 Sarwar | : |
How could this punishment bring them to their senses when a Messenger evidently had come to them, |
| 044:013 Shakir | : |
How shall they be reminded, and there came to them an Messenger making clear (the truth), |
| 044:013 Sherali | : |
How can they benefit by admonition, when there has already come to them a Messenger explaining things clearly, |
| 044:013 Yusufali | : |
How shall the message be (effectual) for them, seeing that an Messenger explaining things clearly has (already) come to them,- |
Concepts/Themes Covered: أركان الإسلام > التوحيد > الكافرون > صفات الكفار Pillars of Islam> Islamic> The Disbelievers> The Characteristics of the Disbelievers أركان الإسلام > (محمد (صلى الله عليه وسلم > أقوال الكافرين فيه Pillars of Islam> The Blessed Muhammad(PBUH)> The Disbelievers' Tales About Him(PBUH)
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Introduction
This is Data Structures tutorial from YouTube. I will learn it step by step.
Content
Course list
- Introduction to data structures
- Data Structures: List as abstract data type
- Introduction to linked list
- Data Structures: Arrays vs Linked Lists
- Linked List - Implementation in C/C++
- Linked List in C/C++ - Inserting a node at beginning
- Linked List in C/C++ - Insert a node at nth position
- Linked List in C/C++ - Delete a node at nth position
- Reverse a linked list - Iterative method
- Print elements of a linked list in forward and reverse order using recursion
- Reverse a linked list using recursion
- Data structures: Introduction to Doubly Linked List
- Doubly Linked List - Implementation in C/C++
- Data structures: Introduction to stack
- Data structures: Array implementation of stacks
- Data Structures: Linked List implementation of stacks
- Reverse a string or linked list using stack.
- Check for balanced parentheses using stack
- Infix, Prefix and Postfix
- Evaluation of Prefix and Postfix expressions using stack
- Infix to Postfix using stack
- Data structures: Introduction to Queues
- Data structures: Array implementation of Queue
- Data structures: Linked List implementation of Queue
- Data structures: Introduction to Trees
- Data structures: Binary Tree
- Data structures: Binary Search Tree
- Binary search tree - Implementation in C/C++
- BST implementation - memory allocation in stack and heap
- Find min and max element in a binary search tree
- Find height of a binary tree
- Binary tree traversal - breadth-first and depth-first strategies
- Binary tree: Level Order Traversal
- Binary tree traversal: Preorder, Inorder, Postorder
- Check if a binary tree is binary search tree or not
- Delete a node from Binary Search Tree
- Inorder Successor in a binary search tree
- Data structures: Introduction to graphs
- Data structures: Properties of Graphs
- Graph Representation part 01 - Edge List
- Graph Representation part 02 - Adjacency Matrix
- Graph Representation part 03 - Adjacency List
I grab the html contents from source page, and use regular expression to parse it.
(?<=aria-label\=").*?(?=by\smycodeschool)
Introduction to data structures
A data structure is a way to store and organize data in a computer, so that it can be used efficiently.
We talk about data structures as:
- Mathematical/Logical models, we defined them from abstract view, that is Abstract data types (ADT).
- Implementation, concrete data types
ADT
is to define data and operations, but no implementation, e.g. arrays, linked list, stack, queue, tree, graph and so on.
We will study it from the following four aspects:
- logical view
- operations (available to us)
- cost of operations (time)
- implementation (in the programming language)
List as ADT
List is nothing but a collection of objects of the same type. It is generally a fixed-size list, if the current list is full, you should create a bigger-size list to contain many elements.
Here, we mainly talk about the time complexity of list operations.
- Access - Read or write element at an index, constant time $O(1)$
- Insert - depend on the list length, $O(n)$
- Remove - $O(n)$
- Add - $O(n)$
linked list
For array created using “malloc” function in C (dynamic memory allocation), we can use “realloc” function to re-size it. Same memory block may be extended if space adjacent to the block is available. Else, a new block is created.
head, the address of the head node gives us access of the complete list.
Time complexity:
- Access to elements: $O(n)$
- Insert: $O(n)$
- Delete: $O(n)$
array vs linked list
-
Cost of accessing an element
For array, it provides a base address (head address), and array is stored in the contiguous manner. So given an array A for accessing t-th element, it just calculate the result of
base address + i *sizeof(array_data_type)
; time complexity: $O(1)$For linked list, because it is a ordered list, we have to start with head node. So, it is kind of like traversing. time complexity: $O(n)$
-
Memory requirements
For array, it is fixed size and memory may not be available as one large block
For linked list, it has no unused memory and it has extra memory for pointer variables. Memory may be available as multiple small blocks
-
Cost of inserting (deleting) an element
cases Array Linked list at beginning $O(n)$ $O(1)$ at end array is not full: $O(1)$ $O(n)$ array is full: $O(n)$ at i-th position $O(n)$ $O(n)$ -
Ease of use (implementation)
For array, it is easy.
For linked list, it may be difficult for C/C++. It may cause segmentation fault or memory leak.
lined list implementation
#include<iostream>
struct Node
{
int data;
Node* next;
};
class LinkedList
{
private:
Node *head, *tail;
public:
LinkedList()
{
head = NULL;
tail = NULL;
}
void CreateNode(int value)
{
Node* temp = new Node;
temp->data = value;
temp->next = NULL;
if (head == NULL)
{
head = temp;
tail = temp;
temp = NULL;
}
else
{
tail->next = temp;
tail = temp;
}
}
void Display()
{
Node* temp = new Node;
temp = head;
while (temp != NULL)
{
std::cout << temp->data << "\t";
temp = temp->next;
}
std::cout << "\n==================================================\n";
}
void Insert_start(int value)
{
Node* temp = new Node;
temp->data = value;
temp->next = head;
head = temp;
}
void Insert_end(int value)
{
Node* temp = new Node;
temp->data = value;
temp->next = NULL;
tail->next = temp;
tail = temp;
}
void Insert_position(int value, int pos)
{
Node* temp = new Node;
Node* pre = new Node;
Node* cur = new Node;
cur = head;
for (int i = 0; i < pos; i++)
{
pre = cur;
cur = cur->next;
}
temp->data = value;
pre->next = temp;
temp->next = cur;
}
void Delete_start()
{
Node* temp = new Node;
temp = head;
head = head->next;
delete temp;
}
void Delete_end()
{
Node* cur = new Node;
Node* pre = new Node;
cur = head;
while (cur->next != NULL)
{
pre = cur;
cur = cur->next;
}
tail = pre;
pre->next = NULL;
delete cur;
}
void Delete_position(int pos)
{
Node* cur = new Node;
Node* left = new Node;
cur = head;
for (int i = 0; i < pos; i++)
{
left = cur;
cur = cur->next;
}
left->next = cur->next;
}
void Reverse()
{
Node* cur = new Node;
Node* left = new Node;
Node* right = new Node;
left = NULL;
right = NULL;
cur = head;
while (cur != NULL)
{
right = cur->next;
cur->next = left;
left = cur;
cur = right;
}
head = left;
}
};
int main()
{
LinkedList ll;
int values[4] = { 25,50,90,40 };
for (int value : values)
{
ll.CreateNode(value);
}
std::cout << "===========create a list==========================\n";
ll.Display();
std::cout << "==========Insert at beginning=====================\n";
ll.Insert_start(36);
ll.Display();
std::cout << "==========Insert at end===========================\n";
ll.Insert_end(73);
ll.Display();
std::cout << "==========Insert at 2-th position=================\n";
ll.Insert_position(98, 2);
ll.Display();
std::cout << "==========Delete start============================\n";
ll.Delete_start();
ll.Display();
std::cout << "==========Delete end==============================\n";
ll.Delete_end();
ll.Display();
std::cout << "==========Delete at 2-th position=================\n";
ll.Delete_position(2);
ll.Display();
std::cout << "==========Reverse linked list=====================\n";
ll.Reverse();
ll.Display();
std::cin.get();
}
results:
===========create a list==========================
25 50 90 40
==================================================
==========Insert at beginning=====================
36 25 50 90 40
==================================================
==========Insert at end===========================
36 25 50 90 40 73
==================================================
==========Insert at 2-th position=================
36 25 98 50 90 40 73
==================================================
==========Delete start============================
25 98 50 90 40 73
==================================================
==========Delete end==============================
25 98 50 90 40
==================================================
==========Delete at 2-th position=================
25 98 90 40
==================================================
==========Reverse linked list=====================
40 90 98 25
==================================================
-
Iterative Reverse
-
Recursive Reverse
stack
顺序栈
链共享
链栈
Reference:
typedef
- creates an alias that can be used anywhere in place of a (possibly complex) type name.
This pic helps me better understand linked stack:
中缀表达式转换为后缀表达式
你需要设定一个栈SOP,和一个线性表 L 。SOP用于临时存储运算符和分界符( ，L用于存储后缀表达式。
遍历原始表达式中的每一个表达式元素
（1）如果是操作数，则直接追加到 L中。只有 运算符 或者 分界符（ 才可以存放到 栈SOP中
（2）如果是分界符
Ⅰ 如果是左括号 ( ， 则 直接压入SOP，等待下一个最近的 右括号 与之配对。
Ⅱ 如果是右括号），则说明有一对括号已经配对(在表达式输入无误的情况下)。不将它压栈，丢弃它，然后从SOP中出栈，得到元素e，将e依次追加到L里。一直循环，直到出栈元素e 是 左括号 ( ，同样丢弃他。
（3）如果是运算符（用op1表示）
Ⅰ如果SOP栈顶元素（用op2表示） 不是运算符，则二者没有可比性，则直接将此运算符op1压栈。 例如栈顶是左括号 ( ，或者栈为空。
Ⅱ 如果SOP栈顶元素（用op2表示） 是运算符 ，则比较op1和 op2的优先级。如果op1 > op2 ，则直接将此运算符op1压栈。
如果不满足op1 > op2，则将op2出栈，并追加到L，重复步骤3。
也就是说，如果在SOP栈中，有2个相邻的元素都是运算符，则他们必须满足：下层运算符的优先级一定小于上层元素的优先级，才能相邻。最后，如果SOP中还有元素，则依次弹出追加到L后，就得到了后缀表达式。
for each token in the postfix expression:
if token is an operator:
operand_2 ← pop from the stack
operand_1 ← pop from the stack
result ← evaluate token with operand_1 and operand_2
push result back onto the stack
else if token is an operand:
push token onto the stack
result ← pop from the stack
How to convert infix notation into postfix notation
-
create an empty array to fill in operands, an empty stack to fill in operators and delimiter
-
if operands true, add it into array
-
if delimiter true:
a. if delimiter means left parenthesis, push it into stack
b. if delimiter means right parenthesis, pop it out of stack until it meets first left parenthesis, ends.
-
if read infix notation from left to right and meets operator (denoted as op1), and now the top of the stack is already a operator type (denoted as op2)
a. if the priority of op1 > op2, push op1 into stack
b. if the priority of op1 <= op2, pop out op1 into array
-
finally, if finish reading full infix notation, the stack is still has some elements, then follow the FILO rule to pop them out and add them respectively into the array to generate the final postfix notation


|
XNLO - UPPE
1.3.0
Unidirectional Pulse Propagation Equation
|
Files | |
| file | capillary_fibre.cpp |
| file | capillary_fibre.hpp [code] |
| file | config_settings.cpp |
| file | config_settings.hpp [code] |
| file | DHT.cpp |
| file | DHT.hpp [code] |
| file | grid_rkr.cpp |
| file | grid_rkr.hpp [code] |
| file | grid_tw.cpp |
| file | grid_tw.hpp [code] |
| file | IO.cpp |
| file | IO.hpp [code] |
| file | keldysh_gas.cpp |
| file | keldysh_gas.hpp [code] |
| file | laser_pulse.cpp |
| file | laser_pulse.hpp [code] |
| file | main.cpp |
| file | maths_textbook.cpp |
| file | maths_textbook.hpp [code] |
| file | physics_textbook.cpp |
| file | physics_textbook.hpp [code] |
| file | version.hpp [code] |


drought stress genes Phormium tenax Plant plant plants transcription tolerance stress. expression {border-style analysis px;} #ffffff;} [EC:...] factors study, enzymes up-regulated Arabidopsis biosynthesis resistance Figure gene metabolism related stress, unigenes encoding important sequencing water content studies tenax. total (.%), indicated length used (.%) addition, physiological protein response results role DEGs Fig. Previous WRKY abiotic enzyme glutathione number responses significant soil transcriptome (), KEGG S). Table acid key mechanism pathway px; signaling soluble transcripts using {font-family ABA activity adjustment assembly changes characteristics family font-size molecular pathways phenylpropanoid salt sequence showed stresses ID: Liu NAC Physiol. c.graph_c) c.graph_c, development differentially double; down-regulated expressed factor functional play result signal species up-regulated, According Cell. Drought GRAS RNA border-color border-width change conditions data determined drought-resistant function group growth increase method normal osmotic performed proteins, respectively. roles root shown solid; specific study sucrose {font-style {font-weight α-LeA (,), (Gene BMC Biotechnol. GST Mol POD Pan Sci. according adaptation analysis, annotation biochemical biological bold cell cells contigs, courier; days defense differential effects em; followed fragments genes, including indicators involved level listed matched measured novo obtained. order oxygen pathway, previous pt;} regulation regulatory reported represents research resistant rice sequences shoot starch suggested suggesting thaliana them, treatment


Hello
You have reached
Ashutosh Sharma
Roboticist, Web Developer and Graphics Designer
Contact me
About me
I am currently an undergraduate student at Birla Institute of Technology and Science, Pilani, India.
I build and design robots and aspire to be a Roboticist.
I have also worked on numerous web development projects, and have about a year of experience in python (django).
I also design UI/UX experiences and develop them, often using frameworks like ReactJS and ThreeJs.
I love exploring and taking new projects, whether it be in robotics or web related.


Quiz Average
Homework Average
Project Average
Lab Average
Overall Average
Final Letter Grade
Calculate
I hope I have a passing grade


Gas odour or leak
- Leave the area where you are (i.e. lab, cafeteria kitchen, etc.).
- Contact Security at extension 55 (internal phone system) in an emergency, using a phone in
your area.
- Don’t use a cell phone near the leak (be sure that there is no perceptible odour
before using a cell phone, to prevent any danger of explosion).
- Never activate a fire alarm (red station).
Evacuation order
Under order of evacuation by Security or a member of the evacuation team:
- Stay calm.
- Stop whatever you are doing safely.
Don’t touch anything
- Anything that is on must stay on.
- Anything that is off must stay off.


Intro
About this course
Introduction to generative coding
The aim of this workshop is to look at some of the technics of generative coding and to apply them to solve some concretes tasks.
At the end of the class I hope you will have learned more on how to code simple graphics and learned a set of skills you can reuse later.
About Me
UX, UI, CODE
Design and code. Background in code, worked mostly in design...
Setup & Basics
Prepare your environment
-
Github classroom
Clone the class directory
-
P5.JS + webserver
-
Processing + libs
Vector Math
"It's a mathematical term. A quantity represented by an arrow with both direction and magnitude. Vector!
That's me—because I am committing crimes with both direction and magnitude! Oh yeah!"Vector (Despicable Me)
Shapes
Patterns
From pattern to agents
Agents
Colors
What's next?
Exquisite corpse
from the original French term cadavre exquis
Exquisite corpse, also known as exquisite cadaver (from the original French term cadavre exquis), is a method by which a collection of words or images is collectively assembled. Each collaborator adds to a composition in sequence, either by following a rule or by being allowed to see only the end of what the previous person contributed.
Poietic Generator
Poietic Generator is a social-network game designed by Olivier Auber in 1986, and developed from 1987 under the label free art thanks to many contributors. The game takes place within a two-dimensional matrix in the tradition of board games and its principle is similar to both Conway's Game of Life and the surrealists' Exquisite corpse.
Generative portrait
A portrait, an object or something else...


Is there something here? Yes, I think I see something written under the sculpture.
Check the ground.


'Keep on running': Gran (70) vows not to slow down after 700th marathon
by Elaine KeoghA grandmother who has completed her 700th marathon says she has no intention of slowing down.
Collette O'Hagan (70), from Dundalk, has covered 18,300 miles - or just under 30,000km - which equates to going from Dublin to Barcelona and back seven times.
Collette has run marathons all over the world since completing her first one in 1990 at the age of 41.
She said she was "totally overwhelmed with all the lovely comments from so many on my 700th marathon, and while I don't want this to sound like an Oscar speech, I really want to thank each and every one of you from the bottom of my heart".
Please log in or register with Independent.ie for free access to this article.
New to Independent.ie? Create an account
Collette ran her 700th on Thursday, and said that when she read the lovely comments and messages to her, "I ask myself is it really me they are talking about?"
She is often asked why she has done so many marathons and what drives her on.
"I thoroughly enjoy doing them. I like challenges, and feel we should all strive to reach and achieve goals in our lives," she said.
"Sometimes these goals go beyond my limitations but there is no harm in pushing the barriers every so often as long as you are not constantly doing so.
"You need ingredients like motivation, determination, focus, tenacity and both mental and physical fitness. Mix all these together and you have the basis for life's challenges and long distance running."
She added: "If I leave my footprints on this Earth I want them to be not just carbon, but embedded in a trail of total respect and affinity towards my fellow human beings, regardless of their colour, race or creed."
And as for her plans for the future she said: "No stopping, no finish line, just keep on running."


The next SQL statement will create a temporary table that is valid for this session only. The DECLARE GLOBAL TEMPORARY TABLE statement specifies the name of the temporary table (T1) and how it is defined. In this example, the table is created based on the structure of another table (transactions). This simplifies the creation of these tables since you do not need to know the structure of the table that you will extracting data from.
The clause "on commit preserve rows" means that if a commit statement is issued, the temporary table is kept "alive". In this case, the table will only go away when you physically disconnect from the system. The "in db2demo" specifies the tablespace that will contain this temporary table. This tablespace must be defined beforehand in order for this SQL to work.
Now that we have defined this table, we can insert data into it like any other normal table, and select information from it. Note the use of the SCHEMA name SESSION in order to specify that this is a temporary table that we are selecting from. If we did not supply the high-level qualifier, the T1 table would not be found.
Please note that once you leave this page, it will be considered as a new session, and you will no longer be able to access the temporary table (T1).


After an extremely significant (bad) experience (non-fatal overdose) with Demerol (Meperidine), Iím compelled to tell my story to those who may be in a position to take a very high dose of it, at least in its injectable form, which is all I can really comment on. This isnít meant to be sensationalist but be aware that this particular drug has the potential to cause a great deal of damage and discomfort that can last for weeks afterward. In my case it was administered intravenously, over a 36-hour period.
Iíve been living overseas and I had been using prescribed morphine previously, and Iíd expected similar results from the Demerol, an expectation that was in part responsible for the complications that I still live with, over two months later. I found that it wasnít really possible to attain the same intensity of euphoria or other effects of morphine with Demerol, although I did try, too hard evidently. Further, the effects donít last as long, which is also why I was compelled to take so much of it over a short period. Iíd been prescribed 26 ampules of 100mg ea. I took them all (2600mg) over a 36-hour period, sleeping at some point in the middle and at the end. Iíll note here, and again later, that Meperidine should not be used for longer than 48 hours or at doses greater than 600 mg/24 hours in patients with normal renal function.
When I awoke the second time, my tongue had become swollen to the point that it had actually puckered around the sides, and I had evidently bitten down on the swollen sides whilst passed out sleeping. I canít be sure but I think I may have had a seizure? Further, the tip of my tongue was numb and tingling. The combination of the two effects made speaking a tragically comedic exercise that lasted the entire day.
My body was sore along my spine, shoulders and rib cage, and painfully so. When my spine was bent in any position, (i.e.) reclining on my side, getting out of that position was acutely painful, to the point of crying out.
This was accompanied by random pangs of acute pain (spasms?) that also made me cry out or at least wince and/or reverse exhale when just going through my normal day for about 2 weeks after the incident. It was so bad that during the first week of recovery I had to slide out of bed into a squat and slowly rise from that position, which was also painful. I was in a permanently hunched position b/c standing or sitting up straight was too painful. Further, my right shoulder would give out in a certain part of its radius (i.e.) when trying to remove t-shirts by crossing my arms across my belly and grabbing the bottom of my shirt, and (trying to) uncross them while lifting it over my head. It would lose the nerve signal or something and my entire right arm would drop, accompanied by an uncomfortable pain. Then as now, I find this development to be particularly disturbing.
The numbness of my tongue and the swelling subsided very slowly, over a two week period; all the while speaking without a slight lisp was either unavoidable or only overcome with a concerted effort. The acute spasms of pain in my back subsided over pretty much the same period to the point that it is today, yes, I still have back pain, and Iíve been trying all sorts of physical therapy i.e. swimming, yoga, weight lifting et. al. to try and overcome it completely. My shoulder seems to be healing, or getting stronger but it still doesnít want to rotate through a certain ďright, over and upĒ movement without wanting to drop down. When I sneeze or take a deep breath, I can still feel the pain in my ribcage.
 My stylist asked me if I had been doing a lot of drugs, mentioning that her friend who owned a night club had the same problem, as a result of his drug use. Suffice to say; it was the worst haircut experience to date.
I did some research, and discovered a few things about Demerol that may explain the severe damage to my health Iíve sustained since having abused it.
Unlike morphine, Demerol breaks down into a toxic metabolite (normeperidine) that tends to accumulate in the body as a result of its extended half life. It is classified as a potent central nervous system irritant, rather disturbingly; hence the maximum safe dosage and duration of administration guidelines (Meperidine should not be used for longer than 48 hours or at doses greater than 600 mg/24 hours in patients with normal renal function) that health care professionals no doubt adhere to.
Obviously, I grossly exceeded these recommendations and basically poisoned myself as a result. I have ceased the use of all opiates since the incident, which is ironic because now I really do suffer from the back pain that I had been lying about having when originally securing the prescriptions. I suppose I got what I had coming. To summarize, taking high doses of Meperidine/Demerol over a short period of time can be a truly MASSIVE mistake with enduring reminders and it is not recommended by this contributor.
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.


---
layout: default
title: TeachOSM
---
We assist educators at all levels to introduce open source mapping and OpenStreetMap in the classroomTeachOSM
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
TeachOSM is an online resource to assist educators at all levels to introduce open source mapping using the OpenStreetMap platform in the classroom. Individual instructors are encouraged to make use of the instructional materials provided here to develop assignments for their particular discipline and curricular needs. This site provides the resources help instructors identify, assign, manage and grade a mapping assignment. This site also includes training documentation for both the instructor and students.
The ultimate measure of a mapper is not where he stands in moments of comfort and convenience, but where he stands at times of challenge and controversy.
Sign up to hear the latest news and progress.


Week 10: CDC Compliance: Chicago.
This post is part of a larger project. If you’re bored in quarantine and want to collect data in your city, email me. It’s easy!
In order to not go completely insane, I’ve been taking a lot of walks. I try to be careful – I wear a mask and I stay 6 feet from others whenever possible – but there is one problem that I keep running into… (it will be a pun, trust me.)
Usually I can sense it approaching. I hear the shoes hitting the ground and the heavy breathing.  Running.). Maybe it’s just me but I think they try to get as close to my face as possible so they can push their heavy exhales into my lungs. I know. Gross.
Anyway, budding data analyst that I am, I decided to test my hypothesis. For what felt like hours but was probably 30 minutes, I stood in my pajamas, notebook in hand, spying on the passersby, and tracking the following variables for 101 people:
- Mask (on the mouth and nose)
- Distancing (6ft or it don’t count. Based on my best judgment of if groups were a household, a couple, friends, etc.. Imperfect but most people were not in groups)
- Activity (walking, biking, or running)
- Age (kid, adult, senior. Everyone was an adult though so I didn’t use this)
- Sex (this is based on my perception and may not be accurate in some cases. Gotta note my biases)
- Compliance (mask OR distancing based on CDC guidelines)
Once I had gathered all my data from creeping it was time for the fun part. Yes, I do find this stuff fun.
I started off with some clustering. What does that mean? It means I taught my computer all of the information I gathered. I told it to look at all the cases (1 person = 1 case) and group the similar cases into clusters based on the distance between them. In actuality, it’s more complex and if it makes no sense at all to you, don’t worry. The most important thing to understand here is that we’re looking for patterns in the data.
Based on the data, I found that people broke up into these 5 groups:
- compliant male runners
- compliant walkers
- non compliant walkers
- mostly compliant male bikers
- non compliant female runners
These groups are not perfectly clear cut by variable, but they are pretty close. If you want the numbers for yourself, shoot me an email!
This was a bit surprising to me. I had assumed that men would be less compliant because I have more faith in my gender, but the data called me out on my biases and shows predominantly male groups to be categorized as compliant. But this does not tell me anything about how many people fall into groups and how the numbers themselves play out. So I made some graphs because I love a good visualization.
First and foremost, Male vs Female… Not directly related to my runner hypothesis but still interesting.
Not only is everyone doing poorly with mask wearing and social distancing, but it appears that women are doing worse than men. Not great. Work on it.
But back to my main point – am I crazy, or are runners being selfish, non-compliant disease vectors?
Let’s look at mask usage first:
Unsurprisingly, we have terrible numbers across the board, but the worst is for runners and bikers. This makes sense because it’s harder to breathe wearing a mask if you’re exercising. Plus if you’re far from other people, you can still follow CDC guidelines. Let’s see if people are doing that.
No not really. Bikers in Chicago are in the street where it is easier to be distant so this makes sense. The non-distancing bikers were people trying to pass each other, people biking side by side, and one full grown adult man biking on the sidewalk.
Here’s what it looks like when we put it all together, looking at overall compliance with CDC guidelines:
So I guess I was right. Runners are the worst. Pull it together. Runners, if you’re out there reading this, just move over. If people walking can do it, then you can do it too.
This is the ninth in a series of posts From Quarantine. Most posts from quarantine are prompted by Aisling Quigley’s Data Storytelling class at Macalester College. This is not one of those posts.


PLANET SICK-BOY: http://www.sick-boy.com "We Put the SIN in Cinema"
Everybody is making such a big deal about Ben Affleck, Gwyneth Paltrow and their highly publicized `are they or aren't they' relationship.  I don't know if their off-screen relationship has anything to do with it, but their chemistry in Bounce is terrific. The Oscar-winning duo seem so comfortable in their roles that it doesn't appear that either is acting.
Affleck (Reindeer Games) stars as Buddy Amaral, a smooth-talking advertising salesman who appears to be an extension of Affleck's Jim Young from Boiler Room. As the film opens, he has just landed the Big Account but finds himself stranded at Chicago's O'Hare Airport due to a snowstorm. He meets a married father of two from Los Angeles named Greg Janello (Tony Goldwyn, Kiss the Girls). Buddy has a boarding pass for the next flight to L.A. but gives it to Greg so he can make it home for his son's Cub Scouts Christmas tree sale the following day.
Greg's plane ends up crashing, killing all 216 people onboard. His wife, Abby (Paltrow, Duets), assumes Greg is okay, since he wasn't supposed to be on that particular flight.  Without seeing a dime from a class-action suit against the airline, Abby makes ends meet as a struggling commercial real estate agent.
In the meantime, Buddy goes on a one-year bender. It's hard to tell if he's just freaked out from narrowly escaping death or if he's bothered by indirectly killing a nice guy with two little kids (the character doesn't even acknowledge the latter scenario). As part of his alcohol rehab, he's forced to take that dreaded eighth step, where you're supposed to make amends with all the people you hurt as a drunk. He finds Abby, pretends to be a complete stranger, and hooks her up with a peach of a real estate transaction. Buddy only means his atonement to be financial, but he ends up falling for Abby when she orders a grilled cheese sandwich at a diner after the big closing.
The rest of the film shows the budding relationship between Buddy and Abby, but as a viewer, you know it's only a matter of time before she finds out about the boarding pass swap that left her a widow. It's obvious that Buddy really wants to be honest with Abby but knows the truth will crush her. The further he gets into the relationship, the worse his secret becomes. He's the first person who has been nice to her without knowing she's a widow … except he really does, but has to pretend he doesn't.
Bounce's ending is kind of a cop-out, compared to the quality of the rest of the script. I won't go into why here, as it could ruin the ending, but it seems like it could have been mistakenly inserted from a completely different film. Admittedly, it's different than what you'd expect from a typical chick-flick, but it still doesn't work.
As I mentioned earlier, the acting in Bounce is fabulous. The smart script and direction (from The Opposite of Sex's Don Roos) is also much better than average. Both of Roos' main characters are more flawed than we're used to seeing on the screen, and the flaws aren't your typical Hollywood defects.  You don't see the plane crash, and the scene where Abby learns that her husband was on the flight is surprisingly tasteful, while most other films would have exploited both of these scenarios. Credit Atom Egoyan regular Mychael Danna for keeping his score in check throughout the film.
1:49 - PG-13 for adult language and sexual content
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


505
Internal server error.
The server encountered something unexpected that didn't allow it to complete the request.
you can back


I am using YHDC SCT013 (15A/1V with internal burden resistor) current sensor with arduino for monitoring the current profile of washing machines and using adafruit datalogging shield for the SD card and for the Real Time Clock.
The current was working perfectly fine in the office measuring the current of the Air Conditioner, when I moved to the site, connected the sensors to multiple washing machines(4), the problem is it gives me inaccurate results or I would rather say SCALED results.
when I go to the office again and test it , it works fine ! but it doesn't work in the site for the washing machines
why is it different ? why it works for the Air conditioner but not for the washing machines (under the same circumstances ) .
am I missing anything ?
worth mentioning the current for the air conditioner is kind of stable and doesn't vary a lot , but in the washing machine it changes a lot
I attached the code
Re: current sensor working with air conditioner but not with washing machine !
How did you determine the results were inaccurate, or "SCALED"? Are the machines front-loaders?
As it happens, I did a load this morning. There's very little else on that breaker, so the following graph pretty accurately reflects real power of an LG front-loader wash cycle. I can go back and look at previous washes and they all look pretty much identical. I don't log current sorry, so real power is as close as I can get to your measurements. The vertical scale is Watts:
The initial scratchy bit from about 8:30 through to 9:07 is the wash cycle. I feed it hotwater so it doesn't need to do any heating. The four tall "towers" are the spin cycles, with the last one being quite a bit longer than the earlier three. If I zoom in on the scratchy wash cycle it looks like this:
That's sampled every 10 seconds, with each reading being (WattSeconds consumed in last 10 seconds)/10 which is the equivalent of average power used in the last 10 seconds in Watts. I'm pretty sure my machine completely stops for a few seconds between each forward/reverse wash pulse, i.e it goes forward-pause-reverse-pause etc. I suspect if I were sampling a lot faster (which I'm guessing you are), I'd see close to 0W during the pause seconds.
So in summary, you're sampling a very dynamic signal. Depending on exactly when your samples are taken, you could validly see anything from 0 up to what I would imagine would be very high currents as the motor starts to spin up (potentially quite a bit higher than your 15A briefly). As an example, you can see a picture of the startup current drawn by a 600W pump in this thread: http://openenergymonitor.org/emon/node/10110
Re: current sensor working with air conditioner but not with washing machine !
dBC thanks for the reply.
answering your question, I am using clamp amp meter that displays the current in lcd and compare it by observations in the serial port monitor in the real time.
actually I am monitoring 4 washing machines with a very high sampling rate which will get 8 current values every second ( 2 values for each machine ) it looks something like
8:49:35 0.62 0.58 0.04 0.63
8:49:35 0.62 0.63 0.05 0.57
8:49:37 0.55 0.62 0.04 0.59
8:49:37 0.57 0.58 0.04 0.56
but the sampling rate is not the problem because in some interval during the washing cycle, the current is quite stable in the range of 0.9Amp -1 Amp (measured using the trusted amp meter ) and the arduino reads 1.9 Amp or 2 Amp.
and the same as your readings, i get repeatedly the same graph for each washing cycle which means the system is kind of consistant but not accurate.
ps what is the software you are using for the graph ?
Re: current sensor working with air conditioner but not with washing machine !
I'm not sure you can truly trust your clamp ammeter. What are its specs? The closest my washing machine gets to a steady state is the final high speed spin cycle, but even then it appears to be doing some sort of spin-speed governing (it's one of those machines that let you select your spin speed). Even at my 10 second sample rate, I can see it doing something.
How did you calibrate your device? With a beefy resistive load? Or did you use the air-conditioner?
There's a chance that the current signal through the washing machine (and the air-conditioner) is a long way from a nice sine wave, you can see my water pump in the link above looks more like a triangle wave once it's settled down. Your clamp meter may well only be good for sine waves. If I remember, I'll put the scope on mine next time I'm doing some laundry.
I'm not familiar enough with emonlib to review your sketch, but hopefully others will, in case there's something obvious in there.
SIDE BAR: I've never checked the PF of my washing machine (another thing to do next time I do some laundry) but if it's a lot less than 1, then measuring the current won't be a great indication of how much real power it's using. That's not relevant to your current issue though, since you're comparing ammeter with ammeter.
Re: current sensor working with air conditioner but not with washing machine !
the clamp ammeter is quite trustworthy i tested it for a predetermined current and the results are fine. I blame it on the arduino or whatever reasons. the most relative thing in the specs is that, its frequency response from 40Hz to 1kHz on AC current and voltage ranges, and here we are dealing with 50 Hz signal.
"How did you calibrate your device? "
I calibrated it using the air conditioner.
"clamp meter may well only be good for sine waves" :
this is a good point, I will check the wave using oscilloscope.
"I'm not familiar enough with emonlib to review your sketch"
actually the library and the coding is quite simple and its working since it gave me the correct results for the air conditioner
actually, in some point I may need to have the power calculations but for now, I will be doing order analysis that provides some information about the healthiness of the machine.
thanks dBC
Re: current sensor working with air conditioner but not with washing machine !
ps what is the software you are using for the graph ?
I forgot to answer that part. It's emoncms.
Re: current sensor working with air conditioner but not with washing machine !
I calibrated it using the air conditioner.
Then you probably want to check that's a sine wave as well.
Re: current sensor working with air conditioner but not with washing machine !
What is the significance of "int noOfSamples=636;"? Does that work out to be a whole number of complete cycles given your mains frequency and your hardware? CalcIrms starts reading at a random point on the current wave, so for consistent results even on a steady load, you must get as close as possible to an exact number of cycles.
Second, as dBC says, the shape of the current wave is very important. CalcIrms calculates the true rms average. Unless your clamp ammeter also reads true rms, and over a big enough range of form factor, then it will probably display an incorrect value if the wave is not a perfect sine wave. This is because many meters measure the rectified average value but display a number which is the rms value only if the wave is a perfect sine wave.
If your load current is fluctuating greatly, you might want to look at converting the 'continuous' sketch to run on your hardware with the data logging. I don't guarantee that it will be possible to make it work with the extra (and slow) problem of writing to the SD card, but it is something to consider.
Re: current sensor working with air conditioner but not with washing machine !
thanks Robert Wall for the reply.
the main frequency is 50 Hz, as the function CalcIrms takes 106 samples for every cycle of the current , 636 is 106*6 which means 6 complete cycles. if I am not missing anything.
regarding my clamp ammeter, I have checked the specifications and its TRUE that, the current waveform is supposed to be a sin wave. so that means I take the unfiltered samples for the current waveform and verify weather its a sin wave or any other shape of waves. the first attached picture is the waveform for 4 cylces as we can see its consistent:
the second pic is 1 cycle
and the third one is the first portion (the first 5 mins for 1 cycle
does it make sense as a current profile for a washing machine ?
actually yes, logging into the memory card is a bit of problematic but still I am using some kind of buffer to take the readings for many cycles and then pass it to the memory card which will eventually gives a good speed as in one second i can measure 4 current RMS values for each washing machine (I monitor 4 washing machines ).
the readings will be something like picture number 4, if you look at the timestamp, you can see its not that slow:
Re: current sensor working with air conditioner but not with washing machine !
Here's what the current signal on my washing machine looks like when it's spinning at 1300 RPM:
In fact, it looks awfully like a SMPS looks. A quick check of the user's manual reveals:
Inverter Direct Drive system
The advanced Brushless DC motor directly drives the drum without belt and pulley
The scope's RMS calculation on that signal was 2.128A.
My precision front end clocked it at 2.242A
My cheap clamp ammeter clocked it at 1.1A
So if your washing machine uses similar technology to mine, and your clamp ammeter is as basic as mine, I'd put money on your Arduino based monitor over your clamp ammeter. EXCEPT you calibrated your monitor using the same clamp meter and an aircon which potentially has a similar inverter/DC motor set up. So it's possible your calibration is completely wrong as well. Far better to calibrate it with a big (say 2kW) resistive load.
According to my precision front end that load above, combined with V (not shown) measures up as:
Apparent Power: 559VA, Real Power: 395W, Reactive Power: +115 VAR, Distortion Power: 378 VAR.
Re: current sensor working with air conditioner but not with washing machine !
OOOH that is really SURPRISING !
maybe this is the reason and the arduino is the one with the correct values! as I said to Robert,my clamp is the basic one as I checked the specification.
that leads me to re-calibrate my device and to test the current waveform of the washing machines when I get to the site again.
thanks dBC and Robert ,that almost solved the problem and let met reconsider things. I will let you updated with the results.
Re: current sensor working with air conditioner but not with washing machine !
Yeh, although I don't understand your second picture. Are you saying that's 20 msec worth of your current readings? Why are they all positive? I would expect it to be roughly symmetric around 0. And I'm puzzled why there are so many pulses. Looks like roughly 40 pulses in 10 msecs, or 4kHz.
Re: current sensor working with air conditioner but not with washing machine !
the second picture is the RMS current profile for one cycle of washing (28 mins of washing ), its not the waveform of the original current but the RMS. makes sense now ? that is why it positive and not symmetric around
here is a picture with a correct timestamp , the x axis represents the time, the y axis represents the RMS current for a washing cycle (around 28 mins):
actually my explanation so far for the pulses is that, it happens when the washing machine suddenly spins with a higher speed so the current goes high and causes these pulses.
correct me if I am missing anything or if you didn't understand what I am saying : )
Re: current sensor working with air conditioner but not with washing machine !
Ah right... that makes a lot more sense. "cycle" is an overloaded term on this thread... there are washing cycles and mains cycles... one takes 20 msecs, and the other about 20 mins! The pulses are much more explainable if that's a 20 min washing cycle rather than a 20 msec mains cycle.
Re: current sensor working with air conditioner but not with washing machine !
just for the record, the problem was with the clamp meter. when I verified the current waveform from the washing machines, it turned out to be not a pure sin wave. which were causing the problem.
Thanks dBC.


| DOSE: T+ 0:00 |
0.6667 tablets |
oral |
MDMA |
(pill / tablet) |
| T+ 3:00 |
0.3333 tablets |
oral |
MDMA |
(pill / tablet) |
Well, it had only been recently that I tried any sort of drug other than alcohol. I gave pot a shot and I had fun the first few times using it but, after that I had a couple of very bad trips and had no urge to smoke it ever again. It was that bad of a trip.
Around this time my friends and I were starting to get interested in glowsticking and really wanted to learn how. My brother was already pretty good at it so he started to show me how and I found out by accident that he was going to surprise me on my 16th birthday by taking me to a rave. I was really taken aback and I didn't know if I was ready, or what to expect. I was nervous and avoided saying yes for a while.  So after talking with my really close friends they really seemed interested in going too, so I finally gave in and said yes.
After trying and trying a few of my friends weren't allowed to go because their parents wouldn't let them go to a rave and I was pretty down about that because I really wanted everyone to be there, especially on my birthday. My Mom on the other hand trusted me completely and she had no reason to suspect I would be doing anything bad. So I was pretty lucky.
Then my brother called me up one day and we were talking all about raves and then he asked me about what I'm doing at the rave.
“So... what are you doing?”
“What do you mean?”
“Are you going to drink beforehand? Smoke? ... E?”
That's all he ever said to me about E until my decision was made. I was shocked, up until this point I had never even thought of Ecstasy at all. All those memories of those drug presentations you get in high-school and the stereotypical “rave” scene the government puts out there so naturally I was really scared, nervous and skeptical but very interested all at the same time. I was the all around good boy, top of his grades and even smoking pot was a major thing for me to do. I was really unsure on whether to even consider it, and it seemed kind of weird to me that I WAS considering it. You know when you're young and you tell yourself 'I'm never going to do drugs' etc, but it's a lot different once you're older.
I first went to one of my best friends and while we had decided to go to the rave, I still didn't mention anything about E until one day when she was over. I just looked at her, smiled and I slowly said to her “Sooo... what do you think about E?” She started laughing hysterically and so did I, it was pretty funny because somehow we both KNEW it was coming. We talked a lot about it, weighed our options/risks and wanted to make sure we knew what we were getting into before we considered it. I also talked a lot about it with another close friend of mine, she's older and she's already experienced the rave scene and E a few times so who else best to talk about it with? After talking about it a lot with her, I really wanted her to be there on my birthday with me at the rave but she was a little nervous about getting back into E. She hadn't done it for 2 years. After a while she agreed to go and I was ecstatic.
We still had so many questions to ask so my brother recommended reading online. It helped me out a lot and had just about everything you would ever need to know, but I also was worried that I might have a bad trip and all those risks about death, over-heating, dehydration and drinking way too much water. I was pretty much bugging my brother with a million questions and he kept reassuring me that he would test it and make sure it's clean and safe. I trust him a lot, but it's a class A drug... it's ECSTASY! It was still such a foreign idea to me. My brother then told me he got these pills 'Red Hats' and that he tested it and it showed up black (MDMA). I was feeling a little better because I was not about to take any drug without knowing what it is.
So here comes my birthday and the day of the rave. I was psyched and nervous all at the same time, but felt awesome to have everyone there with me. Getting ready for the rave was really nerve racking but a lot of fun. My brother showed me the pills in the bathroom before he had to hide them. They were very big, red, taller than wide and had the imprint of what looked like a cowboy hat/baseball cap. I couldn't believe I was looking at Ecstasy, the stuff you've heard all about in the news and in the media, still a shock. I was extremely nervous about how he would get it in. He had his ways so I let that go but I was till worried about him getting caught.
We all finish getting ready and here comes the time to go. We all pile in the car and put on some trance music to get into the mood and arrive there early waiting in line to get in. 10pm-8am, wow, how the hell am I going to last that long? I found that out the good way later that night. They finally open the doors and my brother goes in ahead of me, my heart pounding because they were searching everywhere they could put their hands practically. We make it past security and wait for everyone to get in. We head into the main room and the venue was insane! I can't even describe it. Huge screens, lasers, smoke, pounding music being mixed live by international Dj's. Amazing.
So we wait a while standing at the edge of the main room and then my brother passes me one pill out of the sealed bag that he took out in the washroom. I felt like I was going to puke I was so nervous. I couldn't believe I'm holding a pill of ecstasy in my hand. I stick the pill in my shorts pocket until we go to the washroom to take it.
After a while of procrastinating and telling myself to just wait another 5 minutes my brother's friend and I head to the washroom to take it. He and I are going to bite half and save the other half for later. My first time so playing it safe was my priority. I get into one of the stalls and fumble for the pill in my back pocket. I take it out and look at it, it's pretty big and... well red.  I hesitated a little bit, closed my eyes and then just bit it. Lucky for me, only a speck came off and it tasted like tangy chemicals so I tried biting again quickly and it didn't break in half. The pill was REALLY hard. I finally bit hard enough and a chunk came off... still not half.  A little more than 1 third is left and I stash it in my shorts pocket. I turn around and leave the stall… “I just took E.” I kept saying to myself, it was such a strange concept.
Shaking and my heart still pounding through my chest as I pass security I meet back up with everyone and we start to dance a little while waiting for the girls to take theirs. They came back and looked a little bit nervous themselves so I felt a little better that I wasn't the only one who felt that way. We started dancing and waiting for the E to kick in, only I didn’t know what I was really waiting for to kick in? I kept wondering what it was going to be like and if it would feel like the bad trips I had on weed where I felt like I wasn't aware of what was going on and my body. I had no idea what to expect.
It was a very slow come on and took about an hour to start before my friends started to notice me acting differently. I really didn’t notice a difference and when I told my friend that I wasn't feeling anything she seemed convinced I was high because I was dancing so hard. I didn’t realize that I was high at first because it was so different. It seemed natural. My mood was uplifted, I felt a little more loose and had lowered inhibitions. I suddenly got this rush of extreme happiness and I kept smiling and giving glances to my friends and it was like we were all unified. It’s really hard to explain and before this I had read a lot of experiences and asking myself “What the HELL do they mean by that?...'Unified'” But now I know you can never describe it in words.
A little while later I took the last third of the cap and then I really started to feel it. Physically my body started to feel fluid and the music became so crisp and clear. I was experiencing the best feeling I have ever had in my life. I had absolutely no worry or concern and I just felt like everything was perfect and meant to be. Here I am, on my 16th birthday doing something so new and exciting with my closest friends. It was life changing as cheesy as that sounds but I'm sure some people can understand what I mean.
I danced so hard that night and I totally let go, I wasn't that shy guy I've always known and it was amazing. Music never sounded like it did before and it felt like I was connected to every single person there. It was a shock to go into the bathroom, look in the mirror and see my eyes the size of moons. I couldn't stop smiling at myself. Touch was amazing. My friends and I kept scratching each others arms, necks and being all loved up. Everything I read about E was right. It was amazing.
Nearing the end of the end we all got a little tired and I barely even noticed a come down at all. It was so smooth and I just had this glow of happiness about me. Ever since my birthday I appreciated everything a lot more and it really did change my perspective on a lot of things, for the better. I became a lot more open and a lot less shy from the experience. Ecstasy is amazing and can be a great experience if used right.
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.


This chapter covers the main modules of the phaseshifts and provides some API documentation for those wishing to incorporate this package into their own projects.
atorb.py
Provides convenience functions for generating input and calculating atomic charge densities for use with the Barbieri/Van Hove phase shift calculation package.
| See: | http://www.icts.hkbu.edu.hk/surfstructinfo/SurfStrucInfo_files/leed/ |
|---|---|
| Requires: | f2py (for libphsh fortran wrapper generation) |
Note
To generate libphsh fortran wrappers (libphsh.pyd) for your platform then use ‘python setup.py’ in the lib directory of this package to install into your python distribution. Alternatively, use:
f2py -c -m libphsh libphsh.f
Windows users may have to add appropriate compiler switches, e.g.
f2py -c -m libphsh --fcompiler=gfortran --compiler=mingw-32 libphsh.f
Bases: object
Notes
Original author: Eric Shirley
There are nr grid points, and distances are in Bohr radii
,
The orbitals are stored in phe(), first index goes , the second index is the orbital index ()
Look at the atomic files after printing this out to see everything... Suffice it to say, that the charge density at radius in units of electrons per cubic Bohr radius is given by:
Think of the phe functions as plotting the radial wave-functions as a function of radius on a logarithmic mesh...
The Dirac equation is solved for the orbitals, whereas their density is treated by setting to Dirac’s times the sign of ...
So we are doing Dirac-Fock, except that we are not treating exchange exactly, in terms of working with major and minor components of the orbitals, and the phe’s give the CORRECT CHARGE DENSITY...
The above approximation ought to be very small for valence states, so you need not worry about it...
The Breit interaction has been neglected altogether...it should not have a huge effect on the charge density you are concerned with...
| Parameters: | kwargs may be any of the following. : element : int or str, optional
input : str, optional
output_dir : str, optional
|
|---|---|
| Returns: | str : filename |
Examples
>>> Atorb.calculate_Q_density(input='atorb_C.txt')
18.008635 -33.678535
4.451786 -36.654271
1.569616 -37.283660
0.424129 -37.355634
0.116221 -37.359816
0.047172 -37.360317
0.021939 -37.360435
0.010555 -37.360464
0.005112 -37.360471
0.002486 -37.360473
0.001213 -37.360473
0.000593 -37.360473
0.000290 -37.360474
N L M J S OCC.
1 0 0 -1/2 1 2.0000 -11.493862
2 0 0 -1/2 1 2.0000 -0.788618
2 1 1 -1/2 1 0.6667 -0.133536
2 1 1 -3/2 1 1.3333 -0.133311
TOTAL ENERGY = -37.360474 -1016.638262
>>> Atorb.calculate_Q_density(element='H')
0.500007 -0.343752
0.152392 -0.354939
0.065889 -0.357254
0.028751 -0.357644
0.012732 -0.357703
0.005743 -0.357711
0.002641 -0.357712
0.001236 -0.357713
0.000587 -0.357713
0.000282 -0.357713
N L M J S OCC.
1 0 0 -1/2 1 1.0000 -0.229756
TOTAL ENERGY = -0.357713 -9.733932
| Parameters: | element : int or str
output : str, optional
ngrid : int, optional
rel : bool, optional
filename : str, optional
header : str, optional
method : str, optional
relic : float, optional
mixing_SCF : float, optional
tolerance : float, optional
ech : float, optional
|
|---|
| Returns: | tuple : (int, int, list[float, float], list[float, float])
|
|---|
Notes
| Parameters: | electron_config : str
|
|---|---|
| Returns: | str : :
|
Examples
>>> Atorb.replace_core_config('[Ar] 4s2')
'1s2 2s2 2p6 3s2 3p6 4s2'
>>> Atorb.replace_core_config('[Xe] 6s2 5d1')
'1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 5s2 4d10 5p6 6s2 5d1'
conphas.py
Provides a native python version of the conphas (phsh3) FORTRAN program by W. Moritz, which is distributed as part of the SATLEED code (see “Barbieri/Van Hove phase shift calculation package” section) and can be found at: http://www.icts.hkbu.edu.hk/surfstructinfo/SurfStrucInfo_files/ leed/leedpack.html
The Conphas() class also provides a number of convenience functions (see docstrings below).
>>> from os.path import join
>>> from phaseshifts.conphas import Conphas
>>> con = Conphas(output_file=join('testing', 'leedph_py.d'),
lmax=10)
>>> con.set_input_files([join('testing', 'ph1')])
>>> con.set_format('cleed')
>>> con.calculate()
Class Conphas
Notes
This work is based on the original conphas (phsh3) FORTRAN program by W. Moritz, which is distributed as part of the SATLEED code (see “Barbieri/Van Hove phase shift calculation package” section) and can be found at: http://www.icts.hkbu.edu.hk/surfstructinfo/SurfStrucInfo_files/ leed/leedpack.html
Fix escaped characters in filepath
Calculates continuous phase shifts from input file(s).
Examples
>>> con = Conphas(output_file=r'testing\leedph_py.d', lmax=10)
>>> con.set_input_files([r'testing\ph1'])
>>> con.set_format('cleed')
>>> con.calculate()
L = 0
jump between 25.0 eV and 30.0 eV; IFAK = -1
L = 1
jump between 65.0 eV and 70.0 eV; IFAK = -1
L = 2
jump between 20.0 eV and 25.0 eV; IFAK = 1
jump between 80.0 eV and 85.0 eV; IFAK = 0
L = 3
L = 4
jump between 275.0 eV and 280.0 eV; IFAK = 1
L = 5
L = 6
L = 7
L = 8
L = 9
L = 10
Load (discontinuous) phase shift data from file
| Parameters: | file : str
|
|---|---|
| Returns: | tuple: (double, double, int, int, ndarray) :
|
Notes
Read in discontinuous phase shift file
| Parameters: | filename : str
|
|---|
Set appropriate format from available options
| Parameters: | format : str, optional
|
|---|
Properties of the chemical elements.
Each chemical element is represented as an object instance. Physicochemical and descriptive properties of the elements are stored as instance attributes.
| Author: | Christoph Gohlke |
|---|---|
| Version: | 2013.03.18 |
>>> from elements import ELEMENTS
>>> len(ELEMENTS)
109
>>> str(ELEMENTS[109])
'Meitnerium'
>>> ele = ELEMENTS['C']
>>> ele.number, ele.symbol, ele.name, ele.eleconfig
(6, 'C', 'Carbon', '[He] 2s2 2p2')
>>> ele.eleconfig_dict
{(1, 's'): 2, (2, 'p'): 2, (2, 's'): 2}
>>> sum(ele.mass for ele in ELEMENTS)
14659.1115599
>>> for ele in ELEMENTS:
... ele.validate()
... ele = eval(repr(ele))
Provides CLEED validator and Converter classes.
The CLEED_validator() class provides a method for checking the input files for errors, whereas the Converter.import_CLEED() method allows importing CLEED input files as a MTZ_model class
Bases: object
Class for validation of CLEED input files
Bases: object
Bases: object
Convert different input into phaseshift compatible input
Imports CLEED input file and converts model to muffin-tin input.
the basis vectors a1, a2, & a3 are x,y,z cartezian coordinates
if no a3 is found, the maximum z distance between atoms multiplied by four is given
the unitcell is converted from cartezian to fractional coordinates
atom sites are converted from Angstrom to Bohr units
additional info from the phase shift filename is provided by splitting the ‘_’ chars:
- First string segment is element or symbol, e.g. Ni
- Second string segment is the oxidation, e.g. +2
lines with ‘rm:‘ provide the radii dictionary of the atomic species
if no ‘rm:‘ found for that species, the atomic radius is used for zero valence, otherwise the covalent radius is used.
Additional information can, however, be provided using ‘phs:’ at the start of a line within the input file and may have the following formats:
- “phs: c <float> nh <int> nform <int> exchange <float>“
- “phs: <phase_shift> valence <float> radius <float>“
The identifiers exchange, nform, valence and radius may be abbreviated to exc, nf, val and rad, respectively.
| Parameters: | filename : str
|
|---|---|
| Returns: | phaseshifts.model.MTZ_model : |
| Raises: | IOError : filename invalid ValueError : bad formatting of input |
model.py
Provides convenience functions for generating input and calculating atomic charge densities for use with the Barbieri/Van Hove phase shift calculation package.
Bases: object
Atom class for input into cluster model for muffin-tin potential calculations.
Bases: exceptions.Exception
Coordinate exception to raise and log duplicate coordinates.
Bases: phaseshifts.model.Model
Muffin-tin potential Model subclass for producing input file for muffin-tin calculations in the Barbieri/Van Hove phase shift calculation package.
| Parameters: | atomic_file : str
cluster_file : str
slab : int or bool
output : dict
|
|---|---|
| Returns: | output_files : list(str)
|
| Returns: | output_files : dict
|
|---|
| Parameters: | input_dir : str
input_files : tuple
output_file : str
|
|---|---|
| Returns: | output_file : str
|
| Raises: | IOError : exception
|
Notes
If ‘input_files’ is not given then the default list of input files are inferred from the list of atoms in the model.
| Returns: | filename on success : |
|---|---|
| Raises: | CoordinatesError : exception
|
| Parameters: | filename : str
|
|---|---|
| Raises: | IOError : exception
TypeError : exception
|
Bases: object
Generic model class.
| Returns: | nineq_atoms, element_dict : tuple
|
|---|
Append an Atom instance to the model
| Parameters: | element : str or int
position : list(float) or ndarray
|
|---|
Check for duplicate coordinates of different atoms in model.
| Raises: | CoordinateError : exception
|
|---|
Bases: object
Unitcell class
| Parameters: | a: float :
|
|---|
Notes
To retrieve a in terms of Angstroms use ‘unitcell.a’, whereas the internal parameter ‘unitcell._a’ converts a into Bohr radii (1 Bohr = 0.529Å), which is used for the muffin-tin potential calculations in libphsh (CAVPOT subroutine).
| Parameters: | c : float
|
|---|
Notes
To retrieve c in terms of Angstroms use ‘unitcell.c’, whereas the internal parameter ‘unitcell._c’ converts c into Bohr radii (1 Bohr = 0.529Å), which is used for the muffin-tin potential calculations in libphsh (CAVPOT subroutine).


Congratulations on reaching the final project of the Robotics Nanodegree!
Previously, you worked on the Semantic Segmentation lab where you built a deep learning network that locates a particular human target within an image. For this project, you will utilize what you implemented and learned from that lab and extend it to train a deep learning model that will allow a simulated quadcopter to follow around the person that it detects!
Most of the code below is similar to the lab with some minor modifications. You can start with your existing solution, and modify and improve upon it to train the best possible model for this task.
You can click on any of the following to quickly jump to that part of this notebook:
We have provided you with a starting dataset for this project. Download instructions can be found in the README for this project's repo. Alternatively, you can collect additional data of your own to improve your model. Check out the "Collecting Data" section in the Project Lesson in the Classroom for more details!
import os
import glob
import sys
import tensorflow as tf
from scipy import misc
import numpy as np
from tensorflow.contrib.keras.python import keras
from tensorflow.contrib.keras.python.keras import layers, models
from tensorflow import image
from utils import scoring_utils
from utils.separable_conv2d import SeparableConv2DKeras, BilinearUpSampling2D
from utils import data_iterator
from utils import plotting_tools
from utils import model_tools
In the Classroom, we discussed the different layers that constitute a fully convolutional network (FCN). The following code will introduce you to the functions that you need to build your semantic segmentation model.
The Encoder for your FCN will essentially require separable convolution layers, due to their advantages as explained in the classroom. The 1x1 convolution layer in the FCN, however, is a regular convolution. Implementations for both are provided below for your use. Each includes batch normalization with the ReLU activation function applied to the layers.
def separable_conv2d_batchnorm(input_layer, filters, strides=1):
output_layer = SeparableConv2DKeras(filters=filters,kernel_size=3, strides=strides,
padding='same', activation='relu')(input_layer)
output_layer = layers.BatchNormalization()(output_layer)
return output_layer
def conv2d_batchnorm(input_layer, filters, kernel_size=3, strides=1):
output_layer = layers.Conv2D(filters=filters, kernel_size=kernel_size, strides=strides,
padding='same', activation='relu')(input_layer)
output_layer = layers.BatchNormalization()(output_layer)
return output_layer
The following helper function implements the bilinear upsampling layer. Upsampling by a factor of 2 is generally recommended, but you can try out different factors as well. Upsampling is used in the decoder block of the FCN.
def bilinear_upsample(input_layer):
output_layer = BilinearUpSampling2D((2,2))(input_layer)
return output_layer
In the following cells, you will build an FCN to train a model to detect and locate the hero target within an image. The steps are:
encoder_block
decoder_block
Create an encoder block that includes a separable convolution layer using the separable_conv2d_batchnorm()
function. The filters
parameter defines the size or depth of the output layer. For example, 32 or 64.
def encoder_block(input_layer, filters, strides):
# TODO Create a separable convolution layer using the separable_conv2d_batchnorm() function.
output_layer = separable_conv2d_batchnorm (input_layer, filters, strides)
return output_layer
The decoder block is comprised of three parts:
def decoder_block(small_ip_layer, large_ip_layer, filters):
# TODO Upsample the small input layer using the bilinear_upsample() function.
upsmp_small_ip_layer = bilinear_upsample(small_ip_layer)
# TODO Concatenate the upsampled and large input layers using layers.concatenate
concatenated = layers.concatenate([upsmp_small_ip_layer, large_ip_layer])
# TODO Add some number of separable convolution layers
output_layer = separable_conv2d_batchnorm (concatenated, filters)
return output_layer
Now that you have the encoder and decoder blocks ready, go ahead and build your FCN architecture!
There are three steps:
def fcn_model(inputs, num_classes):
flt = 32
# TODO Add Encoder Blocks.
# Remember that with each encoder layer, the depth of your model (the number of filters) increases.
encoder_layer_1 = encoder_block(inputs, flt, 2)
encoder_layer_2 = encoder_block(encoder_layer_1, flt*2 , 2)
encoder_layer_3 = encoder_block(encoder_layer_2, flt*4 , 2)
# TODO Add 1x1 Convolution layer using conv2d_batchnorm().
mid_layer = conv2d_batchnorm(encoder_layer_3, flt*4, kernel_size = 1, strides = 1)
# TODO: Add the same number of Decoder Blocks as the number of Encoder Blocks
decoder_layer_1 = decoder_block( mid_layer, encoder_layer_2, flt*4 )
decoder_layer_2 = decoder_block( decoder_layer_1, encoder_layer_1, flt*2 )
decoder_layer_3 = decoder_block( decoder_layer_2, inputs, flt )
# The function returns the output layer of your model. "x" is the final layer obtained from the last decoder_block()
outputs = layers.Conv2D(num_classes, 3, activation='softmax', padding='same')(decoder_layer_3)
# Print network shapes
print(inputs)
print(encoder_layer_1)
print(encoder_layer_2)
print(encoder_layer_3)
print(mid_layer)
print(decoder_layer_1)
print(decoder_layer_2)
print(decoder_layer_3)
print(outputs)
return outputs
The following cells will use the FCN you created and define an ouput layer based on the size of the processed image and the number of classes recognized. You will define the hyperparameters to compile and train your model.
Please Note: For this project, the helper code in data_iterator.py
will resize the copter images to 160x160x3 to speed up training.
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
image_hw = 160
image_shape = (image_hw, image_hw, 3)
inputs = layers.Input(image_shape)
num_classes = 3
# Call fcn_model()
output_layer = fcn_model(inputs, num_classes)
Define and tune your hyperparameters.
number_of_validation_images = 1184
number_of_training_images = 4131
learning_rate = 0.002
batch_size = 40
num_epochs = 40
steps_per_epoch = number_of_training_images // batch_size + 1
validation_steps = number_of_validation_images // batch_size + 1
workers = 10
print("steps per epoch: ", steps_per_epoch)
print("validation steps: ", validation_steps)
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
# Define the Keras model and compile it for training
model = models.Model(inputs=inputs, outputs=output_layer)
#model.compile(optimizer=keras.optimizers.Adam(learning_rate), loss='categorical_crossentropy')
model.compile(optimizer=keras.optimizers.Nadam(lr=learning_rate), loss='categorical_crossentropy')
# Data iterators for loading the training and validation data
train_iter = data_iterator.BatchIteratorSimple(batch_size=batch_size,
data_folder=os.path.join('..', 'data', 'train'),
image_shape=image_shape,
shift_aug=True)
val_iter = data_iterator.BatchIteratorSimple(batch_size=batch_size,
data_folder=os.path.join('..', 'data', 'validation'),
image_shape=image_shape)
logger_cb = plotting_tools.LoggerPlotter()
callbacks = [logger_cb]
model.fit_generator(train_iter,
steps_per_epoch = steps_per_epoch, # the number of batches per epoch,
epochs = num_epochs, # the number of epochs to train for,
validation_data = val_iter, # validation iterator
validation_steps = validation_steps, # the number of batches to validate on
callbacks=callbacks,
workers = workers)
# Save your trained model weights
weight_file_name = 'model_weights'
model_tools.save_network(model, weight_file_name)
Now that you have your model trained and saved, you can make predictions on your validation dataset. These predictions can be compared to the mask images, which are the ground truth labels, to evaluate how well your model is doing under different conditions.
There are three different predictions available from the helper code provided:
# If you need to load a model which you previously trained you can uncomment the codeline that calls the function below.
# weight_file_name = 'model_weights'
# restored_model = model_tools.load_network(weight_file_name)
The following cell will write predictions to files and return paths to the appropriate directories.
The run_num
parameter is used to define or group all the data for a particular model run. You can change it for different runs. For example, 'run_1', 'run_2' etc.
run_num = 'run_1'
val_with_targ, pred_with_targ = model_tools.write_predictions_grade_set(model,
run_num,'patrol_with_targ', 'sample_evaluation_data')
val_no_targ, pred_no_targ = model_tools.write_predictions_grade_set(model,
run_num,'patrol_non_targ', 'sample_evaluation_data')
val_following, pred_following = model_tools.write_predictions_grade_set(model,
run_num,'following_images', 'sample_evaluation_data')
Now lets look at your predictions, and compare them to the ground truth labels and original images. Run each of the following cells to visualize some sample images from the predictions in the validation set.
# images while following the target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','following_images', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
# images while at patrol without target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','patrol_non_targ', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
# images while at patrol with target
im_files = plotting_tools.get_im_file_sample('sample_evaluation_data','patrol_with_targ', run_num)
for i in range(3):
im_tuple = plotting_tools.load_images(im_files[i])
plotting_tools.show_images(im_tuple)
Evaluate your model! The following cells include several different scores to help you evaluate your model under the different conditions discussed during the Prediction step.
# Scores for while the quad is following behind the target.
true_pos1, false_pos1, false_neg1, iou1 = scoring_utils.score_run_iou(val_following, pred_following)
# Scores for images while the quad is on patrol and the target is not visable
true_pos2, false_pos2, false_neg2, iou2 = scoring_utils.score_run_iou(val_no_targ, pred_no_targ)
# This score measures how well the neural network can detect the target from far away
true_pos3, false_pos3, false_neg3, iou3 = scoring_utils.score_run_iou(val_with_targ, pred_with_targ)
# Sum all the true positives, etc from the three datasets to get a weight for the score
true_pos = true_pos1 + true_pos2 + true_pos3
false_pos = false_pos1 + false_pos2 + false_pos3
false_neg = false_neg1 + false_neg2 + false_neg3
weight = true_pos/(true_pos+false_neg+false_pos)
print(weight)
# The IoU for the dataset that never includes the hero is excluded from grading
final_IoU = (iou1 + iou3)/2
print(final_IoU)
# And the final grade score is
final_score = final_IoU * weight
print(final_score)


The witterings posted below reminded me of the complete lack of fury caused by Hooting Yard's own Mohammed Cartoon non-controversy. Back in September 2006, to accompany a piece called Blodgett's Jihad, a blasphemous portrayal of “the Prophet” appeared here without causing ructions. Here it is again. Shield your eyes if you do not wish to be offended.


Car Price Analysis
"I’ve always been asked, ’What is my favorite car?’ and I’ve always said ’The next one." (--Carroll Shelby)


Hi, I am Veeraj.
I work as a Full Stack Developer with strong backend skills. I'm based in Sydney, Australia.
Since 2012 I've been living and breathing web development, have created wide variety of
websites,
web apps and mobile apps using web technologies.
I am always trying to learn something new. Feel free to leave a message.
Work Experience
Academ Pty Ltd | Senior Web Dev ( Nov 2019 - Current )
- My work here involves developing and maintaining multiple legacy projects used by Universities across Australia.
3iology Tech Solutions LLP | Tech Lead ( Jan 2016 - Oct 2019 )
- Developed multiple projects on Laravel, Ionic and AWS stack for B2B & B2C clients.
Approwess technologies Pvt Ltd | Web Developer ( Aug 2013 - Dec 2015 )
- Developed SSO architecture for students/teachers authentication across multiple projects in Education Sector.