Repository 'pcr_markers'
hg clone https://toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers

Changeset 5:b321e0517be3 (2014-05-22)
Previous changeset 4:be070a68521e (2012-10-18) Next changeset 6:f201e8c6e004 (2014-07-07)
Commit message:
Uploaded
modified:
CAPS2gff.sh
design_primers.py
design_primers.xml
find_CAPS.xml
gsmapper2gff.sh
parse_primersearch.pl
uniq.xml
vcf_gff.py
vcf_gff.xml
added:
README.md
ipcress.xml
ipcress_gff.xml
run_p3.py
test-data/find_caps_output.txt
test-data/freebayes_out.vcf
test-data/freebayes_vcf_to_gff_output.gff
test-data/ipcress.out
test-data/ipcress_gff.out
test-data/ipcress_test_input.txt
test-data/mpileup_out.vcf
test-data/mpileup_vcf_to_gff_output.gff
test-data/targets
test-data/targets.fasta
test-data/targets.gff
umelt_service.py
vcf2gvf.py
vcf2gvf.sh
vcf2gvf.xml
removed:
Galaxy-Workflow-CAPS_Marker_Design_from_VCF.ga
Galaxy-Workflow-CAPS_Marker_Development_from_454_Read_Mapping.ga
b
diff -r be070a68521e -r b321e0517be3 CAPS2gff.sh
--- a/CAPS2gff.sh Thu Oct 18 19:47:07 2012 -0400
+++ b/CAPS2gff.sh Thu May 22 20:30:19 2014 -0400
b
@@ -1,5 +1,7 @@
 #!/bin/sh
 ##convert output of CAPS detection tool to GFF3
+## usage 
+# sh CAPS2gff.sh <input tabular CAPS output> <output file>
 #Copyright 2012 John McCallum
 #New Zealand Institute for Plant and Food Research
 
b
diff -r be070a68521e -r b321e0517be3 Galaxy-Workflow-CAPS_Marker_Design_from_VCF.ga
--- a/Galaxy-Workflow-CAPS_Marker_Design_from_VCF.ga Thu Oct 18 19:47:07 2012 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,273 +0,0 @@\n-{\n-    "a_galaxy_workflow": "true", \n-    "annotation": "", \n-    "format-version": "0.1", \n-    "name": "CAPS Marker Design from VCF", \n-    "steps": {\n-        "0": {\n-            "annotation": "", \n-            "id": 0, \n-            "input_connections": {}, \n-            "inputs": [\n-                {\n-                    "description": "", \n-                    "name": "Input Multi fasta Dataset"\n-                }\n-            ], \n-            "name": "Input dataset", \n-            "outputs": [], \n-            "position": {\n-                "left": 214, \n-                "top": 225\n-            }, \n-            "tool_errors": null, \n-            "tool_id": null, \n-            "tool_state": "{\\"name\\": \\"Input Multi fasta Dataset\\"}", \n-            "tool_version": null, \n-            "type": "data_input", \n-            "user_outputs": []\n-        }, \n-        "1": {\n-            "annotation": "", \n-            "id": 1, \n-            "input_connections": {}, \n-            "inputs": [\n-                {\n-                    "description": "", \n-                    "name": "Input VCF  Dataset"\n-                }\n-            ], \n-            "name": "Input dataset", \n-            "outputs": [], \n-            "position": {\n-                "left": 174, \n-                "top": 592\n-            }, \n-            "tool_errors": null, \n-            "tool_id": null, \n-            "tool_state": "{\\"name\\": \\"Input VCF  Dataset\\"}", \n-            "tool_version": null, \n-            "type": "data_input", \n-            "user_outputs": []\n-        }, \n-        "2": {\n-            "annotation": "", \n-            "id": 2, \n-            "input_connections": {\n-                "inputVcf": {\n-                    "id": 1, \n-                    "output_name": "output"\n-                }\n-            }, \n-            "inputs": [], \n-            "name": "Convert vcf to gff", \n-            "outputs": [\n-                {\n-                    "name": "outputfile", \n-                    "type": "gff3"\n-                }\n-            ], \n-            "position": {\n-                "left": 460.99998474121094, \n-                "top": 568\n-            }, \n-            "post_job_actions": {}, \n-            "tool_errors": null, \n-            "tool_id": "toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers/vcf2gff_1/1.0.0", \n-            "tool_state": "{\\"inputVcf\\": \\"null\\", \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"__page__\\": 0}", \n-            "tool_version": "1.0.0", \n-            "type": "tool", \n-            "user_outputs": []\n-        }, \n-        "3": {\n-            "annotation": "Detect resitriction polymorphisms", \n-            "id": 3, \n-            "input_connections": {\n-                "inputFasta": {\n-                    "id": 0, \n-                    "output_name": "output"\n-                }, \n-                "inputSNPGff3File": {\n-                    "id": 2, \n-                    "output_name": "outputfile"\n-                }\n-            }, \n-            "inputs": [], \n-            "name": "CAPS Detection", \n-            "outputs": [\n-                {\n-                    "name": "outputfile", \n-                    "type": "interval"\n-                }\n-            ], \n-            "position": {\n-                "left": 646.99998474121094, \n-                "top": 382\n-            }, \n-            "post_job_actions": {}, \n-            "tool_errors": null, \n-            "tool_id": "toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers/CAPS_Marker_Design_2/1.0.0", \n-            "tool_state": "{\\"inputFasta\\": \\"null\\", \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"inputSNPGff3File\\": \\"null\\", \\"__page__\\": 0}", \n-            "tool_version": "1.0.0", \n-            "type": "tool", \n-            "user_outputs": []\n-        }, \n-        "4": {\n-            "annotation": "get feature I'..b'{\n-                    "name": "primer_outputfile", \n-                    "type": "tabular"\n-                }\n-            ], \n-            "position": {\n-                "left": 1186, \n-                "top": 382\n-            }, \n-            "post_job_actions": {\n-                "RenameDatasetActionprimer_outputfile": {\n-                    "action_arguments": {\n-                        "newname": "PrimerPairs"\n-                    }, \n-                    "action_type": "RenameDatasetAction", \n-                    "output_name": "primer_outputfile"\n-                }\n-            }, \n-            "tool_errors": null, \n-            "tool_id": "toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers/Genetic_Marker_Design_2/1.0.0", \n-            "tool_state": "{\\"__page__\\": 0, \\"inputTargetfile\\": \\"null\\", \\"inputfastaFile\\": \\"null\\", \\"min_size\\": \\"{\\\\\\"__class__\\\\\\": \\\\\\"RuntimeValue\\\\\\"}\\", \\"inputSNPfile\\": \\"null\\", \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"max_size\\": \\"{\\\\\\"__class__\\\\\\": \\\\\\"RuntimeValue\\\\\\"}\\"}", \n-            "tool_version": "1.0.0", \n-            "type": "tool", \n-            "user_outputs": []\n-        }, \n-        "6": {\n-            "annotation": "", \n-            "id": 6, \n-            "input_connections": {\n-                "input": {\n-                    "id": 5, \n-                    "output_name": "primer_outputfile"\n-                }\n-            }, \n-            "inputs": [], \n-            "name": "Select", \n-            "outputs": [\n-                {\n-                    "name": "out_file1", \n-                    "type": "input"\n-                }\n-            ], \n-            "position": {\n-                "left": 1406, \n-                "top": 382\n-            }, \n-            "post_job_actions": {\n-                "RenameDatasetActionout_file1": {\n-                    "action_arguments": {\n-                        "newname": "SuccessfulDesignSets"\n-                    }, \n-                    "action_type": "RenameDatasetAction", \n-                    "output_name": "out_file1"\n-                }\n-            }, \n-            "tool_errors": null, \n-            "tool_id": "Grep1", \n-            "tool_state": "{\\"__page__\\": 0, \\"input\\": \\"null\\", \\"invert\\": \\"\\\\\\"true\\\\\\"\\", \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"pattern\\": \\"\\\\\\"NONE\\\\\\"\\"}", \n-            "tool_version": "1.0.1", \n-            "type": "tool", \n-            "user_outputs": []\n-        }, \n-        "7": {\n-            "annotation": "", \n-            "id": 7, \n-            "input_connections": {\n-                "inputFile": {\n-                    "id": 6, \n-                    "output_name": "out_file1"\n-                }\n-            }, \n-            "inputs": [], \n-            "name": "Unique", \n-            "outputs": [\n-                {\n-                    "name": "outputfile", \n-                    "type": "txt"\n-                }\n-            ], \n-            "position": {\n-                "left": 1625.9999389648438, \n-                "top": 382\n-            }, \n-            "post_job_actions": {\n-                "RenameDatasetActionoutputfile": {\n-                    "action_arguments": {\n-                        "newname": "UniquePrimerSets"\n-                    }, \n-                    "action_type": "RenameDatasetAction", \n-                    "output_name": "outputfile"\n-                }\n-            }, \n-            "tool_errors": null, \n-            "tool_id": "toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers/uni_Mask_1/1.0.0", \n-            "tool_state": "{\\"__page__\\": 0, \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"inputFile\\": \\"null\\"}", \n-            "tool_version": "1.0.0", \n-            "type": "tool", \n-            "user_outputs": []\n-        }\n-    }\n-}\n\\ No newline at end of file\n'
b
diff -r be070a68521e -r b321e0517be3 Galaxy-Workflow-CAPS_Marker_Development_from_454_Read_Mapping.ga
--- a/Galaxy-Workflow-CAPS_Marker_Development_from_454_Read_Mapping.ga Thu Oct 18 19:47:07 2012 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,401 +0,0 @@\n-{\n-    "a_galaxy_workflow": "true", \n-    "annotation": "", \n-    "format-version": "0.1", \n-    "name": "CAPS Marker Development from 454 Read Mapping", \n-    "steps": {\n-        "0": {\n-            "annotation": "", \n-            "id": 0, \n-            "input_connections": {}, \n-            "inputs": [\n-                {\n-                    "description": "", \n-                    "name": "Reference sequences"\n-                }\n-            ], \n-            "name": "Input dataset", \n-            "outputs": [], \n-            "position": {\n-                "left": 122.80303955078125, \n-                "top": 119.77274131774902\n-            }, \n-            "tool_errors": null, \n-            "tool_id": null, \n-            "tool_state": "{\\"name\\": \\"Reference sequences\\"}", \n-            "tool_version": null, \n-            "type": "data_input", \n-            "user_outputs": []\n-        }, \n-        "1": {\n-            "annotation": "Reads to map", \n-            "id": 1, \n-            "input_connections": {}, \n-            "inputs": [\n-                {\n-                    "description": "Reads to map", \n-                    "name": "SFF File "\n-                }\n-            ], \n-            "name": "Input dataset", \n-            "outputs": [], \n-            "position": {\n-                "left": 104.6212158203125, \n-                "top": 313.95454406738281\n-            }, \n-            "tool_errors": null, \n-            "tool_id": null, \n-            "tool_state": "{\\"name\\": \\"SFF File \\"}", \n-            "tool_version": null, \n-            "type": "data_input", \n-            "user_outputs": []\n-        }, \n-        "2": {\n-            "annotation": "barcode, vector or adapter sequences to trim", \n-            "id": 2, \n-            "input_connections": {}, \n-            "inputs": [\n-                {\n-                    "description": "barcode, vector or adapter sequences to trim", \n-                    "name": "Trimming file"\n-                }\n-            ], \n-            "name": "Input dataset", \n-            "outputs": [], \n-            "position": {\n-                "left": 195.727294921875, \n-                "top": 544.8787841796875\n-            }, \n-            "tool_errors": null, \n-            "tool_id": null, \n-            "tool_state": "{\\"name\\": \\"Trimming file\\"}", \n-            "tool_version": null, \n-            "type": "data_input", \n-            "user_outputs": []\n-        }, \n-        "3": {\n-            "annotation": "", \n-            "id": 3, \n-            "input_connections": {\n-                "ref_inputs_0|ref_input": {\n-                    "id": 0, \n-                    "output_name": "output"\n-                }, \n-                "sff_inputs_0|sff_input": {\n-                    "id": 1, \n-                    "output_name": "output"\n-                }, \n-                "vt": {\n-                    "id": 2, \n-                    "output_name": "output"\n-                }\n-            }, \n-            "inputs": [], \n-            "name": "runMapping", \n-            "outputs": [\n-                {\n-                    "name": "newbler_metrics", \n-                    "type": "txt"\n-                }, \n-                {\n-                    "name": "read_status", \n-                    "type": "tabular"\n-                }, \n-                {\n-                    "name": "trimmed_reads_fasta", \n-                    "type": "fasta"\n-                }, \n-                {\n-                    "name": "trimmed_reads_qual", \n-                    "type": "qual454"\n-                }, \n-                {\n-                    "name": "alignment_info", \n-                    "type": "tabular"\n-                }, \n-                {\n-                    "name": "all_contigs_fasta", \n-                    "type": "fasta"\n-                }, \n-                {\n-                    "name": "all_contigs_qual", \n-                    "type": "qual454"\n-                }, \n-                {\n-   '..b'-                    "output_name": "outputfile"\n-                }, \n-                "inputTargetfile": {\n-                    "id": 6, \n-                    "output_name": "out_file1"\n-                }, \n-                "inputfastaFile": {\n-                    "id": 0, \n-                    "output_name": "output"\n-                }\n-            }, \n-            "inputs": [\n-                {\n-                    "description": "runtime parameter for tool Design primers to features", \n-                    "name": "min_size"\n-                }, \n-                {\n-                    "description": "runtime parameter for tool Design primers to features", \n-                    "name": "max_size"\n-                }\n-            ], \n-            "name": "Design primers to features", \n-            "outputs": [\n-                {\n-                    "name": "primer_outputfile", \n-                    "type": "tabular"\n-                }\n-            ], \n-            "position": {\n-                "left": 1442.6968994140625, \n-                "top": 314.98484802246094\n-            }, \n-            "post_job_actions": {}, \n-            "tool_errors": null, \n-            "tool_id": "toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers/Genetic_Marker_Design_2/1.0.0", \n-            "tool_state": "{\\"__page__\\": 0, \\"inputTargetfile\\": \\"null\\", \\"inputfastaFile\\": \\"null\\", \\"min_size\\": \\"{\\\\\\"__class__\\\\\\": \\\\\\"RuntimeValue\\\\\\"}\\", \\"inputSNPfile\\": \\"null\\", \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"max_size\\": \\"{\\\\\\"__class__\\\\\\": \\\\\\"RuntimeValue\\\\\\"}\\"}", \n-            "tool_version": "1.0.0", \n-            "type": "tool", \n-            "user_outputs": []\n-        }, \n-        "8": {\n-            "annotation": "Select successful design targets", \n-            "id": 8, \n-            "input_connections": {\n-                "input": {\n-                    "id": 7, \n-                    "output_name": "primer_outputfile"\n-                }\n-            }, \n-            "inputs": [], \n-            "name": "Select", \n-            "outputs": [\n-                {\n-                    "name": "out_file1", \n-                    "type": "input"\n-                }\n-            ], \n-            "position": {\n-                "left": 1692.6968994140625, \n-                "top": 316.92424011230469\n-            }, \n-            "post_job_actions": {}, \n-            "tool_errors": null, \n-            "tool_id": "Grep1", \n-            "tool_state": "{\\"__page__\\": 0, \\"input\\": \\"null\\", \\"invert\\": \\"\\\\\\"true\\\\\\"\\", \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"pattern\\": \\"\\\\\\"NONE\\\\\\"\\"}", \n-            "tool_version": "1.0.1", \n-            "type": "tool", \n-            "user_outputs": []\n-        }, \n-        "9": {\n-            "annotation": "Remove duplicates", \n-            "id": 9, \n-            "input_connections": {\n-                "inputFile": {\n-                    "id": 8, \n-                    "output_name": "out_file1"\n-                }\n-            }, \n-            "inputs": [], \n-            "name": "Unique", \n-            "outputs": [\n-                {\n-                    "name": "outputfile", \n-                    "type": "txt"\n-                }\n-            ], \n-            "position": {\n-                "left": 1900.6818237304688, \n-                "top": 310.90907287597656\n-            }, \n-            "post_job_actions": {}, \n-            "tool_errors": null, \n-            "tool_id": "toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers/uni_Mask_1/1.0.0", \n-            "tool_state": "{\\"__page__\\": 0, \\"chromInfo\\": \\"\\\\\\"/opt/galaxy_workflow/galaxy-pfr-production-2/tool-data/shared/ucsc/chrom/?.len\\\\\\"\\", \\"inputFile\\": \\"null\\"}", \n-            "tool_version": "1.0.0", \n-            "type": "tool", \n-            "user_outputs": []\n-        }\n-    }\n-}\n\\ No newline at end of file\n'
b
diff -r be070a68521e -r b321e0517be3 README.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,24 @@
+galaxy-pcr-markers
+==================
+
+Scripts for design of PCR-based Marker Assays from DNA sequence variant data, and xml wrappers for use in  Galaxy  workflow environment 
+
+Also available for download at Galaxy Toolshed http://toolshed.g2.bx.psu.edu/
+hg clone http://toolshed.g2.bx.psu.edu/repos/john-mccallum/pcr_markers
+
+NOTE that the primer design tool *design_primers.py*  relies on EMBOSS ePrimer3 which depends on Primer3 1.1.4.
+The updated tool *design_HRM_primers.py* does not have this restriction and should work with Primer3 V2.
+
+Please see development branch HRM for optimised design of high-resolution melting PCR assays using the uMelt web service at University of Utah.
+
+
+**CITATION**
+A Toolkit For Bulk PCR-Based Marker Design From Next-Generation Sequence Data: Application For Development Of A Framework Linkage Map In Bulb Onion (Allium cepa L.) (2012)
+
+Samantha Baldwin, Roopashree Revanna, Susan Thomson, Meeghan Pither-Joyce, Kathryn Wright, Ross Crowhurst, Mark Fiers, Leshi Chen, Richard MacKnight, John A. McCallum
+
+BMC Genomics 2012, 13:637  http://www.biomedcentral.com/1471-2164/13/637/abstract
+
+**Acknowledgements**
+Current development of these tools is funded by the New Zealand Ministry for Business, Innovation & Employment project 'Virtual Institute of Statistical Genetics' (VISG)
+See http://www.visg.co.nz
b
diff -r be070a68521e -r b321e0517be3 design_primers.py
--- a/design_primers.py Thu Oct 18 19:47:07 2012 -0400
+++ b/design_primers.py Thu May 22 20:30:19 2014 -0400
[
b'@@ -1,9 +1,13 @@\n-#!/usr/local/bin/python2.6\n-##design primers to features in multiple sequences\n-##usage: python  design_primers.py <fasta-file> <gff file> <file of target IDs> <prod_min_size> <prod_max_size>\n \n+#!/usr/bin/env python\n+##design primers to features in multiple sequences, with option to predict melting\n+#usage: design_HRM_primers.py [-h] -i IN_FILE -g GFF_FILE -T TARGET_FILE [-u]\n+#                             [-n MAX_PRIMERS] [-p PROD_MIN_SIZE]\n+#                             [-P PROD_MAX_SIZE] [-l OPT_PRIMER_LENGTH]\n+#                             [-m MAX_TM_DIFF] [-t OPTIMUM_TM]\n+#                             [-G OPT_GC_PERCENT] [-x MAXPOLYX] [-c GC_CLAMP]\n \n-#Copyright 2012 John McCallum & Leshi Chen\n+#Copyright 2013 John McCallum & Susan Thomson\n #New Zealand Institute for Plant and Food Research\n #This program is free software: you can redistribute it and/or modify\n #     it under the terms of the GNU General Public License as published by\n@@ -18,44 +22,86 @@\n #    You should have received a copy of the GNU General Public License\n #    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n \n-\n import os\n import StringIO\n import re\n-import tempfile\n-import subprocess\n import copy\n import sys\n from BCBio import GFF\n from BCBio.GFF import GFFExaminer\n from Bio import SeqIO\n-from Bio.Emboss.Applications import Primer3Commandline\n-from Bio.Emboss import Primer3\n+import run_p3 as P3\n+#import umelt_service as umelts\n+import argparse\t\n+\n+##Primer3 defaults or additional options defined as dictionary \n+def_dict={\n+\'PRIMER_MIN_SIZE\':\'18\',\n+\'PRIMER_MAX_SIZE\':\'25\',\n+\'PRIMER_MAX_NS_ACCEPTED\':\'1\'}\n+\n+#parse arguments\n+parser = argparse.ArgumentParser(description=\'Primer set design and melt prediction parameters\')\n+parser.add_argument(\'-i\', type=argparse.FileType(\'r\'), help="input sequence file, required", dest=\'in_file\', required=True)\n+parser.add_argument(\'-g\', type=argparse.FileType(\'r\'), help="input gff file with SNP and indels, required", dest=\'gff_file\', required=True)\n+parser.add_argument(\'-T\', type=argparse.FileType(\'r\'), help="input target SNP file, required", dest=\'target_file\', required=True)\n+parser.add_argument(\'-u\',help="do uMelt prediction, optional", dest=\'run_uMelt\',action=\'store_true\', default=False )\n+parser.add_argument(\'-n\', type=int, help="maximum number of primer pairs to return, default=5", dest=\'max_primers\', default=5) ## PRIMER_NUM_RETURN\n+parser.add_argument(\'-p\', type=int, help="minimum product size", dest=\'prod_min_size\', default=100)                             ## PRIMER_PRODUCT_SIZE_RANGE min\n+parser.add_argument(\'-P\', type=int, help="maximum product size", dest=\'prod_max_size\', default=300)                            ## PRIMER_PRODUCT_SIZE_RANGE max\n+parser.add_argument(\'-l\', type=int, help="optimum primer length", dest=\'opt_primer_length\', default=20)                        ## PRIMER_OPT_SIZE\n+parser.add_argument(\'-m\', type=int, help="maximum tm difference between primers", dest=\'max_tm_diff\', default=1)               ## PRIMER_PAIR_MAX_DIFF_TM\n+parser.add_argument(\'-t\', type=int, help="optimum Tm for primers, recommend range 59 to 61", dest=\'optimum_tm\', default=59)    ## PRIMER_OPT_TM\n+parser.add_argument(\'-G\', type=int, help="optimum GC percentage of primers", dest=\'opt_GC_percent\', default=50)                ## PRIMER_OPT_GC_PERCENT\n+parser.add_argument(\'-x\', type=int, help="maximum polyx, recommend less than 4", dest=\'maxpolyx\', default=3)                   ## PRIMER_MAX_POLY_X\n+parser.add_argument(\'-c\', type=int, help="number of C/Gs at end, recommend 2", dest=\'gc_clamp\', default=1)                     ## PRIMER_GC_CLAMP\n+\n+parser.add_argument(\'-e\', type=int, help="maximum allowable 3\'-anchored complementarity", dest=\'maxselfend\', default=3)                     ## PRIMER_MAX_SELF_END\n+parser.add_argument(\'-a\', type=int, help="maximum complementarity between left and right or self", dest=\'maxselfany\', default=8)                     ## PRIMER_MAX_SELF_ANY\n+parser.add_a'..b'", p3_exclude_str)\n-                        #add temporary output file to get the result\n-                        primer_cl.set_parameter("-outfile", tempproutfile)\n-                        #specify maximum different of tm\n-                        primer_cl.set_parameter("-maxdifftm",max_tm_diff )\n-                        #other useful parameters\n-                        primer_cl.set_parameter("-ogcpercent", opt_GC_percent)\n-                        primer_cl.set_parameter("-opolyxmax", maxpolyx)  \n-                        primer_cl.set_parameter("-osize", optimum_length)\n-                        #set product size range\n-                        primer_cl.set_parameter("-prange", productsizerange)\n-                        #using python subprocess method to run emboss command line programe with the parameters given\n-                        fnull = open(os.devnull, \'w\')\n-                        result=subprocess.check_call(str(primer_cl),shell=True ,stdout = fnull, stderr = fnull)\n-                        #read temporary outputfile\n-                        handle = open(tempproutfile)\n-                        record = Primer3.read(handle)\n-                        ##just return first set, if there is one\n-                        if len(record.primers) > 0:\n-                            primer= record.primers[0]\n-                            outputstr=[mytarget.id, primer.forward_seq,primer.reverse_seq,primer.size]\n-                        else:\n-                            outputstr=[mytarget.id,"NONE","NONE","NONE"]\n-                        print(\'\\t\'.join(map(str,outputstr)))\n+\t\t\texcludes_str=\' \'.join([str(x.location.start.position)+\',\'+str(x.location.end.position -x.location.start.position) for x in exclude_feat])\n+                        my_target_dict={\'SEQUENCE_ID\' : rec.name, \'SEQUENCE_TEMPLATE\': targetRec.seq.tostring(),\'SEQUENCE_TARGET\': str(target_feat.location.start.position) + \',1\',\'SEQUENCE_INTERNAL_EXCLUDED_REGION\': excludes_str}\n+                        my_target_dict.update(def_dict) ##add in defaults\n+\t\t\tresult=P3.run_P3(target_dict=my_target_dict)\n+                        if my_args.run_uMelt:\n+                            amp_seq=targetRec.seq ##need to make this conditional on getting a result >0 and melt=True\n+                            mutamp_seq=targetRec.seq.tomutable()\n+                            mutamp_seq[target_feat.location.start:target_feat.location.end]=target_feat.qualifiers[\'Variant_seq\'][0] #mutate to variant\n+\t\t\tfor primerset in result:\n+\t\t\t\tamp_start=int(primerset[\'PRIMER_LEFT\'].split(\',\')[0])\n+\t\t\t\tamp_end=int(primerset[\'PRIMER_RIGHT\'].split(\',\')[0])\n+                                ref_melt_Tm=0\n+                                var_melt_Tm=0\n+                                if my_args.run_uMelt:\n+                                    try:\n+                                        ref_melt_Tm=umelts.getTm(umelts.getmelt(amp_seq.tostring()[amp_start:amp_end+1]))\n+\t\t\t\t\tvar_melt_Tm=umelts.getTm(umelts.getmelt(mutamp_seq.tostring()[amp_start:amp_end+1]))\n+                                    except:\n+\t\t\t\t\tref_melt_Tm=0 ##preferably something more informative?\n+\t\t\t\t\tvar_melt_Tm=0 ##exception handling to be added\n+                                reference_seq=target_feat.qualifiers[\'Reference_seq\'][0]\n+                                if target_feat.qualifiers.has_key(\'Variant_seq\'):\n+                                    variant_seq=target_feat.qualifiers[\'Variant_seq\'][0]\n+                                else:\n+                                    variant_seq="NA"\n+                                print mytarget.id, featLocation + 1 ,reference_seq, variant_seq,amp_end-amp_start,primerset[\'PRIMER_LEFT_SEQUENCE\'],primerset[\'PRIMER_RIGHT_SEQUENCE\'], ref_melt_Tm,var_melt_Tm,abs(ref_melt_Tm-var_melt_Tm)#, amp_seq.tostring()[amp_start:amp_end+1], mutamp_seq.tostring()[amp_start:amp_end+1]\n \n-                        \n-in_gff_handle.close()\n-in_seq_handle.close()\n+my_args.gff_file.close()\n+my_args.in_file.close()\n+\n'
b
diff -r be070a68521e -r b321e0517be3 design_primers.xml
--- a/design_primers.xml Thu Oct 18 19:47:07 2012 -0400
+++ b/design_primers.xml Thu May 22 20:30:19 2014 -0400
b
@@ -1,14 +1,25 @@
 <?xml version="1.0"?>
 <tool id="Genetic_Marker_Design_2" name="Design primers to features">
   <description>Design PCR Primers to Features</description>
-  <command interpreter="python">design_primers.py $inputfastaFile $inputSNPfile $inputTargetfile $min_size $max_size >  $primer_outputfile  </command>
+ <command interpreter="python -W ignore">
+      #if 'Yes' in $uMelt.value
+          design_primers.py -i $inputfastaFile -g $inputSNPfile -T $inputTargetfile -p $min_size -P $max_size -u >  $primer_outputfile
+      #else
+          design_primers.py -i $inputfastaFile -g $inputSNPfile -T $inputTargetfile -p $min_size -P $max_size  >  $primer_outputfile  
+      #end if
+       </command>
+
   <inputs>
     <param format="fasta" name="inputfastaFile" type="data" label="Multifasta Source file" />
     <param format="gff3" name="inputSNPfile" type="data" label="annotation file(Gff3)" />
     <param format="txt" name="inputTargetfile" type="data" optional="false" label="Target file" help="IN FORMAT Sequence id:source:type:start e.g. 1174806:gsMapper:SNP:292" ></param>
 <param name="min_size" size="20" type="text" value="75" label="Minimum Product Size Range" />
      <param name="max_size" size="20" type="text" value="100" label="Maximum Product Size Range" />
-  </inputs>
+ <param name="uMelt"  type="select"  label="uMelt prediction for HRM">
+            <option value="No" selected= "true">No</option>
+            <option value="Yes">Yes</option>
+         </param>
+ </inputs>
   <outputs>
      <data format="tabular"  name="primer_outputfile" />
   </outputs>
@@ -18,6 +29,7 @@
 **TIP**
 
 This tool designs primer pairs to flank features
+Optionally it can predict reference and variant Tm using the uMelt web service provided by University of Utah
 
 It takes 
 
b
diff -r be070a68521e -r b321e0517be3 find_CAPS.xml
--- a/find_CAPS.xml Thu Oct 18 19:47:07 2012 -0400
+++ b/find_CAPS.xml Thu May 22 20:30:19 2014 -0400
b
@@ -9,6 +9,13 @@
   <outputs>
      <data format="interval" name="outputfile" />
   </outputs>
+  <tests>
+        <test>
+                <param name="inputSNPGff3File" value="targets.gff" ftype="gff3"/>
+                <param name="inputFasta" value="targets.fasta" ftype="fasta"/>
+                <output name="outputfile" file="find_caps_output.txt"/>
+        </test>
+  </tests>
 <help>
 .. class:: infomark
 
@@ -32,7 +39,7 @@
 
 
 
-*input GFF*
+*input GFF3*
 
 ::
 
b
diff -r be070a68521e -r b321e0517be3 gsmapper2gff.sh
--- a/gsmapper2gff.sh Thu Oct 18 19:47:07 2012 -0400
+++ b/gsmapper2gff.sh Thu May 22 20:30:19 2014 -0400
b
@@ -15,6 +15,8 @@
 #    You should have received a copy of the GNU General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+##usage gsmapper2gff.sh <input 454HCDiffs.txt or 454AllDiffs.txt file>  <output gff3 file>
+
 
 infile=$1
 outfile=$2
b
diff -r be070a68521e -r b321e0517be3 ipcress.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcress.xml Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<tool id="ipcress" name="In-Silico PCR Experiment Simulation System">
+        <description>In-Silico PCR Experiment Simulation System</description>
+        <version_command>ipcress -v</version_command>
+        <command>
+                awk -v min=$min_length -v max=$max_length '{print $1,$2,$3, min, max}' $input_primers | ipcress -i /dev/stdin -s $input_seqs -m $mismatch $products_as_fasta $pretty -S $seed_length > $pcr_products
+        </command>
+        <inputs>
+                <param format="txt" name="input_primers" type="data" label="PCR Experiment Data" />
+                <param format="fasta" name="input_seqs" type="data" label="Sequences (Fasta)" />
+                <param name="mismatch" size="10" type="integer" value="0" label="Mismatches allowed per primer" />
+                <param name="min_length" size="10" type="integer" value="50" label="Minimum PCR product length" />
+                <param name="max_length" size="10" type="integer" value="100" label="Maximum PCR product length" />
+                <param name="products_as_fasta" type="boolean" truevalue="-P" falsevalue="" label="Display PCR products as a FASTA format sequence" />
+                <param name="pretty" type="boolean" truevalue="-p 1" falsevalue="-p 0" checked="true" label="Display Result in pretty format" />
+                <param name="seed_length" size="10" type="integer" value="12" label="Seed length: 0 => Use Full Primer Length" />
+        </inputs>
+        <outputs>
+                <data format="txt" name="pcr_products" />
+        </outputs>
+        <stdio>
+                <exit_code range="1:" level="fatal" description="Fatal Error" />
+        </stdio>
+        <tests>
+        <test>
+                <param name="input_primers" value="ipcress_test_input.txt" ftype="txt" />
+                <param name="input_seqs" value="targets.fasta" ftype="fasta" />
+                <output name="pcr_products" file="ipcress.out" />
+        </test>
+        </tests>
+        <help>
+ipcress is the In-silico PCR Experiment Simulation System.
+
+This is a tool for simulation of PCR experiments. You supply a file containing primers and a set of sequences, and it predicts PCR products.
+
+INPUT FORMAT
+
+The input for ipcress is a simple white-space delimited file describing
+one experiment per line.  Each line contains the following 5 fields:
+
+id                An identifier for this experiment
+primer_A          Sequence for the first primer
+primer_B          Sequence for the second primer
+min_product_len   Minimum product length to report
+max_product_len   Maximum product length to report
+
+Here is an example line in this format:
+
+ID0001 CATGCATGCATGC CGATGCANGCATGCT 900 1100
+
+MANUAL
+
+https://www.ebi.ac.uk/~guy/exonerate/ipcress.man.html
+
+        </help>
+</tool>
b
diff -r be070a68521e -r b321e0517be3 ipcress_gff.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcress_gff.xml Thu May 22 20:30:19 2014 -0400
[
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<tool id="ipcress_gff" name="IPCRESS to GFF">
+        <description>Convert output from In-Silico PCR Experiment Simulation System to GFF format</description>
+        <command>
+                awk '/^ipcress:/, split($2,HIT,":"){print HIT[1],$3,$4,$5,$6,$7,$8,$9,$10,$11}' $input1 | awk -v OFS='\t' '{print $1,"ipcress","PCR_product",$5,$8,".","+",".","Name="$2}' > $output1
+        </command>
+        <inputs>
+                <param format="txt" name="input1" type="data" label="iPCRESS ouptut" />
+        </inputs>
+        <outputs>
+                <data format="gff" name="output1" />
+        </outputs>
+        <tests>
+        <test>
+                <param name="input1" value="ipcress.out" ftype="txt" />
+                <output name="output1" file="ipcress_gff.out" />
+        </test>
+        </tests>
+        <help>
+Uses awk to parse IPCRESS output to gff file format
+        </help>
+</tool>
b
diff -r be070a68521e -r b321e0517be3 parse_primersearch.pl
--- a/parse_primersearch.pl Thu Oct 18 19:47:07 2012 -0400
+++ b/parse_primersearch.pl Thu May 22 20:30:19 2014 -0400
[
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #parse_primersearch.pl
 #reformat EMBOSS primersearch output into columnar Galaxy interval format 
-
+#usage  perl parse_primersearch.pl <input primersearch file> <tabular output file>
 #Copyright 2012 John McCallum 
 #New Zealand Institute for Plant and Food Research
 #This program is free software: you can redistribute it and/or modify
@@ -20,7 +20,7 @@
 open (IN, "<$ARGV[0]");
 open (OUT, ">$ARGV[1]");
 
-#print OUT  "primerset_id","\t","sequence_id","\t","hit_start","\","mismatches","\t","amplimer_size",\n";
+
 
 
 
b
diff -r be070a68521e -r b321e0517be3 run_p3.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/run_p3.py Thu May 22 20:30:19 2014 -0400
[
@@ -0,0 +1,49 @@
+#!/usr/bin/pyrthon
+##run primer3 by passing Python dictionary
+
+#un_P3.py
+
+import subprocess as sp
+import copy
+
+
+if "check_output" not in dir(sp): # duck punch it in!
+    def f(*popenargs, **kwargs):
+        if 'stdout' in kwargs:
+            raise ValueError('stdout argument not allowed, it will be overridden.')
+        process = sp.Popen(stdout=sp.PIPE, *popenargs, **kwargs)
+        output, unused_err = process.communicate()
+        retcode = process.poll()
+        if retcode:
+            cmd = kwargs.get("args")
+            if cmd is None:
+                cmd = popenargs[0]
+            raise sp.CalledProcessError(retcode,cmd)
+        return output
+    sp.check_output = f
+
+
+
+
+##call P3 with dict of args, returns dict, no exception handling 
+def run_P3(target_dict):
+    p3_str=''
+    for key in target_dict:
+        p3_str+=key
+        p3_str+='='
+        p3_str+=str(target_dict[key])
+        p3_str+='\n'
+    p3_str+='='
+    input_str='echo -e \"' + p3_str + '\" | primer3_core '
+###exception handling to be added here
+    output = sp.check_output(input_str,shell=True)
+    output_fields=output.split('\n')
+    ##put output into a dict, omitting trailing =
+    P3_dict=dict([X.split('=') for X in output_fields][:len(output_fields)-2])
+    ##return iterable list
+    primer_list=[dict(PRIMER_RIGHT_SEQUENCE=P3_dict.get('PRIMER_RIGHT_'+ str(X) + '_SEQUENCE'),PRIMER_LEFT=P3_dict.get('PRIMER_LEFT_'+ str(X) ),PRIMER_RIGHT=P3_dict.get('PRIMER_RIGHT_'+ str(X) ),PRIMER_LEFT_SEQUENCE=P3_dict.get('PRIMER_LEFT_'+ str(X) + '_SEQUENCE')) for X in range(0,int(P3_dict.get('PRIMER_RIGHT_NUM_RETURNED'))-1)]
+    return(primer_list)
+
+
+
+
b
diff -r be070a68521e -r b321e0517be3 test-data/find_caps_output.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/find_caps_output.txt Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,1 @@
+k69_93535 1147 1149 k69_93535:SAMTOOLS:SNP:1147 TaqI variant
b
diff -r be070a68521e -r b321e0517be3 test-data/freebayes_out.vcf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/freebayes_out.vcf Thu May 22 20:30:19 2014 -0400
b
b'@@ -0,0 +1,500 @@\n+##fileformat=VCFv4.1\n+##fileDate=20140410\n+##source=freeBayes version 0.9.6\n+##reference=localref.fa\n+##phasing=none\n+##commandline="freebayes --bam localbam_0.bam --fasta-reference localref.fa --vcf /data/galaxy/galaxy-dist/database/files/000/dataset_31.dat"\n+##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of samples with data">\n+##INFO=<ID=DP,Number=1,Type=Integer,Description="Total read depth at the locus">\n+##INFO=<ID=AC,Number=A,Type=Integer,Description="Total number of alternate alleles in called genotypes">\n+##INFO=<ID=AN,Number=1,Type=Integer,Description="Total number of alleles in called genotypes">\n+##INFO=<ID=AF,Number=A,Type=Float,Description="Estimated allele frequency in the range (0,1]">\n+##INFO=<ID=RO,Number=1,Type=Integer,Description="Reference allele observations">\n+##INFO=<ID=AO,Number=A,Type=Integer,Description="Alternate allele observations">\n+##INFO=<ID=SRP,Number=1,Type=Float,Description="Strand balance probability for the reference allele: Phred-scaled upper-bounds estimate of the probability of observing the deviation between SRF and SRR given E(SRF/SRR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=SAP,Number=A,Type=Float,Description="Strand balance probability for the alternate allele: Phred-scaled upper-bounds estimate of the probability of observing the deviation between SAF and SAR given E(SAF/SAR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=AB,Number=A,Type=Float,Description="Allele balance at heterozygous sites: a number between 0 and 1 representing the ratio of reads showing the reference allele to all reads, considering only reads from individuals called as heterozygous">\n+##INFO=<ID=ABP,Number=A,Type=Float,Description="Allele balance probability at heterozygous sites: Phred-scaled upper-bounds estimate of the probability of observing the deviation between ABR and ABA given E(ABR/ABA) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=RUN,Number=A,Type=Integer,Description="Run length: the number of consecutive repeats of the alternate allele in the reference genome">\n+##INFO=<ID=RPP,Number=A,Type=Float,Description="Read Placement Probability: Phred-scaled upper-bounds estimate of the probability of observing the deviation between RPL and RPR given E(RPL/RPR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=RPPR,Number=1,Type=Float,Description="Read Placement Probability for reference observations: Phred-scaled upper-bounds estimate of the probability of observing the deviation between RPL and RPR given E(RPL/RPR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=EPP,Number=A,Type=Float,Description="End Placement Probability: Phred-scaled upper-bounds estimate of the probability of observing the deviation between EL and ER given E(EL/ER) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=EPPR,Number=1,Type=Float,Description="End Placement Probability for reference observations: Phred-scaled upper-bounds estimate of the probability of observing the deviation between EL and ER given E(EL/ER) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=DPRA,Number=A,Type=Float,Description="Alternate allele depth ratio.  Ratio between depth in samples with each called alternate allele and those without.">\n+##INFO=<ID=XRM,Number=1,Type=Float,Description="Reference allele read mismatch rate: The rate of SNPs + MNPs + INDELs in reads supporting the reference allele.">\n+##INFO=<ID=XRS,Number=1,Type=Float,Description="Reference allele read SNP rate: The rate of per-base mismatches (SNPs + MNPs) in reads supporting the reference allele.">\n+##INFO=<ID=XRI,Number=1,Type=Float,Description="Reference allele read INDEL rate: The rate of INDELs (gaps) in reads supporting the reference allele.">\n+##INFO=<ID=XAM,Number=A,Type=Float,Description="Alternate allele read mismatch rate: The rate of SNPs + MNPs + INDELs in reads supporting the alternate allele, excluding the called variant.">\n+##INFO=<ID=XAS,Number=A,Type=Float,Descriptio'..b'.50735\t.\tAB=0.333333;ABP=3.73412;AC=1;AF=0.5;AN=2;AO=1;CIGAR=1X;DP=3;DPRA=0;EPP=5.18177;EPPR=3.0103;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=21;NS=1;NUMALT=1;ODDS=0.28531;PAIRED=0;PAIREDR=0;RO=2;RPP=5.18177;RPPR=7.35324;RUN=1;SAP=5.18177;SRP=3.0103;TYPE=snp;XAI=0;XAM=0.03;XAS=0.03;XRI=0;XRM=0.01;XRS=0.01\tGT:GQ:DP:RO:QR:AO:QA:GL\t0/1:2.38104:3:2:34:1:17:-1.7,-0.425969,-3.23\n+Chr1\t62665\t.\tG\tC\t2.50735\t.\tAB=0.333333;ABP=3.73412;AC=1;AF=0.5;AN=2;AO=1;CIGAR=1X;DP=3;DPRA=0;EPP=5.18177;EPPR=3.0103;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=21;NS=1;NUMALT=1;ODDS=0.28531;PAIRED=0;PAIREDR=0;RO=2;RPP=5.18177;RPPR=7.35324;RUN=1;SAP=5.18177;SRP=3.0103;TYPE=snp;XAI=0;XAM=0.03;XAS=0.03;XRI=0;XRM=0.01;XRS=0.01\tGT:GQ:DP:RO:QR:AO:QA:GL\t0/1:2.38104:3:2:34:1:17:-1.7,-0.425969,-3.23\n+Chr1\t62686\t.\tA\tT\t4.77465\t.\tAB=0.5;ABP=3.0103;AC=1;AF=0.5;AN=2;AO=1;CIGAR=1X;DP=2;DPRA=0;EPP=5.18177;EPPR=5.18177;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=0;NS=1;NUMALT=1;ODDS=0.00237165;PAIRED=0;PAIREDR=0;RO=1;RPP=5.18177;RPPR=5.18177;RUN=1;SAP=5.18177;SRP=5.18177;TYPE=snp;XAI=0;XAM=0.03;XAS=0.03;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t0/1:1.76435:2:1:17:1:17:-1.7,-0.30103,-1.7\n+Chr1\t62697\t.\tC\tA\t4.77465\t.\tAB=0.5;ABP=3.0103;AC=1;AF=0.5;AN=2;AO=1;CIGAR=1X;DP=2;DPRA=0;EPP=5.18177;EPPR=5.18177;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=0;NS=1;NUMALT=1;ODDS=0.00237165;PAIRED=0;PAIREDR=0;RO=1;RPP=5.18177;RPPR=5.18177;RUN=1;SAP=5.18177;SRP=5.18177;TYPE=snp;XAI=0;XAM=0.03;XAS=0.03;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t0/1:1.76435:2:1:17:1:17:-1.7,-0.30103,-1.7\n+Chr1\t62758\t.\tG\tT\t17.1701\t.\tAB=0;ABP=0;AC=2;AF=1;AN=2;AO=1;CIGAR=1X;DP=1;DPRA=0;EPP=5.18177;EPPR=0;HWE=-0;LEN=1;MEANALT=1;MQM=0;MQMR=0;NS=1;NUMALT=1;ODDS=3.91202;PAIRED=0;PAIREDR=0;RO=0;RPP=5.18177;RPPR=0;RUN=1;SAP=5.18177;SRP=0;TYPE=snp;XAI=0;XAM=0.01;XAS=0.01;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t1/1:14.1547:1:0:0:1:17:-1.7,-0.30103,0\n+Chr1\t62769\t.\tA\tC\t17.1701\t.\tAB=0;ABP=0;AC=2;AF=1;AN=2;AO=1;CIGAR=1X;DP=1;DPRA=0;EPP=5.18177;EPPR=0;HWE=-0;LEN=1;MEANALT=1;MQM=0;MQMR=0;NS=1;NUMALT=1;ODDS=3.91202;PAIRED=0;PAIREDR=0;RO=0;RPP=5.18177;RPPR=0;RUN=1;SAP=5.18177;SRP=0;TYPE=snp;XAI=0;XAM=0.01;XAS=0.01;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t1/1:14.1547:1:0:0:1:17:-1.7,-0.30103,0\n+Chr1\t62841\t.\tT\tG\t17.1701\t.\tAB=0;ABP=0;AC=2;AF=1;AN=2;AO=1;CIGAR=1X;DP=1;DPRA=0;EPP=5.18177;EPPR=0;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=0;NS=1;NUMALT=1;ODDS=3.91202;PAIRED=0;PAIREDR=0;RO=0;RPP=5.18177;RPPR=0;RUN=1;SAP=5.18177;SRP=0;TYPE=snp;XAI=0;XAM=0.01;XAS=0.01;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t1/1:14.1547:1:0:0:1:17:-1.7,-0.30103,0\n+Chr1\t62852\t.\tC\tG\t17.1701\t.\tAB=0;ABP=0;AC=2;AF=1;AN=2;AO=1;CIGAR=1X;DP=1;DPRA=0;EPP=5.18177;EPPR=0;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=0;NS=1;NUMALT=1;ODDS=3.91202;PAIRED=0;PAIREDR=0;RO=0;RPP=5.18177;RPPR=0;RUN=1;SAP=5.18177;SRP=0;TYPE=snp;XAI=0;XAM=0.01;XAS=0.01;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t1/1:14.1547:1:0:0:1:17:-1.7,-0.30103,0\n+Chr1\t62929\t.\tC\tA\t17.1701\t.\tAB=0;ABP=0;AC=2;AF=1;AN=2;AO=1;CIGAR=1X;DP=1;DPRA=0;EPP=5.18177;EPPR=0;HWE=-0;LEN=1;MEANALT=1;MQM=18;MQMR=0;NS=1;NUMALT=1;ODDS=3.91202;PAIRED=0;PAIREDR=0;RO=0;RPP=5.18177;RPPR=0;RUN=1;SAP=5.18177;SRP=0;TYPE=snp;XAI=0;XAM=0;XAS=0;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t1/1:14.1547:1:0:0:1:17:-1.7,-0.30103,0\n+Chr1\t63049\t.\tA\tT\t17.1701\t.\tAB=0;ABP=0;AC=2;AF=1;AN=2;AO=1;CIGAR=1X;DP=1;DPRA=0;EPP=5.18177;EPPR=0;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=0;NS=1;NUMALT=1;ODDS=3.91202;PAIRED=0;PAIREDR=0;RO=0;RPP=5.18177;RPPR=0;RUN=1;SAP=5.18177;SRP=0;TYPE=snp;XAI=0;XAM=0.01;XAS=0.01;XRI=0;XRM=0;XRS=0;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t1/1:14.1547:1:0:0:1:17:-1.7,-0.30103,0\n+Chr1\t63120\t.\tC\tA\t4.77465\t.\tAB=0.5;ABP=3.0103;AC=1;AF=0.5;AN=2;AO=1;CIGAR=1X;DP=2;DPRA=0;EPP=5.18177;EPPR=5.18177;HWE=-0;LEN=1;MEANALT=1;MQM=42;MQMR=18;NS=1;NUMALT=1;ODDS=0.00237165;PAIRED=0;PAIREDR=0;RO=1;RPP=5.18177;RPPR=5.18177;RUN=1;SAP=5.18177;SRP=5.18177;TYPE=snp;XAI=0;XAM=0.01;XAS=0.01;XRI=0;XRM=0.01;XRS=0.01;BVAR\tGT:GQ:DP:RO:QR:AO:QA:GL\t0/1:1.76435:2:1:17:1:17:-1.7,-0.30103,-1.7\n'
b
diff -r be070a68521e -r b321e0517be3 test-data/freebayes_vcf_to_gff_output.gff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/freebayes_vcf_to_gff_output.gff Thu May 22 20:30:19 2014 -0400
b
b'@@ -0,0 +1,449 @@\n+#gff-version 3\n+Chr1\tSAMTOOLS\tSNP\t106\t106\t17.1701\t.\t.\tID=Chr1:SNP:106;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t200\t200\t17.1701\t.\t.\tID=Chr1:SNP:200;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t217\t217\t4.77465\t.\t.\tID=Chr1:SNP:217;Variant_seq=T;Reference_seq=G;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t249\t249\t4.77465\t.\t.\tID=Chr1:SNP:249;Variant_seq=A;Reference_seq=T;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t586\t586\t17.1701\t.\t.\tID=Chr1:SNP:586;Variant_seq=T;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t669\t669\t4.77465\t.\t.\tID=Chr1:SNP:669;Variant_seq=G;Reference_seq=T;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t682\t682\t4.77465\t.\t.\tID=Chr1:SNP:682;Variant_seq=G;Reference_seq=T;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t1007\t1007\t17.1701\t.\t.\tID=Chr1:SNP:1007;Variant_seq=A;Reference_seq=T;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1012\t1012\t17.1701\t.\t.\tID=Chr1:SNP:1012;Variant_seq=AGA;Reference_seq=TGT;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1056\t1056\t17.1701\t.\t.\tID=Chr1:SNP:1056;Variant_seq=C;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1067\t1067\t17.1701\t.\t.\tID=Chr1:SNP:1067;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1257\t1257\t17.1701\t.\t.\tID=Chr1:SNP:1257;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1305\t1305\t17.1701\t.\t.\tID=Chr1:SNP:1305;Variant_seq=C;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1319\t1319\t17.1701\t.\t.\tID=Chr1:SNP:1319;Variant_seq=C;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1330\t1330\t17.1701\t.\t.\tID=Chr1:SNP:1330;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1441\t1441\t17.1701\t.\t.\tID=Chr1:SNP:1441;Variant_seq=T;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1451\t1451\t17.1701\t.\t.\tID=Chr1:SNP:1451;Variant_seq=A;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1460\t1460\t17.1701\t.\t.\tID=Chr1:SNP:1460;Variant_seq=ATCTC;Reference_seq=CTCTG;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1480\t1480\t17.1701\t.\t.\tID=Chr1:SNP:1480;Variant_seq=C;Reference_seq=G;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1525\t1525\t17.1701\t.\t.\tID=Chr1:SNP:1525;Variant_seq=T;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t1670\t1670\t4.77465\t.\t.\tID=Chr1:SNP:1670;Variant_seq=T;Reference_seq=G;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t1673\t1673\t4.77465\t.\t.\tID=Chr1:SNP:1673;Variant_seq=G;Reference_seq=T;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t1700\t1700\t4.77465\t.\t.\tID=Chr1:SNP:1700;Variant_seq=TG;Reference_seq=GC;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t1711\t1711\t4.77465\t.\t.\tID=Chr1:SNP:1711;Variant_seq=G;Reference_seq=T;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t2117\t2117\t17.1701\t.\t.\tID=Chr1:SNP:2117;Variant_seq=A;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t2154\t2154\t17.1701\t.\t.\tID=Chr1:SNP:2154;Variant_seq=A;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t2485\t2485\t17.1701\t.\t.\tID=Chr1:SNP:2485;Variant_seq=C;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t2490\t2490\t17.1701\t.\t.\tID=Chr1:SNP:2490;Variant_seq=CAC;Reference_seq=AAA;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t2906\t2906\t17.1701\t.\t.\tID=Chr1:SNP:2906;Variant_seq=T;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t2925\t2925\t17.1701\t.\t.\tID=Chr1:SNP:2925;Variant_seq=T;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t3371\t3371\t17.1701\t.\t.\tID=Chr1:SNP:3371;Variant_seq=GCCTA;Reference_seq=CCCTT;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t3389\t3389\t17.1701\t.\t.\tID=Chr1:SNP:3389;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t3431\t3431\t17.1701\t.\t.\tID=Chr1:SNP:3431;Variant_seq=T;Reference_seq=G;'..b'reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t59546\t59546\t17.1701\t.\t.\tID=Chr1:SNP:59546;Variant_seq=A;Reference_seq=T;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t59554\t59554\t46.0861\t.\t.\tID=Chr1:SNP:59554;Variant_seq=CG;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61378\t61378\t17.1701\t.\t.\tID=Chr1:SNP:61378;Variant_seq=A;Reference_seq=T;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61387\t61387\t17.1701\t.\t.\tID=Chr1:SNP:61387;Variant_seq=C;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61599\t61599\t17.1701\t.\t.\tID=Chr1:SNP:61599;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61652\t61652\t17.1701\t.\t.\tID=Chr1:SNP:61652;Variant_seq=T;Reference_seq=G;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61882\t61882\t17.1701\t.\t.\tID=Chr1:SNP:61882;Variant_seq=A;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61904\t61904\t17.1701\t.\t.\tID=Chr1:SNP:61904;Variant_seq=A;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61913\t61913\t17.1701\t.\t.\tID=Chr1:SNP:61913;Variant_seq=TGC;Reference_seq=AGG;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t61957\t61957\t17.1701\t.\t.\tID=Chr1:SNP:61957;Variant_seq=G;Reference_seq=T;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62010\t62010\t17.1701\t.\t.\tID=Chr1:SNP:62010;Variant_seq=G;Reference_seq=T;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62056\t62056\t4.77465\t.\t.\tID=Chr1:SNP:62056;Variant_seq=A;Reference_seq=T;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t62168\t62168\t17.1701\t.\t.\tID=Chr1:SNP:62168;Variant_seq=GCGCG;Reference_seq=CCGCC;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62290\t62290\t17.1701\t.\t.\tID=Chr1:SNP:62290;Variant_seq=A;Reference_seq=T;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62446\t62446\t2.50735\t.\t.\tID=Chr1:SNP:62446;Variant_seq=G;Reference_seq=C;Total_reads=3;Zygosity=3:HET \n+Chr1\tSAMTOOLS\tSNP\t62447\t62447\t2.50735\t.\t.\tID=Chr1:SNP:62447;Variant_seq=ATAC;Reference_seq=CTAG;Total_reads=3;Zygosity=3:HET \n+Chr1\tSAMTOOLS\tSNP\t62462\t62462\t2.50735\t.\t.\tID=Chr1:SNP:62462;Variant_seq=G;Reference_seq=C;Total_reads=3;Zygosity=3:HET \n+Chr1\tSAMTOOLS\tSNP\t62478\t62478\t2.50735\t.\t.\tID=Chr1:SNP:62478;Variant_seq=G;Reference_seq=C;Total_reads=3;Zygosity=3:HET \n+Chr1\tSAMTOOLS\tSNP\t62514\t62514\t4.77465\t.\t.\tID=Chr1:SNP:62514;Variant_seq=T;Reference_seq=G;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t62598\t62598\t17.1701\t.\t.\tID=Chr1:SNP:62598;Variant_seq=T;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62634\t62634\t4.77465\t.\t.\tID=Chr1:SNP:62634;Variant_seq=G;Reference_seq=T;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t62658\t62658\t2.50735\t.\t.\tID=Chr1:SNP:62658;Variant_seq=G;Reference_seq=T;Total_reads=3;Zygosity=3:HET \n+Chr1\tSAMTOOLS\tSNP\t62665\t62665\t2.50735\t.\t.\tID=Chr1:SNP:62665;Variant_seq=C;Reference_seq=G;Total_reads=3;Zygosity=3:HET \n+Chr1\tSAMTOOLS\tSNP\t62686\t62686\t4.77465\t.\t.\tID=Chr1:SNP:62686;Variant_seq=T;Reference_seq=A;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t62697\t62697\t4.77465\t.\t.\tID=Chr1:SNP:62697;Variant_seq=A;Reference_seq=C;Total_reads=2;Zygosity=2:HET \n+Chr1\tSAMTOOLS\tSNP\t62758\t62758\t17.1701\t.\t.\tID=Chr1:SNP:62758;Variant_seq=T;Reference_seq=G;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62769\t62769\t17.1701\t.\t.\tID=Chr1:SNP:62769;Variant_seq=C;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62841\t62841\t17.1701\t.\t.\tID=Chr1:SNP:62841;Variant_seq=G;Reference_seq=T;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62852\t62852\t17.1701\t.\t.\tID=Chr1:SNP:62852;Variant_seq=G;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t62929\t62929\t17.1701\t.\t.\tID=Chr1:SNP:62929;Variant_seq=A;Reference_seq=C;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t63049\t63049\t17.1701\t.\t.\tID=Chr1:SNP:63049;Variant_seq=T;Reference_seq=A;Total_reads=1;Zygosity=1:HOM_mut \n+Chr1\tSAMTOOLS\tSNP\t63120\t63120\t4.77465\t.\t.\tID=Chr1:SNP:63120;Variant_seq=A;Reference_seq=C;Total_reads=2;Zygosity=2:HET \n'
b
diff -r be070a68521e -r b321e0517be3 test-data/ipcress.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ipcress.out Thu May 22 20:30:19 2014 -0400
b
b"@@ -0,0 +1,341 @@\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_93535:SAMTOOLS:SNP:1147\n+    Primers: A B\n+     Target: k69_93535:filter(unmasked)\n+    Matches: 20/20 23/23\n+    Product: 83 bp (range 50-100)\n+Result type: forward\n+\n+...GGACAGGGAAGCTTCATAGG................................. # forward\n+   ||||||||||||||||||||-->\n+5'-GGACAGGGAAGCTTCATAGG-3' 3'-CTCCTAAACTAGAAAGTCCAAAC-5' # primers\n+                           <--|||||||||||||||||||||||\n+..............................CTCCTAAACTAGAAAGTCCAAAC... # revcomp\n+--\n+ipcress: k69_93535:filter(unmasked) k69_93535:SAMTOOLS:SNP:1147 83 A 1088 0 B 1148 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_93535:SAMTOOLS:SNP:1147\n+    Primers: A B\n+     Target: k69_93535:filter(unmasked)\n+    Matches: 21/21 21/21\n+    Product: 86 bp (range 50-100)\n+Result type: forward\n+\n+...CTTTGAGTCTGAACGCATTTG............................... # forward\n+   |||||||||||||||||||||-->\n+5'-CTTTGAGTCTGAACGCATTTG-3' 3'-CTTCTTTGCCCTCTACTTTGT-5' # primers\n+                            <--|||||||||||||||||||||\n+...............................CTTCTTTGCCCTCTACTTTGT... # revcomp\n+--\n+ipcress: k69_93535:filter(unmasked) k69_93535:SAMTOOLS:SNP:1147 86 A 1109 0 B 1174 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_93535:SAMTOOLS:SNP:1147\n+    Primers: A B\n+     Target: k69_93535:filter(unmasked)\n+    Matches: 20/20 20/20\n+    Product: 87 bp (range 50-100)\n+Result type: forward\n+\n+...TTTGAGTCTGAACGCATTTG.............................. # forward\n+   ||||||||||||||||||||-->\n+5'-TTTGAGTCTGAACGCATTTG-3' 3'-CTTTGCCCTCTACTTTGTTC-5' # primers\n+                           <--||||||||||||||||||||\n+..............................CTTTGCCCTCTACTTTGTTC... # revcomp\n+--\n+ipcress: k69_93535:filter(unmasked) k69_93535:SAMTOOLS:SNP:1147 87 A 1110 0 B 1177 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_93535:SAMTOOLS:SNP:1147\n+    Primers: A B\n+     Target: k69_93535:filter(unmasked)\n+    Matches: 21/21 21/21\n+    Product: 89 bp (range 50-100)\n+Result type: forward\n+\n+...CTTTGAGTCTGAACGCATTTG............................... # forward\n+   |||||||||||||||||||||-->\n+5'-CTTTGAGTCTGAACGCATTTG-3' 3'-CTTTGCCCTCTACTTTGTTCT-5' # primers\n+                            <--|||||||||||||||||||||\n+...............................CTTTGCCCTCTACTTTGTTCT... # revcomp\n+--\n+ipcress: k69_93535:filter(unmasked) k69_93535:SAMTOOLS:SNP:1147 89 A 1109 0 B 1177 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_93535:SAMTOOLS:SNP:1147\n+    Primers: A B\n+     Target: k69_93535:filter(unmasked)\n+    Matches: 21/21 21/21\n+    Product: 93 bp (range 50-100)\n+Result type: forward\n+\n+...CTTTGAGTCTGAACGCATTTG............................... # forward\n+   |||||||||||||||||||||-->\n+5'-CTTTGAGTCTGAACGCATTTG-3' 3'-GCCCTCTACTTTGTTCTAAAC-5' # primers\n+                            <--|||||||||||||||||||||\n+...............................GCCCTCTACTTTGTTCTAAAC... # revcomp\n+--\n+ipcress: k69_93535:filter(unmasked) k69_93535:SAMTOOLS:SNP:1147 93 A 1109 0 B 1181 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_93535:SAMTOOLS:SNP:1336\n+    Primers: A B\n+     Target: k69_93535:filter(unmasked)\n+    Matches: 20/20 22/22\n+    Product: 82 bp (range 50-100)\n+Result type: forward\n+\n+...TTAGAAGGAACGCGAGAAGG................................ # forward\n+   ||||||||||||||||||||-->\n+5'-TTAGAAGGAACGCGAGAAGG-3' 3'-GAATGCGGATCAAACCAACAAC-5' # primers\n+                           <--||||||||||||||||||||||\n+..............................GAATGCGGATCAAACCAACAAC... # revcomp\n+--\n+ipcress: k69_93535:filter(unmasked) k69_93535:SAMTOOLS:SNP:1336 82 A 1297 0 B 1357 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_93535:SAMTOOLS:SNP:1336\n+    Primers: A B\n+     Target: k69_93535:filter(unmasked)\n+    Matches: 20/20 20/20\n+    Product: 85 bp (range 50-100)\n+Result type: forward\n+\n+...TTTAGAAGGAACGCGAGAAG.............................. # forward\n+   ||||||||||||||||||||-->\n+5'-TTTAGAAGGAACGCGAGAAG-3' 3'-GCGGATCAAACCAACAACAA-5' # primer"..b"+5'-CAAATCCAAACATGTTATCTTCTTC-3' 3'-GCAGTCTAGTAGTTGTGCTT-5' # primers\n+                                <--||||||||||||||||||||\n+...................................GCAGTCTAGTAGTTGTGCTT... # revcomp\n+--\n+ipcress: k69_98089:filter(unmasked) k69_98089:SAMTOOLS:SNP:30 96 A 1 0 B 77 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_98089:SAMTOOLS:SNP:30\n+    Primers: A B\n+     Target: k69_98089:filter(unmasked)\n+    Matches: 25/25 21/21\n+    Product: 97 bp (range 50-100)\n+Result type: forward\n+\n+...CAAATCCAAACATGTTATCTTCTTC............................... # forward\n+   |||||||||||||||||||||||||-->\n+5'-CAAATCCAAACATGTTATCTTCTTC-3' 3'-GCAGTCTAGTAGTTGTGCTTG-5' # primers\n+                                <--|||||||||||||||||||||\n+...................................GCAGTCTAGTAGTTGTGCTTG... # revcomp\n+--\n+ipcress: k69_98089:filter(unmasked) k69_98089:SAMTOOLS:SNP:30 97 A 1 0 B 77 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_98089:SAMTOOLS:SNP:550\n+    Primers: A B\n+     Target: k69_98089:filter(unmasked)\n+    Matches: 22/22 24/24\n+    Product: 88 bp (range 50-100)\n+Result type: forward\n+\n+...TGAATTGATACTGAAATTCGGG.................................. # forward\n+   ||||||||||||||||||||||-->\n+5'-TGAATTGATACTGAAATTCGGG-3' 3'-CTAACACCTTTGAAAGTACATACG-5' # primers\n+                             <--||||||||||||||||||||||||\n+................................CTAACACCTTTGAAAGTACATACG... # revcomp\n+--\n+ipcress: k69_98089:filter(unmasked) k69_98089:SAMTOOLS:SNP:550 88 A 499 0 B 563 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_98089:SAMTOOLS:SNP:550\n+    Primers: A B\n+     Target: k69_98089:filter(unmasked)\n+    Matches: 22/22 24/24\n+    Product: 77 bp (range 50-100)\n+Result type: forward\n+\n+...TGAAATTCGGGAAGACTGAAAG.................................. # forward\n+   ||||||||||||||||||||||-->\n+5'-TGAAATTCGGGAAGACTGAAAG-3' 3'-CTAACACCTTTGAAAGTACATACG-5' # primers\n+                             <--||||||||||||||||||||||||\n+................................CTAACACCTTTGAAAGTACATACG... # revcomp\n+--\n+ipcress: k69_98089:filter(unmasked) k69_98089:SAMTOOLS:SNP:550 77 A 510 0 B 563 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_98089:SAMTOOLS:SNP:550\n+    Primers: A B\n+     Target: k69_98089:filter(unmasked)\n+    Matches: 19/19 25/25\n+    Product: 75 bp (range 50-100)\n+Result type: forward\n+\n+...CGGGAAGACTGAAAGAACG................................... # forward\n+   |||||||||||||||||||-->\n+5'-CGGGAAGACTGAAAGAACG-3' 3'-CACCTTTGAAAGTACATACGATAGA-5' # primers\n+                          <--|||||||||||||||||||||||||\n+.............................CACCTTTGAAAGTACATACGATAGA... # revcomp\n+--\n+ipcress: k69_98089:filter(unmasked) k69_98089:SAMTOOLS:SNP:550 75 A 517 0 B 567 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_98089:SAMTOOLS:SNP:550\n+    Primers: A B\n+     Target: k69_98089:filter(unmasked)\n+    Matches: 21/21 25/25\n+    Product: 81 bp (range 50-100)\n+Result type: forward\n+\n+...GAAATTCGGGAAGACTGAAAG................................... # forward\n+   |||||||||||||||||||||-->\n+5'-GAAATTCGGGAAGACTGAAAG-3' 3'-CACCTTTGAAAGTACATACGATAGA-5' # primers\n+                            <--|||||||||||||||||||||||||\n+...............................CACCTTTGAAAGTACATACGATAGA... # revcomp\n+--\n+ipcress: k69_98089:filter(unmasked) k69_98089:SAMTOOLS:SNP:550 81 A 511 0 B 567 0 forward\n+\n+Ipcress result\n+--------------\n+ Experiment: k69_98089:SAMTOOLS:SNP:550\n+    Primers: A B\n+     Target: k69_98089:filter(unmasked)\n+    Matches: 22/22 25/25\n+    Product: 79 bp (range 50-100)\n+Result type: forward\n+\n+...AATTCGGGAAGACTGAAAGAAC................................... # forward\n+   ||||||||||||||||||||||-->\n+5'-AATTCGGGAAGACTGAAAGAAC-3' 3'-CACCTTTGAAAGTACATACGATAGA-5' # primers\n+                             <--|||||||||||||||||||||||||\n+................................CACCTTTGAAAGTACATACGATAGA... # revcomp\n+--\n+ipcress: k69_98089:filter(unmasked) k69_98089:SAMTOOLS:SNP:550 79 A 513 0 B 567 0 forward\n+-- completed ipcress analysis\n"
b
diff -r be070a68521e -r b321e0517be3 test-data/ipcress_gff.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ipcress_gff.out Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,20 @@
+k69_93535 ipcress PCR_product 1088 1148 . + . Name=k69_93535:SAMTOOLS:SNP:1147
+k69_93535 ipcress PCR_product 1109 1174 . + . Name=k69_93535:SAMTOOLS:SNP:1147
+k69_93535 ipcress PCR_product 1110 1177 . + . Name=k69_93535:SAMTOOLS:SNP:1147
+k69_93535 ipcress PCR_product 1109 1177 . + . Name=k69_93535:SAMTOOLS:SNP:1147
+k69_93535 ipcress PCR_product 1109 1181 . + . Name=k69_93535:SAMTOOLS:SNP:1147
+k69_93535 ipcress PCR_product 1297 1357 . + . Name=k69_93535:SAMTOOLS:SNP:1336
+k69_93535 ipcress PCR_product 1296 1361 . + . Name=k69_93535:SAMTOOLS:SNP:1336
+k69_93535 ipcress PCR_product 1295 1361 . + . Name=k69_93535:SAMTOOLS:SNP:1336
+k69_93535 ipcress PCR_product 1297 1362 . + . Name=k69_93535:SAMTOOLS:SNP:1336
+k69_93535 ipcress PCR_product 1297 1363 . + . Name=k69_93535:SAMTOOLS:SNP:1336
+k69_98089 ipcress PCR_product 1 70 . + . Name=k69_98089:SAMTOOLS:SNP:30
+k69_98089 ipcress PCR_product 1 71 . + . Name=k69_98089:SAMTOOLS:SNP:30
+k69_98089 ipcress PCR_product 1 71 . + . Name=k69_98089:SAMTOOLS:SNP:30
+k69_98089 ipcress PCR_product 1 77 . + . Name=k69_98089:SAMTOOLS:SNP:30
+k69_98089 ipcress PCR_product 1 77 . + . Name=k69_98089:SAMTOOLS:SNP:30
+k69_98089 ipcress PCR_product 499 563 . + . Name=k69_98089:SAMTOOLS:SNP:550
+k69_98089 ipcress PCR_product 510 563 . + . Name=k69_98089:SAMTOOLS:SNP:550
+k69_98089 ipcress PCR_product 517 567 . + . Name=k69_98089:SAMTOOLS:SNP:550
+k69_98089 ipcress PCR_product 511 567 . + . Name=k69_98089:SAMTOOLS:SNP:550
+k69_98089 ipcress PCR_product 513 567 . + . Name=k69_98089:SAMTOOLS:SNP:550
b
diff -r be070a68521e -r b321e0517be3 test-data/ipcress_test_input.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ipcress_test_input.txt Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,20 @@
+k69_93535:SAMTOOLS:SNP:1147 CTTTGAGTCTGAACGCATTTG TGTTTCATCTCCCGTTTCTTC
+k69_93535:SAMTOOLS:SNP:1147 CTTTGAGTCTGAACGCATTTG TCTTGTTTCATCTCCCGTTTC
+k69_93535:SAMTOOLS:SNP:1147 CTTTGAGTCTGAACGCATTTG CAAATCTTGTTTCATCTCCCG
+k69_93535:SAMTOOLS:SNP:1147 TTTGAGTCTGAACGCATTTG CTTGTTTCATCTCCCGTTTC
+k69_93535:SAMTOOLS:SNP:1147 GGACAGGGAAGCTTCATAGG CAAACCTGAAAGATCAAATCCTC
+k69_93535:SAMTOOLS:SNP:1336 TTAGAAGGAACGCGAGAAGG CAACAACCAAACTAGGCGTAAG
+k69_93535:SAMTOOLS:SNP:1336 TTAGAAGGAACGCGAGAAGG CTCAACAACAACCAAACTAGGC
+k69_93535:SAMTOOLS:SNP:1336 TTAGAAGGAACGCGAGAAGG GCTCAACAACAACCAAACTAGG
+k69_93535:SAMTOOLS:SNP:1336 TTTAGAAGGAACGCGAGAAG AACAACAACCAAACTAGGCG
+k69_93535:SAMTOOLS:SNP:1336 GTTTAGAAGGAACGCGAGAAG AACAACAACCAAACTAGGCG
+k69_98089:SAMTOOLS:SNP:30 CAAATCCAAACATGTTATCTTCTTC TTCGTGTTGATGATCTGACG
+k69_98089:SAMTOOLS:SNP:30 CAAATCCAAACATGTTATCTTCTTC GTTCGTGTTGATGATCTGACG
+k69_98089:SAMTOOLS:SNP:30 CAAATCCAAACATGTTATCTTCTTC TTGATGATCTGACGTTGAGC
+k69_98089:SAMTOOLS:SNP:30 CAAATCCAAACATGTTATCTTCTTC GTTGATGATCTGACGTTGAGC
+k69_98089:SAMTOOLS:SNP:30 CAAATCCAAACATGTTATCTTCTTC GATGATCTGACGTTGAGCG
+k69_98089:SAMTOOLS:SNP:550 TGAATTGATACTGAAATTCGGG GCATACATGAAAGTTTCCACAATC
+k69_98089:SAMTOOLS:SNP:550 CGGGAAGACTGAAAGAACG AGATAGCATACATGAAAGTTTCCAC
+k69_98089:SAMTOOLS:SNP:550 GAAATTCGGGAAGACTGAAAG AGATAGCATACATGAAAGTTTCCAC
+k69_98089:SAMTOOLS:SNP:550 AATTCGGGAAGACTGAAAGAAC AGATAGCATACATGAAAGTTTCCAC
+k69_98089:SAMTOOLS:SNP:550 TGAAATTCGGGAAGACTGAAAG GCATACATGAAAGTTTCCACAATC
b
diff -r be070a68521e -r b321e0517be3 test-data/mpileup_out.vcf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mpileup_out.vcf Thu May 22 20:30:19 2014 -0400
b
b'@@ -0,0 +1,500 @@\n+##fileformat=VCFv4.1\n+##samtoolsVersion=0.1.19-44428cd\n+##reference=file:///tmp/tmp-SAMTOOLS-zkHTpr/reference_input.fa\n+##contig=<ID=Chr1,length=17971566>\n+##contig=<ID=Chr10,length=15490421>\n+##contig=<ID=Chr11,length=17082262>\n+##contig=<ID=Chr12,length=13002763>\n+##contig=<ID=Chr13,length=17372821>\n+##contig=<ID=Chr14,length=12031045>\n+##contig=<ID=Chr15,length=19001909>\n+##contig=<ID=Chr16,length=11476499>\n+##contig=<ID=Chr17,length=14675105>\n+##contig=<ID=Chr18,length=14814751>\n+##contig=<ID=Chr19,length=11145676>\n+##contig=<ID=Chr2,length=15003700>\n+##contig=<ID=Chr20,length=14375345>\n+##contig=<ID=Chr21,length=14287830>\n+##contig=<ID=Chr22,length=12982530>\n+##contig=<ID=Chr23,length=20688064>\n+##contig=<ID=Chr24,length=17702303>\n+##contig=<ID=Chr25,length=14321294>\n+##contig=<ID=Chr26,length=17153587>\n+##contig=<ID=Chr27,length=10917718>\n+##contig=<ID=Chr28,length=16406049>\n+##contig=<ID=Chr29,length=14180785>\n+##contig=<ID=Chr3,length=20519224>\n+##contig=<ID=Chr4,length=13065296>\n+##contig=<ID=Chr5,length=18825850>\n+##contig=<ID=Chr6,length=18208465>\n+##contig=<ID=Chr7,length=18704015>\n+##contig=<ID=Chr8,length=21083321>\n+##contig=<ID=Chr9,length=11598160>\n+##contig=<ID=Unknow,length=177361715>\n+##INFO=<ID=DP,Number=1,Type=Integer,Description="Raw read depth">\n+##INFO=<ID=DP4,Number=4,Type=Integer,Description="# high-quality ref-forward bases, ref-reverse, alt-forward and alt-reverse bases">\n+##INFO=<ID=MQ,Number=1,Type=Integer,Description="Root-mean-square mapping quality of covering reads">\n+##INFO=<ID=FQ,Number=1,Type=Float,Description="Phred probability of all samples being the same">\n+##INFO=<ID=AF1,Number=1,Type=Float,Description="Max-likelihood estimate of the first ALT allele frequency (assuming HWE)">\n+##INFO=<ID=AC1,Number=1,Type=Float,Description="Max-likelihood estimate of the first ALT allele count (no HWE assumption)">\n+##INFO=<ID=AN,Number=1,Type=Integer,Description="Total number of alleles in called genotypes">\n+##INFO=<ID=IS,Number=2,Type=Float,Description="Maximum number of reads supporting an indel and fraction of indel reads">\n+##INFO=<ID=AC,Number=A,Type=Integer,Description="Allele count in genotypes for each ALT allele, in the same order as listed">\n+##INFO=<ID=G3,Number=3,Type=Float,Description="ML estimate of genotype frequencies">\n+##INFO=<ID=HWE,Number=1,Type=Float,Description="Chi^2 based HWE test P-value based on G3">\n+##INFO=<ID=CLR,Number=1,Type=Integer,Description="Log ratio of genotype likelihoods with and without the constraint">\n+##INFO=<ID=UGT,Number=1,Type=String,Description="The most probable unconstrained genotype configuration in the trio">\n+##INFO=<ID=CGT,Number=1,Type=String,Description="The most probable constrained genotype configuration in the trio">\n+##INFO=<ID=PV4,Number=4,Type=Float,Description="P-values for strand bias, baseQ bias, mapQ bias and tail distance bias">\n+##INFO=<ID=INDEL,Number=0,Type=Flag,Description="Indicates that the variant is an INDEL.">\n+##INFO=<ID=PC2,Number=2,Type=Integer,Description="Phred probability of the nonRef allele frequency in group1 samples being larger (,smaller) than in group2.">\n+##INFO=<ID=PCHI2,Number=1,Type=Float,Description="Posterior weighted chi^2 P-value for testing the association between group1 and group2 samples.">\n+##INFO=<ID=QCHI2,Number=1,Type=Integer,Description="Phred scaled PCHI2.">\n+##INFO=<ID=PR,Number=1,Type=Integer,Description="# permutations yielding a smaller PCHI2.">\n+##INFO=<ID=QBD,Number=1,Type=Float,Description="Quality by Depth: QUAL/#reads">\n+##INFO=<ID=RPB,Number=1,Type=Float,Description="Read Position Bias">\n+##INFO=<ID=MDV,Number=1,Type=Integer,Description="Maximum number of high-quality nonRef reads in samples">\n+##INFO=<ID=VDB,Number=1,Type=Float,Description="Variant Distance Bias (v2) for filtering splice-site artefacts in RNA-seq data. Note: this version may be broken.">\n+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">\n+##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="'..b'\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120676\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120677\t.\tT\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120678\t.\tT\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120679\t.\tG\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120680\t.\tG\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120681\t.\tT\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120682\t.\tA\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120683\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120684\t.\tT\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120685\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120686\t.\tT\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120687\t.\tT\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120688\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120689\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120690\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120691\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t120692\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,0,1;MQ=0;FQ=-31.4\tPL\t4\n+Chr1\t120693\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=0,1,0,0;MQ=0;FQ=-31.4\tPL\t0\n+Chr1\t1072445\t.\tA\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-31.4\tPL\t4\n+Chr1\t1072446\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072447\t.\tC\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072448\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072449\t.\tA\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-31.4\tPL\t4\n+Chr1\t1072450\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072451\t.\tT\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-31.4\tPL\t4\n+Chr1\t1072452\t.\tT\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072453\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-31.4\tPL\t4\n+Chr1\t1072454\t.\tA\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-31.4\tPL\t4\n+Chr1\t1072455\t.\tG\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-31.4\tPL\t4\n+Chr1\t1072456\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072457\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072458\t.\tG\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072459\t.\tT\t.\t26\t.\tDP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-31.4\tPL\t4\n+Chr1\t1072460\t.\tG\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072461\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072461\t.\tA\t.\t33.5\t.\tINDEL;IS=1,1.000000;DP=1;AF1=1;AC1=2;DP4=0,0,1,0;MQ=8;FQ=-39\tPL\t4\n+Chr1\t1072462\t.\tG\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072463\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072464\t.\tG\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072465\t.\tA\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072466\t.\tG\t.\t31.5\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31.4\tPL\t0\n+Chr1\t1072467\t.\tA\t.\t32\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-31\tPL\t0\n+Chr1\t1072468\t.\tG\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072469\t.\tG\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072470\t.\tA\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072471\t.\tT\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072472\t.\tC\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072473\t.\tC\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072474\t.\tA\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072475\t.\tG\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072476\t.\tT\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072477\t.\tA\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n+Chr1\t1072478\t.\tA\t.\t32.4\t.\tDP=1;AF1=0;AC1=0;DP4=1,0,0,0;MQ=8;FQ=-30.6\tPL\t0\n'
b
diff -r be070a68521e -r b321e0517be3 test-data/mpileup_vcf_to_gff_output.gff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mpileup_vcf_to_gff_output.gff Thu May 22 20:30:19 2014 -0400
b
b'@@ -0,0 +1,436 @@\n+#gff-version 3\n+Chr1\tSAMTOOLS\tSNP\t14086\t14086\t31.5\t.\t.\tID=Chr1:SNP:14086;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14087\t14087\t26\t.\t.\tID=Chr1:SNP:14087;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14088\t14088\t31.5\t.\t.\tID=Chr1:SNP:14088;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14089\t14089\t31.5\t.\t.\tID=Chr1:SNP:14089;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14090\t14090\t31.5\t.\t.\tID=Chr1:SNP:14090;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14091\t14091\t26\t.\t.\tID=Chr1:SNP:14091;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14092\t14092\t26\t.\t.\tID=Chr1:SNP:14092;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14093\t14093\t31.5\t.\t.\tID=Chr1:SNP:14093;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14094\t14094\t31.5\t.\t.\tID=Chr1:SNP:14094;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14095\t14095\t31.5\t.\t.\tID=Chr1:SNP:14095;Variant_seq=.;Reference_seq=C;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14096\t14096\t31.5\t.\t.\tID=Chr1:SNP:14096;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14097\t14097\t31.5\t.\t.\tID=Chr1:SNP:14097;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14098\t14098\t31.5\t.\t.\tID=Chr1:SNP:14098;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14099\t14099\t31.5\t.\t.\tID=Chr1:SNP:14099;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14100\t14100\t31.5\t.\t.\tID=Chr1:SNP:14100;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14101\t14101\t31.5\t.\t.\tID=Chr1:SNP:14101;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14102\t14102\t31.5\t.\t.\tID=Chr1:SNP:14102;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14103\t14103\t26\t.\t.\tID=Chr1:SNP:14103;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14104\t14104\t31.5\t.\t.\tID=Chr1:SNP:14104;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14105\t14105\t26\t.\t.\tID=Chr1:SNP:14105;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14106\t14106\t31.5\t.\t.\tID=Chr1:SNP:14106;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14107\t14107\t31.5\t.\t.\tID=Chr1:SNP:14107;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14108\t14108\t31.5\t.\t.\tID=Chr1:SNP:14108;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14109\t14109\t31.5\t.\t.\tID=Chr1:SNP:14109;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14110\t14110\t31.5\t.\t.\tID=Chr1:SNP:14110;Variant_seq=.;Reference_seq=C;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14111\t14111\t31.5\t.\t.\tID=Chr1:SNP:14111;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14112\t14112\t31.5\t.\t.\tID=Chr1:SNP:14112;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14113\t14113\t31.5\t.\t.\tID=Chr1:SNP:14113;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14114\t14114\t31.5\t.\t.\tID=Chr1:SNP:14114;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14115\t14115\t31.5\t.\t.\tID=Chr1:SNP:14115;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14116\t14116\t31.5\t.\t.\tID=Chr1:SNP:14116;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14117\t14117\t31.5\t.\t.\tID=Chr1:SNP:14117;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14118\t14118\t31.5\t.\t.\tID=Chr1:SNP:14118;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t14119\t14119\t26\t.\t.\tID=Chr1:SNP:14119;Variant_seq=.;Reference_s'..b'ence_seq=C;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072448\t1072448\t31.5\t.\t.\tID=Chr1:SNP:1072448;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072449\t1072449\t26\t.\t.\tID=Chr1:SNP:1072449;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072450\t1072450\t31.5\t.\t.\tID=Chr1:SNP:1072450;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072451\t1072451\t26\t.\t.\tID=Chr1:SNP:1072451;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072452\t1072452\t31.5\t.\t.\tID=Chr1:SNP:1072452;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072453\t1072453\t26\t.\t.\tID=Chr1:SNP:1072453;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072454\t1072454\t26\t.\t.\tID=Chr1:SNP:1072454;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072455\t1072455\t26\t.\t.\tID=Chr1:SNP:1072455;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072456\t1072456\t31.5\t.\t.\tID=Chr1:SNP:1072456;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072457\t1072457\t31.5\t.\t.\tID=Chr1:SNP:1072457;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072458\t1072458\t31.5\t.\t.\tID=Chr1:SNP:1072458;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072459\t1072459\t26\t.\t.\tID=Chr1:SNP:1072459;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072460\t1072460\t31.5\t.\t.\tID=Chr1:SNP:1072460;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072461\t1072461\t31.5\t.\t.\tID=Chr1:SNP:1072461;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tINDEL\t1072461\t1072462\t33.5\t.\t.\tID=Chr1:INDEL:1072461;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072462\t1072462\t31.5\t.\t.\tID=Chr1:SNP:1072462;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072463\t1072463\t31.5\t.\t.\tID=Chr1:SNP:1072463;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072464\t1072464\t31.5\t.\t.\tID=Chr1:SNP:1072464;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072465\t1072465\t31.5\t.\t.\tID=Chr1:SNP:1072465;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072466\t1072466\t31.5\t.\t.\tID=Chr1:SNP:1072466;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072467\t1072467\t32\t.\t.\tID=Chr1:SNP:1072467;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072468\t1072468\t32.4\t.\t.\tID=Chr1:SNP:1072468;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072469\t1072469\t32.4\t.\t.\tID=Chr1:SNP:1072469;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072470\t1072470\t32.4\t.\t.\tID=Chr1:SNP:1072470;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072471\t1072471\t32.4\t.\t.\tID=Chr1:SNP:1072471;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072472\t1072472\t32.4\t.\t.\tID=Chr1:SNP:1072472;Variant_seq=.;Reference_seq=C;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072473\t1072473\t32.4\t.\t.\tID=Chr1:SNP:1072473;Variant_seq=.;Reference_seq=C;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072474\t1072474\t32.4\t.\t.\tID=Chr1:SNP:1072474;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072475\t1072475\t32.4\t.\t.\tID=Chr1:SNP:1072475;Variant_seq=.;Reference_seq=G;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072476\t1072476\t32.4\t.\t.\tID=Chr1:SNP:1072476;Variant_seq=.;Reference_seq=T;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072477\t1072477\t32.4\t.\t.\tID=Chr1:SNP:1072477;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n+Chr1\tSAMTOOLS\tSNP\t1072478\t1072478\t32.4\t.\t.\tID=Chr1:SNP:1072478;Variant_seq=.;Reference_seq=A;Total_reads=1;Zygosity=NA:NA \n'
b
diff -r be070a68521e -r b321e0517be3 test-data/targets
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/targets Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,5 @@
+k69_93535:SAMTOOLS:SNP:1147
+k69_93535:SAMTOOLS:SNP:1336
+k69_98089:SAMTOOLS:SNP:30
+k69_98089:SAMTOOLS:SNP:550
+k69_98089:SAMTOOLS:SNP:625
b
diff -r be070a68521e -r b321e0517be3 test-data/targets.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/targets.fasta Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,44 @@
+>k69_93535
+TCATCAAATTTATCAAATTTTCCGCAGTTTCTCGCCCTCTCCACAGCGCTTTGAAGCGCT
+TTTAATGGCAGCAGATGCCGCCTCAGATCTCCCAAACCGACCCATTCCTAACACTCTCAG
+AAGATCCGATTCCAATTCCGTTCTACTGAACAAATACGAGCTGGGCAAGCTCCTCGGCCA
+TGGAAATTTCGCCAAGGTTTACCTCGCCCGCAACCTCGCCTCCAACGAAGAAGTCGCTAT
+CAAAGTCTTCGACAAAGAGAAAATCCTCAAATCCGGCCTCGTCAACCACACCAAACGCGA
+GATCTCAATCCTCCGCCGTCTTCGTCATCCGAACGTCGTCGAGCTCTTCGAGGTCATGGC
+CACTAAATCGAAGATCTATTTCGTCATAGAGTACGTCCGCGGTGGTGAATTATTCGGCAA
+GGTAGCCAAAGGACGTCTCAACGAAAACACCGCAAGAAAGTACTTCCAGCAATTGATTTC
+CGCCGTTGATTTCTGCCACGCCAGAGGCGTTTACCACAGAGATCTGAAGCCGGAAAATTT
+ATTATTAGACGATAATGGTGATTTGAAGGTGTCGGATTTCGGATTGAGCGCTGTATCGGA
+CCAGATGAGGCAGGATGGGTTGTTTCACACGTTTTGTGGTACTCCAGCCTACGTTGCTCC
+AGAGGTTCTCGGAAGGAAAGGGTATGATGGGGCTAAGTTTGATATTTGGTCATGTGGTGT
+TATTTTGTTTTTGTTGATGGCAGGGTATTTGCCCTTTCATGATCAAAATGTGATGGCTAT
+GTATAAGAAGATTTATAAAGGGGAGTTCAGGTGTCCGAGATGGTTTTCAAAGGATTTGAC
+ATTGTTGCTGATGAGGCTTCTCGATACAAATCCCAAAACCCGGATCACTATTCCAGAAAT
+AATGGAGAATAGATGGTTCAAGAATGGATTCGAGCCTGTGAAATATTACATTGAGAATGA
+TAGGTTTCATAAGTGGTGTAGCTTAGACGAAGAGAATGCTAATGACAACGAGGAGGTAGA
+ATCTGGAGATGAATCAGACTCTTCAGTTGCTTCCTGCCCTCCTACACTTAATGAAGGAAA
+GAAAAAAAGGACAGGGAAGCTTCATAGGCCTTTGAGTCTGAACGCATTTGACATAATTTC
+CTTTTCCAGAGGATTTGATCTTTCAGGTTTGTTTGAAGAAACGGGAGATGAAACAAGATT
+TGTGTCGGGTGAAACGATACCAAACATCATATCGAAATTGGAGGAGATTGCAAAAGTGGG
+TAGTTTCACGTTTAGGAAGAAGGATTGTAGGGTTAGTTTAGAAGGAACGCGAGAAGGAGT
+GAAGGGCCCTCTTACGATTGGAGCTGAGATATTTGAGCTTACGCCTAGTTTGGTTGTTGT
+TGAGCTTAAGAAGAAAGCAGGAGACAAAGCAGAGTACGAGGAGTTTTGTAACAAGGAGTT
+GAAACCTGGGTTGCTACATCTCATGTTTCCTAATGGCGGTGTTCCTTCCAACACAACTTC
+TGATACAGAGTAGGCAGTGTAGGGAATTCTCAAATGTATCTGTATTATATGGCAGCGTTT
+CATGATTCTTTTTGTATTAGATTTGTCGCAAGAAATTTATGTACCTTAAGATGAAAATTC
+AAGTTTCA
+>k69_98089
+ACAAATCCAAACATGTTATCTTCTTCTTCTTTTCCTTCTTCAAACATCCTCCTCCTCACC
+AAGTCAAAATCGCTCAACGTCAGATCATCAACACGAACTTGCGCCATGGCCACCACTGCT
+TCCCCATCTCCGTACGACGTGCTAGGCCTTTCGAAAGCCGCAAACTACAGCGACATAAAA
+GCAGCGTATCGGAAACTGGTGCTCTCCTGCCATCCCGATGTCTGCAAACAGCCGGATGCG
+TCACCGGACGAGTTTATGAAAATACACGATGCGTATTCCACGCTTTCTGATCCGGACAAG
+CGTGCCGATTACGATCGGGGAAATTCATTTGGGCGTTTGAGTTATGTGAGATCTAGATCT
+GCGAATTATGGTGCTCGTCGTCGAACTTGGGAGACCGATCAGTGTTGGTAAATCTAATTT
+GGGGGTTTGGAGATCTATTGATTTTGTTAGGAATGGAGAAGGTCGAGGTCAGCGGTCAGC
+TACGTGGGGCTAAATATTTTGAATTGATACTGAAATTCGGGAAGACTGAAAGAACGGGAT
+GATAACGGTGGTAGATCCAATTAGATTGTGGAAACTTTCATGTATGCTATCTACCTAAAA
+ATAATTGTGAATTTTGTGCCTCATAAGTTTGTTTGTTTAGGCATTTTTTGACTTCTGAGA
+CGTTGTATGTATATTCGGCCGTTACTACTTTATTGGCTTTAATGGTGTATACTTTGTTGT
+TTGCTTGTTATCCTGTACTAAATTTCT
+
b
diff -r be070a68521e -r b321e0517be3 test-data/targets.gff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/targets.gff Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,31 @@
+k69_93535 SAMTOOLS INDEL 3 7 4.44 . . ID=k69_93535:SAMTOOLS:INDEL:3;Variant_seq=ATTTCACATCCCATCATCA,ATCACATCCCATCATCA;Reference_seq=ATCA;INDEL;DP=5;VDB=0.0149;AF1=1;AC1=24;DP4=0,0,3,0;MQ=23;FQ=-33.2
+k69_93535 SAMTOOLS INDEL 5 6 4.91 . . ID=k69_93535:SAMTOOLS:INDEL:5;Variant_seq=CTCATATCCCATCATC,CCGGCC;Reference_seq=C;INDEL;DP=6;VDB=0.0137;AF1=1;AC1=24;DP4=0,0,3,1;MQ=17;FQ=-32.4
+k69_93535 SAMTOOLS SNP 1141 1142 999 . . ID=k69_93535:SAMTOOLS:SNP:1141;Variant_seq=T;Reference_seq=C;DP=2644;VDB=0.0374;AF1=0.1882;AC1=5;DP4=748,786,225,294;MQ=42;FQ=999;PV4=0.037,0,0.036,0.39
+k69_93535 SAMTOOLS SNP 1147 1148 999 . . ID=k69_93535:SAMTOOLS:SNP:1147;Variant_seq=G;Reference_seq=C;DP=2645;VDB=0.0371;AF1=0.3527;G3=0.2771,0.7229,6.934e-153;HWE=0.0248;AC1=8;DP4=733,804,447,519;MQ=42;FQ=999;PV4=0.51,0,0.027,1
+k69_93535 SAMTOOLS SNP 1336 1337 999 . . ID=k69_93535:SAMTOOLS:SNP:1336;Variant_seq=A;Reference_seq=G;DP=2211;VDB=0.0395;AF1=0.4583;G3=0.08329,0.9167,1.041e-76;HWE=0.000925;AC1=11;DP4=487,645,470,542;MQ=35;FQ=999;PV4=0.12,0,0.00016,0.36
+k69_93535 SAMTOOLS SNP 3 4 27.6 . . ID=k69_93535:SAMTOOLS:SNP:3;Variant_seq=T;Reference_seq=A;DP=5;VDB=0.0198;AF1=1;AC1=24;DP4=1,0,3,1;MQ=19;FQ=-24.6;PV4=1,1,1,1
+k69_93535 SAMTOOLS SNP 661 662 999 . . ID=k69_93535:SAMTOOLS:SNP:661;Variant_seq=G;Reference_seq=A;DP=1941;VDB=0.0388;AF1=0.4584;G3=0.08304,0.917,5.651e-77;HWE=0.000923;AC1=11;DP4=553,528,368,347;MQ=42;FQ=999;PV4=0.92,0,1,1
+k69_93535 SAMTOOLS SNP 751 752 999 . . ID=k69_93535:SAMTOOLS:SNP:751;Variant_seq=A;Reference_seq=G;DP=1870;VDB=0.0363;AF1=0.5;G3=3.472e-15,1,5e-52;HWE=4.53e-05;AC1=12;DP4=512,544,345,364;MQ=42;FQ=999;PV4=0.96,6.1e-38,0.014,1
+k69_93535 SAMTOOLS SNP 887 888 999 . . ID=k69_93535:SAMTOOLS:SNP:887;Variant_seq=G;Reference_seq=A;DP=2583;VDB=0.0394;AF1=0.4583;G3=0.08333,0.9167,8.95e-52;HWE=0.000926;AC1=11;DP4=790,493,590,361;MQ=42;FQ=999;PV4=0.83,0.069,0.41,1
+k69_98089 SAMTOOLS INDEL 2 6 999 . . ID=k69_98089:SAMTOOLS:INDEL:2;Variant_seq=CAACAAA,CAAACAAA,CAAAAACAAA;Reference_seq=CAAA;INDEL;DP=430;VDB=0.0000;AF1=1;AC1=24;DP4=0,0,182,1;MQ=39;FQ=-71.8
+k69_98089 SAMTOOLS INDEL 3 6 999 . . ID=k69_98089:SAMTOOLS:INDEL:3;Variant_seq=AAAAAACAAA,AAAA;Reference_seq=AAA;INDEL;DP=451;VDB=0.0000;AF1=1;AC1=24;DP4=0,0,214,1;MQ=39;FQ=-48
+k69_98089 SAMTOOLS INDEL 4 6 999 . . ID=k69_98089:SAMTOOLS:INDEL:4;Variant_seq=AAACACTAAAAACAAA,AAA;Reference_seq=AA;INDEL;DP=468;VDB=0.0000;AF1=1;AC1=24;DP4=0,0,219,1;MQ=39;FQ=-49.3
+k69_98089 SAMTOOLS INDEL 5 6 999 . . ID=k69_98089:SAMTOOLS:INDEL:5;Variant_seq=AACTAAAAACAAA;Reference_seq=A;INDEL;DP=534;VDB=0.0000;AF1=1;AC1=24;DP4=0,0,220,1;MQ=39;FQ=-77.6
+k69_98089 SAMTOOLS INDEL 722 723 131 . . ID=k69_98089:SAMTOOLS:INDEL:722;Variant_seq=TAAAAAA;Reference_seq=T;INDEL;DP=220;VDB=0.0006;AF1=0.3195;G3=0.299,0.701,1.118e-32;HWE=0.0406;AC1=8;DP4=4,52,0,27;MQ=38;FQ=133;PV4=0.3,1,5.4e-16,0.00096
+k69_98089 SAMTOOLS INDEL 726 727 69.7 . . ID=k69_98089:SAMTOOLS:INDEL:726;Variant_seq=TAAAAA;Reference_seq=T;INDEL;DP=152;VDB=0.0007;AF1=0.2294;AC1=5;DP4=4,30,1,6;MQ=40;FQ=70.8;PV4=1,0.025,0.0063,0.079
+k69_98089 SAMTOOLS INDEL 729 731 71.6 . . ID=k69_98089:SAMTOOLS:INDEL:729;Variant_seq=TAAAAAAA;Reference_seq=TA;INDEL;DP=104;VDB=0.0010;AF1=0.3359;AC1=8;DP4=3,15,0,4;MQ=40;FQ=73.4;PV4=1,1,1,1
+k69_98089 SAMTOOLS INDEL 741 748 48.2 . . ID=k69_98089:SAMTOOLS:INDEL:741;Variant_seq=AATTTCTATTTGTTTATTATTTCT,AATTTCTATTTGTTTATTTCT,AATTTCTATTTCT;Reference_seq=AATTTCT;INDEL;DP=18;VDB=0.0050;AF1=1;AC1=24;DP4=0,0,0,9;MQ=27;FQ=-35
+k69_98089 SAMTOOLS INDEL 742 748 5.8 . . ID=k69_98089:SAMTOOLS:INDEL:742;Variant_seq=ATTTTTCT,ATTTCTATTTTCT,ATTTCTATTTTTCT;Reference_seq=ATTTCT;INDEL;DP=17;VDB=0.0022;AF1=1;AC1=24;DP4=0,0,0,3;MQ=36;FQ=-31.8
+k69_98089 SAMTOOLS INDEL 743 748 86.5 . . ID=k69_98089:SAMTOOLS:INDEL:743;Variant_seq=TTTCTATTTGTTCT,TTTCTATTTGTTTATTATTCT,TTTCTATTTGTTTATTCT;Reference_seq=TTTCT;INDEL;DP=16;VDB=0.0021;AF1=1;AC1=24;DP4=0,0,0,8;MQ=29;FQ=-34.7
+k69_98089 SAMTOOLS SNP 2 3 999 . . ID=k69_98089:SAMTOOLS:SNP:2;Variant_seq=A;Reference_seq=C;DP=430;VDB=0.0000;AF1=0.5;G3=1.09e-24,1,5.6e-21;HWE=4.53e-05;AC1=12;DP4=207,1,212,1;MQ=40;FQ=999;PV4=1,1,0.00045,1
+k69_98089 SAMTOOLS SNP 30 31 999 . . ID=k69_98089:SAMTOOLS:SNP:30;Variant_seq=G;Reference_seq=T;DP=1858;VDB=0.0011;AF1=0.5417;G3=2.023e-19,0.9167,0.08333;HWE=0.000926;AC1=13;DP4=624,74,985,116;MQ=41;FQ=999;PV4=1,0,0.00089,1
+k69_98089 SAMTOOLS SNP 3 4 999 . . ID=k69_98089:SAMTOOLS:SNP:3;Variant_seq=C;Reference_seq=A;DP=451;VDB=0.0000;AF1=0.5;G3=3.935e-24,1,2.231e-22;HWE=4.53e-05;AC1=12;DP4=226,8,205,1;MQ=40;FQ=999;PV4=0.041,1,0.00055,1
+k69_98089 SAMTOOLS SNP 453 454 31.2 . . ID=k69_98089:SAMTOOLS:SNP:453;Variant_seq=T;Reference_seq=A;DP=3692;VDB=0.0394;AF1=0.04171;AC1=1;DP4=649,868,130,171;MQ=39;FQ=31.4;PV4=0.9,0,2.3e-293,0.00051
+k69_98089 SAMTOOLS SNP 515 516 999 . . ID=k69_98089:SAMTOOLS:SNP:515;Variant_seq=G;Reference_seq=A;DP=4455;VDB=0.0378;AF1=0.4583;G3=0.08333,0.9167,1.498e-16;HWE=0.000926;AC1=11;DP4=952,817,1390,1120;MQ=33;FQ=999;PV4=0.32,0,0,1
+k69_98089 SAMTOOLS SNP 522 523 999 . . ID=k69_98089:SAMTOOLS:SNP:522;Variant_seq=G;Reference_seq=A;DP=4698;VDB=0.0388;AF1=0.4168;G3=0.1656,0.8344,2.693e-36;HWE=0.00483;AC1=10;DP4=958,914,1327,1222;MQ=35;FQ=999;PV4=0.56,0,0,1
+k69_98089 SAMTOOLS SNP 550 551 999 . . ID=k69_98089:SAMTOOLS:SNP:550;Variant_seq=A;Reference_seq=G;DP=4866;VDB=0.0385;AF1=0.5417;G3=2.024e-12,0.9167,0.08333;HWE=0.000926;AC1=13;DP4=1034,806,1547,1233;MQ=38;FQ=999;PV4=0.72,0,1e-231,1
+k69_98089 SAMTOOLS SNP 625 626 999 . . ID=k69_98089:SAMTOOLS:SNP:625;Variant_seq=G;Reference_seq=A;DP=3557;VDB=0.0340;AF1=0.5;G3=8.721e-11,1,5.503e-15;HWE=4.53e-05;AC1=12;DP4=478,825,742,1369;MQ=41;FQ=999;PV4=0.38,0,2.7e-35,0.0059
+k69_98089 SAMTOOLS SNP 693 694 999 . . ID=k69_98089:SAMTOOLS:SNP:693;Variant_seq=A;Reference_seq=T;DP=743;VDB=0.0038;AF1=0.5;G3=1.826e-14,1,3.643e-17;HWE=4.53e-05;AC1=12;DP4=37,238,66,367;MQ=39;FQ=999;PV4=0.58,6.3e-295,5.1e-12,1
+k69_98089 SAMTOOLS SNP 717 718 999 . . ID=k69_98089:SAMTOOLS:SNP:717;Variant_seq=C;Reference_seq=T;DP=284;VDB=0.0010;AF1=0.5001;G3=2.555e-19,1,4.593e-12;HWE=4.54e-05;AC1=12;DP4=5,91,8,138;MQ=36;FQ=999;PV4=1,1.9e-90,2.7e-07,6.5e-05
+k69_98089 SAMTOOLS SNP 723 724 999 . . ID=k69_98089:SAMTOOLS:SNP:723;Variant_seq=A;Reference_seq=G;DP=193;VDB=0.0010;AF1=0.4433;G3=0.08685,0.9132,1.287e-11;HWE=0.0015;AC1=11;DP4=5,79,5,45;MQ=37;FQ=999;PV4=0.5,2.9e-13,0.00011,0.47
+k69_98089 SAMTOOLS SNP 726 727 999 . . ID=k69_98089:SAMTOOLS:SNP:726;Variant_seq=C;Reference_seq=T;DP=152;VDB=0.0008;AF1=0.4943;G3=0.0835,0.8466,0.06993;HWE=0.0149;AC1=12;DP4=4,49,5,32;MQ=36;FQ=999;PV4=0.48,5.3e-32,0.00016,0.43
b
diff -r be070a68521e -r b321e0517be3 umelt_service.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/umelt_service.py Thu May 22 20:30:19 2014 -0400
[
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+##interrogate umelt service at Univ of Utah
+import sys
+import urllib
+import urllib2
+import xml.etree.ElementTree as ET
+import numpy as np
+import scipy as sp
+from scipy import interpolate
+from scipy.interpolate import interp1d
+
+
+url='https://www.dna.utah.edu/db/services/cgi-bin/udesign.cgi'
+timeout_sec=500 ## default for timeout
+
+# Query UW melt prediction service for a single sequence, returning default array for helicity, assuming within temperature range of 65-95
+def getmelt(input_seq):
+    values = {'seq' : input_seq, 'rs':0, 'dmso':0,'cation': 20 ,'mg': 2} # Note the buffer conditions
+    data = urllib.urlencode(values)
+    req = urllib2.Request(url, data)
+    try:
+        response = urllib2.urlopen(req,timeout=timeout_sec)
+    except urllib2.HTTPError, e:
+        print 'The server couldn\'t fulfill the request.'
+        print 'Error code: ', e.code
+    except urllib2.URLError, e:
+        print 'We failed to reach a server.'
+        print 'Reason: ', e.reason
+    else:
+        melt_data = response.read()
+        tree = ET.fromstring(melt_data)
+        helicity = [amp.find('helicity').text.split() for amp in tree.findall('amplicon')]
+        hels = np.array(helicity[0], dtype=np.float32).transpose() 
+        return hels
+
+# helicity[0] used because the default retreived data is a list of 3 lists (for WT, mu and hets). The 3 lists are identical for our data (no IUPAC) so only [0] is used.
+
+def getTm(hel_array):
+ temps=np.arange(65,100.5,0.5) # Temperature range of 65-100.5. Step of 0.5 NEEDS TO BE CHECKED..REcent change?
+ tck = interpolate.splrep(temps,hel_array,s=0)
+ xnew =np.arange(65,95.5,0.05)
+ yder = interpolate.splev(xnew,tck,der=1) # der=1, first derivative
+ return xnew[yder.argmin()] # Returns the x value corresponding to the minimum (peak) y value -> Tm
b
diff -r be070a68521e -r b321e0517be3 uniq.xml
--- a/uniq.xml Thu Oct 18 19:47:07 2012 -0400
+++ b/uniq.xml Thu May 22 20:30:19 2014 -0400
b
@@ -8,5 +8,3 @@
   <outputs>
      <data format="txt"  name="outputfile" />
   </outputs>
-
-</tool>
b
diff -r be070a68521e -r b321e0517be3 vcf2gvf.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vcf2gvf.py Thu May 22 20:30:19 2014 -0400
[
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+"""
+Usage vcf2gvf.py <vcf_file input> <gff_file output>
+"""
+import sys,re
+
+##simplify the variant descriptor for GVF
+def get_vartype(type_str):
+    type_str=type_str.upper()
+    for V in ['COMPLEX', 'MNP', 'DEL', 'INDEL','INS','SNP']:
+        if V in type_str:
+            return V
+            break
+
+
+                                                                              
+in_vcf_file = open(sys.argv[1], 'r')
+out_gff_file = open(sys.argv[2], 'w')
+out_gff_file.write("#gff-version 3\n") ####gvf-version 1.06
+
+##only deal with tidy source lines, samtools is special needs
+source_pat = re.compile('##source=(\S+)', re.IGNORECASE)
+
+
+while True:
+    line=in_vcf_file.readline()
+    if line[0]!='#':
+        break
+    elif line[2:10]=='samtools':
+        source_type='SAMTOOLS'
+        break
+    else:
+        m=source_pat.match(line)
+        if m:
+            source_type=m.group(1).upper()
+            break
+
+
+##now read the data
+##samtools only distinguishes SNPs and indels
+##This is much complicated in highly heterozygous systems
+##see http://www.sequenceontology.org/miso/current_release/term/SO:0001059
+##GVF column 3 requires a type from this ontology
+###vcf type may be snp, mnp, ins, del, or complex.
+##for current purposes map multiple types to most complex state
+##ie SNP,SNP -> SNP; SNP,MNP-> MNP; SNP,complex 
+try:
+    for line in in_vcf_file:
+        if line[0] != '#':
+            var=line.split() ##see if var[7] has indel at start. If so add TYPE=INDEL for samtools case
+            info_field=var[7].split(';')
+            if info_field[0]=='INDEL':
+                info_field[0]="TYPE=INDEL"
+            info_dict=dict(X.split('=') for X in info_field)
+            ##if no TYPE key, then add TYPE=SNP for samtools case
+            if not info_dict.has_key('TYPE'):
+                info_dict['TYPE']='SNP';
+            var_type=get_vartype(info_dict['TYPE'])
+            ID=":".join([var[0],source_type,var_type,var[1]])
+            start=int(var[1])
+            length=len(var[3]) ## using reference length in this case
+            attributes=";".join(['ID='+ID,'Reference_seq='+var[3],'Variant_seq='+var[4]])
+            output_line=[var[0], source_type, var_type,  str(start), str(start+length-1) ,'.','.','.',attributes,"\n"]
+            out_gff_file.write("\t".join([str(X) for X in output_line]))
+finally:
+    in_vcf_file.close()
+    out_gff_file.close()
+
b
diff -r be070a68521e -r b321e0517be3 vcf2gvf.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vcf2gvf.sh Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,47 @@
+#!/bin/sh
+##convert vcf to gvf
+##NOTE This is a very simple basic parser for a complex format.
+#It is intended for use with mpileup output where -g or -u flags are NOT used.
+
+##usage vcf2gvf.sh <vcf file> <outputfile>
+
+#Copyright 2012 John McCallum & Leshi Chen
+#New Zealand Institute for Plant and Food Research
+
+#New Zealand Institute for Plant and Food Research
+#This program is free software: you can redistribute it and/or modify
+#     it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+
+inputfile=$1
+outputfile=$2
+
+echo  "##gvf-version 1.05" > $outputfile
+
+awk '
+BEGIN {OFS="\t"}
+
+##get feature type 
+{if (index($8,"INDEL")== 1) {type="INDEL"} else {type="SNP"} }
+##get feature length
+{if (type=="SNP") 
+    {feat_length=1}
+    else {feat_length=length($4)} 
+}
+{end=($2+feat_length)}
+
+!/^#/  { print $1 ,"SAMTOOLS",type,$2,end,$6,".",".","ID="$1":SAMTOOLS:"type":"$2";Variant_seq="$5";Reference_seq="$4";"$8}
+
+END {print ""} 
+' "$inputfile" > "$outputfile"
\ No newline at end of file
b
diff -r be070a68521e -r b321e0517be3 vcf2gvf.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vcf2gvf.xml Thu May 22 20:30:19 2014 -0400
b
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<tool id="vcf2gvf_1" name="VCF to GFF3">
+  <description>convert vcf to gvf/gff3</description>
+  <command interpreter="bash">vcf2gvf.sh  $inputFile  $outputfile</command>
+  <inputs>
+    <param format="vcf" name="inputFile" type="data" label="Input vcf File" help="vcf file from mpileup" />
+  </inputs>
+  <outputs>
+<data format="gff3" name="outputfile" /> 
+
+  </outputs>
+<help>
+This tool provides a simple conversion from vcf to gvf.
+
+It is intended for use with Freebayes or with Samtools mpileup 
+
+Be sure to read the documentation to determine if it meets your requirements.
+
+* vcf documentation at http://samtools.sourceforge.net/samtools.shtml#6
+* GVF/GFF3 at http://www.sequenceontology.org/resources/gvf.html
+* Freebayes https://github.com/ekg/freebayes
+
+
+
+**input**
+
+::
+
+ PGSC0003DMB000000010 2042429 . C A 44.6 . DP=10;VDB=0.0118;AF1=0.8295;AC1=7;DP4=2,1,3,4;MQ=20;FQ=8.78;PV4=1,5.2e-10,1,1 GT:PL:DP:GQ 0/1:14,0,42:5:23 1/1:27,6,0:2:9 1/1:15,3,0:1:7 1/1:30,6,0:2:9
+ PGSC0003DMB000000038 1756646 . G A 3.69 . DP=15;VDB=0.0166;AF1=0.495;AC1=4;DP4=3,7,2,2;MQ=20;FQ=5.6;PV4=0.58,3.8e-09,1,0.31 GT:PL:DP:GQ 0/1:20,3,0:1:6 0/1:9,0,67:7:8 0/0:0,15,82:5:17 0/1:16,3,0:1:5
+ PGSC0003DMB000000064 1916664 . T C 8.12 . DP=4;VDB=0.0151;AF1=1;AC1=8;DP4=0,0,0,3;MQ=20;FQ=-29.5 GT:PL:DP:GQ 1/1:14,3,0:1:5 1/1:0,0,0:0:3 1/1:13,3,0:1:5 1/1:15,3,0:1:5
+
+
+**output**
+
+
+::
+
+ PGSC0003DMB000000010 samtools SNP 2042429 2042430 44.6 . . ID=PGSC0003DMB000000010:SAMTOOLS:SNP:2042429;Variant_seq=A;Reference_seq=C;DP=10;VDB=0.0118;AF1=0.8295;AC1=7;DP4=2,1,3,4;MQ=20;FQ=8.78;PV4=1,5.2e-10,1,1
+ PGSC0003DMB000000038 samtools SNP 1756646 1756647 3.69 . . ID=PGSC0003DMB000000038:SAMTOOLS:SNP:1756646;Variant_seq=A;Reference_seq=G;DP=15;VDB=0.0166;AF1=0.495;AC1=4;DP4=3,7,2,2;MQ=20;FQ=5.6;PV4=0.58,3.8e-09,1,0.31
+ PGSC0003DMB000000064 samtools SNP 1916664 1916665 8.12 . . ID=PGSC0003DMB000000064:SAMTOOLS:SNP:1916664;Variant_seq=C;Reference_seq=T;DP=4;VDB=0.0151;AF1=1;AC1=8;DP4=0,0,0,3;MQ=20;FQ=-29.5
+
+
+
+-----------------------
+
+*If you use this tool please cite:*
+
+A Toolkit For Bulk PCR-Based Marker Design From Next-Generation Sequence Data: 
+Application For  Development Of A Framework Linkage Map In Bulb Onion (*Allium cepa* L.)
+(2012)
+
+Samantha Baldwin, Roopashree Revanna, Susan Thomson, Meeghan Pither-Joyce, Kathryn Wright, 
+Ross Crowhurst, Mark Fiers, Leshi Chen, Richard MacKnight, John A. McCallum
+
+
+</help>
+</tool>
b
diff -r be070a68521e -r b321e0517be3 vcf_gff.py
--- a/vcf_gff.py Thu Oct 18 19:47:07 2012 -0400
+++ b/vcf_gff.py Thu May 22 20:30:19 2014 -0400
[
@@ -46,6 +46,8 @@
         record_type = "SNP"
     for entry in rec:
         detail = entry.split("=")
+        if len(detail) < 2:
+            continue
         INFO[detail[0]] = detail[1]
     if INFO.has_key("DP"):
         reads = INFO.get("DP")
@@ -108,7 +110,9 @@
                 gen = "HET"
             if genotypes == "0/0":
                 gen = "HOM_ref"
-        else:
+        try: # set gen to 'NA' if still unset
+            gen
+        except NameError:
             gen = "NA"
         geno = ("%s:%s " % (reads, gen))
         genos += geno
@@ -141,11 +145,11 @@
             end = start 
         gen = get_gen(info[8:], reference)
         out_gff_file.write(
-            ("%s\t%s\t%s\t%d\t%d\t%s\t%s\t%s\tID=%s:%s:%d;Variant" +
+            ("%s\t%s\t%s\t%d\t%d\t%s\t%s\t%s\tID=%s:%s:%s:%d;Variant" +
              "_seq=%s;Reference_seq=%s;Total_reads=%s;Zygosity=%s\n") %
             ( seqid, source,record_type, start, end, score, strand, phase,seqid, 
-              record_type, start, variant, reference, reads, gen))
-    
+              source, record_type, start, variant, reference, reads, gen))
+
 out_gff_file.close()    
 
 
b
diff -r be070a68521e -r b321e0517be3 vcf_gff.xml
--- a/vcf_gff.xml Thu Oct 18 19:47:07 2012 -0400
+++ b/vcf_gff.xml Thu May 22 20:30:19 2014 -0400
b
@@ -8,6 +8,16 @@
   <outputs>
      <data format="gff3" name="outputfile" />
   </outputs>
+  <tests>
+        <test>
+                <param name="inputVcf" value="mpileup_out.vcf" ftype="vcf"/>
+                <output name="outputfile" file="mpileup_vcf_to_gff_output.gff"/>
+        </test>
+        <test>
+                <param name="inputVcf" value="freebayes_out.vcf" ftype="vcf"/>
+                <output name="outputfile" file="freebayes_vcf_to_gff_output.gff"/>
+        </test>
+  </tests>
 <help>
 
 ** Convert vcf to gff3**
@@ -58,4 +68,4 @@
 Ross Crowhurst, Mark Fiers, Leshi Chen, Richard MacKnight, John A. McCallum
 
 </help>
-</tool>
\ No newline at end of file
+</tool>