changeset 0:8055f3f619a1 draft default tip

Uploaded
author greg
date Thu, 10 Mar 2016 10:34:37 -0500
parents
children
files paired_end_cross_plot.xml pairedendCrossPlot.jar src/pairedendCrossPlot.java test-data/input1.scidx test-data/input2.scidx test-data/input3.scidx test-data/input4.scidx test-data/output1.tabular test-data/output2.tabular
diffstat 9 files changed, 513 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paired_end_cross_plot.xml	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,58 @@
+<tool id="paired_end_cross_plot" name="Paired-end cross plot" version="1.0.0">
+    <description></description>
+    <command>
+        <![CDATA[
+            java -jar $__tool_directory__/pairedendCrossPlot.jar
+            -f "$input1"
+            -r "$input2"
+            -w $window_size
+            -o "$output" 1>/dev/null
+        ]]>
+    </command>
+    <inputs>
+        <param name="input1" type="data" format="scidx" label="Read 1 ScIdx file" />
+        <param name="input2" type="data" format="scidx" label="Read 2 ScIdx file" />
+        <param name="window_size" type="integer" value="500" min="1" label="Size of window upstream and downstream around the reference point in base pairs" />
+    </inputs>
+    <outputs>
+        <data name="output" format="tabular" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="input1" value="input1.scidx" ftype="scidx"/>
+            <param name="input2" value="input2.scidx" ftype="scidx"/>
+            <param name="window_size" value="500"/>
+            <output name="output" file="output1.tabular" ftype="tabular"/>
+        </test>
+        <test>
+            <param name="input1" value="input3.scidx" ftype="scidx"/>
+            <param name="input2" value="input4.scidx" ftype="scidx"/>
+            <param name="window_size" value="500"/>
+            <output name="output" file="output2.tabular" ftype="tabular"/>
+        </test>
+    </tests>
+    <help>
+
+**What it does**
+
+Produces a frequency histogram of the relative occurrence of Read2 5' ends relative to the
+start of every Read1 5' end in a user-specified coordinate window.
+
+-----
+
+**Options**
+
+* **Window Size** - sets the size of the window upstream and downstream around the reference point in base pairs.
+
+    </help>
+    <citations>
+        <citation type="bibtex">
+            @unpublished{None,
+            author = {Lai, William},
+            title = {None},
+            year = {None},
+            eprint = {None},
+            url = {http://www.huck.psu.edu/content/research/independent-centers-excellence/center-for-eukaryotic-gene-regulation}
+        }</citation>
+    </citations>
+</tool>
Binary file pairedendCrossPlot.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pairedendCrossPlot.java	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,241 @@
+package pairedendCrossPlot;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.PrintStream;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Scanner;
+
+public class pairedendCrossPlot {
+	
+	private static File READ1 = null;
+	private static File READ2 = null;
+	private static File OUTPUT = null;
+	private static int WINDOW = 500;
+	
+	private static int[] BP = null;
+	private static int[] FOR = null;
+	private static int[] REV = null;
+	
+	private static ArrayList<String> chrName = null;
+	private static ArrayList<Integer> chrStart = null;
+	
+	private static int[] FHIST = null;
+	private static int[] RHIST = null;
+	
+	public static void main(String[] args) throws FileNotFoundException {
+		loadConfig(args); //Load configuration data
+		FHIST = new int[(WINDOW * 2) + 1]; //Initialize master histograms
+		RHIST = new int[(WINDOW * 2) + 1]; //Initialize master histograms
+		System.out.println("\n" + getTimeStamp());
+	
+		//Pass through the Read2 file once in order to identify the start and stops of all chromosomes present in file
+		System.out.println("Indexing Read 2 File...");
+		indexFile(READ2);
+		System.out.println("Indexing Complete\n" + getTimeStamp());
+	
+		//Parse read 1
+		System.out.println("\n" + getTimeStamp() + "\nParsing Read 1 File...");
+		parseRead1(READ1);
+		System.out.println("\nRead 1 Parsed\n" + getTimeStamp());
+		
+		//Output histogram
+		System.out.println("\nOutputing final histogram...");
+		outputHist(OUTPUT);
+		System.out.println("Program Complete\n" + getTimeStamp());
+		
+	}
+	
+	public static void outputHist(File out) throws FileNotFoundException {
+		PrintStream OUT = new PrintStream(out);
+		for(int x = WINDOW * -1; x <= WINDOW; x++) {
+			OUT.print("\t" + x);			
+		}
+		OUT.print("\nForward_Tags");
+		for(int x = 0; x < FHIST.length; x++) {
+			OUT.print("\t" + FHIST[x]);
+		}
+		OUT.print("\nReverse_Tags");
+		for(int x = 0; x < RHIST.length; x++) {
+			OUT.print("\t" + RHIST[x]);
+		}
+		OUT.close();
+	}
+	
+	public static void parseRead1(File input) throws FileNotFoundException {
+		Scanner scan = new Scanner(READ1);
+		String currentChrom = "";
+		int currentIndex = 0;
+		while (scan.hasNextLine()) {
+			String temp = scan.nextLine();
+			if(!temp.contains("index") && !temp.contains("#")) {
+				String[] array = temp.split("\t");
+				int POS = Integer.parseInt(array[1]);
+				int F = Integer.parseInt(array[2]);
+				int R = Integer.parseInt(array[3]);
+							
+				//Check if newline's chrom is equal to current chrom in memory, reload new chrom if unequal
+				if(!currentChrom.equals(array[0])) {
+					BP = null; //reset BP immediately
+					int newIndex = chrName.indexOf(array[0]);
+					if(newIndex >= 0) {
+						System.out.println("\nLoading: " + chrName.get(newIndex));
+						loadRead2(READ2, chrName.get(newIndex), chrStart.get(newIndex), chrStart.get(newIndex + 1));
+						currentChrom = array[0];
+						currentIndex = 0;
+						System.out.println("Loading Complete\n" + getTimeStamp());
+					}
+				}
+				if(BP != null) {
+					//Update local indexes to only upload data from local tag region defined by window
+					while(POS - WINDOW > BP[currentIndex] && currentIndex < BP.length - 1) { currentIndex++; } //Find furthest upstream index in read2
+					int currentStop = currentIndex;
+			        while(POS + WINDOW > BP[currentStop] && currentStop < BP.length - 1) { currentStop++; } //Find furthest downstream index in read2
+			        
+			        //Populate histogram based on read2 tags flanking current position
+			        int[] temp_F = new int[(WINDOW * 2) + 1];
+			        int[] temp_R = new int[(WINDOW * 2) + 1];
+			        for(int x = currentIndex; x <= currentStop; x++) {
+			        	int index = BP[x] - POS + WINDOW;
+			        	if(index >= 0 && index < temp_F.length) {
+			        		temp_F[index] += FOR[x];
+			        		temp_R[index] += REV[x];
+			        	}
+			        }
+					
+			        //Populate master histogram based on score
+			        for(int x = 0; x < temp_F.length; x++) {
+			                FHIST[x] += (temp_F[x] * F);
+			                RHIST[x] += (temp_R[x] * F);
+			        }
+			        //Reverse arrays
+			        for(int x = 0; x < FHIST.length / 2; x++) {
+			        	int tempF = temp_F[x];
+			        	int tempR = temp_R[x];
+			        	temp_F[x] = temp_F[temp_F.length - x - 1];
+			            temp_F[temp_F.length - x - 1] = tempF;
+			            temp_R[x] = temp_R[temp_R.length - x - 1];
+			            temp_R[temp_R.length - x - 1] = tempR;
+			        }
+			        for(int x = 0; x < FHIST.length; x++) {
+			                FHIST[x] += (temp_R[x] * R);
+			                RHIST[x] += (temp_F[x] * R);
+			        }
+				}
+			}	
+		}
+		scan.close();
+	}
+	
+	private static void loadRead2(File input, String currentChrom, int lineStart, int lineStop) throws FileNotFoundException {
+		BP = new int[lineStop - lineStart - 1];
+		FOR = new int[lineStop - lineStart - 1];
+		REV = new int[lineStop - lineStart - 1];
+		
+		int counter = 0;
+		Scanner scan = new Scanner(READ2);
+		while (scan.hasNextLine()) {
+			String temp = scan.nextLine();
+				if(counter > lineStart) { 
+					String[] array = temp.split("\t");
+					if(array[0].equals(currentChrom)) {
+						BP[counter - lineStart - 1] = Integer.parseInt(array[1]);
+						FOR[counter - lineStart - 1] = Integer.parseInt(array[2]);
+						REV[counter - lineStart - 1] = Integer.parseInt(array[3]);
+					}
+				}
+			counter++;
+		}
+		scan.close();
+		//System.out.println(BP.length + "\t" + FOR.length + "\t" + REV.length);
+	}
+	
+	//Index Read 2 file for faster processing of chromosomes
+	public static void indexFile(File input) throws FileNotFoundException {
+		chrName = new ArrayList<String>();
+		chrStart = new ArrayList<Integer>();
+		Scanner scan = new Scanner(input);
+		int linenumber = 0;
+		while (scan.hasNextLine()) {
+			String temp = scan.nextLine();
+			if(!temp.contains("index") && !temp.contains("#")) {
+				String[] array = temp.split("\t");
+				if(!chrName.contains(array[0])) {
+					chrName.add(array[0]);
+					chrStart.add(new Integer(linenumber));
+				}
+			}
+			linenumber++;
+		}
+		chrStart.add(new Integer(linenumber));
+		scan.close();
+	}
+	
+	public static void loadConfig(String[] command){
+		for (int i = 0; i < command.length; i++) {
+			switch (command[i].charAt((1))) {
+				case 'f':
+					READ1 = new File(command[i + 1]);
+					i++;
+					break;
+				case 'r':
+					READ2 = new File(command[i + 1]);
+					i++;
+					break;
+				case 'o':
+					OUTPUT = new File(command[i + 1]);
+					i++;
+					break;
+				case 'w':
+					WINDOW = Integer.parseInt(command[i + 1]);
+					i++;
+					break;
+			}
+		}
+		if(READ1 == null) {
+			System.out.println("No Read 1 File loaded!!!\n");
+			printUsage();
+			System.exit(0);
+		}
+		if(READ2 == null) {
+			System.out.println("No Read 2 File loaded!!!\n");
+			printUsage();
+			System.exit(0);
+		}
+		if(WINDOW < 1) {
+			System.out.println("Invalid Window Size Selected!!!\n");
+			printUsage();
+			System.exit(0);	
+		}
+						
+		if(OUTPUT == null) {
+			OUTPUT = new File(READ1.getName().split("\\.")[0] + ".out");
+		}
+				
+		System.out.println("-----------------------------------------\nCommand Line Arguments:");
+		System.out.println("Read 1 file: " + READ1);
+		System.out.println("Read 2 file: " + READ2);
+		System.out.println("Output: " + OUTPUT);
+		System.out.println("Window Size: " + WINDOW);
+	}
+		
+	public static void printUsage() {
+		System.out.println("Usage: java -jar pairedendCrossPlot.jar -f [Read1File] -r [Read2File] [Options]");
+		System.out.println("-----------------------------------------");
+		System.out.println("\nRequired Parameter:");
+		System.out.println("Read 1 File:\t\t\t-f\tRead 1 scIDX file");
+		System.out.println("Read 2 File:\t\t\t-r\tRead 1 scIDX file");
+		System.out.println("\nOptional Parameters:");
+		System.out.println("Output File Name:\t\t-o\tOutput file");
+		System.out.println("Window Size +/- Reference:\t-w\t(Default = 500)");
+	}
+	
+	private static String getTimeStamp() {
+		Date date= new Date();
+		String time = new Timestamp(date.getTime()).toString();
+		return time;
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input1.scidx	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,52 @@
+#2016-02-20 12:39:39.157;60801hg19_dedup.bam;READ1
+chrom	index	forward	reverse	value
+chr1	10078	1	0	1
+chr1	10159	1	0	1
+chr1	10265	0	1	1
+chr1	12868	1	0	1
+chr1	15660	0	1	1
+chr1	16215	1	0	1
+chr1	20260	0	1	1
+chr1	40108	0	1	1
+chr1	48948	1	0	1
+chr1	51494	0	1	1
+chr1	53355	0	1	1
+chr1	55400	0	1	1
+chr1	55822	1	0	1
+chr1	58576	0	1	1
+chr1	62398	0	1	1
+chr1	62705	1	0	1
+chr1	64824	1	0	1
+chr1	65976	1	0	1
+chr1	68141	1	0	1
+chr1	70624	0	1	1
+chr1	73623	1	0	1
+chr1	78938	0	1	1
+chr1	85921	1	0	1
+chr1	87726	1	0	1
+chr1	88204	0	1	1
+chr1	88233	0	1	1
+chr1	88379	0	1	1
+chr1	91427	0	1	1
+chr1	91457	0	1	1
+chr1	93257	1	0	1
+chr1	101793	1	0	1
+chr1	105059	0	1	1
+chr1	105123	0	1	1
+chr1	107434	0	1	1
+chr1	108344	0	1	1
+chr1	108379	1	0	1
+chr1	114132	0	1	1
+chr1	114185	0	1	1
+chr1	114880	0	1	1
+chr1	115833	0	1	1
+chr1	115855	0	1	1
+chr1	122855	1	0	1
+chr1	123638	1	0	1
+chr1	126113	1	0	1
+chr1	129701	0	1	1
+chr1	133553	1	0	1
+chr1	136171	1	0	1
+chr1	137141	0	1	1
+chr1	138859	1	0	1
+chr1	138873	1	0	1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input2.scidx	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,52 @@
+#2016-02-20 12:40:06.46;60801hg19_dedup.bam;READ2
+chrom	index	forward	reverse	value
+chr1	10086	1	0	1
+chr1	10214	0	1	1
+chr1	10434	0	1	1
+chr1	13094	0	1	1
+chr1	15520	1	0	1
+chr1	16372	0	1	1
+chr1	20100	1	0	1
+chr1	39825	1	0	1
+chr1	49250	0	1	1
+chr1	51281	1	0	1
+chr1	53199	1	0	1
+chr1	55183	1	0	1
+chr1	56094	0	1	1
+chr1	58443	1	0	1
+chr1	62162	1	0	1
+chr1	62943	0	1	1
+chr1	64938	0	1	1
+chr1	66052	0	1	1
+chr1	68343	0	1	1
+chr1	70509	1	0	1
+chr1	73854	0	1	1
+chr1	78839	1	0	1
+chr1	85960	0	1	1
+chr1	87867	0	1	1
+chr1	88031	1	0	1
+chr1	88077	1	0	1
+chr1	88326	1	0	1
+chr1	91334	1	0	1
+chr1	91345	1	0	1
+chr1	93500	0	1	1
+chr1	101929	0	1	1
+chr1	104967	1	0	1
+chr1	104971	1	0	1
+chr1	107305	1	0	1
+chr1	108130	1	0	1
+chr1	108552	0	1	1
+chr1	113807	1	0	1
+chr1	113928	1	0	1
+chr1	114757	1	0	1
+chr1	115711	1	0	1
+chr1	115727	1	0	1
+chr1	123015	0	1	1
+chr1	123803	0	1	1
+chr1	126334	0	1	1
+chr1	129534	1	0	1
+chr1	133854	0	1	1
+chr1	136440	0	1	1
+chr1	137063	1	0	1
+chr1	138941	1	0	1
+chr1	138942	1	0	1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input3.scidx	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,52 @@
+#2016-02-20 12:39:39.157;CTCF_CS_60801hg19_dedup;READ1
+chrom   index   forward reverse value
+chr1	10078	1	0	1
+chr1	10159	1	0	1
+chr1	10265	0	1	1
+chr1	12868	1	0	1
+chr1	15660	0	1	1
+chr1	16215	1	0	1
+chr1	20260	0	1	1
+chr1	40108	0	1	1
+chr1	48948	1	0	1
+chr1	51494	0	1	1
+chr1	53355	0	1	1
+chr1	55400	0	1	1
+chr1	55822	1	0	1
+chr1	58576	0	1	1
+chr1	62398	0	1	1
+chr1	62705	1	0	1
+chr1	64824	1	0	1
+chr1	65976	1	0	1
+chr1	68141	1	0	1
+chr1	70624	0	1	1
+chr1	73623	1	0	1
+chr1	78938	0	1	1
+chr1	85921	1	0	1
+chr1	87726	1	0	1
+chr1	88204	0	1	1
+chr1	88233	0	1	1
+chr1	88379	0	1	1
+chr1	91427	0	1	1
+chr1	91457	0	1	1
+chr1	93257	1	0	1
+chr1	101793	1	0	1
+chr1	105059	0	1	1
+chr1	105123	0	1	1
+chr1	107434	0	1	1
+chr1	108344	0	1	1
+chr1	108379	1	0	1
+chr1	114132	0	1	1
+chr1	114185	0	1	1
+chr1	114880	0	1	1
+chr1	115833	0	1	1
+chr1	115855	0	1	1
+chr1	122855	1	0	1
+chr1	123638	1	0	1
+chr1	126113	1	0	1
+chr1	129701	0	1	1
+chr1	133553	1	0	1
+chr1	136171	1	0	1
+chr1	137141	0	1	1
+chr1	138859	1	0	1
+chr1	138873	1	0	1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input4.scidx	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,52 @@
+#2016-02-20 12:39:39.157;CTCF_CS_60801hg19_dedup;READ2
+chrom   index   forward reverse value
+chr1	10086	1	0	1
+chr1	10214	0	1	1
+chr1	10434	0	1	1
+chr1	13094	0	1	1
+chr1	15520	1	0	1
+chr1	16372	0	1	1
+chr1	20100	1	0	1
+chr1	39825	1	0	1
+chr1	49250	0	1	1
+chr1	51281	1	0	1
+chr1	53199	1	0	1
+chr1	55183	1	0	1
+chr1	56094	0	1	1
+chr1	58443	1	0	1
+chr1	62162	1	0	1
+chr1	62943	0	1	1
+chr1	64938	0	1	1
+chr1	66052	0	1	1
+chr1	68343	0	1	1
+chr1	70509	1	0	1
+chr1	73854	0	1	1
+chr1	78839	1	0	1
+chr1	85960	0	1	1
+chr1	87867	0	1	1
+chr1	88031	1	0	1
+chr1	88077	1	0	1
+chr1	88326	1	0	1
+chr1	91334	1	0	1
+chr1	91345	1	0	1
+chr1	93500	0	1	1
+chr1	101929	0	1	1
+chr1	104967	1	0	1
+chr1	104971	1	0	1
+chr1	107305	1	0	1
+chr1	108130	1	0	1
+chr1	108552	0	1	1
+chr1	113807	1	0	1
+chr1	113928	1	0	1
+chr1	114757	1	0	1
+chr1	115711	1	0	1
+chr1	115727	1	0	1
+chr1	123015	0	1	1
+chr1	123803	0	1	1
+chr1	126334	0	1	1
+chr1	129534	1	0	1
+chr1	133854	0	1	1
+chr1	136440	0	1	1
+chr1	137063	1	0	1
+chr1	138941	1	0	1
+chr1	138942	1	0	1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output1.tabular	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,3 @@
+	-500	-499	-498	-497	-496	-495	-494	-493	-492	-491	-490	-489	-488	-487	-486	-485	-484	-483	-482	-481	-480	-479	-478	-477	-476	-475	-474	-473	-472	-471	-470	-469	-468	-467	-466	-465	-464	-463	-462	-461	-460	-459	-458	-457	-456	-455	-454	-453	-452	-451	-450	-449	-448	-447	-446	-445	-444	-443	-442	-441	-440	-439	-438	-437	-436	-435	-434	-433	-432	-431	-430	-429	-428	-427	-426	-425	-424	-423	-422	-421	-420	-419	-418	-417	-416	-415	-414	-413	-412	-411	-410	-409	-408	-407	-406	-405	-404	-403	-402	-401	-400	-399	-398	-397	-396	-395	-394	-393	-392	-391	-390	-389	-388	-387	-386	-385	-384	-383	-382	-381	-380	-379	-378	-377	-376	-375	-374	-373	-372	-371	-370	-369	-368	-367	-366	-365	-364	-363	-362	-361	-360	-359	-358	-357	-356	-355	-354	-353	-352	-351	-350	-349	-348	-347	-346	-345	-344	-343	-342	-341	-340	-339	-338	-337	-336	-335	-334	-333	-332	-331	-330	-329	-328	-327	-326	-325	-324	-323	-322	-321	-320	-319	-318	-317	-316	-315	-314	-313	-312	-311	-310	-309	-308	-307	-306	-305	-304	-303	-302	-301	-300	-299	-298	-297	-296	-295	-294	-293	-292	-291	-290	-289	-288	-287	-286	-285	-284	-283	-282	-281	-280	-279	-278	-277	-276	-275	-274	-273	-272	-271	-270	-269	-268	-267	-266	-265	-264	-263	-262	-261	-260	-259	-258	-257	-256	-255	-254	-253	-252	-251	-250	-249	-248	-247	-246	-245	-244	-243	-242	-241	-240	-239	-238	-237	-236	-235	-234	-233	-232	-231	-230	-229	-228	-227	-226	-225	-224	-223	-222	-221	-220	-219	-218	-217	-216	-215	-214	-213	-212	-211	-210	-209	-208	-207	-206	-205	-204	-203	-202	-201	-200	-199	-198	-197	-196	-195	-194	-193	-192	-191	-190	-189	-188	-187	-186	-185	-184	-183	-182	-181	-180	-179	-178	-177	-176	-175	-174	-173	-172	-171	-170	-169	-168	-167	-166	-165	-164	-163	-162	-161	-160	-159	-158	-157	-156	-155	-154	-153	-152	-151	-150	-149	-148	-147	-146	-145	-144	-143	-142	-141	-140	-139	-138	-137	-136	-135	-134	-133	-132	-131	-130	-129	-128	-127	-126	-125	-124	-123	-122	-121	-120	-119	-118	-117	-116	-115	-114	-113	-112	-111	-110	-109	-108	-107	-106	-105	-104	-103	-102	-101	-100	-99	-98	-97	-96	-95	-94	-93	-92	-91	-90	-89	-88	-87	-86	-85	-84	-83	-82	-81	-80	-79	-78	-77	-76	-75	-74	-73	-72	-71	-70	-69	-68	-67	-66	-65	-64	-63	-62	-61	-60	-59	-58	-57	-56	-55	-54	-53	-52	-51	-50	-49	-48	-47	-46	-45	-44	-43	-42	-41	-40	-39	-38	-37	-36	-35	-34	-33	-32	-31	-30	-29	-28	-27	-26	-25	-24	-23	-22	-21	-20	-19	-18	-17	-16	-15	-14	-13	-12	-11	-10	-9	-8	-7	-6	-5	-4	-3	-2	-1	0	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	77	78	79	80	81	82	83	84	85	86	87	88	89	90	91	92	93	94	95	96	97	98	99	100	101	102	103	104	105	106	107	108	109	110	111	112	113	114	115	116	117	118	119	120	121	122	123	124	125	126	127	128	129	130	131	132	133	134	135	136	137	138	139	140	141	142	143	144	145	146	147	148	149	150	151	152	153	154	155	156	157	158	159	160	161	162	163	164	165	166	167	168	169	170	171	172	173	174	175	176	177	178	179	180	181	182	183	184	185	186	187	188	189	190	191	192	193	194	195	196	197	198	199	200	201	202	203	204	205	206	207	208	209	210	211	212	213	214	215	216	217	218	219	220	221	222	223	224	225	226	227	228	229	230	231	232	233	234	235	236	237	238	239	240	241	242	243	244	245	246	247	248	249	250	251	252	253	254	255	256	257	258	259	260	261	262	263	264	265	266	267	268	269	270	271	272	273	274	275	276	277	278	279	280	281	282	283	284	285	286	287	288	289	290	291	292	293	294	295	296	297	298	299	300	301	302	303	304	305	306	307	308	309	310	311	312	313	314	315	316	317	318	319	320	321	322	323	324	325	326	327	328	329	330	331	332	333	334	335	336	337	338	339	340	341	342	343	344	345	346	347	348	349	350	351	352	353	354	355	356	357	358	359	360	361	362	363	364	365	366	367	368	369	370	371	372	373	374	375	376	377	378	379	380	381	382	383	384	385	386	387	388	389	390	391	392	393	394	395	396	397	398	399	400	401	402	403	404	405	406	407	408	409	410	411	412	413	414	415	416	417	418	419	420	421	422	423	424	425	426	427	428	429	430	431	432	433	434	435	436	437	438	439	440	441	442	443	444	445	446	447	448	449	450	451	452	453	454	455	456	457	458	459	460	461	462	463	464	465	466	467	468	469	470	471	472	473	474	475	476	477	478	479	480	481	482	483	484	485	486	487	488	489	490	491	492	493	494	495	496	497	498	499	500
+Forward_Tags	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Reverse_Tags	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	1	0	0	0	0	0	1	0	0	0	1	1	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	0	1	0	1	1	0	0	0	0	0	0	1	2	0	0	0	1	1	1	0	0	0	1	0	0	2	0	0	0	1	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	3	1	0	0	2	0	0	0	0	1	0	1	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	1	0	0	0	0	0	0	0	0	1	1	0	0	1	0	0	0	1	0	0	0	0	1	0	0	0	0	1	0	0	0	0	1	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output2.tabular	Thu Mar 10 10:34:37 2016 -0500
@@ -0,0 +1,3 @@
+	-500	-499	-498	-497	-496	-495	-494	-493	-492	-491	-490	-489	-488	-487	-486	-485	-484	-483	-482	-481	-480	-479	-478	-477	-476	-475	-474	-473	-472	-471	-470	-469	-468	-467	-466	-465	-464	-463	-462	-461	-460	-459	-458	-457	-456	-455	-454	-453	-452	-451	-450	-449	-448	-447	-446	-445	-444	-443	-442	-441	-440	-439	-438	-437	-436	-435	-434	-433	-432	-431	-430	-429	-428	-427	-426	-425	-424	-423	-422	-421	-420	-419	-418	-417	-416	-415	-414	-413	-412	-411	-410	-409	-408	-407	-406	-405	-404	-403	-402	-401	-400	-399	-398	-397	-396	-395	-394	-393	-392	-391	-390	-389	-388	-387	-386	-385	-384	-383	-382	-381	-380	-379	-378	-377	-376	-375	-374	-373	-372	-371	-370	-369	-368	-367	-366	-365	-364	-363	-362	-361	-360	-359	-358	-357	-356	-355	-354	-353	-352	-351	-350	-349	-348	-347	-346	-345	-344	-343	-342	-341	-340	-339	-338	-337	-336	-335	-334	-333	-332	-331	-330	-329	-328	-327	-326	-325	-324	-323	-322	-321	-320	-319	-318	-317	-316	-315	-314	-313	-312	-311	-310	-309	-308	-307	-306	-305	-304	-303	-302	-301	-300	-299	-298	-297	-296	-295	-294	-293	-292	-291	-290	-289	-288	-287	-286	-285	-284	-283	-282	-281	-280	-279	-278	-277	-276	-275	-274	-273	-272	-271	-270	-269	-268	-267	-266	-265	-264	-263	-262	-261	-260	-259	-258	-257	-256	-255	-254	-253	-252	-251	-250	-249	-248	-247	-246	-245	-244	-243	-242	-241	-240	-239	-238	-237	-236	-235	-234	-233	-232	-231	-230	-229	-228	-227	-226	-225	-224	-223	-222	-221	-220	-219	-218	-217	-216	-215	-214	-213	-212	-211	-210	-209	-208	-207	-206	-205	-204	-203	-202	-201	-200	-199	-198	-197	-196	-195	-194	-193	-192	-191	-190	-189	-188	-187	-186	-185	-184	-183	-182	-181	-180	-179	-178	-177	-176	-175	-174	-173	-172	-171	-170	-169	-168	-167	-166	-165	-164	-163	-162	-161	-160	-159	-158	-157	-156	-155	-154	-153	-152	-151	-150	-149	-148	-147	-146	-145	-144	-143	-142	-141	-140	-139	-138	-137	-136	-135	-134	-133	-132	-131	-130	-129	-128	-127	-126	-125	-124	-123	-122	-121	-120	-119	-118	-117	-116	-115	-114	-113	-112	-111	-110	-109	-108	-107	-106	-105	-104	-103	-102	-101	-100	-99	-98	-97	-96	-95	-94	-93	-92	-91	-90	-89	-88	-87	-86	-85	-84	-83	-82	-81	-80	-79	-78	-77	-76	-75	-74	-73	-72	-71	-70	-69	-68	-67	-66	-65	-64	-63	-62	-61	-60	-59	-58	-57	-56	-55	-54	-53	-52	-51	-50	-49	-48	-47	-46	-45	-44	-43	-42	-41	-40	-39	-38	-37	-36	-35	-34	-33	-32	-31	-30	-29	-28	-27	-26	-25	-24	-23	-22	-21	-20	-19	-18	-17	-16	-15	-14	-13	-12	-11	-10	-9	-8	-7	-6	-5	-4	-3	-2	-1	0	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	77	78	79	80	81	82	83	84	85	86	87	88	89	90	91	92	93	94	95	96	97	98	99	100	101	102	103	104	105	106	107	108	109	110	111	112	113	114	115	116	117	118	119	120	121	122	123	124	125	126	127	128	129	130	131	132	133	134	135	136	137	138	139	140	141	142	143	144	145	146	147	148	149	150	151	152	153	154	155	156	157	158	159	160	161	162	163	164	165	166	167	168	169	170	171	172	173	174	175	176	177	178	179	180	181	182	183	184	185	186	187	188	189	190	191	192	193	194	195	196	197	198	199	200	201	202	203	204	205	206	207	208	209	210	211	212	213	214	215	216	217	218	219	220	221	222	223	224	225	226	227	228	229	230	231	232	233	234	235	236	237	238	239	240	241	242	243	244	245	246	247	248	249	250	251	252	253	254	255	256	257	258	259	260	261	262	263	264	265	266	267	268	269	270	271	272	273	274	275	276	277	278	279	280	281	282	283	284	285	286	287	288	289	290	291	292	293	294	295	296	297	298	299	300	301	302	303	304	305	306	307	308	309	310	311	312	313	314	315	316	317	318	319	320	321	322	323	324	325	326	327	328	329	330	331	332	333	334	335	336	337	338	339	340	341	342	343	344	345	346	347	348	349	350	351	352	353	354	355	356	357	358	359	360	361	362	363	364	365	366	367	368	369	370	371	372	373	374	375	376	377	378	379	380	381	382	383	384	385	386	387	388	389	390	391	392	393	394	395	396	397	398	399	400	401	402	403	404	405	406	407	408	409	410	411	412	413	414	415	416	417	418	419	420	421	422	423	424	425	426	427	428	429	430	431	432	433	434	435	436	437	438	439	440	441	442	443	444	445	446	447	448	449	450	451	452	453	454	455	456	457	458	459	460	461	462	463	464	465	466	467	468	469	470	471	472	473	474	475	476	477	478	479	480	481	482	483	484	485	486	487	488	489	490	491	492	493	494	495	496	497	498	499	500
+Forward_Tags	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+Reverse_Tags	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	1	0	0	0	1	0	0	0	0	0	1	0	0	0	1	1	0	0	0	0	0	1	0	0	0	0	0	0	1	0	0	0	0	0	1	0	1	1	0	0	0	0	0	0	1	2	0	0	0	1	1	1	0	0	0	1	0	0	2	0	0	0	1	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	3	1	0	0	2	0	0	0	0	1	0	1	0	0	0	0	0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	2	0	1	0	0	0	0	0	0	0	0	1	1	0	0	1	0	0	0	1	0	0	0	0	1	0	0	0	0	1	0	0	0	0	1	0	1	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	1	0	0	1	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
\ No newline at end of file