Hi There! I'm Vera Thies.
I am a web developer, designer and creative thinker in Barcelona.
My Skillset
Web Design
Need a website? Contact me and I'll create a design specifically adjusted to your needs.
Front End Development
Already have a designer's PSD? I'll use my skills in HTML, CSS and JavaScript to create a responsive website for you!
Version Management
I use Git, Github and the Terminal for version control. It's a great way to store all those projects or work together online.
My Recent Work
A little bit about me
I am passionate about the web!
Once I discovered my passion for
front-end development, I taught myself how to code
in HTML, CSS and Javascript. I’m proactive working
with an analytical mindset and an eye for detail.


This page describes the format effectors that are included as part of the Formatted Textual Output gem package. They're based upon the SYS$FAO syntax found on the OpenVMS operating system, but aren't an exact duplication. There are some that are missing because they only make sense on OpenVMS, and some extras that fill in where SYS$FAO had missing or outdated functionality.
All of the standard effectors begin with an exclamation mark or 'bang' (!). Most (but not all) of them support a field width, which is a decimal number immediately following the bang. If a field width is specified, the inserted value will be exactly that wide. Whether it is left- or right-justified, space-filled or otherwise, is effector-specific. As an example, the effector "!AS" means "insert a string." The actual text inserted will be as long or as short as the argument. However, the effector "!15AS" specifies an exact field width of 15 columns, meaning that a longer input will be truncated and a shorter one filled.
The effectors are grouped into several different categories, each of which is described in the following sections.
Programming note:
As of version 1.1.0, each of the standard effectors supplied
with the package has an unique identifier that is the same
across all installations. For instance, the id value for
the "!AS" effector will be the same on all systems,
and different from that of the "!UB" effector.
Simply put, the format effectors in this category cause text from the argument to be inserted in the output string. All of them accept the standard field-width syntax.
Inserts a String argument. If the value is shorter than the field width, the result will be left-justified and space-filled. If it is longer, it will be truncated on the right.
FTO.new('!AS', 'abcdefg').format => "abcdefg" FTO.new('!10AS', 'abcdefg').format => "abcdefg " FTO.new('!4AS', 'abcdefg').format => "abcd"
Inserts a Fixnum argument, represented in the specified radix. The radix may be in the range of 2 through 36 inclusive; values outside that range will result in an exception being raised.
The radix may be a simple integer, an integer with a leading zero, or an octothorpe character '#'. The effects are described in the table below.
For radices higher than 10, the letters 'a' through 'z' will be added to the set of digits as appropriate. If the 'R' suffix is upper-case, such letters will be likewise uppercase. If the effector ends with a lowercase 'r', the letters will also be lowercase.
| Syntax | Result is Shorter than Field Width | Result is Longer than Field Width |
|---|---|---|
| @nnR | Result is left-justified and space-filled. | Result is left-justified and truncated on the right. |
| @0nnR | Result is right-justified and zero-filled on the left. | Result is left-justified and truncated on the right. |
| @#R | As for @nnR above, except that the radix value is taken from the argument list (before the value to be formatted). | |
| @0#R | As for @0nnR above, except that the radix value is taken from the argument list (before the value to be formatted). |
If the value is shorter than the field width, the result will be left-justified and space-filled. If it is longer, it will be truncated on the right.
FTO.new('!@2R', 141).format => "10001101" FTO.new('!@3R', 141).format => "12020" FTO.new('!@10R', 141).format => "141" FTO.new('!@16R', 141).format => "8D" FTO.new('!@36R', 141).format => "3X" FTO.new('!@36r', 141).format => "3x" FTO.new('!4@36R', 141).format => "3X " FTO.new('!4@036R', 141).format => "003X" FTO.new('!4@2R', 141).format => "1000"


Corrie star Shobna Gulati shares heartbreak as her mum dies
Former Coronation Street and Loose Women star Shobna Gulati has shared a heartbreaking social media post on Instagram following the tragic death of her mother. Revealing that she is ‘heartbroken’ following the loss a few weeks ago, Shobna admitted that she is not sure how to live without her.
The actress, best known for playing Sunita Alahan in the soap, said in a moving post accompanied with a picture of her mum: ‘Our beautiful mum passed away , a few weeks ago, peacefully in her sleep . Still processing, these days are hard . She was our lynchpin connecting us as a family .
‘Our lives are changed and life is very different now . She did her very best and in the last 25 years I grew to know her as a person and the amazing woman that was our mum and for that circumstance and time I am truly grateful . She taught me such a lot … but not how to live without her . Completely heartbroken.’
She recently wrote in a blog for Alzheimer’s Research UK Dementia Blog: ‘Vascular dementia has definitely made Mum more socially isolated, and more and more of today’s older generation is facing this future. It’s also isolating for carers, like me and my siblings.
Advertisement Advertisement
‘In our community it’s normal for everyone to know everyone else’s business, it’s a very social affair. But when you’re struggling to cover cracks in normal life, it can also create a real social pressure.
‘Talking about dementia, and the value of research, is vital. It’s such an important way to break down these stigmas.’
Shobna left the role of Sunita in 2013, during a dramatic pub fire storyline after the character had an affair with Karl Munro. During her stint, she had a number of high profile storylines, including being taken hostage by husband Dev’s stalker ex Maya Sharma.


Join
Thank you for applying to join dimension.sh, once an admin has approved your application you'll receive an email with your login information. Please check your spam mailbox for any mails from<EMAIL_ADDRESS>Thank you for applying to join dimension.sh, once an admin has approved your application you'll receive an email with your login information. Please check your spam mailbox for any mails from "signup@dimension.sh"


--- layout: default date: 22/06/2019 ---
Covers races from 28th April — 16th June.
Last updated: {{ page.date | date: "%A, %B %e" }}
{% include standings.html riders=site.data.2019.series_3.irongoat teams=site.data.2019.series_3.irongoatteam %} {% include datetime.html %}


/*!
* @concept ContainerConcept
*
* @headerfile <seqan/basic.h>
*
* @extends AssignableConcept
* @extends DestructibleConcept
*
* @brief A container is an object that stores other objects (elements).
*
* @signature ContainerConcept<T>
*
* Containers store multiple entries of the same type (the element type)
* and provide means to access these items. More specific, each container has an
* iterator type that is used for accessing its elements.
*
* There is no guarantee for the elements to be in a particular order (the order
* can vary between two iterations) and no guarantee for the time complexity of
* element access. Furthermore, there is no guarantee that there can be more
* than one iterator in the container. Modification of a container through an
* iterator invalidates all other iterators.
*
* Refinements of the Container concept or specific implementations can provide
* these guarantees, however.
*
* A container owns its elements and the elements are destructed when their
* owning container is destructed. The elements must fulfill the concepts @link
* AssignableConcept @endlink and @link DestructibleConcept @endlink.
*
* @mfn ContainerConcept#DirectionIterator
*
* @brief Return the direction iterator for the given direction.
*
* @signature DirectionIterator<TContainer>::Type;
*
* @tparam TContainer The container to query for its direction iterator.
*
* @return Type The resulting direction iterator.
*
* @mfn ContainerConcept#Value
*
* @brief Returns the value type of the container.
*
* @signature Value<TContainer>::Type
*
* @tparam TContainer The Container to query.
*
* @return Type The element type of the container.
*
* The value type is the type that can be used for storing copies of the
* elements in the container.
*
* @section Valid Expressions
*
* The variable v has the value type of the container TContainer whereas it is
* an iterator into the container. Thus, copies of values from TContainer (*it)
* ca be stored in v.
*
* @code{.cpp}
* Value<TContainer>::Type v = *it;
* @endcode
*
*
* @mfn ContainerConcept#GetValue
*
* @brief Returns the get-value type of the container.
*
* @signature GetValue<TContainer>::Type
*
* @tparam TContainer The Container to query.
*
* @return Type The get-value type of the container.
*
* The get-value type of the container is a type for efficient read-only access
* to the elements in the container. For small types (e.g. <tt>int</tt>), this
* can be a copy (thus <tt>int</tt>), for larger types, this can be a const
* reference to the value type.
*
* @section Valid Expressions
*
* The variable v has the get-value type of the container TContainer whereas it
* is an iterator into the container. Thus, we can store a get-value in v.
*
* @code{.cpp}
* GetValue<TContainer>::Type v = *it;
* @endcode
*
*
* @mfn ContainerConcept#Reference
*
* @brief Returns the reference type of the container.
*
* @signature Reference<TContainer>::Type
*
* @tparam TContainer The Container to query.
*
* @return Type The reference type of the container.
*
* Different from STL containers, the const-ness of <tt>TContainer</tt> decides
* whether the returned type is a const reference or a reference for modifying
* elements.
*
* Note that the reference type is not guaranteed to be <tt>TValue &</tt> if
* the value type of the container is <tt>TValue</tt>. The reference can be
* implemented as a proxy, similar to <tt>std::vector<bool></tt>.
*
* @section Valid Expressions
*
* The variable r has the reference type of the container TContainer whereas it
* is an iterator into the container. Thus, we can store a reference to a value
* in the container in r. Then, we can assign the value of v, a value of the
* container.
*
* @code{.cpp}
* Reference<TContainer>::Type r = *it; // reference into container
* r = v; // updates value in container, thus also *it
* @endcode
*
*
* @mfn ContainerConcept#Iterator
*
* @brief Returns the iterator type of the container.
*
* @signature Iterator<TContainer[, TSpec]>::Type
*
* @tparam TContainer The Container type to query.
* @tparam TSpec Optionally, a tag for selecting the kind of iterator. If not
* given, then @link ContainerConcept#DefaultIteratorSpec @endlink
* of TContainer is used. When given, one of <tt>Standard</tt> and
* <tt>Rooted</tt>.
*
* @return Type The iterator type.
*
* Different from the STL the <tt>const</tt> attribute of <tt>TContainer</tt>
* determines whether the resturned iterator is a const iterator or a non-const
* iterator.
*
* @see ContainerIteratorTags
*
* @mfn ContainerConcept#Size
*
* @brief Returns the size type of a container.
*
* @signature Size<TContainer>::Type
*
* @tparam TContainer The Container type to query.
*
* @return Type The type to use for storing container sizes.
*
* @mfn ContainerConcept#Position
*
* @brief Returns the position type of a container.
*
* @signature Positin<TContainer>::Type
*
* @tparam TContainer The Container type to query.
*
* @return Type The type to use for storing container positions.
*
* @mfn ContainerConcept#Difference
*
* @brief Returns the type for distances between two iterators.
*
* @signature Size<TContainer>::Type
*
* @tparam TContainer The Container type to query.
*
* @return Type The type to use for storing iterator distances sizes.
*
* This must be the same type as the distance type of the containers iterators.
*
* @mfn ContainerConcept#DefaultIteratorSpec
*
* @brief Returns the default iterator specialization.
*
* @signature DefaultIteratorSpec<TContainer>::Type
*
* @tparam TContainer The Container type to query.
*
* @return Type The iterator specialization tag type.
*
* Used by @link ContainerConcept#Iterator @endlink to select the default value
* for <tt>TSpec</tt>.
*
* @see ContainerConcept#Iterator
*
* @mfn ContainerConcept#DefaultGetIteratorSpec
*
* @brief Returns the default iterator specialization for functions.
*
* @signature DefaultGetIteratorSpec<TContainer>::Type
*
* @tparam TContainer The Container type to query.
*
* @return Type The iterator specialization tag type.
*
* Used by functions such as @link ContainerConcept#begin @endlink and @link
* ContainerConcept#end @endlink for the <tt>TSpec</tt> parameter.
*
* @see ContainerConcept#Iterator
*
* @fn ContainerConcept#writeValue
*
* @brief Write a value at the end of a container.
*
* @signature void writeValue(container, val);
*
* @param[in,out] container to append to.
* @param[in] val The value to append.
*
* @see ContainerConcept#appendValue
*
* @fn ContainerConcept#write
*
* @brief Write to a container.
*
* @signature void write(container, iter, n);
*
* @param[in,out] container The container to append to.
* @param[in,out] iter The @link ForwardIteratorConcept forward iterator
* @endlink to take the values from.
* @param[in] n Number of elements to write from <tt>iter</tt>.
*
* This function reads <tt>n</tt> values from <tt>iter</tt> and appends them to
* the back of <tt>container</tt>.
*
* @fn ContainerConcept#begin
*
* @brief Returns an iterator to the beginning of the container.
*
* @signature TIterator begin(c[, tag]);
*
* @param[in] c The container to get the begin iterator for (type
* <tt>TContainer</tt>).
* @param[in] tag An optional tag for selecting the type of the iterator. One of
* <tt>Standard</tt> and <tt>Rooted</tt>. When left out, @link
* ContainerConcept#DefaultGetIteratorSpec @endlink of
* <tt>TContainer</tt> is used.
*
* @return TIterator Iterator to the beginning of the container, the type is
* selected by @link ContainerConcept#Iterator @endlink with
* the given (or default) tag.
*
* When empty, <tt>begin(c) == end(c)</tt>.
*
* @fn ContainerConcept#end
*
* @brief Returns an iterator to the end of the container.
*
* @signature TIterator end(c[, tag]);
*
* @param[in] c The container to get the end iterator for (type
* <tt>TContainer</tt>).
* @param[in] tag An optional tag for selecting the type of the iterator. One of
* <tt>Standard</tt> and <tt>Rooted</tt>. When left out, @link
* ContainerConcept#DefaultGetIteratorSpec @endlink of
* <tt>TContainer</tt> is used.
*
* @return TIterator Iterator to the end of the container, the type is selected
* by @link ContainerConcept#Iterator @endlink with the given
* (or default) tag.
*
* When empty, <tt>begin(c) == end(c)</tt>.
*
* @fn ContainerConcept#length
*
* @brief Returns the size of the container.
*
* @signature TSize length(c);
*
* @param[in] c The container to query for its size.
*
* @return TSize The number of elements in the container.
*
* @fn ContainerConcept#empty
*
* @brief Returns whether the container is empty.
*
* @signature bool empty(c);
*
* @param[in] c The container to query.
*
* @return bool Whether or not the container is empty.
*
* @fn ContainerConcept#swap
*
* @brief Swap the contents of two containers.
*
* @signature void swap(c1, c2);
*
* @param[in,out] c1 The first container.
* @param[in,out] c2 The second container.
*
* Swaps the contents of <tt>c1</tt> and <tt>c2</tt>. The <tt>swap</tt> function
* must be defined in the same namespace as the container for Koenig lookup to
* work. In the heart of sorting algorithms, for example, the swap function is
* properly used as follows. This way, both the generic <tt>std::swap</tt> and
* the specialized <tt>swap</tt> function of the container are available:
*
* @code{.cpp}
* TContainer c1, c2; // ...
* using std::swap;
* swap(c1, c2);
* @endcode
*
*
* @fn ContainerConcept#getObjectId
*
* @headerfile <seqan/sequence.h>
*
* @brief A value that identifies the underlying sequence.
*
* @signature TVoidPtr getObjectId(cont);
*
* @param[in] cont The object for which to determine the id.
*
* @return TVoidPtr a <tt>void const *</tt> value identying the object.
*
* Two sequences should have the same id, if they share the same resource, e.g.
* the same memory buffer.
*
* The exact semantic of the returned id can vary for different classes.
* Typically, the id of a string is a <tt>void const *</tt> to the end of the
* string.
*
* @section Examples
*
* @code{.cpp}
* String<char> str = "hallo seqan";
* bool b1 = (getObjectId(str) == getObjectId(infix(str, 3, 7)); //true
* bool b2 = (getObjectId(str) == getObjectId(String<char>(str))); //false
* bool b3 = (getObjectId(str) == getObjectId(toCString(str)));
* @endcode
*
*
* In this example, <tt>b1</tt> is <tt>true</tt., since the segment object
* returned by <tt>infix()</tt> is just a filter and uses the buffer of it's
* host object str.
*
* <tt>String<char>(str)</tt> constructs a temporary copy of <tt>str</tt>,
* so these two strings have different id values.
*
* The result of the last comparison depends on the implementation of
* <tt>toCString</tt> and cannot be predicted at compile time.
*
* @fn ContainerConcept#moveValue
*
* @headerfile <seqan/sequence.h>
*
* @brief Move a value into a container at a given position.
*
* @signature void moveValue(container, pos, value);
*
* @param[in,out] container The container to manipulate.
* @param[in] pos The position of the item in the container to manipulate.
* @param[in,out] value The value to move to <tt>container[pos]</tt>.
*
* @fn ContainerConcept#append
*
* @headerfile <seqan/sequence.h>
*
* @brief Concatenate a container to another.
*
* @signature void append(target, source);
*
* @param[in,out] target The @link ContainerConcept container @endlink to append
* <tt>source</tt> to.
* @param[in] source This @link ContainerConcept container @endlink will be
* appended to <tt>source</tt>.
*
* @fn ContainerConcept#appendValue
*
* @headerfile <seqan/sequence.h>
*
* @brief Append a value to a container.
*
* @signature void appendValue(target, val[, tag]);
*
* @param[in,out] target The container to append <tt>val</tt> to.
* @param[in] val The value to append to <tt>target</tt>.
* @param[in] tag The resize tag to use. Defaults to What
* DefaultOverflowImplicit returns for the type of
* <tt>target</tt>.
*
* @fn ContainerConcept#shrinkToFit
*
* @headerfile <seqan/sequence.h>
*
* @brief Resizes container to minimum capacity.
*
* @signature void shrinkToFit(cont);
*
* @param[in] cont The container to shrink.
*
* @fn ContainerConcept#directionIterator
*
* @brief Returns direction iterator for a container.
*
* @signature TDirIter directionIterator(streamBuf, dirTag);
*
* @param[in] streamBuf The @link ContainerConcept container @endlink object to
* compute iterator for.
* @param[in] dirTag Direction tag, one of the @link DirectionTags @endlink.
*
* @return TDirIter The resulting @link ContainerConcept#DirectionIterator
* @endlink.
*/


[gecode-users] Error in GecodeJ
Debdeep Banerjee
banerjed at rsise.anu.edu.au
Sat Dec 8 07:18:14 CET 2007
Hi,
I am getting the following error message after some time the DFS search
starts.
--------------------------------------------------------------------------------------------------------------------
terminate called after throwing an instance of 'Gecode::SpaceFailed'
what(): Space::clone: Attempt to invoke operation on failed space
Aborted (core dumped)
----------------------------------------------------------------------------------------------------------------------
I have written a custom propagator. For small size problems my program
solves correctly, but when ever i have tried a bigger size problem or a
bit complicated problem where number of backtracks are significantly
large, I am getting the above error.
I have attached my propagator code.
Any help ????
With regards
Debdeep
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CSPConstraintsPropagator.java
Type: text/x-java
Size: 14236 bytes
Desc: not available
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20071208/0a2d5ebb/attachment.java>
More information about the gecode-users
mailing list


Most people do know when their birthdays are,
but some might not know what day of the week they were born.
Luckily for us, there are ways to calculate the day of the week from a specific date.
The following is one of the many methods that exist for that;
Enter your age below:
male
female
Answer:


5 stocks that foreign portfolio investors are buying now
Historically, FPIs have bought into large cap counters. But it is different this time and they are now concentrating on mid-caps. A concentrated large-cap rally during the past year and resultant high valuation are the reasons why FPIs are bypassi...
by Narendra NathanAfter months of selling, foreign portfolio investors (FPI) are buying Indian equity again. Net inflows as of 11 November stood at over Rs 30,000 crore. The question now is whether this FPI inflow will continue in the coming months. Experts feel it will due to several factors. First, the liquidity crisis in the domestic financial system is easing on the back of increased government spending over the past few months. There had been a contraction of government spending due to elections and new government formation, but it has picked up again from July.
The next reason is Indian companies have been able to show significant improvement in operating margins due to the fall in commodity prices. This along with the reduction in corporate tax rates, helped companies report fabulous net profit growth. Since lower tax impact is a permanent feature, net profit growth is likely to be better in the coming quarters.
The third factor that is attracting FPIs now are the government’s measures to stimulate the economy. “Favourable factors are attracting smart money back to Indian markets. This trend will continue if the government continues with its reform measures,” says Kunj Bansal, Partner & CIO, Acepro Sarthi Group.
Favourable global economic setting, like the US Federal Reserve cutting rates, etc is also channeling inflows to emerging markets like India. “Due to the global slowdown and lack of opportunities in developed markets, global investors have turned positive towards emerging markets, including India,” says Vinod Nair, Head of Fundamental Research, Geojit Financial Services. Since global investors are chasing growth now, will the ongoing economic slowdown in India derail these inflows? The answer is no. “GDP growth for the September quarter may be even below 5%. However, FPI inflows may not get impacted due to this slower growth, because our growth rates are still better compared to other countries,” says Bansal.
FPIs are buying after months of selling
Historically, FPIs have bought into large cap counters. However, it is different this time and they are now concentrating more on mid-cap counters and that is one reason why the market cap of all stocks shortlisted for this story are below Rs 30,000 crore. A concentrated large-cap rally during the past year and the resultant high valuation are the reasons why FPIs are bypassing large-caps. “FPIs’ current mid-cap focus is because correction has brought down the valuation there. Since valuation in this segment is still favourable, this trend is expected to continue in the medium to long term,” says Nair.
We have used several filters to shortlist stocks that have witnessed an increase in FPI inflows. First, only stocks with at least 5% increase in FPI holding compared to the same period last year (y-o-y) and 1% increase compared to the previous quarter (q-o-q) were selected. We only selected stocks recommended by at least five analysts and these stocks also have a potential upside of at least 15% from current market prices. We also eliminated a few companies with extreme valuation ratios.
- Shriram Transport Finance
With customers postponing purchase of new commercial vehicles, the demand for used vehicles is rising. This has come as a boon for companies financing used vehicles like Shriram Transport. Its used vehicle disbursements during the second quarter of 2019-20 grew by 7% y-o-y and 9% q-o-q. The share of used commercial vehicles in its loan book went up from 82% to 84% y-o-y. Sales of new vehicles are also expected to pick up during January-March 2020.
Hike in FPI holding (%)
- Y-o-Y: 12.05
- Q-o-Q: 4.35
- CMP (Rs): 1,121.25
- Target price (Rs): 1,304.63
- Potential gain: 16.35%
Analyst Views
- Buy: 34
- Hold: 4
- Sell: 2
Shriram Transport’s initiatives like reduction in loan to value ratios, digital collections, regular visits to borrowers, etc are expected to improve asset quality in coming quarters. “Initial signs of healthy business pick up, core operating metrics stabilising and improving funding environment should translate into steady 15% RoEs over 2021-22 with positive upward bias,” says a recent Prabhudas Lilladher report.
- Ujjivan Financial Services
Ujjivan Financial Services is the holding company and promoter of Ujjivan Small Finance Bank (USFB). USFB has reported a net profit of Rs 93 crore, a growth of 111% y-o-y, during the second quarter of 2019-20. Being a new entrant, USFB’s gross and net NPAs are at 0.9% and 0.3% respectively.
Ujjivan Financial Services will soon launch the IPO of USFB. This IPO is expected to raise Rs 1,200 crore. This listing will make Ujjivan Financial Services a parent of another listed company and such parent companies usually trade at a discount to its listed subsidiaries.
Hike in FPI holding (%)
- Y-o-Y: 6.59
- Q-o-Q: 1.12
- CMP (Rs): 274.55
- Target price (Rs): 324.73
- Potential gain: 18.28%
Analyst Views
- Buy: 10
- Hold: 5
- Sell: 3
To avoid this holding company discount and to bring down the promoter holding of USFB below 40%, Ujjivan Financial Services is planning approach RBI to explore the possibility of reverse merger. Due to these factors, Ujjivan Financial Services is quoting at reasonable valuations and is the reason why FPIs are increasing their stake in this counter. “We arrived at our price target of Rs 360 based on the assumption that the planned capital raising entails 15% dilution and 1 year forward holding company discount of 40%,” says a recent Yes Securities report.
- Bharat Electronics
Bharat Electronics supplies advanced electronic equipment to the Indian armed forces. Being a state-owned aerospace and defence company, military orders are flowing to it on a regular basis. For example, Bharat Electronics has bagged orders worth Rs 7,088 crore in the second quarter of 2019-20 and its total order book on 30 September stands at Rs 56,178 crore. It also has an export order book of $158.5 million as on 30 September.
Hike in FPI holding (%)
- Y-o-Y: 6.51
- Q-o-Q: 2.52
- CMP (Rs): 108.85
- Target price (Rs): 126.19
- Potential gain: 15.93%
Analyst Views
- Buy: 17
- Hold: 3
- Sell: 6
A strong order book gives clear revenue visibility for the coming years. Bharat Electronics is diversifying into non defence segment like homeland security, cyber security and work related to smart cities, etc. Revenue from the new initiatives reached the 20% mark during the second quarter. Bharat Electronics is also the main supplier of EVMs. Reasonably high EBITDA margin is another point worth mentioning. “Traction in execution and a favourable product mix is expected to help Bharat Electronics to maintain its EBITDA margins at around 20% levels in future,” says a recent ICICI Direct report.
Aster DM is an ideal candidate to benefit from the expected boost in medical tourism. With presence in all healthcare segments—hospitals, pharmacies, etc—Aster DM has a well-diversified business profile. With presence in seven Gulf Cooperation Council (GCC) countries and an established brand in south India, Aster DM also has a well-diversified geographical profile. Therefore, transfer of patients from GCC countries to Indian hospitals for complex treatment is easy.
Hike in FPI holding (%)
- Y-o-Y: 6.20
- Q-o-Q: 1.72
- CMP (Rs): 145
- Target price (Rs): 192
- Potential gain: 32.41%
Analyst Views
- Buy: 8
- Hold: 0
- Sell: 0
“Aster DM is an attractive play on the mandatory insurance coverage in GCC and the increasing insurance penetration in India,” says a recent JM Financial report. Since Aster DM is reporting high growth rates (grew by a CAGR of 35% in the past 5 years) and is expected to grow faster in coming years, its current low valuation (discount of around 50% compared to peers) is not justifi ed. The risk-reward is favourable at current valuations and a rerating in this counter is expected in the near future.
- Redington India
Despite the ongoing economic slowdown, Redington has surprised the street with revenue growth of 11% y-o-y and 6% q-o-q in the second quarter of 2019-20.
More importantly, the domestic growth (15.3% y-o-y) was better than its growth from the overseas business (8.5% y-o-y). Net profit growth would have been higher than 27% y-o-y had the ProConnect business—supply chain solutions—had not dragged it down. The ProConnect woe was more related to some vendor-specific issues and therefore, this issue is expected to get resolved in the next one or two quarters. In other words, this is not going impact the long-term business prospects of Redington.
Hike in FPI holding (%)
- Y-o-Y: 5.57
- Q-o-Q: 4.77
- CMP (Rs): 115.85
- Target price (Rs): 135.86
- Potential gain: 17.27%
Analyst Views
- Buy: 10
- Hold: 0
- Sell: 0
“We remain confident of strong revenue growth and improved profitability driving return on capital employed (RoCE) expansion for Redington to 16–18% by 2020-21,” says a recent Edelweiss report. In addition to the improvement in its business, the current low valuation is another major attraction in this counter. For example, it is now quoting at a PE of just 8.10 times.
All index values normalised to a base of 100.


Hi, welcome to this site. All broken links were removed:
Foo does exist now
Does-exist domain
Invalid host
Has no valid protocol


After our visit on Long Island, we headed out to Conception Island for a couple of days. Conception Island is a Bahamas National Trust Island, and is uninhabited. You are not allowed to remove anything from the island or beaches, and one mile radius from the island. Once anchored, Kris got out the binoculars to investigate something white she saw She could not quite determine what she saw, but remained curious.
We took the dinghy up into the mangrove river, and saw many
turtles. We saw about 30 or so, and once they saw us they
zoomed away rather quickly. The next day, Kris's curiosity
could not be sated, so Derek and Kris headed inland to find the
mysterious white item. About 1/2 hour of looking, trekking
through heavy scrub, they found it. It was a 12' x 12'
collapsible awning with frame. It was in good shape, with
only a small rip in the awning from where a topped palm tree
must have stopped its inland tumble in the wind. Since the
island is uninhabited, and the awning was a good 1000 feet into
the scrub and brush Kris decided to "rescue" it.
It took about 2 hours for Derek and Kris to extract the awning
and get it collapsed due to the heavy brush and scrub, but
eventually it made it back to the boat. Dean just shook
his head.
The next day we snorkeled on the reefs around the island, and
saw lots of coral and fishes. There was one small fish
about 2" long that hung out right at the stern of the boat.
Derek enjoyed playing with him, as the fish did not move away at
all, and you could put your face or hand right up to him.
Due to a bad storm coming, we decided to head back to George
Town for the best protection, because heading north to Cat
Island did not have protection from the strong west winds
forecasted.
One of the stories we did not hear much about until we arrived in the Bahamas is about the "Lion Fish". In 1992, Hurricane Andrew smashed an aquarium tank in Florida. About a half-dozen spiny, venomous lionfish washed into the Atlantic Ocean, spawning an invasion that could kill off local industry along with the native fish. Not sure if that is the only introduction of the fish but along the Eastern Coast the population of the Lion fish has multiplied faster than other fish they feed on, like grouper, snapper, and other game fish. The Lion fish's spines are poisonous so they do not have a natural predator. People are trying different approaches and one event was the "First Bahamas Lionfish Derby" which was a huge success: 1,408 lionfish taken in 1 day! We went after some with Bob and Anne and came back with 5 fish.  The fish are not that big so it does take a few to make a meal.
After the bad weather passed we planned on heading to Cat Island. We have enjoyed George Town but really wanted to head north and see other places. Well on Thursday the winds looked like they were favorable and off we went, again trying to make it to Cat Island. So maybe this year we are not suppose to go to Cat Island because based upon the winds and waves we choose a better option and that was to head back up the Exuma chain to Black Point. So sailing along with 25 knots of wind, seas were 4 to 8 foot and we needed to make a short passage through a narrow opening, no issues right? Something happened with our steering cable and other than giving us a high amount of stress as we neared the rocks with little to no steerage we did ok. :)
So now we are in Black Point and have worked on our steering system, a couple of cable clamps decided to come undone. We fixed that problem and made sure the rest of the system was ok. It also allowed us to fix a small leak on our outside shower, repack the steering grease, grease the rudder post, and change the filters in the raw water intake. See everything worked out for the best :).
The weather has been very unpredictable and not enjoyable lately. When we got to George Town the winds blew out of the south and west, normal is north and east, and were 25 to 35 knots. Most anchorages favor the "normal" winds so everyone sought the few that were not normal. For most of our time in the Bahamas we have not had rain but in the last week we have had squalls and rain storms almost everyday. It is becoming their rainy season so I guess it is normal but for us it is not as enjoyable. Again it is time to head north.
|
The Awning Adventure |
Lion Fish |


pn150115010345 #Start recording tcl command: 1/15/2015 00:56:16 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" #Stop recording: 1/15/2015 01:03:45 pn150126014340 #Start recording tcl command: 1/26/2015 01:42:49 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" #Stop recording: 1/26/2015 01:43:40 pn150312032943 #Start recording tcl command: 3/12/2015 03:26:49 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" #Stop recording: 3/12/2015 03:29:43 pn150315014010 #Start recording tcl command: 3/15/2015 00:57:46 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" prj_run Export -impl SevenSegClock -task Jedecgen pgr_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_program run prj_run Export -impl SevenSegClock -task Jedecgen pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run prj_run Export -impl SevenSegClock -task Jedecgen pgr_program run pgr_program run pgr_program run pgr_project save "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close pgr_project save "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_program set -port FTUSB-1 pgr_project close pgr_program set -cable USB pgr_program set -port EzUSB-0 pgr_project close pgr_program set -cable USB2 pgr_program set -port FTUSB-0 pgr_project close pgr_project save "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close pgr_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close pgr_project save "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close #Stop recording: 3/15/2015 01:40:10 pn150315075551 #Start recording tcl command: 3/15/2015 07:43:58 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" #Stop recording: 3/15/2015 07:55:51 pn150315202622 #Start recording tcl command: 3/15/2015 17:25:21 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" pgr_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close prj_run Export -impl SevenSegClock -task Jedecgen #Stop recording: 3/15/2015 20:26:22 pn150316023146 #Start recording tcl command: 3/16/2015 02:27:19 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" #Stop recording: 3/16/2015 02:31:46 pn150321011244 #Start recording tcl command: 3/21/2015 00:43:24 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen #Stop recording: 3/21/2015 01:12:44 pn150402042505 #Start recording tcl command: 4/2/2015 03:45:58 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" prj_run Export -impl SevenSegClock -task Jedecgen pgr_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_project close pgr_program run pgr_project close prj_run Export -impl SevenSegClock -task Jedecgen pgr_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close prj_run Export -impl SevenSegClock -task Jedecgen pgr_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_program run pgr_program run pgr_project save "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close prj_run Export -impl SevenSegClock -task Jedecgen prj_run Export -impl SevenSegClock -task Jedecgen pgr_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run pgr_program run prj_run Export -impl SevenSegClock -task Jedecgen pgr_program run pgr_project save "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock/SevenSegClock.xcf" pgr_project close #Stop recording: 4/2/2015 04:25:05 pn150712215511 #Start recording tcl command: 7/12/2015 21:53:21 #Project Location: /home/justin/7SegClock/7SegClock/Lattice_FPGA; Project name: SevenSegClock prj_project open "/home/justin/7SegClock/7SegClock/Lattice_FPGA/SevenSegClock.ldf" #Stop recording: 7/12/2015 21:55:11


rm(list = ls())
library(pander)
panderOptions('table.split.table', Inf)
library(ggplot2)
library(dplyr)
library(data.table)
options(datatable.fread.datatable = FALSE)
theme_set(theme_bw(base_size=15))
set.seed(2020)
# load some gists
source('https://gist.githubusercontent.com/liangyy/43912b3ecab5d10c89f9d4b2669871c9/raw/3ca651cfa53ffccb8422f432561138a46e93710f/my_ggplot_theme.R')
# load dependent scripts
source('../code/rlib_misc.R')
Here we look into parent illness information in UK Biobank. As designed, we limit our scope to Europeans. The parent illness phenotypes were queried by Owen and the data is at /vol/bmd/meliao/data/2020-04-12_parent-illness.tar.gz
. We also load the self-reported ancestry (after QC) processed by script at here and the resulting table is at /vol/bmd/yanyul/GitHub/ptrs-ukb/output/query_phenotypes_cleaned_up.csv
.
For more details on the parent illness in UK Biobank, please go to here. Some the data.frame’s being loaded here were generated in the above report as well.
list_init = readRDS('../analysis_output/parent_illness_init_phenotypes_clean_up.rds')
code = list_init$code
df = list()
df[['father']] = fread('/Users/yanyul/Desktop/tmp/2020-04-12_parent-illness/father_ilness.csv', sep = ',')
df[['mother']] = fread('/Users/yanyul/Desktop/tmp/2020-04-12_parent-illness/mother_illness.csv', sep = ',')
df_pheno = fread('/Users/yanyul/Documents/repo/github/ptrs-ukb/output/query_phenotypes_cleaned_up.csv', sep = ',')
instance_grp = list()
for(i in names(df)) {
coln = colnames(df[[i]])
instance = unlist(lapply(strsplit(coln, '_'), function(x) {x[3]}))
tab = data.frame(instance = instance[-1], colname = coln[-1])
instance_grp[[i]] = tab
instance_grp[[i]]$instance = as.character(instance_grp[[i]]$instance)
instance_grp[[i]]$colname = as.character(instance_grp[[i]]$colname)
}
# remove individuals with all columns being NA (remove by instance)
df_instance = list()
for(i in names(df)) {
df_instance[[i]] = list()
for(nn in unique(instance_grp[[i]]$instance)) {
cols = instance_grp[[i]] %>% filter(instance == nn) %>% pull(colname)
df_instance[[i]][[nn]] = df[[i]][, c('eid', cols)][rowSums(!is.na(df[[i]][, cols])) > 0, ]
}
}
# label with self reported ancestry
# only individuals passing ancestry QC and phenotype QC in ptrs-ukb are labeled
ancestry_instance = list()
for(i in names(df_instance)) {
ancestry_instance[[i]] = list()
for(nn in names(df_instance[[i]]))
ancestry_instance[[i]][[nn]] = df_instance[[i]][[nn]] %>% left_join(df_pheno %>% select(eid, meaning), by = 'eid') %>% pull(meaning)
}
Each row is an individual. The questionnaire is a multiple choice question so that there are N columns recording everthing being selected. To extract the information we want, we unfold the raw data frame into individual-by-choice where each entry indicates the number of occurrence of one choice in the row. In principle, the occurrence should be either 0 or 1. This is true within each instance. Some individuals may be asked multiple times. So, we need to:
Perform un-folding within each instance.
df_unfold = list()
for(i in names(df_instance)) {
df_unfold[[i]] = list()
for(nn in names(df_instance[[i]])) {
df_unfold[[i]][[nn]] = unfold_parent_illness_code(df_instance[[i]][[nn]][, -1], code[[i]]$code, code[[i]]$choice_w_grp)
}
}
Sanity check: Are occurrences all 0 or 1?
for(i in names(df_unfold)) {
for(nn in names(df_unfold[[i]])) {
message('In ', i, ', Instance ', nn, ' illness, # entry (the occurrence) > 1 = ', sum(df_unfold[[i]][[nn]] > 1))
}
}
## In father, Instance 0 illness, # entry (the occurrence) > 1 = 0
## In father, Instance 1 illness, # entry (the occurrence) > 1 = 0
## In father, Instance 2 illness, # entry (the occurrence) > 1 = 0
## In mother, Instance 0 illness, # entry (the occurrence) > 1 = 0
## In mother, Instance 1 illness, # entry (the occurrence) > 1 = 0
## In mother, Instance 2 illness, # entry (the occurrence) > 1 = 0
Next, we need to refine the zero’s in the table. The zeros could be:
This information should be added. First of all, let’s check if the above three options are exclusive. In other word, when they are set, other choices should not occur.
for(i in names(df_unfold)) {
for(nn in names(df_unfold[[i]])) {
for(g in 1 : 2) {
group_pheno = code[[i]] %>% filter(grp == g, code > 0) %>% pull(choice_w_grp)
group_exclude = code[[i]] %>% filter(grp == g, code < 0) %>% pull(choice_w_grp)
message('In ', i, ', Instance ', nn, ' illness group', g, ': ', '# of more than one exclusive choices are selected = ', sum(rowSums(df_unfold[[i]][[nn]][, group_exclude]) > 1))
exclusive_selected = (rowSums(df_unfold[[i]][[nn]][, group_exclude]) > 1) > 0
num_pheno_selected_when_exclusive = sum(rowSums(df_unfold[[i]][[nn]][exclusive_selected, ][, group_pheno]) > 0)
message('In ', i, ', Instance ', nn, ' illness: ', '# of any phenotype choice is selected when exclusive choices are selected = ', num_pheno_selected_when_exclusive)
}
}
}
## In father, Instance 0 illness group1: # of more than one exclusive choices are selected = 0
## In father, Instance 0 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In father, Instance 0 illness group2: # of more than one exclusive choices are selected = 0
## In father, Instance 0 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In father, Instance 1 illness group1: # of more than one exclusive choices are selected = 0
## In father, Instance 1 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In father, Instance 1 illness group2: # of more than one exclusive choices are selected = 0
## In father, Instance 1 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In father, Instance 2 illness group1: # of more than one exclusive choices are selected = 0
## In father, Instance 2 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In father, Instance 2 illness group2: # of more than one exclusive choices are selected = 0
## In father, Instance 2 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In mother, Instance 0 illness group1: # of more than one exclusive choices are selected = 0
## In mother, Instance 0 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In mother, Instance 0 illness group2: # of more than one exclusive choices are selected = 0
## In mother, Instance 0 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In mother, Instance 1 illness group1: # of more than one exclusive choices are selected = 0
## In mother, Instance 1 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In mother, Instance 1 illness group2: # of more than one exclusive choices are selected = 0
## In mother, Instance 1 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In mother, Instance 2 illness group1: # of more than one exclusive choices are selected = 0
## In mother, Instance 2 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
## In mother, Instance 2 illness group2: # of more than one exclusive choices are selected = 0
## In mother, Instance 2 illness: # of any phenotype choice is selected when exclusive choices are selected = 0
We expect all zeros. This means that:
Now that we proceed to refine zeros. “None of the above” means true zero so that we take care of it manually.
df_refine = df_unfold
code_mapper = function(xx) {
# map
# -17, -27 to 0
# -13, -23 to -3
# -11, -21 to -1
if(xx == -17 | xx == -27) {
return(0)
} else if(xx == -13 | xx == -23) {
return(-3)
} else if(xx == -11 | xx == -21) {
return(-1)
}
}
for(i in names(df_unfold)) {
for(nn in names(df_unfold[[i]])) {
for(g in 1 : 2) {
group_pheno = code[[i]] %>% filter(grp == g, code > 0) %>% pull(choice_w_grp)
group_exclude = code[[i]] %>% filter(grp == g, code < 0)
for(p in group_pheno) {
for(e in 1 : nrow(group_exclude)) {
col_ = group_exclude$choice_w_grp[e]
code_ = code_mapper(group_exclude$code[e])
is_chosen = df_refine[[i]][[nn]][, col_] == 1
df_refine[[i]][[nn]][is_chosen, ][, p] = code_
}
}
}
}
}
Load Data summary in Data-Field page
df_ukb = list()
for(i in names(df_refine)) {
df_ukb[[i]] = read.csv(paste0('../external_data/', i, '_illness_data_table.csv')) # %>% pander(caption = paste0(i, ' illness summary page'))
df_ukb[[i]] = df_ukb[[i]] %>% mutate(type = 'case') %>% left_join(code[[i]], by = c('Category' = 'choice')) %>% select(choice_w_grp, type, Count) %>% rename(count_in_ukb_website_total = Count) %>% filter(!is.na(choice_w_grp))
}
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
df_ukb_instance = list()
for(i in names(df_refine)) {
for(nn in names(df_refine[[i]])) {
df_ukb_instance[[i]][[nn]] = read.csv(paste0('../external_data/', i, '_illness_data_table_instance', nn, '.csv')) # %>% pander(caption = paste0(i, ' illness summary page'))
df_ukb_instance[[i]][[nn]] = df_ukb_instance[[i]][[nn]] %>% mutate(type = 'case') %>% left_join(code[[i]], by = c('Category' = 'choice')) %>% select(choice_w_grp, type, Count) %>% rename(count_in_ukb_website_instance = Count) %>% filter(!is.na(choice_w_grp))
}
}
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
## Warning: Column `Category`/`choice` joining factors with different levels, coercing to character
## vector
Count the number of cases, controls, and others for all parent illness phentypes.
code_translator = function(xx) {
# translator:
# 0 to control
# 1 to case
# -1 to dont_know
# -3 to prefer_not_to_answer
mm = data.frame(
x = c(0, 1, -1, -3),
y = c('control', 'case', 'dont_know', 'prefer_not_to_answer')
)
o = rep('NA', length(xx))
for(i in 1 : nrow(mm)) {
o[xx == mm$x[i]] = as.character(mm$y[i])
}
return(o)
}
for(i in names(df_refine)) {
for(nn in names(df_refine[[i]])) {
group_pheno = code[[i]] %>% filter(code > 0) %>% pull(choice_w_grp)
tmp = df_refine[[i]][[nn]][, group_pheno]
tmp_eur = df_refine[[i]][[nn]][, group_pheno][!is.na(ancestry_instance[[i]][[nn]]) & ancestry_instance[[i]][[nn]] == 'British', ]
tmp = tmp %>% reshape2::melt() %>% mutate(category = code_translator(value)) %>% group_by(variable, category) %>% summarize(count = n()) %>% ungroup()
tmp_eur = tmp_eur %>% reshape2::melt() %>% mutate(category = code_translator(value)) %>% group_by(variable, category) %>% summarize(count_eur = n()) %>% ungroup()
tmp = left_join(tmp, tmp_eur, by = c('variable', 'category'))
tmp %>%
left_join(df_ukb[[i]], by = c('variable' = 'choice_w_grp', 'category' = 'type')) %>%
left_join(df_ukb_instance[[i]][[nn]], by = c('variable' = 'choice_w_grp', 'category' = 'type')) %>%
# select(variable, category, count, Count) %>%
# rename(count_in_ukb = Count) %>%
pander(caption = paste0('Summary of ', i, ' illness', ' Instance ', nn)) %>%
cat
}
}
## No id variables; using all as measure variables
## No id variables; using all as measure variables
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | category | count | count_eur | count_in_ukb_website_total | count_in_ukb_website_instance |
|---|---|---|---|---|---|
| Heart disease (1) | case | 141832 | 102946 | 164345 | 141831 |
| Heart disease (1) | control | 310887 | 221211 | NA | NA |
| Heart disease (1) | dont_know | 34413 | 22790 | NA | NA |
| Heart disease (1) | prefer_not_to_answer | 640 | 301 | NA | NA |
| Stroke (1) | case | 67988 | 48602 | 78249 | 67988 |
| Stroke (1) | control | 384731 | 275555 | NA | NA |
| Stroke (1) | dont_know | 34413 | 22790 | NA | NA |
| Stroke (1) | prefer_not_to_answer | 640 | 301 | NA | NA |
| High blood pressure (1) | case | 100125 | 70207 | 114044 | 100125 |
| High blood pressure (1) | control | 352594 | 253950 | NA | NA |
| High blood pressure (1) | dont_know | 34413 | 22790 | NA | NA |
| High blood pressure (1) | prefer_not_to_answer | 640 | 301 | NA | NA |
| Diabetes (1) | case | 44665 | 29865 | 51152 | 44664 |
| Diabetes (1) | control | 408054 | 294292 | NA | NA |
| Diabetes (1) | dont_know | 34413 | 22790 | NA | NA |
| Diabetes (1) | prefer_not_to_answer | 640 | 301 | NA | NA |
| Chronic bronchitis/emphysema (1) | case | 48671 | 36129 | 55688 | 48671 |
| Chronic bronchitis/emphysema (1) | control | 404048 | 288028 | NA | NA |
| Chronic bronchitis/emphysema (1) | dont_know | 34413 | 22790 | NA | NA |
| Chronic bronchitis/emphysema (1) | prefer_not_to_answer | 640 | 301 | NA | NA |
| Alzheimer’s disease/dementia (1) | case | 20478 | 15014 | 26512 | 20477 |
| Alzheimer’s disease/dementia (1) | control | 432241 | 309143 | NA | NA |
| Alzheimer’s disease/dementia (1) | dont_know | 34413 | 22790 | NA | NA |
| Alzheimer’s disease/dementia (1) | prefer_not_to_answer | 640 | 301 | NA | NA |
| Parkinson’s disease (2) | case | 10706 | 7974 | 11471 | 10706 |
| Parkinson’s disease (2) | control | 434639 | 311641 | NA | NA |
| Parkinson’s disease (2) | dont_know | 41965 | 27408 | NA | NA |
| Parkinson’s disease (2) | prefer_not_to_answer | 462 | 225 | NA | NA |
| Severe depression (2) | case | 16360 | 11870 | 17459 | 16360 |
| Severe depression (2) | control | 428985 | 307745 | NA | NA |
| Severe depression (2) | dont_know | 41965 | 27408 | NA | NA |
| Severe depression (2) | prefer_not_to_answer | 462 | 225 | NA | NA |
| Lung cancer (2) | case | 39275 | 29166 | 41788 | 39275 |
| Lung cancer (2) | control | 406070 | 290449 | NA | NA |
| Lung cancer (2) | dont_know | 41965 | 27408 | NA | NA |
| Lung cancer (2) | prefer_not_to_answer | 462 | 225 | NA | NA |
| Bowel cancer (2) | case | 25100 | 18454 | 26931 | 25100 |
| Bowel cancer (2) | control | 420245 | 301161 | NA | NA |
| Bowel cancer (2) | dont_know | 41965 | 27408 | NA | NA |
| Bowel cancer (2) | prefer_not_to_answer | 462 | 225 | NA | NA |
| Prostate cancer (2) | case | 33191 | 23962 | 35721 | 33191 |
| Prostate cancer (2) | control | 412154 | 295653 | NA | NA |
| Prostate cancer (2) | dont_know | 41965 | 27408 | NA | NA |
| Prostate cancer (2) | prefer_not_to_answer | 462 | 225 | NA | NA |
## No id variables; using all as measure variables
## No id variables; using all as measure variables
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | category | count | count_eur | count_in_ukb_website_total | count_in_ukb_website_instance |
|---|---|---|---|---|---|
| Heart disease (1) | case | 6364 | 5306 | 164345 | 6364 |
| Heart disease (1) | control | 12352 | 10324 | NA | NA |
| Heart disease (1) | dont_know | 1161 | 940 | NA | NA |
| Heart disease (1) | prefer_not_to_answer | 8 | 8 | NA | NA |
| Stroke (1) | case | 2957 | 2446 | 78249 | 2957 |
| Stroke (1) | control | 15759 | 13184 | NA | NA |
| Stroke (1) | dont_know | 1161 | 940 | NA | NA |
| Stroke (1) | prefer_not_to_answer | 8 | 8 | NA | NA |
| High blood pressure (1) | case | 3963 | 3254 | 114044 | 3963 |
| High blood pressure (1) | control | 14753 | 12376 | NA | NA |
| High blood pressure (1) | dont_know | 1161 | 940 | NA | NA |
| High blood pressure (1) | prefer_not_to_answer | 8 | 8 | NA | NA |
| Diabetes (1) | case | 1830 | 1483 | 51152 | 1830 |
| Diabetes (1) | control | 16886 | 14147 | NA | NA |
| Diabetes (1) | dont_know | 1161 | 940 | NA | NA |
| Diabetes (1) | prefer_not_to_answer | 8 | 8 | NA | NA |
| Chronic bronchitis/emphysema (1) | case | 1985 | 1679 | 55688 | 1985 |
| Chronic bronchitis/emphysema (1) | control | 16731 | 13951 | NA | NA |
| Chronic bronchitis/emphysema (1) | dont_know | 1161 | 940 | NA | NA |
| Chronic bronchitis/emphysema (1) | prefer_not_to_answer | 8 | 8 | NA | NA |
| Alzheimer’s disease/dementia (1) | case | 1487 | 1245 | 26512 | 1487 |
| Alzheimer’s disease/dementia (1) | control | 17229 | 14385 | NA | NA |
| Alzheimer’s disease/dementia (1) | dont_know | 1161 | 940 | NA | NA |
| Alzheimer’s disease/dementia (1) | prefer_not_to_answer | 8 | 8 | NA | NA |
| Parkinson’s disease (2) | case | 488 | 400 | 11471 | 488 |
| Parkinson’s disease (2) | control | 17999 | 15064 | NA | NA |
| Parkinson’s disease (2) | dont_know | 1390 | 1108 | NA | NA |
| Parkinson’s disease (2) | prefer_not_to_answer | 8 | 6 | NA | NA |
| Severe depression (2) | case | 664 | 552 | 17459 | 664 |
| Severe depression (2) | control | 17823 | 14912 | NA | NA |
| Severe depression (2) | dont_know | 1390 | 1108 | NA | NA |
| Severe depression (2) | prefer_not_to_answer | 8 | 6 | NA | NA |
| Lung cancer (2) | case | 1608 | 1384 | 41788 | 1608 |
| Lung cancer (2) | control | 16879 | 14080 | NA | NA |
| Lung cancer (2) | dont_know | 1390 | 1108 | NA | NA |
| Lung cancer (2) | prefer_not_to_answer | 8 | 6 | NA | NA |
| Bowel cancer (2) | case | 1129 | 936 | 26931 | 1129 |
| Bowel cancer (2) | control | 17358 | 14528 | NA | NA |
| Bowel cancer (2) | dont_know | 1390 | 1108 | NA | NA |
| Bowel cancer (2) | prefer_not_to_answer | 8 | 6 | NA | NA |
| Prostate cancer (2) | case | 1511 | 1241 | 35721 | 1511 |
| Prostate cancer (2) | control | 16976 | 14223 | NA | NA |
| Prostate cancer (2) | dont_know | 1390 | 1108 | NA | NA |
| Prostate cancer (2) | prefer_not_to_answer | 8 | 6 | NA | NA |
## No id variables; using all as measure variables
## No id variables; using all as measure variables
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | category | count | count_eur | count_in_ukb_website_total | count_in_ukb_website_instance |
|---|---|---|---|---|---|
| Heart disease (1) | case | 11257 | 8891 | 164345 | 15141 |
| Heart disease (1) | control | 21629 | 16941 | NA | NA |
| Heart disease (1) | dont_know | 2244 | 1688 | NA | NA |
| Heart disease (1) | prefer_not_to_answer | 27 | 18 | NA | NA |
| Stroke (1) | case | 5114 | 3981 | 78249 | 6857 |
| Stroke (1) | control | 27772 | 21851 | NA | NA |
| Stroke (1) | dont_know | 2244 | 1688 | NA | NA |
| Stroke (1) | prefer_not_to_answer | 27 | 18 | NA | NA |
| High blood pressure (1) | case | 6994 | 5397 | 114044 | 9331 |
| High blood pressure (1) | control | 25892 | 20435 | NA | NA |
| High blood pressure (1) | dont_know | 2244 | 1688 | NA | NA |
| High blood pressure (1) | prefer_not_to_answer | 27 | 18 | NA | NA |
| Diabetes (1) | case | 3301 | 2510 | 51152 | 4385 |
| Diabetes (1) | control | 29585 | 23322 | NA | NA |
| Diabetes (1) | dont_know | 2244 | 1688 | NA | NA |
| Diabetes (1) | prefer_not_to_answer | 27 | 18 | NA | NA |
| Chronic bronchitis/emphysema (1) | case | 3588 | 2879 | 55688 | 4718 |
| Chronic bronchitis/emphysema (1) | control | 29298 | 22953 | NA | NA |
| Chronic bronchitis/emphysema (1) | dont_know | 2244 | 1688 | NA | NA |
| Chronic bronchitis/emphysema (1) | prefer_not_to_answer | 27 | 18 | NA | NA |
| Alzheimer’s disease/dementia (1) | case | 3139 | 2484 | 26512 | 4260 |
| Alzheimer’s disease/dementia (1) | control | 29747 | 23348 | NA | NA |
| Alzheimer’s disease/dementia (1) | dont_know | 2244 | 1688 | NA | NA |
| Alzheimer’s disease/dementia (1) | prefer_not_to_answer | 27 | 18 | NA | NA |
| Parkinson’s disease (2) | case | 277 | 227 | 11471 | 277 |
| Parkinson’s disease (2) | control | 33989 | 26635 | NA | NA |
| Parkinson’s disease (2) | dont_know | 885 | 671 | NA | NA |
| Parkinson’s disease (2) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Severe depression (2) | case | 435 | 346 | 17459 | 435 |
| Severe depression (2) | control | 33831 | 26516 | NA | NA |
| Severe depression (2) | dont_know | 885 | 671 | NA | NA |
| Severe depression (2) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Lung cancer (2) | case | 905 | 759 | 41788 | 905 |
| Lung cancer (2) | control | 33361 | 26103 | NA | NA |
| Lung cancer (2) | dont_know | 885 | 671 | NA | NA |
| Lung cancer (2) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Bowel cancer (2) | case | 702 | 568 | 26931 | 702 |
| Bowel cancer (2) | control | 33564 | 26294 | NA | NA |
| Bowel cancer (2) | dont_know | 885 | 671 | NA | NA |
| Bowel cancer (2) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Prostate cancer (2) | case | 1019 | 822 | 35721 | 1019 |
| Prostate cancer (2) | control | 33247 | 26040 | NA | NA |
| Prostate cancer (2) | dont_know | 885 | 671 | NA | NA |
| Prostate cancer (2) | prefer_not_to_answer | 6 | 5 | NA | NA |
## No id variables; using all as measure variables
## No id variables; using all as measure variables
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | category | count | count_eur | count_in_ukb_website_total | count_in_ukb_website_instance |
|---|---|---|---|---|---|
| Heart disease (1) | case | 91434 | 65800 | 105893 | 91434 |
| Heart disease (1) | control | 380471 | 271217 | NA | NA |
| Heart disease (1) | dont_know | 20505 | 13503 | NA | NA |
| Heart disease (1) | prefer_not_to_answer | 500 | 226 | NA | NA |
| Stroke (1) | case | 65343 | 47390 | 75680 | 65343 |
| Stroke (1) | control | 406562 | 289627 | NA | NA |
| Stroke (1) | dont_know | 20505 | 13503 | NA | NA |
| Stroke (1) | prefer_not_to_answer | 500 | 226 | NA | NA |
| High blood pressure (1) | case | 144658 | 100513 | 163964 | 144657 |
| High blood pressure (1) | control | 327247 | 236504 | NA | NA |
| High blood pressure (1) | dont_know | 20505 | 13503 | NA | NA |
| High blood pressure (1) | prefer_not_to_answer | 500 | 226 | NA | NA |
| Diabetes (1) | case | 47047 | 30698 | 53669 | 47047 |
| Diabetes (1) | control | 424858 | 306319 | NA | NA |
| Diabetes (1) | dont_know | 20505 | 13503 | NA | NA |
| Diabetes (1) | prefer_not_to_answer | 500 | 226 | NA | NA |
| Chronic bronchitis/emphysema (1) | case | 26724 | 19524 | 30807 | 26724 |
| Chronic bronchitis/emphysema (1) | control | 445181 | 317493 | NA | NA |
| Chronic bronchitis/emphysema (1) | dont_know | 20505 | 13503 | NA | NA |
| Chronic bronchitis/emphysema (1) | prefer_not_to_answer | 500 | 226 | NA | NA |
| Alzheimer’s disease/dementia (1) | case | 38362 | 28478 | 49895 | 38362 |
| Alzheimer’s disease/dementia (1) | control | 433543 | 308539 | NA | NA |
| Alzheimer’s disease/dementia (1) | dont_know | 20505 | 13503 | NA | NA |
| Alzheimer’s disease/dementia (1) | prefer_not_to_answer | 500 | 226 | NA | NA |
| Parkinson’s disease (2) | case | 7446 | 5373 | 7989 | 7446 |
| Parkinson’s disease (2) | control | 459124 | 328577 | NA | NA |
| Parkinson’s disease (2) | dont_know | 25899 | 16584 | NA | NA |
| Parkinson’s disease (2) | prefer_not_to_answer | 441 | 212 | NA | NA |
| Severe depression (2) | case | 30289 | 21644 | 32337 | 30288 |
| Severe depression (2) | control | 436281 | 312306 | NA | NA |
| Severe depression (2) | dont_know | 25899 | 16584 | NA | NA |
| Severe depression (2) | prefer_not_to_answer | 441 | 212 | NA | NA |
| Lung cancer (2) | case | 18434 | 13573 | 19657 | 18434 |
| Lung cancer (2) | control | 448136 | 320377 | NA | NA |
| Lung cancer (2) | dont_know | 25899 | 16584 | NA | NA |
| Lung cancer (2) | prefer_not_to_answer | 441 | 212 | NA | NA |
| Bowel cancer (2) | case | 23236 | 17022 | 24859 | 23236 |
| Bowel cancer (2) | control | 443334 | 316928 | NA | NA |
| Bowel cancer (2) | dont_know | 25899 | 16584 | NA | NA |
| Bowel cancer (2) | prefer_not_to_answer | 441 | 212 | NA | NA |
| Breast cancer (2) | case | 36946 | 27356 | 39579 | 36946 |
| Breast cancer (2) | control | 429624 | 306594 | NA | NA |
| Breast cancer (2) | dont_know | 25899 | 16584 | NA | NA |
| Breast cancer (2) | prefer_not_to_answer | 441 | 212 | NA | NA |
## No id variables; using all as measure variables
## No id variables; using all as measure variables
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | category | count | count_eur | count_in_ukb_website_total | count_in_ukb_website_instance |
|---|---|---|---|---|---|
| Heart disease (1) | case | 4027 | 3389 | 105893 | 4027 |
| Heart disease (1) | control | 15362 | 12805 | NA | NA |
| Heart disease (1) | dont_know | 645 | 501 | NA | NA |
| Heart disease (1) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Stroke (1) | case | 3028 | 2559 | 75680 | 3028 |
| Stroke (1) | control | 16361 | 13635 | NA | NA |
| Stroke (1) | dont_know | 645 | 501 | NA | NA |
| Stroke (1) | prefer_not_to_answer | 6 | 5 | NA | NA |
| High blood pressure (1) | case | 5604 | 4610 | 163964 | 5604 |
| High blood pressure (1) | control | 13785 | 11584 | NA | NA |
| High blood pressure (1) | dont_know | 645 | 501 | NA | NA |
| High blood pressure (1) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Diabetes (1) | case | 1909 | 1496 | 53669 | 1909 |
| Diabetes (1) | control | 17480 | 14698 | NA | NA |
| Diabetes (1) | dont_know | 645 | 501 | NA | NA |
| Diabetes (1) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Chronic bronchitis/emphysema (1) | case | 1061 | 900 | 30807 | 1061 |
| Chronic bronchitis/emphysema (1) | control | 18328 | 15294 | NA | NA |
| Chronic bronchitis/emphysema (1) | dont_know | 645 | 501 | NA | NA |
| Chronic bronchitis/emphysema (1) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Alzheimer’s disease/dementia (1) | case | 2915 | 2506 | 49895 | 2915 |
| Alzheimer’s disease/dementia (1) | control | 16474 | 13688 | NA | NA |
| Alzheimer’s disease/dementia (1) | dont_know | 645 | 501 | NA | NA |
| Alzheimer’s disease/dementia (1) | prefer_not_to_answer | 6 | 5 | NA | NA |
| Parkinson’s disease (2) | case | 346 | 291 | 7989 | 346 |
| Parkinson’s disease (2) | control | 18878 | 15757 | NA | NA |
| Parkinson’s disease (2) | dont_know | 812 | 648 | NA | NA |
| Parkinson’s disease (2) | prefer_not_to_answer | 4 | 4 | NA | NA |
| Severe depression (2) | case | 1240 | 1044 | 32337 | 1240 |
| Severe depression (2) | control | 17984 | 15004 | NA | NA |
| Severe depression (2) | dont_know | 812 | 648 | NA | NA |
| Severe depression (2) | prefer_not_to_answer | 4 | 4 | NA | NA |
| Lung cancer (2) | case | 722 | 591 | 19657 | 722 |
| Lung cancer (2) | control | 18502 | 15457 | NA | NA |
| Lung cancer (2) | dont_know | 812 | 648 | NA | NA |
| Lung cancer (2) | prefer_not_to_answer | 4 | 4 | NA | NA |
| Bowel cancer (2) | case | 1024 | 844 | 24859 | 1024 |
| Bowel cancer (2) | control | 18200 | 15204 | NA | NA |
| Bowel cancer (2) | dont_know | 812 | 648 | NA | NA |
| Bowel cancer (2) | prefer_not_to_answer | 4 | 4 | NA | NA |
| Breast cancer (2) | case | 1634 | 1351 | 39579 | 1634 |
| Breast cancer (2) | control | 17590 | 14697 | NA | NA |
| Breast cancer (2) | dont_know | 812 | 648 | NA | NA |
| Breast cancer (2) | prefer_not_to_answer | 4 | 4 | NA | NA |
## No id variables; using all as measure variables
## No id variables; using all as measure variables
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | category | count | count_eur | count_in_ukb_website_total | count_in_ukb_website_instance |
|---|---|---|---|---|---|
| Heart disease (1) | case | 7329 | 5732 | 105893 | 9752 |
| Heart disease (1) | control | 26803 | 21024 | NA | NA |
| Heart disease (1) | dont_know | 1186 | 898 | NA | NA |
| Heart disease (1) | prefer_not_to_answer | 13 | 8 | NA | NA |
| Stroke (1) | case | 5038 | 3938 | 75680 | 6856 |
| Stroke (1) | control | 29094 | 22818 | NA | NA |
| Stroke (1) | dont_know | 1186 | 898 | NA | NA |
| Stroke (1) | prefer_not_to_answer | 13 | 8 | NA | NA |
| High blood pressure (1) | case | 9787 | 7486 | 163964 | 12903 |
| High blood pressure (1) | control | 24345 | 19270 | NA | NA |
| High blood pressure (1) | dont_know | 1186 | 898 | NA | NA |
| High blood pressure (1) | prefer_not_to_answer | 13 | 8 | NA | NA |
| Diabetes (1) | case | 3347 | 2474 | 53669 | 4418 |
| Diabetes (1) | control | 30785 | 24282 | NA | NA |
| Diabetes (1) | dont_know | 1186 | 898 | NA | NA |
| Diabetes (1) | prefer_not_to_answer | 13 | 8 | NA | NA |
| Chronic bronchitis/emphysema (1) | case | 2138 | 1712 | 30807 | 2842 |
| Chronic bronchitis/emphysema (1) | control | 31994 | 25044 | NA | NA |
| Chronic bronchitis/emphysema (1) | dont_know | 1186 | 898 | NA | NA |
| Chronic bronchitis/emphysema (1) | prefer_not_to_answer | 13 | 8 | NA | NA |
| Alzheimer’s disease/dementia (1) | case | 5816 | 4637 | 49895 | 8068 |
| Alzheimer’s disease/dementia (1) | control | 28316 | 22119 | NA | NA |
| Alzheimer’s disease/dementia (1) | dont_know | 1186 | 898 | NA | NA |
| Alzheimer’s disease/dementia (1) | prefer_not_to_answer | 13 | 8 | NA | NA |
| Parkinson’s disease (2) | case | 197 | 161 | 7989 | 197 |
| Parkinson’s disease (2) | control | 34622 | 27124 | NA | NA |
| Parkinson’s disease (2) | dont_know | 504 | 370 | NA | NA |
| Parkinson’s disease (2) | prefer_not_to_answer | 8 | 7 | NA | NA |
| Severe depression (2) | case | 809 | 661 | 32337 | 809 |
| Severe depression (2) | control | 34010 | 26624 | NA | NA |
| Severe depression (2) | dont_know | 504 | 370 | NA | NA |
| Severe depression (2) | prefer_not_to_answer | 8 | 7 | NA | NA |
| Lung cancer (2) | case | 501 | 417 | 19657 | 501 |
| Lung cancer (2) | control | 34318 | 26868 | NA | NA |
| Lung cancer (2) | dont_know | 504 | 370 | NA | NA |
| Lung cancer (2) | prefer_not_to_answer | 8 | 7 | NA | NA |
| Bowel cancer (2) | case | 599 | 476 | 24859 | 599 |
| Bowel cancer (2) | control | 34220 | 26809 | NA | NA |
| Bowel cancer (2) | dont_know | 504 | 370 | NA | NA |
| Bowel cancer (2) | prefer_not_to_answer | 8 | 7 | NA | NA |
| Breast cancer (2) | case | 999 | 810 | 39579 | 999 |
| Breast cancer (2) | control | 33820 | 26475 | NA | NA |
| Breast cancer (2) | dont_know | 504 | 370 | NA | NA |
| Breast cancer (2) | prefer_not_to_answer | 8 | 7 | NA | NA |
Note: Everything except for instance 2 group 1 matches (almost perfectly) to the number reported on UK Biobank website. And indeed, the number of non missing individuals for instance 2 do not match the number of UK Biobank website. But the weird thing is that the group 2 is not affected.
Lastly, we need to finalize the phenotype query. To do so, we need to combine the results from mulitple instances for each individual.
Here are some rules for combining multiple instances of a phenotype.
Here we want to apply these rules to handle phenotype code collected from the above scripting (in df_refine
) where phenotype codes are:
So, the rules can be translated to:
combine_rule = function(inst_df) {
inst_df[is.na(inst_df)] = -100
o = rep(-2, nrow(inst_df))
has_1 = rowSums(inst_df == 1) > 0
has_0_but_not_1 = rowSums(inst_df == 0) > 0 & !has_1
o[has_0_but_not_1] = 0
o[has_1] = 1
return(o)
}
df_combine = list()
for(i in names(df_refine)) {
df_combine[[i]] = list()
indivs = c()
for(nn in names(df_refine[[i]])) {
indivs = c(indivs, df_instance[[i]][[nn]]$eid)
}
eid = unique(indivs)
df_combine[[i]] = list()
df_combine[[i]][['eid']] = eid
for(pheno in code[[i]] %>% filter(code > 0) %>% pull(choice_w_grp)) {
tmp_ = data.frame(eid = eid)
for(nn in names(df_refine[[i]])) {
tmp_ = left_join(
tmp_,
data.frame(
eid = df_instance[[i]][[nn]]$eid,
pheno = df_refine[[i]][[nn]][, pheno]
),
by = 'eid',
suffix = c('', paste0('_', nn))
)
combined_col = combine_rule(tmp_)
df_combine[[i]][[pheno]] = combined_col
}
}
df_combine[[i]] = do.call(cbind, df_combine[[i]])
df_combine[[i]] = as.data.frame(df_combine[[i]])
}
Summarize what we have.
for(i in names(df_combine)) {
tmp_ = df_combine[[i]]
tmp_ = tmp_ %>% reshape2::melt(id.vars = 'eid')
tmp_ = tmp_ %>% group_by(variable, value) %>% summarise(num_obs = n()) %>% ungroup() %>% reshape2::dcast(variable ~ value, value.var = 'num_obs') %>% mutate(total = `-2` + `0` + `1`) %>% left_join(df_ukb[[i]] %>% select(-type), by = c('variable' = 'choice_w_grp'))
cat(tmp_ %>% pander(caption = paste0('Summary of cleaned up data: ', i, ' illness')))
}
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | -2 | 0 | 1 | total | count_in_ukb_website_total |
|---|---|---|---|---|---|
| Heart disease (1) | 33934 | 309329 | 144763 | 488026 | 164345 |
| Stroke (1) | 33934 | 384446 | 69646 | 488026 | 78249 |
| High blood pressure (1) | 33934 | 351370 | 102722 | 488026 | 114044 |
| Diabetes (1) | 33934 | 408702 | 45390 | 488026 | 51152 |
| Chronic bronchitis/emphysema (1) | 33934 | 404057 | 50035 | 488026 | 55688 |
| Alzheimer’s disease/dementia (1) | 33934 | 431396 | 22696 | 488026 | 26512 |
| Parkinson’s disease (2) | 40385 | 436812 | 10829 | 488026 | 11471 |
| Severe depression (2) | 40385 | 430948 | 16693 | 488026 | 17459 |
| Lung cancer (2) | 40385 | 407987 | 39654 | 488026 | 41788 |
| Bowel cancer (2) | 40385 | 422215 | 25426 | 488026 | 26931 |
| Prostate cancer (2) | 40385 | 413845 | 33796 | 488026 | 35721 |
## Warning: Column `variable`/`choice_w_grp` joining factor and character vector, coercing into
## character vector
| variable | -2 | 0 | 1 | total | count_in_ukb_website_total |
|---|---|---|---|---|---|
| Heart disease (1) | 20085 | 378535 | 94360 | 492980 | 105893 |
| Stroke (1) | 20085 | 405360 | 67535 | 492980 | 75680 |
| High blood pressure (1) | 20085 | 325136 | 147759 | 492980 | 163964 |
| Diabetes (1) | 20085 | 424893 | 48002 | 492980 | 53669 |
| Chronic bronchitis/emphysema (1) | 20085 | 445084 | 27811 | 492980 | 30807 |
| Alzheimer’s disease/dementia (1) | 20085 | 430176 | 42719 | 492980 | 49895 |
| Parkinson’s disease (2) | 24996 | 460451 | 7533 | 492980 | 7989 |
| Severe depression (2) | 24996 | 437033 | 30951 | 492980 | 32337 |
| Lung cancer (2) | 24996 | 449261 | 18723 | 492980 | 19657 |
| Bowel cancer (2) | 24996 | 444407 | 23577 | 492980 | 24859 |
| Breast cancer (2) | 24996 | 430728 | 37256 | 492980 | 39579 |
They don’t match perfectly. I suspect that the UK Biobank Data-Field page has double counted individuals. Or in other word, it is counting the occurrence of label regardless if the individual is duplicated or not.
Summarize Eurpoeans only.
for(i in names(df_combine)) {
tmp_ = df_combine[[i]] %>% left_join(df_pheno %>% select(eid, meaning), by = 'eid') %>% filter(!is.na(meaning) & meaning == 'British') %>% select(-meaning)
tmp_ = tmp_ %>% reshape2::melt(id.vars = 'eid')
tmp_ = tmp_ %>% group_by(variable, value) %>% summarise(num_obs = n()) %>% ungroup() %>% reshape2::dcast(variable ~ value, value.var = 'num_obs') %>% mutate(total = `-2` + `0` + `1`)
cat(tmp_ %>% pander(caption = paste0('Summary of cleaned up data: ', i, ' illness - Limit to Europeans')))
}
| variable | -2 | 0 | 1 | total |
|---|---|---|---|---|
| Heart disease (1) | 22241 | 219930 | 105269 | 347440 |
| Stroke (1) | 22241 | 275334 | 49865 | 347440 |
| High blood pressure (1) | 22241 | 252951 | 72248 | 347440 |
| Diabetes (1) | 22241 | 294781 | 30418 | 347440 |
| Chronic bronchitis/emphysema (1) | 22241 | 287959 | 37240 | 347440 |
| Alzheimer’s disease/dementia (1) | 22241 | 308434 | 16765 | 347440 |
| Parkinson’s disease (2) | 26067 | 313304 | 8069 | 347440 |
| Severe depression (2) | 26067 | 309231 | 12142 | 347440 |
| Lung cancer (2) | 26067 | 291881 | 29492 | 347440 |
| Bowel cancer (2) | 26067 | 302650 | 18723 | 347440 |
| Prostate cancer (2) | 26067 | 296934 | 24439 | 347440 |
| variable | -2 | 0 | 1 | total |
|---|---|---|---|---|
| Heart disease (1) | 13013 | 269677 | 68098 | 350788 |
| Stroke (1) | 13013 | 288673 | 49102 | 350788 |
| High blood pressure (1) | 13013 | 234837 | 102938 | 350788 |
| Diabetes (1) | 13013 | 306392 | 31383 | 350788 |
| Chronic bronchitis/emphysema (1) | 13013 | 317373 | 20402 | 350788 |
| Alzheimer’s disease/dementia (1) | 13013 | 305769 | 32006 | 350788 |
| Parkinson’s disease (2) | 15785 | 329565 | 5438 | 350788 |
| Severe depression (2) | 15785 | 312821 | 22182 | 350788 |
| Lung cancer (2) | 15785 | 321189 | 13814 | 350788 |
| Bowel cancer (2) | 15785 | 317721 | 17282 | 350788 |
| Breast cancer (2) | 15785 | 307398 | 27605 | 350788 |
df_eur = list()
for(i in names(df_combine)) {
df_eur[[i]] = df_combine[[i]] %>% left_join(df_pheno %>% select(eid, meaning), by = 'eid') %>% filter(!is.na(meaning) & meaning == 'British') %>% select(-meaning)
}
saveRDS(df_eur, '../analysis_output/parent_illness_2nd_european_phenotypes_clean_up.rds')
for(i in names(df_combine)) {
tmp_ = df_combine[[i]] %>% left_join(df_pheno %>% select(eid, meaning), by = 'eid') %>% filter(!is.na(meaning) & meaning == 'British') %>% select(-meaning)
gz1 = gzfile(paste0('../analysis_output/parent_illness_2nd_european_phenotypes_clean_up.', i, '.csv.gz'), "w")
write.csv(tmp_, gz1)
close(gz1)
}


The cII privacy policy is as thus: I'm not going to sell your information. Your account information is stored in an encrypted database (bar your username).
iab collects the following information that can be tied back to your cII (and thus Discord) account:
The following information is stored in your cII account entry:


Referees for Valencia and Barca games appointed
by BeSoccerThe German referee Felix Zwayer will take charge of the match on 27th November against Valencia v Chelsea in matchday five of the Champions League. He will do the Group H game while Clement Turpin of France will officiate Barca v Dortmund in Group F.
UEFA have confirmed that Carlos del Cerro Grande of Spain will take charge of Liverpool v Napoli in Group E while Jesus Gil Manzano is doing Leipzig v Benfica in Group G.
The German Felix Zwayer will be accompanied at the Mestalla by Sascha Stegemannn as the VAR, Harm Osmers as fourth official and Thorsten Schiffner and Marco Achmuller as assistant referees.
Featured links
- The latest football transfers news and rumours
- Neymar or Mbappé? Zidane choose
- Kante explains why he turned down PSG
- What Cristiano said about Messi to his Man Utd teammates
At the Camp Nou, the French refereeing team will be led by Clement Turpin while Francois Letexier will be the VAR. Karim Abed is the fourth official and Nicolas Danos and Cyril Gringore the linesmen.
In the Liverpool v Napoli match, Del Cerro Grande will be at Anfield and will have Jose Maria Sanchez Martinez to help him as VAR, Jose Luis Munuera Montero is the fourth official while Juan Carlos Yuste and Roberto Alonso are the assistant referees.
Finally, Gil Manzano will take charge of Leipzig v Benfica. Juan Martinez Munuera is the man in the VAR van, Diego Barbero and Angel Nevado are the assistant refs with Xavier Estrada Fernandez as fourth official.


Why we need to know prototype?
JavaScript is dynamic proramming language, it does now provide class like Java or Python. The class keyword is introduced in ES6, but is syntactical sugar, JavaScript remains prototype-based.
Prototype is a must known topic in JavaScript and it is the foundation of JavaScript class especially when we talking about the inheritance. Prototype may not appear often in the work but it is everywhere in the package, open sourced library and frameworks.
__ proto__ vs prototype
Each class has prototype and each instance has __ proto__,the prototype of class is equal to __ proto__ of instance that create from same class.
Example of inheritance
We create the people class and the student class that inherit from people class.
class People {
constructor(name){
this.name = name
}
}
class Student extends People {
constructor(name,major){
super(name)
this.major = major
}
study(){
console.log(`${this.name} is studing ${this.major}`)
}
}
Now let us find what the prototype of Student class
console.log(Student.__proto__)
/*
People {constructor: ƒ, study: ƒ}
constructor: class Student
study: ƒ study()
__proto__: Object
*/
And what the prototype of Student class
let john = new Student("John", "Computer Science")
console.log(john.prototype)
/*
People {constructor: ƒ, study: ƒ}
constructor: class Student
study: ƒ study()
__proto__: Object
*/
let compare the Student.prototype and john.__ proto__
console.log(Student.prototype===john.__proto__)//true
Yes they are equal, so the prototype of a class is equal to the __ proto__ from instance that created from same class.
Also, the prototype of class or __ proto__ of instance is an object from their parent class. This means if you want to find prototype of their parent class, you can try three different ways.
console.log(People.prototype)
console.log(Student.prototype.__proto__)
console.log(john.__proto__.__proto__)
If you print out the result from above, it is like below
{constructor: ƒ}
constructor: class People
__proto__: Object
This means the final prototype of the class will point to the Object class. The Object class is like a world builder. It is the top and final class. This class give us the whole world of the javascript. The prorotype from final class is null as it does not have parent class.
Prototype Chain
Now we should know what is prototpye chain. Each object has a private property which holds a link to another object called its prototype. That prototype object has a prototype of its own, and so on until an object is reached with null as its prototype. Those prototypes that help connect object to other object is a chain of prototype, we called prototype chain.


EBD - Easton Bible DIctionary
Elisabeth
ELISABETH
"ELISABETH" God her oath, the mother of John the Baptist (
Luke 1:5
).
She was a descendant of Aaron. She and her husband Zacharias (q.v.)“were both righteous before God” (
Luke 1:5
, 13). Mary’s visit to Elisabeth is described in 1:39-63.
"ELISABETH" God her oath, the mother of John the Baptist (Luke 1:5).
She was a descendant of Aaron. She and her husband Zacharias (q.v.)“were both righteous before God” (Luke 1:5, 13). Mary’s visit to Elisabeth is described in 1:39-63.


Book Service
Book Service
Add a new book
Book list
{
id=#{book.id},
name=#{book.name},
author=#{book.author}
}


public interface JarExtractor
extends org.revapi.configuration.Configurable
This is mainly meant for extracting the files from for example WAR files, etc, where the classes are nested within a more complex directory structure.
This interface is a normal Revapi extension that further extends revapi-java
. As such it is also
configurable. The configuration can be placed under revapi.java.extract
root using the extension id of the
implementation. E.g. in XML:
<revapi.java>
<extract>
<my.extractor.extension.id>
... config is here ...
</my.extractor.extension.id>
</extract>
</revapi.java>
| Modifier and Type | Method and Description |
|---|---|
Optional<InputStream> |
extract(org.revapi.Archive archive)
Tries to transform the data of the archive such that it looks like a simple jar file to the analyzer.
|
Optional<InputStream> extract(org.revapi.Archive archive)
This method can theoretically base the transformation decisions on other metadata present on the provided archive instance, but that is considered dangerous because it limits the reusability of the transformer between different invocation types of Revapi (CLI vs Maven, etc, which may or may not use the same implementation of the archive).
If the transformation is not possible the corresponding archive is supplied to the analysis in full.
Note that the returned stream, if any, MUST be independent of the provided archiveData
. This
method need not close the archive
.
archive
- the archive to analyzeCopyright © 2014-2021 Lukas Krejci. All Rights Reserved.


Thebe demo
A static web page without Thebe
The same, active
Variation
Pre-computed cell output
References
Thebe documentation and examples
GitHub repository


Howmuchdoesyourbuildingweigh,Mr. Howmuchdoesyourbuildingweigh,Mr. Foster?
Directed by Norberto LopezAmado & CarlosCarcas


No longer maintained.
The usage of the plugin is deprecated and is not compatible with versions of Hudson/Jenkins after 1.355.
We strongly recommand to upgrade to xUnit plugin in order to incorporate latest Jenkins API and to provide exactly CppUnit plugin features.
Look at the xUnit Wiki page for more information.
Migrating your jobs
After upgrading to xUnit, you need to manually configure your job for using the xUnit plugin.
There is no automatic migration.
Procedure:
- Choose 'Publish testing tools results' in the publishers and choose 'CppUnit' item.
- Provide your pattern to your test reports.
Plugin Information |
|---|
No information for the plugin 'cppunit' is available. It may have been removed from distribution. |
This plugin makes it possible to import CppUnit reports from each build into Hudson so they are displayed with a trend graph and details about which tests that failed.
Compatibility with Hudson core
Version |
1.318 |
1.319 |
1.320 |
1.355+ |
|---|---|---|---|---|
1.10 |
|
|
|
|
1.9 |
|
|
|
|
1.8 |
|
|
|
|
1.7 |
|
|
|
|
1.6 |
|
|
|
|
1.5 |
|
|
|
|
1.4 |
|
|
|
|
1.3 |
|
|
|
|
1.2 |
|
|
|
|
1.1.1 |
|
|
|
|
1.1 |
|
|
|
|
1.0 |
|
|
|
|
Changelog
Version 1.10 (December 08, 2010)
* Updated to xUnit 1.13
* Restored the backward compatibility with the usage of a custom stylesheet (provided by configuration before xunit 0.5.2)
Version 1.9 (October 11, 2010)
* Updated to xUnit 1.9
Version 1.8
* Updated to xUnit 1.7
* Fixed JENKINS-7012 - new input XSD
Version 1.7 (July 12, 2010)
* Upgraded to xUnit 1.4
Version 1.6 (July 09, 2010)
* Added backward compatibility with CppUnit 1.4
Version 1.5 (July 08, 2010)
* Upgraded to xUnit 1.1
Version 1.4
- Fixed regression on backward compatibility introduced in 1.2
Version 1.3
- Upgraded to xUnit 0.6.1
Version 1.2
- Cppunit plugin extends xUnit plugin.
Cppunit is an option of xUnit tools list
Version 1.1.1
- Fixed regression for processing build on slaves
- Fixed (JENKINS-4371)
Version 1.1
- Ignore the empty result files
- Fixed (JENKINS-4297)
- Fixed (JENKINS-4305)
Version 1.0 (August 20, 2009)
- Removed the ability to use a custom style sheet.
You have to use the embedded style sheet and raise an issue if there are problems.
Version 0.5.1 (August 06, 2009)
- Fixed "CppUnit plugin crashes when used on slaves" (#4156)
Version 0.5 (July 31, 2009)
- Basedir of the fileset is now the SCM module root or the workspace with multiple module roots
- Added the ability to analyze multiple files with the same name from multiple directories
Version 0.4 (July 27, 2009)
- Enhanced the core cppunit XSL stylesheet for recording AUnit (Ada framework)
Version 0.3 (April 11, 2009)
- Migration to Hudson 1.299 with the new API hudson.AbortException(String message)
Version 0.2 (March 28, 2009)
- Fixed remote and matrix usage
Version 0.1 (March 14, 2009)
- Initial release
Attachments:
cppunit_dashboard.png (image/png)
cppunit_test_result_detail.png (image/png)
cppunit_conf.png (image/png)
cppunit_test_result_detail.png (image/png)
cppunit_dashboard.png (image/png)
cppunit_conf2.png (image/png)
cppunit_conf_1.0.png (image/png)
cppunit_conf_1.1.png (image/png)


Web Developer Examples and Resouces
Social Media Optimization (SMO)
Social media optimization (SMO) refers to the utilization of social media networks in order to grow a business's online presence and meet desired goals. This type of digital marketing strategy increases brand, product, and service awareness, helps build relationships with new and potential customers, increases traffic, and encourages sales (WebFX, Inc). According to research conducted by AdWeek, about 61% of consumers unfollow a brand because they deem the content no longer “relevant” and 20% will unfollow if a brand shares repetitive or boring content (Uifalean). This goes to show that there’s value in placing effort in understanding the relationship between content and the target audience. If you’re ready to optimize your social media profiles, here are a couple of ideas that will help improve your brand.
Keep It Personal
Keep your social media presence unique by giving it a touch of your personality. By using original ideas and creativity, your brand will stand out. Be innovative and come up with a voice that others can resonate with, this will make it easier to get followers. Try making your brand more personal by adding stories or anecdotes to your posts while keeping the tone natural, this will add value to the experience of the user (Blogger).
Tag The Right People
When publishing posts, tag individuals who you believe could increase user engagement. Don’t overdo this as it can become off-putting. Tagging can be done on platforms such as Twitter, Instagram, and Facebook, which will keep people engaged and talking about your brand. When you tag someone in a post, brand awareness is immediate (Blogger).
Quality Graphics
When it comes to first impressions, graphics are important because most people recognize the visuals before laying eyes on the content. According to HubSpot, whenever visual content is paired with written material, people usually retain a higher percent of the information (Uifalean). If you need help in creating quality graphics or editing photos, Canva is a great online tool to get you started. Instead of traditional text, try showing off your written content with infographics.
SMO is a valuable tool that’s useful to both individuals and businesses. By using these tips you will be on top of social media, user interaction will increase, and you will have a more reliable fan base. Your users will develop a strong following and will keep up to date with what you post, making it easier to reach your target audience and goals.


by Wes Basinger
Posted on April 6, 2016 at 9:00 PM
It has been a long time since I have taught logarithms, but it has always been an enjoyable topic for me. I find that students enjoy the freshness of a new topic towards the end of the year. Really, the best way for me to explain logarithms is to say they are the algebra of exponents.
In this first picture, you can see an example of rewriting a a logarithm as an exponent. You can see that the base is 8, the result is x and the exponent is 6.
In this case it would be fairly simple to solve for x, all you would do is raise 8 to the 6th power. That is actually quite a large number, 262,144 to be exact.
This illustrates an important feature of exponents, they are the fastest growing type equation there is.
This is an example of how exponents are used in real life.
This is the compound interest formula. P is equal to principle, R is equal to rate, N is equal to number of times compounded, and T is equal to time.
Compound interest is the 8th wonder of the world. - Albert Einstein
I certainly hope my students can continue to learn and grow in their knowledge of exponents. This will certainly be of use to them as they go into higher types of mathematics.


Let's see if paritial's text gets inserted here:
targeting using same selector multiple times:
the lower priority partial should appear after this sibling paragraph:


Miami's Adventures
Beautiful unknown adventures I've been on, Dec 3, 2018
1. Key Largo Kayaking:
Key Largo is a census-designated place in Monroe County, Florida, United States, located on the island of Key Largo in the upper Florida Keys. The population was 10,433 at the 2010 census. The name comes from the Spanish Cayo Largo, or "long key". It's only 40 minutes away from Miami and you can drive along U.S. 1 highway.
2. Okeechobee Music & Arts Festival:
The Okeechobee Music and Arts Festival was an annual four-day music and arts festival produced by Soundslinger, LLC. The festival was held at the 600-acre property, Sunshine Grove in Okeechobee, Florida.
3. Key West:
Another fun adventure i've been to thats close to miami is Key West. You can go for a weekend with friends! bring sun screen!
4. Key Biscayne:
Honeslty a nice beach to go to is Key Biscayne. It's much closer than traveling on those further afventures up north of Miami, but it's still a very nice location to visit. There's a nice restaurant located in Key Biscayne, if you like seafood, it's called Rusty Pelican. Best views for a meal.
5. Miami Design District:
The Design District is known for its sleek modern architecture, upscale interior design stores and art galleries. Luxury fashion and jewelry boutiques, cafes and celebrity-chef restaurants draw a well-heeled crowd. Public art dotting the area includes the Fly’s Eye Dome, a geodesic dome designed by inventor Buckminster Fuller. Opening in December, 2017, The Institute of Contemporary Art will show cutting-edge work.


labelsKMB:
labelsKMG2:
labelsKMG2 together with labelsKMB (legacy, violates standards):
labelsKMG2 with yValueFormatter:
labelsKMB with very small numbers:
labelsKMG2 with very small numbers:
labelsKMG2 together with labelsKMB (legacy, violates standards) with very small numbers:
The curves are exponentials. Zooming in should reveal each of the 'K', 'M', 'B', etc. labels.


climate infectious change disease diseases different exposure Anhui (%) humidity non-exposure variables incidence absolute relative sensitive Relative i.e., sensitivity temperature data {border-style transmission px;} #ffffff;} study Sensitivity risk Climate counties fever, impacts Figure group typhoid HFM effective influenza China difference dysentery fever hypothesis linear precipitation statistical using diseases, hand, hemorrhagic hepatitis impact influence monthly mouth Health Province, Sci. analysis changes cities historical malaria, mean rural screening time weather HFM, Huang Zhang areas dysentery, factors foot groups. month px; {font-family Wang average change. climatic correlation diseases. effect example, font-size groups human including meningitis, model regression significantly temperature, test value variables, Absolute Chen Counties Disease Exposure Moreover, Table affected based cases development disease’s double; humidity. identify indicator influenza, malaria meteorological method relationship results sensitivities spatial standard temporal variability variables. Environ. However, Infect. Non-exposure Province Public Res. Sun Yang Zhou area border-color border-width caused components corresponding defined deviation distribution effects health mainly mentioned null number population potential present research schistosomiasis shows solid; specific statistic statuses urban variable {font-style {font-weight (or A.J. Epidemiol. Monthly Province. Section Shaman USA areas. autocorrelation bold case change-sensitive collab: concerning contrast, county courier; data. differences em; emerging epidemic especially evidence exposed group, group. groups, host humidity, increase indicator. larger means meningitis method. methods models observed obtained previous province pt;} schistosomiasis. seasonality series significant used


How to Play:
- Arrow Keys for movement.
- Space Bar to grab/drop a NPC.
- "A" Key to extinguish Fire
Tips:
-You can only carry 1 NPC at a time and can only drop at sidewalk level.


Toggle navigation
Image Garage
About
Contact
Sign in
Login
Image Garage
open-source images.


--- title: Animation ---
{{animate.message}}
...
Animate
I've been animated with Velocity and Angular!
Animate I've been animated with Velocity and Angular!
Authorization for Arnold, Clifford (HUMIRA 40 MG/0.8 ML) was approved.


this.container = d } />;
}
}
```
## jQuery, D3...
-- full-image
## Finally It's gonna be ok.
![](assets/finally-gonna-be-ok.gif)
-- problem
# Managing state
--
http://redux.js.org/
https://mobx.js.org/
-- problem
# Testing components
--
https://facebook.github.io/jest/
## Enzyme
http://airbnb.io/enzyme/
-- code small
# Snapshot testing
```javascript
import React from "react";
import { render } from "enzyme";
import Icon from "components/icon";
describe("
", () => {
it("renders", () => {
const wrapper = render(
);
expect(wrapper).toMatchSnapshot();
});
});
```
-- trabe-green
# Parting notes
--
# Use but not abuse
* Prefer stateless components
* Fully embrace Redux to make some of this technics irrelevant
* Beware of experimetal APIs
* Stick to the React way
--
# Update your React
## React 15.5
### Deprecation madness
## React 16 (Fiber)
### Bye bye wrappers.
-- trabe
# Questions?
-- full-image
## See ya!
![](assets/bye.gif)


Post Title
The homer knotted the series at two games apiece. Given both the magnitude of the moment and the timing, Jeter’s new title was obvious: Reggie might be Mr. October, but Jeter would be Mr. November.
Date
The homer knotted the series at two games apiece. Given both the magnitude of the moment and the timing, Jeter’s new title was obvious: Reggie might be Mr. October, but Jeter would be Mr. November.
Date
The homer knotted the series at two games apiece. Given both the magnitude of the moment and the timing, Jeter’s new title was obvious: Reggie might be Mr. October, but Jeter would be Mr. November.
Date
The homer knotted the series at two games apiece. Given both the magnitude of the moment and the timing, Jeter’s new title was obvious: Reggie might be Mr. October, but Jeter would be Mr. November.
Date
The homer knotted the series at two games apiece. Given both the magnitude of the moment and the timing, Jeter’s new title was obvious: Reggie might be Mr. October, but Jeter would be Mr. November.
Date


{% extends "page.html" %}
{% block title %}{{ title }}{% endblock %}
{% block subcontent %}
We are still confirming sponsors for 2015. If you are interested in learning more about becoming a sponsor, please contact our Sponsorship Team at summit-sponsorship at mit dot edu. Thanks!
{% for sponsorship in sponsorship_list %}
{{ sponsorship.name }}
{% for sponsor in sponsorship.sponsor %}
{% if sponsorship.priority==0 %}


Browser unsupported
Copay uses webRTC for peer-to-peer communications,
but your browser does not support it.
Please use
a current version of Google Chrome, Mozilla Firefox, or Opera.
For more information
on supported browsers please check http://www.webrtc.org/