text:
# Role of diffusion in branching and annihilation random walk models.

@article{dor2004RoleOD,
title={Role of diffusion in branching and annihilation random walk models.},
author={G{\'e}za {\'O}dor},
journal={Physical review. E, Statistical, nonlinear, and soft matter physics},
year={2004},
volume={70 6 Pt 2},
pages={
066122
}
}
• G. Ódor
• Published 10 June 2004
• Physics
• Physical review. E, Statistical, nonlinear, and soft matter physics
Different branching and annihilating random walk models are investigated by the cluster mean-field method and simulations in one and two dimensions. In the case of the A-->2A , 2A--> 0 model the cluster mean-field approximations show diffusion dependence in the phase diagram as was found recently by the nonperturbative renormalization group method [Phys. Rev. Lett. 92, 255703 (2004)]]. The same type of survey for the A-->2A , 4A--> 0 model results in a reentrant phase diagram, similar to that…
8 Citations

## Figures and Tables from this paper

### Single-Site Approximation for Reaction-Diffusion Processes

• Physics
• 2006
We consider the branching and annihilating random walk $$A\to 2A$$ and $$2A\to 0$$ with reaction rates σ and λ, respectively, and hopping rate D, and study the phase diagram in the λ/D,σ/D) plane.

### Crossovers from parity conserving to directed percolation universality.

• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2008
The crossover behavior of various models exhibiting phase transition to absorbing phase with parity conserving class has been investigated by numerical simulations and cluster mean-field method and the resulting models show a diversity within the DP universality class in one dimension.

### Emerging extreme value and Fermi-Dirac distributions in the Lévy branching and annihilating process.

• Mathematics, Physics
Physical review. E
• 2020
The average occupation number distribution is shown to evolve from the standard Fermi-Dirac form to the generalized one within the context of nonextensive statistics.

### Cluster mean-field study of the parity-conserving phase transition.

• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2005
The phase transition of the branching and annihilating random walk with even offspring is studied by N-cluster mean-field approximations on one-dimensional lattices. By allowing the system to reach

### Classification of phase transitions in reaction-diffusion models.

• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2006
A classification scheme of phase transitions in reaction-diffusion models based on the topology of the phase portraits of corresponding Hamiltonians is suggested, which identifies four families of topologically distinct classes of phase portraits stable upon renormalization group transformations.

### Analytic Form of the Quasi-stationary Distribution of a Simple Birth-Death Process

I consider a simple birth-death model with an absorbing state, where the stable fixed point of the corresponding deterministic mean-field dynamics turns into a transient peak of the probability

### On the absorbing-state phase transition in the one-dimensional triplet creation model

• Physics
• 2009
We study the lattice reaction–diffusion model , (‘triplet creation’) using numerical simulations and n-site approximations. The simulation results suggest that the phase transition is discontinuous

## References

SHOWING 1-10 OF 43 REFERENCES

### Field Theory of Branching and Annihilating Random Walks

• Physics
• 1997
We develop a systematic analytic approach to the problem of branching and annihilating random walks, equivalent to the diffusion-limited reaction processes 2A → ∅ and A → (m + 1) A, where m ≥ 1.

### Phase transition classes in triplet and quadruplet reaction-diffusion models.

• G. Ódor
• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2003
It is shown that a parity conserving model 3A-->5A, 2A--> zero in d=1 has a continuous phase transition with different kinds of exponents, in contradiction with the recently suggested implications of a phenomenological, multiplicative noise Langevin equation approach and with the simulations on suppressed bosonic systems.

### Critical behavior of the two-dimensional 2A-->3A, 4A--> phi binary system.

• G. Ódor
• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2004
The phase transitions of the recently introduced 2A-->3A, 4A--> phi reaction-diffusion model are explored in two dimensions and a reentrant phase diagram in the diffusion-creation rate space is confirmed, in agreement with cluster mean-field and one-dimensional results.

### Scale Invariance and Dynamic Phase Transitions in Diffusion-Limited Reactions

Many systems that can be described in terms of diffusion-limited 'chem- ical' reactions display non-equilibrium continuous transitions separating active from inactive, absorbing states, where

### Phase transitions of the binary production 2A-->3A, 4A--> X model.

• G. Ódor
• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2004
This model exhibiting annihilation by quadruplets does not fit in the recently suggested classification of universality classes of absorbing state transitions in one dimension.

### Phase transition of a two-dimensional binary spreading model.

• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2002
Large scale simulations of the particle density confirmed mean-field scaling behavior with logarithmic corrections, interpreted as numerical evidence supporting the bosonic field theoretical prediction that the upper critical dimension in this model is d(c)=2.

### Quantitative phase diagrams of branching and annihilating random walks.

• Physics
Physical review letters
• 2004
It is shown that an absorbing phase transition exists in dimensions d=1 to 6 and argued that mean-field theory is restored not in d=3, as suggested by previous analyses, but only in the limit d--> infinity.

### Multispecies annihilating random walk transition at zero branching rate: cluster scaling behavior in a spin model.

• Physics
Physical review. E, Statistical, nonlinear, and soft matter physics
• 2003
The multispecies annihilating random walk transition found at zero branching rate previously is investigated now concerning the cluster behavior of the underlying spins, and generic power-law behaviors are found, besides the phase transition point, also in the active phase with fulfillment of the hyperscaling law.

### Phase transitions and correlations in the bosonic pair contact process with diffusion: exact results

• Physics
• 2004
The variance of the local density of the pair contact process with diffusion is investigated in a bosonic description. At the critical point of the absorbing phase transition (where the average

### Mean-field theory of the driven diffusive lattice gas.

• Dickman
• Physics
Physical review. A, General physics
• 1988
The nonequilibrium driven diffusive lattice gas is studied by dynamic mean-field theory at the pair and square levels and the present formulation permits study of the original model and arbitrary driving field strength.


text:
# Question 242cf

Jun 6, 2014

$P = \frac{W}{t}$

Power is the rate of energy transfer.

The SI unit for power is the Watt (W).

For example:
A 100 W light bulb is left on for 8 hours overnight, how much energy did the bulb consume?

First we need to convert 8 hours into seconds (SI unit of time):
8 h = 8×3600 = 28800 s

Next calculate the energy transferred:
W=Pt=100× 28800= 2.88×10^6J

That answer is of limited usefulness. Most people don't think in terms of large standard form numbers in their daily life. Energy companies charge people based on how many units of electricity/gas they used. A unit of electricity is 1 kWh (note this is a unit of energy not power).

1 kWh = power rating in kW × time used in hours.

For the lightbulb used overnight in the question above the energy consumption in kWh is:
E=100/1000×8=0.80 kWh#
The bulb consumed just under one unit of electricity, which may cost in the region of 20p.

Really simple with a good simple example here: http://www.bbc.co.uk/schools/gcsebitesize/science/edexcel/generation_transmission_electricity/electrical_quantitiesrev3.shtml

format: plain


text:
# Difference between revisions of "Formal group"

Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
Citable Version  [?]

This editable Main Article is under development and subject to a disclaimer.

## Definition

Let  be a commutative ring. A formal group in one parameter is a formal power series  such that

1.
2.
3.  in
4. There is a series  such that

## Examples

1. The additive formal group:
2. The multiplicative formal group: . In this case, .


text:
• 12
• 12
• 9
• 10
• 13

# boost::lambda

This topic is 3881 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I'm trying to figure out how to use the boost.lambda library, and I'm having some issues, probably stupid ones, but still, issues. In the following code I want to remove all obects from m_devices that only have 1 remaining reference (unique() returns true). Yes, I know that this would be pretty easy, using regular function pointers, and the like, however, I'm trying to learn this library. What am I doing wrong? I would also appreciate any pointers for using boost.lambda Whenever I compile the following code on VS2005 I get the following errors:
Quote:
 Warning 1 warning C4512: 'boost::lambda::identity' : assignment operator could not be generated c:\program files (x86)\boost\boost_1_34_0\boost\lambda\detail\lambda_functor_base.hpp 43 Warning 2 warning C4512: 'boost::lambda::lambda_functor' : assignment operator could not be generated c:\program files (x86)\boost\boost_1_34_0\boost\lambda\detail\lambda_functors.hpp 204 Warning 3 warning C4180: qualifier applied to function type has no meaning; ignored c:\program files (x86)\boost\boost_1_34_0\boost\lambda\detail\lambda_traits.hpp 255 Error 4 error C2679: binary '->*' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion) c:\users\diltsman\documents\visual studio 2005\projects\operationaardvark\socketstream\socketfactory.cpp 14
#pragma once

#include <string>
#include <map>
#include <boost/shared_ptr.hpp>

#include "SocketDevice.h"

namespace Socket
{
class SocketFactory
{
public:
SocketFactory(std::string Host, std::string Port);
virtual ~SocketFactory(void);
protected:
std::pair<std::string, std::string> m_dest;
boost::shared_ptr<SocketDevice> m_device;
static std::map<std::pair<std::string, std::string>, boost::shared_ptr<SocketDevice>> m_devices;
private:
void RemoveUnreferencedSockets(void);
};
};

#include "SocketFactory.h"
#include <boost/lambda/lambda.hpp>
#include <boost/bind.hpp>

Socket::SocketFactory::~SocketFactory(void)
{
}

void Socket::SocketFactory::RemoveUnreferencedSockets(void)
{
std::remove_if(Socket::SocketFactory::m_devices.begin(),
Socket::SocketFactory::m_devices.end(),
boost::lambda::_1 ->* &std::pair<std::pair<std::string, std::string>, boost::shared_ptr<SocketDevice> >::second
->* boost::shared_ptr<SocketDevice>::unique);
}

##### Share on other sites
Here is a short - and probably incomplete - answer (seems like I'm posting a lot of those lately!).

I'm not an expert on the Boost.Lambda library and its usage, but I don't think it can be used as in your example.

Although I haven't studied the implementation, I'm guessing that the Lambda library overloads various operators (==, <, >, =, etc.) for the lambda 'placeholder' type (that is, the type of which e.g. _1 is an instance), and that these operators then return a function object, which is what is actually used by the called function (remove_if(), in your example).

As such, expressions such as _1->SomeFunction(), while admittedly intuitive, are an error (presumably because, before it does anything else, the compiler must attempt to resolve SomeFunction() with respect to the Lambda placeholder type, which it cannot do).

I must stress here that I'm not positive that the above information is correct, but I don't have time to investigate it further at the moment.

Two other quick notes. First, the above issues aside, I'm not sure what you're trying to do there with the third argument to remove_if() (keep in mind that the argument to the functor will be a reference to the container element type). Also, you might check the docs for remove_if(); currently you're ignoring the return value, which probably isn't what you intend.

I lied, there's one more thing: remove_if() cannot be used on sorted associative containers such as map, so in any case you'll need to use some other method to remove the unwanted elements.

##### Share on other sites
Quote:
 Original post by jykHere is a short - and probably incomplete - answer (seems like I'm posting a lot of those lately!).I'm not an expert on the Boost.Lambda library and its usage, but I don't think it can be used as in your example.Although I haven't studied the implementation, I'm guessing that the Lambda library overloads various operators (==, <, >, =, etc.) for the lambda 'placeholder' type (that is, the type of which e.g. _1 is an instance), and that these operators then return a function object, which is what is actually used by the called function (remove_if(), in your example).As such, expressions such as _1->SomeFunction(), while admittedly intuitive, are an error (presumably because, before it does anything else, the compiler must attempt to resolve SomeFunction() with respect to the Lambda placeholder type, which it cannot do).I must stress here that I'm not positive that the above information is correct, but I don't have time to investigate it further at the moment.Two other quick notes. First, the above issues aside, I'm not sure what you're trying to do there with the third argument to remove_if() (keep in mind that the argument to the functor will be a reference to the container element type). Also, you might check the docs for remove_if(); currently you're ignoring the return value, which probably isn't what you intend.I lied, there's one more thing: remove_if() cannot be used on sorted associative containers such as map, so in any case you'll need to use some other method to remove the unwanted elements.

Yeah, your last statement is what I get for leaving my STL reference at work. Hard to find a decent reference.

As for calling a member function from a lambda function, I thought that was possible. From the documentation for boost.lambda:
Quote:
 Member pointer operatorThe member pointer operator operator->* can be overloaded freely. Hence, for user defined types, member pointer operator is no special case. The built-in meaning, however, is a somewhat more complicated case. The built-in member pointer operator is applied if the left argument is a pointer to an object of some class A, and the right hand argument is a pointer to a member of A, or a pointer to a member of a class from which A derives. We must separate two cases: The right hand argument is a pointer to a data member. In this case the lambda functor simply performs the argument substitution and calls the built-in member pointer operator, which returns a reference to the member pointed to. For example: struct A { int d; };A* a = new A(); ...(a ->* &A::d); // returns a reference to a->d (_1 ->* &A::d)(a); // likewiseThe right hand argument is a pointer to a member function. For a built-in call like this, the result is kind of a delayed member function call. Such an expression must be followed by a function argument list, with which the delayed member function call is performed. For example: struct B { int foo(int); };B* b = new B(); ...(b ->* &B::foo) // returns a delayed call to b->foo // a function argument list must follow(b ->* &B::foo)(1) // ok, calls b->foo(1)(_1 ->* &B::foo)(b); // returns a delayed call to b->foo, // no effect as such(_1 ->* &B::foo)(b)(1); // calls b->foo(1)

I was trying to follow their examples, but obviously screwed up somewhere, so if someone could point out my mistake I would appreciate it.

##### Share on other sites
You're missing an address-of operator on boost::shared_ptr<SocketDevice>::unique, but adding it seems to lead to even bigger problems [smile] 3 new errors, only the first 2 relate to the use of boost::lambda though, with the 3rd being because you're trying to use std::remove_if on an associative container.

##### Share on other sites
Quote:
 Original post by joanusdmentiaYou're missing an address-of operator on boost::shared_ptr::unique, but adding it seems to lead to even bigger problems [smile] 3 new errors, only the first 2 relate to the use of boost::lambda though.

Looks like you were right...On both accounts. Now what am I missing? Once I add that & I now get the following errors:
Quote:
 Warning 1 warning C4512: 'boost::lambda::identity' : assignment operator could not be generated c:\program files (x86)\boost\boost_1_34_0\boost\lambda\detail\lambda_functor_base.hpp 43 Warning 2 warning C4512: 'boost::lambda::lambda_functor' : assignment operator could not be generated c:\program files (x86)\boost\boost_1_34_0\boost\lambda\detail\lambda_functors.hpp 204 Warning 3 warning C4512: 'boost::lambda::identity' : assignment operator could not be generated c:\program files (x86)\boost\boost_1_34_0\boost\lambda\detail\lambda_functor_base.hpp 43 Warning 4 warning C4512: 'boost::lambda::lambda_functor' : assignment operator could not be generated c:\program files (x86)\boost\boost_1_34_0\boost\lambda\detail\lambda_functors.hpp 204 Error 5 error C2451: conditional expression of type 'boost::lambda::detail::member_pointer_caller' is illegal c:\program files (x86)\microsoft visual studio 8\vc\include\algorithm 87 Error 6 error C2675: unary '!' : 'boost::lambda::detail::member_pointer_caller' does not define this operator or a conversion to a type acceptable to the predefined operator c:\program files (x86)\microsoft visual studio 8\vc\include\algorithm 1240 Error 7 error C2582: 'operator =' function is unavailable in 'std::pair<_Ty1,_Ty2>' c:\program files (x86)\microsoft visual studio 8\vc\include\algorithm 1241

##### Share on other sites
Quote:
 Original post by DiltsmanAs for calling a member function from a lambda function, I thought that was possible.
Yup, looks like I was wrong about that (as I suspected might be the case). I remember trying that at one point with no success, but maybe I just wasn't doing it right :)

##### Share on other sites
Quote:
 Original post by DiltsmanLooks like you were right...On both accounts. Now what am I missing? Once I add that & I now get the following errors:

Quote:
 Error 5 error C2451: conditional expression of type 'boost::lambda::detail::member_pointer_caller' is illegal c:\program files (x86)\microsoft visual studio 8\vc\include\algorithm 87 Error 6 error C2675: unary '!' : 'boost::lambda::detail::member_pointer_caller' does not define this operator or a conversion to a type acceptable to the predefined operator c:\program files (x86)\microsoft visual studio 8\vc\include\algorithm 1240

These errors are the ones of interest, the 3rd is because it's trying to move 'removed' values to the end of the container (which obviously doesn't make sense or work for associative containers). It looks like the compiler's not seeing the operator() on member_pointer_caller, but why that is I've got no idea.


text:
# Is my back propagation math correct?

I have been working on programming a feed forward neural network that uses stochastic gradient descent and I am still a little confused on all the calculus. To make sure I have the math correct, I am using the following network as an example: Neural network image

The equation for the output of the network should be the following I believe ( s(x) is sigmoid ):

$$s\left(x\right)\ =\ \frac{1}{1+e^{-x}}$$ $$O=s\left(s\left(s\left(Iw_1+1\right)w_2+1\right)w_4+s\left(s\left(Iw_1+1\right)w_3+1\right)w_5+1\right)$$

When I did the math to get the derivative of O with respect to w1, I got: ( d(x) is the derivative of sigmoid ) $$d\left(x\right)=s\left(x\right)\left(1-s\left(x\right)\right)$$

$$d\left(s\left(s\left(Iw_1+1\right)w_2+1\right)w_4+s\left(s\left(Iw_1+1\right)w_3+1\right)w_5+1\right)\cdot\left(\left(d\left(s\left(Iw_1+1\right)w_2+1\right)\cdot d\left(Iw_1+1\right)\cdot I\right)+\left(d\left(s\left(Iw_1+1\right)w_3+1\right)\cdot d\left(Iw_1+1\right)\cdot I\right)\right)$$

I used https://www.desmos.com/calculator to see if it got the same answer for the derivative of O with respect to w1. With all the weights set to 0.5, all the biases set to 1, and the input set to 1, desmos said that the derivative was 0.0014291881022. But my equation gave 0.00571675240882. Is there a mistake somewhere in my math or is some weird thing desmos does? Sorry if I did anything simple wrong or messed up the notation. I am still very new to calculus.

Looks like you're missing some components in the second term. The full expression should be $$\frac{\partial O}{\partial w_1} =d(s(s(Iw_1+1)w_2+1)w_4+s(s(Iw_1+1)w_3+1)w_5+1)⋅[(\mathbf{w_4}d(s(Iw_1+1)w_2+1)⋅\mathbf{w_2}d(Iw_1+1)⋅I)+(\mathbf{w_5}d(s(Iw_1+1)w_3+1)⋅\mathbf{w_3}d(Iw_1+1)⋅I)],$$ with the missing terms in bold.
Since you set all the weights to 0.5 in your check, you'll see that the missing terms $$w_4w_2$$ and $$w_5w_3$$ will both multiply to 0.25. And indeed, your answer is off by a factor of 0.25


text:
# Phylogenetic tree: Wikis

Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.

### Did you know ...

• mathematician Karen Vogtmann co-authored a paper which produced a method for quantifying the difference and computing the distance between two phylogenetic trees?

More interesting facts on Phylogenetic tree

# Encyclopedia

Fig. 1: A speculatively rooted tree for rRNA genes

A phylogenetic tree or evolutionary tree is a branching diagram or "tree" showing the inferred evolutionary relationships among various biological species or other entities based upon similarities and differences in their physical and/or genetic characteristics. The taxa joined together in the tree are implied to have descended from a common ancestor. In a rooted phylogenetic tree, each node with descendants represents the inferred most recent common ancestor of the descendants, and the edge lengths in some trees may be interpreted as time estimates. Each node is called a taxonomic unit. Internal nodes are generally called hypothetical taxonomic units (HTUs) as they cannot be directly observed.

## History

The idea of a "tree of life" arose from ancient notions of a ladder-like progression from lower to higher forms of life (such as in the Great Chain of Being). Early representations of branching phylogenetic trees include a "Paleontological chart" showing the geological relationships among plants and animals in the book Elementary Geology, by Edward Hitchcock (first edition: 1840).

Charles Darwin (1859) also produced one of the first illustrations and crucially popularized the notion of an evolutionary "tree" in his seminal book The Origin of Species. Over a century later, evolutionary biologists still use tree diagrams to depict evolution because such diagrams effectively convey the concept that speciation occurs through the adaptive and random splitting of lineages. Over time, species classification has become less static and more dynamic.

## Types

Fig. 1: Unrooted tree of the myosin supergene family[1]
Fig. 2: A highly resolved, automatically generated Tree Of Life, based on completely sequenced genomes [2][3].
A phylogenetic tree, showing how Eukaryota and Archaea are more closely related to each other than to Bacteria, based on Cavalier-Smith's theory of bacterial evolution. (Cf. LUCA, Neomura.)

A rooted phylogenetic tree is a directed tree with a unique node corresponding to the (usually imputed) most recent common ancestor of all the entities at the leaves of the tree. The most common method for rooting trees is the use of an uncontroversial outgroup — close enough to allow inference from sequence or trait data, but far enough to be a clear outgroup.

Unrooted trees illustrate the relatedness of the leaf nodes without making assumptions about ancestry at all. While unrooted trees can always be generated from rooted ones by simply omitting the root, a root cannot be inferred from an unrooted tree without some means of identifying ancestry; this is normally done by including an outgroup in the input data or introducing additional assumptions about the relative rates of evolution on each branch, such as an application of the molecular clock hypothesis. Figure 1 depicts an unrooted phylogenetic tree for myosin, a superfamily of proteins.[4]

Both rooted and unrooted phylogenetic trees can be either bifurcating or multifurcating, and either labeled or unlabeled. A bifurcating tree has exactly two descendants arising from each interior node, while a multifurcating tree may have more than two. A labeled tree has specific values assigned to its leaves, while an unlabeled tree, sometimes called a tree shape, defines a topology only. The number of possible trees for a given number of leaf nodes depends on the specific type of tree, but there are always more multifurcating than bifurcating trees, more labeled than unlabeled trees, and more rooted than unrooted trees. The last distinction is the most biologically relevant; it arises because there are many places on an unrooted tree to put the root. For labeled bifurcating trees, there are

$(2n-3)!! = \frac{(2n-3)!}{2^{n-2}(n-2)!} \,,\,\text{for}\,n \ge 2$

total rooted trees and

$(2n-5)!! = \frac{(2n-5)!}{2^{n-3}(n-3)!} \,,\,\text{for}\,n \ge 3$

total unrooted trees, where n represents the number of leaf nodes. Among labeled bifurcating trees, the number of unrooted trees with n leaves is equal to the number of rooted trees with n − 1 leaves.[5]

A dendrogram is a broad term for the diagrammatic representation of a phylogenetic tree.

A cladogram is a tree formed using cladistic methods. This type of tree only represents a branching pattern, i.e., its branch lengths do not represent time.

A phylogram is a phylogenetic tree that explicitly represents number of character changes through its branch lengths.

A chronogram is a phylogenetic tree that explicitly represents evolutionary time through its branch lengths.

## Construction

Phylogenetic trees among a nontrivial number of input sequences are constructed using computational phylogenetics methods. Distance-matrix methods such as neighbor-joining or UPGMA, which calculate genetic distance from multiple sequence alignments, are simplest to implement, but do not invoke an evolutionary model. Many sequence alignment methods such as ClustalW also create trees by using the simpler algorithms (i.e. those based on distance) of tree construction. Maximum parsimony is another simple method of estimating phylogenetic trees, but implies an implicit model of evolution (i.e. parsimony). More advanced methods use the optimality criterion of maximum likelihood, often within a Bayesian Framework, and apply an explicit model of evolution to phylogenetic tree estimation.[5] Identifying the optimal tree using many of these techniques is NP-hard[5], so heuristic search and optimization methods are used in combination with tree-scoring functions to identify a reasonably good tree that fits the data.

Tree-building methods can be assessed on the basis of several criteria:[6]

• efficiency (how long does it take to compute the answer, how much memory does it need?)
• power (does it make good use of the data, or is information being wasted?)
• consistency (will it converge on the same answer repeatedly, if each time given different data for the same model problem?)
• robustness (does it cope well with violations of the assumptions of the underlying model?)
• falsifiability (does it alert us when it is not good to use, i.e. when assumptions are violated?)

Tree-building techniques have also gained the attention of mathematicians. Trees can also be built using T-theory.[7]

## Limitations

Although phylogenetic trees produced on the basis of sequenced genes or genomic data in different species can provide evolutionary insight, they have important limitations. They do not necessarily accurately represent the species evolutionary history. The data on which they are based is noisy; the analysis can be confounded by horizontal gene transfer[8], hybridisation between species that were not nearest neighbors on the tree before hybridisation takes place, convergent evolution, and conserved sequences.

Also, there are problems in basing the analysis on a single type of character, such as a single gene or protein or only on morphological analysis, because such trees constructed from another unrelated data source often differ from the first, and therefore great care is needed in inferring phylogenetic relationships among species. This is most true of genetic material that is subject to lateral gene transfer and recombination, where different haplotype blocks can have different histories. In general, the output tree of a phylogenetic analysis is an estimate of the character's phylogeny (i.e. a gene tree) and not the phylogeny of the taxa (i.e. species tree) from which these characters were sampled, though ideally, both should be very close. For this reason, serious phylogenetic studies generally use a combination of genes that come from different genomic sources (e.g., from mitochondrial or plastid vs. nuclear genomes), or genes that would be expected to evolve under different selective regimes, so that homoplasy (false homology) would be unlikely to result from natural selection.

When extinct species are included in a tree, they are terminal nodes, as it is unlikely that they are direct ancestors of any extant species. Scepticism must apply when extinct species are included in trees that are wholly or partly based on DNA sequence data, due to the fact that little useful "ancient DNA" is preserved for longer than 100,000 years, and except in the most unusual circumstances no DNA sequences long enough for use in phylogenetic analyses have yet been recovered from material over 1 million years old.

In some organisms, endosymbionts have an independent genetic history from the host.

Phylogenetic networks are used when bifurcating trees are not suitable, due to these complications which suggest a more reticulate evolutionary history of the organisms sampled.

### The "tree of life"

• Evolutionary history of life - An overview of the major time periods of life on earth
• Life - The top level for Wikipedia articles on living species, reflecting a diversity of classification systems.
• Three-domain system (cell types)
• Wikispecies - An external Wikimedia Foundation project to construct a "tree of life" appropriate for use by scientists

## References

1. ^ Hodge T, Cope M (1 October 2000). "A myosin family tree". J Cell Sci 113 Pt 19 (19): 3353–4. PMID 10984423.
2. ^
3. ^ Ciccarelli, FD (2006). "Toward automatic reconstruction of a highly resolved tree of life." (Pubmed). Science 311(5765): 1283–7. doi:10.1126/science.1123061. PMID 16513982.
4. ^ Maher BA (2002). "Uprooting the Tree of Life". The Scientist 16: 18.
5. ^ a b c Felsenstein J. (2004). Inferring Phylogenies Sinauer Associates: Sunderland, MA.
6. ^ Penny, D., Hendy, M. D. & M. A. Steel. 1992. Progress with methods for constructing evolutionary trees. Trends in Ecology and Evolution 7: 73-79.
7. ^ A. Dress, K. T. Huber, and V. Moulton. 2001. Metric Spaces in Pure and Applied Mathematics. Documenta Mathematica LSU 2001: 121-139
8. ^ Woese C (2002). "On the evolution of cells". Proc Natl Acad Sci USA 99 (13): 8742–7. doi:10.1073/pnas.132266999. PMID 12077305.


text:
1. Other
2. Other
3. find a nonzero vector that is mapped to the origin...

# Question: find a nonzero vector that is mapped to the origin...

###### Question details

Find a nonzero vector that is mapped to the origin by the given matrix:

A = .

I think the wording to the problem is the thing throwing me off. I kinda understand what linear mapping is, but have never done an example.

Thanks!!


text:
# Moving a charge from inf

1. Sep 21, 2007

### indigojoker

Suppose there was a charge +Q located at x=-a and a +Q charge at x=a. If i wanted to bring in a charge of -Q form infinity to x=0, what is the work that I have to do?

just wondering if i have the right expression:
$$V=-\int _{\inf} ^a \frac{1}{4 \pi \epsilon_o } \frac{Q}{r^2}dr + -\int_{\inf}^{-a} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr$$

if i wanted to move the charge at the origin to x=+2a, the work i would have to do:

$$V=-\int _{a} ^{3a} \frac{1}{4 \pi \epsilon_o } \frac{Q}{r^2}dr + -\int_{-a}^{a} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr$$

I was also wondering where the charge of the charge i'm moving comes into play, it doesnt seem like it matters for these equations?

also, why is calculating the potential the same as finding the work?

Last edited: Sep 21, 2007
2. Sep 21, 2007

### learningphysics

Yes, those look right to me. But that gives the potential difference between infinity and that point... to get the work... you need to multiply the result by -Q.

3. Sep 21, 2007

### learningphysics

But have you studied potential and energy due to point charges?

You can write the result immediately without integrals...

4. Sep 21, 2007

### indigojoker

how do you do that?

5. Sep 21, 2007

### learningphysics

The energy of the charge at infinity is 0...

The energy of the charge at x = 0, is just:

$$\frac{kQ(-Q)}{a} + \frac{kQ(-Q)}{a} = \frac{-2kQ^2}{a}$$

I'm using the formula... electric potential energy between two point charges is:

$$\frac{kq_1q_2}{r}$$

So the change in energy is negative. So the charge loses energy... ie: you do negative work on the object...

Last edited: Sep 21, 2007
6. Sep 27, 2007

### indigojoker

something weird happened and i'm not sure if it's supposed to:
$$V=-\int _{\inf} ^a \frac{1}{4 \pi \epsilon_o } \frac{Q}{r^2}dr + -\int_{\inf}^{-a} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr =0$$

I get:

$$V=-\frac{kQ}{a} + \frac{kQ}{a} =0$$

so it takes no work to move the charge there?

7. Sep 27, 2007

### learningphysics

No... you have to be careful about the integrals... if you are integrating along the x-axis...

let's examine the charge at x = a, and the voltage due to that charge. (here r = x - a, where x is the coordinate of the charge being brought in... a is the coordinate of the stationary charge)

$$-\int_{\inf}^{-a} \vec{E}\cdot\vec{dr}$$

this equals:

$$-(\int_{\inf}^{a} \vec{E}\cdot\vec{dr} + \int_{a}^{0} \vec{E}\cdot\vec{dr}+\int_{0}^{-a} \vec{E}\cdot\vec{dr})$$

$$-(\int_{\inf}^{a} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr +\int_{a}^{0} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr +\int_{0}^{-a} \frac{-1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr)$$

see, the last section of that integral... the field is in the opposite direction, so a minus needs to be put in... also the a to 0... and 0 to -a parts cancel each other out... so we end up with the same integral as with the other stationary charge...

I think maybe this integral is problematic because there's a discontinuity when r = 0... but it works out anyway.

8. Sep 27, 2007

### indigojoker

so the potential at x=-a is the same as the potential at x=a?

Last edited: Sep 27, 2007
9. Sep 27, 2007

### indigojoker

$$-(\int_{\inf}^{a} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr -\int_{a}^{-a} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr)$$
$$=-(kQ (-1/a)-kq(2/a))= kQ 3/a$$

maybe i'm just doing the integrals wrong

10. Sep 27, 2007

### learningphysics

The integral from a to 0 has kQ/r^2 inside the integral, but the integral from 0 to -a should have -kQ/r^2 (with the minus sign) inside the integral... the direction of the field has changed from rightward to leftward.

So you can't put it all under the same integral...

11. Sep 27, 2007

### indigojoker

why couldnt i do this:

$$-(\int_{\inf}^{0} \frac{1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr +\int_{0}^{-a} \frac{-1}{4 \pi \epsilon_o} \frac{Q}{r^2}dr)$$

since the field from infinity to zero is the same?


text:
# PLaSK User Manual

#### Page Contents

class plask.flow.EnergyLevelsReceiverCyl

Receiver of the energy levels for electrons and holes in Cylindrical geometry [eV].

You may connect a provider to this receiver usign either the connect method or an assignement operator. Then, you can read the provided value by calling this receiver with arguments identical as the ones of the corresponding provider EnergyLevelsProviderCyl.

Example

Connect the reveiver to a provider from some other solver:

>>> solver.inEnergyLevels = other_solver.outEnergyLevels

Provider of energy levels for electrons and holes: plask.flow.EnergyLevelsProviderCyl

Data filter for energy levels for electrons and holes: plask.flow.EnergyLevelsFilterCyl

## Methods¶

 __call__(…) Get value from the connected provider add_watch(callable) Connect callable to watch receiver changes. attach(source) Attach some provider or constant value to the receiver. reset() Disconnect any provider of value from the receiver.

## Descriptions¶

### Method Details¶

EnergyLevelsReceiverCyl.__call__(mesh, interpolation='DEFAULT')
EnergyLevelsReceiverCyl.__call__(n, mesh, interpolation='DEFAULT')

Get value from the connected provider

Get value from the connected provider

EnergyLevelsReceiverCyl.add_watch(callable)

Connect callable to watch receiver changes.

The callable will be called each time the value received by this receiver changes.

The callable should accept two arguments: the first one will be the receiver and the second one gives information what is changed.

EnergyLevelsReceiverCyl.attach(source)

Attach some provider or constant value to the receiver.

Parameters: source – source provider or value.

Example

>>> solver.inEnergyLevels.attach(300.)
>>> solver.inEnergyLevels(any_mesh)[0]
300.
>>> solver.inEnergyLevels(any_mesh)[-1]
300.

>>> solver.inEnergyLevels.attach(other_solver.outEnergyLevels)

Note

You may achieve the same effect by using the asignmnent operator if you put an exisiting provider at the right side of this operator:

>>> solver.inEnergyLevels = other_solver.outEnergyLevels

EnergyLevelsReceiverCyl.reset()

Disconnect any provider of value from the receiver.


text:
Abstract: Measurement theory (= quantum language ) is formulated as follows. $\underset{\mbox{ (=quantum language)}}{\fbox{pure measurement theory (A)}} := \underbrace{ \underset{\mbox{ ($\S$2.7)}}{ \overset{ [\mbox{ (pure) Axiom 1}] }{\fbox{pure measurement}} } + \underset{\mbox{ ( $\S$10.3)}}{ \overset{ [{\mbox{ Axiom 2}}] }{\fbox{Causality}} } }_{\mbox{ a kind of incantation (a priori judgment)}} + \underbrace{ \underset{\mbox{ ($\S$3.1) }} { \overset{ {}}{\fbox{Linguistic interpretation}} } }_{\mbox{ the manual on how to use spells}}$ Measurement theory says that

 $\bullet$ Describe every phenomenon modeled on Axioms 1 and 2 (by a hint of the linguistic interpretation)!
In this chapter, we study Fisher statistics in terms of Axiom 1 ( measurement: $\S$2.7). We shall emphasize
That is,
measurement and inference are the two sides of a coin

Again recall that, as mentioned in $\S$1.1, the main purpose of this book is to assert the following figure 1.1:
This(particularly, ⑦--⑨) implies that quantum language has the following three aspects: $$\left\{\begin{array}{ll} \mbox{ ⑦ :the standard interpretation of quantum mechanics} \\ \mbox{ \qquad (i.e., the true colors of the Copenhagen interpretation) } \\ \\ \mbox{ ⑧ : the final goal of the dualistic idealism (Descartes=Kant philosophy) } \\ \\ \mbox{ ⑨ : theoretical statistics of the future } \end{array}\right.$$


text:
# Lagrange/Hamilton system

1. Mar 3, 2008

### jacobrhcp

[SOLVED] Lagrange/Hamilton system

1. The problem statement, all variables and given/known data

There is a circle without mass, radius r. On the edge of the circle there is a mouse, being forced to move around the circle.

The angle the mouse makes with respect to the centre of the circle is called $$\theta(t)$$

At the same time, the circle is hold at it's place at a point Q on the edge and is rotated around this point Q with constant angular velocity $$\omega$$. Forget about friction.

write down the equation of motion of the mouse.

3. The attempt at a solution

the number of degrees of freedom for this system is 2, $$\omega$$ and $$\theta$$

The Lagrangian L=K-V
$$V=0, K=\frac{m v^2}{2}$$

where $$v=v_c+v_\theta$$
and $$v_c$$ is the velocity of the centre of the circle, and $$v_\theta$$ is the velocity of the mouse around the circle.

$$v_c=\omega l$$
$$v_\theta=\theta' l$$

so $$\delta J = \delta {\int_{t_1}}^{t_2} \frac{m (\omega l + \theta' l)^2}{2} dt = \delta {\int_{t_1}}^{t_2} \frac{m (\omega^2 l^2 + 2 \omega \theta' l^2 + \theta'^2 l^2)}{2} dt = 0$$

Now I have two problems.

1) is this a good way to write down the Lagrangian?
2) how do I get the $$"\delta"$$ inside the integral in a good way?

I suppose after that it's integration by parts and setting the integrand equal to zero.

EDIT: I solved the problem myselve today =)

thanks for anyone who was willing to look at it.

Last edited: Mar 4, 2008


text:
# A problem in Trigonometry (Properties of Triangles) v2

Tags:
1. May 11, 2017

### Wrichik Basu

1. The problem statement, all variables and given/known data

In any triangle ABC, prove that $$a^2 + b^2 +c^2 =4 \Delta (\cot {A}+\cot {B}+\cot {C})$$

2. Relevant equations

3. The attempt at a solution

2. May 11, 2017

### Buffu

What is $\Delta$ ?

3. May 11, 2017

### Wrichik Basu

The area of Triangle, the standard notation used in Trigonometry.

4. May 11, 2017

### Buffu

$\displaystyle {c \over \sin c} = 2R$

Check your work again, you replace $\sin c$ with $a/(2R)$, you should do $c/(2R)$

5. May 11, 2017

### Wrichik Basu

You are wrong: $$\frac {c} {\sin (c)} = 2R$$ not $$\frac {c}{\sin ^2 (c)} = 2R$$

Last edited by a moderator: May 11, 2017
6. May 11, 2017

### Buffu

Yes, that was a typo.

Last edited by a moderator: May 11, 2017
7. May 11, 2017

### Staff: Mentor

No, this is not standard notation for the area of a triangle. Δ is sometimes used for the discriminant of a quadratic equation, but I have never seen it used for area of any kind.

8. May 12, 2017

### Wrichik Basu

Although notations shouldn't very, h ere in India we use Delta to distinguish the area of the triangle only on Trigonometry.

Discriminant is shown by D.


text:
InfoQ Homepage Articles TDD with Selenium and Castle

TDD with Selenium and Castle

This item in chinese

Introduction

Test Driven Development samples are mostly based on very simple unit tests. The challenge is often how to use TDD in a larger application. It will be demonstrated in this tutorial how to build a web application using test first principles using Selenium and Castle.

Preparation

Let's say that a developer needs to write a method using 'test first' for the following feature for an application
manage users (add new, delete, edit user details, list all)

In this test case, each user will have a Full Name, a Username , a Password and an Email, all of which are mandatory.

Basic TDD Steps

Following typical TDD steps:

1. Write the test
2. Make it fail
3. Write the code to make the test succeed
4. Refactor
5. Repeat and start at Step

The First Test

The first test that should be written is a test to add a new user. Test Driven Development is a design technique rather than a testing technique, because when writing the test, we will define how the code/page will work, therefore design.

In order to be able to add a new user a simple form like this is sufficient:

For the functional test the developer needs to open up the add page (prepare stage), fill the fields and save (action stage) and to verify if the user was actually saved (verification stage of the project). In order to do that, the developer needs to update the page and add a new list with the users on the left side, where later the code can verify the user exists after clicking save.

Selenium comes into Action

For a task like this developers need a tool that can actually perform this action on their behalf. Selenium conveniently does this in a browser and this is an excellent open source tool, such that it can be modified to your own needs I necessary. Selenium provides web based functional tests, and also allows the tests to be written as simple html tests, providing an interpreter that runs those actions for the developer:

The great news for developers who want to integrate their tests with a continuous integration tool is that they can write the tests in their own preferred language like C#, Java, VB.NET, Ruby, and Python using an extension of Selenium called Selenium RC.

Using Selenium RC, the .NET version of the test would look like:

Step 2, Making the Initial Test Fail

At this stage the developer hasn't written any code, so the test should fail. First start the Selenium RC server (a small Java server that handles the Selenium commands and transmits them to the browser):

>java -jar selenium-server.jar

Running the test fails as expected:

This is a good sign as this means the test fails when it should. Otherwise the test wouldn't really test anything and would be worthless.

Step 3, Write the Code

On step 3 in the TDD steps, the developer needs to write the code. This means when run against the tests, the code should not fail. Next create the user controller, then view and run the test:

Next create an empty add.vm and rerun the test:

at Selenium.HttpCommandProcessor.DoCommand(String command, String[] args)
at Selenium.DefaultSelenium.Click(String locator)
ManageUsersTests.cs:line 34

Since the error says that it cannot find the elements on the page, we add them in add.vm:

Retest:

.... an error once again since it submits the content on the form to create.aspx and clicking the button on the page has not been implemented yet.

Next add the code to save the data:

Now wait because there does not exist a user class, the list action or the database.

TDD-ing the Layers under the Presentation Layer

In order to build the code the developer needs to build it using 'test first'. Although in some cases this isn't really necessary since ActiveRecord is already quite well tested and it is also covered by the functional test. It is still demonstrated to show how far more complicated situations should be handled.

Below is the test, which is not a functional test but is an integration test, a unit test that also uses the database):

Test if it fails. In fact it does even not compile so the first thing would be to create a User class, with empty methods to force the code to compile:

Now, run the test:

Castle.ActiveRecord.Framework.ActiveRecordException: An ActiveRecord class (UserManagement.Model.User) was used but the framework seems not properly initialized. Did you forget about ActiveRecordStarter.Initialize() ?

at Castle.ActiveRecord.ActiveRecordBase.EnsureInitialized(Type type)
at Castle.ActiveRecord.ActiveRecordBase.Save(Object instance)
at Castle.ActiveRecord.ActiveRecordBase.Save()
at MRProjectTest.Database.UsersDataAccessTests.TestSaveNewUser()
in UserDataAccessTest.cs:line 23

The error indicates the User class is not initialized in ActiveRecord, for that instance adapt the test thus:

Add the appropriate attributes for ActiveRecord and the constructors and by reruning the test. Now a corresponding database table is missing, but that is quickly remedied by adding the following line in the test:

ActiveRecordStarter.CreateSchema();//create the database schema

After running the test the database table was created, but there is still a problem:

System.NotImplementedException: todo

at UserManagement.Model.User.Find(Int64 id) in User.cs:line 72
at MRProjectTest.Database.UsersDataAccessTests.TestSaveNewUser() in
UserDataAccessTest.cs:line 41

Finish implementing the Find method in the User class:

 public static User Find(long id) { return (User) FindByPrimaryKey(typeof(User),id,false) }

Finally a database test that works!

Top-Down TDD Approach

Usually tests like this one aren't really required, for the two reasons mentioned earlier but it was also done so that the flow is understood in a test first vertical development environment for a n-tier application.

Back to the Functional Test

Now that the User class exists and the database access works, it is time to continue work on the presentation layer.

Implement the list action and view:

 public void List() { PropertyBag["users"] = User.FindAll(); }

Create a list.vm:

For the view a GridComponent could have been used. Now running the test the developer should see a working UI Test for the first time.

Edit functionality

Next there is a need to add the edit user functionality to the site. The functionality will flow like this: on the list of users page each user will have an edit link, which once clicked upon will transfer the user to editing where the class can modify the user details. When the form is saved the user is sent back to the list. Now write the test:

A User is added to the database so when the list page is opened, there is something to edit. There is still a problem. If the test is run twice the user will be inserted twice in the database. In order to avoid this potential error do the following:

Running all the tests, the edit test now fails:

at Selenium.HttpCommandProcessor.DoCommand(String command, String[] args)
at Selenium.DefaultSelenium.Click(String locator)
at MRProjectTest.Functionals.Selenium.ManageUsersTests.TestEditUser() in
ManageUsersTests.cs:line 28

Edit the action in the controller:

 public void Edit(long id) { PropertyBag["user"] = User.Find(id); }

Now edit the view for this action: edit.vm

Since the value will be saved in the update action we'll also have:

 public void Update([DataBind("user")] User user) { user.Update(); RedirectToAction("list"); }

Success!!

Begin Refactoring

There are a few areas of opportunity for refactoring that can be made. First, the TestAddNew and TestEdit methods are almost similar and:

ALSO:

Running the tests, they should all still work. Now go further into the views, which have a similar problem: add.vm and edit.vm are almost identical. Separate the common part into _form.vm. Running the tests still confirms the fact that the application is passing tests:

For delete, use the same test first principles. For the data validations or any other functionality the user will be able to use, add new tests, then finish by adding the code to make them pass those tests.

Conclusion

This is an example of designing an application with TDD using a method called incremental architecture. In the actual architecture of the system the architect and developer need not take a month in advance for design. The architecture and design is constructed as the code is written and tested. In this manner changes are very easily made since continuous refactoring is done to the code to make it better, all provided by TDD principles and using 'test first'.

Resources

1. Selenium - http://www.openqa.org - open source web functional testing tools
2. Castle Project (MonoRail and ActiveRecord) - http://www.castleproject.org/ - open source lightweight ASP.NET/ADO.NET alternative

Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

• TDD

by Thamaraiselvan Poomalai /

• Re: TDD

by Deepa Jain /

• Firefox and HTTPS plug-in problems?

by Frank Cohen /

• Re: Firefox and HTTPS plug-in problems?

by Patrick Lightbody /

• Great tutorial but source code link's broken

by Stefan Marev /

• TDD

Your message is awaiting moderation. Thank you for participating in the discussion.

TDD is always healthy for all projects as almost all projects deploy different version/variations of frameworks, drivers etc in production than what they started for development. Also, in typical infrastructure, there are always one after other upgrades (Service Packs, new versions, new softwares etc). TDD will reduce stress of development team to large extend in above scenarios. But all softwares are ready for TDD?, Current BPM tools are not test friendly.

• Firefox and HTTPS plug-in problems?

by Frank Cohen /

Your message is awaiting moderation. Thank you for participating in the discussion.

Selenium looks like a very nice plug-in to help make test script creation easy. I maintain the TestMaker open-source SOA test automation tool and we long ago embedded a branch of the MaxQ proxy recorder to make script creation easy. Recording proxy servers work well for HTTP but require a lott of extra "stuff" to work with HTTPS. One of our users recommended we write a FireFox plug-in like Selenium and he added that Selenium was encountring problems with HTTPS too. Is there anything too that?

-Frank Cohen
www.pushtotest.com

• Re: Firefox and HTTPS plug-in problems?

Your message is awaiting moderation. Thank you for participating in the discussion.

Frank,
We (the Selenium guys) actually solved HTTPS a couple of months ago, but we haven't gotten off our lazy butts to put out a release. We're narrowing in on a single "mode" of Selenium RC that can handle all cross-domain and SSL traffic, becoming the one-stop shop for web testing.

I'd love to chat with you some more about Selenium if you'd like. Feel free to email me at plightbo@gmail.com.

Patrick

• Re: TDD

by Deepa Jain /

Your message is awaiting moderation. Thank you for participating in the discussion.

Wat if I am not using .NET .Can this be done using simply HTML If Yes then plz tell me

• Great tutorial but source code link's broken

by Stefan Marev /

Your message is awaiting moderation. Thank you for participating in the discussion.

Great tutorial. I know it's been a while since the article was published but the download source code link is broken.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
Country/Zone:
State/Province/Region:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.


text:
# Usage Notes¶

## Minimum Requirements¶

At the minimum, FLYNN requires a density file and a the connection table of the ligand - usually derived from a supplied molecule file e.g. .pdb, .sdf, .mol2, .smi. FLYNN automatically searches the density for volumes of unmodeled density that are similar in size to the input ligand. Because of this it is highly recommended that a protein is also input to FLYNN. This makes the job of locating the ligand density less prone to false positives.

Based on analyzing several hundred protein/ligand combinations, the best way to use FLYNN for ligand fitting is described as follows (of course your mileage may vary):

• Always use a protein:

The protein is used to identify modeled density where the ligand cannot be placed. Without this, FLYNN will identify many candidate locations for placing the ligand that will need to be analyzed.

• Use difference maps when appropriate:

The reflection data should be refined without a previous ligand conformation or generated without the ligand present. While in many cases the same result will be generated, if the ligand is fit to data refined with a previous ligand conformation, FLYNN may be biased towards the density modified by the pre-existing ligand conformation.

• use fragment mode for fitting fragments

If you have an input cocktail, use the -fragment flag. This option simultaneously fits all the cocktails against density and sorts them by best fit.

## Types of input ligands¶

Not all ligands can be successfully fit by FLYNN. Such types include large polypeptides or proteins, very flexible molecules, or simply molecules that contain atoms that are not present in the MMFF94s force-field.

Perhaps the most important property is rotatable bond count. Although FLYNN may be able to generate conformers for molecules with more than 20 rotatable bonds, the results of such an exercise would be dubious at best and should be taken with a grain of salt.

FLYNN will automatically check for unhandled atom types, but will gladly try and fit large molecules or proteins that contain many rotatable bonds usually with disappointing results.

Note

Dangers of PDB format for ligand input Many crystallography packages do not enforce writing out connection table or bond order information when outputting pdb files, or worse, strip them out. If bond distances are not correct FLYNN’s attempt to automatically assign bond orders and atom types can be suspect. To facilitate this, FLYNN includes a -precheck flag that can be used to verify that the input ligand is identified correctly and for validation of the automatic bond order assignments.

## Stereochemistry Enumeration¶

Compounds that contain unspecified or ambiguous definitions of stereochemistry will be preprocessed before conformational sampling to explicitly enumerate stereochemistry. Input molecules that have three dimensional coordinates inherently have stereochemistry specified, but SMILES or two dimensional SD files may have atoms (R/S) or bonds (E/Z) for which the stereochemistry is unknown or unspecified. In the case where the stereochemistry supplied is suspect, FLYNN provides an option that will completely enumerate all stereochemical centers.

The resulting ligands will be sorted based on their best fit to density regardless of the stereochemistry. That is, the best solutions will percolate to the top of the output. See sortAllChiral below for more details.

## Refinement Dictionaries¶

Both FLYNN and its companion program WRITEDICT can generate refinement dictionaries. A refinement dictionary is needed to maintain proper ligand geometry when using external reciprocal space refinement programs such as REFMAC5 or CNS X/PLOR.

Refinement dictionaries are a list of geometrical constraints encoding used chemical bonding and molecular conformation information. They are used by various refinement packages to describe standard geometries and constraints that are used during the refinement process. The quality of the post refinement ligand conformations are directly related to the quality of the constraints [AFITT-CL Vagin-2004]_.

FLYNN comes bundled with a refinement dictionary writer named WRITEDICT. WRITEDICT uses the MMFF94 forcefield to derive geometrical constraints for the input ligands or ligand-protein complexes. The output dictionaries enforce, as closely as possible, the input ligand’s geometries while allowing the refinement programs to modify the geometry as needed.

WRITEDICT also automatically detects covalent bonds in pdb files and inserts the appropriate PDB LINK records and covalent bond entries in the output refinement dictionary.

## REFMAC5 refinement dictionaries¶

When outputting REFMAC5 refinement dictionaries, WRITEDICT writes out a .cif file and a .pdb file. The .pdb file is written out for two reasons:

• Inconsistent Hydrogen Naming

Some applications write out hydrogen names incorrectly in ways that cause REFMAC5 or visualization programs like coot or WinCoot to be unable to associate the hydrogens in the refinement dictionary with hydrogens in the pdb file. In the worst case, REFMAC5 will crash entirely.

When necessary, WRITEDICT renames and renumbers hydrogens, if they exist, so that REFMAC5 won’t crash and so the .cif file is consistent with the .pdb file.

• Covalent Bonds

WRITEDICT detects covalent bonds and outputs proper LINK records in the .pdb file and proper covalent constraints in the .cif file. Without using both outputs, REFMAC5 will not detect covalent bonds during refinement.

• Known residues

When WRITEDICT detects a known residue, it may remap the atom names to be canonical with the known residue (this prevents REFMAC5 from failing to refine). These new atom names are saved in the .pdb file that WRITEDICT outputs.

• Input Ligands with no residue information

When WRITEDICT analyzes a ligand with no residue information, it assigns the whole ligand to a single residue (by default UNL). If this is not the desired outcome, the ligand must be put into PDB or MOL2 format and the residues must be manually assigned.

It is highly recommended to use WRITEDICT’s generated .pdb file in conjunction with the .cif.

## Looking up known residues¶

WRITEDICT has an internal dictionary of known residues. By default, known residues names are retained when the graph of the known residue is exactly the same as the input residue. When this occurs, writedict can replace REFMAC5’s dictionary with the MMFF94 generated dictionary. If the graphs do not match then WRITEDICT relabels the residue with a new residue name since a different dictionary needs to be created.

Options available for residue matching is as follows:

Option Meaning
exact Known residue and input residue graphs must match exactly.
substructure

Input residue may be a substructure of the known residue.

Cannot be used with the exact flag.

fuzzybonds Bond orders do not need to match
atomname Atom names must match

Options are set using the -strict flag and joined with colons (:).

The default is:

-strict substructure:fuzzybonds

To reject dictionaries that do not match exactly, use:

-strict exact

However, the more permissive default setting has been known to generate invalid dictionaries on occasion. It is always safe to force exact matches.

To have WRITEDICT attempt to see if the ligand’s residue has already been deposited in RCSB simply add the -lookup switch. This forces WRITEDICT to compare (based on the current -strict settings) the input residue to all known residues. This is useful if the input is from a 2D connection table, such as smiles or does not contain residue information.

## MMFF94 versus MMFF94s forcefields¶

The MMFF94s forcefield is a variant of MMFF94 that emulates time-averaged structures typically observed during crystallographic structure determination, mainly planar geometries at unstrained delocalized trigonal nitrogen centers. However, there are many theoretical studies that show nitrogen centers are puckered [AFITT-CL Halgren-VI-1999]_.

That being said, due to the prevalence of crystallographic examples where time averaging has occurred, many chemists erroneously consider the time-averaged structure to be correct, hence this variant is available for use.

WRITEDICT approximates the MMFF94s forcefield by enforcing planar aniline nitrogen configurations using the out of plane atom types and parameters from the MMFF94s. See the -planarAniline parameter to specify planar constraints.

## FLYNN and writing CIF Files¶

When FLYNN is run, CIF dictionary files are always written as output. Because the dictionary files are not conformation independent, they are written as if the molecules were split into separate files whether or not the user specifies FLYNN’s -split flag. (See the split flag in Advanced Options below for more details). These files are numbered, however, so that the file with the lowest number corresponds to the best scored fit ligand.

For example, consider using the -sortBy plp flag and getting the following output:

1nhu-poses_n001_b001_s01_c003.pdb 1nhu-poses_n002_b001_s01_c000.pdb 1nhu-poses_n003_b001_s01_c001.pdb 1nhu-poses_n004_b001_s01_c002.pdb

This indicates that the best fit to density (c000) has the second best PLP score (n001). By default the files are sorted by RSCC.

FLYNN CIF output consists of the following files:

1. a CIF file
2. a PDB file (in case atom names were remapped) or links were added.
3. an OEB file that contains the original molecule with annotations

It is safest, however, to run WRITEDICT on the output ligand and protein complex. The CIF files generated by FLYNN are primarily useful for adjusting torsions and geometries in various ligand building programs, such as coot.

## Results on The Gold Test Set¶

Included in the FLYNN distribution is a copy of the protein+ligand complexes that have structures factors available from the Electron Density Server [AFITT-CL EDS]_.

Along with this data set is a simple python script that can be used to fit ligands to the test data set. OpenEye has prepared the input test set as follows:

2. The ligands were separated from the proteins.
3. The protein was rerefined using the original mtz file to remove ligand bias.

A simple directory structure was created as follows:

• pdbcode/protein.pdb - the re-refined protein
• pdbcode/ligand.pdb - the original ligand
• pdbcode/protein.mtz - the re-refined difference map density.

The following python script was used to run FLYNN on all of the proteins. (This script is also included in the FLYNN distribution):

#########################################################################################
## Copyright (C) OpenEye Scientific 2007,2008,2009,2010,2011
#########################################################################################
## This script analyzes the Gold dataset shipped with the flynn distribution
import os,sys
command = "../../../bin/flynn -in %(CODE)s/ligand.pdb -map %(CODE)s/protein.mtz " \
"-prot %(CODE)s/protein.pdb -out %(CODE)s_results.sdf " \
"-verbose -rms -reportfile %(CODE)s.log %(REDIRECT)s %(CODE)s.out"
if sys.platform == "win32":
REDIRECT = "2>"
else:
REDIRECT = "&>"
RMS = []
for file in os.listdir("."):
print file
if os.path.isdir(file) and len(file) == 4:
code = file
CMD = command % {"CODE":code, "REDIRECT": REDIRECT}
print CMD
os.system(CMD)
index = None
rmses = []
for line in open("%s.log"%code):
if index is None:
index = line.strip().split(",").index("RMSD")
else:
rmses.append( float(line.strip().split(",")[index]) )
if rmses:
print "\t===>Lowest RMS", min(rmses)

The results of FLYNN are shown in Figure Gold Test Set Results. The mean RMS to the crystal structure is 0.676 Angstroms.

Gold Test Set Results


text:
# A Tricky , though easy... Chase ..!!

Algebra Level 1

If $$\dfrac{a^{n+1} + b^{ n+1} }{a^{n}+b^{n}}$$ is the Arithmetic Mean of a and b , then find the value of n .

×