text:
- [Unity] Fix creating AppsFlyer plugin.

## 2.10.2 - 2021-08-17
- [Unity] Add option to activate AppsFlyer.

## 2.10.1 - 2021-08-17
- [Android/iOS] Update AppsFlyer and Ads Libraries.
- [Unity] Add AppsFlyer.

## 2.10.0 - 2021-08-05
- [Android] Update method to get SHA1.
- [Android/iOS] Update ads libraries and Facebook SDK.

## 2.9.2 - 2021-07-05
- [Unity] Fix hanging when start ad.

## 2.9.1 - 2021-07-02
- [Android] Fix crash when load Unity Ads.
- [Unity] Fix long test connection when show ads.

## 2.9.0 - 2021-06-24
- [iOS] Add App Transparency Tracking.
- [Android/iOS] Update ads libraries.

## 2.8.1 - 2021-06-07
- [Unity] Fix build iOS with dynamic framework.

## 2.8.0 - 2021-06-04
- [Unity] Fix build iOS.
- [C++/Unity] Add auto-reload ad mechanism.

## 2.7.4 - 2021-05-21
- [Android] Fix crash with kotlin serialization library.
- [Android/iOS] Update ad and firebase libraries.

## 2.7.3 - 2021-05-07
- [Unity] Add option to fix package options related issues when building for Android.

## 2.7.2 - 2021-05-06
- [Android/iOS] Update ads libraries.

## 2.7.1 - 2021-04-14
- [Android] Update ads libraries.
- [Android] Separate AdMob test suite library.
- [iOS] Update Google Mobile Ads SDK from 7.x to 8.x.
- [Unity] Fix wrong parsing in GetDensity() method.
- [Unity] Fix info.plist not updated when build to iOS.
- [C++] Add addTestDevice method to IAdsManager.
- [Native] Not allow to display another full screen ad while displaying a full screen ad.

## 2.7.0 - 2021-04-10
- [Android] Upload libraries to maven central.
- [Unity] Add addTestDevice method to IAdsManager.
- [Unity] Add test rectangle banner ads.
- [Unity] Add option to parse default values from json file for FirebaseRemoteConfig.

## 2.6.4 - 2021-03-11
- [Android] Fix setDefaults in FirebaseRemoteConfig not work.

## 2.6.3 - 2021-03-04
- [Unity] Add Json (.net) serializer using reflection.
- [C++] Change initialize() method in IService.
- [Android] Fix initializing FirebaseRemoteConfig.

## 2.6.2 - 2021-03-01
- [Unity] Fix cannot compile on Unity 2020.1.

## 2.6.0 - 2021-03-01
- [Native] Fix crash in fetch() in Firebase Remote Config.
- [Android] Fix rewarded interstitial ad not registered correctly.
- [Android/iOS/Native] Add AdMob mediation test suite.
- [Unity] Add Audio, Analytics, RemoteConfig services.

## 2.5.0 - 2021-02-23
- [Android] Update Firebase BoM version to 26.5.0
- [Native] IAdsManager now has methods for each type of ad item.
- [JS] Fix to escape JSON message
- [C#] Auto inject SKAdNetworkItems list.

## 2.4.3 - 2021-02-15
- [Native] Handle invalid network / ad format in IAdsManager.
- [Native] getBool / getLong / getDouble / getString are now synchronized methods in Firebase Remote Config.
- [Native] Add Unity banner ad.

## 2.4.2 - 2021-02-11
- [iOS] Fix IronSource banner ad not displayed.
- [Native] Fix to reload banner ad in MultiBannerAd.

## 2.4.1 - 2021-02-05
- [C++] Remove Firebase C++ SDK.

## 2.4.0 - 2021-02-04
- [Android/iOS/Native] Add rewarded interstitial ads.
- [Android/iOS] Add TapJoy mediation adapters.
- [Android/iOS] Add Firebase Analytics / Remote Config.
- [iOS] Fix AppOpen ads freezing.
- [JS] Fix crash when initialize Soomla plugin.
- [JS] Fix ad callbacks not called.
- [JS] Remove Facebook JSB (use manual Facebook).

## 2.3.0 - 2021-01-25
- [Android/iOS/Native] Add IronSource banner ad.
- [JS] Remove legacy JSB libs (use manual libs):
  - AdMob.
  - Facebook Ads.
  - Firebase Crashlytics.
  - Firebase Performance.
  - IronSource.
  - Notification.
  - UnityAds.

## 2.2.3 - 2021-01-13
- [Native] Add capping when display consecutive full screen ads.

## 2.2.2 - 2021-01-09
- [C#] Fix crash when creating Facebook Ads interstitial ads.
- [C#] Fix rectangle banner ad not work in ads JSON config.

## 2.2.1 - 2021-01-08
- [Native] Add support for rectangle banner ad in ads JSON config.
- [Native] Add initialization time-out to ad network in ads JSON config.

## 2.2.0 - 2021-01-08
- [Native] Add loading cap for FAN ads.
- [C++] Add ads JSON config.

## 2.1.2 - 2021-01-05
- [Android] Fix UnityAds always reload.

## 2.1.1 - 2021-01-04
- [iOS] Lock RxSwift version.

## 2.1.0 - 2021-01-04
- [C#] Add ads JSON config.

## 2.0.6 - 2020-12-23
- [iOS] Fix build Unity.
- [iOS] Disable AdColony in AdMob mediation.

## 2.0.5 - 2020-12-21
- [Android] Fix to create ad only when load or show.

## 2.0.4 - 2020-12-18
- [C#] Fix build with Unity 2020.1.

## 2.0.3 - 2020-12-17
- [Android] Extract install referrer details.

## 2.0.2 - 2020-12-16
- [Android] Fix cannot create AdMob app open ads.

## 2.0.1 - 2020-12-16
- [C++] Fix compile

## 2.0.0 - 2020-12-16
- [Android/iOS/Native] Add AdMob app open ad.
- [Android/iOS/Native] Throw exception when initialize unmatched library versions.
- [C++] Use a single library dependency for cmake and ndk-build.

## 1.0.0 - 2020-08-04
- First release
- Supported plugins:
	 - AdMob (with AppLovin, FAN, IronSource, UnityAds, Vungle mediation).
	 - AppLovin.
	 - AppsFlyer.
	 - InstallReferrer.
	 - FAN.
	 - Facebook Login/Sharing.
	 - Firebase Analytics.
	 - Firebase Crashlytics.
	 - Firebase Dynamic Links.
	 - Firebase Messaging.
	 - Firebase Performance.
	 - Firebase Remote Config.
	 - Firebase Storage.
	 - Google Analytics.
	 - IronSource (with AdMob, AppLovin, FAN, UnityAds, Vungle mediation).
	 - Notification.
	 - Google Play Games / Apple Game Center.
	 - Soomla Store.
	 - Tenjin Analytics.
	 - Unity Ads.
	 - Vungle

redpajama_set_name: RedPajamaGithub


text:
The world's happiest countries revealed: Finland keeps the top spot
Finland has been named the happiest country in the world for the third year in a row by the World Happiness Report – and Afghanistan ranked the bleakest.
The annual United Nations World Happiness Report ranks over 150 countries by how happy their citizens perceive themselves to be, according to their evaluations of their own lives.
Denmark takes the No.2 spot in 2020's study, followed by Switzerland in third place and Iceland in fourth. The UK climbs two places to 13th and the U.S is up one place to 18th.
Finland – where ice swimming is popular – has been named the happiest country in the world for the third year in a row by the World Happiness Report
Denmark is the second happiest country on earth, according to the UN. Pictured is the capital city, Copenhagen
THE HAPPIEST AND LEAST HAPPIEST COUNTRIES AND CITIES IN THE WORLD
HAPPIEST COUNTRIES
1. Finland
6. The Netherlands
7. Sweden
8. New Zealand
11. Canada
13. UK
14. Israel
15. Costa Rica
16. Ireland
18. US
19. Czech Republic
20. Belgium
LEAST HAPPY COUNTRIES
1. Afghanistan
2. South Sudan
3. Zimbabwe
4. Rwanda
5. Central African Republic
6. Tanzania
7. Botswana
8. Yemen
9. Malawi
11. Lesotho
12. Haiti
13. Zambia
14. Burundi
15. Sierra Leone
16. Egypt
17. Madagascar
18. Ethiopia
19. Togo
20. Comoros
HAPPIEST CITIES
1. Helsinki, Finland
2. Aarhus, Denmark
3. Wellington, New Zealand
4. Zurich, Switzerland
5. Copenhagen, Denmark
6. Bergen, Norway
7. Oslo, Norway
8. Tel Aviv, Israel
9. Stockholm, Sweden
10. Brisbane, Australia
11. San Jose, Costa Rica
12. Reykjavik, Iceland
13. Toronto Metro, Canada
14. Melbourne, Australia
15. Perth, Australia
16. Auckland, New Zealand
17. Christchurch, New Zealand
18. Washington, USA
19. Dallas, USA
20. Sydney, Australia
LEAST HAPPY CITIES
1. Kabul, Afghanistan
2. Sanaa, Yemen
3. Gaza, Palestine
4. Port-au-Prince, Haiti
5. Juba, South Sudan
6. Dar es Salaam, Tanzania
7. Delhi, India
8. Maseru, Lesotho
9. Bangui, CAR
10. Cairo, Egypt
11. Kigali, Rwanda
12. Kumasi, Ghana
13. Khartoum, Sudan
14. Monrovia, Liberia
15. Antananarivo, Madagascar
16. Harare, Zimbabwe
17. Colombo, Sri Lanka
18. Lome, Togo
19. Gaborone, Botswana
20. Phnom Penh, Cambodia
The remaining countries in the top ten are Norway (5th), the Netherlands (6th), Sweden (7th), New Zealand (8th), and Austria (9th), followed by top-10 newcomer Luxembourg.
Joining Afghanistan (153rd) at the bottom of the table are South Sudan (152nd), Zimbabwe (151st), Rwanda (150th), Central African Republic (149th), Tanzania (148th), Botswana (147th), Yemen (146th), Malawi (145th) and India (144th).
In addition to the country rankings, the World Happiness Report 2020, for the first time, has ranked cities around the world according to subjective wellbeing.
The report shows that in general the happiness ranking of cities is almost identical to that of the countries in which they are located. And it comes as no surprise that the happiest city is Finland's capital, Helsinki.
Switzerland is the third happiest country in the world. And with scenery like this, it's not a surprising result
The UK climbs two places to take the 13th slot in the ranking
Filling out the rest of the top ten are Aarhus, Denmark (2nd); Wellington, New Zealand (3rd); Zurich, Switzerland (4th); Copenhagen, Denmark (5th); Bergen, Norway (6th); Oslo, Norway (7th); Tel Aviv, Israel (8th); Stockholm, Sweden (9th), and Brisbane, Australia (10th).
Meanwhile, Kabul, the capital of Afghanistan (186th), is at the bottom of the table followed by Sanaa in Yemen (185th) and Gaza in Palestine (184th). Above those are Port-au-Prince, Haiti (183rd); Juba, South Sudan (182nd); Dar es Salaam, Tanzania (181st); Delhi, India (180th); Maseru, Lesotho (179th); Bangui, CAR (178th), and Cairo in Egypt (177th).
Afghanistan and its capital, Kabul (pictured), have been ranked the least happy country and city in the world
Professor John F. Helliwell of the University of British Columbia, who co-edited the report, said: 'A happy social environment, whether urban or rural, is one where people feel a sense of belonging, where they trust and enjoy each other and their shared institutions.
'There is also more resilience, because shared trust reduces the burden of hardships, and thereby lessens the inequality of wellbeing.'
While Professor Jan-Emmanuel De Neve, director of the wellbeing research centre at the University of Oxford, commented: 'Generally, we find that the average happiness of city residents is more often than not higher than the average happiness of the general country population, especially in countries at the lower end of economic development.
'But this urban happiness advantage evaporates and sometimes turns negative for cities in high-income countries, suggesting that the search for happiness may well be more fruitful when looking to live in more rural areas.'
REVEALED: HOW TO FIND YOUR FINNISH CALM
According to VisitFinland, the Finnish tourist board, getting out in nature is the country's secret to happiness because it helps to slow down and calm the mind. Here are some simple tips on how you can bring some Finnish calm into your home…
1. Start your day with a cold shower
The Finns love winter swimming as much as they love the sauna. The secret of plunging into icy water lies in the feeling that surges through your body once you get out of the water – as soon as you're back on dry land your circulation kicks in and your body starts to warm up and makes you feel happy. Your body is producing the mood-balancing hormone serotonin with dopamine, and stress starts to melt away. The easiest way to do this at home is to take an ice-cold shower for a couple of minutes, first thing in the morning.
2. Make sense of the world by reading
Books are close to Finns' hearts and there are many libraries in Finland, with Helsinki's Oodi being the newest library to open in 2019. In 2016 the United Nations named Finland the world's most literate nation, and Finns are among the world's most enthusiastic users of public libraries. The country, which has a population of 5.5 million, borrows close to 68 million books a year.
3. Experience a relaxing forest path on your sofa
According to VisitFinland, getting out in nature country's secret to happiness because it helps to slow down and calm the mind
There is something magical about the forest and the Finnish soul has always been linked with it. The green colour is calming and the gentle rustling of the leaves and pine needles is like music. It has been scientifically proven that only 15 minutes in the forest calms your pulse and your body starts to rest. So, close your eyes, stretch yourself on the sofa, and have an imaginary sound trip (playlist here) to the Finnish forest.
4. Make the world a better (and tastier) place by baking a cinnamon bun
Korvapuusti translates into 'slapped ears' in English, but they are essentially cinnamon buns baked Finnish style with a dash of cardamom. Finns love their coffee (they drink almost 10kg per person per year) and korvapuusti so much that there is actually a particular word for it, 'pullakahvit', which literally means bun coffee. Cinnamon buns are the perfect comfort food and baked at home (click here for a recipe) they bring a cosy smell to the kitchen.
5. Use art as a stress-reliever
Finland's contemporary art scene embraces everything from experimental artist-run initiatives and commercial galleries to flagship art institutions. There are more than 55 art museums and numerous art galleries packed into the city. The Finns use art to calm the mind and transport their thoughts to stress-free comforting places.
Take a virtual trip from your own sofa to the Finnish museums to understand how art is a tool for happiness. In March 2020, Amos Rex won the prestigious LCD (Leading Culture Destination) Award for New Cultural Destination of the Year – Europe. Have a virtual tour of the new museum to see the new Generation 2020 exhibition in their Instagram Stories. If you want to discover Lapland, head to Rovaniemi Art Museum located in the Arctic Circle. Its main focus is on Finnish Contemporary Art and Northern Art. Culture Vultures on the search for something more classical should pay a visit to Ateneum Art Museum. The Ateneum Art Museum's collection in Helsinki includes more than 450 works by famous Finnish artist Akseli Gallen-Kallela.
How to see the world while your pet is looked after for free
First Time in Japan: 7 Travel Tips
British Airways economy class food will now come from Michelin-star Tom Kerridge
TOP 10 BEST PLACES IN DELHI | दिल्ली COMPLETE TOURIST TRAVEL GUIDE
Christmas travel: The perfect Twixmas getaways for relaxing before the New Year festivities begin
London hotel review: The Mail's verdict on the Sloane Club's 27-room Sloane Place property
Airline Scoot offers upgrades to a 'child-free zone' and now flies from London Gatwick to Bangkok
London's calling! It's a brilliant time to see the capital, with no crowds and plenty of hotel deals

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Why i can't compile with GHC if code contain module definition? I'am trying to compile a very small haskell code with ghc:
module Comma where

import System.IO

main = do
    contents <- getContents
    putStr (comma contents)

comma input =
  let allLines = lines input
      addcomma [x]    =   x
      addcomma (x:xs)   = x ++ "," ++ (addcomma xs)
      result = addcomma allLines
  in result

The command i'm using to compile is :

ghc --make Comma.hs

And i'm getting this answer:

[1 of 1] Compiling Comma        ( Comma.hs, Comma.o )

No file is generated, and there is no warning or errors messages.
If i comment the "module Comma where" line from code it compiles correctly:

[1 of 1] Compiling Main             ( Comma.hs, Comma.o )
  Linking Comma ...

I don't understand what is happening.
I'm using ghc 7,4,1
(Glasgow Haskell Compiler, Version 7.4.1, stage 2 booted by GHC version 7.4.1)
and ubuntu linux.
I appreciate if anyone could tell why doesn't compile with the module definition

A:
No file is generated

Are you sure? I would expect that at least Comma.o and Comma.hi are generated. The former contains the compiled code ready to be linked into an executable, and the latter contains interface information that ghc uses to typecheck modules that import the module Comma.
However, ghc will only link the compiled modules into an executable if there is a main function. By default, that means a function named main in a module named Main. If you don't put an explicit module name, the name Main is assumed, and that's why your test works when you delete the module Comma where line.
To compile and link the Comma.hs file you can either use module Main where instead of module Comma where, or you can use the -main-is flag to tell ghc that Comma.main is to be the main function:
ghc --make -main-is Comma Comma.hs

Or:
ghc --make -main-is Comma.main Comma.hs

A: GHC compiles the function Main.main to be the entry point of an executable. When you omit the module declaration, Module Main where is implicitly inserted for you.
But when you explicitly name it something other than Main ghc doesn't find an entry point.
My usual workflow is to use ghci (or ghci + emacs) instead for these snippets which let's you bypass this issue entirely. Alternatively, you could compile with -main-is Comma to explicitly tell ghc to use the Comma module.

A: If you have a main definition in your file and you want to compile it to an executable you need can only have module Main where.

redpajama_set_name: RedPajamaStackExchange


text:
Probability of Fixation of an Advantageous Mutant in a Viral Quasispecies
Claus O. Wilke
Genetics February 1, 2003 vol. 163 no. 2 467-474
Digital Life Laboratory, Caltech, Pasadena, California 91125
For correspondence: wilke@caltech.edu
The probability that an advantageous mutant rises to fixation in a viral quasispecies is investigated in the framework of multitype branching processes. Whether fixation is possible depends on the overall growth rate of the quasispecies that will form if invasion is successful rather than on the individual fitness of the invading mutant. The exact fixation probability can be calculated only if the fitnesses of all potential members of the invading quasispecies are known. Quasispecies fixation has two important characteristics: First, a sequence with negative selection coefficient has a positive fixation probability as long as it has the potential to grow into a quasispecies with an overall growth rate that exceeds that of the established quasispecies. Second, the fixation probabilities of sequences with identical fitnesses can nevertheless vary over many orders of magnitudes. Two approximations for the probability of fixation are introduced. Both approximations require only partial knowledge about the potential members of the invading quasispecies. The performance of these two approximations is compared to the exact fixation probability on a network of RNA sequences with identical secondary structure.
ONE of the most remarkable aspects of the dynamics of RNA viruses is the high rate at which mutant variants are produced. At mutation rates close to one substitution per genome per generation (Drake 1993; Drake and Holland 1999), a virus population forms a highly diverse cloud of mutants (Domingo et al. 1976, 1978; Hollandet al. 1982; Steinhaueret al. 1989; Biebricher and Luce 1993; Burch and Chao 2000), a so-called quasispecies (Eigen and Schuster 1979; Nowak 1992; Domingo and Holland 1997; Domingoet al. 2001). At the same time, the sequence space is so large that even for population sizes up to 1012, there is a constant stream of new mutants that have never existed before. Most of these mutants have impaired fitness, but occasionally, a new mutant will fare better than all currently existing virions, for example, by presenting an epitope that the immune system fails to recognize. With a certain probability, this mutant will rise to fixation, where fixation is understood in the sense that the mutant becomes the ancestor of a new quasispecies, which completely replaces the currently existing one.
The problem of the fixation of an advantageous mutant is an old one, with a long history of investigations in classical population genetics, reaching back to Haldane and Fisher (Fisher 1922, 1930; Haldane 1927; Kimura 1957, 1964, 1970; Ewens 1967; Kimura and King 1979; Barton 1995; Bürger and Ewens 1995; Otto and Barton 1997; Pollak 2000). However, these investigations differ from the quasispecies case in one important aspect: the mutation rates considered. In classical population genetics, the usual assumption is that mutations are rare events, such that an invading mutant will not mutate again while it is moving toward either fixation or extinction. In the quasispecies setting, on the other hand, most of the immediate offspring of a mutant will have further mutations, and their offspring will as well, and so on. As a consequence, the fitness of a prospective invading quasispecies is not given by the fitness of the initial mutant, but rather by the average fitness of the offspring mutant cloud that will form eventually. One of the more surprising results of these dynamics is that a mutant with the ability to replace the currently existing quasispecies may actually have a reduced replication rate, if at the same time its robustness against further mutations is increased (Schuster and Swetina 1988; Wilke 2001b; Wilkeet al. 2001; Krakauer and Plotkin 2002).
Quasispecies theory in its original formulation by Eigen and Schuster (1979) is based on deterministic differential equations and as such cannot deal with the fluctuations that are responsible for fixation or extinction of individual mutants. Within the more general mathematical framework of multitype branching processes, it is possible to describe both the deterministic aspects of large populations and the fluctuations inherent in the dynamics of small and very small populations (Demetriuset al. 1985; Hofbauer and Sigmund 1988; Hermissonet al. 2002). An expression for the probability of fixation follows naturally from branching process theory. We discuss how this expression relates to the predictions of the deterministic quasispecies equations, as well as to the results of classical population genetics. The remainder of the article is organized as follows.
First, we derive a general expression for the probability of fixation in an arbitrary fitness landscape. Then, we discuss the special case of fixation on a neutral network, that is, the case in which all sequences of the invading quasispecies have the same fitness, and derive two approximations for the fixation probability that can be evaluated without the knowledge of the full-fitness landscape. To give a concrete example, we apply both the exact expression and the approximations to a known network of >50,000 RNA sequences. For this neutral network, we also discuss how the fixation probability changes if multiple sequences invade at the same time.
For a population evolving under high mutational pressure, we have to understand fixation in the sense that a mutant is fixed once it has become a common ancestor of the whole population. The more traditional definition of fixation, which is to regard a mutation as fixed if all sequences in the population carry it, is not applicable: The mutational pressure constantly creates new deleterious mutants, which may not carry a particular mutation although their ancestors did so. If we understand fixation as the process by which a mutant becomes a common ancestor of the whole population, then the probability that a mutant is fixed is given by the probability that the cascade of further mutated offspring of the invading mutant does not come to a halt. We can calculate this probability from the theory of multitype branching processes.
The general setting to which our theory applies is as follows. Consider a viral quasispecies in mutation-selection balance, with an average fitness 〈w〉. If generations are discrete and nonoverlapping, and the population size N is constant, then the probability that a virion i produces k offspring in one generation is given by Wright-Fisher sampling, P(k∣i)=(Nk)ξik(1−ξi)N−k, (1) with ξi = wi/(〈w〉N), where wi is the fitness of virion i.
Assume that a rare mutation leads to the emergence of a virion with the potential to form a new quasispecies and to replace the already established one in the process. This new quasispecies (in the following also called the invading quasispecies) may consist of sequences of type 1, 2,..., n, with replication rates wi. Let the probability that a sequence j produces an erroneous copy i be given by Qij. As long as the total abundance of the invading quasispecies is small compared to the established quasispecies, we can assume that 〈w〉 is not affected by the presence of the invading quasispecies. Then, the probability that a single sequence of type i generates (k1,..., kn) offspring of types 1,..., n can be expressed as P(k1,…,kn∣i)=N!(N−∑rkr)!∏rkr!×∏r=1n(Mir∕N)kr(1−∑r=1nMir∕N)N−Σrkr (2) (see appendix), with Mij = wiQji/〈w〉. The matrix elements Mij give the expected number of offspring of type j from sequences of type i in one generation. In the following, we assume that the population size is so large that we can approximate P(k1,..., kn|i) by its limit for an infinitely large population. This limit is a multivariate Poisson distribution: P(k1,…,kn∣i)=∏r=1n(1kr!Mirkr)e−ΣrMir. (3) By using the theory of branching processes and by assuming an infinite population size in Equation 3, we restrict the applicability of our theory to certain scenarios. We can apply our theory only to those types of fixation events that increase the average fitness of the population. The situation of genetic drift, whereby a neutral or deleterious mutant is fixed because of stochastic fluctuations in a small population (Kimura 1970; Kimura and King 1979), is not covered by our theory. This latter type of fixation event reduces the average fitness or leaves it unaltered.
Let xi be the probability that the offspring cascade spawned by a sequence i goes extinct after a finite number of generations. From the theory of multitype branching processes (Harris 1963), we know that the vector of extinction probabilities x = (x1,..., xn) satisfies x = f(x), where f(z) = (f1(z),..., fn(z)) is the probability-generating function of the distribution of offspring probabilities P(k1,..., kn|i). The probability-generating function is defined as fi(z)=∑k1,…,knP(k1,…,kn∣i)z1k1…znkn. (4) After inserting Equation 3 into Equation 4, we obtain fi(z) = eΣrMir(zr – 1). With the convention ex = (ex1,..., exn), we can rewrite this expression as f(z)=eM(z−1). (5) Since the probability of fixation πi of a sequence i is given by the probability that the offspring cascade spawned by i does not go extinct, we have πi = 1 – xi. The vector of fixation probabilities satisfies therefore 1 – π = f(1 – π). With Equation 5, we find 1−π=e−Mπ. (6) This equation has exactly one solution with 0 < πi < 1 for all i if the spectral radius ρM of M > 1(Harris 1963; for the matrices M we are considering here, the spectral radius coincides with the largest positive eigenvalue of M, by virtue of the Frobenius-Perron theorem). Otherwise, πi = 0 for all i.
To compare Equation 6 to the result of Haldane (1927), we take the logarithm on both sides of Equation 6 and expand to second order: log(1−πi)≈−πi−πi2∕2=−∑kMikπk. (7) With si = Mii – 1, this simplifies to πi=si+si2+2∑k≠iMikπk. (8) If si > 0 and all off-diagonal elements of M are 0, then Equation 8 reduces to Haldane's result πi = 2si; that is, the fixation probability of a sequence is twice its selective advantage. If the off-diagonal elements are nonzero, then the fixation probability is increased, because the invading sequence gets support from its mutational neighbors. In particular, even if some si < 0, the corresponding πi are positive as long as ρM > 1. This means that in quasispecies fixation, sequences that by themselves reproduce too slowly to outcompete the currently established quasispecies can nevertheless found a new quasispecies that grows fast enough to overtake the population.
For simplicity, we have considered only discrete, nonoverlapping generations. Generalization to continuous time is straightforward (see, e.g., Harris 1963; Hermissonet al. 2002). In the continuous-time case, the vector of fixation probabilities π is again determined by an equation of the form 1 – π = f(1 – π). However, the generating function f(z) is in general not given by Equation 5. Its functional form depends on the details of the continuous-time process that is being modeled. For example, if reproduction occurs through binary fission, f(z) will be quadratic in the variables z1,..., zn.
FIXATION ON A NEUTRAL NETWORK
Exact expressions and estimates: So far, we have made no assumptions about the structure and fitness distribution of the invading quasispecies. This has led to a general equation for the vector of fixation probabilities π, but not much further analysis is possible without a concrete model for the fitness landscape of the invading quasispecies (we do not have to make any further assumptions about the established quasispecies, since it enters the equations only through its average fitness 〈w〉). The concrete fitness landscape we study is that of a neutral network (Huynenet al. 1996; Bornberg-Bauer 1997) of related sequences with identical replication rate σ. All sequences that are not part of the neutral network are assumed to have a vanishing replication rate. Mutations occur as random substitutions of single bases, and we allow for at most one substitution per replication event, similar to the approach of van Nimwegen et al. (1999). The probability of a substitution is given by μ. The restriction to at most a single substitution is a technicality that simplifies the analysis. Generalization to more elaborate mutation schemes is possible along the lines of Wilke (2001a).
We denote the sequence length by L and the number of different bases by κ (κ= 4 for RNA/DNA). For the matrix M, we have to take into account only the sequences belonging to the neutral network. It is useful to introduce the connection graph G = (Gij). The elements Gij are 1 if and only if two sequences i and j are exactly one mutation apart. In all other cases, Gij = 0. We can express M in terms of G as M=(s+1)1+βG, (9) where s =σ(1 –μ)/〈w〉 – 1, β=σμ/[〈w〉L(κ–1)], and 1 is the identity matrix. We restrict our analysis to primitive connection graphs, in which case the spectral radius ρG of G is given by the unique positive eigenvalue of largest modulus of G (Varga 2000). (Irreducibility, which is often assumed in similar contexts, is not sufficient, since complex eigenvalues of modulus ρG may exist if G is not primitive. Irreducible undirected connection graphs of the kind we are considering here are primitive if they contain at least one cycle of odd length.)
The spectral radius of M is given in terms of the spectral radius of the connection graph ρG as ρM=s+1+βρG. (10) This implies that fixation can occur as long as s is not smaller than –βρG.
In an experimental setting, we cannot expect to have knowledge of the complete connection graph G. Therefore, it is important to have approximations for the fixation probability πi. We consider two alternative methods. Both are based on replacing the matrix M in Equation 6 by a suitable diagonal matrix. This replacement leads to a decoupling of the equations for different πi.
The quantity that is easiest to obtain experimentally is the growth rate of the invading quasispecies relative to the established quasispecies, when initially both are present in large and equal amounts. From the definition of M, we see that this relative growth rate corresponds to the spectral radius ρM of M. If we assume that every mutant present in the invading quasispecies has an expectation of ρM offspring per generation, then we can replace M in Equation 6 with a matrix that has entries ρM on the diagonal, while all off-diagonal elements are zero. Then, Equation 6 simplifies to 1 – πi = e–ρMπi for all i. Clearly, this approximation will overestimate the πi for some mutants (mostly those that produce on average <ρM offspring) and underestimate it for others (mostly those that produce on average >ρM offspring). In the following, we refer to this estimate as the deterministic growth estimate, because it is based on the assumption that the invading quasispecies grows according to the deterministic equations from the outset.
The alternative method of estimating πi is as follows. It is reasonable to assume that the first couple of replication cycles mostly determine fixation or extinction for an invading sequence. During these initial generations, the subpopulation descending from the invading sequence cannot explore the full neutral network if the network is large. Therefore, the major contribution to the fixation probability comes from the connection matrix of the local genetic neighborhood of the invading sequence, and sequences farther away on the neutral network are relatively unimportant. The idea behind the second approximation is therefore to calculate the fixation probability on the basis of a small area of genotype space surrounding the invading sequence. In the simplest case, we consider only the invading sequence and its immediate mutational neighbors. Assume sequence i has νi neutral neighbors, i.e., ΣjGij =νi. Then the total expected number of offspring of sequence i is ΣjMij = s + 1 +βνi. Under the assumption that all offspring of i have the same expected number of further offspring, the probability of fixation satisfies the equation 1 – π = e–(s+1+βνi)πi. We call the solution to this equation the neutrality estimate. As in the case of the deterministic growth estimate, it will overestimate the true fixation probability for some sequences and underestimate it for others.
Fixation on an RNA neutral network: We compared the two estimates to the exact fixation probabilities on a neutral network of RNA sequences. The network of 51,028 sequences of length L = 18 was found through exhaustive enumeration by van Nimwegen et al. (1999). The spectral radius of the network's connection graph is ρG = 15.7. To calculate fixation probabilities on this neutral network, we have to make an assumption about the average fitness 〈w〉 of the established quasispecies. We assume 〈w〉 = 1 –μ[1 –ρG/(3L)], in which case the relative growth rate of the invading quasispecies (at macroscopic concentration) with respect to the established quasispecies follows from Equation 10 as ρM =σ, independent of the mutation rate.
Figure 1 displays the exact fixation probabilities (obtained numerically from Equation 6) and the two estimates as functions of the mutation rate. We have shown the average fixation probability π= Σπi/n, the minimum probability πmin = mini{πi}, and the maximum probability πmax = maxi{πi}. Since we chose 〈w〉 such that ρM is independent of μ, the deterministic growth estimate is independent of μ. We observe that the deterministic growth estimate lies consistently above the average π, but below the maximum πmax. The neutrality estimate underestimates the smallest fixation probabilities and overestimates the largest ones. Its average lies slightly below π for small mutation rates and above π for large mutation rates. A more detailed plot of the fixation probabilities at a fixed mutation rate of μ= 0.5 is given in Figure 2. There, we display the fixation probability vs. the neutrality (number of neutral neighbors) of the invading sequence. The spread in the fixation probabilities is remarkable. For sequences with a given neutrality, the fixation probabilities vary over up to seven orders of magnitude. This demonstrates the important influence of not only the nearest neighbors but also the wider genetic neighborhood on the fate of a single sequence in quasispecies evolution. The neutrality estimate substantially underestimates the fixation probabilities of those sequences that have only few immediate neutral neighbors, but are otherwise located in a region of the genotype space where the density of neutral sequences is high. In principle, we could improve the neutrality estimate by taking into account all neutral sequences up to some distance d, but in practice this method becomes quickly as unwieldy as calculating the exact fixation probabilities.
—Fixation probability vs. mutation rate in a neutral network of 51,028 RNA sequences taken from van Nimwegen et al. (1999). Solid lines correspond to the solution of the full equations, dashed lines correspond to the neutrality estimate, and the dotted line indicates the deterministic growth estimate. σ= 1.05, L = 18, ρG = 15.7, 〈w〉 = 1 – μ[1 –ρG/(3L)].
Multiple invading sequences: The above considerations address only the case of a single invading sequence. The generalization to more than one invading sequence is straightforward. Assume that a set S of N sequences, with S = {i1,..., iN}, invades an established quasispecies. The probability that this invasion is successful is given by 1 – Πi∈S(1 –πi), where πi are the fixation probabilities of the individual sequences. The probability of successful invasion of N sequences can be used as an indicator for the population size at which the deterministic quasispecies equations capture the relevant dynamics of a finite population. The fluctuations distinguishing the stochastic process of a finite population from the deterministic description can be neglected if the invasion probability is close to one. In Figure 3, the fixation probability on the same neutral network of RNA sequences that we have used before is displayed against the size of the invading population. The individual data points are averaged over 1000 independent trials, where for each trial the N starting sequences were chosen at random. As before, 〈w〉 is chosen such that σ is the average number of offspring of the invading quasispecies in the deterministic limit.
—Fixation probability vs. neutrality ν of the invading sequence in a neutral network of 51,028 RNA sequences taken from van Nimwegen et al. (1999). The dots stem from the exact numerical solution, the dashed line corresponds to the neutrality estimate, and the dotted line indicates the deterministic growth estimate. The inset shows the distribution of neutralities in the network. μ= 0.5, σ= 1.05, L = 18, ρG = 15.7, 〈w〉 = 1 –μ[1 –ρG/(3L)].
Figure 3 shows that the population need not cover the relevant sequence space to behave as predicted by the deterministic equations. On a neutral network of >50,000 sequences, a population of ∼1000 behaves deterministically at an advantage in growth rate of only 1%. It is important to note that this advantage has been calculated under the assumption of an infinite population and that sufficiently small populations will grow substantially slower (van Nimwegenet al. 1999). Apparently, here a population that covers only 2% of the neutral network is not sufficiently small to experience this reduction in growth rate.
The exact expression for the probability of fixation in the quasispecies context is easy to evaluate numerically if the fitnesses of all relevant sequences are known. However, these data are normally not available for experimental systems, and approximations must be used. What is most easily available experimentally is the relative rate of growth of the two quasispecies at macroscopic concentrations, which is the basis of the deterministic growth estimate. Since this estimate gives only a single number, independently of the sequence actually seeding the invading quasispecies, it does not reflect local variations in the density of viable sequences around the invading sequence. The neutrality estimate does not suffer from this shortcoming. However, it requires the knowledge of the fitnesses of the immediate neighbors of the invading sequence. Although experimentally tedious, these fitnesses can be measured in principle. For example, Elena and Lenski (1997) generated 225 mutant strains of the bacterium Escherichia coli (each mutant differed from the wild type by one, two, or three mutations) and measured the relative fitnesses of the mutant strains to the wild type. The mutant neighborhood of an RNA virus can conceivably be measured in a similar manner.
—Fixation probability π vs. size of the invading population N in a neutral network of 51,028 RNA sequences. The fixation probability is averaged over 1000 independent sets of invading sequences, chosen at random. The error bars indicate the standard deviation. Lines are meant as a guide to the eye. μ= 0.2, L = 18, ρG = 15.7, 〈w〉 = 1 –μ[1 –ρG/(3L)].
The predictive power of both the deterministic growth estimate and the neutrality estimate depends strongly on the distribution of neutral sequences in sequence space. For example, both estimates become exact for the case of a uniform neutral lattice, in which all sequences have exactly the same neutrality. Furthermore, we expect the neutrality estimate to perform particularly well in networks in which a sequence's neutrality is strongly correlated to the neutralities of its immediate and more distant neutral neighbors. The deterministic growth estimate, on the other hand, will yield the best results if the neutral network does not decompose into areas that are substantially more densely or less densely connected than other areas. However, to what extent these conditions are met in natural systems is questionable. As we have seen in this article, the connection graph of a comparatively simple neutral network—consisting of RNA sequences that are only 18 bp long—is already so heterogeneous that both estimates fail to give an accurate prediction of the fixation probability for a substantial fraction of sequences on that network. It is reasonable to assume that the distribution of high-fitness sequences in sequence space for an RNA virus that consists of several thousand bases is at least as heterogeneous as the one in our toy RNA network, probably more so. In this work, we have considered only the fate of a single invading quasispecies. However, while an invading quasispecies is moving toward fixation or extinction, another mutant, one that belongs to a quasispecies of even higher mean fitness, may appear. The fixation probability of the first invader will then be modulated by the dynamics of the second one and vice versa, an effect commonly referred to as "clonal interference" (Gerrish and Lenski 1998). Clonal interference has been reported in experiments with vesicular stomatitis virus (Miralles et al. 1999, 2000) and with the bacterium E. coli (de Visseret al. 1999). Currently, an accurate mathematical description of clonal interference for the quasispecies case is not available.
The approach we have followed in this work cannot be directly generalized to include clonal interference, because the assumption of a constant background average fitness 〈w〉 is not justified in the context of two (or more) competing branching processes. A second problem that we have to solve in a theory of quasispecies clonal interference is the identification of advantageous mutants. Throughout this article, we have used the definition that an advantageous mutant is one that can grow into a quasispecies with higher average fitness than that of the currently established quasispecies. To use this definition in the context of clonal interference, we need to have a priori knowledge about how to best subdivide the sequence space into independent quasispecies. Only with this knowledge can we decide whether a particular new mutant is part of the parent quasispecies or rather the founding member of a new quasispecies. A possible way to study clonal interference in future work will be to consider a particular fitness landscape—for example, a set of intertwined neutral networks at different fitness levels—for which the a priori separation into distinct quasispecies is possible. For such a landscape, numerical studies of clonal interference will be straightforward, and an analytic description should be possible as well. For landscapes that are a priori unknown, even the numerical investigation of clonal interference will remain difficult until a workable method for the identification of advantageous mutants has been found.
Recently, Jenkins et al. (2001) and Holmes and Moya (2002) expressed doubts regarding the relevancy of the quasispecies model for virology (but see Domingo 2002). They argued that there is no unequivocal experimental evidence for the quasispecies nature of RNA viruses and that the deterministic quasispecies equations are potentially not applicable to viral evolution on theoretical grounds, due to the immense size of the sequence space. The results of this article show that the second concern is not entirely justified. A single sequence has a positive probability to rise to fixation if and only if the average fitness of the quasispecies that will form eventually exceeds the average fitness of the currently established quasispecies. The individual fitness of the invading sequence has some influence on the exact value of that probability, but does not affect whether fixation is possible at all. Moreover, when the population size reaches several hundred, with probability of almost one the population will, for reasonable choices of the parameters, behave as predicted by the deterministic equations. A similar result has been obtained by van Nimwegen et al. (1999) for flow reactor simulations, where, on the same neutral network of RNA sequences that we have studied here, quasispecies effects started to become important when the product of population size and mutation rate Nμ exceeded the value 10 (see Figure 3 of van Nimwegenet al. 1999).
Wilke (2001b) studied the probability of fixation for RNA sequences in a simulated flow reactor. The measured fixation probability was compared to an expression equivalent to the deterministic growth estimate of this work (since continuous time simulations were used to generate the data, the exact expressions differ from those given here). The analytic expression correctly predicted the parameter regions for which fixation was possible. In particular, the mutation rate at which a slower replicator with better mutational support could successfully invade a quasispecies consisting of sequences with higher individual fitnesses was determined accurately. However, the exact fixation probabilities seemed to be slightly overestimated. (Within the statistical accuracy of the data, a definite decision on this issue could not be made. While the data were in agreement with the model according to a χ2 test, they were not in agreement according to a nonparametric test based on how often the data points fell above or below the predicted value.)
The probability of fixation of advantageous mutants is obviously of tremendous importance for disease dynamics and vaccines. For example, live vaccinces of attenuated poliovirus can contain small amounts of virulent poliovirus variants (Chumakovet al. 1991), the reason being that attenuated and virulent virus variants are often separated by only one or a few mutations. In experiments, small amounts of highly virulent virus remain typically suppressed by the less virulent virus, but once a threshold concentration of the highly virulent virus variant is reached, infection occurs (de la Torre and Holland 1990; Chumakovet al. 1991; Tenget al. 1996). The apparent existence of such a threshold may well be a result of insufficient resolution of the experiments. Whether the highly virulent strain will grow is determined by stochastic fluctuations, and, as we have seen in Figure 3, the probability of fixation decays quickly with shrinking initial concentration of the virulent strain. If such a strain in a vaccine has a 1% chance to cause infection, then ≫100 replicates of the appropriate assay are necessary to observe at least one infection with certainty. Probabilities of this magnitude or lower can easily be missed at low numbers of replicates, so that the virulent strain appears to be safely suppressed.
I thank C. Adami for extensive discussions and encouragement and E. C. Holmes for commenting on an earlier version of this manuscript. Moreover, I thank M. Huynen for providing the neutral network data from van Nimwegen et al. (1999). Financial support by the National Science Foundation under contract DEB-9981397 is gratefully acknowledged.
We consider a model with discrete, nonoverlapping generations and a constant population size N. Under the assumption that the reproductive success of a sequence i is proportional to its fitness wi, the probability that a randomly chosen sequence in the next generation is offspring of sequence i is given by ξ= wi/(〈w〉N), where 〈w〉 is the average fitness in the population. Since there are N sequences in the population, the probability that k of them are offspring of sequence i is binomial, P(k∣i)=(kN)ξk(1−ξ)N−k . Now consider a sequence of type r in the offspring generation. For the probability that the parent of sequence r is a particular sequence i of the previous generation, we find ξr = Qriξ= wiQri/(〈w〉N), because only a fraction Qri of the total offspring of i will be of type r. Following the previous argument, we find for the probability that sequence i leaves kr offspring of type r:P(kr∣i)=(krN)ξrh(1−ξr)N−kr .
We can extend the above argument to sequences of two types, r and s. The probability that sequence i leaves kr offspring sequences of type r and ks offspring sequences of type s is the probability that kr offspring are of type r, ξrkr , times the probability that ks offspring are of type s, ξsks , times the probability that the remaining offspring either are of different types or have different parent sequences, (1 – ξr – ξs)N–kr–ks, times the number of possible ways in which kr and ks sequences can be chosen out of the total of N sequences in the population. This latter number is a multinomial coefficient, N!/[kr!ks!(N – kr – ks)!]. Putting everything together, we find P(kr,ks∣i)=N!kr!ks!(N−kr−ks)!ξrkrξsks(1−ξr−ξs)N−kr−ks. (A1) By repeating this argument for n different sequence types, and with the definition Mij:= Nξj = wiQji/〈w〉, we arrive at Equation 3.
Communicating editor: M. W. Feldman
Note added in proof: After acceptance of this manuscript, I became aware of a recent paper by T. Johnson and N. H. Barton (2002, The effect of deleterious alleles on adaptation in asexual populations. Genetics 162: 395–411). Using the theory of multitype branching processes, Johnson and Barton studied in this article the probability of fixation of a mutant that suffers additional deleterious mutations while going to fixation.
Received June 3, 2002.
Accepted November 1, 2002.
Barton N. H.
, 1995 Linkage and the limits to natural selection. Genetics 140: 821–841.
Biebricher C. K.,
Luce R.
, 1993 Sequence analysis of RNA species synthesized by Qβ replicase without template. Biochemistry 32: 4848–4854.
Bornberg-Bauer E.
, 1997 How are model protein structures distributed in sequence space? Biophys. J. 73: 2393–2403.
Burch C. L.,
Chao L.
, 2000 Evolvability of an RNA virus is determined by its mutational neighbourhood. Nature 406: 625–628.
Bürger R.,
Ewens W. J.
, 1995 Fixation probabilities of additive alleles in diploid populations. J. Math. Biol. 33: 557–575.
Chumakov K. M.,
Powers L. B.,
Noonan K. E.,
Roninson I. B.,
Levenbook I. S.
, 1991 Correlation between amount of virus with altered nucleotide sequence and the monkey test for acceptability of oral poliovirus vaccine. Proc. Natl. Acad. Sci. USA 88: 199–203.
de la Torre J. C.,
Holland J. J.
, 1990 RNA virus quasispecies populations can suppress vastly superior mutant progeny. J. Virol. 64: 6278–6281.
de Visser J. A. G. M.,
Zeyl C. W.,
Gerrish P. J.,
Blanchard J. L.,
Lenski R. E.
, 1999 Diminishing returns from mutation supply rate in asexual populations. Science 283: 404–406.
Demetrius L.,
Schuster P.,
Sigmund K.
, 1985 Polynucleotide evolution and branching processes. Bull. Math. Biol. 47: 239–262.
Domingo E.
, 2002 Quasispecies theory in virology. J. Virol. 76: 463–465.
Domingo E.,
, 1997 RNA virus mutations and fitness for survival. Annu. Rev. Microbiol. 51: 151–178.
Flavell R. A.,
Weissmann C.
, 1976 In vitro site directed mutagenesis: generation and properties of an infectious extracistronic mutant of bacteriophage Qβ. Gene 1: 3–25.
Sabo D.,
Taniguchi T.,
, 1978 Nucleotide sequence heterogeneity of an RNA phage population. Cell 13: 735–744.
Eigen M.,
, 2001 Quasispecies and RNA Virus Evolution: Principles and Consequences. Landes Bioscience, Georgetown, TX.
Drake J. W.
, 1993 Rates of spontaneous mutation among RNA viruses. Proc. Natl. Acad. Sci. USA 90: 4171–4175.
Drake J. W.,
, 1999 Mutation rates among RNA viruses. Proc. Natl. Acad. Sci. USA 96: 13910–13913.
Schuster P.
, 1979 The Hypercycle: A Principle of Natural Self-Organization. Springer-Verlag, Berlin.
Elena S. F.,
, 1997 Test of synergistic interactions among deleterious mutations in bacteria. Nature 390: 395–398.
, 1967 The probability of fixation of a mutant: the twolocus case. Evolution 21: 532–540.
Fisher R. A.
, 1922 On the dominance ratio. Proc. R. Soc. Edinb. 42: 321–341.
, 1930 The distribution of gene ratios for rare mutations. Proc. R. Soc. Edinb. 50: 204–219.
, 1998 The fate of competing beneficial mutations in an asexual population. Genetica 102/103: 127–144.
Haldane J. B. S.
, 1927 A mathematical theory of natural and artificial selection. Part V: selection and mutation. Proc. Camp. Philos. Soc. 23: 838–844.
Harris T. E.
, 1963 The Theory of Branching Processes. Springer, Berlin.
Hermisson J.,
Redner O.,
Wagner H.,
Baake E.
, 2002 Mutation-selection balance: ancestry, load, and maximum principle. Theor. Popul. Biol. 62: 9–46.
Hofbauer J.,
, 1988 The Theory of Evolution and Dynamical Systems. Cambridge University Press, Cambridge, UK.
Holland J.,
Spindler K.,
Horodyski F.,
Grabau E.,
Nichol S.,
., 1982 Rapid evolution of RNA genomes. Science 215: 1577–1585.
Holmes E. C.,
Moya A.
, 2002 Is the quasispecies concept relevant to RNA viruses? J. Virol. 76: 460–462.
Huynen M. A.,
Stadler P. F.,
Fontana W.
, 1996 Smoothness within ruggedness: the role of neutrality in adaptation. Proc. Natl. Acad. Sci. USA 93: 397–401.
Jenkins G. M.,
Worobey M.,
Woelk C. H.,
Holmes E. C.
, 2001 Evidence for the non-quasispecies evolution of RNA viruses. Mol. Biol. Evol. 18: 987–994.
Kimura M.
, 1957 Some problems of stochastic processes in genetics. Ann. Math. Stat. 28: 882–901.
, 1964 Diffusion models in population genetics. J. Appl. Prob. 1: 177–232.
, 1970 The length of time required for a selectively neutral mutant to reach fixation through random frequency drift in a finite population. Genet. Res. 15: 131–133.
Kimura M.,
King J. L.
, 1979 Fixation of a deleterious allele at one of two "duplicate" loci by mutation pressure and random drift. Proc. Natl. Acad. Sci. USA 76: 2858–2861.
Krakauer D. C.,
Plotkin J. B.
, 2002 Redundancy, antiredundancy, and the robustness of genomes. Proc. Natl. Acad. Sci. USA 99: 1405–1409.
Miralles R.,
Moya A.,
Elena S. F.
, 1999 Clonal interference and the evolution of RNA viruses. Science 285: 1745–1747.
, 2000 Diminishing returns of population size in the rate of RNA virus adaptation. J. Virol. 74: 3566–3571.
Nowak M. A.
, 1992 What is a quasispecies? TREE 7: 118–121.
Otto S. P.,
, 1997 The evolution of recombination: removing the limits to natural selection. Genetics 147: 879–906.
Pollak E.
, 2000 Fixation probabilities when the population size undergoes cyclic fluctuations. Theor. Popul. Biol. 57: 51–58.
Swetina J.
, 1988 Stationary mutant distributions and evolutionary optimization. Bull. Math. Biol. 50: 635–660.
Steinhauer D. A.,
Meier E.,
, 1989 Extreme heterogeneity in populations of vesicular stomatitis virus. J. Virol. 63: 2072–2080.
Teng M. N.,
Oldstone M. B. A.,
de la Torre J. C.
, 1996 Suppression of lymphocytic choriomeningitis virus—induced growth hormone deficiency syndrome by disease-negative virus variants. Virology 223: 113–119.
van Nimwegen E.,
Crutchfield J. P.,
Huynen M.
, 1999 Neutral evolution of mutational robustness. Proc. Natl. Acad. Sci. USA 96: 9716–9720.
Varga R. S.
, 2000 Matrix Iterative Analysis, Ed. 2. Springer-Verlag, New York.
Wilke C. O.
, 2001a Adaptive evolution on neutral networks. Bull. Math. Biol. 63: 715–730.
, 2001b Selection for fitness versus selection for robustness in RNA secondary structure folding. Evolution 55: 2412–2420.
Wilke C. O.,
Wang J. L.,
Ofria C.,
Lenski R. E.,
Adami C.
, 2001 Evolution of digital organisms at high mutation rate leads to survival of the flattest. Nature 412: 331–333.
Volume 163 Issue 2, February 2003
You are going to email the following Probability of Fixation of an Advantageous Mutant in a Viral Quasispecies
The Driver of Extreme Human-Specific Olduvai Repeat Expansion Remains Highly Active in the Human Genome
Loss of Chondroitin Sulfate Modification Causes Inflammation and Neurodegeneration in skt Mice
Rapid and Predictable Evolution of Admixed Populations Between Two Drosophila Species Pairs


text:
Q: create canvas dynamically in wordpress and use original image size and position Okay, I am quite new to Javascript and JQuery, but after hours and hours of research I can't help myself but ask this question.
I want to write a hoverfunction that creates a greyscale-version of an image and lies this new black-and-white image above the original.
I've found a nice working code on spyrestudios.com, so my code looks like this:
HTML normal code
<!--IMG that is only an example with fixed sizes to make the script work.  -->
            <img id="canvasSource" class="testpic" width="480" height="321" alt="" src="canvas.jpg" title="bryom">

        <!--canvas that is only a dummy to test the script, later the canvas shouldn't be fixed in the html but created by jquery dynamically -->
        <canvas id="area" width="480" height="321" style="display:none"> </canvas>

and Script
    <!-- fill canvas with greyscale version -->
        var canvas = document.getElementById("area");
        var context = canvas.getContext("2d");
        var image = document.getElementsByClassName("testpic");

        context.drawImage(image, 0, 0);

        var imgd = context.getImageData(0, 0, 480, 321); <!--width and height are here only testnumbers because image size may change within the webpage, numbers should be replaced by variables if possible -->
        var pix = imgd.data;
        for (var i = 0, n = pix.length; i < n; i += 4) {
        var grayscale = pix[i  ] * .3 + pix[i+1] * .59 + pix[i+2] * .11;
        pix[i  ] = grayscale;   // red
        pix[i+1] = grayscale;   // green
        pix[i+2] = grayscale;   // blue
        // alpha
        }
        context.putImageData(imgd, 0, 0);
    };

<!-- Hover Image shows canvas with black and white -->

        $(document).ready(function(){
            $("img").mouseover(function(){
            $("canvas").css("display", "block");
            });

            $("img").mouseout(function(){
            $("canvas").css("display", "none");
            });
        });

so far, so good. All the tutorials and descriptions I found (and understood) had two problems:

*

*I am working with wordpress, so I can't really add the canvas-container into the html-code myself. I have to create the canvas dynamically with jquery, dependent on how big the picture on the currentpage is and what kind of position it has inside its container.

2.nd problem is that they create the canvas in the normal flow, which means next to the original image. I would love the canvas to lie directly on the original image, but I have no idea how to read out size and position of the original image and use them for creating the canvas.
I guess this must be very easy, but I can't really focus out how exactly the things have to be connected in the code.
I have really no idea how to start with this and I couldn't find something as simple as I need it.
Except
var img = document.getElementByClassName("testpic");
var canvas = document.createElement("canvas");

all the beginning is missing. How do I ask for the image size of any picture with the class "testpic"? How do I get the position? How do I use this creating the canvas in jquery?
I would be really thankful for help as this is my first trial to find help by a forum like this!! Thanks a lot for any help

A: To create the canvas, I recommend you to use this open source library http://georgealways.github.com/gee/
Getting the image resolution is a bit more complicated and depends on the browser. Discussed already on this page: Get the real width and height of an image with JavaScript? (in Safari/Chrome)
My suggestion, however, is not to use the original image and not to put a canvas over it. That's just nonsense: try instead just using a single canvas that, on g.mouseover, makes your image b/n
First, put this code on the html page to create the canvas
<script type="text/javascript" src="MYAPP.js"></script>
<script type="text/javascript" src="gee.js"></script>

window.onload = function() {
var g = new GEE( { width: 600, height: 480 } );
document.body.appendChild( g.domElement );
MYAPP(g);
}

then, create the MYAPP.JS file and make it something like this
function MYAPP(g) {

// TODO:
// print out the image

g.mouseover = function() {

// TODO:
// clear screen and
// print out the b/n image

}}

Whenever working on the MYAPP.JS file, don't forget that to access the canvas and the context you'll have to do it this way
// Access the canvas (you'll probably don't need this)
g.domElement

// Access the context (you'll use this a lot)
g.ctx


On Monday, the Pennsylvania's West Nile Control Program and Department of Health announced that more mosquitoes tested positive for the West Nile Virus in Schuylkill County.
Last week, it was announced that mosquitos had test positive for the West Nile Virus in the city of Pottsville.
On Monday, July 16, 2018 it was announced that mosquitos have now test positive in Ringtown, Mahanoy Township, West Mahanoy Township, and Schuylkill Haven.
No humans, birds, or animals have tested positive for the virus.
Mosquito-Proof Your Home - Install or repair screens on windows and doors to keep mosquitoes outside. Use your air conditioning, if you have it.


Frais Figure Of Vogue Fashion Online Shopping – From the thousand Pics on-line in relation to vogue fashion online shopping, we filter the best series with finest resolution just for you, and of course,this pictures is regarded as one of graphics selections within our wonderful photographs gallery concerning Frais Figure Of Vogue Fashion Online Shopping. I'm hoping you will think it's great.
written simply by admin at 2019-03-17 22:15:00. To find out almost all pictures with Frais Figure Of Vogue Fashion Online Shopping photos gallery you need to heed that our web URL.


text:
Have You Felt Like Giving Up Lately?: Finding Hope and Healing When You Feel Discouraged
By David Wilkerson
Read by Kirby Heyborne
David Wilkerson Tantor Audio 9780800723392
5.18 Hours • 12/24/2019 • 12/24/2019 • 12/24/2019 • 1
3 Formats: Digital Download
3 Formats: CD
3 Formats: MP3 CD
or 1 Credit
$12.99 With Membership: Learn More
Everyone experiences times of sadness, trials, and pain. But what happens when grief and depression seem so overwhelming that we feel like giving up? As the founder of World Challenge, Inc., David Wilkerson worked with troubled people of every type: students, parents, alcoholics, delinquents, businessmen, pastors, teachers, and drug addicts. In this hopeful and encouraging book, Wilkerson examines the universal problem of discouragement. He shows listeners how to let God heal their wounds, restore their faith, and give them genuine, lasting peace.
Author Bio: David Wilkerson
David Wilkerson (1931–2011) was an Assembly of God pastor who established Teen Challenge, an organization centered around the needs of converts of his successful street evangelism ministry in New York City. As part of Teen Challenge, he also established the Bible Institute, which evolved into the international organization known as World Challenge. David also cofounded Times Square church in New York City. Of his many books, perhaps the most influential has been The Cross and the Switchblade, which sparked interest about baptism in the Holy Spirit from both Protestant and Catholic circles.
Format: Digital Download Format: CD Format: MP3 CD
Available Formats : Digital Download, CD, MP3 CD
Category: Nonfiction/Religion
Publisher: Tantor Audio Publisher: Tantor Audio Publisher: Tantor Audio
CDs: 4 CDs: 1
ISBN: 9781494547424 ISBN: 9798200271832 ISBN: 9798200271849


text:
LARYSA JAYE
Singer Songwriter, Larysa Jaye, brings a twist to
the Country/Americana Music scene.
Larysa Jaye beautifully delivers a powerful message with her release of "Birmingham (Side by Side)"
The sizzling southern artist releases soulfully sensitive new single, "Birmingham (Side by Side)," as a prayerful tribute to civil rights era tragedy.
CLICK HERE TO PREVIEW
Larysa Jaye is a performer of enormous talent, heart and spirit. Her music defies categorization, and no wonder; she drives that beautiful voice anywhere…authentically into almost any musical genre because she was steeped in all of them. And then there's Larysa's utterly superb songwriting. Uplifting, sometimes wry and unflinching, soulful, thought provoking and always eloquent.
She is a joy!
Ellen Pryor - Director of Communications, Frist Art Museum
Larysa is an artist I love to book because she is always up for the task! Large or small, she comes with a God-given gift of a voice that always moves the audience!
Eric Holt - Co-Founder, LoveNoise
Larysa Jaye has struck gold again!
Listen to her take on this John Denver classic
Larysa's fearlessness to tackle any genre has led her here. A failed song request has turned into a single release. Always a crowd favorite, and now you can listen to it at the push of a button. Specifically, the one below. Enjoy!
Join our mailing list for the latest news and a free download.
©2023 Larysa Jaye . All Rights Reserved


text:
M&SC 13
MONTREAL & SOUTHERN COUNTIES 13
(Posted here with permission of Joseph Testagrose)
In 1924, the Osgood Bradley Car Company of Worchester, Massachusetts built five cars for Morris County Traction of Morristown, NJ. In 1928, these five cars were acquired by the Oshawa Railway where they were numbered second 100 to 104. In February 1940, they were transferred to the Montreal & Southern Counties where they were renumbered 11-15. All five were scrapped in 1956.
M&SC 13 is seen parked in the St. Lambert Yard. The date is unknown.
M&SC PAGE | HOME PAGE


text:
FST grad and post-doc is off to OSU as Assistant Professor
Dr. David Dallas is off to Oregon State University to become an Assistant Professor of Nutrition in the College of Public Health and Human Sciences, starting in January, 2016.
Dave was a graduate student at UC Davis in the Nutrition Graduate Group, working under Professor Bruce German. For his post-doctoral fellowship, Dave was in the Food Science Department and mentored by Drs. Daniela Barile, Bruce German, David Mills, Carlito Lebrilla and Mark Underwood. As a graduate student and as a post-doctoral fellow, Dave's work focused on examining how milk proteins are digested in infants. During this work, he assembled novel mass spectrometry techniques to assess the thousands of unique protein fragments released across digestion. His work also revealed that milk proteases begin to digest milk proteins within the mother's mammary gland and continue to aid in digestion within the infant.
Dave's work at OSU will be funded by the NIH R00 Early Independence Award and will focus on examining protein digestion in infants. Dave's work will be expanding to examine how different amounts of dietary protein, protein sources and food processing treatments affect digestion and how this can alter the gut microbiome, the microbial metabolome and gut tissue health.
Dave would like to thank his many mentors at UC Davis and the Food Science Department for making this work possible!
Congratulations to Dr. Dallas!
Alumni Making News


text:
25+ Steve Irwin Death How Did He Die PNG
By December 15, 2020 Uncategorized No Comments
25+ Steve Irwin Death How Did He Die PNG. Steve irwin was killed by a stingray at batt reef near port douglas, while shooting the documentary ocean's deadliest. Steve irwin was killed in september 2006 while filming for a documentary project after a stingray barb went through his chest.
Steve Irwin S Widow Says She Hasn T Dated Since His Death Abc News from s.abcnews.com
On september 4, 2006, international news declared the death of steve irwin from a stingray attack. How did steve irwin die? Before we dive into the detailed facts that cameraman.
There, he partook in daily duties of animal.
Many aussies will remember the moment when television icon, steve irwin, died in 2006 from a stingray barb through his heart. Steve irwin, in full stephen robert irwin, (born february 22, 1962, essendon, victoria, australia—died september 4, 2006, off the coast of port douglas irwin recorded some of his exploits on tape using a video camera mounted on a tripod. How did steve irwin die? That was tough to read.
Source: home.bt.com
But here's the kicker for steve irwin's death:
Source: upload.wikimedia.org
Steve irwin was born in essendon in melbourne on february 22, 1962 and shared the same birth date with steve irwin was involved in the running of the park and was involved in several aspects of how it his death.
Source: static2.stuff.co.nz
It's a huge loss to australia, australian prime.
Source: media2.s-nbcnews.com
Steve irwin is an australian born wildlife conservationist remembered for his rugged appearance and overt now this is the story all about how my life got flipped, turned upside down and id like to take a he looked at me square and shot the barb through my chest and now i'm dead in the ocean next.
Source: bornrealist.com
Steve irwin died on september 4, 2006, aged 44, while filming at what have steve irwin's children bindi and robert said about his death?
On september 4, 2006, international news declared the death of steve irwin from a stingray attack.
He shared the love for he shared the love for animals all his life, stemming from being raised at the queensland reptile and fauna park.
Source: static3.therichestimages.com
But do you know how he actually die?
Download Bruna Tenorio Pics
18+ Emma Watson Belle And The Beast Background
View Emma The Promised Neverland Orange Aesthetic Background


Calling all you beginner sailors, "rusty" sailors, those looking for more experience …. but in a group and with coaching from our more experienced club members.
Would you like to join us for one or more evenings?
Our intrepid participants had a ball last year, so think about it whether you have never sailed before and want to try it (go out with one of our experienced sailors) or you have your own boat (or access to one) and just want to get some practice in. You do not have to own a boat to get involved.
Patrol boat(s) and our volunteers will be watching over and supporting you.
You will need to be rigged and ready to launch for 7.00pm (we can help rig, but everyone needs to be there at 6.30pm).
We will have the bar open (for sailors and for those who just want to pop in), and will probably have food available, but you will need to pre-order (information to follow).
Previous Article New Website Launched!


text:
Advent Blog
Patronal Festival: sermon
It was a joy for us to welcome Fr George Westhaver as our preacher on St Michael's Day. Fr George is Principal of Pusey House, Oxford, and has kindly provided the text of his sermon to be displayed here.
Pusey House was founded in 1884, two years after E B Pusey's death, as a house of sacred learning. Pusey House is a place which seeks to hold together worship and study in the context of a community life which shapes disciples of Christ for service in Church and world – a house of sacred learning, a centre of catholic life. Pusey was Regius Prof Hebrew and a Canon of Christ Church from 1828 to his death in 1882. He is known especially as a leader of Oxford Movement, that great revival of catholic life in Church of England centring on Oxford in 1830s and afterward. Pusey wrote great tracts and sermons on our dying and rising with Christ in baptism, and about the gift of Christ himself in sacrament of his body and blood. He had a vivid sense of our sharing as members of body of Christ in nothing less than divine life, our being 'In-Godded', 'Deitate'. For all his great learning and holiness of life, he could relate easily and simply to children. He had a vivid sense of the wonderful mystery that the angels of God's little ones always behold the face of our Father in heaven (Matt 18.10).
I will begin by sharing a letter Pusey wrote to a young girl which is on the one hand simple and beautiful, and on the other hand, a letter which invites us to consider more profoundly the nature and work of the holy angels. He helps us to appreciate more of the greatness and reality of the holy angels, to see more in them than religious accessories which are pretty or cute. God has so ordered heaven and earth, the visible and invisible creation, so that angels both minister and serve God in heaven, and watch over and defend us on earth. Angels are living powers and rays of divine light and glory which communicate divine truth and beauty. By this same power, the holy angels fight with us and for us in the struggles of life.
Near end of his life, on Easter Monday, 1881, Pusey wrote to a little girl named Beatrice to thank her for a painting she made for him of some flowers:
[Dear Beatrice] Your loving little painting reached me this morning. I love flowers very much. They tell one such histories of the love of God. He seems to have given them all that varied beauty for no other end than to give His creatures pleasure … I have often thought that they must be for the Blessed Angels to gaze upon and thank God for. The Daisy, as it spreads itself out as wide as it can, seems to be drinking in the love of Heaven; and the Rose, which opens itself to that glow from above and gives out all its fragrance, seems to be giving back love for love. It gives back all which it has in return for the warmth which opens it.[1]
'I have often thought that they must be for the Blessed Angels to gaze upon and thank God for.'
The great Russian theologian Sergei Bulgakov wrote one of the great works of the 20thc on angels. Expelled by the Bolshevik gov't, Bulgakov moved to Paris in 1925. Ayear later when he was 54, he was very sick, hovering between life and death. At that time, he heard the voice of his guardian angel with him, 'I/he was not alone, but together with my/his other I/self', his guardian angel. He understood himself to be summoned back to life, and slowly recovered.[2]
Bulgakov sees in the beauty which Pusey describes, in the ordinary-extraordinary beauty of flowers, as the manifestation of the beauty of the angels, who robe the world with beauty:
'Is it not by angelic power implanted in them …[3]that flowers blossom. Is it not by their guardians that all forms of beauty, from the lowliest animal to the human body, are robed with beauty? … The whole beauty of the world is nothing other than a ray of light in heaven, the transparency of the angelic world for our sake.'[4]
The prophet Daniel has a vision of this angelic world. The 'ancient of days' is seated on a throne of angels, 'fiery flames' with wheels of 'burning fire'. 'A stream of fire issued and came forth from before him; a thousand thousands served him, and ten thousand times ten thousand stood before him'
What keeps the thousand thousands enrapt? Pusey and Bulgakov marvel at the ordinary-extraordinary beauty of flowers. But in God, the angels see all the beauty of all the flowers which have ever been and will be, and infinitely more.
Whatever we have known and seen of God's beauty, and goodness, and truth, whatever beauty we have heard in music or songs which delight us, whatever beauty we see in great sportsmen, whether playing rugby or cricket or football, whatever real truth we find in study or in works of art, whatever heroic examples of sacrifice and love have inspired us, all of this inspiring beauty, truth or goodness are only pale reflections of unsurpassable beauty which the angels see who gather around the throne in the book of Daniel.
The angels do not just see this beauty, God has so ordered the world, 'a wonderful order' that it is the work of the angels to communicate the divine beauty which they see to us: 'The whole beauty of the world is nothing other than a ray of light in heaven, the transparency of the angelic world for our sake.'[5]
Whatever beauty we see in the sweetest face of a dear child or in a mountain vista, is the 'the shining of an uncreated light'[6], the stream of angelic fire coming forth from the throne and giving life and robing with beauty all that is alive with the life of God.
There is a sculpture in Oxford which expresses the work of the angels in a more scientific form. Above the entrance to the museum of natural history there is a seated angel. At first glance, it looks like the angel is holding a book in one hand and a round disk, a symbol of the world in the other. However, the circle which the angel holds is not a symbol of the world, but rather is a dividing cell.
This image of the angel holding a cell, a symbol perhaps of the building blocks of biological life, is one way of expressing what the medieval theologians saw when they described angels as the principles or laws by which God governs reality. Taking the sculpture as a guide, we could say that the scientist who searches for the order of things or the laws which govern the division or multiplication of a cell they are investigating the work of the angels.
The fact that we can investigate and describe the powers and processes of biological life makes those powers no less a marvel, no less an expression of the one source of all that is, a manifestation of the streams of fiery energy and life pouring out from the heavenly throne.
The angels who appear with wings or wheels or streams of fire are symbols of the dynamic power and forces which, according to wisdom of God, constitute and order created world.
In our worship this morning, we gather with the thousand thousands before the heavenly throne. The song which we sing is the song of the angels, Holy, Holy, Holy. We worship God the Holy Trinity who gives love for love in flowers and in divine-human world, we worship the glorified Son of God enthroned in heaven and present on the altar in the precious gifts of his body and blood. In him all things hold together, from the lowest sub-atomic particles and the dividing cell to the highest heavens.[7]In joining our voices with the voices of the angels we worship the love manifest in the sacred humanity of our Saviour, and we adore the fountain and source of all the beauty and goodness which has ever delighted us and fed us: Lord God of hosts,of thrones, dominions, principalities, and powers, of angels and archangels, cherubim and seraphim, heaven and earth are full of your glory, from the highest to the lowest, visible and invisible.
The divine beauty and goodness is not flimsy and weak, but strong and powerful. In the reading for the book of Revelation we see in there the angels fighting for us and alongside us in the struggles of life:
Now war arose in heaven, Michael and his angels fighting against the dragon; and the dragon and his angels fought, 8 but they were defeated and there was no longer any place for them in heaven.
This is a passage with many layers of meaning. We have here a description of something which has taken place in the past, which is also a present reality, and a battle which will be fought.
Most theologians describe this battle as a part of the same battle in which the incarnate Son of God fights for us in his cross and passion, the same war, but a different front. As Christ conquers Satan on the cross in the human world, in earth, so at the same time, in heaven, does his captain Michael fight against the power of un-love and evil in the fallen angel Lucifer or Satan. In some mysterious way Michael and his angels share in the danger faced by their Lord – 'they loved not their lives even unto death' – and their victory is secured by the victory of Christ – they conquer 'by the blood of the Lamb'.[8]
The battle also describe a struggle which continues in the life of the Church, where the rebel angels who were thrown down from heaven still harass and attack the servants of God. They have lost, but there is still a sting in the dragon's tail. Turned away from the divine life, the lives of Satan and the fallen angels are only parasitic, the feed on and corrupt the life and goodness which comes from God. We know this corruption all to well from the inside, and how we can mar and damage a gift of beauty or love.
Michael appears throughout Scripture as a warrior angel protecting God's people. Perhaps it is Michael also who rolls away the stone from the tomb on the 3rdday, sharing in the victory of his Lord over death, and it may be Michael who is there with the apostles, and perhaps the Archangel Gabriel, on the day of the Ascension.[9] In the struggle with temptation and with everything that attacks the love, the beauty, and the goodness of God, we are not alone. We may feel lonely, profoundly lonely and weak.
And yet, at the same time, God's holy angels fight alongside us. God has so constituted and ordered the world that he gives us not only a participation in the divine life, making us temples of the holy Spirit and heirs of heaven, but he also gives us the angels to fight with us and for us against the powers of un-truth, un-love, and ugliness wherever we find them, within us as much as around us.
Every moment, an angels stands before God with you on his heart day and night – an angel in perpetual prayer for you.[10]We are surrounded by a great cloud of witnesses: angels, archangels and all the company of heaven. By the prayers of St Michael and All the Angels may the Lord in his mercy save our souls, and give us a share in his victory, by the ministry of God's Holy angels, may we delight in his beauty and truth and goodness.
[1]Liddon, Life of Pusey, iv, p 374. '…You, my very dear Beatrice, are the rosebud which no force could open (as children sometimes try to force an opening rose with their little fingers and only spoil it) but which the glow of God's love will open as time goes on, more and more. And the white of the lily of the valley tells of purity, and its low-hanging head of tenderness and humility. And then by the name of that lovely flower the Forget-me-not God tells you Forget not Me ….For God will be as much your own as if He had never made Angel or Archangel, or Cherubim or Seraphim: quite your own; quite belonging to your own individual tiny self: for St. Paul says, 'Who loved me and gave Himself for me,' as if there had been no other….'
[2]Bulgakov, Jacob's Ladder, trans. intro, xi
[3]…in keeping with the will of God…
[4]Bulgakov, Jacob's Ladder, p 86.
[6]David Bentley Hart, 252, Beauty of the Infinite. Augustine: 'The beauty of creation is a proclamation of divine beauty'. Hilary of Potiers: God who is all beauty reflected in the beauty of his creation, David Bentley Hart, 252, Beauty of the Infinite. 'Creation's being is God's pleasure, creation's beauty is God's glory; beauty reveals the shining of an uncreated light…this beauty of the Trinity, this orderliness of divine perichoresis, is the very movement of delight, of the divine persons with one another, and so the analogy that lies between worldly and divine beauty is a kind of analogia delectationis….a Taboric effulgence, upon all things' – Reference here to the Transfiguration, when our Lord's clothes and body shone with the uncreated light before Peter and James and John.
[7]Col 1:55 ff:'He is the image of the invisible God, the first-bornof all creation; 16 for in him all things were created, in heaven and on earth, visible and invisible, whether thrones or dominions or principalities or authorities—all things were created through him and for him. 17 He is before all things, and in him all things hold together. 18 He is the head of the body, the church; he is the beginning, the first-born from the dead, that in everything hemight be pre-eminent. 19 For in him all the fulness of God was pleased to dwell, 20 and through him to reconcile to himself all things, whether on earth or in heaven….'
[8]Bulgakov sees here battle which took place before the foundation of the world when the great angel lucifer, the devil, rebelled and tried to take God's place.
[9]These are Bulgakov's ideas.
[10]This paragraph inspired by Fr Christopher Snook and using his words. Deo Gratias.
Luke Demetri: Our New Assistant Curate
Organ Recitals: Autumn 2020
Welcome to Fr Nigel
Vicar: Fr Tim Pike CMP
020 8686 9343 |
fathertimpike@hotmail.com
Assistant Priest: Fr Nigel Palmer SSC
nigel1palmer@btinternet.com
Parish Office
michaels.church@btinternet.com
St Michael and All Angels with St James
7 Poplar Walk
CR0 1UA
Address: 7 Poplar Walk, Croydon CR0 1UA
About us Who's who Find us Our History Pastoral Assistants Christian Learning Weekly Notices
Worship Regular Services Special Services Baptisms Weddings Funerals
Community Where to get help Croydon College Lunar House Homeless Shelter
Music Services Music Director of Music Recitals The Willis Organ
Contact us Hall Hire Hire The Church Car Parking


"There is therefore now no condemnation for those who are in Christ Jesus." — Romans 8:1 Shame is an assault on the core of who we are. It assassinates our character, minimizes our worth, and dashes our hope. Like Adam and Eve, we often hide shame, but hiding never heals it. Left unattended, shame can develop into a crippling reality that paralyzes us. Like an infectious disease, shame impacts everyone . . . but not all shame is bad. Shame can either be an oppressive and powerful tool of worldly condemnation or a source of conviction that God uses to bring his people back to himself. Having the discernment to know the difference and recognize shame in its many forms can change the course of one's life. In a transparently honest style, Pass shares of her experience dealing with shame after learning that her former husband was a sexual offender. Having lived through the aftermath, she leads you into God's Word where you will see for yourself that God is bigger than your pain, shame, mistakes, and limitations. Shame Off You shares how freedom can be found in choosing to break the cycle of shame by learning from the past, developing healthy thinking patterns, silencing lies, and overcoming the traps of vanity and other people's opinions.
I am overcome with gratitude that I got to write this book. It further set me free from shame on a whole new level, and the communion with Christ during the writing of it was life-altering as well.
To my sweet Savior, who showed me how to dissolve shame in my life and replace it with unending joy and peace, I pray You are honored in this work.
To my darling husband, my "Bo," who exemplifies what it means to rise above shame. Through you, I finally know what it feels like to truly be loved and cherished. I love you. Thank you for not just bearing the late nights and early mornings but for also encouraging me throughout and being my biggest fan.
To my precious children, who did not get the same level of attention they were accustomed to while I wrote Shame Off You, thank you for being my raving cheerleaders and for listening to me as I read excerpts to you "one more time." You and Dad are my heroes and inspiration.
To my mom, DiAnne, who was there in my most horrific moments of shame, catching my tears and pointing me to Christ, I am eternally grateful.
To my dad, Dorse, who did not judge me when I was broken but came alongside and encouraged me to press on, thank you.
To my dear friends Erin and Jessie, who rooted me on to write this work, thank you for believing in me and the calling of God on my life.
To Jeff Rogers, who mentored and encouraged me to write, thank you for fanning into flame the gift of God.
To the reader, whatever shame you have encountered in this life, may you know how precious you are in the eyes of God and understand the freedom He has called you to, so you may rise above shame and live in victory. I pray this book can serve as an encouragement and manual to help you time and again when shame tries to snuff out joy. You are loved deeply by Your Creator and He is for you.
In a transparently honest style, Pass shares her experience dealing with shame after learning that her former husband was a sexual offender. She leads you into God's word where you will see for yourself that God is bigger than your pain, shame, mistakes, and limitations.
–Kathi Lipp, bestselling author of The Husband Project, Clutter Free, and Overwhelmed.
Denise Pass is an award-winning singer-songwriter, writer/blogger, speaker, and worship leader. She now shares an inspirational message through her ministry, Seeing Deep Ministries, about seeing the deeper truth in God's word when life hurts. Find her online on her website.


There are major wildfires going on in Portugal and apparently the fires are taking advantage of the winds from Ophelia. Gotten bad over there.
Damage looks worse than I expected. Could this be yet another retirement candidate?
Kazmit wrote: Damage looks worse than I expected. Could this be yet another retirement candidate?
Perhaps? I'm thinking this ends up several billion dollars (USD equivalent).
Very stormy night at the moment here in the East of England. Currently 50-60 mph winds Gusting to 70 mph blowing over anything that's not tied down. Hopefully no more injuries or worse.
* Until the eyewall was well established, the intensities are lower than Dvorak suggests due to the fact ASCAT passes were running low.
* The peak intensity - 110 kt - is based on a blend of several analyses showing T5.5 to T6.0, and the ADT was around T5.9 at the time.
* Extratropical transition is placed at 0300Z October 16, which is not at synoptic time, as it still had deep convection and a weak eye at 0000Z but it was gone in the next couple hours.
* The 959 pressure at Valentia was likely a bit east of the true center - at the time it was just offshore from what I could analyze (so the pressure at 1200Z was likely a bit lower, I analyzed it at 954).
Hmm, that would be a good question if this would get retired or not, because it did have significant impact, but it was ET and outside the NHC forecasting zone, so I would think not.
weathaguyry wrote: Hmm, that would be a good question if this would get retired or not, because it did have significant impact, but it was ET and outside the NHC forecasting zone, so I would think not.
The big case against retirement is that the main impact was to a country that isn't even part of RA IV and doesn't sit on the committee.
Agreed... maybe this signals the opportunity for the WMO to add some 'outside members' to the committee... Ireland, Portugal, Spain, Cabo Verde, etc. for when special circumstances arrive such as this.
You do know this is no longer required with any posts, right? The rule has been changed for several months now.
I still do it as courtesy.
Okay, fair enough. Just wanted to be sure you knew of the change.


text:
title: "Python API Tutorial"
nav-title: Python API
nav-parent_id: apitutorials
nav-pos: 10
---
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

* This will be replaced by the TOC
{:toc}

In this guide we will start from scratch and go from setting up a Flink Python project
to running a Python Table API program.

## Setting up a Python Project

Firstly, you can fire up your favorite IDE and create a Python project and then
you need to install the PyFlink package. Please
see [Build PyFlink]({{ site.baseurl }}/flinkDev/building.html#build-pyflink)
for more details about this.

## Writing a Flink Python Table API Program

The first step in a Flink Python Table API program is to create a `BatchTableEnvironment`
(or `StreamTableEnvironment` if you are writing a streaming job). It is the main entry point
for Python Table API jobs.

{% highlight python %}
exec_env = ExecutionEnvironment.get_execution_environment()
exec_env.set_parallelism(1)
t_config = TableConfig()
t_env = BatchTableEnvironment.create(exec_env, t_config)
{% endhighlight %}

The `ExecutionEnvironment` (or `StreamExecutionEnvironment` if you are writing a streaming job)
can be used to set execution parameters, such as the restart strategy, default parallelism, etc.

The `TableConfig` can be used by setting the parameters such as the built-in catalog name, the
threshold where generating code, etc.

Next we will create a source table and a sink table.

{% highlight python %}
t_env.connect(FileSystem().path('/tmp/input')) \
    .with_format(OldCsv()
                 .line_delimiter(' ')
                 .field('word', DataTypes.STRING())) \
    .with_schema(Schema()
                 .field('word', DataTypes.STRING())) \
    .register_table_source('mySource')

t_env.connect(FileSystem().path('/tmp/output')) \
    .with_format(OldCsv()
                 .field_delimiter('\t')
                 .field('word', DataTypes.STRING())
                 .field('count', DataTypes.BIGINT())) \
    .with_schema(Schema()
                 .field('word', DataTypes.STRING())
                 .field('count', DataTypes.BIGINT())) \
    .register_table_sink('mySink')
{% endhighlight %}

This registers a table named `mySource` and a table named `mySink` in the
`ExecutionEnvironment`. The table `mySource` has only one column: word.
It represents the words read from file `/tmp/input`. The table `mySink` has two columns:
word and count. It writes data to file `/tmp/output`, with `\t` as the field delimiter.

Then we need to create a job which reads input from table `mySource`, preforms some
operations and writes the results to table `mySink`.

{% highlight python %}
t_env.scan('mySource') \
    .group_by('word') \
    .select('word, count(1)') \
    .insert_into('mySink')
{% endhighlight %}

The last thing is to start the actual Flink Python Table API job. All operations, such as
creating sources, transformations and sinks only build up a graph of internal operations.
Only when `exec_env.execute()` is called, this graph of operations will be thrown on a cluster or
executed on your local machine.

{% highlight python %}
exec_env.execute()
{% endhighlight %}

The complete code so far is as follows:

{% highlight python %}
from pyflink.dataset import ExecutionEnvironment
from pyflink.table import TableConfig, DataTypes, BatchTableEnvironment
from pyflink.table.descriptors import Schema, OldCsv, FileSystem

exec_env = ExecutionEnvironment.get_execution_environment()
exec_env.set_parallelism(1)
t_config = TableConfig()
t_env = BatchTableEnvironment.create(exec_env, t_config)

t_env.connect(FileSystem().path('/tmp/input')) \
    .with_format(OldCsv()
                 .line_delimiter(' ')
                 .field('word', DataTypes.STRING())) \
    .with_schema(Schema()
                 .field('word', DataTypes.STRING())) \
    .register_table_source('mySource')

t_env.connect(FileSystem().path('/tmp/output')) \
    .with_format(OldCsv()
                 .field_delimiter('\t')
                 .field('word', DataTypes.STRING())
                 .field('count', DataTypes.BIGINT())) \
    .with_schema(Schema()
                 .field('word', DataTypes.STRING())
                 .field('count', DataTypes.BIGINT())) \
    .register_table_sink('mySink')

t_env.scan('mySource') \
    .group_by('word') \
    .select('word, count(1)') \
    .insert_into('mySink')

exec_env.execute()
{% endhighlight %}

## Executing a Flink Python Table API Program

You can run this example in your IDE or on the command line (suppose the job script file is
WordCount.py):

{% highlight bash %}
$ python WordCount.py
{% endhighlight %}

The command builds and runs the Python Table API program in a local mini cluster.
You can also submit the Python Table API program to a remote cluster, you can refer
[Job Submission Examples]({{ site.baseurl }}/ops/cli.html#job-submission-examples)
for more details.

This should get you started with writing your own Flink Python Table API programs.
To learn more about the Python Table API, you can refer
[Flink Python Table API Docs]({{ site.pythondocs_baseurl }}/api/python) for more details.