Plant genetics an...
Follow
Find
914 views | +1 today
Plant genetics and statistics
research, news and opinions on plant genetics and statistics with emphasis on forage crop breeding and molecular plant ecology
Your new post is loading...
Your new post is loading...
Scooped by Roland Kölliker
Scoop.it!

FIFA 15 Analysis with R

FIFA 15 Analysis with R | Plant genetics and statistics | Scoop.it
(This article was first published on You Know, and kindly contributed to R-bloggers)
Several months ago, I used R to analyze professional soccer players based on their attributes from the video game, FIFA14.
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Statistician Applies Predictive Modeling to ‘Game of Thrones’

Statistician Applies Predictive Modeling to ‘Game of Thrones’ | Plant genetics and statistics | Scoop.it
First came a “Game of Thrones” college course. Now the book series behind the HBO show is the subject of an academic paper by a New Zealand-based statistician.
Roland Kölliker's insight:

another reason to love statistics...

more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Multiple Tests, an Introduction

Multiple Tests, an Introduction | Plant genetics and statistics | Scoop.it
(This article was first published on Freakonometrics » R-english, and kindly contributed to R-bloggers)
Last week, a student asked me about multiple tests.
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Why Are We Still Teaching t-Tests?

Why Are We Still Teaching t-Tests? | Plant genetics and statistics | Scoop.it
(This article was first published on Mad (Data) Scientist, and kindly contributed to R-bloggers) My posting about the statistics profession losing ground to computer science drew many comments, not only here in Mad (Data) Scientist, but...
more...
No comment yet.
Rescooped by Roland Kölliker from Plants and Microbes
Scoop.it!

Global Ecology and Biogeography: The global spread of crop pests and pathogens (2014)

Global Ecology and Biogeography: The global spread of crop pests and pathogens (2014) | Plant genetics and statistics | Scoop.it

Aim - To describe the patterns and trends in the spread of crop pests and pathogens around the world, and determine the socioeconomic, environmental and biological factors underlying the rate and degree of redistribution of crop-destroying organisms.

 

Location - Global.

 

Methods - Current country- and state-level distributions of 1901 pests and pathogens and historical observation dates for 424 species were compared with potential distributions based upon distributions of host crops. The degree of ‘saturation’, i.e. the fraction of the potential distribution occupied, was related to pest type, host range, crop production, climate and socioeconomic variables using linear models.

 

Results - More than one-tenth of all pests have reached more than half the countries that grow their hosts. If current trends continue, many important crop-producing countries will be fully saturated with pests by the middle of the century. While dispersal increases with host range overall, fungi have the narrowest host range but are the most widely dispersed group. The global dispersal of some pests has been rapid, but pest assemblages remain strongly regionalized and follow the distributions of their hosts. Pest assemblages are significantly correlated with socioeconomics, climate and latitude. Tropical staple crops, with restricted latitudinal ranges, tend to be more saturated with pests and pathogens than temperate staples with broad latitudinal ranges. We list the pests likely to be the most invasive in coming years.

 

Main conclusions - Despite ongoing dispersal of crop pests and pathogens, the degree of biotic homogenization of the globe remains moderate and regionally constrained, but is growing. Fungal pathogens lead the global invasion of agriculture, despite their more restricted host range. Climate change is likely to influence future distributions. Improved surveillance would reveal greater levels of invasion, particularly in developing countries.


Via Kamoun Lab @ TSL
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

CausalImpact: A new open-source package for estimating causal effects in time series

CausalImpact: A new open-source package for estimating causal effects in time series | Plant genetics and statistics | Scoop.it
How can we measure the number of additional clicks or sales that an AdWords campaign generated? How can we estimate the impact of a new feature on app downloads? How do we compare the effectiveness of publicity across countries?In principle, all of these questions can be answered through causal inference.In practice, estimating a causal effect accurately is hard, especially when a randomised experiment is not available. One approach we've been developing at Google is based on Bayesian structural time-series models. We use these models to construct a synthetic control — what would have happened to our outcome metric in the absence of the intervention. This approach makes it possible to estimate the causal effect that can be attributed to the intervention, as well as its evolution over time.We've been testing and applying structural time-series models for some time at Google. For example, we've used them to better understand the effectiveness of advertising campaigns and work out their return on investment. We've also applied the models to settings where a randomised experiment was available, to check how similar our effect estimates would have been without an experimental control.Today, we're excited to announce the release of CausalImpact, an open-source R package that makes causal analyses simple and fast. With its release, all of our advertisers and users will be able to use the same powerful methods for estimating causal effects that we've been using ourselves.Our main motivation behind creating the package has been to find a better way of measuring the impact of ad campaigns on outcomes. However, the CausalImpact package could be used for many other applications involving causal inference. Examples include problems found in economics, epidemiology, or the political and social sciences.How the package worksThe CausalImpact R package implements a Bayesian approach to estimating the causal effect of a designed intervention on a time series. Given a response time series (e.g., clicks) and a set of control time series (e.g., clicks in non-affected markets, clicks on other sites, or Google Trends data), the package constructs a Bayesian structural time-series model with a built-in spike-and-slab prior for automatic variable selection. This model is then used to predict the counterfactual, i.e., how the response metric would have evolved after the intervention if the intervention had not occurred.As with all methods in causal inference, valid conclusions require us to check for any given situation whether key model assumptions are fulfilled. In the case of CausalImpact, we are looking for a set of control time series which are predictive of the outcome time series in the pre-intervention period. In addition, the control time series must not themselves have been affected by the intervention. For details, see Brodersen et al. (2014).A simple exampleThe figure below shows an application of the R package. Based on the observed data before the intervention (black) and a control time series (not shown), the model has computed what would have happened after the intervention at time point 70 in the absence of the intervention (blue).The difference between the actual observed data and the prediction during the post-intervention period is an estimate of the causal effect of the intervention. The first panel shows the observed and predicted response on the original scale. The second panel shows the difference between the two, i.e., the causal effect for each point in time. The third panel shows the individual causal effects added up in time.The script used to create the above figure is shown in the left part of the window below. Using package defaults means our analysis boils down to just a single line of code: a call to the function CausalImpact() in line 10. The right-hand side of the window shows the resulting numeric output. For details on how to customize the model, see the documentation.
How to get startedThe best place to start is the package documentation. The package is hosted on Github and can be installed using:install.packages("devtools")library(devtools)devtools::install_github("google/CausalImpact")library(CausalImpact)By Kay H. Brodersen, Google
more...
No comment yet.
Rescooped by Roland Kölliker from Plant-Nematode Interactions
Scoop.it!

The Activation and Suppression of Plant Innate Immunity by Parasitic Nematodes - Annual Review of Phytopathology, 52(1):

The Activation and Suppression of Plant Innate Immunity by Parasitic Nematodes - Annual Review of Phytopathology, 52(1): | Plant genetics and statistics | Scoop.it

Via yasindagdas
more...
No comment yet.
Rescooped by Roland Kölliker from Plant-microbe interactions (on the plant's side)
Scoop.it!

Go in for the kill: How plants deploy effector-triggered immunity to combat pathogens

Go in for the kill: How plants deploy effector-triggered immunity to combat pathogens | Plant genetics and statistics | Scoop.it

Plant resistance (R) proteins perceive specific pathogen effectors from diverse plant pathogens to initiate defense responses, designated effector-triggered immunity (ETI). Plant R proteins are mostly nucleotide binding-leucine rich repeat (NB-LRR) proteins, which recognize pathogen effectors directly or indirectly through sophisticated mechanisms. Upon activation by effector proteins, R proteins elicit robust defense responses, including a rapid burst of reactive oxygen species (ROS), induced biosynthesis and accumulation of salicylic acid (SA), a rapid programmed cell death (PCD) called hypersensitive response (HR) at the infection sites, and increased expression of pathogenesis-related (PR) genes. Initiation of ETI is correlated with a complex network of defense signaling pathways, resulting in defensive cellular responses and large-scale transcriptional reprogramming events. In this review, we highlight important recent advances on the recognition of effectors, regulation and activation of plant R proteins, dynamic intracellular trafficking of R proteins, induction of cell death, and transcriptional reprogramming associated with ETI. Current knowledge gaps and future research directions are also discussed in this review.


Via Christophe Jacquet
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Book Review: Bioinformatics with R Cookbook

The book BioInformaticswith R Cookbook is a 340 pages book published by PACKT publishing last June. The book is intended for individuals working on the areas o
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Do your "data janitor work" like a boss with dplyr

Data “janitor-work”
The New York Times recently ran a piece on wrangling and cleaning data:
“For Big-Data Scientists, ‘Janitor Work’ Is Key Hurdle to Insights”
Whether you call it “janitor-work,” wrangling/munging, cleaning/cleansing/scrubbing, tidying, or something else, the article above is worth a read (even though it implicitly denigrates the important work that your housekeeping staff does). It’s one of the few “Big Data” pieces that truly appreciates what we spend so much time doing every day as data scientists/janitors/sherpas/cowboys/etc. The article was chock-full of quotable tidbits on the nature of data munging as part of the analytical workflow:

It’s an absolute myth that you can send an algorithm over raw data and have insights pop up…
Data scientists … spend 50-80% of their time mired in this more mundane labor of collecting and preparing unruly digital data, before it can be explored for useful nuggets.
But if the value comes from combining different data sets, so does the headache… Before a software algorithm can go looking for answers, the data must be cleaned up and converted into a unified form that the algorithm can understand.
But practically, because of the diversity of data, you spend a lot of your time being a data janitor, before you can get to the cool, sexy things that got you into the field in the first place.

As data analysis experts we justify our existence by (accurately) evangelizing that the bottleneck in the discovery process is usually not data generation, it’s data analysis. I clarify that point further with my collaborators: data analysis is usually the easy part — if I give you properly formatted, tidy, and rigorously quality-controlled data, hitting the analysis “button” is usually much easier than the work that went into cleaning, QC’ing, and preparing the data in the first place.
To that effect, I’d like to introduce you to a tool that recently made its way into my data analysis toolbox.
dplyr
Unless you’ve had your head buried in the sand of the data analysis desert for the last few years, you’ve definitely encountered a number of tools in the “Hadleyverse.” These are R packages created by Hadley Wickham and friends that make things like data visualization (ggplot2), data management and split-apply-combine analysis (plyr, reshape2), and R package creation and documentation (devtools, roxygen2) much easier.
The dplyr package introduces a few simple functions, and integrates functionality from the magrittr package that will fundamentally change the way you write R code.
I’m not going to give you a full tutorial on dplyr because the vignette should take you 15 minutes to go through, and will do a much better job of introducing this “grammar of data manipulation” than I could do here. But I’ll try to hit a few higlights.
dplyr verbs
First, dplyr works on data frames, and introduces a few “verbs” that allow you to do some basic manipulation:


filter() filters rows from the data frame by some criterion

arrange() arranges rows ascending or descending based on the value(s) of one or more columns

select() allows you to select one or more columns

mutate() allows you to add new columns to a data frame that are transformations of other columns

group_by() and summarize() are usually used together, and allow you to compute values grouped by some other variable, e.g., the mean, SD, and count of all the values of $y separately for each level of factor variable $group.

Individually, none of these add much to your R arsenal that wasn’t already baked into the language in some form or another. But the real power comes from chaining these commands together, with the %>% operator.
The %>% operator: “then”
This dataset and example was taken directly from, and is described more verbosely in the vignette. The hflights dataset has information about more than 200,000 flights that departed Houston in 2011. Let’s say we want to do the following:

Use the hflights dataset

group_by the Year, Month, and Day

select out only the Day, the arrival delay, and the departure delay variables
Use summarize to calculate the mean of the arrival and departure delays

filter the resulting dataset where the arrival delay or the departure delay is more than 30 minutes.

Here’s an example of how you might have done this previously:
filter( summarise( select( group_by(hflights, Year, Month, DayofMonth), Year:DayofMonth, ArrDelay, DepDelay ), arr = mean(ArrDelay, na.rm = TRUE), dep = mean(DepDelay, na.rm = TRUE) ), arr > 30 | dep > 30)
Notice that the order that we write the code in this example is inside out - we describe our problem as: use hflights, then group_by, then select, then summarize, then filter, but traditionally in R we write the code inside-out by nesting functions 4-deep:
filter(summarize(select(group_by(hflights, ...), ...), ...), ...)
To fix this, dplyr provides the %>% operator (pronounced “then”). x %>% f(y) turns into f(x, y) so you can use it to rewrite multiple operations so you can read from left-to-right, top-to-bottom:
hflights %>% group_by(Year, Month, DayofMonth) %>% select(Year:DayofMonth, ArrDelay, DepDelay) %>% summarise( arr = mean(ArrDelay, na.rm = TRUE), dep = mean(DepDelay, na.rm = TRUE) ) %>% filter(arr > 30 | dep > 30)
Writing the code this way actually follows the order we think about the problem (use hflights, then group_by, then select, then summarize, then filter it).

You aren’t limited to using %>% to only dplyr functions. You can use it with anything. E.g., instead of head(iris, 10), we could write iris %>% head(10) to get the first ten lines of the built-in iris dataset. Furthermore, since the input to ggplot is always a data.frame, we can munge around a dataset then pipe the whole thing into a plotting function. Here’s a simple example where we take the iris dataset, then group it by Species, then summarize it by calculating the mean of the Sepal.Length, then use ggplot2 to make a simple bar plot.
library(dplyr)library(ggplot2)iris %>% group_by(Species) %>% summarize(meanSepLength=mean(Sepal.Length)) %>% ggplot(aes(Species, meanSepLength)) + geom_bar(stat="identity")
Once you start using %>% you’ll wonder to yourself why this isn’t a core part of the R language itself rather than add-on functionality provided by a package. It will fundamentally change the way you write R code, making it feel more natural and making your code more readable. There's a lot more dplyr can do with databases that I didn't even mention, and if you're interested, you should see the other vignettes on the CRAN package page.
As a side note, I’ve linked to it several times here, but you should really check out Hadley’s Tidy Data paper and the tidyr package, vignette, and blog post.
dplyr package: http://cran.r-project.org/web/packages/dplyr/index.html

dplyr vignette: http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html

dplyr on SO: http://stackoverflow.com/questions/tagged/dplyr



Getting Genetics Done by Stephen Turner is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

library() vs require() in R

While I was sitting in a conference room at UseR! 2014, I started counting the number of times that require() was used in the presentations, and would rant about it after I counted to ten. With drums rolling, David won this little award (sorry, I did not really mean this to you).


Ladies and gentlemen, I've said this before: require() is the wrong way to load an R package; use library() instead #useR2014— Yihui Xie (@xieyihui) July 2, 2014



After I tweeted about it, some useRs seemed to be unhappy and asked me why. Both require() and library() can load (strictly speaking, attach) an R package. Why should not one use require()? The answer is pretty simple. If you take a look at the source code of require (use the source, Luke, as Martin Mächler mentioned in his invited talk), you will see that require() basically means "try to load the package using library() and return a logical value indicating the success or failure". In other words, library() loads a package, and require() tries to load a package. So when you want to load a package, do you load a package or try to load a package? It should be crystal clear.

One bad consequence of require() is that if you require('foo') in the beginning of an R script, and use a function bar() in the foo package on line 175, R will throw an error object "bar" not found if foo was not installed. That is too late and sometimes difficult for other people to understand if they use your script but are not familiar with the foo package -- they may ask, what is the bar object, and where is it from? When your code is going to fail, fail loudly, early, and with a relevant error message. require() does not signal an error, and library() does.

Sometimes you do need require() to use a package conditionally (e.g. the sun is not going to explode without this package), in which case you may use an if statement, e.g.

if (require('foo')) {
awesome_foo_function()
} else {
warning('You missed an awesome function')
}



But it is common to see R code like this as well:

if (!require('foo')) {
stop('The package foo was not installed')
}



Sigh.



library('foo') stops when foo was not installed

require() is basically try(library())


Then if (!require('foo')) stop() is basically "if you failed to try to load this package, please fail". I do not quite understand why it is worth the circle, except when one wants a different error message with the one from library(), otherwise one can simply load and fail.

There is one legitimate reason to use require(), though, and that is, "require is a verb and library is a noun!" I completely agree. require should have been a very nice name to choose for the purpose of loading a package, but unfortunately... you know.

If you take a look at the StackOverflow question on this, you will see a comment on "package vs library" was up-voted a lot of times. It used to make a lot of sense to me, but now I do not care as much as I did. There have been useRs (including me up to a certain point) desperately explaining the difference between the two terms package and library, but somehow I think R's definition of a library is indeed unusual, and the function library() makes the situation worse. Now I'm totally fine if anyone calls my packages "libraries", because I know what you mean.

Since you have read the source code, Luke, you may have found that you can abuse require() a bit, for example:

> (require(c('MASS', 'nnet')))
c("Loading required package: c", "Loading required package: MASS",
"Loading required package: nnet")
Failed with error: ‘'package' must be of length 1’
In addition: Warning message:
In if (!loaded) { :
the condition has length > 1 and only the first element will be used
[1] FALSE

> (require(c('MASS', 'nnet'), character.only = TRUE))
c("Loading required package: MASS", "Loading required package: nnet")
Failed with error: ‘'package' must be of length 1’
In addition: Warning message:
In if (!loaded) { :
the condition has length > 1 and only the first element will be used
[1] FALSE

> library(c('MASS', 'nnet'), character.only = TRUE)
Error in library(c("MASS", "nnet"), character.only = TRUE) :
'package' must be of length 1



So require() failed not because MASS and nnet did not exist, but because of a different error. As long as there is an error (no matter what it is), require() returns FALSE.

One thing off-topic while I'm talking about these two functions: the argument character.only = FALSE for library() and require() is a design mistake in my eyes. It seems the original author(s) wanted to be lazy to avoid typing the quotes around the package name, so library(foo) works like library("foo"). Once you show people they can be lazy, you can never pull them back. Apparently, the editors of JSS (Journal of Statistical Software) have been trying to promote the form library("foo") and discourage library(foo), but I do not think it makes much sense now or it will change anything. If it were in the 90's, I'd wholeheartedly support it. It is simply way too late now. Yes, two extra quotation marks will kill many kittens on this planet. If you are familiar with *nix commands, this idea is not new -- just think about tar -z -x -f, tar -zxf, and tar zxf.

One last annoying issue with require() is that it is noisy by default, because of the default quietly = FALSE, e.g.

> require('nnet')
Loading required package: nnet
> require('MASS', quietly = TRUE)



So when I tell you to load a package, you tell me you are loading a package, as if you had heard me. Oh thank you!
Roland Kölliker's insight:

Do you want to load or do you want to try to load (=:

more...
No comment yet.
Rescooped by Roland Kölliker from Plants and Microbes
Scoop.it!

Curr Opin Plant Biol: Cross-interference of plant development and plant–microbe interactions (2014)

Curr Opin Plant Biol: Cross-interference of plant development and plant–microbe interactions (2014) | Plant genetics and statistics | Scoop.it

Plant roots are host to a multitude of filamentous microorganisms. Among these, arbuscular mycorrhizal fungi provide benefits to plants, while pathogens trigger diseases resulting in significant crop yield losses. It is therefore imperative to study processes which allow plants to discriminate detrimental and beneficial interactions in order to protect crops from diseases while retaining the ability for sustainable bio-fertilisation strategies. Accumulating evidence suggests that some symbiosis processes also affect plant–pathogen interactions. A large part of this overlap likely constitutes plant developmental processes. Moreover, microbes utilise effector proteins to interfere with plant development. Here we list relevant recent findings on how plant–microbe interactions intersect with plant development and highlight future research leads.


Via Kamoun Lab @ TSL
more...
Steve Marek's curator insight, June 16, 2:56 PM

Nice review

Rakesh Yashroy's curator insight, July 2, 10:54 AM

Microbe-macrobe or host-pathogen interface determines the cell-cell interactions largely @ http://en.wikipedia.org/wiki/Host-pathogen_interface

Scooped by Roland Kölliker
Scoop.it!

Soil microbiomes can set plant flowering time - Phys.Org

Soil microbiomes can set plant flowering time - Phys.Org | Plant genetics and statistics | Scoop.it
Phys.Org
Soil microbiomes can set plant flowering time
Phys.Org
The bacteria and archaea were sequenced at the U.S.
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Unannotated genes identified through sequencing multiple lines of ... - Phys.Org

Unannotated genes identified through sequencing multiple lines of ... - Phys.Org | Plant genetics and statistics | Scoop.it
Phys.Org
Unannotated genes identified through sequencing multiple lines of ...
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

How to draw venn pie-agram (multi-layer pie chart) in R?

How to draw venn pie-agram (multi-layer pie chart) in R? | Plant genetics and statistics | Scoop.it
I was wondering how to draw a venn diagram like pie chart in R, to show the distribution of my RNA-seq reads mapped onto different annotation regions (e.g. intergenic, intron, exons etc.). A google search returns several options, including the nice one...
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

A paean to plants: The story of botany at Kew gardens

A paean to plants: The story of botany at Kew gardens | Plant genetics and statistics | Scoop.it
Some may still see it as a Cinderella science, but botany flowers magnificently in Plants: Roots to riches and the accompanying 25-part BBC Radio 4 series
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Using colorized PNG pictograms in R base plots

Using colorized PNG pictograms in R base plots | Plant genetics and statistics | Scoop.it
Today I stumbled across a figure in an explanation on multiple factor analysis which contained pictograms.   Figure 1 from Abdi & Valentin (2007), p. 8. I wanted to reproduce a similar figure in R using pictograms and additionally color them e.g. by group membership . I have almost no knowledge about image processing, so […]
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

R: k-Means Clustering on an Image

R: k-Means Clustering on an Image | Plant genetics and statistics | Scoop.it
Enough with the theory we recently published, let's take a break and have fun on the application of Statistics used in Data Mining and Machine Learning, the k-Means Clustering.k-means clustering is a method of vector quantization, originally from signa...
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

No Common Ancestor: How Caffeine Evolved In Coffee - Science 2.0

No Common Ancestor: How Caffeine Evolved In Coffee - Science 2.0 | Plant genetics and statistics | Scoop.it
Science 2.0 No Common Ancestor: How Caffeine Evolved In Coffee Science 2.0 The coffee plant has a newly sequenced genome and that can tell scientists what they really want to know about: the evolution of caffeine.
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Genetic Researchers Unveil Draft Sequence of Wheat Genome - Sci-News.com

Genetic Researchers Unveil Draft Sequence of Wheat Genome - Sci-News.com | Plant genetics and statistics | Scoop.it
Sci-News.com
Genetic Researchers Unveil Draft Sequence of Wheat Genome
Sci-News.com
The wheat plant is highly versatile due to its ability to grow in a wide range of environments.
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Introducing Genetically Edited Crops: the Alternative to GMOs - Nature World News

Introducing Genetically Edited Crops: the Alternative to GMOs - Nature World News | Plant genetics and statistics | Scoop.it
Nature World News Introducing Genetically Edited Crops: the Alternative to GMOs Nature World News According to the paper, GEOs improve crops by simply taking the plant's preexisting genetic information and editing it - causing deletions and...
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Table comparing the statistical capabilities of software packages

Table comparing the statistical capabilities of software packages | Plant genetics and statistics | Scoop.it
A statistical consultant known only as "Stanford PhD" has put together a table comparing the statistical capabilities of the software packages R, Matlab, SAS, Stata and SPSS. For each of 57 methods (including techniques like "ridge regression", "survival analysis", "optimization") the author ranks the capabilities of each software package as "Yes" (fully supported), "Limited" or "Experimental". Here are the first few rows of the table: Of the 57 techniques listed in the table, here are the counts of the number fully supported ("Yes") by each package: R 57 Matlab 57 SAS 42 Stata 29 SPSS 20 The table appears to...
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Some love for ggplot2

Some love for ggplot2 | Plant genetics and statistics | Scoop.it
With all the recent buzz about ggvis (this, this, and this) it’s often easy to forget all that ggplot2 offers as a graphics package. True, ggplot is a static approach to graphing unlike ggvis but it has fundamentally changed the way we think about plots in R. I recently spent some time thinking about some […]
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

Perennial Corn Crops? It Could Happen with New Plant-Breeding Tool - Lab Manager Laboratory News

Perennial Corn Crops? It Could Happen with New Plant-Breeding Tool - Lab Manager Laboratory News | Plant genetics and statistics | Scoop.it
Perennial Corn Crops? It Could Happen with New Plant-Breeding Tool
Lab Manager Laboratory News
Perennial Corn Crops? It Could Happen with New Plant-Breeding Tool.
more...
No comment yet.
Scooped by Roland Kölliker
Scoop.it!

How Overlooked Plants Like the Potato Bean Can Be Tamed to Feed the World - Wired

How Overlooked Plants Like the Potato Bean Can Be Tamed to Feed the World - Wired | Plant genetics and statistics | Scoop.it
How Overlooked Plants Like the Potato Bean Can Be Tamed to Feed the World
Wired
But as genomic technology has become faster and cheaper, the work has accelerated.
more...
No comment yet.