view average_fst.xml @ 18:f04f40a36cc8

Latest changes from Belinda and Cathy. Webb's updates to the Fst tools.
author Richard Burhans <burhans@bx.psu.edu>
date Tue, 23 Oct 2012 12:41:52 -0400
parents 8ae67e9fb6ff
children d6b961721037
line wrap: on
line source

<tool id="gd_average_fst" name="Overall FST" version="1.1.0">
  <description>: Estimate the relative fixation index between two populations</description>

  <command interpreter="python">
    average_fst.py "$input" "$p1_input" "$p2_input" "$data_source.ds_choice" "$data_source.min_value" "$discard_fixed" "$output"
    #if $use_randomization.ur_choice == '1'
      "$use_randomization.shuffles" "$use_randomization.p0_input"
    #else
      "0" "/dev/null"
    #end if
    #for $individual, $individual_col in zip($input.dataset.metadata.individual_names, $input.dataset.metadata.individual_columns)
        #set $arg = '%s:%s' % ($individual_col, $individual)
        "$arg"
    #end for
  </command>

  <inputs>
    <param name="input" type="data" format="gd_snp" label="SNP table" />
    <param name="p1_input" type="data" format="gd_indivs" label="Population 1 individuals" />
    <param name="p2_input" type="data" format="gd_indivs" label="Population 2 individuals" />

    <conditional name="data_source">
      <param name="ds_choice" type="select" format="integer" label="Data source">
          <option value="0" selected="true">sequence coverage and ..</option>
          <option value="1">estimated genotype and ..</option>
      </param>
      <when value="0">
        <param name="min_value" type="integer" min="1" value="1" label="Minimum total read count for a population" />
      </when>
      <when value="1">
        <param name="min_value" type="integer" min="1" value="1" label="Minimum individual genotype quality" />
      </when>
    </conditional>

    <param name="discard_fixed" type="select" label="Apparently fixed SNPs">
      <option value="0">Retain SNPs that appear fixed in the two populations</option>
      <option value="1" selected="true">Delete SNPs that appear fixed in the two populations</option>
    </param>

    <conditional name="use_randomization">
      <param name="ur_choice" type="select" format="integer" label="Use randomization">
        <option value="0" selected="true">No</option>
        <option value="1">Yes</option>
      </param>
      <when value="0" />
      <when value="1">
        <param name="shuffles" type="integer" min="0" value="0" label="Shuffles" />
        <param name="p0_input" type="data" format="gd_indivs" label="Individuals for randomization" />
      </when>
    </conditional>
  </inputs>

  <outputs>
    <data name="output" format="txt" />
  </outputs>

  <tests>
    <test>
      <param name="input" value="test_in/sample.gd_snp" ftype="gd_snp" />
      <param name="p1_input" value="test_in/a.gd_indivs" ftype="gd_indivs" />
      <param name="p2_input" value="test_in/b.gd_indivs" ftype="gd_indivs" />
      <param name="ds_choice" value="0" />
      <param name="min_value" value="3" />
      <param name="discard_fixed" value="1" />
      <param name="ur_choice" value="0" />
      <output name="output" file="test_out/average_fst/average_fst.txt" />
    </test>
  </tests>

  <help>

**What it does**

The user specifies a SNP table and two "populations" of individuals, both previously defined using the Galaxy tool to specify individuals from a SNP table. No individual can be in both populations. Other choices are as follows.

Data source. The allele frequencies of a SNP in the two populations can be estimated either by the total number of reads of each allele, or by adding the frequencies inferred from genotypes of individuals in the populations.

After specifying the data source, the user sets lower bounds on amount of data required at a SNP. For estimating the FST using read counts, the bound is the minimum count of reads of the two alleles in a population. For estimations based on genotype, the bound is the minimum reported genotype quality per individual. SMPs not meeting these lower bounds are ignored.

The user specifies whether SNPs where both populations appear to be fixed for the same allele should be retained or discarded.

Finally, the user decides whether to use randomizations. If so, then the user specifies how many randomly generated population pairs (retaining the numbers of individuals of the originals) to generate, as well as the "population" of additional individuals (not in the first two populations) that can be used in the randomization process.

The program prints the following measures of FST for the two populations.
1. The formulation by Sewall Wright (average over FSTs for all SNPs).
2. The Weir-Cockerham estimator (average over FSTs for all SNPs).
3. The Reich-Patterson estimator (average over FSTs for all SNPs).
4. The population-based Reich-Patterson estimator.

If randomizations were requested, it prints a summary for each of the four definitions of FST that includes the maximum and average value, and the highest-scoring population pair (if any scored higher than the two user-specified populations).

References:

Sewall Wright (1951) The genetical structure of populations. Ann Eugen 15:323-354.

B. S. Weir and C. Clark Cockerham (1984) Estimating F-statistics for the analysis of population structure. Evolution 38:1358-1370.

Weir, B.S. 1996. Population substructure. Genetic data analysis II, pp. 161-173. Sinauer Associates, Sundand, MA.

David Reich, Kumarasamy Thangaraj, Nick Patterson, Alkes L. Price, and Lalji Singh (2009) Reconstructing Indian population history. Nature 461:489-494, especially Supplement 2.  

Their effectiveness for computing FSTs when there are many SNPs but few individuals is discussed in the followoing paper.

Eva-Maria Willing, Christine Dreyer, Cock van Oosterhout (2012) Estimates of genetic differentiation measured by FST do not necessarily require large sample sizes when using many SNP markers. PLoS One 7:e42649.
  </help>
</tool>