Next changeset 1:b1807ab520a1 (2016-11-14) |
Commit message:
Uploaded |
added:
scaffhunter/BLAT_gros.py scaffhunter/Filter_single_hit_sam.py scaffhunter/GBS_corrector.py scaffhunter/GBS_corrector.xml scaffhunter/JMpwd2matrix.py scaffhunter/JMpwd2matrix.xml scaffhunter/README.md scaffhunter/UPGMA.py scaffhunter/UPGMA.xml scaffhunter/blat_results_analyzer_v3.pl scaffhunter/formatdb.log scaffhunter/include_scaffhunter.sh scaffhunter/locOnRef scaffhunter/locOnRef.py scaffhunter/locOnRef.xml scaffhunter/loca_programs.conf scaffhunter/mat2submat.py scaffhunter/mat2submat.xml scaffhunter/matrix2ortho.py scaffhunter/matrix2ortho.xml scaffhunter/orthodotter/LibAnnotation/Ortho/GDlib.pm scaffhunter/orthodotter/LibAnnotation/Ortho/Gene.pm scaffhunter/orthodotter/LibAnnotation/Ortho/GeneCollection.pm scaffhunter/orthodotter/LibAnnotation/Ortho/GeneCollectionIterator.pm scaffhunter/orthodotter/LibAnnotation/Ortho/OrthoDotter.pm scaffhunter/orthodotter/LibAnnotation/Ortho/PSlib.pm scaffhunter/orthodotter/LibAnnotation/Ortho/drawLib.pm scaffhunter/orthodotter/LibAnnotation/Ortho/rgb.txt scaffhunter/orthodotter/Math/Cephes.pm scaffhunter/orthodotter/Math/Cephes.pod scaffhunter/orthodotter/Math/Cephes/Complex.pm scaffhunter/orthodotter/Math/Cephes/Fraction.pm scaffhunter/orthodotter/Math/Cephes/Matrix.pm scaffhunter/orthodotter/Math/Cephes/Polynomial.pm scaffhunter/orthodotter/orthodotter.pl scaffhunter/pwd2figure.py scaffhunter/pwd2figure.xml scaffhunter/pwd2matrix.py scaffhunter/pwd2matrix.xml scaffhunter/reorderient.py scaffhunter/reorderient.xml scaffhunter/scaff2chrom.py scaffhunter/scaff2chrom.xml scaffhunter/test-data/LOD_chr01_scaff_order_opt.tab scaffhunter/test-data/REF.fasta scaffhunter/test-data/alignment_chromosome.txt scaffhunter/test-data/alignment_on_scaffold3.txt scaffhunter/test-data/alignment_scaffold.txt scaffhunter/test-data/chromosome.agp scaffhunter/test-data/chromosome.fasta scaffhunter/test-data/corrected.txt scaffhunter/test-data/corrected_non_redundant.txt scaffhunter/test-data/dis_file.txt scaffhunter/test-data/don_file.txt scaffhunter/test-data/lod_matrix.txt scaffhunter/test-data/marker_data.txt scaffhunter/test-data/marker_order.txt scaffhunter/test-data/markers.fasta scaffhunter/test-data/matrix.txt scaffhunter/test-data/matrix2ortho.png scaffhunter/test-data/no_suspect.txt scaffhunter/test-data/optimal_marker_order.txt scaffhunter/test-data/optimal_scaffold_order.txt scaffhunter/test-data/pairwise.pwd scaffhunter/test-data/pairwise_LOD.tab scaffhunter/test-data/pwd2figure.png scaffhunter/test-data/rec_matrix.txt scaffhunter/test-data/scaffold_order.txt scaffhunter/test-data/scaffolds.fasta scaffhunter/test-data/sub_matrix.txt |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/BLAT_gros.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/BLAT_gros.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,155 @@ +# +# Copyright 2014 CIRAD +# +# 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/> or +# write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# + +import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, multiprocessing + +def stop_err( msg ): + sys.stderr.write( "%s\n" % msg ) + sys.exit() + +def run_job (cmd_line, ERROR): + # print cmd_line + try: + tmp = tempfile.NamedTemporaryFile().name + # print tmp + error = open(tmp, 'w') + proc = subprocess.Popen( args=cmd_line, shell=True, stderr=error) + returncode = proc.wait() + error.close() + error = open( tmp, 'rb' ) + stderr = '' + buffsize = 1048576 + try: + while True: + stderr += error.read( buffsize ) + if not stderr or len( stderr ) % buffsize != 0: + break + except OverflowError: + pass + error.close() + os.remove(tmp) + if returncode != 0: + raise Exception, stderr + except Exception, e: + stop_err( ERROR + str( e ) ) + + + +def __main__(): + #Parse Command Line + parser = optparse.OptionParser() + # Wrapper options. + parser.add_option( '', '--blast', dest='blast', default='not_filled', help='The blast file default output format') + parser.add_option( '', '--ident', dest='ident', default='90', help='The minimal identity percentage, [default: %default]') + parser.add_option( '', '--max_hit', dest='max_hit', default='1', help='The maximal hit number, [default: %default]') + parser.add_option( '', '--seq', dest='seq', default='100', help='The number of sequence to search simultaneously, [default: %default]') + parser.add_option( '', '--thread', dest='thread', default='1', help='The thread number used for mapping (integer), [default: %default]') + parser.add_option( '', '--out', dest='out', default='not_filled', help='An id for intermediate output') + (options, args) = parser.parse_args() + + ScriptPath = os.path.dirname(sys.argv[0]) + + loca_programs = ConfigParser.RawConfigParser() + loca_programs.read(ScriptPath+'/loca_programs.conf') + + proc = int(options.thread) + + if options.blast == 'not_filled': + mot = 'Please provide an argument for --blast' + sys.exit(mot) + if options.out == 'not_filled': + mot = 'Please provide an argument for --out' + sys.exit(mot) + + file = open (options.blast) + j = 0 + liste_job = [] + liste_temp = [] + for line in file: + if line.split() != []: + if line.split()[0] == 'BLASTN': + if j == 0: + outfile = open(options.out+'_File'+str(j)+'.temp','w') + outfile.write(line) + liste_job.append('%s %s/blat_results_analyzer_v3.pl --blat %s --identity %s --nombre %s > %s' % (loca_programs.get('Programs','perl'), ScriptPath, options.out+'_File'+str(j)+'.temp', options.ident, options.max_hit, options.out+'.bra'+str(j))) + liste_temp.append(str(j)) + elif j%int(options.seq) == 0: + outfile.close() + liste_job.append('%s %s/blat_results_analyzer_v3.pl --blat %s --identity %s --nombre %s > %s' % (loca_programs.get('Programs','perl'), ScriptPath, options.out+'_File'+str(j)+'.temp', options.ident, options.max_hit, options.out+'.bra'+str(j))) + liste_temp.append(str(j)) + outfile = open(options.out+'_File'+str(j)+'.temp','w') + outfile.write(line) + else: + outfile.write(line) + j += 1 + else: + outfile.write(line) + else: + outfile.write(line) + outfile.close() + + liste_process = [] + for n in liste_job: + t = multiprocessing.Process(target=run_job, args=(n, 'Bug lauching blat_results_analyzer_v3.pl',)) + liste_process.append(t) + if len(liste_process) == proc: + # Starts threads + for process in liste_process: + process.start() + # This blocks the calling thread until the thread whose join() method is called is terminated. + for process in liste_process: + process.join() + #the processes are done + liste_process = [] + if liste_process: + # Starts threads + for process in liste_process: + process.start() + # This blocks the calling thread until the thread whose join() method is called is terminated. + for process in liste_process: + process.join() + #the processes are done + liste_process = [] + + os.system('cat '+options.out+'.bra* > '+options.out+'_final') + for n in liste_temp: + os.remove(options.out+'_File'+n+'.temp') + os.remove(options.out+'.bra'+n) + + doublon = set() + dico = {} + file = open(options.out+'_final') + for line in file: + data = line.split() + if data: + if data[0] in dico: + doublon.add(data[0]) + else: + dico[data[0]] = line + file.close() + + for n in dico: + if not(n in doublon): + print('\t'.join(dico[n].split())) + os.remove(options.out+'_final') + +if __name__ == "__main__": __main__() + |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/Filter_single_hit_sam.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/Filter_single_hit_sam.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,101 @@ +# +# Copyright 2014 CIRAD +# +# 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/> or +# write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# + +import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time + + +def find_info(LINE): + dic = {} + for n in LINE[11:]: + liste = n.split(':') + if len(liste) > 2: + dic[liste[0]] = liste[2] + return dic + +def CIGAR(mot): + if 'N' in mot: + sys.exit('N in mot') + elif 'P' in mot: + sys.exit('P in mot') + elif '=' in mot: + sys.exit('= in mot') + elif 'X' in mot: + sys.exit('X in mot') + else: + mot_split = mot.replace('M',' M ').replace('D',' D ').replace('I',' I ').replace('S',' S ').replace('H',' H ').split() + total = 0 + while mot_split: + if mot_split[1] == 'M' or mot_split[1] == 'D': + total = total + int(mot_split[0]) + del mot_split[0] + del mot_split[0] + return total + +def sam2tab(LINE): + TOTAL = CIGAR(LINE[5]) + if LINE[1] == '0': + return LINE[0]+'\t'+LINE[2]+'\t-\t1\t-\t'+LINE[3]+'\t'+str(int(LINE[3])+TOTAL)+'\t1' + elif LINE[1] == '16': + return LINE[0]+'\t'+LINE[2]+'\t-\t1\t-\t'+LINE[3]+'\t'+str(int(LINE[3])+TOTAL)+'\t-1' + else: + sys.exit('Probleme in sam flag '+LINE[1]) + +def __main__(): + #Parse Command Line + parser = optparse.OptionParser(usage="python %prog [options]\n\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr") + # Wrapper options. + parser.add_option( '', '--sam', dest='sam', help='The sam file') + parser.add_option( '', '--dif', dest='dif', help='The minimal difference between the best and second hit accepted to consider the hit as single') + parser.add_option( '', '--type', dest='type', help='The output type, sam or tab') + (options, args) = parser.parse_args() + + min_dif = int(options.dif) + + file = open(options.sam) + if options.type != 'sam' and options.type != 'tab': + sys.exit('Output option is not recognised') + for line in file: + data = line.split() + if data: + if data[0][0] != '@': + if data[1] != '256' and data[1] != '272': + dico = find_info(data) + if 'XS' in dico: + if abs(int(dico['AS'])-int(dico['XS'])) >= min_dif: + if options.type == 'sam': + print('\t'.join(data)) + else: + if data[1] != '4': + print(sam2tab(data)) + else: + if options.type == 'sam': + print('\t'.join(data)) + else: + if data[1] != '4': + print(sam2tab(data)) + else: + if options.type == 'sam': + print('\t'.join(data)) + +if __name__ == "__main__": __main__() + + + |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/GBS_corrector.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/GBS_corrector.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,253 @@\n+#!/usr/local/bioinfo/python/2.7.9/bin/python\n+#\n+# Copyright 2014 CIRAD\n+#\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+# the Free Software Foundation; either version 3 of the License, or\n+# (at your option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+# GNU General Public License for more details.\n+#\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/> or\n+# write to the Free Software Foundation, Inc.,\n+# 51 Franklin Street, Fifth Floor, Boston,\n+# MA 02110-1301, USA.\n+#\n+#\n+\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time\n+\n+\n+def cherche_best(DICO):\n+\tBEST = \'Un\'\n+\tnum = 0\n+\tfor n in DICO:\n+\t\tif DICO[n] > num:\n+\t\t\tBEST = n\n+\t\t\tnum = DICO[n]\n+\t\telif DICO[n] == num:\n+\t\t\tBEST = \'Un\'\n+\treturn BEST\n+\n+def correct(HEADER, LISTE_MARK, DICO_IND_ERROR, DICO_MARK_ERROR, DICO, FENETRE):\n+\t#We correct by individuals\n+\tfor ind in HEADER:\n+\t\tfor mark in LISTE_MARK:\n+\t\t\tif LISTE_MARK.index(mark) < FENETRE:\n+\t\t\t\tdico_var = {}\n+\t\t\t\tfor n in LISTE_MARK[0:(2*FENETRE)+1]:\n+\t\t\t\t\tif DICO[n][HEADER.index(ind)] in dico_var:\n+\t\t\t\t\t\tdico_var[DICO[n][HEADER.index(ind)]] = dico_var[DICO[n][HEADER.index(ind)]] + 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tdico_var[DICO[n][HEADER.index(ind)]] = 1\n+\t\t\t\tbest = cherche_best(dico_var)\n+\t\t\t\tif best != DICO[mark][HEADER.index(ind)] and best != \'Un\' and best != \'--\':\n+\t\t\t\t\tDICO_MARK_ERROR[mark] = DICO_MARK_ERROR[mark] + 1\n+\t\t\t\t\tDICO_IND_ERROR[ind] = DICO_IND_ERROR[ind] + 1\n+\t\t\t\t\tDICO[mark][HEADER.index(ind)] = best\n+\t\t\telif LISTE_MARK.index(mark) >= (len(LISTE_MARK) - FENETRE):\n+\t\t\t\tdico_var = {}\n+\t\t\t\tfor n in LISTE_MARK[((len(LISTE_MARK)-2*FENETRE)-1):len(LISTE_MARK)]:\n+\t\t\t\t\tif DICO[n][HEADER.index(ind)] in dico_var:\n+\t\t\t\t\t\tdico_var[DICO[n][HEADER.index(ind)]] = dico_var[DICO[n][HEADER.index(ind)]] + 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tdico_var[DICO[n][HEADER.index(ind)]] = 1\n+\t\t\t\tbest = cherche_best(dico_var)\n+\t\t\t\tif best != DICO[mark][HEADER.index(ind)] and best != \'Un\' and best != \'--\':\n+\t\t\t\t\tDICO_MARK_ERROR[mark] = DICO_MARK_ERROR[mark] + 1\n+\t\t\t\t\tDICO_IND_ERROR[ind] = DICO_IND_ERROR[ind] + 1\n+\t\t\t\t\tDICO[mark][HEADER.index(ind)] = best\n+\t\t\telse:\n+\t\t\t\tdico_var = {}\n+\t\t\t\tfor n in LISTE_MARK[LISTE_MARK.index(mark)-FENETRE:LISTE_MARK.index(mark)+FENETRE+1]:\n+\t\t\t\t\tif DICO[n][HEADER.index(ind)] in dico_var:\n+\t\t\t\t\t\tdico_var[DICO[n][HEADER.index(ind)]] = dico_var[DICO[n][HEADER.index(ind)]] + 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tdico_var[DICO[n][HEADER.index(ind)]] = 1\n+\t\t\t\tbest = cherche_best(dico_var)\n+\t\t\t\tif best != DICO[mark][HEADER.index(ind)] and best != \'Un\' and best != \'--\':\n+\t\t\t\t\tDICO_MARK_ERROR[mark] = DICO_MARK_ERROR[mark] + 1\n+\t\t\t\t\tDICO_IND_ERROR[ind] = DICO_IND_ERROR[ind] + 1\n+\t\t\t\t\tDICO[mark][HEADER.index(ind)] = best\n+\treturn [DICO_IND_ERROR, DICO_MARK_ERROR, DICO]\n+\t\n+\n+def __main__():\n+\t#Parse Command Line\n+\tparser = optparse.OptionParser(usage="python %prog [options]\\n\\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr\\n\\n"\n+\t"This program identifies markers genotyping errors recorded in a table file based on their order (obtained from genetic map or reference "\n+\t"sequence) provided in a table file. This program is based on the principle that no more than one recombination event can occur in a window "\n+\t"of x around the observed marker (x is passed in --fen argument). If more than one recombination event is observed, a genotyping error is "\n+\t"identified. This program output three files:\\n"\n+\t"\\t1) A file containing corrected markers (--nosu argument)\\n"\n+\t"\\t2) A file containing corrected markers where redundancy is removed (--nr argument)\\n"\n+\t"\\t3) A file where markers with more than X errors a'..b'\n+\tdico_ind_error = {}\n+\theader = []\n+\tfile = open(options.table)\n+\tline = file.readline()\n+\theader = line.split()\n+\ttaille_line = len(header)\n+\theader = line.split()[4:]\n+\thead_3_col = line.split()[1:4]\n+\tliste_mark = []\n+\tprint (\'Your file contain \'+str(taille_line-4)+\' individuals\')\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif len(data) != taille_line:\n+\t\t\t\tsys.exit(\'Please check your --table file, lines have different length\')\n+\t\t\tif data[0] in liste_mark:\n+\t\t\t\tsys.exit(\'Please check your --table file, there is redundancy in marker names\')\n+\t\t\tdico[data[0]] = data[4:]\n+\t\t\tdico_3_col[data[0]] = data[1:4]\n+\t\t\tliste_mark.append(data[0])\n+\t\t\tdico_mark_error[data[0]] = 0\n+\tfor ind in header:\n+\t\tdico_ind_error[ind] = 0\n+\t\n+\t#On travail maintenant par scaffold\n+\tliste_mark = []\n+\tsub_liste_mark = []\n+\trev_dic_mark = {}\n+\tfile = open(options.order)\n+\tscaffold = \'\'\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif data[0] in liste_mark:\n+\t\t\t\tsys.exit(\'Please check your --order file, there is redundancy in marker names\')\n+\t\t\tif scaffold == \'\':\n+\t\t\t\tliste_mark.append(data[0])\n+\t\t\t\tsub_liste_mark.append(data[0])\n+\t\t\t\tscaffold = data[1]\n+\t\t\t\trev_dic_mark[data[0]] = data[1]\n+\t\t\telif scaffold == data[1]:\n+\t\t\t\tliste_mark.append(data[0])\n+\t\t\t\tsub_liste_mark.append(data[0])\n+\t\t\t\trev_dic_mark[data[0]] = data[1]\n+\t\t\telse:\n+\t\t\t\tfor k in fenetre:\n+\t\t\t\t\tif k[0] <= len(sub_liste_mark):\n+\t\t\t\t\t\tprint scaffold, len(sub_liste_mark), k\n+\t\t\t\t\t\tresultat = correct(header, sub_liste_mark, dico_ind_error, dico_mark_error, dico, k[1])\n+\t\t\t\t\t\tdico_ind_error = resultat[0]\n+\t\t\t\t\t\tdico_mark_error = resultat[1]\n+\t\t\t\t\t\tdico = resultat[2]\n+\t\t\t\t\t\tbreak\n+\t\t\t\tsub_liste_mark = []\n+\t\t\t\tsub_liste_mark.append(data[0])\n+\t\t\t\tliste_mark.append(data[0])\n+\t\t\t\tscaffold = data[1]\n+\t\t\t\trev_dic_mark[data[0]] = data[1]\n+\tif sub_liste_mark:\n+\t\tfor k in fenetre:\n+\t\t\tif k[0] <= len(sub_liste_mark):\n+\t\t\t\tprint scaffold, len(sub_liste_mark), k\n+\t\t\t\tresultat = correct(header, sub_liste_mark, dico_ind_error, dico_mark_error, dico, k[1])\n+\t\t\t\tdico_ind_error = resultat[0]\n+\t\t\t\tdico_mark_error = resultat[1]\n+\t\t\t\tdico = resultat[2]\n+\t\t\t\tbreak\n+\t\t\t\t\n+\t#now we print output\n+\toutfile_nr = open(options.nr,\'w\')\n+\toutfile = open(options.cor,\'w\')\n+\toutfile.write(\'marker\')\n+\toutfile_nr.write(\'marker\')\n+\tfor n in head_3_col:\n+\t\toutfile.write(\'\\t\'+n)\n+\t\toutfile_nr.write(\'\\t\'+n)\n+\toutfile.write(\'\\tmark_error\')\n+\toutfile_nr.write(\'\\tmark_error\')\n+\tfor n in header:\n+\t\toutfile.write(\'\\t\'+n)\n+\t\toutfile_nr.write(\'\\t\'+n)\n+\toutfile.write(\'\\n\')\n+\toutfile.write(\'ind_error\\t--\\t-\\t-\\t-\')\n+\toutfile_nr.write(\'\\n\')\n+\toutfile_nr.write(\'ind_error\\t--\\t-\\t-\\t-\')\n+\tfor n in header:\n+\t\toutfile.write(\'\\t\'+str(dico_ind_error[n]))\n+\t\toutfile_nr.write(\'\\t\'+str(dico_ind_error[n]))\n+\toutfile.write(\'\\n\')\n+\toutfile_nr.write(\'\\n\')\n+\t\n+\tmark_prec = []\n+\tscaf_prec = \'\'\n+\tfor mark in liste_mark:\n+\t\toutfile.write(mark)\n+\t\tif dico[mark] == mark_prec and rev_dic_mark[mark] == scaf_prec:\n+\t\t\tmark_prec = dico[mark]\n+\t\t\tscaf_prec = rev_dic_mark[mark]\n+\t\telse:\n+\t\t\toutfile_nr.write(mark)\n+\t\t\tmark_prec = dico[mark]\n+\t\t\tscaf_prec = rev_dic_mark[mark]\n+\t\t\tfor n in dico_3_col[mark]:\n+\t\t\t\toutfile_nr.write(\'\\t\'+n)\n+\t\t\toutfile_nr.write(\'\\t\'+str(dico_mark_error[mark]))\n+\t\t\tfor ind in header:\n+\t\t\t\toutfile_nr.write(\'\\t\'+dico[mark][header.index(ind)])\n+\t\t\toutfile_nr.write(\'\\n\')\n+\t\tfor n in dico_3_col[mark]:\n+\t\t\toutfile.write(\'\\t\'+n)\n+\t\toutfile.write(\'\\t\'+str(dico_mark_error[mark]))\n+\t\tfor ind in header:\n+\t\t\toutfile.write(\'\\t\'+dico[mark][header.index(ind)])\n+\t\toutfile.write(\'\\n\')\n+\toutfile.close()\n+\toutfile_nr.close()\n+\t\n+\t#Now we print the original file with suspect markers removed\n+\toutfile = open(options.Nosu,\'w\')\n+\tfile = open(options.table)\n+\tline = file.readline()\n+\toutfile.write(line)\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif dico_mark_error[data[0]] < susp and data[0] in liste_mark:\n+\t\t\t\toutfile.write(line)\n+\toutfile.close()\n+\t\n+if __name__ == "__main__": __main__()\n\\ No newline at end of file\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/GBS_corrector.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/GBS_corrector.xml Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,85 @@ +<tool id="GBS_corrector" name="GBS_corrector" version="0.1"> + <description> : Correct GBS markers based on their order along scaffold or chromosome or other</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + $__tool_directory__/GBS_corrector.py + --table $table + --order $order + --fen $fen + --suspect $suspect + --nr $corrected_non_redundant + --cor $corrected + --Nosu $no_suspect + </command> + <inputs> + <param name="table" type="data" format="txt" label="A table file containing phased data. col 1 : markers name, col 2, 3, 4 necessary but not used by the program, col 5 to end : individual genotypes. First line contain header. Rendundant names (markers and individuals) are not allowed" /> + <param name="order" type="data" format="txt" label="A table file with markers names in column 1 and scaffold they match with in column2. Markers should be ordered first on scaffold and second on markers position on scaffold" /> + <param name="fen" value="10=3" type="text" label="Minimal marker number in a scaffold followed by half window size. Both values should be separated by '='. If different classes, couple can be repeated and separated by '=' (--fen)" /> + <param name="suspect" type="integer" value="20" label="The minimal number of corrections in a marker to consider this marker as supect (--suspect)" /> + <param name="prefix" type="text" label="Prefix of output files" /> + </inputs> + <outputs> + <data format="txt" name="corrected_non_redundant" label="${tool.name} : $prefix corrected_non_redundant" /> + <data format="txt" name="corrected" label="${tool.name} : $prefix corrected" /> + <data format="txt" name="no_suspect" label="${tool.name} : $prefix no_suspect" /> + </outputs> <tests> + <test> + <param name="table" value="marker_data.txt"/> + <param name="order" value="alignment_scaffold.txt" /> + <param name="fen" value="10=3" /> + <param name="suspect" value="20" /> + <output name="corrected_non_redundant" file="corrected_non_redundant.txt"/> + <output name="corrected" file="corrected.txt"/> + <output name="no_suspect" file="no_suspect.txt"/> + </test> + </tests> + <help> + +**Overview** + +This program identifies markers genotyping errors recorded in a table file based on their order (obtained from genetic map or reference sequence) provided in a table file. + +This program is based on the principle that no more than one recombination event can occur in a window of x around the observed marker (x is passed in --fen argument). + +If more than one recombination event is observed, a genotyping error is identified. + +This program output three files: + +* A file containing corrected markers (--nosu argument) + +* A file containing corrected markers where redundancy is removed (--nr argument) + +* A file where markers with more than X errors are identified are removed. (--Nosu argument) + +This program works on phased markers of same type. It is based on the principle that no more than one recombination can be observed in a window around each markers. + + +For example, the value 10=3 passed in --fen argument indicates that only markers located on scaffolds containing 10 or more markers will be corrected/genotyping error will be identified. An error will be identified if more than 1 recombination event is observed in a window size of [-3 ; +3] markers around the observed markers. + +The 20 value passed in --suspect arguments indicate all markers having at least 20 errors detected are discarded from the output file. + +This file contained filtered markers but the genotyping errors in this file have not been corrected. + + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/JMpwd2matrix.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/JMpwd2matrix.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,109 @@ +#!/usr/local/bioinfo/python/2.7.9/bin/python +# +# Copyright 2014 CIRAD +# +# 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/> or +# write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# + +import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, math + +def JMpwd2markid(PWD): + LISTE = [] + file = open(PWD) + sur_id = 0 + for line in file: + data = line.split() + if data: + if sur_id: + LISTE.append(data[1]) + elif data[0] == 'locus' and data[1] == 'numbers:': + sur_id = 1 + return LISTE + +def JMpwd2matrix(PWD, LISTE_ID, OUT1, OUT2): + #creating the table structure + # os.system("echo '1)creating the table structure'") + liste_vide = [] + for n in LISTE_ID: + liste_vide.append('999999999') + dic_LOD = {} + dic_REC = {} + for n in LISTE_ID: + dic_LOD[n] = list(liste_vide) + dic_REC[n] = list(liste_vide) + + #filling the table + # os.system("echo '2)filling the table. It can take time...'") + file = open(PWD) + maxlod = 0 + for line in file: + data = line.split() + if data != [] and not('name =' in line) and len(data) > 2: + if data[0] != ';': + if data[0] in LISTE_ID and data[1] in LISTE_ID: + dic_LOD[data[0]][LISTE_ID.index(data[1])] = float(data[3]) + dic_LOD[data[1]][LISTE_ID.index(data[0])] = float(data[3]) + dic_REC[data[0]][LISTE_ID.index(data[1])] = float(data[2]) + dic_REC[data[1]][LISTE_ID.index(data[0])] = float(data[2]) + if maxlod < float(data[3]): + maxlod = float(data[3]) + file.close() + + # filling diag + # os.system("echo '3)filling diag'") + for n in LISTE_ID: + dic_REC[n][LISTE_ID.index(n)] = 0 + dic_LOD[n][LISTE_ID.index(n)] = maxlod + + #writing results + + # os.system("echo '4)writing results'") + out1 = open(OUT1,'w') + out2 = open(OUT2,'w') + out1.write('ID\t'+'\t'.join(LISTE_ID)+'\n') + out2.write('ID\t'+'\t'.join(LISTE_ID)+'\n') + for n in LISTE_ID: + out1.write(n+'\t'+'\t'.join(map(str,dic_LOD[n]))+'\n') + out2.write(n+'\t'+'\t'.join(map(str,dic_REC[n]))+'\n') + out1.close() + out2.close() + +def __main__(): + #Parse Command Line + parser = optparse.OptionParser(usage="python %prog [options]\n\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr\n\n" + "This program takes a pairwise file generated by JoinMap (.pwd file in the folder created by joinmap) and returns two matrixes :\n" + "\t- a matrix containing pairwise LOD score\n" + "\t- a matrix containing pairwise recombination frequencies") + # Wrapper options. + parser.add_option( '', '--pwd', dest='pwd', default=None, help='The pairwise file calculated by joinmap') + parser.add_option( '', '--lod', dest='lod', default='lod_matrix.tab', help='The LOD matrix output file name. [default: %default]') + parser.add_option( '', '--rec', dest='rec', default='rec_matrix.tab', help='The REC matrix output file name. [default: %default]') + (options, args) = parser.parse_args() + nom_pairwise = options.pwd + + if options.pwd == None: + sys.exit('Please provide a pairwise Joinmap file in --pwd argument') + + #creating a list of marker found in the pairwise file + # os.system("echo 'creating a list of marker found in the pairwise file'") + liste_id = JMpwd2markid(nom_pairwise) + + # creation of the matrix file + JMpwd2matrix(nom_pairwise, liste_id, options.lod, options.rec) + +if __name__ == "__main__": __main__() \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/JMpwd2matrix.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/JMpwd2matrix.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,57 @@ +<tool id="JMpwd2matrix" name="JMpwd2matrix" version="0.1"> + <description> : Convert JoinMap pair-wise file to a tabulated matrix</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + $__tool_directory__/JMpwd2matrix.py + --pwd $joinmap + --lod $lod_matrix + --rec $rec_matrix + </command> + <inputs> + <param name="joinmap" type="data" format="tabular" label="Pairwise file" /> + <param name="prefix" type="text" label="Prefix of output files" value="JoinMap" /> + </inputs> + <outputs> + <data format="tabular" name="lod_matrix" label="${tool.name} : $prefix LOD matrix" /> + <data format="tabular" name="rec_matrix" label="${tool.name} : $prefix REC matrix" /> + </outputs> + <tests> + <test> + <param name="joinmap" value="pairwise.pwd"/> + <output name="lod_matrix" file="lod_matrix.txt"/> + <output name="rec_matrix" file="rec_matrix.txt"/> + </test> + </tests> + <help> + +**Overview** + +This program takes a pairwise file generated by JoinMap_ (.pwd file in the folder created by joinmap) and returns two matrixes: + +* a matrix containing pairwise LOD score + +* a matrix containing pairwise recombination frequencies + +.. _JoinMap: https://www.kyazma.nl/index.php/mc.JoinMap + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/README.md Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,225 @@\n+# Purpose of scaffhunter\n+\n+Scaffhunter regroups several programs which principal aims are to work and visualize genetic mapping data. \n+\n+In addition to 2D visualization of linkage between markers, these tools can be used to order scaffolds without passing by the tedious step of genetic map construction and reconciliation between marker order in scaffold and marker order in the genetic map. \n+\n+## Installation\n+\n+All proposed tools described here are written in python and work on linux system\n+To install the tools:\n+\n+1. unzip the tar.gz file with the following command line : tar -xvzf <archive-file>\n+2. open the loca_programs.conf file\n+3. set the path to each programs required\n+\n+## Dependencies\n+\n+1. blast \n+2. bowtie2 can be found at http://bowtie-bio.sourceforge.net/bowtie2/index.shtml\n+3. bwa can be found at http://bio-bwa.sourceforge.net\n+4. orthodotter is provided in the bin directory with these tools\n+\n+Perl, Python and Java are required. Biopython is also required.\n+\n+Two of these tools use orthodotter program provided in this archive. \n+This program has been developed by Jean-Marc Aury (Institut de Genomique / DSV / CEA, FRANCE) and is deposited under CeCILL license http://www.cecill.info.\n+\n+## Descriptions \n+\n+The package provided comprise 10 programs listed here:\n+\n+* GBS_corrector.py\n+* JMpwd2matrix.py\n+* locOnRef.py\n+* mat2submat.py\n+* matrix2ortho.py\n+* pwd2figure.py\n+* pwd2matrix.py\n+* reorderient.py\n+* scaff2chrom.py\n+* UPGMA.py\n+\n+All 10 programs run using the following command: \n+\n+```python\n+python program-name <--options-name value>\n+```\n+\xe2\x80\x83\n+## Programs\n+\n+\n+### JMpwd2matrix.py\n+\n+This program takes a pairwise file generated by JoinMap (.pwd file in the folder created by joinmap) and returns two matrixes:\n+\ta matrix containing pairwise LOD score\n+\ta matrix containing pairwise recombination frequencies\n+\n+\tOptions:\n+\t--pwd: The pairwise file calculated by joinmap\n+ \t--lod: The LOD matrix output file name. (Default: lod_matrix.tab)\n+\t--rec: The REC matrix output file name. (Default: rec_matrix.tab)\n+\n+\n+### pwd2matrix.py\n+\n+This program takes a file containing pairwise statistics and returns a matrix containing the same information. Missing data in the matrix will be filled with 999999999 value.\n+\n+** Options:**\n+\n+\t--pwd: Pairwise file. Column 1: id1, column 2: id2, column 3: statistics\n+\t--out: Output file name\n+\n+### locOnRef.py\n+\n+This programs locates fasta sequences onto a reference sequence. This program take in input two multifasta files: a file containing short sequence (markers file --fasta) to align against the other fasta file (reference sequence file --ref). \n+Several tools can be used together. This program can use bowtie2 (local and end to end modes) with --very-sensitive mode, bwa mem and blast. Only unique hits are conserved for each tools used. Only identical hits between all tools used are conserved. Identical hits between tools are identified if all hits from different tools co-locate in the same region in a region of 2 fold --margin option. Otherwise, they are discarded. If a tool, does not report a hit for a sequence (due to multi hit or no hit), this tools is not used for this sequence.\n+\n+If blast is selected, this program perform for each sequence a blast (e-value = 1e-10, -F F). \n+Blast output is used to reconstruct the alignment from different HSP and calculate an identity of the hit (This step is performed by blat_results_analyzer_v3.pl, script written by Philippe FRANCOIS and modified by Guillaume MARTIN). For each identity percentage threshold (98%, 95%, 90%, 80 and 80% identity) valid hits are counted and hit is reported only if it is unique for at least one of these identity thresholds.\n+\n+** Options:**\n+\n+\t--ref: The reference fasta file\n+\t--blast: Use blast:\n+\t\ty: use blast\n+\t\tn: do not use blast (Default)\n+\t--bwa_mem: Use bwa_mem \n+\t\ty: use bwa_mem\n+\t\tn: do not use bwa_mem (Default)\n+\t--bow: Use bowtie2\n+\t\ty: use bowtie2\n+\t\tn: do not use bowtie2 (De'..b' (correlation). (Default: LOD)\n+\t--png: Output file name. (Default: dot-plot.png)\xe2\x80\x83\n+\n+### scaff2chrom.py\n+\n+This program takes in input files a multifasta containing scaffolds and a table file containing scaffolds order calculated by reorderient.py and output a multifasta file containing reconstructed chromosomes and an agp file locating scaffolds into chromosomes.\n+\n+** Options:**\n+\n+\t--table: Table file containing in column 1: chromosome name, column 2: scaffold name, column 3: expected orientation (FWD or REV).\n+\t--seq: Multifasta sequence file containing scaffolds.\n+\t--unknown: Build an unknown chromosome with the remaining sequences. (Default: yes)\n+\t--out: Fasta output file name.\n+\t--agp: agp output file name.\n+\n+* **pwd2figure.py**\n+\n+This program take a pairwise file generated by JoinMap and return a dot-plot representing pairwise marker linkage of markers along chromosomes. Two additional file are generated that can be used by Darwin software to construct tree. These files contain pairwise recombination rate converted into mapping distance using the Kosambi mapping function\n+\n+** Options:**\n+\n+\t--pwd: Pairwise file calculated by Joinmap.\n+\t--type: Type of pairwise statistics: LOD or REC.\n+\t--order: Tabulated file containing in column 1: markers names and column 2: chromosome name. Markers should be grouped by identifier and ordered based on their position in the group. The file can contain additional columns (example position on identifier) that will not be used.\n+\t--png: Output name for the dot-plot (png file).\n+\t--dis: Output name for the .dis file (for Darwin).\n+\t--don: Output name for the .don file (for Darwin).\n+\n+### mat2submat.py\n+\n+This program takes a square matrix (--mat) file and create de sub-matrix containing all IDs provided in another file (--mark).\n+\n+** Options:**\n+\n+\t--mark: A tabulated file containing in column 1 the IDs that will be contained in the sub-matrix\n+ \t--mat: Square matrix file.\n+ \t--out: Output file name. (Default: sub_matrix.txt)\n+\n+### GBS_corrector.py\n+\n+This program identifies markers genotyping errors recorded in a table file based on their order (obtained from genetic map or reference sequence) provided in a table file. This program is based on the principle that no more than one recombination event can occur in a window of x around the observed marker (x is passed in --fen argument). If more than one recombination event is observed, a genotyping error is identified. \n+\n+This program output three files:\n+\n+* A file containing corrected markers (--nosu argument)\n+* A file containing corrected markers where redundancy is removed (--nr argument)\n+* A file where markers with more than X errors are identified are removed. (--Nosu argument)\n+This program works on phased markers of same type. It is based on the principle that no more than one recombination can be observed in a window around each markers.\n+\n+** Options:**\n+\n+\t--table: The table file containing phased data. col 1 : markers name, columns 2, 3, 4 necessary but not used by the program, columns 5 to end : individual genotypes. First line contain header. Redundant names (markers and individuals) are not allowed.\n+\t--fen: Minimal marker number in a linkage group/scaffold/reference sequence to apply correction followed by half window size. Both values should be separated by "=". (Default:10=3)\n+\t--order: A table file with markers names in column 1 and scaffold they match with in column2. Markers should be ordered first on linkage group/scaffold/reference sequence and second on markers position on linkage group/scaffold/reference sequence\n+\t--suspect: The minimal number of correction in a marker to consider this marker as supect. (Default: 10)\n+\t--nr: The name of the corrected non redundant output file. (Default: corrected_non_redunddant_mark.tab)\n+\t--cor: The name of the corrected output file. (Default: corrected_mark.tab)\n+\t--Nosu: The name of the output file containing the non-suspect markers. (Default: filtered_mark.tab)\n+\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/UPGMA.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/UPGMA.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
b"@@ -0,0 +1,460 @@\n+#\n+# Copyright 2014 CIRAD\n+#\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+# the Free Software Foundation; either version 3 of the License, or\n+# (at your option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+# GNU General Public License for more details.\n+#\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/> or\n+# write to the Free Software Foundation, Inc.,\n+# 51 Franklin Street, Fifth Floor, Boston,\n+# MA 02110-1301, USA.\n+#\n+#\n+\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, random\n+\n+def cherche_max_couple(DICO, INDEX):\n+\tmaxi = 0\n+\ti = 0\n+\ttaille = len(INDEX)\n+\twhile i < taille:\n+\t\tfor n in DICO:\n+\t\t\tif n != INDEX[i]:\n+\t\t\t\tif DICO[n][i] > maxi:\n+\t\t\t\t\tmaxi = DICO[n][i]\n+\t\t\t\t\tcouple = [n,INDEX[i],((1 - maxi/100)/2)]\n+\t\ti += 1\n+\treturn couple\n+\n+def cherche_min_couple(DICO, INDEX):\n+\tmini = 10000000000000\n+\ti = 0\n+\ttaille = len(INDEX)\n+\twhile i < taille:\n+\t\tfor n in DICO:\n+\t\t\tif n != INDEX[i]:\n+\t\t\t\tif DICO[n][i] < mini:\n+\t\t\t\t\tmini = DICO[n][i]\n+\t\t\t\t\tcouple = [n,INDEX[i],(mini/2)]\n+\t\ti += 1\n+\treturn couple\n+\n+\n+def pseudoUP(MAT, IND, INFO, TYPE, MATRIX_MARK, LISTE_ORDRE, DICO_MARK, DICO_ORIENT, DICO_INDEX, NB_MARK):\n+\tindex_mat = list(IND)\n+\tdico = {}\n+\tdico_couple = {}\n+\tfor n in MAT:\n+\t\tdico[n] = list(MAT[n])\n+\ti = 0\n+\twhile len(dico) > 1:\n+\t\ti += 1\n+\t\t#On cherche le meilleur couple\n+\t\tif TYPE == 'IDENT':\n+\t\t\tcouple = cherche_max_couple(dico, index_mat)\n+\t\telif TYPE == 'DIF':\n+\t\t\tcouple = cherche_min_couple(dico, index_mat)\n+\t\telse:\n+\t\t\tsys.exit('Problem in data type')\n+\t\tdico_couple['g'+str(i)] = couple\n+\t\t#####On recalcule la table\n+\t\tin_line = []\n+\t\tj = 0\n+\t\tn1 = INFO[couple[0]]\n+\t\tn2 = INFO[couple[1]]\n+\t\twhile j < len(index_mat):\n+\t\t\tval1 = dico[couple[0]][j]\n+\t\t\tval2 = dico[couple[1]][j]\n+\t\t\tin_line.append(((val1*n1)+(val2*n2))/(n1+n2))\n+\t\t\tj += 1\n+\t\tin_line.append(100)\n+\t\t##On enregistre les nouvelles infos\n+\t\tINFO['g'+str(i)] = n1+n2\n+\t\tdico['g'+str(i)] = in_line\n+\t\tj = 0\n+\t\tfor n in index_mat:\n+\t\t\tdico[n].append(in_line[j])\n+\t\t\tj += 1\n+\t\tindex_mat.append('g'+str(i))##tres important que ca arrive apres la boucle precedente sinon la derniere case du tableau est duplique\n+\t\t##on retire ce qui est en trop\n+\t\tif index_mat.index(couple[0]) < index_mat.index(couple[1]):\n+\t\t\tc1 = index_mat.index(couple[0])\n+\t\t\tc2 = index_mat.index(couple[1])\n+\t\telse:\n+\t\t\tc1 = index_mat.index(couple[1])\n+\t\t\tc2 = index_mat.index(couple[0])\n+\t\t#On retire les colonnes\n+\t\tfor n in dico:\n+\t\t\tdel dico[n][c2]\n+\t\t\tdel dico[n][c1]\n+\t\t#On retire les lignes\n+\t\tdel dico[couple[0]]\n+\t\tdel dico[couple[1]]\n+\t\t#On retire aussi les indexes et les info de nombre de marqueurs\n+\t\tdel index_mat[c2]\n+\t\tdel index_mat[c1]\n+\t\tdel INFO[couple[0]]\n+\t\tdel INFO[couple[1]]\n+\t\t##Une petite verification\n+\t\tif couple[0] in INFO or couple[1] in INFO or couple[0] in dico or couple[1] in dico or len(dico) != len(INFO) or len(INFO) != len(index_mat):\n+\t\t\tsys.exit('There is a bug')\n+\t\ttaille = len(dico)\n+\t\tfor n in dico:\n+\t\t\tif len(dico[n]) != taille:\n+\t\t\t\tprint len(dico[n]), taille\n+\t\t\t\tsys.exit('There is a bug')\n+\t#Creation of the tree structure\n+\treturn create_nexus(dico_couple, MAT, IND, MATRIX_MARK, LISTE_ORDRE, DICO_MARK, DICO_ORIENT, DICO_INDEX, NB_MARK, TYPE)\n+\n+def create_nexus(DICO, MAT, IND, MATRIX_MARK, LISTE_ORDRE, DICO_MARK, DICO_ORIENT, DICO_INDEX, NB_MARK, TYPE):\n+\tdico = {}\n+\tfor n in DICO:\n+\t\tdico[n] = list(DICO[n])\n+\ttaille = len(dico)\n+\ti = 0\n+\tdico_mot = {}\n+\tdico_arbre = {}\n+\twhile i < taille:\n+\t\ti += 1\n+\t\tif dico['g'+str(i)][0] in dico_arbre and dico['g'+str(i)][1] in dico_arbre:\n+\t\t\tdico_arbre['g'+str(i)] = '('+di"..b'umns should be ordered first on scaffold name and second on marker position on scaffold\')\n+\tparser.add_option( \'\', \'--mat\', dest=\'mat\', default=None, help=\'Matrix file with pairwise statistics between markers.\')\n+\tparser.add_option( \'\', \'--out1\', dest=\'out1\', default=\'UPGMA_ordered_scaff.txt\', help=\'Output file name of ordered scaffold. [default: %default]\')\n+\tparser.add_option( \'\', \'--out2\', dest=\'out2\', default=\'UPGMA_ordered_mark.txt\', help=\'Output file name of ordered markers. [default: %default]\')\n+\tparser.add_option( \'\', \'--type\', dest=\'type\', default=\'IDENT\', help=\'Data type : IDENT (marker linkage) or DIF (recombination rate). [default: %default]\')\n+\t(options, args) = parser.parse_args()\n+\t\n+\tif options.scaff == None:\n+\t\tsys.exit(\'--scaff argument is missing\')\n+\tif options.mat == None:\n+\t\tsys.exit(\'--mat argument is missing\')\n+\t\n+\t#Recording mean distance/ressemblance between scaffold\n+\ttemp1 = tempfile.NamedTemporaryFile()\n+\tmat_mark2mat_scaff(options.scaff, options.mat, temp1)\n+\ttemp1.flush()\n+\t\n+\t# Registering markers order\n+\t#on enregistre dans une liste les markers dans l\'ordre dans la matrice\n+\tfile = open(options.mat)\n+\tindex_mat_mark = file.readline().split()[1:]\n+\tfile.close()\n+\t\n+\t#Registering scaffold order and markers order\n+\t#on enregistre dans un dico les scaffolds et l\'ordre des positions (dans la matrice) des marqueurs dans le scaffold. Dans un second dictionnaire on enregistre l\'ordre des scaffolds\n+\tfile = open(options.scaff)\n+\tdico_mark = {}\n+\tdico_orient = {}\n+\tliste_ordre = []\n+\tdico_index = {}\n+\tnb_mark = 0\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tnb_mark += 1\n+\t\t\tif data[1] in dico_mark:\n+\t\t\t\tdico_mark[data[1]].append(index_mat_mark.index(data[0]))\n+\t\t\t\tdico_index[index_mat_mark.index(data[0])] = data[0]\n+\t\t\telse:\n+\t\t\t\tdico_mark[data[1]] = []\n+\t\t\t\tdico_mark[data[1]].append(index_mat_mark.index(data[0]))\n+\t\t\t\tdico_index[index_mat_mark.index(data[0])] = data[0]\n+\t\t\t\tliste_ordre.append(data[1])\n+\t\t\t\tdico_orient[data[1]] = \'FWD\'\n+\tfile.close()\n+\tnb_mark = float(nb_mark)\n+\t\n+\t#Recording markers pairwise information\n+\tmatrix_mark = {}\n+\tinfo_scaff_mark = {}\n+\tfile = open(options.mat)\n+\tfile.readline()\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif data[0] in matrix_mark:\n+\t\t\t\tsys.exit("Warning there is redundancy in markers names, verify your data")\n+\t\t\telse:\n+\t\t\t\tmatrix_mark[data[0]] = map(float, data[1:])\n+\tfile.close()\n+\t\n+\t\n+\t#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n+\t#!!WARNING dico_orient is changing everytime in cherche_best_pos()!!\n+\t#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n+\t\n+\t\n+\t\n+\t#Registering marker order in scaffold in a dictionnary\n+\tfile = open(temp1.name)\n+\tindex_mat = file.readline().split()[2:]\n+\tfile.close()\n+\t\n+\t#Recording scaffold pairwise information\n+\tmatrix = {}\n+\tinfo_scaff = {}\n+\tfile = open(temp1.name)\n+\tfile.readline()\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif data[0] in matrix:\n+\t\t\t\tsys.exit("Warning there is redundancy in markers names, verify your data")\n+\t\t\telse:\n+\t\t\t\tmatrix[data[0]] = map(float, data[2:])\n+\t\t\t\tinfo_scaff[data[0]] = int(data[1])\n+\tfile.close()\n+\t\n+\t#Doing the UPGMA\n+\tGROUP = pseudoUP(matrix, index_mat, info_scaff, options.type, matrix_mark, liste_ordre, dico_mark, dico_orient, dico_index, nb_mark)\n+\t\n+\t#Outputing ordonned markers\n+\tfile = open(options.scaff)\n+\tdico_mark = {}\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif data[1] in dico_mark:\n+\t\t\t\tdico_mark[data[1]].append(data[0])\n+\t\t\telse:\n+\t\t\t\tdico_mark[data[1]] = []\n+\t\t\t\tdico_mark[data[1]].append(data[0])\n+\toutfile1 = open(options.out1,\'w\')\n+\toutfile = open(options.out2,\'w\')\n+\tfor n in GROUP[1]:\n+\t\toutfile1.write(n+\'\\t\'+dico_orient[n]+\'\\n\')\n+\t\tliste = list(dico_mark[n])\n+\t\tif dico_orient[n] == \'REV\':\n+\t\t\tliste.reverse()\n+\t\tfor j in liste:\n+\t\t\toutfile.write(j+\'\\t\'+n+\'\\n\')\n+\toutfile.close()\n+\toutfile1.close()\n+\t\n+if __name__ == "__main__": __main__()\n\\ No newline at end of file\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/UPGMA.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/UPGMA.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,78 @@ +<tool id="UPGMA" name="UPGMA" version="0.1"> + <description> : Order scaffold based on pseudo UPGMA method</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + python $__tool_directory__/UPGMA.py + --mat $mat + --scaff $scaff + --type $type + --out1 $scaffold_order + --out2 $marker_order + </command> + <inputs> + <param name="mat" type="data" format="tabular" label="The data matrix with pair-wise statistics between markers" /> + <param name="scaff" type="data" format="tabular" label="A tabulated file containing in col 1 : markers name, col2 : scaffold name (the file should be ordered by scaffold and marker order on scaffold)" /> + <param name="type" type="select" label="Data type" > + <option value="IDENT" selected="true">linkage information (LOD score)</option> + <option value="DIF">divergence information (recombination rate)</option> + </param> + <param name="prefix" type="text" label="Prefix of output files" value="upgma" /> + </inputs> + <outputs> + <data format="tabular" name="scaffold_order" label="${tool.name} : $prefix scaffold order" /> + <data format="tabular" name="marker_order" label="${tool.name} : $prefix marker order" /> + </outputs> + <tests> + <test> + <param name="mat" value="lod_matrix.txt"/> + <param name="scaff" value="alignment_scaffold.txt" /> + <output name="scaffold_order" file="scaffold_order.txt"/> + <output name="marker_order" file="marker_order.txt"/> + </test> + </tests> + <help> + +**Overview** + +This program takes in input a matrix containing maker linkage or divergence and a tabulated file locating these markers on scaffolds (or sequence) and try to group and order them based on an UPGMA like approach. + +This program work as followed: + +* an mean linkage/divergence is calculated between scaffolds + +* scaffolds are then grouped using an UPGMA like approach + +* scaffolds are orientated and positioned (at the beginning or the end of a precedent group) trying to optimize a score calculated for each position and orientation. + +In case of marker linkage information (LOD score) in the matrix, the score is calculated as followed: + +.. image:: http://orygenesdb.cirad.fr/images/lod_score.png + +In case of marker divergence information (recombination rate) in the matrix the score is calculated as followed: + +.. image:: http://orygenesdb.cirad.fr/images/recombinaison_rate.png + +with n the number of markers in the LG to order, xi and xj are the position of markers i and j in the tested order, and LODij the LOD score between markers i and j. To optimize computation time and as order is not tested within scaffolds, i and j are markers from different scaffolds. + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/blat_results_analyzer_v3.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/blat_results_analyzer_v3.pl Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,517 @@\n+#!/usr/bin/perl\n+\n+#blat_results_analyzer.pl - Analyse and return in text format the BLAT\'s results.\n+\n+## command line : perl blat_results_analyzer.pl --blat "file_BLAST/BLAT" --identity "value_of _percentage_identity" --outfile "outfile_name"\n+\n+## file_BLAST/BLAT => name of your BLAST/BLAT out file (in pairwise format).\n+## value_of _percentage_identity => value between 0 and 100 (ex : 80).\n+## outfile_name => the name desired for program outfile, just the name without extension. The outfile name will be named like this : BRA_"outfile name".txt\n+\n+use strict;\n+use Carp qw(confess);\n+use Bio::SearchIO;\n+use Getopt::Long;\n+use Pod::Usage;\n+use warnings;\n+\n+my $nombre;\n+my $help;\n+my $blat_result;\n+my $identity_percent;\n+# my $outfile;\n+my $blat_result_in;\n+my $result;\n+my %result_query_length;\n+my $hit;\n+my %result_hit_length;\n+my $hsp;\n+my %hsp_start_end;\n+my %hsp_strand;\n+my $verbose = 0;\n+GetOptions(\n+\t "help" => \\$help,\n+\t "blat=s" => \\$blat_result, \n+\t "identity=i" => \\$identity_percent,\n+\t # "outfile=s" => \\$outfile,\n+\t "nombre=i" => \\$nombre,\n+\t "verbose" => \\$verbose);\n+if (defined $help) { pod2usage("\\n#blat_results_analyzer.pl - Analyse and return in text format the BLAT\'s results.\\n\n+## command line : perl blat_results_analyzer.pl --blat \\"file_BLAST/BLAT\\" --identity \\"value_of _percentage_identity\\" --nombre \\"max number different hits\\"\\n\n+## file_BLAST/BLAT => name of your BLAST/BLAT out file (in pairwise format).\n+## value_of _percentage_identity => value between 0 and 100 (ex : 80).") && exit; }\n+unless(defined $blat_result) { pod2usage("\\n!!! You must enter a blat result file with \\"--blat\\" option - for more informations, enter \\"perl blat_results_analyzer.pl --help\\" !!!\\n") && exit; }\n+unless(defined $identity_percent) { pod2usage("\\n!!! You must enter an identity percent with \\"--identity\\" option - for more informations, enter \\"perl blat_results_analyzer.pl --help\\" !!!\\n") && exit; }\n+# unless(defined $outfile) { pod2usage("\\n!!! You must enter an outfile name (without extension) with \\"--outfile\\" option - for more informations, enter \\"perl blat_results_analyzer.pl --help\\" !!!\\n") && exit; }\n+\n+$blat_result_in = new Bio::SearchIO(-format => \'blast\', -file => $blat_result);\n+\n+#Store four data structure : \n+# - First : query with association to query\'s length.\n+# - Second : subject with association to subject\'s length.\n+# - Third : all data for each hsp.\n+# - Four : relative data for hsp strand orientation.\n+print " 1. Recovery of all BLAT/BLAST data.\\n\\n" if $verbose;\n+print " Markers with no hits found : \\n" if $verbose;\n+while ($result = $blat_result_in -> next_result){\n+ if ($result -> num_hits == 0){\n+\tprint " - ".$result -> query_name."\\n" if $verbose;\n+ }\n+ $result_query_length{$result -> query_name} = $result -> query_length;\n+ while ($hit = $result -> next_hit){\n+\tif ($hit -> length != 0){\n+\t $result_hit_length{$hit -> name} = $hit -> length;\n+\t}\n+\telse {\n+\t next;\n+\t}\n+\twhile ($hsp = $hit -> next_hsp){\n+\t $hsp_start_end{$result -> query_name}{$hit -> name}{$hsp -> start(\'hit\')}{$hsp -> end(\'hit\')}{$hsp -> start(\'query\')}{$hsp -> end(\'query\')}{$hsp -> num_identical} = $hsp;# -> length(\'total\');\n+\t $hsp_strand{$result -> query_name}{$hit -> name}{$hsp -> start(\'hit\')} = $hsp -> strand(\'hit\');\n+\t}\n+ }\n+}\n+\n+my $ref_HSE = \\%hsp_start_end;\n+my $ref_HS = \\%hsp_strand;\n+\n+# unlink ("BRA_".$outfile."_marker_no_results.txt") if -e "BRA_".$outfile."_marker_no_results.txt";\n+# open (BMNR, ">>BRA_".$outfile."_marker_no_results.txt") or confess ("File BRA_".$outfile."_marker_no_results can\'t be created.");\n+# print (BMNR "Markers rejected at data presort : \\n");\n+\n+print "\\n 2. Presorting data ...\\n\\n" if $verbose;\n+my @data_of_presort = &data_presort($ref_HSE, $ref_HS);\n+my $query_number_presort = $data_of_presort[2];\n+\n+print " * $query_number_presort markers rejected at data presort.\\n\\n" if $verbose;\n+\n+# unlink ("BRA_".$outfile."_m'..b'_scaffold{$query_name})){\n+\t\t\t\t\t\t\t\t\t\t\tdelete ($markers_infos{$query_name});\n+\t\t\t\t\t\t\t\t\t\t\t$no_duplicate_marker_many_scaffold{$query_name} = 1;\n+\t\t\t\t\t\t\t\t\t\t\t$query_with_many_scaffold ++;\n+\t\t\t\t\t\t\t\t\t\t\t# print (MFS "$query_name\\n");\n+\t\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\telsif ($scaffold_number_per_marker < $nombre){\n+\t\t\t\t\t\t\t\t\t\t$global_hsp_query_identity = sprintf ("%.3f", $global_hsp_query_identity);\n+\t\t\t\t\t\t\t\t\t\t$markers_infos{$query_name}{$scaffold}{$scaffold_length}{$hsp_number_per_marker_localisation}{$global_hsp_query_identity}{$start_conserved}{$end_conserved} = $keep_hsp;\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t$no_significant_hit ++;\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telsif ($hsp_position_comparator > 1000){\n+\t\t\t\t\t\t\tmy $query_length = $result_query_length{$query_name};\n+\t\t\t\t\t\t\tmy $position_hsp_length = $end_conserved - $start_conserved + 1;\n+\t\t\t\t\t\t\tmy $position_hsp_query_covering = $position_hsp_length / $query_length;\n+\t\t\t\t\t\t\t$hsp_number_per_marker_localisation = $hsp_number_per_marker_localisation - 1;\n+\t\t\t\t\t\t\tif (($position_hsp_query_covering > 0.6) && ($position_hsp_query_covering < 1.4)){\n+\t\t\t\t\t\t\t\tmy $global_hsp_query_identity = $global_hsp_identical_length / $position_hsp_length * 100;\n+\t\t\t\t\t\t\t\tif ($global_hsp_query_identity > $identity_percent){\n+\t\t\t\t\t\t\t\t\tif ($previous_scaffold ne $scaffold){\n+\t\t\t\t\t\t\t\t\t\t$scaffold_number_per_marker ++;\n+\t\t\t\t\t\t\t\t\t\t$previous_scaffold = $scaffold;\n+\t\t\t\t\t\t\t\t\t\tif ($scaffold_number_per_marker < $nombre){\n+\t\t\t\t\t\t\t\t\t\t\t$global_hsp_query_identity = sprintf ("%.3f", $global_hsp_query_identity);\n+\t\t\t\t\t\t\t\t\t\t\t$markers_infos{$query_name}{$scaffold}{$scaffold_length}{$hsp_number_per_marker_localisation}{$global_hsp_query_identity}{$start_conserved}{$end_conserved} = $keep_hsp;\n+\t\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t\telsif (!(exists $no_duplicate_marker_many_scaffold{$query_name})){\n+\t\t\t\t\t\t\t\t\t\t\tdelete ($markers_infos{$query_name});\n+\t\t\t\t\t\t\t\t\t\t\t$no_duplicate_marker_many_scaffold{$query_name} = 1;\n+\t\t\t\t\t\t\t\t\t\t\t$query_with_many_scaffold ++;\n+\t\t\t\t\t\t\t\t\t\t\t# print (MFS "$query_name\\n");\n+\t\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\telsif ($scaffold_number_per_marker < $nombre){\n+\t\t\t\t\t\t\t\t\t\t$global_hsp_query_identity = sprintf ("%.3f", $global_hsp_query_identity);\n+\t\t\t\t\t\t\t\t\t\t$markers_infos{$query_name}{$scaffold}{$scaffold_length}{$hsp_number_per_marker_localisation}{$global_hsp_query_identity}{$start_conserved}{$end_conserved} = $keep_hsp;\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t$no_significant_hit ++;\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t$hsp_number_per_marker_localisation = 1;\n+\t\t\t\t\t\t\t$start_conserved = $start;\n+\t\t\t\t\t\t\t$end_conserved = $end;\n+\t\t\t\t\t\t\t$hsp_strand = $hsp_strand{$query_name}{$scaffold}{$start};\n+\t\t\t\t\t\t\t$global_hsp_identical_length = $pre_interest_hsp{$query_name}{$scaffold}{$start}{$end}->{hsp_identical_length};\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t\tif ($no_significant_hit == 0){\n+\t\t\t# print (BMNR "$query_name\\n");\n+\t\t\t$number_query_without_significant_hit ++;\n+\t\t}\n+\t}\n+\tmy $ref_MI = \\%markers_infos;\n+\tmy @final_sorting_result = ($ref_MI, $query_with_many_scaffold, $number_query_without_significant_hit);\n+\treturn @final_sorting_result;\n+}\n+\n+#Philippe FRANCOIS (CIRAD) - philippe.francois@cirad.fr\n+#Version [3.0.0]\n+#Ver. 1.0.1 : Fixed a bug in scaffold\'s size recovery.\n+#Ver. 1.1.0 : Rewriting analysis core of BLAST results for more specific results.\n+#Ver. 1.1.1 : Fixed a bug who count 2x global_hsp_identical_length when new_hsp_number equals 1 and added display of markers who don\'t pass the data presort phase.\n+#Ver. 1.1.2 : Fixed a bug that consider the hsp who overlap with the good hsp, and a bug with display of hsp number.\n+#Ver. 1.1.3 : Markers who matches on five or more scaffolds are written in a new file, markers who are eliminated at presort data are written in a different new file, display of markers with "No results found" and modification of identity calculation methodology for better results.\n+#Ver. 3.0.0 : Removing the creation of the 3 BRA* file, addition of a new parametre --nombre | Modif Guillaume MARTIN - guillaume.martin@cirad.fr\n+#Date [16/04/14]\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/formatdb.log --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/formatdb.log Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,3 @@ + +========================[ Jun 9, 2015 7:28 AM ]======================== +ERROR: [000.000] No database name was specified |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/include_scaffhunter.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/include_scaffhunter.sh Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,1 @@ +module load compiler/gcc/4.9.2 system/python/2.7.9 bioinfo/bowtie2/2.2.5 bioinfo/blast/marmadais bioinfo/bwa/0.7.12 system/java/jre8 bioinfo/orthodotter/0 bioinfo/ncbi-blast/2.2.29 |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/locOnRef --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/locOnRef Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,120 @@ +<tool id="locOnRef" name="locOnRef" version="0.1"> + <description> : Locate markers having uniq position on a reference </description> + <requirements> + <requirement type="binary">blastn</requirement> + <requirement type="binary">bwa</requirement> + <requirement type="binary">bowtie2</requirement> + </requirements> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + python $__tool_directory__/locOnRef.py + #if str($reference_genome.source) == "history": + --ref $reference_genome.own_file + #else: + --ref $reference_genome.index.fields.path + #end if + --fasta $fasta + --margin $margin + --blast $blast + --bwa_mem $bwa_mem + --bow $bow + --bow_loc $bow_loc + --index $index + --rmindex $rmindex + --out $alignment + </command> + <inputs> + <conditional name="reference_genome"> + <param name="source" type="select" label="Will you select a reference genome from your history or use a built-in index?" help="Built-ins were indexed using default options. See `Indexes` section of help below"> + <option value="indexed">Use a built-in genome index</option> + <option value="history">Use a genome from the history and build index</option> + </param> + <when value="indexed"> + <param name="index" type="select" label="Select reference genome" help="If your genome of interest is not listed, contact the South Green team"> + + <options from_data_table="scaffhunter"> + <filter type="sort_by" column="1"/> + <validator type="no_options" message="No indexes are available for the selected input dataset"/> + </options> + </param> + </when> + <when value="history"> + <param name="own_file" type="data" format="fasta" label="Select reference genome" /> + </when> + </conditional> + <param name="index" type="select" label="Create index if reference not indexed"> + <option selected="true" value="y">y</option> + <option value="n">n</option> + </param> + <param name="rmindex" type="select" label="Remove index"> + <option selected="true" value="y">y</option> + <option value="n">n</option> + </param> + <param name="fasta" type="data" format="txt" label="Fasta markers file" /> + <param name="margin" type="integer" value="500" label="Margin in which hit are considered identical (number of bases) when comparing the different tools" /> + <param name="blast" type="select" label="Use blast" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="bwa_mem" type="select" label="Use bwa_mem" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="bow" type="select" label="Use bowtie2" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="bow_loc" type="select" label="Use bowtie2 local mod" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="prefix" type="text" label="Prefix of output files" value="alignment" /> + </inputs> + <outputs> + <data format="tabular" name="alignment" label="${tool.name} : $prefix marker" /> + </outputs> + <tests> + <test> + <param name="fasta" value="markers.fasta"/> + <param name="source" value="history" /> + <param name="own_file" ftype="fasta" value="scaffolds.fasta" /> + <output name="alignment" file="alignment_scaffold.txt"/> + </test> + </tests> + <help> + +**Overview** + +This programs locates fasta sequences onto a reference sequence. + +This program can use bowtie2 (local and end to end modes) with --very-sensitive mode, bwa mem and blast. +Only unique hits are conserved for each tools used. Only identical hits between all tools used are conserved. +Identical hits between tools are identified if all hits from different tools co-locate in the same region in a region of 2 fold --margin option. +Otherwise, they are discarded. If a tool, does not report a hit for a sequence (due to multi hit or no hit), this tools is not used for this sequence. + +If blast is selected, this program perform for each sequence a blast (e-value = 1e-10, -F F). +Blast output is used to reconstruct the alignment from different HSP and calculate an identity of the hit (This step is performed by blat_results_analyzer_v3.pl, script written by Philippe FRANCOIS and modified by Guillaume MARTIN). +For each identity percentage threshold (98%, 95%, 90%, 80 and 80% identity) valid hits are counted and hit is reported only if it is unique for at least one of these identity thresholds. + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/locOnRef.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/locOnRef.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,343 @@\n+\r\n+#\r\n+# Copyright 2014 CIRAD\r\n+#\r\n+# This program is free software; you can redistribute it and/or modify\r\n+# it under the terms of the GNU General Public License as published by\r\n+# the Free Software Foundation; either version 3 of the License, or\r\n+# (at your option) any later version.\r\n+#\r\n+# This program is distributed in the hope that it will be useful,\r\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n+# GNU General Public License for more details.\r\n+#\r\n+# You should have received a copy of the GNU General Public License\r\n+# along with this program; if not, see <http://www.gnu.org/licenses/> or\r\n+# write to the Free Software Foundation, Inc.,\r\n+# 51 Franklin Street, Fifth Floor, Boston,\r\n+# MA 02110-1301, USA.\r\n+#\r\n+#\r\n+\r\n+\r\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, multiprocessing\r\n+from Bio.Seq import Seq\r\n+from Bio.Alphabet import generic_dna\r\n+from Bio import SeqIO\r\n+from Bio.SeqRecord import SeqRecord\r\n+\r\n+def stop_err( msg ):\r\n+ sys.stderr.write( "%s\\n" % msg )\r\n+ sys.exit()\r\n+\r\n+def run_job (cmd_line, ERROR):\r\n+\tprint cmd_line\r\n+\ttry:\r\n+\t\ttmp = tempfile.NamedTemporaryFile().name\r\n+\t\t# print tmp\r\n+\t\terror = open(tmp, \'w\')\r\n+\t\tproc = subprocess.Popen( args=cmd_line, shell=True, stderr=error)\r\n+\t\treturncode = proc.wait()\r\n+\t\terror.close()\r\n+\t\terror = open( tmp, \'rb\' )\r\n+\t\tstderr = \'\'\r\n+\t\tbuffsize = 1048576\r\n+\t\ttry:\r\n+\t\t\twhile True:\r\n+\t\t\t\tstderr += error.read( buffsize )\r\n+\t\t\t\tif not stderr or len( stderr ) % buffsize != 0:\r\n+\t\t\t\t\tbreak\r\n+\t\texcept OverflowError:\r\n+\t\t\tpass\r\n+\t\terror.close()\r\n+\t\tos.remove(tmp)\r\n+\t\tif returncode != 0:\r\n+\t\t\traise Exception, stderr\r\n+\texcept Exception, e:\r\n+\t\tstop_err( ERROR + str( e ) )\r\n+\r\n+\r\n+def __main__():\r\n+\t#Parse Command Line\r\n+\tparser = optparse.OptionParser()\r\n+\t# Wrapper options. \r\n+\tparser.add_option( \'\', \'--ref\', dest=\'ref\', default=None, help=\'The reference fasta file\')\r\n+\tparser.add_option( \'\', \'--blast\', dest=\'blast\', default=\'n\', help=\'Use blast, y or n, [default: %default]\')\r\n+\tparser.add_option( \'\', \'--bwa_mem\', dest=\'bwa_mem\', default=\'n\', help=\'Use bwa_mem, y or n, [default: %default]\')\r\n+\tparser.add_option( \'\', \'--bow\', dest=\'bow\', default=\'n\', help=\'Use bowtie2, y or n, [default: %default]\')\r\n+\tparser.add_option( \'\', \'--bow_loc\', dest=\'bow_loc\', default=\'n\', help=\'Use bowtie2 with local mod, y or n, [default: %default]\')\r\n+\tparser.add_option( \'\', \'--fasta\', dest=\'fasta\', default=None, help=\'The fasta file containing markers\')\r\n+\tparser.add_option( \'\', \'--out\', dest=\'out\', default=\'MarkOnScaff.tab\', help=\'Output file name\')\r\n+\tparser.add_option( \'\', \'--margin\', dest=\'margin\', default=\'2500\', help=\'The margin to consider hit as similar (integer), [default: %default]\')\r\n+\tparser.add_option( \'\', \'--index\', dest=\'index\', default=\'y\', help=\'Build reference index : y or n, [default: %default]\')\r\n+\tparser.add_option( \'\', \'--rmindex\', dest=\'rmindex\', default=\'y\', help=\'Remove reference index at the end of calculation: y or n, [default: %default]\')\r\n+\tparser.add_option( \'\', \'--thread\', dest=\'thread\', default=\'1\', help=\'The thread number used for mapping (integer). For --blast no more than 5 is required, for --bow 1, for --bow_loc 1, for --bwa_mem 1) [default: %default]\')\r\n+\t(options, args) = parser.parse_args()\r\n+\t\r\n+\t\r\n+\t\r\n+\tif options.ref == None:\r\n+\t\tsys.exit(\'--ref argument is missing\')\r\n+\tif options.fasta == None:\r\n+\t\tsys.exit(\'--fasta argument is missing\')\r\n+\t\r\n+\tScriptPath = os.path.dirname(sys.argv[0])\r\n+\t\r\n+\tloca_programs = ConfigParser.RawConfigParser()\r\n+\tloca_programs.read(ScriptPath+\'/loca_programs.conf\')\r\n+\t\r\n+\tproc = int(options.thread)\r\n+\t\r\n+\t#print (\'ScriptPath\', ScriptPath)\r\n+\t#print ("output", options.out)\r\n+\t#print ("input", options.ref)\r\n+\t\r\n+\t#Verifying redundancy\r\n+\tdico = set()\r\n+\tfile = open(options.fasta)\r\n+\tredundancy = 0\r\n+\tfor line in file:\r\n+\t\tdata = line.split()\r\n+\t\ti'..b'e_hit_sam.py --sam %s --dif 1 --type tab > %s\' % (loca_programs.get(\'Programs\',\'python\'),ScriptPath , outbowloc, tabbowloc))\r\n+\t\t\r\n+\tliste_process = []\r\n+\tfor n in liste_job:\r\n+\t\tt = multiprocessing.Process(target=run_job, args=(n, \'Bug when Filtering\',))\r\n+\t\tliste_process.append(t)\r\n+\t\tif len(liste_process) == proc:\r\n+\t\t\tfor process in liste_process:\r\n+\t\t\t\tprocess.start()\r\n+\t\t\tfor process in liste_process:\r\n+\t\t\t\tprocess.join()\r\n+\t\t\tliste_process = []\r\n+\tif liste_process:\r\n+\t\tfor process in liste_process:\r\n+\t\t\tprocess.start()\r\n+\t\tfor process in liste_process:\r\n+\t\t\tprocess.join()\r\n+\t\tliste_process = []\r\n+\t\r\n+\t\r\n+\t# On enregistre les identifiants des sequences\r\n+\trecord_dict = SeqIO.index(options.fasta, "fasta")\r\n+\tdico = {}\r\n+\tfor n in record_dict:\r\n+\t\tdico[n] = set()\r\n+\t\r\n+\t#on cherche les positions\r\n+\tif options.blast == \'y\':\r\n+\t\tfile = open(out98)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\t\tfile = open(out95)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\t\tfile = open(out90)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\t\tfile = open(out85)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\t\tfile = open(out80)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\tif options.bwa_mem == \'y\':\r\n+\t\tfile = open(tabbwa)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\tif options.bow == \'y\':\r\n+\t\tfile = open(tabbow)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\tif options.bow_loc == \'y\':\r\n+\t\tfile = open(tabbowloc)\r\n+\t\tfor line in file:\r\n+\t\t\tdata = line.split()\r\n+\t\t\tif data:\r\n+\t\t\t\tdico[data[0]].add(data[1]+\'%\'+data[5])\r\n+\t\tfile.close()\r\n+\t\r\n+\t#On identifie les hits uniques\r\n+\tdico_group = {}\r\n+\tfor n in dico:\r\n+\t\tif len(dico[n]) == 1:\r\n+\t\t\t# outfile.write(n+\'\\t\'+\'\\t\'.join(list(dico[n])[0].split(\'%\'))+\'\\n\')\r\n+\t\t\tchr =list(dico[n])[0].split(\'%\')[0]\r\n+\t\t\tpos = int(list(dico[n])[0].split(\'%\')[1])\r\n+\t\t\tif chr in dico_group:\r\n+\t\t\t\tdico_group[chr].append([n,pos])\r\n+\t\t\telse:\r\n+\t\t\t\tdico_group[chr] = []\r\n+\t\t\t\tdico_group[chr].append([n,pos])\r\n+\t\telif len(dico[n]) > 1:\r\n+\t\t\tproches = 1\r\n+\t\t\tchr_ref = \'\'\r\n+\t\t\tpos_ref = \'\'\r\n+\t\t\tfor j in dico[n]:\r\n+\t\t\t\tif chr_ref == \'\':\r\n+\t\t\t\t\tchr_ref = j.split(\'%\')[0]\r\n+\t\t\t\t\tpos_ref = int(j.split(\'%\')[1])\r\n+\t\t\t\t\tpos_deb = pos_ref - int(options.margin)\r\n+\t\t\t\t\tpos_fin = pos_ref + int(options.margin)\r\n+\t\t\t\telse:\r\n+\t\t\t\t\tchr = j.split(\'%\')[0]\r\n+\t\t\t\t\tpos = int(j.split(\'%\')[1])\r\n+\t\t\t\t\tif chr != chr_ref or pos < pos_deb or pos > pos_fin:\r\n+\t\t\t\t\t\tproches = 0\r\n+\t\t\tif proches == 1:\r\n+\t\t\t\t# outfile.write(n+\'\\t\'+chr_ref+\'\\t\'+str(pos_ref)+\'\\n\')\r\n+\t\t\t\tif chr_ref in dico_group:\r\n+\t\t\t\t\tdico_group[chr_ref].append([n,pos_ref])\r\n+\t\t\t\telse:\r\n+\t\t\t\t\tdico_group[chr_ref] = []\r\n+\t\t\t\t\tdico_group[chr_ref].append([n,pos_ref])\r\n+\t\t\telse:\r\n+\t\t\t\tmot = n\r\n+\t\t\t\tfor j in dico[n]:\r\n+\t\t\t\t\tmot = mot + \'\\t\' + \'\\t\'.join(j.split(\'%\'))\r\n+\t\t\t\tprint mot\r\n+\t\telse:\r\n+\t\t\tprint n\r\n+\t\r\n+\toutfile = open(options.out,\'w\')\r\n+\tfor n in dico_group:\r\n+\t\tliste = []\r\n+\t\tliste = sorted(dico_group[n],key=operator.itemgetter(1))\r\n+\t\tfor j in liste:\r\n+\t\t\toutfile.write(j[0]+\'\\t\'+n+\'\\t\'+str(j[1])+\'\\n\')\r\n+\toutfile.close()\r\n+\t\r\n+\tif options.blast == \'y\':\r\n+\t\tos.remove(out98)\r\n+\t\tos.remove(out95)\r\n+\t\tos.remove(out90)\r\n+\t\tos.remove(out85)\r\n+\t\tos.remove(out80)\r\n+\t\tos.remove(outblast)\r\n+\tif options.bwa_mem == \'y\':\r\n+\t\tos.remove(outbwa)\r\n+\t\tos.remove(tabbwa)\r\n+\tif options.bow == \'y\':\r\n+\t\tos.remove(outbow)\r\n+\t\tos.remove(tabbow)\r\n+\tif options.bow_loc == \'y\':\r\n+\t\tos.remove(outbowloc)\r\n+\t\tos.remove(tabbowloc)\r\n+\r\n+if __name__ == "__main__": __main__()\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/locOnRef.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/locOnRef.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,120 @@ +<tool id="locOnRef" name="locOnRef" version="0.1"> + <description> : Locate markers having uniq position on a reference </description> + <requirements> + <requirement type="binary">blastn</requirement> + <requirement type="binary">bwa</requirement> + <requirement type="binary">bowtie2</requirement> + </requirements> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + python $__tool_directory__/locOnRef.py + #if str($reference_genome.source) == "history": + --ref $reference_genome.own_file + #else: + --ref $reference_genome.index.fields.path + #end if + --fasta $fasta + --margin $margin + --blast $blast + --bwa_mem $bwa_mem + --bow $bow + --bow_loc $bow_loc + --index $index + --rmindex $rmindex + --out $alignment + </command> + <inputs> + <conditional name="reference_genome"> + <param name="source" type="select" label="Will you select a reference genome from your history or use a built-in index?" help="Built-ins were indexed using default options. See `Indexes` section of help below"> + <option value="indexed">Use a built-in genome index</option> + <option value="history">Use a genome from the history and build index</option> + </param> + <when value="indexed"> + <param name="index" type="select" label="Select reference genome" help="If your genome of interest is not listed, contact the South Green team"> + + <options from_data_table="scaffhunter"> + <filter type="sort_by" column="1"/> + <validator type="no_options" message="No indexes are available for the selected input dataset"/> + </options> + </param> + </when> + <when value="history"> + <param name="own_file" type="data" format="fasta" label="Select reference genome" /> + </when> + </conditional> + <param name="index" type="select" label="Create index if reference not indexed"> + <option selected="true" value="y">y</option> + <option value="n">n</option> + </param> + <param name="rmindex" type="select" label="Remove index"> + <option selected="true" value="y">y</option> + <option value="n">n</option> + </param> + <param name="fasta" type="data" format="txt" label="Fasta markers file" /> + <param name="margin" type="integer" value="500" label="Margin in which hit are considered identical (number of bases) when comparing the different tools" /> + <param name="blast" type="select" label="Use blast" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="bwa_mem" type="select" label="Use bwa_mem" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="bow" type="select" label="Use bowtie2" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="bow_loc" type="select" label="Use bowtie2 local mod" > + <option value="y" selected="true">y</option> + <option value="n">n</option> + </param> + <param name="prefix" type="text" label="Prefix of output files" value="alignment" /> + </inputs> + <outputs> + <data format="tabular" name="alignment" label="${tool.name} : $prefix marker" /> + </outputs> + <tests> + <test> + <param name="fasta" value="markers.fasta"/> + <param name="source" value="history" /> + <param name="own_file" ftype="fasta" value="scaffolds.fasta" /> + <output name="alignment" file="alignment_scaffold.txt"/> + </test> + </tests> + <help> + +**Overview** + +This programs locates fasta sequences onto a reference sequence. + +This program can use bowtie2 (local and end to end modes) with --very-sensitive mode, bwa mem and blast. +Only unique hits are conserved for each tools used. Only identical hits between all tools used are conserved. +Identical hits between tools are identified if all hits from different tools co-locate in the same region in a region of 2 fold --margin option. +Otherwise, they are discarded. If a tool, does not report a hit for a sequence (due to multi hit or no hit), this tools is not used for this sequence. + +If blast is selected, this program perform for each sequence a blast (e-value = 1e-10, -F F). +Blast output is used to reconstruct the alignment from different HSP and calculate an identity of the hit (This step is performed by blat_results_analyzer_v3.pl, script written by Philippe FRANCOIS and modified by Guillaume MARTIN). +For each identity percentage threshold (98%, 95%, 90%, 80 and 80% identity) valid hits are counted and hit is reported only if it is unique for at least one of these identity thresholds. + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/loca_programs.conf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/loca_programs.conf Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,9 @@ +[Programs] +python = python +perl = perl +formatdb = makeblastdb +blastall = blastn +bwa = bwa +bowtie2-build = bowtie2-build +bowtie2 = bowtie2 +orthodotter = /orthodotter/orthodotter.pl |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/mat2submat.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/mat2submat.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,94 @@ +#!/usr/local/bioinfo/python/2.7.9/bin/python +# +# Copyright 2014 CIRAD +# +# 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/> or +# write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# + +import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, random + + +def __main__(): + #Parse Command Line + parser = optparse.OptionParser(usage="python %prog [options]\n\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr\n\n" + "This program takes a square matrix (--mat) file and create de sub-matrix containing all IDs provided in another file (--mark).\n") + # Wrapper options. + parser.add_option( '', '--mark', dest='mark', default=None, help='A tabulated file containing in col 1 the id that will be contained in the sub-matrix') + parser.add_option( '', '--mat', dest='mat', default=None, help='Square matrix file') + parser.add_option( '', '--out', dest='out', default='sub_matrix.txt', help='Output file name. [default: %default]') + (options, args) = parser.parse_args() + + if options.mark == None: + sys.exit('--mark argument is missing') + if options.mat == None: + sys.exit('--mat argument is missing') + + #On enregistre les id de la matrice + os.system('echo "Registering id matrix"') + file = open(options.mat) + index_mat = file.readline().split()[1:] + file.close() + + #on enregistre dans un dico les position des markers a garder + os.system('echo "Registering id to be kept"') + file = open(options.mark) + kept = [] + pos_kept = [] + for line in file: + data = line.split() + if data: + if data[0] in kept: + sys.exit("The programme exited without finishing : There is redundancy in markers names in the sub-id file") + elif not(data[0] in index_mat): + mot = "The programme exited without finishing : The marker "+data[0]+"is not in the matrix" + sys.exit(mot) + kept.append(data[0]) + pos_kept.append(index_mat.index(data[0])) + file.close() + + #on charge la matrice dans un dico + os.system('echo "Recording pairwise information"') + matrix = {} + file = open(options.mat) + file.readline() + for line in file: + data = line.split() + if data: + if data[0] in matrix: + sys.exit("The programme exited without finishing : There is redundancy in markers names in the matrix") + else: + matrix[data[0]] = data[1:] + file.close() + + #Creating the table: + os.system('echo "Creating the sub-table"') + dico_table = {} + for n in kept: + dico_table[n] = [] + for j in pos_kept: + dico_table[n].append(matrix[n][j]) + + #Printing results + os.system('echo "Printing results"') + outfile = open(options.out,'w') + outfile.write('ID\t'+'\t'.join(kept)+'\n') + for n in kept: + outfile.write(n+'\t'+'\t'.join(dico_table[n])+'\n') + outfile.close() + +if __name__ == "__main__": __main__() \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/mat2submat.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/mat2submat.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,53 @@ +<tool id="mat2submat" name="mat2submat" version="0.1"> + <description> : Create a sub matrix of a matrix file</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + python $__tool_directory__/mat2submat.py + --mark $marker + --mat $matrix + --out $sub_matrix + </command> + <inputs> + <param name="matrix" type="data" format="tabular" label="The data matrix with pair-wise statistics between markers" /> + <param name="marker" type="data" format="tabular" label="A tabulated file containing in col 1 markers ids that will be contained in the sub-matrix" /> + <param name="prefix" type="text" label="Prefix of output files" /> + </inputs> + <outputs> + <data format="tabular" name="sub_matrix" label="${tool.name} : $prefix sub-matrix" /> + </outputs> + <tests> + <test> + <param name="matrix" value="lod_matrix.txt"/> + <param name="marker" value="alignment_on_scaffold3.txt"/> + <output name="sub_matrix" file="sub_matrix.txt"/> + </test> + </tests> + <help> + +**Overview** + +This program takes a square matrix file and create de sub-matrix containing all IDs provided in another file. + + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/matrix2ortho.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/matrix2ortho.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,377 @@\n+#!/usr/local/bioinfo/python/2.7.9/bin/python\n+#\n+# Copyright 2014 CIRAD\n+#\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+# the Free Software Foundation; either version 3 of the License, or\n+# (at your option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+# GNU General Public License for more details.\n+#\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/> or\n+# write to the Free Software Foundation, Inc.,\n+# 51 Franklin Street, Fifth Floor, Boston,\n+# MA 02110-1301, USA.\n+#\n+#\n+\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time\n+\n+def stop_err( msg ):\n+ sys.stderr.write( "%s\\n" % msg )\n+ sys.exit()\n+\n+def run_job (cmd_line, ERROR):\n+\tprint cmd_line\n+\ttry:\n+\t\ttmp = tempfile.NamedTemporaryFile().name\n+\t\t# print tmp\n+\t\terror = open(tmp, \'w\')\n+\t\tproc = subprocess.Popen( args=cmd_line, shell=True, stderr=error)\n+\t\treturncode = proc.wait()\n+\t\terror.close()\n+\t\terror = open( tmp, \'rb\' )\n+\t\tstderr = \'\'\n+\t\tbuffsize = 1048576\n+\t\ttry:\n+\t\t\twhile True:\n+\t\t\t\tstderr += error.read( buffsize )\n+\t\t\t\tif not stderr or len( stderr ) % buffsize != 0:\n+\t\t\t\t\tbreak\n+\t\texcept OverflowError:\n+\t\t\tpass\n+\t\terror.close()\n+\t\tos.remove(tmp)\n+\t\tif returncode != 0:\n+\t\t\traise Exception, stderr\n+\texcept Exception, e:\n+\t\tstop_err( ERROR + str( e ) )\n+\n+\n+def min_max(FILE):\n+\tfile = open(FILE)\n+\tline = file.readline()\n+\tline = file.readline()\n+\tdata = line.split()\n+\tval = map(float,data[1:])\n+\ttry:\n+\t\twhile True:\tval.remove(999999999)\n+\texcept: pass\n+\tmini = min(val)\n+\tmaxi = max(val)\n+\ti = 1\n+\tfor line in file:\n+\t\ti += 1\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tval = map(float,data[1:i])\n+\t\t\ttry:\n+\t\t\t\twhile True:\tval.remove(999999999)\n+\t\t\texcept: pass\n+\t\t\tif val:\n+\t\t\t\tmin_val = min(val)\n+\t\t\t\tmax_val = max(val)\n+\t\t\t\tif mini > min_val:\n+\t\t\t\t\tmini = min_val\n+\t\t\t\tif maxi < max_val:\n+\t\t\t\t\tmaxi = max_val\n+\treturn [mini, maxi]\n+\n+def rename(NOM,LISTE):\n+\tif len(str(LISTE.index(NOM))) == 1:\n+\t\treturn \'00\'+str(LISTE.index(NOM))+\'-\'+NOM\n+\telif len(str(LISTE.index(NOM))) == 2:\n+\t\treturn \'0\'+str(LISTE.index(NOM))+\'-\'+NOM\n+\telse:\n+\t\treturn str(LISTE.index(NOM))+\'-\'+NOM\n+\n+def format_ortho(FILE, DICO, LISTE, LISTE_MARK, MIN, MAX, TYPE, OUT):\n+\tfile = open(FILE)\n+\ti = 1\n+\tV1 = (MAX - (1*(MAX/10)))\n+\tV2 = (MAX - (2*(MAX/10)))\n+\tV3 = (MAX - (3*(MAX/10)))\n+\tV4 = (MAX - (4*(MAX/10)))\n+\tV5 = (MAX - (5*(MAX/10)))\n+\tV6 = (MAX - (6*(MAX/10)))\n+\tV7 = (MAX - (7*(MAX/10)))\n+\tV8 = (MAX - (8*(MAX/10)))\n+\tV9 = (MAX - (9*(MAX/10)))\n+\tVV1 = (MIN - (1*(MIN/10)))\n+\tVV2 = (MIN - (2*(MIN/10)))\n+\tVV3 = (MIN - (3*(MIN/10)))\n+\tVV4 = (MIN - (4*(MIN/10)))\n+\tVV5 = (MIN - (5*(MIN/10)))\n+\tVV6 = (MIN - (6*(MIN/10)))\n+\tVV7 = (MIN - (7*(MIN/10)))\n+\tVV8 = (MIN - (8*(MIN/10)))\n+\tVV9 = (MIN - (9*(MIN/10)))\n+\tVVV1 = (9*(MAX/20))\n+\tVVV2 = (8*(MAX/20))\n+\tVVV3 = (7*(MAX/20))\n+\tVVV4 = (6*(MAX/20))\n+\tVVV5 = (5*(MAX/20))\n+\tVVV6 = (4*(MAX/20))\n+\tVVV7 = (3*(MAX/20))\n+\tVVV8 = (2*(MAX/20))\n+\tVVV9 = (1*(MAX/20))\n+\tos.system(\'echo "legend of the dot-plot"\')\n+\tif TYPE == \'REC\':\n+\t\tos.system(\'echo "[0;\'+str(VVV9)+\'] black"\')\n+\t\tos.system(\'echo "]\'+str(VVV9)+\';\'+str(VVV8)+\'] red"\')\n+\t\tos.system(\'echo "]\'+str(VVV8)+\';\'+str(VVV7)+\'] pink"\')\n+\t\tos.system(\'echo "]\'+str(VVV7)+\';\'+str(VVV6)+\'] orange"\')\n+\t\tos.system(\'echo "]\'+str(VVV6)+\';\'+str(VVV5)+\'] yellow"\')\n+\t\tos.system(\'echo "]\'+str(VVV5)+\';\'+str(VVV4)+\'] lightgreen"\')\n+\t\tos.system(\'echo "]\'+str(VVV4)+\';\'+str(VVV3)+\'] green"\')\n+\t\tos.system(\'echo "]\'+str(VVV3)+\';\'+str(VVV2)+\'] lightskyblue"\')\n+\t\tos.system(\'echo "]\'+str(VVV2)+\';\'+str(VVV1)+\'] blue3"\')\n+\telif TYPE == \'LOD\':\n+\t\tos.system(\'echo "[\'+str(V1)+\';\'+str(MAX)+\'] black"\')\n+\t\tos.system(\'e'..b'((1+marker2_index)*10)+\' \'+str(((1+marker2_index)*10)+9)+\' abscisse \'+nom1+\' \'+pos_mark1d+\' \'+pos_mark1f+\' orange\\n\')\n+\t\t\t\t\t\t\t\t\t\telif valeur <= VV5:\n+\t\t\t\t\t\t\t\t\t\t\tOUT.write(\'ordonnee \'+rename(DICO[name_marker2],LISTE)+\' \'+str((1+marker2_index)*10)+\' \'+str(((1+marker2_index)*10)+9)+\' abscisse \'+nom1+\' \'+pos_mark1d+\' \'+pos_mark1f+\' yellow\\n\')\n+\t\t\t\t\t\t\t\t\t\telif valeur <= VV6:\n+\t\t\t\t\t\t\t\t\t\t\tOUT.write(\'ordonnee \'+rename(DICO[name_marker2],LISTE)+\' \'+str((1+marker2_index)*10)+\' \'+str(((1+marker2_index)*10)+9)+\' abscisse \'+nom1+\' \'+pos_mark1d+\' \'+pos_mark1f+\' lightgreen\\n\')\n+\t\t\t\t\t\t\t\t\t\telif valeur <= VV7:\n+\t\t\t\t\t\t\t\t\t\t\tOUT.write(\'ordonnee \'+rename(DICO[name_marker2],LISTE)+\' \'+str((1+marker2_index)*10)+\' \'+str(((1+marker2_index)*10)+9)+\' abscisse \'+nom1+\' \'+pos_mark1d+\' \'+pos_mark1f+\' green\\n\')\n+\t\t\t\t\t\t\t\t\t\telif valeur <= VV8:\n+\t\t\t\t\t\t\t\t\t\t\tOUT.write(\'ordonnee \'+rename(DICO[name_marker2],LISTE)+\' \'+str((1+marker2_index)*10)+\' \'+str(((1+marker2_index)*10)+9)+\' abscisse \'+nom1+\' \'+pos_mark1d+\' \'+pos_mark1f+\' lightskyblue\\n\')\n+\t\t\t\t\t\t\t\t\t\telse :\n+\t\t\t\t\t\t\t\t\t\t\tOUT.write(\'ordonnee \'+rename(DICO[name_marker2],LISTE)+\' \'+str((1+marker2_index)*10)+\' \'+str(((1+marker2_index)*10)+9)+\' abscisse \'+nom1+\' \'+pos_mark1d+\' \'+pos_mark1f+\' blue3\\n\')\n+\t\t\ti += 1\n+\tOUT.flush()\n+\n+def __main__():\n+\t#Parse Command Line\n+\tparser = optparse.OptionParser(usage="python %prog [options]\\n\\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr\\n\\n"\n+\t"This program takes a matrix containing pairwise statistics between markers and a file containing markers order and plot pairwise marker statistics in a dot-plot like picture.\\n")\n+\t# Wrapper options. \n+\tparser.add_option( \'\', \'--mat\', dest=\'mat\', default=None, help=\'Matrix file containing the pairwise information.\')\n+\tparser.add_option( \'\', \'--order\', dest=\'order\', default=None, help=\'Table file containing marker ordered. column 1 : marker name, column 2 : identifier (ex: chr number). Markers should be grouped by identifier and ordered based on their position in the group. The file can contain additional columns (example position on identifier) that will not be used.\')\n+\tparser.add_option( \'\', \'--type\', dest=\'type\', default=\'LOD\', help=\'Type of statistics in the matrix : LOD (odd ratio), REC (recombination), COR (correlation)\')\n+\tparser.add_option( \'\', \'--png\', dest=\'png\', default=\'dot-plot.png\', help=\'Output file name. [default: %default]\')\n+\t(options, args) = parser.parse_args()\n+\t\n+\tif options.order == None:\n+\t\tsys.exit(\'--order argument is missing\')\n+\tif options.mat == None:\n+\t\tsys.exit(\'--mat argument is missing\')\n+\t\t\n+\tScriptPath = os.path.dirname(sys.argv[0])\n+\t\n+\tloca_programs = ConfigParser.RawConfigParser()\n+\tloca_programs.read(ScriptPath+\'/loca_programs.conf\')\n+\t\n+\t##\n+\tos.system(\'echo "Loading marker order"\')\n+\tfile = open(options.order)\n+\tdico = {}\n+\tdico_inv = {}\n+\tliste_chr = []\n+\tliste_mark = []\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data != []:\n+\t\t\tif data[1] in dico:\n+\t\t\t\tdico[data[1]].append(data[0])\n+\t\t\telse:\n+\t\t\t\tliste_chr.append(data[1])\n+\t\t\t\tdico[data[1]] = []\n+\t\t\t\tdico[data[1]].append(data[0])\n+\t\t\tliste_mark.append(data[0])\n+\t\t\tdico_inv[data[0]] = data[1]\n+\tfile.close()\n+\t\n+\t# os.system(\'echo "Recording maximum and minimum"\')\n+\tmin_max_val = min_max(options.mat)\n+\t\n+\t\n+\t# os.system(\'echo "Creating the file for orthodotter"\')\n+\ttemp = tempfile.NamedTemporaryFile()\n+\tformat_ortho(options.mat, dico_inv, liste_chr, liste_mark, min_max_val[0], min_max_val[1], options.type, temp)\n+\ttemp.flush()\n+\t\n+\t# os.system(\'echo "running orthodotter.pl"\')\n+\tqs=os.popen(\'wc -l \'+options.order)\n+\tvalue = \'\'\n+\tfor n in qs:\n+\t\tvalue = int(n.split()[0])\n+\tvalue = (value*3) + 100\n+\t\n+\tortho = \'%s -f %s -toPlot ordonnee:abscisse -x %s -y %s -bg white -o %s -r 3 -fSize 2\' % (ScriptPath+loca_programs.get(\'Programs\',\'orthodotter\'), temp.name, str(value), str(value), options.png)\n+\trun_job(ortho, \'Error when running orthodotter:\')\n+\ttemp.close()\n+\t\n+if __name__ == "__main__": __main__()\n\\ No newline at end of file\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/matrix2ortho.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/matrix2ortho.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,64 @@ +<tool id="matrix2ortho" name="matrix2ortho" version="0.1"> + <description> : Convert matrix to a dot-plot figure</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + $__tool_directory__/matrix2ortho.py + --mat $mat + --order $order + --type $type + --png $dotplot + </command> + <inputs> + <param name="mat" type="data" format="tabular" label="The data matrix" /> + <param name="order" type="data" format="tabular" label="A table file containing in col 1 : marker name, col 2 : marker group" /> + <param name="type" type="select" label="The type of statistics in the matrix" > + <option value="LOD" selected="true">LOD</option> + <option value="REC">REC</option> + <option value="COR">COR</option> + </param> + <param name="prefix" type="text" label="Prefix of output files" value="dotplot" /> + </inputs> + <outputs> + <data format="png" name="dotplot" label="${tool.name} : $prefix .png" /> + </outputs> + <tests> + <test> + <param name="mat" value="lod_matrix.txt"/> + <param name="order" value="optimal_marker_order.txt" /> + <output name="png" file="matrix2ortho.png" compare="sim_size"/> + </test> + </tests> + <help> + +**Overview** + +This program takes a matrix containing pairwise statistics between markers and a file containing markers order and plot pairwise marker statistics in a dot-plot like picture. + +Example : + +.. image:: http://orygenesdb.cirad.fr/images/linkage_markers.png + :height: 400 + :width: 600 + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/GDlib.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/GDlib.pm Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,89 @@ +#!/usr/local/bin/perl -w + +################################################################################ +# * +# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA +# * <jmaury@genoscope.cns.fr> +# * +# * +# * This software is governed by the CeCILL license under French law and +# * abiding by the rules of distribution of free software. You can use, +# * modify and/ or redistribute the software under the terms of the CeCILL +# * license as circulated by CEA, CNRS and INRIA at the following URL +# * "http://www.cecill.info". +# * +# * As a counterpart to the access to the source code and rights to copy, +# * modify and redistribute granted by the license, users are provided only +# * with a limited warranty and the software's author, the holder of the +# * economic rights, and the successive licensors have only limited +# * liability. +# * +# * In this respect, the user's attention is drawn to the risks associated +# * with loading, using, modifying and/or developing or reproducing the +# * software by the user in light of its specific status of free software, +# * that may mean that it is complicated to manipulate, and that also +# * therefore means that it is reserved for developers and experienced +# * professionals having in-depth computer knowledge. Users are therefore +# * encouraged to load and test the software's suitability as regards their +# * requirements in conditions enabling the security of their systems and/or +# * data to be ensured and, more generally, to use and operate it in the +# * same conditions as regards security. +# * +# * The fact that you are presently reading this means that you have had +# * knowledge of the CeCILL license and that you accept its terms. +################################################################################ + +use strict; + +use GD; + +sub getNewImage { + my($width, $height) = @_; + return new GD::Image($width, $height); +} + +sub font2GD { + my $font = shift; + if($font == 0) { return GD::Font->Tiny; } + if($font == 1) { return GD::Font->Small; } + if($font == 2) { return GD::Font->MediumBold; } + if($font == 3) { return GD::Font->Large; } + if($font == 4) { return GD::Font->Giant; } + return GD::Font->Small; +} + +sub getColor { + my($colorMap, $c, $img, $default) = @_; + if(!defined $c) { + if(defined $default) { return $default; } + return $img->colorAllocate(0, 0, 0); + } + if(defined $colorMap->{$c}) { + return $colorMap->{$c}; + } + my($f, $s, $t) = (-1, -1, -1); + if(defined $colorMap->{$c."firstComponent"}) { + $f = $colorMap->{$c."firstComponent"} + } + if(defined $colorMap->{$c."secondComponent"}) { + $s = $colorMap->{$c."secondComponent"} + } + if(defined $colorMap->{$c."thirdComponent"}) { + $t = $colorMap->{$c."thirdComponent"} + } + my $correctCode = 1; + if($f < 0 || $f > 255) { $correctCode = 0; } + if($s < 0 || $s > 255) { $correctCode = 0; } + if($t < 0 || $t > 255) { $correctCode = 0; } + if($correctCode) { + my $ret = $img->colorAllocate($f, $s, $t); + if($ret != -1) { + $colorMap->{$c} = $ret; + return $ret; + } + } + if(defined $default) { return $default; } + return $img->colorAllocate(0, 0, 0); +} + +1; |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/Gene.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/Gene.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,189 @@ +#!/usr/local/bin/perl -w + +################################################################################ +# * +# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA +# * <jmaury@genoscope.cns.fr> +# * +# * +# * This software is governed by the CeCILL license under French law and +# * abiding by the rules of distribution of free software. You can use, +# * modify and/ or redistribute the software under the terms of the CeCILL +# * license as circulated by CEA, CNRS and INRIA at the following URL +# * "http://www.cecill.info". +# * +# * As a counterpart to the access to the source code and rights to copy, +# * modify and redistribute granted by the license, users are provided only +# * with a limited warranty and the software's author, the holder of the +# * economic rights, and the successive licensors have only limited +# * liability. +# * +# * In this respect, the user's attention is drawn to the risks associated +# * with loading, using, modifying and/or developing or reproducing the +# * software by the user in light of its specific status of free software, +# * that may mean that it is complicated to manipulate, and that also +# * therefore means that it is reserved for developers and experienced +# * professionals having in-depth computer knowledge. Users are therefore +# * encouraged to load and test the software's suitability as regards their +# * requirements in conditions enabling the security of their systems and/or +# * data to be ensured and, more generally, to use and operate it in the +# * same conditions as regards security. +# * +# * The fact that you are presently reading this means that you have had +# * knowledge of the CeCILL license and that you accept its terms. +################################################################################ + +=head1 NAME + +Gene - Gene structure + +=head1 AUTHORS + +2005, Genoscope - CNS, Jean-Marc Aury, jmaury@genoscope.cns.fr + +=cut + + +package LibAnnotation::Ortho::Gene; + +use strict; + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless $self, $class; + $self->id(shift || 0); + $self->seq(shift || ""); + $self->start(shift || 0); + $self->stop(shift || 0); + $self->strand(shift || 1); + $self->axe_pos(shift || 0); + $self->collection(shift || undef); + $self->matches([]); + return $self; +} + +sub id { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'id'}; } + else { $self->{'id'} = $arg; } +} + +sub seq { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'seq'}; } + else { $self->{'seq'} = $arg; } +} + +sub start { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'start'}; } + else { $self->{'start'} = $arg; } +} + +sub stop { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'stop'}; } + else { $self->{'stop'} = $arg; } +} + +sub axe_pos { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'axe_pos'}; } + else { $self->{'axe_pos'} = $arg; } +} + +sub strand { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'strand'}; } + else { $self->{'strand'} = $arg; } +} + +sub collection { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'collection'}; } + else { $self->{'collection'} = $arg; } +} + +sub matches { + my($self, $arg) = @_; + if(!defined $arg) { return $self->{'matches'}; } + else { + $self->{'matches'} = $arg; + } +} + +sub addmatch { + my($self, $match) = @_; + push(@{$self->matches()}, $match); +} + +sub bestMatch { + my $self = shift; + if($self->hasMatches()) { + my @sort = sort { $a->score() <=> $b->score() } @{$self->matches()}; + my $best = pop(@sort); + return ($best->gene1() == $self) ? $best->gene2() : $best->gene1(); + } + return undef; +} + +sub hasMatches { + my $self = shift; + return (scalar(@{$self->{'matches'}}) > 0); +} + +sub BRH_match { + my $self = shift; + my $best = $self->bestMatch(); + if(defined $best) { + my $bestReciproq = $best->bestMatch(); + if( defined $bestReciproq && $bestReciproq == $self) { + return $best; + } + } + return undef; +} + +package LibAnnotation::Ortho::GeneHit; + +use strict; + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless $self, $class; + $self->gene1(shift || undef); + $self->gene2(shift || undef); + $self->score(shift || undef); + $self->color(shift || "none"); + return $self; +} + +sub gene1 { + my($self, $arg) = @_; + if(defined $arg) { $self->{'gene1'} = $arg; } + else { return $self->{'gene1'}; } +} + +sub gene2 { + my($self, $arg) = @_; + if(defined $arg) { $self->{'gene2'} = $arg; } + else { return $self->{'gene2'}; } +} + +sub score { + my($self, $arg) = @_; + if(defined $arg) { $self->{'score'} = $arg; } + else { return $self->{'score'}; } +} + +sub color { + my($self, $arg) = @_; + if(defined $arg) { $self->{'color'} = $arg; } + else { return $self->{'color'}; } +} + +1; |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/GeneCollection.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/GeneCollection.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,389 @@\n+#!/usr/local/bin/perl -w\n+\n+################################################################################\n+# * \n+# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA \n+# * <jmaury@genoscope.cns.fr>\n+# *\n+# * \n+# * This software is governed by the CeCILL license under French law and\n+# * abiding by the rules of distribution of free software. You can use, \n+# * modify and/ or redistribute the software under the terms of the CeCILL\n+# * license as circulated by CEA, CNRS and INRIA at the following URL\n+# * "http://www.cecill.info". \n+# * \n+# * As a counterpart to the access to the source code and rights to copy,\n+# * modify and redistribute granted by the license, users are provided only\n+# * with a limited warranty and the software\'s author, the holder of the\n+# * economic rights, and the successive licensors have only limited\n+# * liability. \n+# * \n+# * In this respect, the user\'s attention is drawn to the risks associated\n+# * with loading, using, modifying and/or developing or reproducing the\n+# * software by the user in light of its specific status of free software,\n+# * that may mean that it is complicated to manipulate, and that also\n+# * therefore means that it is reserved for developers and experienced\n+# * professionals having in-depth computer knowledge. Users are therefore\n+# * encouraged to load and test the software\'s suitability as regards their\n+# * requirements in conditions enabling the security of their systems and/or \n+# * data to be ensured and, more generally, to use and operate it in the \n+# * same conditions as regards security. \n+# * \n+# * The fact that you are presently reading this means that you have had\n+# * knowledge of the CeCILL license and that you accept its terms.\n+################################################################################\n+\n+=head1 NAME\n+\n+GeneCollection - Structure \n+\n+=head1 AUTHORS\n+\n+2005, Genoscope - CNS, Jean-Marc Aury, jmaury@genoscope.cns.fr\n+\n+=cut\n+\n+package LibAnnotation::Ortho::GeneCollection;\n+\n+use strict;\n+use FileHandle;\n+use LibAnnotation::Ortho::Gene;\n+use LibAnnotation::Ortho::GeneCollectionIterator;\n+\n+sub new {\n+ my $proto = shift;\n+ my $class = ref($proto) || $proto;\n+ my $self = {};\n+ bless $self, $class;\n+ $self->file(shift);\n+ $self->{\'genes\'} = [];\n+ $self->{\'indexes\'} = {};\n+ $self->{\'axeSize\'} = 0;\n+ $self->{\'lastIdx\'} = 0;\n+ $self->{\'existGene\'} = {};\n+ $self->{\'name\'} = "";\n+ $self->{\'cache\'} = undef;\n+ $self->{\'seqInCache\'} = "";\n+ return $self;\n+}\n+\n+sub dup {\n+ my($self, $seqFilter) = @_;\n+ my $class = ref($self);\n+ my $collec = {};\n+ bless $collec, $class;\n+ my $it = new LibAnnotation::Ortho::GeneCollectionIterator($self);\n+ my @genelist = ();\n+ while(my $el = $it->next()) {\n+\tif(defined $seqFilter->{$el->seq()}) { push(@genelist, $el); }\n+ }\n+ $collec->genes(\\@genelist);\n+ $collec->name($self->name());\n+ return $collec;\n+}\n+\n+sub file {\n+ my($self, $arg) = @_;\n+ if(defined $arg) { $self->{\'file\'} = $arg; }\n+ else { return $self->{\'file\'}; }\n+}\n+\n+sub genes {\n+ my ($self, $arg) = @_;\n+ if(defined $arg) { $self->{\'genes\'} = $arg; }\n+ else { return $self->{\'genes\'}; }\n+}\n+\n+sub indexes {\n+ my($self, $arg) = @_;\n+ if(defined $arg) { $self->{\'indexes\'} = $arg; }\n+ else { return $self->{\'indexes\'}; }\n+}\n+\n+sub axeSize {\n+ my($self, $arg) = @_;\n+ if(defined $arg) { $self->{\'axeSize\'} = $arg; }\n+ else { return $self->{\'axeSize\'}; }\n+}\n+\n+sub lastIdx {\n+ my($self, $arg) = @_;\n+ if(defined $arg) { $self->{\'lastIdx\'} = $arg; }\n+ else { return $self->{\'lastIdx\'}; }\n+}\n+\n+sub name {\n+ my($self, $arg) = @_;\n+ if(defined $arg) { $self->{\'name\'} = $arg; }\n+ else { return $self->{\'name\'}; }\n+}\n+\n+sub existGene {\n+ my($self, $arg) = @_;\n+ if(defined $self->{\'existGene\'}->{$arg}) { return $self->{\'existGene\'}->{$arg}; }\n+ else { return 0; }\n+'..b'ation::Ortho::GeneHit($gene1, $gene2, $11);\n+\t\t $gene1->addmatch($hit);\n+\t\t $gene2->addmatch($hit);\n+\t\t}\n+\t }\n+\t \n+ } else {\n+ warn "[Error] Bad format in geneHit file : $line\\n";\n+ exit 1;\n+ }\n+ }\n+ $self->genes(\\@geneSet1);\n+ $self->indexGenes();\n+ $self->lastIdx($cpt1);\n+ $collection->genes(\\@geneSet2);\n+ $self->indexGenes();\n+ return ($cpt1, $cpt2, $nbLink);\n+}\n+\n+sub _openFile {\n+ my $self = shift;\n+ my $fhIndice = new FileHandle($self->file(), "r");\n+ if(! defined $fhIndice) { die "[Error] Unable to open ", $self->file(), "\\n"; }\n+ return $fhIndice;\n+}\n+\n+sub indexGenes {\n+ my $self = shift;\n+ my %geneIndices;\n+ $self->sortGenes();\n+ foreach my $g (@{$self->genes()}) { $geneIndices{$g->id()} = $g; }\n+ $self->indexes(\\%geneIndices);\n+}\n+\n+sub sortGenes {\n+ my $self = shift;\n+ my @sortList = sort { ($a->seq() =~ /^\\d+$/ && $b->seq() =~ /^\\d+$/ && $a->seq() <=> $b->seq())\n+\t\t\t || $a->seq() cmp $b->seq()\n+#\t\t\t || (($a->seq() !~ /\\d+/ || $b->seq() !~ /\\d+/) && $a->seq() cmp $b->seq())\n+\t\t\t || $a->start() <=> $b->start() } @{$self->genes()};\n+ $self->genes(\\@sortList);\n+}\n+\n+sub projectOnAxis {\n+ my($self) = @_;\n+ my $nbGene = scalar(@{$self->genes()});\n+ my $offset = $self->axeSize() / $nbGene;\n+ $self->sortGenes();\n+ my $it = new LibAnnotation::Ortho::GeneCollectionIterator($self);\n+ my ($index, $currentS) = (0, "");\n+ my (%st, %pos);\n+ while(my $el = $it->next()) {\n+\tif($el->seq() ne $currentS) {\n+\t if($currentS ne "") {\n+\t\t$st{$currentS}->{\'end\'} = $index * $offset;\n+\t }\n+\t $currentS = $el->seq();\n+\t $st{$currentS}->{\'start\'} = $index * $offset;\n+\t}\n+\t$pos{$el->seq()."@".$el->start()."@".$el->stop()} = $index * $offset;\n+\t$el->axe_pos($index * $offset);\n+\t$index++;\n+ }\n+ $st{$currentS}->{\'end\'} = $index * $offset;\n+ return (\\%st, \\%pos);;\n+} \n+\n+sub getSeqNames {\n+ my($self) = @_; \n+ my $nbGene = scalar(@{$self->genes()});\n+ $self->sortGenes();\n+ my $it = new LibAnnotation::Ortho::GeneCollectionIterator($self);\n+ my $currentS = "";\n+ my @seq = ();\n+ while(my $el = $it->next()) {\n+\tif($el->seq() ne $currentS) {\n+\t if($currentS ne "") {\n+\t\tpush(@seq, $currentS);\n+\t }\n+\t $currentS = $el->seq();\n+\t}\n+ }\n+ if($currentS ne "") { push(@seq, $currentS); }\n+ return \\@seq;\n+}\n+\n+sub getGenesFromSeq {\n+ my($self, $seqx, $seqy) = @_;\n+ if(!defined $seqy) { $seqy = ""; }\n+\n+ my (@genes, @matches);\n+ if(defined $self->{\'seqInCache\'} && $self->{\'seqInCache\'} eq $seqx) {\n+\t@genes = @{$self->{\'cache\'}};\n+ } else {\n+\tmy $it = new LibAnnotation::Ortho::GeneCollectionIterator($self);\n+\twhile(my $el = $it->next()) {\n+\t if($el->seq() eq $seqx) {\n+\t\tpush(@genes, $el);\n+\t }\n+\t}\n+\t$self->{\'seqInCache\'} = $seqx;\n+\t$self->{\'cache\'} = \\@genes;\n+ }\n+ \n+ my $unique_matchs = 0;\n+ my %vu;\n+ if($seqy ne "") {\n+\tforeach my $el (@genes) {\n+\t my $matches = $el->matches();\n+\t foreach my $m (@$matches) {\n+\t\tmy $ortho_gene = ($m->gene1() == $el) ? $m->gene2() : $m->gene1();\n+\t\t# On ne recupere que les matchs qui correspondent a la sequence $seqy\n+\t\tif($ortho_gene->seq() eq $seqy) {\n+\t\t if(!defined $vu{$el}) { $vu{$el}=1; $unique_matchs++; }\n+\t\t push(@matches, $m); \n+\t\t}\n+\t }\n+\t}\n+ } \n+ return (\\@genes, \\@matches, $unique_matchs);\n+}\n+\n+sub get_indexBased_coord {\n+ my($self) = @_; \n+ my ($index, $currentS) = (1, "");\n+ my (%st, %pos);\n+ my $it = new LibAnnotation::Ortho::GeneCollectionIterator($self);\n+ while(my $el = $it->next()) {\n+\tif($el->seq() ne $currentS) {\n+\t if($currentS ne "") {\n+\t\t$st{$currentS}->{\'nb\'} = $index;\n+\t\t$index = 1;\n+\t }\n+\t $currentS = $el->seq();\n+\t #$st{$currentS}->{\'start\'} = $index;\n+\t}\n+\tpush(@{$st{$currentS}->{\'genes\'}}, $el);\n+\t$pos{$el} = $index;\n+\t$index++;\n+ }\n+ #$st{$currentS}->{\'end\'} = $index;\n+ return (\\%st, \\%pos);;\n+}\n+\n+1;\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/GeneCollectionIterator.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/GeneCollectionIterator.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,89 @@ +#!/usr/local/bin/perl -w + +################################################################################ +# * +# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA +# * <jmaury@genoscope.cns.fr> +# * +# * +# * This software is governed by the CeCILL license under French law and +# * abiding by the rules of distribution of free software. You can use, +# * modify and/ or redistribute the software under the terms of the CeCILL +# * license as circulated by CEA, CNRS and INRIA at the following URL +# * "http://www.cecill.info". +# * +# * As a counterpart to the access to the source code and rights to copy, +# * modify and redistribute granted by the license, users are provided only +# * with a limited warranty and the software's author, the holder of the +# * economic rights, and the successive licensors have only limited +# * liability. +# * +# * In this respect, the user's attention is drawn to the risks associated +# * with loading, using, modifying and/or developing or reproducing the +# * software by the user in light of its specific status of free software, +# * that may mean that it is complicated to manipulate, and that also +# * therefore means that it is reserved for developers and experienced +# * professionals having in-depth computer knowledge. Users are therefore +# * encouraged to load and test the software's suitability as regards their +# * requirements in conditions enabling the security of their systems and/or +# * data to be ensured and, more generally, to use and operate it in the +# * same conditions as regards security. +# * +# * The fact that you are presently reading this means that you have had +# * knowledge of the CeCILL license and that you accept its terms. +################################################################################ + + +=head1 NAME + +GeneCollectionIterator - Structure + +=head1 AUTHORS + +2005, Genoscope - CNS, Jean-Marc Aury, jmaury@genoscope.cns.fr + +=cut + +package LibAnnotation::Ortho::GeneCollectionIterator; + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless $self, $class; + $self->_organize(shift); + $self->_currentIdx(0); + return $self; +} + +sub _list { + my ($self, $arg) = @_; + if(defined $arg) { $self->{'list'} = $arg; } + else { return $self->{'list'}; } +} + +sub _currentIdx { + my($self, $arg) = @_; + if(defined $arg) { $self->{'currentIdx'} = $arg; } + else { return $self->{'currentIdx'}; } +} + +sub _organize { + my($self, $collection) = @_; + my @list = (); + foreach my $g (@{$collection->genes()}) { push(@list, $g); } + $self->_list(\@list); +} + +sub next { + my($self) = @_; + my $list = $self->_list(); + if($self->_currentIdx() >= scalar(@{$list})) { return 0; } + else { + my $elt = $list->[$self->_currentIdx()]; + $self->_currentIdx($self->_currentIdx() + 1); + return $elt; + } +} + +1; |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/OrthoDotter.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/OrthoDotter.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,362 @@\n+################################################################################\n+# * \n+# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA \n+# * <jmaury@genoscope.cns.fr>\n+# *\n+# * \n+# * This software is governed by the CeCILL license under French law and\n+# * abiding by the rules of distribution of free software. You can use, \n+# * modify and/ or redistribute the software under the terms of the CeCILL\n+# * license as circulated by CEA, CNRS and INRIA at the following URL\n+# * "http://www.cecill.info". \n+# * \n+# * As a counterpart to the access to the source code and rights to copy,\n+# * modify and redistribute granted by the license, users are provided only\n+# * with a limited warranty and the software\'s author, the holder of the\n+# * economic rights, and the successive licensors have only limited\n+# * liability. \n+# * \n+# * In this respect, the user\'s attention is drawn to the risks associated\n+# * with loading, using, modifying and/or developing or reproducing the\n+# * software by the user in light of its specific status of free software,\n+# * that may mean that it is complicated to manipulate, and that also\n+# * therefore means that it is reserved for developers and experienced\n+# * professionals having in-depth computer knowledge. Users are therefore\n+# * encouraged to load and test the software\'s suitability as regards their\n+# * requirements in conditions enabling the security of their systems and/or \n+# * data to be ensured and, more generally, to use and operate it in the \n+# * same conditions as regards security. \n+# * \n+# * The fact that you are presently reading this means that you have had\n+# * knowledge of the CeCILL license and that you accept its terms.\n+################################################################################\n+\n+#!/usr/bin/perl -w\n+\n+=head1 NAME\n+\n+OrthoDotter - Class to produce oxford grid of complete genome\n+\n+=head1 AUTHORS\n+\n+2005, Genoscope - CNS, Jean-Marc Aury, jmaury@genoscope.cns.fr\n+\n+=cut\n+\n+package LibAnnotation::Ortho::OrthoDotter;\n+\n+use FindBin; \n+use strict;\n+use FileHandle;\n+use LibAnnotation::Ortho::GeneCollectionIterator;\n+use LibAnnotation::Ortho::drawLib;\n+\n+use Graph;\n+use Graph::Undirected;\n+\n+use Math::Cephes qw(sqrt pow);\n+\n+sub new {\n+ my $proto = shift;\n+ my $class = ref($proto) || $proto;\n+ my $self = {};\n+ bless $self, $class;\n+ $self->resX(shift || 1000);\n+ $self->resY(shift || 1000);\n+ $self->gene_radius(shift || 2);\n+ $self->format(shift || "png");\n+ $self->bgcolor(shift || "white");\n+ $self->fgcolor(shift || "black");\n+ $self->gene_color(shift || "black");\n+ $self->fontsize(shift || 1);\n+ $self->filterseq(shift || 0);\n+ $self->collectionX();\n+ $self->collectionY();\n+ $self->legendX("");\n+ $self->legendY("");\n+ $self->filterX();\n+ $self->filterY();\n+ $self->filterOnX(0);\n+ $self->filterOnY(0);\n+ $self->draw_genes(1);\n+ $self->draw_limits(1);\n+ return $self;\n+}\n+\n+sub resX { \n+ my($self, $arg) = @_; \n+ if(defined $arg) { $self->{\'resX\'} = $arg; $self->{\'width\'} = $arg - 100; } \n+ else { return $self->{\'resX\'}; }\n+}\n+sub resY { \n+ my($self, $arg) = @_; \n+ if(defined $arg) { $self->{\'resY\'} = $arg; $self->{\'height\'} = $arg - 100; } \n+ else { return $self->{\'resY\'}; }\n+}\n+sub collectionX { \n+ my($self, $arg) = @_; \n+ if(defined $arg) { \n+\tmy $c = $arg;\n+\tif($self->filterOnX()) {\n+\t $c = $arg->dup($self->filterX());\n+\t}\n+\t$self->{\'collectionX\'} = $c; \n+ } \n+ else { return $self->{\'collectionX\'}; }\n+}\n+sub collectionY { \n+ my($self, $arg) = @_; \n+ if(defined $arg) { \n+\tmy $c = $arg;\n+\tif($self->filterOnY()) {\n+\t $c = $arg->dup($self->filterY());\n+\t}\n+\t$self->{\'collectionY\'} = $arg; \n+ } \n+ else { return $self->{\'collectionY\'}; }\n+}\n+\n+sub width { my($self, $arg) = @_; if(defined $arg) { $self->{\'width\'} = $arg; } else { return $self->{\'width\'}; }}\n+'..b'limit, 0);\n+\tpush(@$instructions, @$tmp);\n+ }\n+\n+ if($draw) {\n+\tdrawCmd($instructions, 50, 50, $self->height(), $self->width(), $self->resX(), \n+\t\t$self->resY(), $self->format(), $self->bgcolor(), $self->fgcolor(), , $fh_out);\n+ } else {\n+\treturn $instructions;\n+ }\n+}\n+\n+# SL Clustering\n+sub _doCluster {\n+ my($self, $max_dist, $nb_genes) = @_;\n+ my $seqx = ($self->collectionX())->getSeqNames();\n+ my $seqy = ($self->collectionY())->getSeqNames();\n+ my @clusters;\n+ foreach my $sx (@$seqx) {\n+\tforeach my $sy (@$seqy) {\n+\t my($genesx, $matchesx, $uniquex) = ($self->collectionX())->getGenesFromSeq($sx, $sy);\n+\t if($uniquex < $nb_genes) { next; }\n+\t my($genesy, $matchesy, $uniquey) = ($self->collectionY())->getGenesFromSeq($sy, $sx);\n+\t if($uniquey < $nb_genes) { next; }\n+\t if(scalar(@$matchesx) != scalar(@$matchesy)) {\n+\t\twarn "Different number of matches between sequences $sx and $sy\\n";\n+\t }\n+\t my $c = $self->_clusterRect($genesx, $genesy, $matchesx, $max_dist, $nb_genes);\n+\t if(scalar(@$c) != 0) {\n+\t\twarn scalar(@$matchesx), " matches between sequences $sx and $sy : ", scalar(@$c), " clusters created\\n";\n+\t\tpush(@clusters, @$c);\n+\t }\n+\t}\n+ }\n+ my @sortC = sort { scalar(@$b) <=> scalar(@$a) } @clusters;\n+ my $cpt=0;\n+ foreach my $cluster (@sortC) {\n+\tforeach my $p (@$cluster) {\n+\t print "$cpt ", ($p->{\'gx\'})->collection()->name(), " ", ($p->{\'gx\'})->seq(), " ", \n+\t ($p->{\'gx\'})->start(), " ", ($p->{\'gx\'})->stop(), " ", \n+\t ($p->{\'gy\'})->collection()->name(), " ", ($p->{\'gy\'})->seq(), " ", \n+\t ($p->{\'gy\'})->start(), " ", ($p->{\'gy\'})->stop(), \n+\t " size= ", scalar(@$cluster), "\\n";\n+\t}\n+\t$cpt++;\n+ }\n+ \n+}\n+\n+sub _clusterRect {\n+ my($self, $genesx, $genesy, $matchesx, $max_dist, $nb_genes) = @_;\n+ my @sortx = sort { $a->start() <=> $b->start() } @$genesx;\n+ my @sorty = sort { $a->start() <=> $b->start() } @$genesy;\n+ my $idx = 0;\n+ \n+ # On cree les coordonnees de chaque gene\n+ my (%xidx, %yidx);\n+ foreach(@sortx) { $xidx{$_} = $idx; $idx++; }\n+ $idx = 0;\n+ foreach(@sorty) { $yidx{$_} = $idx; $idx++; }\n+\n+ # On cree les points contenus dans le rectangle\n+ my @dots;\n+ foreach my $m (@$matchesx) {\n+\tmy $x = (defined $xidx{$m->gene1()}) ? $m->gene1() : $m->gene2();\n+\tmy $y = (defined $yidx{$m->gene1()}) ? $m->gene1() : $m->gene2();\n+\tpush(@dots, { \'gx\' => $x , \'gy\' => $y , \'m\' => $m , \'x\' => $xidx{$x} , \'y\' => $yidx{$y}});\n+ }\n+ \n+ my $clusters = $self->_sl_cluster(\\@dots, $max_dist, $nb_genes);\n+ return $clusters;\n+}\n+\n+sub _sl_cluster {\n+ my($self, $dots, $max_dist, $nb_genes) = @_;\n+ my @color = ( "red", "blue", "green", "turquoise", "violet", "brown", "olivedrab", "purple", "skyblue" );\n+\n+ # On calcule la matrice de distance\n+ my @dist;\n+ foreach my $p1 (@$dots) {\n+\tmy @_p;\n+\tforeach my $p2 (@$dots) {\n+\t push(@_p, { \'p1\' => $p1 , \'p2\' => $p2 , \'dist\' => sqrt(pow($p1->{\'x\'} - $p2->{\'x\'}, 2) + pow($p1->{\'y\'} - $p2->{\'y\'}, 2)) } );\n+\t}\n+\tpush(@dist, \\@_p);\n+ }\n+\n+ # On fait une slc\n+ my %vertex = ();\n+ my $g = Graph::Undirected->new();\n+ my %edge;\n+ foreach my $lig (@dist) {\n+\tforeach my $d (@$lig) {\n+\t if($d->{\'dist\'} <= $max_dist) {\n+\t\tmy($p1, $p2) = ($d->{\'p1\'}, $d->{\'p2\'});\n+\t\tif(!defined $vertex{$p1}) {\n+\t\t $vertex{$p1} = 1;\n+\t\t $g->add_vertex($p1);\n+\t\t $edge{$p1} = $p1;\n+\t\t}\n+\t\tif(!defined $vertex{$p2}) {\n+\t\t $vertex{$p2} = 1;\n+\t\t $g->add_vertex($p2);\n+\t\t $edge{$p2} = $p2;\n+\t\t}\n+\t\t$g->add_edge($p1, $p2);\n+\t }\n+\t}\n+ }\n+ my @cc = $g->connected_components();\n+ my @clusters;\n+ my $idx = 0;\n+ foreach my $cl (@cc) { \n+\tif( scalar(@$cl) > $nb_genes ) {\n+\t my @dot_list;\n+\t foreach my $dot (@$cl) {\n+\t\tmy $p = $edge{$dot};\n+\t\t($p->{\'m\'})->color($color[$idx]);\n+\t\tpush(@dot_list, $p);\n+\t }\n+\t push(@clusters, \\@dot_list);\n+\t $idx++;\n+\t if($idx == 9) { $idx = 0; }\n+\t}\n+ }\n+ return \\@clusters;\n+}\n+\n+\n+1;\n+\n+\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/PSlib.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/PSlib.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,156 @@ +#!/usr/local/bin/perl -w + +################################################################################ +# * +# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA +# * <jmaury@genoscope.cns.fr> +# * +# * +# * This software is governed by the CeCILL license under French law and +# * abiding by the rules of distribution of free software. You can use, +# * modify and/ or redistribute the software under the terms of the CeCILL +# * license as circulated by CEA, CNRS and INRIA at the following URL +# * "http://www.cecill.info". +# * +# * As a counterpart to the access to the source code and rights to copy, +# * modify and redistribute granted by the license, users are provided only +# * with a limited warranty and the software's author, the holder of the +# * economic rights, and the successive licensors have only limited +# * liability. +# * +# * In this respect, the user's attention is drawn to the risks associated +# * with loading, using, modifying and/or developing or reproducing the +# * software by the user in light of its specific status of free software, +# * that may mean that it is complicated to manipulate, and that also +# * therefore means that it is reserved for developers and experienced +# * professionals having in-depth computer knowledge. Users are therefore +# * encouraged to load and test the software's suitability as regards their +# * requirements in conditions enabling the security of their systems and/or +# * data to be ensured and, more generally, to use and operate it in the +# * same conditions as regards security. +# * +# * The fact that you are presently reading this means that you have had +# * knowledge of the CeCILL license and that you accept its terms. +################################################################################ + +use strict; + +sub printHeader { + my $rgbFile = shift; + my $res = "%!PS-Adobe-3.0\n"; + $res .= "%%DocumentData: Clean8bit\n"; + $res .= "%%PageOrder: Ascend\n"; + $res .= "%%Pages: 1\n"; + $res .= "%%DocumentFonts: Helvetica\n"; + $res .= "%%EndComments\n"; + + $res .= "/cm {28.3464567 mul} def\n"; + $res .= "%%Bounding-Box: 0 cm 0 cm 21 cm 29.7 cm\n"; + + $res .= "\n"; + $res .= "/Arial findfont\n"; + $res .= "10 scalefont\n"; + $res .= "setfont\n"; + + if(defined $rgbFile) { $res .= loadRGBColor($rgbFile); } + else { $res .= getColorDef(); } + + return $res; +} + +sub loadRGBColor { + my $file = shift; + my $fh = new FileHandle($file, "r"); + my $colorMap = ""; + my $cpt = 0; + if (defined $fh) { + while(my $l = $fh->getline()) { + if($l =~ /^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d\.\d+)\s+(\d\.\d+)\s+(\d\.\d+)\s*$/) { + $colorMap .= "/$1 [ $5 $6 $7 ] def\n"; + } + } + } + if($colorMap eq "") { warn "colorMap is empty\n"; } + $colorMap .= "/color{\n"; + $colorMap .= "aload pop setrgbcolor\n"; + $colorMap .= "}def\n"; + $colorMap .= "\n"; + return $colorMap; +} + +sub printFormer { + my $res = "showpage\n"; + return $res; +} + +sub getColorDef { + my $res = "/grey62 [ 0.62 0.62 0.62 ] def\n"; + $res .= "/black [ 0.00 0.00 0.00 ] def\n"; + $res .= "\n"; + $res .= "/color{\n"; + $res .= "aload pop setrgbcolor\n"; + $res .= "}def\n"; + $res .= "\n"; +} + +sub text { + my($X, $Y, $text, $angle) = @_; + $angle = $angle || 0; + my $res .= "newpath\n"; + $res .= "$X $Y moveto\n"; + if($angle != 0) { + $res .= "$angle rotate\n"; + } + $res .= "($text) show\n"; + if($angle != 0) { + $res .= "-$angle rotate\n"; + } + $res .= "closepath\n"; + return $res; +} + +sub rline { + my($X1, $Y1, $X2, $Y2) = @_; + my $res = "newpath\n"; + $res .= "$X1 $Y1 moveto\n"; + $res .= "$X2 $Y2 rlineto\n"; + $res .= "closepath\n"; + $res .= "stroke\n"; + return $res; +} + +sub cercle { + my($X, $Y, $R, $A, $B, $color, $fill) = @_; + my $res = "newpath\n"; + if($fill) { + $res .= "0 setlinewidth\n"; + $res .= "$X $Y $R $A $B arc closepath\n"; + $res .= "gsave\n"; + $res .= "$color color fill\n"; + $res .= "grestore\n"; + } else { + $res .= "$X $Y $R $A $B arc closepath\n"; + } + $res .= "stroke\n"; + $res .= "grestore\n"; + return $res; +} + +sub box { + my($X, $Y, $L, $H, $color, $fill) = @_; + my $res = "newpath\n"; + $res .= "$X $Y moveto\n"; + $res .= "$L 0 rlineto\n"; + $res .= "0 $H rlineto\n"; + $res .= "-$L 0 rlineto\n"; + $res .= "closepath\n"; + if($fill) { + $res .= "gsave\n"; + $res .= "$color color fill\n"; + $res .= "grestore\n"; + } + $res .= "stroke\n"; + return $res; +} + +1; |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/drawLib.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/drawLib.pm Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,178 @@ +#!/usr/local/bin/perl -w + +################################################################################ +# * +# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA +# * <jmaury@genoscope.cns.fr> +# * +# * +# * This software is governed by the CeCILL license under French law and +# * abiding by the rules of distribution of free software. You can use, +# * modify and/ or redistribute the software under the terms of the CeCILL +# * license as circulated by CEA, CNRS and INRIA at the following URL +# * "http://www.cecill.info". +# * +# * As a counterpart to the access to the source code and rights to copy, +# * modify and redistribute granted by the license, users are provided only +# * with a limited warranty and the software's author, the holder of the +# * economic rights, and the successive licensors have only limited +# * liability. +# * +# * In this respect, the user's attention is drawn to the risks associated +# * with loading, using, modifying and/or developing or reproducing the +# * software by the user in light of its specific status of free software, +# * that may mean that it is complicated to manipulate, and that also +# * therefore means that it is reserved for developers and experienced +# * professionals having in-depth computer knowledge. Users are therefore +# * encouraged to load and test the software's suitability as regards their +# * requirements in conditions enabling the security of their systems and/or +# * data to be ensured and, more generally, to use and operate it in the +# * same conditions as regards security. +# * +# * The fact that you are presently reading this means that you have had +# * knowledge of the CeCILL license and that you accept its terms. +################################################################################ + +use strict; + +use LibAnnotation::Ortho::PSlib; +use LibAnnotation::Ortho::GDlib; +use FileHandle; +use GD; + +use Cwd 'abs_path'; +# my $dir = getcwd(); + +use File::Basename; +my $path = dirname(abs_path($0))."/LibAnnotation/Ortho/rgb.txt"; + + +use constant RGB_FILE_PATH => dirname(abs_path($0)).'/LibAnnotation/Ortho/rgb.txt'; + +sub drawCmd { + my($cmd, $xOffset, $yOffset, $height, $width, $resX, $resY, $format, $bgcolor, $fgcolor, $fhout) = @_; + + if($format eq "ps" || $format eq "pdf") { + print $fhout printHeader(RGB_FILE_PATH); + foreach(@$cmd) { + if($_->{'type'} eq "cercle") { + my($x, $y, $r, $c) = @{$_->{'arg'}}; + $x += $xOffset; + $y += $yOffset; + print $fhout cercle($x, $y, $r, 0, 360, $c, 1); + + } elsif($_->{'type'} eq "box") { + my($x1, $y1, $x2, $y2, $color, $f) = @{$_->{'arg'}}; + if(!defined $f) { $f = 0; } + $x1 += $xOffset; + $y1 += $yOffset; + print $fhout box($x1, $y1, $x2, $y2, $color, $f); + + } elsif($_->{'type'} eq "line") { + my($x1, $y1, $x2, $y2) = @{$_->{'arg'}}; + $x1 += $xOffset; + $y1 += $yOffset; + $x2 += $xOffset; + $y2 += $yOffset; + print $fhout rline($x1, $y1, $x2-$x1, $y2-$y1); + + } elsif($_->{'type'} eq "text") { + my($f, $x, $y, $text) = @{$_->{'arg'}}; + $x += $xOffset - length($text); + $y += $yOffset; + print $fhout text($x, $y, $text); + + } elsif($_->{'type'} eq "textUp") { + my($f, $x, $y, $text) = @{$_->{'arg'}}; + $x += $xOffset; + $y += $yOffset - length($text); + print $fhout text($x, $y, $text, 90); + + } else { + die "Unknown command : ", $_->{'type'}, "\n"; + } + } + print $fhout printFormer(); + + } elsif($format eq "jpg" || $format eq "gif" || $format eq "png") { + my $img = new GD::Image($resX, $resY); + my $colorMap = loadRGBFile($img); + my $bg_color = getColor($colorMap, $bgcolor, $img); + my $fg_color = getColor($colorMap, $fgcolor, $img); + my $black = $img->colorAllocate(0, 0, 0); + my $color = $black; + if($bgcolor eq "transparent") { $img->transparent($bg_color); } + foreach(@$cmd) { + if($_->{'type'} eq "cercle") { + my($x, $y, $r, $c, $f) = @{$_->{'arg'}}; + if(!defined $f) { $f = 1; } + $x += $xOffset; + $y = $height - $y + $yOffset; + $color = getColor($colorMap, $c, $img, $fg_color); + if($f) { $img->filledArc($x, $y, $r, $r, 0, 360, $color); } + else { $img->arc($x, $y, $r, $r, 0, 360, $color); } + + } elsif($_->{'type'} eq "box") { + my($x1, $y1, $x2, $y2, $c, $f) = @{$_->{'arg'}}; + if(!defined $f) { $f = 0; } + $x1 += $xOffset; + $y1 = $height - $y1 + $yOffset; + $x2 += $xOffset; + $y2 = $height - $y2 + $yOffset; + $color = getColor($colorMap, $c, $img, $fg_color); + if($f == 1) { $img->filledRectangle($x1, $y1, $x2, $y2, $color); } + elsif($f == 2) { $img->rectangle($x1, $y1, $x2, $y2, $color); $img->fill(($x1+$x2)/2, ($y1+$y2)/2, $color); } + else { $img->rectangle($x1, $y1, $x2, $y2, $color); } + + } elsif($_->{'type'} eq "line") { + my($x1, $y1, $x2, $y2, $c) = @{$_->{'arg'}}; + $x1 += $xOffset; + $y1 = $height - $y1 + $yOffset; + $x2 += $xOffset; + $y2 = $height - $y2 + $yOffset; + $color = getColor($colorMap, $c, $img, $fg_color); + $img->line($x1, $y1, $x2, $y2, $color); + + } elsif($_->{'type'} eq "text") { + my($f, $x, $y, $text) = @{$_->{'arg'}}; + my $font = font2GD($f); + $x += $xOffset - length($text)*($font->width/2); + $y = $height - $y + $yOffset - ($font->height/2); + $img->string($font, $x, $y, $text, $fg_color); + + } elsif($_->{'type'} eq "textUp") { + my($f, $x, $y, $text) = @{$_->{'arg'}}; + my $font = font2GD($f); + $x += $xOffset - ($font->height/2); + $y = $height - $y + $yOffset + length($text)*($font->width/2); + $img->stringUp($font, $x, $y, $text, $fg_color); + + } else { + die "Unknown command : ", $_->{'type'}, "\n"; + } + } + binmode $fhout; + if($format eq "jpg") { print $fhout $img->jpeg(100); } + if($format eq "gif") { print $fhout $img->gif(); } + if($format eq "png") { print $fhout $img->png(); } + } +} + +sub loadRGBFile { + my $img = shift; + my $fh = new FileHandle(RGB_FILE_PATH, "r"); + my %colorMap = (); + my $cpt = 0; + if (defined $fh) { + while(my $l = $fh->getline()) { + if($l =~ /^(\S+)\s+(\d+)\s+(\d+)\s+(\d+).*$/) { + $colorMap{$1."firstComponent"} = $2; + $colorMap{$1."secondComponent"} = $3; + $colorMap{$1."thirdComponent"} = $4; + } + } + } + return \%colorMap; +} + +1; |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/LibAnnotation/Ortho/rgb.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/LibAnnotation/Ortho/rgb.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,752 @@\n+snow 255 250 250 1.00 0.98 0.98\n+ghostwhite 248 248 255 0.97 0.97 1.00\n+GhostWhite 248 248 255 0.97 0.97 1.00\n+whitesmoke 245 245 245 0.96 0.96 0.96\n+WhiteSmoke 245 245 245 0.96 0.96 0.96\n+gainsboro 220 220 220 0.86 0.86 0.86\n+floralwhite 255 250 240 1.00 0.98 0.94\n+FloralWhite 255 250 240 1.00 0.98 0.94\n+oldlace 253 245 230 0.99 0.96 0.90\n+OldLace 253 245 230 0.99 0.96 0.90\n+linen 250 240 230 0.98 0.94 0.90\n+antiquewhite 250 235 215 0.98 0.92 0.84\n+AntiqueWhite 250 235 215 0.98 0.92 0.84\n+papayawhip 255 239 213 1.00 0.94 0.84\n+PapayaWhip 255 239 213 1.00 0.94 0.84\n+blanchedalmond 255 235 205 1.00 0.92 0.80\n+BlanchedAlmond 255 235 205 1.00 0.92 0.80\n+bisque 255 228 196 1.00 0.89 0.77\n+peachpuff 255 218 185 1.00 0.85 0.73\n+PeachPuff 255 218 185 1.00 0.85 0.73\n+navajowhite 255 222 173 1.00 0.87 0.68\n+NavajoWhite 255 222 173 1.00 0.87 0.68\n+moccasin 255 228 181 1.00 0.89 0.71\n+cornsilk 255 248 220 1.00 0.97 0.86\n+ivory 255 255 240 1.00 1.00 0.94\n+lemonchiffon 255 250 205 1.00 0.98 0.80\n+LemonChiffon 255 250 205 1.00 0.98 0.80\n+seashell 255 245 238 1.00 0.96 0.93\n+honeydew 240 255 240 0.94 1.00 0.94\n+mintcream 245 255 250 0.96 1.00 0.98\n+MintCream 245 255 250 0.96 1.00 0.98\n+azure 240 255 255 0.94 1.00 1.00\n+aliceblue 240 248 255 0.94 0.97 1.00\n+AliceBlue 240 248 255 0.94 0.97 1.00\n+lavender 230 230 250 0.90 0.90 0.98\n+lavenderblush 255 240 245 1.00 0.94 0.96\n+LavenderBlush 255 240 245 1.00 0.94 0.96\n+mistyrose 255 228 225 1.00 0.89 0.88\n+MistyRose 255 228 225 1.00 0.89 0.88\n+white 255 255 255 1.00 1.00 1.00\n+black 0 0 0 0.00 0.00 0.00\n+darkslategray 47 79 79 0.18 0.31 0.31\n+DarkSlateGray 47 79 79 0.18 0.31 0.31\n+darkslategrey 47 79 79 0.18 0.31 0.31\n+DarkSlateGrey 47 79 79 0.18 0.31 0.31\n+dimgray 105 105 105 0.41 0.41 0.41\n+DimGray 105 105 105 0.41 0.41 0.41\n+dimgrey 105 105 105 0.41 0.41 0.41\n+DimGrey 105 105 105 0.41 0.41 0.41\n+slategray 112 128 144 0.44 0.50 0.56\n+SlateGray 112 128 144 0.44 0.50 0.56\n+slategrey 112 128 144 0.44 0.50 0.56\n+SlateGrey 112 128 144 0.44 0.50 0.56\n+lightslategray 119 136 153 0.47 0.53 0.60\n+LightSlateGray 119 136 153 0.47 0.53 0.60\n+lightslategrey 119 136 153 0.47 0.53 0.60\n+LightSlateGrey 119 136 153 0.47 0.53 0.60\n+gray 190 190 190 0.75 0.75 0.75\n+grey 190 190 190 0.75 0.75 0.75\n+lightgrey 211 211 211 0.83 0.83 0.83\n+LightGrey 211 211 211 0.83 0.83 0.83\n+lightgray 211 211 211 0.83 0.83 0.83\n+LightGray 211 211 211 0.83 0.83 0.83\n+midnightblue 25 25 112 0.10 0.10 0.44\n+MidnightBlue 25 25 112 0.10 0.10 0.44\n+navy 0 0 128 0.00 0.00 0.50\n+navyblue 0 0 128 0.00 0.00 0.50\n+NavyBlue 0 0 128 0.00 0.00 0.50\n+cornflowerblue 100 149 237 0.39 0.58 0.93\n+CornflowerBlue 100 149 237 0.39 0.58 0.93\n+darkslateblue 72 61 139 0.28 0.24 0.55\n+DarkSlateBlue 72 61 139 0.28 0.24 0.55\n+slateblue 106 90 205 0.42 0.35 0.80\n+SlateBlue 106 90 205 0.42 0.35 0.80\n+mediumslateblue 123 104 238 0.48 0.41 0.93\n+MediumSlateBlue 123 104 238 0.48 0.41 0.93\n+lightslateblue 132 112 255 0.52 0.44 1.00\n+LightSlateBlue 132 112 255 0.52 0.44 1.00\n+mediumblue 0 0 205 0.00 0.00 0.80\n+MediumBlue 0 0 205 0.00 0.00 0.80\n+royalblue 65 105 225 0.25 0.41 0.88\n+RoyalBlue 65 105 225 0.25 0.41 0.88\n+blue 0 0 255 0.00 0.00 1.00\n+dodgerblue 30 144 255 0.12 0.56 1.00\n+DodgerBlue 30 144 255 0.12 0.56 1.00\n+deepskyblue 0 191 255 0.00 0.75 1.00\n+DeepSkyBlue 0 191 255 0.00 0.75 1.00\n+skyblue 135 206 235 0.53 0.81 0.92\n+SkyBlue 135 206 235 0.53 0.81 0.92\n+lightskyblue 135 206 250 0.53 0.81 0.98\n+LightSkyBlue 135 206 250 0.53 0.81 0.98\n+steelblue 70 130 180 0.27 0.51 0.71\n+SteelBlue 70 130 180 0.27 0.51 0.71\n+lightsteelblue 176 196 222 0.69 0.77 0.87\n+LightSteelBlue 176 196 222 0.69 0.77 0.87\n+lightblue 173 216 230 0.68 0.85 0.90\n+LightBlue 173 216 230 0.68 0.85 0.90\n+powderblue 176 224 230 0.69 0.88 0.90\n+PowderBlue 176 224 230 0.69 0.88 0.90\n+paleturquoise 175 238 238 0.69 0.93 0.93\n+PaleTurquoise 175 238 238 0.69 0.93 0.93\n+darkturquoise 0 206 209 0.00 0.81 0.82\n+DarkTurquoise 0 206 209 0.00 0.81 0.82\n+mediumturquoise 72 209 204 0.28 0.8'..b'51 130 130 130 0.51 0.51 0.51\n+grey51 130 130 130 0.51 0.51 0.51\n+gray52 133 133 133 0.52 0.52 0.52\n+grey52 133 133 133 0.52 0.52 0.52\n+gray53 135 135 135 0.53 0.53 0.53\n+grey53 135 135 135 0.53 0.53 0.53\n+gray54 138 138 138 0.54 0.54 0.54\n+grey54 138 138 138 0.54 0.54 0.54\n+gray55 140 140 140 0.55 0.55 0.55\n+grey55 140 140 140 0.55 0.55 0.55\n+gray56 143 143 143 0.56 0.56 0.56\n+grey56 143 143 143 0.56 0.56 0.56\n+gray57 145 145 145 0.57 0.57 0.57\n+grey57 145 145 145 0.57 0.57 0.57\n+gray58 148 148 148 0.58 0.58 0.58\n+grey58 148 148 148 0.58 0.58 0.58\n+gray59 150 150 150 0.59 0.59 0.59\n+grey59 150 150 150 0.59 0.59 0.59\n+gray60 153 153 153 0.60 0.60 0.60\n+grey60 153 153 153 0.60 0.60 0.60\n+gray61 156 156 156 0.61 0.61 0.61\n+grey61 156 156 156 0.61 0.61 0.61\n+gray62 158 158 158 0.62 0.62 0.62\n+grey62 158 158 158 0.62 0.62 0.62\n+gray63 161 161 161 0.63 0.63 0.63\n+grey63 161 161 161 0.63 0.63 0.63\n+gray64 163 163 163 0.64 0.64 0.64\n+grey64 163 163 163 0.64 0.64 0.64\n+gray65 166 166 166 0.65 0.65 0.65\n+grey65 166 166 166 0.65 0.65 0.65\n+gray66 168 168 168 0.66 0.66 0.66\n+grey66 168 168 168 0.66 0.66 0.66\n+gray67 171 171 171 0.67 0.67 0.67\n+grey67 171 171 171 0.67 0.67 0.67\n+gray68 173 173 173 0.68 0.68 0.68\n+grey68 173 173 173 0.68 0.68 0.68\n+gray69 176 176 176 0.69 0.69 0.69\n+grey69 176 176 176 0.69 0.69 0.69\n+gray70 179 179 179 0.70 0.70 0.70\n+grey70 179 179 179 0.70 0.70 0.70\n+gray71 181 181 181 0.71 0.71 0.71\n+grey71 181 181 181 0.71 0.71 0.71\n+gray72 184 184 184 0.72 0.72 0.72\n+grey72 184 184 184 0.72 0.72 0.72\n+gray73 186 186 186 0.73 0.73 0.73\n+grey73 186 186 186 0.73 0.73 0.73\n+gray74 189 189 189 0.74 0.74 0.74\n+grey74 189 189 189 0.74 0.74 0.74\n+gray75 191 191 191 0.75 0.75 0.75\n+grey75 191 191 191 0.75 0.75 0.75\n+gray76 194 194 194 0.76 0.76 0.76\n+grey76 194 194 194 0.76 0.76 0.76\n+gray77 196 196 196 0.77 0.77 0.77\n+grey77 196 196 196 0.77 0.77 0.77\n+gray78 199 199 199 0.78 0.78 0.78\n+grey78 199 199 199 0.78 0.78 0.78\n+gray79 201 201 201 0.79 0.79 0.79\n+grey79 201 201 201 0.79 0.79 0.79\n+gray80 204 204 204 0.80 0.80 0.80\n+grey80 204 204 204 0.80 0.80 0.80\n+gray81 207 207 207 0.81 0.81 0.81\n+grey81 207 207 207 0.81 0.81 0.81\n+gray82 209 209 209 0.82 0.82 0.82\n+grey82 209 209 209 0.82 0.82 0.82\n+gray83 212 212 212 0.83 0.83 0.83\n+grey83 212 212 212 0.83 0.83 0.83\n+gray84 214 214 214 0.84 0.84 0.84\n+grey84 214 214 214 0.84 0.84 0.84\n+gray85 217 217 217 0.85 0.85 0.85\n+grey85 217 217 217 0.85 0.85 0.85\n+gray86 219 219 219 0.86 0.86 0.86\n+grey86 219 219 219 0.86 0.86 0.86\n+gray87 222 222 222 0.87 0.87 0.87\n+grey87 222 222 222 0.87 0.87 0.87\n+gray88 224 224 224 0.88 0.88 0.88\n+grey88 224 224 224 0.88 0.88 0.88\n+gray89 227 227 227 0.89 0.89 0.89\n+grey89 227 227 227 0.89 0.89 0.89\n+gray90 229 229 229 0.90 0.90 0.90\n+grey90 229 229 229 0.90 0.90 0.90\n+gray91 232 232 232 0.91 0.91 0.91\n+grey91 232 232 232 0.91 0.91 0.91\n+gray92 235 235 235 0.92 0.92 0.92\n+grey92 235 235 235 0.92 0.92 0.92\n+gray93 237 237 237 0.93 0.93 0.93\n+grey93 237 237 237 0.93 0.93 0.93\n+gray94 240 240 240 0.94 0.94 0.94\n+grey94 240 240 240 0.94 0.94 0.94\n+gray95 242 242 242 0.95 0.95 0.95\n+grey95 242 242 242 0.95 0.95 0.95\n+gray96 245 245 245 0.96 0.96 0.96\n+grey96 245 245 245 0.96 0.96 0.96\n+gray97 247 247 247 0.97 0.97 0.97\n+grey97 247 247 247 0.97 0.97 0.97\n+gray98 250 250 250 0.98 0.98 0.98\n+grey98 250 250 250 0.98 0.98 0.98\n+gray99 252 252 252 0.99 0.99 0.99\n+grey99 252 252 252 0.99 0.99 0.99\n+gray100 255 255 255 1.00 1.00 1.00\n+grey100 255 255 255 1.00 1.00 1.00\n+darkgrey 169 169 169 0.66 0.66 0.66\n+DarkGrey 169 169 169 0.66 0.66 0.66\n+darkgray 169 169 169 0.66 0.66 0.66\n+DarkGray 169 169 169 0.66 0.66 0.66\n+darkblue 0 0 139 0.00 0.00 0.55\n+DarkBlue 0 0 139 0.00 0.00 0.55\n+darkcyan 0 139 139 0.00 0.55 0.55\n+DarkCyan 0 139 139 0.00 0.55 0.55\n+darkmagenta 139 0 139 0.55 0.00 0.55\n+DarkMagenta 139 0 139 0.55 0.00 0.55\n+darkred 139 0 0 0.55 0.00 0.00\n+DarkRed 139 0 0 0.55 0.00 0.00\n+lightgreen 144 238 144 0.56 0.93 0.56\n+LightGreen 144 238 144 0.56 0.93 0.56\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/Math/Cephes.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/Math/Cephes.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,361 @@\n+# This file was automatically generated by SWIG\n+package Math::Cephes;\n+use strict;\n+use warnings;\n+use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS @ISA);\n+\n+require Exporter;\n+*import = \\&Exporter::import;\n+require DynaLoader;\n+@ISA = qw( DynaLoader);\n+package Math::Cephesc;\n+bootstrap Math::Cephes;\n+package Math::Cephes;\n+\n+my @constants = qw($PI $PIO2 $PIO4 $SQRT2 $MACHEP $MAXLOG $MINLOG $MAXNUM\n+\t\t $SQ2OPI $LOGE2 $LOGSQ2 $THPIO4 $TWOOPI $SQRTH $LOG2E );\n+my @trigs = qw(asin acos atan atan2 sin cos tan cot hypot\n+\t tandg cotdg sindg cosdg radian cosm1);\n+my @hypers = qw(acosh asinh atanh sinh cosh tanh);\n+my @explog = qw(log1p expm1 exp exp10 exp2 log log10 log2 expxx);\n+my @cmplx = qw(clog cexp csin ccos ctan ccot casin\n+\t cacos catan cadd csub cmul cdiv cmov cneg cabs csqrt\n+\t csinh ccosh ctanh cpow casinh cacosh catanh new_cmplx);\n+my @utils = qw(ceil floor frexp ldexp fabs\n+\t round sqrt lrand pow powi drand lsqrt fac cbrt);\n+my @bessels = qw(i0 i0e i1 i1e iv j0 j1 jn jv k0 k1 kn yn yv k0e k1e y0 y1);\n+my @dists = qw(bdtr bdtrc bdtri btdtr chdtr chdtrc chdtri\n+\t fdtr fdtrc fdtri gdtr gdtrc nbdtr nbdtrc nbdtri\n+\t ndtr ndtri pdtr pdtrc pdtri stdtr stdtri);\n+my @gammas = qw(gamma igam igamc igami psi fac rgamma lgam);\n+my @betas = qw(beta lbeta incbet incbi lbeta);\n+my @elliptics = qw(ellie ellik ellpe ellpj ellpk);\n+my @hypergeometrics = qw(onef2 threef0 hyp2f1 hyperg hyp2f0);\n+my @misc = qw(zeta zetac airy dawsn fresnl sici shichi expn spence ei\n+ erfc erf struve plancki simpson bernum polylog vecang);\n+my @fract = qw(radd rsub rmul rdiv euclid);\n+\n+%EXPORT_TAGS = (\'constants\' => [@constants],\n+\t\t\'utils\' => [@utils],\n+ \'trigs\' => [@trigs],\n+ \'hypers\' => [@hypers],\n+ \'explog\' => [@explog],\n+ \'cmplx\' => [@cmplx],\n+ \'bessels\' => [@bessels],\n+ \'gammas\' => [@gammas],\n+\t\t\'dists\' => [@dists],\n+ \'betas\' => [@betas],\n+ \'elliptics\' => [@elliptics],\n+\t\t\'hypergeometrics\' => [@hypergeometrics],\n+\t\t\'fract\' => [@fract],\n+ \'misc\' => [@misc],\n+ \'all\' => [@constants, @utils, @trigs, @hypers,\n+\t\t\t @explog, @bessels, @gammas, @betas, @elliptics,\n+\t\t\t @hypergeometrics, @misc, @dists],\n+\t );\n+\n+@EXPORT_OK = (@constants, @utils, @trigs, @hypers,\n+\t @explog, @bessels, @gammas, @betas, @elliptics,\n+\t @hypergeometrics, @misc, @dists, @fract, @cmplx);\n+\n+$VERSION = \'0.5304\';\n+#Math::Cephes->bootstrap($VERSION);\n+#var_Math__Cephes_init();\n+\n+sub simpson {\n+ my ($r, $a, $b, $abs, $rel, $nmax) = @_;\n+ die "Must supply a CODE reference" unless ref($r) eq \'CODE\';\n+ die "Must supply start and end points($a and $b)"\n+ unless (defined $a and defined $b);\n+ $abs ||= 1e-06;\n+ $rel ||= 1e-06;\n+ $nmax ||= 256;\n+ $nmax = 2 if $nmax < 2;\n+ my $sumold = 0;\n+ for (my $n=2; $n<=$nmax; $n++) {\n+ my $count = 0;\n+ my $x = $a;\n+ my $sum = 0;\n+ my $h = ($b - $a) / $n / 8;\n+ my $f = [];\n+ for($count=0; $count <= 8*$n; $count++, $x+=$h) {\n+ $f->[$count] = &$r($x);\n+ }\n+ $sum = Math::Cephes::simpsn_wrap($f, $count-1, $h);\n+ my $test = abs($sum - $sumold);\n+ return $sum if ($test < $abs or abs($test/$sum) < $rel);\n+ $sumold = $sum;\n+ }\n+ warn("Math::Cephes::simpson: Maximum number $nmax of iterations reached");\n+ return undef;\n+}\n+\n+sub bernum {\n+ my $i = shift;\n+ die "Cannot exceed i=30" if (defined $i and $i > 30);\n+ my $num = [split //, 0 x 30 ];\n+ my $den = [split //, 0 x 30 ];\n+ Math::Cephes::bernum_wrap($num, $den);\n+ return defined $i ? (int($num->[$i]), int($den->[$i])) : ($num, $den);\n+}\n+\n+sub expxx {\n+ my $x = shift;\n+ my $n = shift || 1;\n+ return Math::Cephes::expx2($x, $n);\n+}\n+\n+sub vecang {\n+ my ($a, $b) = @_;\n+ die "Must supply array references"\n+ unless (ref($a) eq \'ARRAY\' and ref($b) eq \'ARRAY\');\n+ die "Vectors must be of dimension 3"\n+ unless (scalar @$a'..b':Cephesc::igamc;\n+*igam = *Math::Cephesc::igam;\n+*igami = *Math::Cephesc::igami;\n+*incbet = *Math::Cephesc::incbet;\n+*incbi = *Math::Cephesc::incbi;\n+*iv = *Math::Cephesc::iv;\n+*j0 = *Math::Cephesc::md_j0;\n+*y0 = *Math::Cephesc::md_y0;\n+*j1 = *Math::Cephesc::md_j1;\n+*y1 = *Math::Cephesc::md_y1;\n+*jn = *Math::Cephesc::md_jn;\n+*jv = *Math::Cephesc::jv;\n+*k0 = *Math::Cephesc::k0;\n+*k0e = *Math::Cephesc::k0e;\n+*k1 = *Math::Cephesc::k1;\n+*k1e = *Math::Cephesc::k1e;\n+*kn = *Math::Cephesc::kn;\n+*log = *Math::Cephesc::md_log;\n+*log10 = *Math::Cephesc::md_log10;\n+*log2 = *Math::Cephesc::md_log2;\n+*lrand = *Math::Cephesc::lrand;\n+*lsqrt = *Math::Cephesc::lsqrt;\n+*mtherr = *Math::Cephesc::mtherr;\n+*new_cmplx = \\&Math::Cephesc::new_cmplx;\n+*polevl = *Math::Cephesc::polevl;\n+*p1evl = *Math::Cephesc::p1evl;\n+*nbdtrc = *Math::Cephesc::nbdtrc;\n+*nbdtr = *Math::Cephesc::nbdtr;\n+*nbdtri = *Math::Cephesc::nbdtri;\n+*ndtr = *Math::Cephesc::ndtr;\n+*erfc = *Math::Cephesc::md_erfc;\n+*erf = *Math::Cephesc::md_erf;\n+*ndtri = *Math::Cephesc::ndtri;\n+*pdtrc = *Math::Cephesc::pdtrc;\n+*pdtr = *Math::Cephesc::pdtr;\n+*pdtri = *Math::Cephesc::pdtri;\n+*pow = *Math::Cephesc::md_pow;\n+*powi = *Math::Cephesc::md_powi;\n+*psi = *Math::Cephesc::psi;\n+*rgamma = *Math::Cephesc::rgamma;\n+*round = *Math::Cephesc::md_round;\n+*shichi = *Math::Cephesc::shichi;\n+*sici = *Math::Cephesc::sici;\n+*sin = *Math::Cephesc::md_sin;\n+*cos = *Math::Cephesc::md_cos;\n+*radian = *Math::Cephesc::radian;\n+*sindg = *Math::Cephesc::md_sindg;\n+*cosdg = *Math::Cephesc::cosdg;\n+*sinh = *Math::Cephesc::md_sinh;\n+*spence = *Math::Cephesc::spence;\n+*sqrt = *Math::Cephesc::sqrt;\n+*stdtr = *Math::Cephesc::stdtr;\n+*stdtri = *Math::Cephesc::stdtri;\n+*onef2 = *Math::Cephesc::onef2;\n+*threef0 = *Math::Cephesc::threef0;\n+*struve = *Math::Cephesc::struve;\n+*tan = *Math::Cephesc::md_tan;\n+*cot = *Math::Cephesc::cot;\n+*tandg = *Math::Cephesc::tandg;\n+*cotdg = *Math::Cephesc::cotdg;\n+*tanh = *Math::Cephesc::md_tanh;\n+*log1p = *Math::Cephesc::md_log1p;\n+*expm1 = *Math::Cephesc::expm1;\n+*cosm1 = *Math::Cephesc::cosm1;\n+*yn = *Math::Cephesc::md_yn;\n+*yv = *Math::Cephesc::yv;\n+*zeta = *Math::Cephesc::zeta;\n+*zetac = *Math::Cephesc::zetac;\n+*drand = *Math::Cephesc::drand;\n+*plancki = *Math::Cephesc::plancki;\n+*polini = *Math::Cephesc::polini;\n+*polmul = *Math::Cephesc::polmul;\n+*poldiv = *Math::Cephesc::poldiv;\n+*poladd = *Math::Cephesc::poladd;\n+*polsub = *Math::Cephesc::polsub;\n+*polsbt = *Math::Cephesc::polsbt;\n+*poleva = *Math::Cephesc::poleva;\n+*polatn = *Math::Cephesc::polatn;\n+*polsqt = *Math::Cephesc::polsqt;\n+*polsin = *Math::Cephesc::polsin;\n+*polcos = *Math::Cephesc::polcos;\n+*polrt_wrap = *Math::Cephesc::polrt_wrap;\n+*cpmul_wrap = *Math::Cephesc::cpmul_wrap;\n+*fpolini = *Math::Cephesc::fpolini;\n+*fpolmul_wrap = *Math::Cephesc::fpolmul_wrap;\n+*fpoldiv_wrap = *Math::Cephesc::fpoldiv_wrap;\n+*fpoladd_wrap = *Math::Cephesc::fpoladd_wrap;\n+*fpolsub_wrap = *Math::Cephesc::fpolsub_wrap;\n+*fpolsbt_wrap = *Math::Cephesc::fpolsbt_wrap;\n+*fpoleva_wrap = *Math::Cephesc::fpoleva_wrap;\n+*bernum_wrap = *Math::Cephesc::bernum_wrap;\n+*simpsn_wrap = *Math::Cephesc::simpsn_wrap;\n+*minv = *Math::Cephesc::minv;\n+*mtransp = *Math::Cephesc::mtransp;\n+*eigens = *Math::Cephesc::eigens;\n+*simq = *Math::Cephesc::simq;\n+*polylog = *Math::Cephesc::polylog;\n+*arcdot = *Math::Cephesc::arcdot;\n+*expx2 = *Math::Cephesc::expx2;\n+\n+\n+# ------- VARIABLE STUBS --------\n+\n+package Math::Cephes;\n+\n+*MACHEP = *Math::Cephesc::MACHEP;\n+*MAXLOG = *Math::Cephesc::MAXLOG;\n+*MINLOG = *Math::Cephesc::MINLOG;\n+*MAXNUM = *Math::Cephesc::MAXNUM;\n+*PI = *Math::Cephesc::PI;\n+*PIO2 = *Math::Cephesc::PIO2;\n+*PIO4 = *Math::Cephesc::PIO4;\n+*SQRT2 = *Math::Cephesc::SQRT2;\n+*SQRTH = *Math::Cephesc::SQRTH;\n+*LOG2E = *Math::Cephesc::LOG2E;\n+*SQ2OPI = *Math::Cephesc::SQ2OPI;\n+*LOGE2 = *Math::Cephesc::LOGE2;\n+*LOGSQ2 = *Math::Cephesc::LOGSQ2;\n+*THPIO4 = *Math::Cephesc::THPIO4;\n+*TWOOPI = *Math::Cephesc::TWOOPI;\n+\n+require Math::Cephes::Complex;\n+\n+1;\n+\n+__END__\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/Math/Cephes.pod --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/Math/Cephes.pod Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,4787 @@\n+=head1 NAME\n+\n+Math::Cephes - perl interface to the cephes math library\n+\n+=head1 SYNOPSIS\n+\n+ use Math::Cephes qw(:all);\n+\n+=head1 DESCRIPTION\n+\n+ This module provides an interface to over 150 functions of the\n+ cephes math library of Stephen Moshier. No functions are exported\n+ by default, but rather must be imported explicitly, as in\n+\n+ use Math::Cephes qw(sin cos);\n+\n+ There are a number of export tags defined which allow\n+ importing groups of functions:\n+\n+=over 4\n+\n+=item use Math::Cephes qw(:constants);\n+\n+ imports the variables\n+\n+ $PI : 3.14159265358979323846 # pi\n+ $PIO2 : 1.57079632679489661923 # pi/2\n+ $PIO4 : 0.785398163397448309616 # pi/4\n+ $SQRT2 : 1.41421356237309504880 # sqrt(2)\n+ $SQRTH : 0.707106781186547524401 # sqrt(2)/2\n+ $LOG2E : 1.4426950408889634073599 # 1/log(2)\n+ $SQ2OPI : 0.79788456080286535587989 # sqrt( 2/pi )\n+ $LOGE2 : 0.693147180559945309417 # log(2)\n+ $LOGSQ2 : 0.346573590279972654709 # log(2)/2\n+ $THPIO4 : 2.35619449019234492885 # 3*pi/4\n+ $TWOOPI : 0.636619772367581343075535 # 2/pi\n+\n+ As well, there are 4 machine-specific numbers available:\n+\n+ $MACHEP : machine roundoff error\n+ $MAXLOG : maximum log on the machine\n+ $MINLOG : minimum log on the machine\n+ $MAXNUM : largest number represented\n+\n+=item use Math::Cephes qw(:trigs);\n+\n+ imports\n+\n+ acos: Inverse circular cosine\n+ asin: Inverse circular sine\n+ atan: Inverse circular tangent (arctangent)\n+ atan2: Quadrant correct inverse circular tangent\n+ cos: Circular cosine\n+ cosdg: Circular cosine of angle in degrees\n+ cot: Circular cotangent\n+ cotdg: Circular cotangent of argument in degrees\n+ hypot: hypotenuse associated with the sides of a right triangle\n+ radian: Degrees, minutes, seconds to radians\n+ sin: Circular sine\n+ sindg: Circular sine of angle in degrees\n+ tan: Circular tangent\n+ tandg: Circular tangent of argument in degrees\n+ cosm1: Relative error approximations for function arguments near unity\n+\n+=item use Math::Cephes qw(:hypers);\n+\n+ imports\n+\n+ acosh: Inverse hyperbolic cosine\n+ asinh: Inverse hyperbolic sine\n+ atanh: Inverse hyperbolic tangent\n+ cosh: Hyperbolic cosine\n+ sinh: Hyperbolic sine\n+ tanh: Hyperbolic tangent\n+\n+=item use Math::Cephes qw(:explog);\n+\n+ imports\n+\n+ exp: Exponential function\n+ expxx: exp(x*x)\n+ exp10: Base 10 exponential function (Common antilogarithm)\n+ exp2: Base 2 exponential function\n+ log: Natural logarithm\n+ log10: Common logarithm\n+ log2: Base 2 logarithm\n+ log1p,expm1: Relative error approximations for function arguments near unity.\n+\n+=item use Math::Cephes qw(:cmplx);\n+\n+ imports\n+\n+ new_cmplx: create a new complex number object\n+ cabs: Complex absolute value\n+ cacos: Complex circular arc cosine\n+ cacosh: Complex inverse hyperbolic cosine\n+ casin: Complex circular arc sine\n+ casinh: Complex inverse hyperbolic sine\n+ catan: Complex circular arc tangent\n+ catanh: Complex inverse hyperbolic tangent\n+ ccos: Complex circular cosine\n+ ccosh: Complex hyperbolic cosine\n+ ccot: Complex circular cotangent\n+ cexp: Complex exponential function\n+ clog: Complex natural logarithm\n+ cadd: add two complex numbers\n+ csub: subtract two complex numbers\n+ cmul: multiply two complex numbers\n+ cdiv: divide two complex numbers\n+ cmov: copy one complex number to another\n+ cneg: negate a complex number\n+ cpow: Complex power function\n+ csin: Complex circular sine\n+ csinh: Complex hyperbolic sine\n+ csqrt: Complex square root\n+ ctan: Complex circular tangent\n+ ctanh: Complex hyperbolic tangent\n+\n+=item use Math::Cephes qw(:utils);\n+\n+ imports\n+\n+ cbrt: Cube root\n+ ceil: ceil\n+ drand: Pseudorandom number generator\n+ fabs: Absolute value\n+ fac: Factorial function\n+ floor: floor\n+ frexp: frexp\n+ ldexp: multiplies x by 2**n.\n+ lrand: Pseudorandom number generator\n+ lsqrt: Integer square root\n+ pow: Power function\n+ '..b' when y > 1:\n+ arithmetic domain # trials peak rms\n+ DEC 0, 30 2200 2.9e-16 5.3e-17\n+ IEEE 0, 30 30000 3.4e-15 4.3e-16\n+\n+ ERROR MESSAGES:\n+\n+ message condition value returned\n+ yn singularity x = 0 MAXNUM\n+ yn overflow MAXNUM\n+\n+ Spot checked against tables for x, n between 0 and 100.\n+\n+=item I<zeta>: Riemann zeta function of two arguments\n+\n+ SYNOPSIS:\n+\n+ # double x, q, y, zeta();\n+\n+ $y = zeta( $x, $q );\n+\n+ DESCRIPTION:\n+\n+ inf.\n+ - -x\n+ zeta(x,q) = > (k+q)\n+ -\n+ k=0\n+\n+ where x > 1 and q is not a negative integer or zero.\n+ The Euler-Maclaurin summation formula is used to obtain\n+ the expansion\n+\n+ n\n+ - -x\n+ zeta(x,q) = > (k+q)\n+ -\n+ k=1\n+\n+ 1-x inf. B x(x+1)...(x+2j)\n+ (n+q) 1 - 2j\n+ + --------- - ------- + > --------------------\n+ x-1 x - x+2j+1\n+ 2(n+q) j=1 (2j)! (n+q)\n+\n+ where the B2j are Bernoulli numbers. Note that (see zetac.c)\n+ zeta(x,1) = zetac(x) + 1.\n+\n+ ACCURACY:\n+\n+ REFERENCE:\n+\n+ Gradshteyn, I. S., and I. M. Ryzhik, Tables of Integrals,\n+ Series, and Products, p. 1073; Academic Press, 1980.\n+\n+=item I<zetac>: Riemann zeta function\n+\n+ SYNOPSIS:\n+\n+ # double x, y, zetac();\n+\n+ $y = zetac( $x );\n+\n+ DESCRIPTION:\n+\n+ inf.\n+ - -x\n+ zetac(x) = > k , x > 1,\n+ -\n+ k=2\n+\n+ is related to the Riemann zeta function by\n+\n+\tRiemann zeta(x) = zetac(x) + 1.\n+\n+ Extension of the function definition for x < 1 is implemented.\n+ Zero is returned for x > log2(MAXNUM).\n+\n+ An overflow error may occur for large negative x, due to the\n+ gamma function in the reflection formula.\n+\n+ ACCURACY:\n+\n+ Tabulated values have full machine accuracy.\n+\n+ Relative error:\n+ arithmetic domain # trials peak rms\n+ IEEE 1,50 10000 9.8e-16\t 1.3e-16\n+ DEC 1,50 2000 1.1e-16 1.9e-17\n+\n+=back\n+\n+=head1 TODO\n+\n+=over 4\n+\n+=item * Include more operating systems when generating mconf.h.\n+\n+=back\n+\n+=head1 MAINTAINER\n+\n+Shlomi Fish, L<http://www.shlomifish.org/>,\n+L<https://metacpan.org/author/SHLOMIF> .\n+\n+=head1 BUGS\n+\n+Please report any on the rt.cpan.org interface:\n+L<https://rt.cpan.org/Dist/Display.html?Queue=Math-Cephes>\n+\n+=head1 VERSION CONTROL\n+\n+This distribution is maintained in this GitHub repository:\n+\n+L<https://github.com/shlomif/Math-Cephes>.\n+\n+=head1 SEE ALSO\n+\n+For interfaces to programs which can do symbolic manipulation,\n+see L<PDL>, L<Math::Pari>, and L<Math::ematica>.\n+For a command line interface to the routines of I<Math::Cephes>,\n+see the included C<pmath> script. For a\n+different interface to the fraction and complex number routines,\n+see L<Math::Cephes::Fraction> and L<Math::Cephes::Complex>.\n+For an interface to some polynomial routines, see\n+L<Math::Cephes::Polynomial>, and for some matrix routines,\n+see L<Math::Cephes::Matrix>.\n+\n+=head1 COPYRIGHT\n+\n+The C code for the Cephes Math Library is\n+Copyright 1984, 1987, 1989, 2002 by Stephen L. Moshier,\n+and is available at L<http://www.netlib.org/cephes/>.\n+Direct inquiries to 30 Frost Street, Cambridge, MA 02140.\n+\n+The file arrays.c included here to handle passing arrays\n+into and out of C routines comes from the PGPLOT module\n+of Karl Glazebrook <kgb@zzoepp.aao.gov.au>.\n+\n+The perl interface is copyright 2000, 2002 by Randy Kobes.\n+This library is free software; you can redistribute it and/or\n+modify it under the same terms as Perl itself.\n+\n+Perl interface maintained by Shlomi Fish starting from 2012. All\n+explicit or implicit copyrights on the changes are disclaimed by him.\n+\n+=cut\n+\n+\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/Math/Cephes/Complex.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/Math/Cephes/Complex.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,693 @@\n+############# Class : cmplx ##############\n+package Math::Cephes::Complex;\n+use strict;\n+use warnings;\n+use vars qw(%OWNER %ITERATORS @ISA \n+\t @EXPORT_OK %EXPORT_TAGS $VERSION);\n+require Math::Cephes;\n+\n+require Exporter;\n+*import = \\&Exporter::import;\n+@ISA = qw( Math::Cephes );\n+#my @cmplx = qw(clog cexp csin ccos ctan ccot casin cmplx\n+#\t cacos catan cadd csub cmul cdiv cmov cneg cabs csqrt\n+#\t csinh ccosh ctanh cpow casinh cacosh catanh);\n+@EXPORT_OK = qw(cmplx);\n+#%EXPORT_TAGS = (\'cmplx\' => [qw(cmplx)]);\n+\n+%OWNER = ();\n+%ITERATORS = ();\n+$VERSION = \'0.5304\';\n+\n+*swig_r_get = *Math::Cephesc::cmplx_r_get;\n+*swig_r_set = *Math::Cephesc::cmplx_r_set;\n+*swig_i_get = *Math::Cephesc::cmplx_i_get;\n+*swig_i_set = *Math::Cephesc::cmplx_i_set;\n+\n+sub new {\n+ my $pkg = shift;\n+ my $self = Math::Cephesc::new_cmplx(@_);\n+ bless $self, $pkg if defined($self); \n+}\n+\n+sub DESTROY {\n+ return unless $_[0]->isa(\'HASH\');\n+ my $self = tied(%{$_[0]});\n+ return unless defined $self;\n+ delete $ITERATORS{$self};\n+ if (exists $OWNER{$self}) {\n+ Math::Cephesc::delete_cmplx($self);\n+ delete $OWNER{$self};\n+ }\n+}\n+\n+sub DISOWN {\n+ my $self = shift;\n+ my $ptr = tied(%$self);\n+ delete $OWNER{$ptr};\n+}\n+\n+sub ACQUIRE {\n+ my $self = shift;\n+ my $ptr = tied(%$self);\n+ $OWNER{$ptr} = 1;\n+}\n+\n+\n+sub r {\n+ my ($self, $value) = @_;\n+ return $self->{r} unless (defined $value);\n+ $self->{r} = $value;\n+ return $value;\n+}\n+\n+sub i {\n+ my ($self, $value) = @_;\n+ return $self->{i} unless (defined $value);\n+ $self->{i} = $value;\n+ return $value;\n+}\n+\n+sub cmplx {\n+ return Math::Cephes::Complex->new(@_);\n+}\n+\n+sub as_string {\n+ my $z = shift;\n+ my $string;\n+ my $re = $z->{r};\n+ my $im = $z->{i};\n+ if ($im == 0) {\n+ $string = "$re";\n+ }\n+ else {\n+ $string = sprintf "%f %s %f %s", $re, \n+ (int( $im / abs($im) ) == -1) ? \'-\' : \'+\' , \n+\t($im < 0) ? abs($im) : $im, \'i\';\n+ }\n+ return $string;\n+}\n+\n+\n+sub cadd {\n+ my ($z1, $z2) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::cadd($z1, $z2, $z);\n+ return $z;\n+}\n+\n+sub csub {\n+ my ($z1, $z2) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::csub($z2, $z1, $z);\n+ return $z;\n+}\n+\n+sub cmul {\n+ my ($z1, $z2) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::cmul($z1, $z2, $z);\n+ return $z;\n+}\n+\n+sub cdiv {\n+ my ($z1, $z2) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::cdiv($z2, $z1, $z);\n+ return $z;\n+}\n+\n+sub cpow {\n+ my ($z1, $z2) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::cpow($z1, $z2, $z);\n+ return $z;\n+}\n+\n+sub clog {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::clog($z1, $z);\n+ return $z;\n+}\n+sub cexp {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::cexp($z1, $z);\n+ return $z;\n+}\n+sub csin {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::csin($z1, $z);\n+ return $z;\n+}\n+sub ccos {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::ccos($z1, $z);\n+ return $z;\n+}\n+sub ctan {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::ctan($z1, $z);\n+ return $z;\n+}\n+sub ccot {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::ccot($z1, $z);\n+ return $z;\n+}\n+sub casin {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::casin($z1, $z);\n+ return $z;\n+}\n+sub cacos {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::cacos($z1, $z);\n+ return $z;\n+}\n+sub catan {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::catan($z1, $z);\n+ return $z;\n+}\n+sub cmov {\n+ my ($z1) = @_;\n+ my $z = Math::Cephes::Complex->new();\n+ Math::Cephes::cmov($z1, $z);\n+ return $z;\n+}\n+sub cneg {\n+ my ($z1) = @_;\n+ Math::Cephes::cneg($z1);\n+ return $z1;\n+}\n+sub csqrt {\n+ my ($z1) = @_;\n+ '..b"lic tangent\n+\n+ SYNOPSIS:\n+\n+ # void ctanh();\n+ # cmplx z, w;\n+\n+ $z = cmplx(2, 3); # $z = 2 + 3 i\n+ $w = $z->ctanh;\n+ print $w->{r}, ' ', $w->{i}; # prints real and imaginary parts of $w \n+ print $w->as_string; # prints $w as Re($w) + i Im($w)\n+\n+ DESCRIPTION:\n+\n+ tanh z = (sinh 2x + i sin 2y) / (cosh 2x + cos 2y) .\n+\n+=item I<catanh>: Complex inverse hyperbolic tangent\n+\n+ SYNOPSIS:\n+ \n+ # void catanh();\n+ # cmplx z, w;\n+ \n+ $z = cmplx(2, 3); # $z = 2 + 3 i\n+ $w = $z->catanh;\n+ print $w->{r}, ' ', $w->{i}; # prints real and imaginary parts of $w \n+ print $w->as_string; # prints $w as Re($w) + i Im($w)\n+ \n+ DESCRIPTION:\n+ \n+ Inverse tanh, equal to -i catan (iz);\n+\n+=item I<cpow>: Complex power function \n+\n+ SYNOPSIS:\n+ \n+ # void cpow();\n+ # cmplx a, z, w;\n+ \n+ $a = cmplx(5, 6); # $z = 5 + 6 i\n+ $z = cmplx(2, 3); # $z = 2 + 3 i\n+ $w = $a->cpow($z);\n+ print $w->{r}, ' ', $w->{i}; # prints real and imaginary parts of $w \n+ print $w->as_string; # prints $w as Re($w) + i Im($w)\n+ \n+ DESCRIPTION:\n+ \n+ Raises complex A to the complex Zth power.\n+ Definition is per AMS55 # 4.2.8,\n+ analytically equivalent to cpow(a,z) = cexp(z clog(a)). \n+\n+=item I<cmplx>: Complex number arithmetic\n+\n+ SYNOPSIS:\n+\n+ # typedef struct {\n+ # double r; real part\n+ # double i; imaginary part\n+ # }cmplx;\n+\n+ # cmplx *a, *b, *c;\n+\n+ $a = cmplx(3, 5); # $a = 3 + 5 i\n+ $b = cmplx(2, 3); # $b = 2 + 3 i\n+\n+ $c = $a->cadd( $b ); # c = a + b\n+ $c = $a->csub( $b ); # c = a - b\n+ $c = $a->cmul( $b ); # c = a * b\n+ $c = $a->cdiv( $b ); # c = a / b\n+ $c = $a->cneg; # c = -a\n+ $c = $a->cmov; # c = a\n+\n+ print $c->{r}, ' ', $c->{i}; # prints real and imaginary parts of $c\n+ print $c->as_string; # prints $c as Re($c) + i Im($c)\n+\n+\n+ DESCRIPTION:\n+\n+ Addition:\n+ c.r = b.r + a.r\n+ c.i = b.i + a.i\n+\n+ Subtraction:\n+ c.r = b.r - a.r\n+ c.i = b.i - a.i\n+\n+ Multiplication:\n+ c.r = b.r * a.r - b.i * a.i\n+ c.i = b.r * a.i + b.i * a.r\n+\n+ Division:\n+ d = a.r * a.r + a.i * a.i\n+ c.r = (b.r * a.r + b.i * a.i)/d\n+ c.i = (b.i * a.r - b.r * a.i)/d\n+\n+=item I<cabs>: Complex absolute value\n+\n+ SYNOPSIS:\n+\n+ # double a, cabs();\n+ # cmplx z;\n+\n+ $z = cmplx(2, 3); # $z = 2 + 3 i\n+ $a = cabs( $z );\n+\n+ DESCRIPTION:\n+\n+ If z = x + iy\n+\n+ then\n+\n+ a = sqrt( x**2 + y**2 ).\n+ \n+ Overflow and underflow are avoided by testing the magnitudes\n+ of x and y before squaring. If either is outside half of\n+ the floating point full scale range, both are rescaled.\n+\n+=item I<csqrt>: Complex square root\n+\n+ SYNOPSIS:\n+\n+ # void csqrt();\n+ # cmplx z, w;\n+\n+ $z = cmplx(2, 3); # $z = 2 + 3 i\n+ $w = $z->csqrt;\n+ print $w->{r}, ' ', $w->{i}; # prints real and imaginary parts of $w\n+ print $w->as_string; # prints $w as Re($w) + i Im($w)\n+\n+ DESCRIPTION:\n+\n+ If z = x + iy, r = |z|, then\n+\n+ 1/2\n+ Im w = [ (r - x)/2 ] ,\n+\n+ Re w = y / 2 Im w.\n+\n+ Note that -w is also a square root of z. The root chosen\n+ is always in the upper half plane.\n+\n+ Because of the potential for cancellation error in r - x,\n+ the result is sharpened by doing a Heron iteration\n+ (see sqrt.c) in complex arithmetic.\n+\n+=back\n+\n+=head1 BUGS\n+\n+ Please report any to Randy Kobes <randy@theoryx5.uwinnipeg.ca>\n+\n+=head1 SEE ALSO\n+\n+For the basic interface to the cephes complex number routines, see\n+L<Math::Cephes>. See also L<Math::Complex> \n+for a more extensive interface to complex number routines.\n+\n+=head1 COPYRIGHT\n+\n+The C code for the Cephes Math Library is\n+Copyright 1984, 1987, 1989, 2002 by Stephen L. Moshier, \n+and is available at http://www.netlib.org/cephes/.\n+Direct inquiries to 30 Frost Street, Cambridge, MA 02140.\n+\n+The perl interface is copyright 2000, 2002 by Randy Kobes.\n+This library is free software; you can redistribute it and/or\n+modify it under the same terms as Perl itself.\n+\n+=cut\n" |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/Math/Cephes/Fraction.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/Math/Cephes/Fraction.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,297 @@ +############# Class : fract ############## +package Math::Cephes::Fraction; +use strict; +use warnings; +use vars qw(%OWNER @ISA %ITERATORS + @EXPORT_OK %EXPORT_TAGS $VERSION); + +require Exporter; +*import = \&Exporter::import; +#my @fract = qw(radd rsub rmul rdiv euclid fract mixed_fract); +my @fract = qw(euclid fract mixed_fract); +@EXPORT_OK = (@fract); +%EXPORT_TAGS = ('fract' => [@fract]); + +$VERSION = '0.5304'; +#use Math::Cephes qw(new_fract euclid); +require Math::Cephes; +@ISA = qw( Math::Cephes ); + +%OWNER = (); +%ITERATORS = (); + +*swig_n_get = *Math::Cephesc::fract_n_get; +*swig_n_set = *Math::Cephesc::fract_n_set; +*swig_d_get = *Math::Cephesc::fract_d_get; +*swig_d_set = *Math::Cephesc::fract_d_set; +sub new { + my $pkg = shift; + my $self = Math::Cephesc::new_fract(@_); + bless $self, $pkg if defined($self); +} + +sub DESTROY { + return unless $_[0]->isa('HASH'); + my $self = tied(%{$_[0]}); + return unless defined $self; + delete $ITERATORS{$self}; + if (exists $OWNER{$self}) { + Math::Cephesc::delete_fract($self); + delete $OWNER{$self}; + } +} + +sub DISOWN { + my $self = shift; + my $ptr = tied(%$self); + delete $OWNER{$ptr}; +} + +sub ACQUIRE { + my $self = shift; + my $ptr = tied(%$self); + $OWNER{$ptr} = 1; +} + + +sub fract { + return Math::Cephes::Fraction->new(@_); +} + +sub n { + my ($self, $value) = @_; + return $self->{n} unless $value; + $self->{n} = $value; + return $value; +} + +sub d { + my ($self, $value) = @_; + return $self->{d} unless $value; + $self->{d} = $value; + return $value; +} + +sub euclid { + return Math::Cephes::euclid($_[0], $_[1]); +} + + +sub mixed_fract { + my $f = shift; + my $nin = int($f->{n}); + my $din = int($f->{d}); + my $gcd; + if ($din < 0) { + $din *= -1; + $nin *= -1; + } + if (abs($nin) < abs($din)) { + if ( $nin == 0 ) { + return (0, 0, 0); + } + else { + ($gcd, $nin, $din) = euclid($nin, $din); + return (0, $nin, $din); + } + } + else { + my $n = abs($nin) % $din; + my $w = int($nin / $din); + if ($n == 0) { + return ($w, 0, 1); + } + else { + ($gcd, $n, $din) = euclid($n, $din); + return ($w, $n, $din); + } + } +} + +sub as_string { + my $f = shift; + my ($gcd, $string); + my $num = int($f->{n}); + my $den = int($f->{d}); + if ( abs($num % $den) == 0) { + my $w = $num / $den; + $string = "$w"; + } + elsif ($num == 0) { + $string = '0'; + } + else { + if ($den < 0) { + $num *= -1; + $den *= -1; + } + ($gcd, $num, $den) = euclid($num, $den); + $string = "$num/$den"; + } + return $string; +} + +sub as_mixed_string { + my $f = shift; + my ($gcd, $string); + my $num = int($f->{n}); + my $den = int($f->{d}); + if ($den < 0) { + $den *= -1; + $num *= -1; + } + if (abs($num) < abs($den)) { + if ( $num == 0 ) { + $string = '0'; + } + else { + ($gcd, $num, $den) = euclid($num, $den); + $string = "$num/$den"; + } + } + else { + my $n = abs($num) % $den; + my $w = int($num / $den); + if ($n == 0) { + $string = "$w"; + } + else { + ($gcd, $num, $den) = euclid($num, $den); + $string = "$w $n/$den"; + } + } + return $string; +} + + +sub radd { + my ($f1, $f2) = @_; + my $f = Math::Cephes::Fraction->new(); + Math::Cephes::radd($f1, $f2, $f); + return $f; +} + +sub rsub { + my ($f1, $f2) = @_; + my $f = Math::Cephes::Fraction->new(); + Math::Cephes::rsub($f2, $f1, $f); + return $f; +} + +sub rmul { + my ($f1, $f2) = @_; + my $f = Math::Cephes::Fraction->new(); + Math::Cephes::rmul($f1, $f2, $f); + return $f; +} + +sub rdiv { + my ($f1, $f2) = @_; + my $f = Math::Cephes::Fraction->new(); + Math::Cephes::rdiv($f2, $f1, $f); + return $f; +} + +1; + +__END__ + +=head1 NAME + + Math::Cephes::Fraction - Perl interface to the cephes math fraction routines + +=head1 SYNOPSIS + + use Math::Cephes::Fraction qw(fract); + my $f1 = fract(2,3); # $f1 = 2/3 + my $f2 = fract(3,4); # $f2 = 3/4 + my $f3 = $f1->radd($f2); # $f3 = $f1 + $f2 + +=head1 DESCRIPTION + +This module is a layer on top of the basic routines in the +cephes math library to handle fractions. A fraction object +is created via any of the following syntaxes: + + my $f = Math::Cephes::Fraction->new(3, 2); # $f = 3/2 + my $g = new Math::Cephes::Fraction(5, 3); # $g = 5/3 + my $h = fract(7, 5); # $h = 7/5 + +the last one being available by importing I<:fract>. If no arguments +are specified, as in + + my $h = fract(); + +then the defaults $z = 0/1 are assumed. The numerator and +denominator of a fraction are represented respectively by + + $f->{n}; $f->{d} + +or, as methods, + + $f->n; $f->d; + +and can be set according to + + $f->{n} = 4; $f->{d} = 9; + +or, again, as methods, + + $f->n(4) ; $f->(d) = 9; + +The fraction can be printed out as + + print $f->as_string; + +or as a mixed fraction as + + print $f->as_mixed_string; + +These routines reduce the fraction to its basic form before printing. +This uses the I<euclid> routine which finds the greatest common +divisor of two numbers, as follows: + + ($gcd, $m_reduced, $n_reduced) = euclid($m, $n); + +which returns the greatest common divisor of $m and $n, as well as +the result of reducing $m and $n by $gcd + +A summary of the basic routines is as follows. + + $x = fract(3, 4); # x = 3 / 4 + $y = fract(2, 3); # y = 2 / 3 + $z = $x->radd( $y ); # z = x + y + $z = $x->rsub( $y ); # z = x - y + $z = $x->rmul( $y ); # z = x * y + $z = $x->rdiv( $y ); # z = x / y + print $z->{n}, ' ', $z->{d}; # prints numerator and denominator of $z + print $z->as_string; # prints the fraction $z + print $z->as_mixed_string; # converts $z to a mixed fraction, then prints it + + $m = 60; + $n = 144; + ($gcd, $m_reduced, $n_reduced) = euclid($m, $n); + +=head1 BUGS + +Please report any to Randy Kobes <randy@theoryx5.uwinnipeg.ca> + +=head1 SEE ALSO + +For the basic interface to the cephes fraction routines, see +L<Math::Cephes>. See also L<Math::Fraction> +for a more extensive interface to fraction routines. + +=head1 COPYRIGHT + +The C code for the Cephes Math Library is +Copyright 1984, 1987, 1989, 2002 by Stephen L. Moshier, +and is available at http://www.netlib.org/cephes/. +Direct inquiries to 30 Frost Street, Cambridge, MA 02140. + +The perl interface is copyright 2000, 2002 by Randy Kobes. +This library is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut + |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/Math/Cephes/Matrix.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/Math/Cephes/Matrix.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,447 @@\n+package Math::Cephes::Matrix;\n+use strict;\n+use warnings;\n+use vars qw(@EXPORT_OK $VERSION);\n+\n+require Exporter;\n+*import = \\&Exporter::import;\n+@EXPORT_OK = qw(mat);\n+\n+$VERSION = \'0.5304\';\n+\n+require Math::Cephes;\n+\n+sub new {\n+ my ($caller, $arr) = @_;\n+ my $refer = ref($caller);\n+ my $class = $refer || $caller;\n+ die "Must supply data for the matrix" \n+ unless ($refer or $arr);\n+ unless ($refer) {\n+ die "Please supply an array of arrays for the matrix data"\n+ unless (ref($arr) eq \'ARRAY\' and ref($arr->[0]) eq \'ARRAY\');\n+ my $n = scalar @$arr;\n+ my $m = scalar @{$arr->[0]};\n+ die "Matrices must be square" unless $m == $n;\n+ }\n+ my ($coef, $n);\n+ if ($refer) {\n+ $n = $caller->{n};\n+ my $cdata = $caller->{coef};\n+ foreach (@$cdata) {\n+ push @$coef, [ @$_];\n+ }\n+ }\n+ else {\n+ ($coef, $n) = ($arr, scalar @$arr);\n+ }\n+ bless { coef => $coef,\n+\t n => $n,\n+\t}, $class;\n+}\n+\n+sub mat {\n+ return Math::Cephes::Matrix->new(shift);\n+}\n+\n+sub mat_to_vec {\n+ my $self = shift;\n+ my ($M, $n) = ($self->{coef}, $self->{n});\n+ my $A = [];\n+ for (my $i=0; $i<$n; $i++) {\n+ for (my $j=0; $j<$n; $j++) {\n+ my $index = $i*$n+$j;\n+ $A->[$index] = $M->[$i]->[$j];\n+ }\n+ }\n+ return $A;\n+}\n+\n+sub vec_to_mat {\n+ my ($self, $X) = @_;\n+ my $n = $self->{n};\n+ my $I = [];\n+ for (my $i=0; $i<$n; $i++) {\n+ for (my $j=0; $j<$n; $j++) {\n+ my $index = $i*$n+$j;\n+ $I->[$i]->[$j] = $X->[$index];\n+ }\n+ }\n+ return $I;\n+}\n+\n+sub check {\n+ my ($self, $B) = @_;\n+ my $na = $self->{n};\n+ my $ref = ref($B);\n+ if ($ref eq \'Math::Cephes::Matrix\') {\n+ die "Matrices must be of the same size"\n+ unless $B->{n} == $na;\n+ return $B->coef;\n+ }\n+ elsif ($ref eq \'ARRAY\') {\n+ my $nb = scalar @$B;\n+ my $ref0 = ref($B->[0]);\n+ if ($ref0 eq \'ARRAY\') {\n+ my $m = scalar @{$B->[0]};\n+ die "Can only use square matrices" unless $m == $nb;\n+ die "Can only use matrices of the same size"\n+\tunless $na == $nb;\n+ return $B;\n+ }\n+ elsif (not $ref0) {\n+ die "Can only use vectors of the same size" unless $nb == $na;\n+ return $B;\n+ }\n+ else {\n+ die "Unknown reference \'$ref0\' for data";\n+ }\n+ }\n+ else {\n+ die "Unknown reference \'$ref\' for data"; \n+ }\n+}\n+\n+sub coef {\n+ return $_[0]->{coef};\n+}\n+\n+sub clr {\n+ my $self = shift;\n+ my $what = shift || 0;\n+ my $n = $self->{n};\n+ my $B = [];\n+ for (my $i=0; $i<$n; $i++) {\n+ for (my $j=0; $j<$n; $j++) {\n+ $B->[$i]->[$j] = $what;\n+ }\n+ }\n+ $self->{coef} = $B;\n+}\n+\n+sub simq {\n+ my ($self, $B) = @_;\n+ $B = $self->check($B);\n+ my ($M, $n) = ($self->{coef}, $self->{n});\n+ die "Must supply an array reference for B" unless ref($B) eq \'ARRAY\';\n+ my $A = $self->mat_to_vec();\n+ my $X = [split //, 0 x $n];\n+ my $IPS = [split //, 0 x $n];\n+ my $flag = 0;\n+ my $ret = Math::Cephes::simq($A, $B, $X, $n, $flag, $IPS);\n+ return $ret ? undef : $X;\n+}\n+\n+\n+sub inv {\n+ my $self = shift;\n+ my ($M, $n) = ($self->{coef}, $self->{n});\n+ my $A = $self->mat_to_vec();\n+ my $X = [split //, 0 x ($n*$n)];\n+ my $B = [split //, 0 x $n];\n+ my $IPS = [split //, 0 x $n];\n+ my $flag = 0;\n+ my $ret = Math::Cephes::minv($A, $X, $n, $B, $IPS);\n+ return undef if $ret;\n+ my $I = $self->vec_to_mat($X);\n+ return Math::Cephes::Matrix->new($I);\n+}\n+\n+sub transp {\n+ my $self = shift;\n+ my ($M, $n) = ($self->{coef}, $self->{n});\n+ my $A = $self->mat_to_vec();\n+ my $T = [split //, 0 x ($n*$n)];\n+ Math::Cephes::mtransp($n, $A, $T);\n+ my $R = $self->vec_to_mat($T);\n+ return Math::Cephes::Matrix->new($R);\n+}\n+\n+sub add {\n+ my ($self, $B) = @_;\n+ $B = $self->check($B);\n+ my ($A, $n) = ($self->{coef}, $self->{n});\n+ my $C = [];\n+ for (my $i=0; $i<$n; $i++) {\n+ for (my $j=0; $j<$n; $j++) {\n+ $C->[$i]->[$j] = $A->[$i]->[$j] + $B->[$i]->[$j];\n+ }\n+ }\n+ return Math::Cephes::Matrix->new($C);\n+}\n+\n+sub sub {\n+ my ($self, $B) = @_;\n+ $B = $self->check($'..b'\n+ }\n+\n+=head1 DESCRIPTION\n+\n+This module is a layer on top of the basic routines in the\n+cephes math library for operations on square matrices. In \n+the following, a Math::Cephes::Matrix object is created as\n+\n+ my $M = Math::Cephes::Matrix->new($arr_ref);\n+\n+where C<$arr_ref> is a reference to an array of arrays, as \n+in the following example:\n+\n+ $arr_ref = [ [1, 2, -1], [2, -3, 1], [1, 0, 3] ]\n+\n+which represents\n+\n+ / 1 2 -1 \\\n+ | 2 -3 1 |\n+ \\ 1 0 3 /\n+\n+A copy of a I<Math::Cephes::Matrix> object may be done as\n+\n+ my $M_copy = $M->new();\n+\n+=head2 Methods\n+\n+=over 4\n+\n+=item I<coef>: get coefficients of the matrix\n+\n+ SYNOPSIS:\n+\n+ my $c = $M->coef;\n+\n+ DESCRIPTION:\n+\n+This returns an reference to an array of arrays\n+containing the coefficients of the matrix. \n+\n+=item I<clr>: set all coefficients equal to a value.\n+\n+ SYNOPSIS:\n+\n+ $M->clr($n);\n+\n+ DESCRIPTION:\n+\n+This sets all the coefficients of the matrix identically to I<$n>.\n+If I<$n> is not given, a default of 0 is used.\n+\n+=item I<add>: add two matrices\n+\n+ SYNOPSIS:\n+\n+ $P = $M->add($N);\n+\n+ DESCRIPTION:\n+\n+This sets $P equal to $M + $N.\n+\n+=item I<sub>: subtract two matrices\n+\n+ SYNOPSIS:\n+\n+ $P = $M->sub($N);\n+\n+ DESCRIPTION:\n+\n+This sets $P equal to $M - $N.\n+\n+=item I<mul>: multiply two matrices or a matrix and a vector\n+\n+ SYNOPSIS:\n+\n+ $P = $M->mul($N);\n+\n+ DESCRIPTION:\n+\n+This sets $P equal to $M * $N. This method can handle\n+matrix multiplication, when $N is a matrix, as well\n+as matrix-vector multiplication, where $N is an\n+array reference representing a column vector.\n+\n+=item I<div>: divide two matrices\n+\n+ SYNOPSIS:\n+\n+ $P = $M->div($N);\n+\n+ DESCRIPTION:\n+\n+This sets $P equal to $M * ($N)^(-1).\n+\n+=item I<inv>: invert a matrix\n+\n+ SYNOPSIS:\n+\n+ $I = $M->inv();\n+\n+ DESCRIPTION:\n+\n+This sets $I equal to ($M)^(-1).\n+\n+=item I<transp>: transpose a matrix\n+\n+ SYNOPSIS:\n+\n+ $T = $M->transp();\n+\n+ DESCRIPTION:\n+\n+This sets $T equal to the transpose of $M.\n+\n+=item I<simq>: solve simultaneous equations\n+\n+ SYNOPSIS:\n+\n+ my $M = Math::Cephes::Matrix->new([ [1, 2, -1], [2, -3, 1], [1, 0, 3]]);\n+ my $B = [2, -1, 10];\n+ my $X = $M->simq($B);\n+ for (my $i=0; $i<3; $i++) {\n+ print "X[$i] is $X->[$i]\\n";\n+ }\n+\n+where $M is a I<Math::Cephes::Matrix> object, $B\n+is an input array reference, and $X is an output\n+array reference.\n+\n+ DESCRIPTION:\n+\n+A set of N simultaneous equations may be represented\n+in matrix form as\n+\n+ M X = B\n+\n+where M is an N x N square matrix and X and B are column\n+vectors of length N. \n+\n+=item I<eigens>: eigenvalues and eigenvectors of a real symmetric matrix\n+\n+ SYNOPSIS:\n+\n+ my $S = Math::Cephes::Matrix->new([ [1, 2, 3], [2, 2, 3], [3, 3, 4]]);\n+ my ($E, $EV1) = $S->eigens();\n+ my $EV = $EV1->coef;\n+ for (my $i=0; $i<3; $i++) {\n+ print "For i=$i, with eigenvalue $E->[$i]\\n";\n+ my $v = [];\n+ for (my $j=0; $j<3; $j++) {\n+ $v->[$j] = $EV->[$i]->[$j];\n+ }\n+ print "The eigenvector is @$v\\n";\n+ }\n+\n+where $M is a I<Math::Cephes::Matrix> object representing\n+a real symmetric matrix. $E is an array reference containing\n+the eigenvalues of $M, and $EV is a I<Math::Cephes::Matrix> object \n+representing the eigenvalues, the I<ith> row corresponding\n+to the I<ith> eigenvalue.\n+\n+ DESCRIPTION:\n+\n+If M is an N x N real symmetric matrix, and X is an N component\n+column vector, the eigenvalue problem\n+\n+ M X = lambda X\n+\n+will in general have N solutions, with X the eigenvectors\n+and lambda the eigenvalues.\n+\n+=back\n+\n+=head1 BUGS\n+\n+Please report any to Randy Kobes <randy@theoryx5.uwinnipeg.ca>\n+\n+=head1 COPYRIGHT\n+\n+The C code for the Cephes Math Library is\n+Copyright 1984, 1987, 1989, 2002 by Stephen L. Moshier, \n+and is available at http://www.netlib.org/cephes/.\n+Direct inquiries to 30 Frost Street, Cambridge, MA 02140.\n+\n+The perl interface is copyright 2000, 2002 by Randy Kobes.\n+This library is free software; you can redistribute it and/or\n+modify it under the same terms as Perl itself.\n+\n+=cut\n+\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/Math/Cephes/Polynomial.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/Math/Cephes/Polynomial.pm Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,868 @@\n+package Math::Cephes::Polynomial;\n+use strict;\n+use warnings;\n+use vars qw(@EXPORT_OK $VERSION $MAXPOL $FMAXPOL $flag $fflag);\n+eval {require Math::Complex; import Math::Complex qw(Re Im)};\n+eval {local $^W=0; require Math::Fraction;};\n+$MAXPOL = 256;\n+$flag = 0;\n+$FMAXPOL = 256;\n+$fflag = 0;\n+\n+require Exporter;\n+*import = \\&Exporter::import;\n+@EXPORT_OK = qw(poly);\n+$VERSION = \'0.5304\';\n+\n+require Math::Cephes;\n+require Math::Cephes::Fraction;\n+require Math::Cephes::Complex;\n+\n+sub new {\n+ my ($caller, $arr) = @_;\n+ my $refer = ref($caller);\n+ my $class = $refer || $caller;\n+ die "Must supply data for the polynomial" \n+ unless ($refer or $arr);\n+ my ($type, $ref, $data, $n);\n+ if ($refer) {\n+ ($type, $ref, $n) =\n+\t($caller->{type}, $caller->{ref}, $caller->{n});\n+ my $cdata = $caller->{data};\n+ if (ref($cdata) eq \'ARRAY\') {\n+\t$data = [ @$cdata ];\n+ }\n+ else {\n+\tmy ($f, $s) = ($type eq \'fract\') ? (\'n\', \'d\') : (\'r\', \'i\');\n+\t$data = {$f => [ @{$cdata->{$f}} ],\n+\t\t $s => [ @{$cdata->{$s}} ], \n+\t\t};\n+ }\n+ }\n+ else {\n+ ($type, $ref, $data, $n) = get_data($arr);\n+ }\n+ bless { type => $type,\n+\t ref => $ref,\n+\t data => $data,\n+\t n => $n,\n+\t}, $class;\n+}\n+\n+sub poly {\n+ return Math::Cephes::Polynomial->new(shift);\n+}\n+\n+sub coef {\n+ return $_[0]->{data};\n+}\n+\n+sub get_data {\n+ my ($arr, $ref_in) = @_;\n+ die "Must supply an array reference" unless ref($arr) eq \'ARRAY\';\n+ my $n = scalar @$arr - 1;\n+ my $ref = ref($arr->[0]);\n+ die "array data must be of type \'$ref_in\'"\n+\tif (defined $ref_in and $ref_in ne $ref);\n+ my ($type, $data);\n+ SWITCH: {\n+ not $ref and do {\n+\t $type = \'scalar\';\n+\t foreach (@$arr) {\n+\t die \'Found conflicting types in array data\'\n+\t\t if ref($_);\n+\t }\n+\t $data = $arr;\n+\t set_max() unless $flag;\n+\t last SWITCH;\n+ };\n+ $ref eq \'Math::Cephes::Complex\' and do {\n+\t $type = \'cmplx\';\n+\t foreach (@$arr) {\n+\t die \'Found conflicting types in array data\'\n+\t\t unless ref($_) eq $ref;\n+\t die "array data must be of type \'$ref_in\'"\n+\t\t if (defined $ref_in and $ref_in ne $ref);\n+\t push @{$data->{r}}, $_->r;\n+\t push @{$data->{i}}, $_->i;\n+\t }\n+\t set_max() unless $flag;\n+\t last SWITCH;\n+ };\n+ $ref eq \'Math::Complex\' and do {\n+\t $type = \'cmplx\';\n+\t foreach (@$arr) {\n+\t die \'Found conflicting types in array data\'\n+\t\t unless ref($_) eq $ref;\n+\t die "array data must be of type \'$ref_in\'"\n+\t\t if (defined $ref_in and $ref_in ne $ref);\n+\t push @{$data->{r}}, Re($_);\n+\t push @{$data->{i}}, Im($_);\n+\t }\n+\t set_max() unless $flag;\n+\t last SWITCH;\n+ };\n+ $ref eq \'Math::Cephes::Fraction\' and do {\n+\t $type = \'fract\';\n+\t foreach (@$arr) {\n+\t die \'Found conflicting types in array data\'\n+\t\t unless ref($_) eq $ref;\n+\t die "array data must be of type \'$ref_in\'"\n+\t\t if (defined $ref_in and $ref_in ne $ref);\n+\t my ($gcd, $n, $d) = Math::Cephes::euclid($_->n, $_->d);\n+\t push @{$data->{n}}, $n;\n+\t push @{$data->{d}}, $d;\n+\t }\n+\t set_fmax() unless $fflag;\n+\t last SWITCH;\n+ };\n+ $ref eq \'Math::Fraction\' and do {\n+\t $type = \'fract\';\n+\t foreach (@$arr) {\n+\t die \'Found conflicting types in array data\'\n+\t\t unless ref($_) eq $ref;\n+\t die "array data must be of type \'$ref_in\'"\n+\t\t if (defined $ref_in and $ref_in ne $ref);\n+\t push @{$data->{n}}, $_->{frac}->[0];\n+\t push @{$data->{d}}, $_->{frac}->[1];\n+\t }\n+\t set_fmax() unless $fflag;\n+\t last SWITCH;\n+ };\n+ die "Unknown type \'$ref\' in array data";\n+ }\n+ return ($type, $ref, $data, $n);\n+}\n+ \n+sub as_string {\n+ my $self = shift;\n+ my ($type, $data, $n) =\n+ ($self->{type}, $self->{data}, $self->{n});\n+ my $d = shift || $n;\n+ $d = $n if $d > $n;\n+ my $string;\n+ for (my $j=0; $j<=$d; $j++) {\n+ my $coef;\n+ SWITCH: {\n+\t$type eq \'fract\' and do {\n+\t my $n = $data->{n}->[$j];\n+\t my $d = $dat'..b'n]. If $n is omitted, all elements are set to 0. \n+\n+=item I<add>: add two polynomials\n+\n+ SYNOPSIS:\n+\n+ $c = $a->add($b);\n+\n+ DESCRIPTION:\n+\n+This sets $c equal to $a + $b.\n+\n+=item I<sub>: subtract two polynomials\n+\n+ SYNOPSIS:\n+\n+ $c = $a->sub($b);\n+\n+ DESCRIPTION:\n+\n+This sets $c equal to $a - $b.\n+\n+=item I<mul>: multiply two polynomials\n+\n+ SYNOPSIS:\n+\n+ $c = $a->mul($b);\n+\n+ DESCRIPTION:\n+\n+This sets $c equal to $a * $b.\n+\n+=item I<div>: divide two polynomials\n+\n+ SYNOPSIS:\n+\n+ $c = $a->div($b);\n+\n+ DESCRIPTION:\n+\n+This sets $c equal to $a / $b, expanded by a Taylor series. Accuracy\n+is approximately equal to the degree of the polynomial, with an\n+internal limit of about 16.\n+\n+=item I<sbt>: change of variables\n+\n+ SYNOPSIS:\n+\n+ $c = $a->sbt($b);\n+\n+ DESCRIPTION:\n+\n+If a(x) and b(x) are polynomials, then\n+\n+ c(x) = a(b(x))\n+\n+is a polynomial found by substituting b(x) for x in a(x). This method is\n+not available for polynomials with complex coefficients.\n+\n+=item I<eval>: evaluate a polynomial\n+\n+ SYNOPSIS:\n+\n+ $s = $a->eval($x);\n+\n+ DESCRIPTION:\n+\n+This evaluates the polynomial at the value $x. The returned value\n+is of the same type as that used to represent the coefficients of\n+the polynomial.\n+\n+=item I<sqt>: square root of a polynomial\n+\n+ SYNOPSIS:\n+\n+ $b = $a->sqt();\n+\n+ DESCRIPTION:\n+\n+This finds the square root of a polynomial, evaluated by a \n+Taylor expansion. Accuracy is approximately equal to the \n+degree of the polynomial, with an internal limit of about 16.\n+This method is not available for polynomials with complex coefficients.\n+\n+=item I<sin>: sine of a polynomial\n+\n+ SYNOPSIS:\n+\n+ $b = $a->sin();\n+\n+ DESCRIPTION:\n+\n+This finds the sine of a polynomial, evaluated by a \n+Taylor expansion. Accuracy is approximately equal to the \n+degree of the polynomial, with an internal limit of about 16.\n+This method is not available for polynomials with complex coefficients.\n+\n+=item I<cos>: cosine of a polynomial\n+\n+ SYNOPSIS:\n+\n+ $b = $a->cos();\n+\n+ DESCRIPTION:\n+\n+This finds the cosine of a polynomial, evaluated by a \n+Taylor expansion. Accuracy is approximately equal to the \n+degree of the polynomial, with an internal limit of about 16.\n+This method is not available for polynomials with complex coefficients.\n+\n+=item I<atn>: arctangent of the ratio of two polynomials\n+\n+ SYNOPSIS:\n+\n+ $c = $a->atn($b);\n+\n+ DESCRIPTION:\n+\n+This finds the arctangent of the ratio $a / $b of two polynomial, \n+evaluated by a Taylor expansion. Accuracy is approximately equal to the \n+degree of the polynomial, with an internal limit of about 16.\n+This method is not available for polynomials with complex coefficients.\n+\n+=item I<rts>: roots of a polynomial\n+\n+ SYNOPSIS:\n+\n+ my $w = Math::Cephes::Polynomial->new([-2, 0, -1, 0, 1]);\n+ my ($flag, $r) = $w->rts();\n+ for (my $i=0; $i<4; $i++) {\n+ print "Root $i has real=", $r->[$i]->r, " and imag=", $r->[$i]->i, "\\n";\n+ }\n+\n+ DESCRIPTION:\n+\n+This finds the roots of a polynomial. I<$flag>, if non-zero, indicates\n+a failure of some kind. I<$roots> in an array reference of\n+I<Math::Cephes::Complex> objects holding the\n+real and complex values of the roots found.\n+This method is not available for polynomials with complex coefficients.\n+\n+ ACCURACY:\n+\n+Termination depends on evaluation of the polynomial at\n+the trial values of the roots. The values of multiple roots\n+or of roots that are nearly equal may have poor relative\n+accuracy after the first root in the neighborhood has been\n+found.\n+\n+=back\n+\n+=head1 BUGS\n+\n+Please report any to Randy Kobes <randy@theoryx5.uwinnipeg.ca>\n+\n+=head1 COPYRIGHT\n+\n+The C code for the Cephes Math Library is\n+Copyright 1984, 1987, 1989, 2002 by Stephen L. Moshier, \n+and is available at http://www.netlib.org/cephes/.\n+Direct inquiries to 30 Frost Street, Cambridge, MA 02140.\n+\n+The perl interface is copyright 2000, 2002 by Randy Kobes.\n+This library is free software; you can redistribute it and/or\n+modify it under the same terms as Perl itself.\n+\n+=cut\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/orthodotter/orthodotter.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/orthodotter/orthodotter.pl Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,222 @@\n+#!/usr/bin/perl -w\n+\n+################################################################################\n+# * \n+# * Copyright Jean-Marc Aury / Institut de Genomique / DSV / CEA \n+# * <jmaury@genoscope.cns.fr>\n+# *\n+# * \n+# * This software, called orthodotter is a computer program whose purpose is to \n+# * draw dotplot and create dots clusters.\n+# * \n+# * This software is governed by the CeCILL license under French law and\n+# * abiding by the rules of distribution of free software. You can use, \n+# * modify and/ or redistribute the software under the terms of the CeCILL\n+# * license as circulated by CEA, CNRS and INRIA at the following URL\n+# * "http://www.cecill.info". \n+# * \n+# * As a counterpart to the access to the source code and rights to copy,\n+# * modify and redistribute granted by the license, users are provided only\n+# * with a limited warranty and the software\'s author, the holder of the\n+# * economic rights, and the successive licensors have only limited\n+# * liability. \n+# * \n+# * In this respect, the user\'s attention is drawn to the risks associated\n+# * with loading, using, modifying and/or developing or reproducing the\n+# * software by the user in light of its specific status of free software,\n+# * that may mean that it is complicated to manipulate, and that also\n+# * therefore means that it is reserved for developers and experienced\n+# * professionals having in-depth computer knowledge. Users are therefore\n+# * encouraged to load and test the software\'s suitability as regards their\n+# * requirements in conditions enabling the security of their systems and/or \n+# * data to be ensured and, more generally, to use and operate it in the \n+# * same conditions as regards security. \n+# * \n+# * The fact that you are presently reading this means that you have had\n+# * knowledge of the CeCILL license and that you accept its terms.\n+################################################################################\n+\n+use strict;\n+\n+use FileHandle;\n+use Getopt::Long;\n+use File::Temp "tempfile";\n+use File::Basename;\n+use FindBin; \n+use lib "$FindBin::Bin"; \n+\n+use LibAnnotation::Ortho::OrthoDotter;\n+use LibAnnotation::Ortho::GeneCollection;\n+\n+my $A_FILE = "-";\n+my $A_OUT = ">-";\n+my $A_GEOM = 600x600;\n+my $A_RESX = 600;\n+my $A_RESY = 600;\n+my $A_RADIUS = 2;\n+my $A_FORMAT = "png";\n+my $A_FGCOLOR = "black";\n+my $A_BGCOLOR = "transparent";\n+my $A_FONTSIZE = 1;\n+my $A_KEEPONLYGOOD = 0;\n+my @A_TOPLOT = ();\n+my $A_VERBOSE = 0;\n+my $A_HELP = 0;\n+\n+my $result = &GetOptions("f=s" => \\$A_FILE,\n+\t\t\t "o=s" => \\$A_OUT,\n+ "x=i" => \\$A_RESX,\n+\t\t\t "y=i" => \\$A_RESY,\n+ "r=f" => \\$A_RADIUS,\n+ "format=s" => \\$A_FORMAT,\n+ "fg=s" => \\$A_FGCOLOR,\n+ "bg=s" => \\$A_BGCOLOR,\n+ "fsize=i" => \\$A_FONTSIZE,\n+\t\t\t "filter" => \\$A_KEEPONLYGOOD,\n+\t\t\t "toPlot=s@" => \\@A_TOPLOT,\n+\t\t\t "v" => \\$A_VERBOSE,\n+ "h" => \\$A_HELP,\n+ );\n+\n+if (!$result || $A_HELP) {\n+ usage();\n+}\n+\n+my %arg = ( Kfilter => 0, resX => $A_RESX, resY => $A_RESY, width => $A_RESX-100, \n+\t height => $A_RESY-100, flip => 0, format => $A_FORMAT,\n+\t xOffset => 75, yOffset => 25, radius => $A_RADIUS, \n+\t keepGoodChrom => $A_KEEPONLYGOOD, fgcolor => $A_FGCOLOR, \n+\t bgcolor => $A_BGCOLOR, fontSize => $A_FONTSIZE);\n+\n+if($A_FORMAT eq "ps" || $A_FORMAT eq "pdf") {\n+ $A_RESX = 600;\n+ $A_RESY = 600;\n+ $arg{\'yOffset\'} = 50;\n+ $arg{\'xOffset\'} = 50;\n+ $arg{\'resX\'} = 600;\n+ $arg{\'resY\'} = 600;\n+ $arg{\'height\'} = 550;\n+ $arg{\'width\'} = 550;\n+}\n+\n+my $fh_in = ($A_FILE eq "-") ? new FileHandle($A_FILE) : new FileHandle($A_FILE, "r");\n+if (!defined $fh_in) { usage("[Error] Cannot open $A_FILE in [r] mode."); }\n'..b'new LibAnnotation::Ortho::OrthoDotter($A_RESX, $A_RESY, $A_RADIUS, $A_FORMAT, $A_BGCOLOR, \n+\t\t\t\t\t\t\t $A_FGCOLOR, $color, $A_FONTSIZE, $A_KEEPONLYGOOD);\n+\tmy (%filter_x, %filter_y);\n+\tif(defined $2 && $2 ne "") { \n+\t print "filter : $2\\n";\n+\t my @filterX = split(",", $2);\n+\t foreach(@filterX) { $filter_x{$_}=1; }\n+\t $dotter->filterX(\\%filter_x);\n+\t}\n+\tif(defined $4 && $4 ne "") {\n+\t print "filter : $4\\n";\n+\t my @filterY = split(",", $4);\n+\t foreach(@filterY) { $filter_y{$_}=1; }\n+\t $dotter->filterY(\\%filter_y);\n+\t}\n+\twarn "plot $1 against $3\\n" if $A_VERBOSE;\n+\t$dotter->collectionX($collections->{$1});\n+\t$dotter->collectionY($collections->{$3});\n+\tif($slc) { $dotter->_doCluster($max_dist, $nb_genes); }\n+\tpush(@dotters, $dotter);\n+ } else {\n+\tusage("[Error] bad syntax in argument -toPlot : $opt");\n+ }\n+}\n+\n+my $cpt = 0;\n+my @instructions = ();\n+foreach(@dotters) {\n+ $cpt++;\n+ if($cpt != 1) { $_->draw_limits(0); }\n+ if($cpt != scalar(@dotters)) { $_->draw(\\@instructions, 0, $fh_out); }\n+ else { $_->draw(\\@instructions, 1, $fh_out); }\n+}\n+\t\n+sub usage {\n+ my $msg = shift;\n+ if(defined $msg) { warn "\\n$msg\\n"; }\n+ my $usage = "\n+--------------------------------------------------------------------------------\n+orthodotter - Plot orthologous genes on an oxford grid.\n+ -f <file> : input file, containing orthologous genes, default is stdin\n+ species chr-name start end species chr-name start end\n+ -toPlot <arg> : give the x and y sets and the color separated by double-dots,\n+ for example set1:set2:red will plot set1 on x, set2 on y with\n+ red points. Could give several -toPlot arguments.\n+ To launch the clustering of dots, use extra-option 1=dist,min_nb_genes\n+ where dist is the minimal distance (euclidian) between two points and min_nb_genes the minimal\n+ number of genes in a cluster to be valid.\n+ -o <file> : output file, default is stdout\n+ -x <int> : resolution of x axis, default is 600\n+ -y <int> : resolution on y axis, default is 600\n+ -r <int> : radius of circle representing orthologous genes\n+ -format : could be png, gif, jpg, pdf or ps. Default is png.\n+ -fg : foreground color, default is black\n+ -bg : background color, default is transparent\n+ -fSize <int> : fontSize, default is 1\n+ -filter : check chromosome names\n+ -h : help\n+--------------------------------------------------------------------------------\n+orthodotter -f Vigne_Banane.ortho -toPlot Vigne:Banane:black:1=10,5 -x 1200 -y 1200 -bg white -o Vigne_vs_Banane.png > Vigne_vs_Banane.clusters\n+--------------------------------------------------------------------------------\\n";\n+ die $usage;\n+}\n+\n+sub load_collections_from_file {\n+ my $fh_in = shift;\n+ my %collection = ();\n+ my $nb = 0;\n+ while(my $line = $fh_in->getline()) {\n+\tif($line =~ /^(\\S+)\\s+(\\S+)\\s+(\\d+|\\.)\\s+(\\d+|\\.)\\s+(\\S+)\\s+(\\S+)\\s+(\\d+|\\.)\\s+(\\d+|\\.)\\s*(\\d*|\\.)\\s*(\\S*)$/) {\n+\t my ($g1, $g2);\n+\t if($2 ne ".") {\n+\t\tif(!defined $collection{$1}) { \n+\t\t my $c = new LibAnnotation::Ortho::GeneCollection(); \n+\t\t $c->name($1);\n+\t\t $collection{$1} = $c;\n+\t\t $nb++;\n+\t\t}\n+\t\t$g1 = ($collection{$1})->addGene($2, $3, $4);\n+\t }\n+\t if($6 ne ".") {\n+\t\tif(!defined $collection{$5}) { \n+\t\t my $c = new LibAnnotation::Ortho::GeneCollection(); \n+\t\t $c->name($5);\n+\t\t $collection{$5} = $c;\n+\t\t $nb++;\n+\t\t}\n+\t\t$g2 = ($collection{$5})->addGene($6, $7, $8);\n+\t\tif($2 ne ".") {\n+\t\t my $score = (defined $9 && $9 ne ".") ? $9 : 0;\n+\t\t my $color = (defined $10) ? $10 : "none";\n+\t\t my $hit = new LibAnnotation::Ortho::GeneHit($g1, $g2, $score, $color);\n+\t\t $g1->addmatch($hit);\n+\t\t $g2->addmatch($hit);\n+\t\t}\n+\t }\n+\t}\n+ }\n+ return (\\%collection, $nb);\n+}\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/pwd2figure.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/pwd2figure.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
b'@@ -0,0 +1,499 @@\n+#!/usr/local/bioinfo/python/2.7.9/bin/python\n+#\n+# Copyright 2014 CIRAD\n+#\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+# the Free Software Foundation; either version 3 of the License, or\n+# (at your option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+# GNU General Public License for more details.\n+#\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/> or\n+# write to the Free Software Foundation, Inc.,\n+# 51 Franklin Street, Fifth Floor, Boston,\n+# MA 02110-1301, USA.\n+#\n+#\n+\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, math\n+\n+def stop_err( msg ):\n+ sys.stderr.write( "%s\\n" % msg )\n+ sys.exit()\n+\n+def run_job (cmd_line, ERROR):\n+\tprint cmd_line\n+\ttry:\n+\t\ttmp = tempfile.NamedTemporaryFile().name\n+\t\t# print tmp\n+\t\terror = open(tmp, \'w\')\n+\t\tproc = subprocess.Popen( args=cmd_line, shell=True, stderr=error)\n+\t\treturncode = proc.wait()\n+\t\terror.close()\n+\t\terror = open( tmp, \'rb\' )\n+\t\tstderr = \'\'\n+\t\tbuffsize = 1048576\n+\t\ttry:\n+\t\t\twhile True:\n+\t\t\t\tstderr += error.read( buffsize )\n+\t\t\t\tif not stderr or len( stderr ) % buffsize != 0:\n+\t\t\t\t\tbreak\n+\t\texcept OverflowError:\n+\t\t\tpass\n+\t\terror.close()\n+\t\tos.remove(tmp)\n+\t\tif returncode != 0:\n+\t\t\traise Exception, stderr\n+\texcept Exception, e:\n+\t\tstop_err( ERROR + str( e ) )\n+\n+def JMpwd2markid(PWD):\n+\tdico = set()\n+\tfile = open(PWD)\n+\tsur_id = 0\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif sur_id:\n+\t\t\t\tdico.add(data[1])\n+\t\t\telif data[0] == \'locus\' and data[1] == \'numbers:\':\n+\t\t\t\tsur_id = 1\n+\treturn dico\n+\n+def JMpwd2matrix(PWD, LISTE_ID, OUT1, OUT2):\n+\t#creating the table structure\n+\t# os.system("echo \'1)creating the table structure\'")\n+\tliste_vide = []\n+\tfor n in LISTE_ID:\n+\t\tliste_vide.append(\'999999999\')\n+\tdic_LOD = {}\n+\tdic_REC = {}\n+\tfor n in LISTE_ID:\n+\t\tdic_LOD[n] = list(liste_vide)\n+\t\tdic_REC[n] = list(liste_vide)\n+\t\n+\t#filling the table\n+\t# os.system("echo \'2)filling the table. It can takes time...\'")\n+\tfile = open(PWD)\n+\tmaxlod = 0\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data != [] and not(\'name =\' in line) and len(data) > 2:\n+\t\t\tif data[0] != \';\':\n+\t\t\t\tif data[0] in LISTE_ID and data[1] in LISTE_ID:\n+\t\t\t\t\tdic_LOD[data[0]][LISTE_ID.index(data[1])] = float(data[3])\n+\t\t\t\t\tdic_LOD[data[1]][LISTE_ID.index(data[0])] = float(data[3])\n+\t\t\t\t\tdic_REC[data[0]][LISTE_ID.index(data[1])] = float(data[2])\n+\t\t\t\t\tdic_REC[data[1]][LISTE_ID.index(data[0])] = float(data[2])\n+\t\t\t\t\tif maxlod < float(data[3]):\n+\t\t\t\t\t\tmaxlod = float(data[3])\n+\tfile.close()\n+\t\n+\t# filling diag\n+\t# os.system("echo \'3)filling diag\'")\n+\tfor n in LISTE_ID:\n+\t\tdic_REC[n][LISTE_ID.index(n)] = 0\n+\t\tdic_LOD[n][LISTE_ID.index(n)] = maxlod\n+\t\t\t\n+\t#writing results\n+\t# os.system("echo \'4)writing results\'")\n+\tOUT1.write(\'ID\\t\'+\'\\t\'.join(LISTE_ID)+\'\\n\')\n+\tOUT2.write(\'ID\\t\'+\'\\t\'.join(LISTE_ID)+\'\\n\')\n+\tfor n in LISTE_ID:\n+\t\tOUT1.write(n+\'\\t\'+\'\\t\'.join(map(str,dic_LOD[n]))+\'\\n\')\n+\t\tOUT2.write(n+\'\\t\'+\'\\t\'.join(map(str,dic_REC[n]))+\'\\n\')\n+\tOUT1.flush()\n+\tOUT2.flush()\n+\n+def min_max(FILE):\n+\tfile = open(FILE)\n+\tline = file.readline()\n+\tline = file.readline()\n+\tdata = line.split()\n+\tval = map(float,data[1:])\n+\ttry:\n+\t\twhile True:\tval.remove(999999999)\n+\texcept: pass\n+\tmini = min(val)\n+\tmaxi = max(val)\n+\ti = 1\n+\tfor line in file:\n+\t\ti += 1\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tval = map(float,data[1:i])\n+\t\t\ttry:\n+\t\t\t\twhile True:\tval.remove(999999999)\n+\t\t\texcept: pass\n+\t\t\tmin_val = min(val)\n+\t\t\tmax_val = max(val)\n+\t\t\t# print min_val, max_val, data[0]\n+\t\t\tif mini > min_val:\n+\t\t\t\tmini = min_val\n+\t\t\tif maxi < max_val:\n+\t\t\t\tmaxi = max_val\n+\t\t# if i%1000 == 0:\n+\t\t\t# os.syste'..b'\toutfile2.write(str(head[1:].index(n)+1)+\'\\t\'+n+\'\\t\'+dico[n]+\'\\n\')\n+\toutfile.write(\'\\n\')\n+\toutfile2.close()\n+\ti = 0\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\ti += 1\n+\t\t\tj = 0\n+\t\t\tif i != 1:\n+\t\t\t\toutfile.write(str(i))\n+\t\t\t\tfor n in data[1:]:\n+\t\t\t\t\tj += 1\n+\t\t\t\t\tif j < i:\n+\t\t\t\t\t\toutfile.write(\'\\t\'+str( (math.log((1+ (2*float(n))) / (1- (2*float(n)))))/4 ))\n+\t\t\t\toutfile.write(\'\\n\')\n+\toutfile.close()\n+\n+def __main__():\n+\t#Parse Command Line\n+\tparser = optparse.OptionParser(usage="python %prog [options]\\n\\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr\\n\\n"\n+\t"This program take a pairwise file generated by JoinMap and return a dot-plot representing pairwise marker linkage of markers along "\n+\t"chromosomes. Two additionnal file are generated that can be used with Darwin to construct tree.\\n")\n+\t# Wrapper options. \n+\tparser.add_option( \'\', \'--pwd\', dest=\'pwd\', default=None, help=\'Pairwise file calculated by Joinmap.\')\n+\tparser.add_option( \'\', \'--order\', dest=\'order\', default=None, help=\'Tabulated file containing in col1 : markers names and col2 : chromosome name. Markers should be grouped by identifier and ordered based on their position in the group. The file can contain additional columns (example position on identifier) that will not be used.\')\n+\tparser.add_option( \'\', \'--type\', dest=\'type\', default=\'LOD\', help=\'Type of pairwise statistics: LOD or REC. [default: %default]\')\n+\tparser.add_option( \'\', \'--png\', dest=\'png\', default=\'dot-plot.png\', help=\'Output name for the dot-plot (png file). [default: %default]\')\n+\tparser.add_option( \'\', \'--dis\', dest=\'dis\', default=\'darwin.dis\', help=\'Output name for the .dis file (for Darwin). [default: %default]\')\n+\tparser.add_option( \'\', \'--don\', dest=\'don\', default=\'darwin.don\', help=\'Output name for the .don file (for Darwin). [default: %default]\')\n+\t(options, args) = parser.parse_args()\n+\t\n+\tif options.order == None:\n+\t\tsys.exit(\'--order argument is missing\')\n+\tif options.pwd == None:\n+\t\tsys.exit(\'--pwd argument is missing\')\n+\t\n+\tnom_pairwise = options.pwd\n+\t\n+\tScriptPath = os.path.dirname(sys.argv[0])\n+\t\n+\tloca_programs = ConfigParser.RawConfigParser()\n+\tloca_programs.read(ScriptPath+\'/loca_programs.conf\')\n+\t\n+\t\n+\tqs=os.popen(\'wc -l \'+options.order)\n+\tvalue = \'\'\n+\tfor n in qs:\n+\t\tvalue = int(n.split()[0])\n+\tvalue = (value*3) + 100\n+\t\n+\t#creating a list of marker found in the pairwise file\n+\tdico_id = JMpwd2markid(nom_pairwise)\n+\t\n+\t#A piece of verification\n+\tfile = open(options.order)\n+\tliste_id = []\n+\tfor line in file:\n+\t\tdata = line.split()\n+\t\tif data:\n+\t\t\tif data[0] in liste_id:\n+\t\t\t\tmot = \'The program exited without finishing: the marker \'+data[0]+\' found in more than once in \'+options.order\n+\t\t\t\tsys.exit(mot)\n+\t\t\tliste_id.append(data[0])\n+\t\t\tif not(data[0] in dico_id):\n+\t\t\t\tmot = \'The program exited without finishing: the marker \'+data[0]+\' found in \'+options.order+\' is not in \'+options.pwd\n+\t\t\t\tsys.exit(mot)\n+\t\n+\t# creation of the matrix file\n+\ttemp2 = tempfile.NamedTemporaryFile()\n+\ttemp3 = tempfile.NamedTemporaryFile()\n+\tJMpwd2matrix(nom_pairwise, liste_id, temp2, temp3)\n+\ttemp2.flush()\n+\ttemp3.flush()\n+\t\n+\t#creation of the file for orthodotter\n+\ttemp4 = tempfile.NamedTemporaryFile()\n+\tif options.type == \'LOD\':\n+\t\tmatrix2ortho (temp2.name, options.order, options.type, temp4)\n+\telif options.type == \'REC\':\n+\t\tmatrix2ortho (temp3.name, options.order, options.type, temp4)\n+\telse:\n+\t\tmot = \'The program exited without finishing: the argument \'+options.type+\' is not recognized in --type\'\n+\t\tsys.exit(mot)\n+\ttemp4.flush()\n+\t\n+\tortho = \'%s -f %s -toPlot ordonnee:abscisse -x %s -y %s -bg white -o %s -r 3 -fSize 2\' % (ScriptPath+loca_programs.get(\'Programs\',\'orthodotter\'), temp4.name, str(value), str(value), options.png)\n+\trun_job(ortho, \'Error when running orthodotter:\')\n+\n+\trec2kosambi(temp3.name, options.dis, options.don, options.order)\n+\t\n+\ttemp2.close()\n+\ttemp3.close()\n+\ttemp4.close()\n+\t\n+if __name__ == "__main__": __main__()\n\\ No newline at end of file\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/pwd2figure.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/pwd2figure.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,79 @@ +<tool id="pwd2figure" name="pwd2figure" version="0.1"> + <description> : Convert JoinMap pair-wise file to figure and create .dis and .don files for DARwin</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + python $__tool_directory__/pwd2figure.py + --pwd $joinmap + --order $order + --type $type + --png $png_file + --dis $dis_file + --don $don_file + </command> + <inputs> + <param name="joinmap" type="data" format="tabular" label="JoinMap pair-wise file" /> + <param name="order" type="data" format="tabular" label="Tabulated file containing in col1 : markers names and col2 : chromosome name. Marker should be grouped by chromosome and ordered by their position on chromosome" /> + <param name="type" type="select" label="The type of data to use LOD or REC" > + <option value="LOD" selected="true">LOD</option> + <option value="REC">REC</option> + </param> + <param name="prefix" type="text" label="Prefix of output files" value="Darwin" /> + </inputs> + <outputs> + <data format="png" name="png_file" label="${tool.name} : $prefix .png" /> + <data format="txt" name="dis_file" label="${tool.name} : $prefix .dis" /> + <data format="txt" name="don_file" label="${tool.name} : $prefix .don" /> + </outputs> + <tests> + <test> + <param name="joinmap" value="pairwise.pwd"/> + <param name="order" value="alignment_chromosome.txt" /> + <param name="type" value="LOD" /> + <output name="png_file" file="pwd2figure.png" compare="sim_size"/> + <output name="dis_file" file="dis_file.txt" compare="sim_size"/> + <output name="don_file" file="don_file.txt" compare="sim_size"/> + </test> + </tests> + <help> + +**Overview** + +This program take a pairwise file generated by JoinMap and return a dot-plot representing pairwise marker linkage of markers along chromosomes. + +Two additional file are generated that can be used by Darwin_ software to construct tree. + +These files contain pairwise recombination rate converted into mapping distance using the Kosambi mapping function. + +.. _Darwin: http://darwin.cirad.fr/ + + +Example : Linkage between markers. +A. Markers linkage between markers ordered along the newly assembled chromosome. + +B. Tree representing marker linkage built using Darwin_ software. + +.. image:: http://orygenesdb.cirad.fr/images/linkage_marker2.png + + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/pwd2matrix.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/pwd2matrix.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,78 @@ +#!/usr/local/bioinfo/python/2.7.9/bin/python +# +# Copyright 2014 CIRAD +# +# 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/> or +# write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# + +import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, random + +def __main__(): + #Parse Command Line + parser = optparse.OptionParser(usage="python %prog [options]\n\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr\n\n" + "This program takes a file containing pairwise statistics and returns a matrix containing the same information.") + # Wrapper options. + parser.add_option( '', '--pwd', dest='pwd', default=None, help='Pairwise file. Column 1: id1, column 2: id2, column 3: statistics') + parser.add_option( '', '--out', dest='out', default='matrix.tab', help='Output file name. [default: %default]') + + (options, args) = parser.parse_args() + + if options.pwd == None: + sys.exit('Please provide a pairwise file in --pwd argument') + + #recording markers ids + os.system('echo "recording markers ids"') + liste_id = [] + file = open(options.pwd) + for line in file: + data=line.split() + if data: + if not(data[0] in liste_id): + liste_id.append(data[0]) + if not(data[1] in liste_id): + liste_id.append(data[1]) + file.close() + + #creating the table structure + os.system('echo "creating the table structure"') + liste_vide = [] + for n in liste_id: + liste_vide.append('999999999') + dic_LOD = {} + for n in liste_id: + dic_LOD[n] = list(liste_vide) + + #filling the table + os.system('echo "filling the table"') + file = open(options.pwd) + for line in file: + data = line.split() + if data: + dic_LOD[data[0]][liste_id.index(data[1])] = float(data[2]) + dic_LOD[data[1]][liste_id.index(data[0])] = float(data[2]) + file.close() + + #writing results + os.system('echo "writing results"') + outfile1 = open(options.out,'w') + outfile1.write('ID\t'+'\t'.join(liste_id)+'\n') + for n in liste_id: + outfile1.write(n+'\t'+'\t'.join(map(str,dic_LOD[n]))+'\n') + outfile1.close() + +if __name__ == "__main__": __main__() \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/pwd2matrix.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/pwd2matrix.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,51 @@ +<tool id="pwd2matrix" name="pwd2matrix" version="0.1"> + <description> : Convert pair-wise file to a tabulated matrix</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + $__tool_directory__/pwd2matrix.py + --pwd $pairwise + --out $matrix + </command> + <inputs> + <param name="pairwise" type="data" format="tabular" label="Pairwise file" /> + <param name="prefix" type="text" label="Prefix of output file" value="output" /> + </inputs> + <outputs> + <data format="tabular" name="matrix" label="${tool.name} : $prefix matrix" /> + </outputs> + <tests> + <test> + <param name="pairwise" value="pairwise_LOD.tab"/> + <output name="matrix" file="matrix.txt"/> + </test> + </tests> + <help> + +**Overview** + +This program takes a file containing pairwise statistics and returns a matrix containing the same information. + +Missing data in the matrix will be filled with 999999999 value. + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/reorderient.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/reorderient.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
b"@@ -0,0 +1,456 @@\n+\r\n+#\r\n+# Copyright 2014 CIRAD\r\n+#\r\n+# This program is free software; you can redistribute it and/or modify\r\n+# it under the terms of the GNU General Public License as published by\r\n+# the Free Software Foundation; either version 3 of the License, or\r\n+# (at your option) any later version.\r\n+#\r\n+# This program is distributed in the hope that it will be useful,\r\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n+# GNU General Public License for more details.\r\n+#\r\n+# You should have received a copy of the GNU General Public License\r\n+# along with this program; if not, see <http://www.gnu.org/licenses/> or\r\n+# write to the Free Software Foundation, Inc.,\r\n+# 51 Franklin Street, Fifth Floor, Boston,\r\n+# MA 02110-1301, USA.\r\n+#\r\n+#\r\n+\r\n+\r\n+import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator, time, random\r\n+\r\n+def factorielle(x):\r\n+\tif x < 2:\r\n+\t\treturn 1\r\n+\telse:\r\n+\t\treturn x * factorielle(x-1)\r\n+\r\n+def calcul_score_id(MAT, ORDRE, MARK, ORIENT, DIC_INDEX, NB):\r\n+\t#on cree l'ordre des markers\r\n+\tscaff_ordre = list(ORDRE)\r\n+\tordre = []\r\n+\tfor n in scaff_ordre:\r\n+\t\tliste = list(MARK[n])\r\n+\t\tif ORIENT[n] == 'REV':\r\n+\t\t\tliste.reverse()\r\n+\t\tordre = ordre + liste\r\n+\t#on enregistre les positions relative des markers dans cet ordre\r\n+\tliste_ordre = {}\r\n+\ti = 0\r\n+\tfor n in ordre:\r\n+\t\tliste_ordre[n] = i\r\n+\t\ti += 1\r\n+\t#on calcule le score\r\n+\tscore = 0\r\n+\twhile len(scaff_ordre) > 1:\r\n+\t\tscaff_fait = scaff_ordre[0]\r\n+\t\tdel scaff_ordre[0]\r\n+\t\t# print scaff_fait, MARK[scaff_fait]\r\n+\t\tfor n in MARK[scaff_fait]:\r\n+\t\t\tmark = DIC_INDEX[n]\r\n+\t\t\tfor j in scaff_ordre:\r\n+\t\t\t\tfor k in MARK[j]:\r\n+\t\t\t\t\tval = MAT[mark][k]\r\n+\t\t\t\t\tif val != 999999999:\r\n+\t\t\t\t\t\tscore = score + ((1-(abs(liste_ordre[n]-liste_ordre[k])/NB))*val)\r\n+\treturn score\r\n+\t\r\n+def calcul_score_dif(MAT, ORDRE, MARK, ORIENT, DIC_INDEX, NB):\r\n+\t#on cree l'ordre des markers\r\n+\tscaff_ordre = list(ORDRE)\r\n+\tordre = []\r\n+\tfor n in scaff_ordre:\r\n+\t\tliste = list(MARK[n])\r\n+\t\tif ORIENT[n] == 'REV':\r\n+\t\t\tliste.reverse()\r\n+\t\tordre = ordre + liste\r\n+\t#on enregistre les positions relative des markers dans cet ordre\r\n+\tliste_ordre = {}\r\n+\ti = 0\r\n+\tfor n in ordre:\r\n+\t\tliste_ordre[n] = i\r\n+\t\ti += 1\r\n+\t#on calcule le score\r\n+\tscore = 0\r\n+\twhile len(scaff_ordre) > 1:\r\n+\t\tscaff_fait = scaff_ordre[0]\r\n+\t\tdel scaff_ordre[0]\r\n+\t\t# print scaff_fait, MARK[scaff_fait]\r\n+\t\tfor n in MARK[scaff_fait]:\r\n+\t\t\tmark = DIC_INDEX[n]\r\n+\t\t\tfor j in scaff_ordre:\r\n+\t\t\t\tfor k in MARK[j]:\r\n+\t\t\t\t\tval = MAT[mark][k]\r\n+\t\t\t\t\tif val != 999999999:\r\n+\t\t\t\t\t\tscore = score + ((abs(liste_ordre[n]-liste_ordre[k])/NB)*val)\r\n+\treturn score\r\n+\r\n+def rear_fait(ORD, ORIENT):\r\n+\tmot = ''.join(ORD)\r\n+\tfor n in ORD:\r\n+\t\tmot = mot+ORIENT[n]\r\n+\treturn mot\r\n+\r\n+def reorderient(ORDRE, ORIENT):\r\n+\tNEW_ORDRE = list(ORDRE)\r\n+\tNEW_ORIENT = {}\r\n+\tfor n in ORIENT:\r\n+\t\tNEW_ORIENT[n] = ORIENT[n]\r\n+\tif random.randint(0,1) == 0:\r\n+\t\t#On travail sur 1 scaffold\r\n+\t\tpos = random.randint(0, (len(ORDRE)-1))\r\n+\t\tscaffold = NEW_ORDRE[pos]\r\n+\t\tif random.randint(0,1) == 0:\r\n+\t\t\t#On fait un deplacement de scaffold\r\n+\t\t\tpos_new = pos\r\n+\t\t\twhile pos_new == pos:\r\n+\t\t\t\tpos_new = random.randint(0, (len(ORDRE)-1))\r\n+\t\t\tdel NEW_ORDRE[pos]\r\n+\t\t\tif scaffold in NEW_ORDRE:\r\n+\t\t\t\tsys.exit('bug')\r\n+\t\t\tNEW_ORDRE.insert(pos_new, scaffold)\r\n+\t\t\tif random.randint(0,1) == 0:\r\n+\t\t\t\t#On fait en plus une reorientation\r\n+\t\t\t\tif NEW_ORIENT[scaffold] == 'FWD':\r\n+\t\t\t\t\tNEW_ORIENT[scaffold] = 'REV'\r\n+\t\t\t\telif NEW_ORIENT[scaffold] == 'REV':\r\n+\t\t\t\t\tNEW_ORIENT[scaffold] = 'FWD'\r\n+\t\t\t\telse:\r\n+\t\t\t\t\tsys.exit('bug')\r\n+\t\telse:\r\n+\t\t\t#On fait juste une reorientation\r\n+\t\t\tif NEW_ORIENT[scaffold] == 'FWD':\r\n+\t\t\t\tNEW_ORIENT[scaffold] = 'REV'\r\n+\t\t\telif NEW_ORIENT[scaffold] == 'REV':\r\n+\t\t\t\tNEW_ORIENT[scaffold] = 'FWD'\r\n+\t\t\telse:\r\n+\t\t\t\tsys.exit('bug')\r\n+\telse:\r\n+\t\tpos_debut = random.randint(0, (len(ORDRE)-2))\r\n+\t\tpos_fin = pos_debut\r\n+\t\twhile (pos_debut + 1) >= pos_fi"..b' = score_reor\r\n+\t\t\t\tdico_ordre_final[n] = \'Ord\'\r\n+\t\t\telif score == score_reor:\r\n+\t\t\t\tdico_ordre_final[n] = \'NoOrd\'\r\n+\t\t\telse:\r\n+\t\t\t\tdico_ordre_final[n] = \'Ord\'\r\n+\t\r\n+\r\n+\telif options.type == \'DIF\':\r\n+\t\t#On essaye toutes les orientations possibles de cet ordre\r\n+\t\tos.system(\'echo "Looking for best orientation in this order"\')\r\n+\t\tt0 = time.clock()\r\n+\t\tscore = calcul_score_dif(matrix, liste_ordre, dico_mark, dico_orient, dico_index, nb_mark)\r\n+\t\tos.system(\'echo "Reference score : \'+str(score)+\'; time spent in calculation : \'+str(time.clock()-t0)+\'"\')\r\n+\t\tfor n in liste_ordre:\r\n+\t\t\tt0 = time.clock()\r\n+\t\t\tdico_reor = {}\r\n+\t\t\tfor j in dico_orient:\r\n+\t\t\t\tif j == n:\r\n+\t\t\t\t\tif dico_orient[j] == \'FWD\':\r\n+\t\t\t\t\t\tdico_reor[j] = \'REV\'\r\n+\t\t\t\t\telif dico_orient[j] == \'REV\':\r\n+\t\t\t\t\t\tdico_reor[j] = \'FWD\'\r\n+\t\t\t\t\telse:\r\n+\t\t\t\t\t\tsys.exit(\'bug\')\r\n+\t\t\t\telse:\r\n+\t\t\t\t\tdico_reor[j] = dico_orient[j]\r\n+\t\t\tscore_reor = calcul_score_dif(matrix, liste_ordre, dico_mark, dico_reor, dico_index, nb_mark)\r\n+\t\t\tos.system(\'echo "Reorient score : \'+str(score_reor)+\'; time spent in calculation : \'+str(time.clock()-t0)+\'"\')\r\n+\t\t\tif score < score_reor:\r\n+\t\t\t\tdico_orient = {}\r\n+\t\t\t\tfor k in dico_reor:\r\n+\t\t\t\t\tdico_orient[k] = dico_reor[k]\r\n+\t\t\t\tscore = score_reor\r\n+\t\t#On fait des rearrangements\r\n+\t\tos.system(\'echo "Performing rearrangements"\')\r\n+\t\titer = 0\r\n+\t\tfait = set()\r\n+\t\tfait.add(rear_fait(liste_ordre, dico_orient))\r\n+\t\twhile iter < iteration:\r\n+\t\t\tt0 = time.clock()\r\n+\t\t\titer += 1\r\n+\t\t\tREOR = reorderient(liste_ordre,dico_orient)\r\n+\t\t\twhile rear_fait(REOR[0], REOR[1]) in fait:\r\n+\t\t\t\tREOR = reorderient(liste_ordre,dico_orient)\r\n+\t\t\tfait.add(rear_fait(REOR[0], REOR[1]))\r\n+\t\t\tscore_reor = calcul_score_dif(matrix, REOR[0], dico_mark, REOR[1], dico_index, nb_mark)\r\n+\t\t\tos.system(\'echo "iteration : \'+str(iter)+\'; Reoriented score : \'+str(score_reor)+\', best score : \'+str(score)+\'; time spent in calculation : \'+str(time.clock()-t0)+\'"\')\r\n+\t\t\tif score < score_reor:\r\n+\t\t\t\tdico_orient = {}\r\n+\t\t\t\tfor n in REOR[1]:\r\n+\t\t\t\t\tdico_orient[n] = REOR[1][n]\r\n+\t\t\t\tscore = score_reor\r\n+\t\t\t\tliste_ordre = list(REOR[0])\r\n+\t\t\t\titer = 0\r\n+\t\t\t\tfait = set()\r\n+\t\t\t\tfait.add(rear_fait(liste_ordre, dico_orient))\r\n+\t\t#On fait une derniere etape pour voir ce qui est oriente et ce qui ne l\'est pas\r\n+\t\tos.system(\'echo "Looking for orientated scaffolds and those who are not"\')\r\n+\t\tos.system(\'echo "Reference score : \'+str(score)+\'; time spent in calculation : \'+str(time.clock()-t0)+\'"\')\r\n+\t\tdico_ordre_final = {}\r\n+\t\tfor n in liste_ordre:\r\n+\t\t\tt0 = time.clock()\r\n+\t\t\tdico_reor = {}\r\n+\t\t\tnom_ord = n\r\n+\t\t\tfor j in dico_orient:\r\n+\t\t\t\tif j == n:\r\n+\t\t\t\t\tif dico_orient[j] == \'FWD\':\r\n+\t\t\t\t\t\tdico_reor[j] = \'REV\'\r\n+\t\t\t\t\telse:\r\n+\t\t\t\t\t\tdico_reor[j] = \'FWD\'\r\n+\t\t\t\telse:\r\n+\t\t\t\t\tdico_reor[j] = dico_orient[j]\r\n+\t\t\tscore_reor = calcul_score_dif(matrix, liste_ordre, dico_mark, dico_reor, dico_index, nb_mark)\r\n+\t\t\tos.system(\'echo "Reorient score : \'+str(score_reor)+\'; time spent in calculation : \'+str(time.clock()-t0)+\'"\')\r\n+\t\t\tif score < score_reor:\r\n+\t\t\t\tdico_orient = {}\r\n+\t\t\t\tfor k in dico_reor:\r\n+\t\t\t\t\tdico_orient[k] = dico_reor[k]\r\n+\t\t\t\tscore = score_reor\r\n+\t\t\t\tdico_ordre_final[n] = \'Ord\'\r\n+\t\t\telif score == score_reor:\r\n+\t\t\t\tdico_ordre_final[n] = \'NoOrd\'\r\n+\t\t\t\tif dico_orient[n] == \'REV\':\t\t\t\t#\r\n+\t\t\t\t\tdico_orient = {}\t\t\t\t\t#\r\n+\t\t\t\t\tfor k in dico_reor:\t\t\t\t\t#\r\n+\t\t\t\t\t\tdico_orient[k] = dico_reor[k]\t#\r\n+\t\t\telse:\r\n+\t\t\t\tdico_ordre_final[n] = \'Ord\'\r\n+\telse:\r\n+\t\tsys.exit(\'Wrong argument passed in --type\')\r\n+\t\r\n+\t#On genere le fichier pour matrix to orthodother\r\n+\tos.system(\'echo "Outputing ordonned markers"\')\r\n+\toutfile1 = open(options.out1,\'w\')\r\n+\toutfile = open(options.out2,\'w\')\r\n+\tfor n in liste_ordre:\r\n+\t\toutfile1.write(n+\'\\t\'+dico_orient[n]+\'\\t\'+dico_ordre_final[n]+\'\\n\')\r\n+\t\tliste = list(dico_mark[n])\r\n+\t\tif dico_orient[n] == \'REV\':\r\n+\t\t\tliste.reverse()\r\n+\t\tfor j in liste:\r\n+\t\t\toutfile.write(dico_index[j]+\'\\t\'+n+\'\\n\')\r\n+\toutfile.close()\r\n+\toutfile1.close()\r\n+\t\r\n+if __name__ == "__main__": __main__()\n\\ No newline at end of file\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/reorderient.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/reorderient.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,72 @@ +<tool id="reorderient" name="reorderient" version="0.1"> + <description> : Perform local rearrangment between scaffold ordered based on the UPGMA</description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + python $__tool_directory__/reorderient.py + --mat $mat + --scaff $scaff + --mark $mark + --type $type + --iter $iter + --out1 $optimal_scaffold_order + --out2 $optimal_marker_order + </command> + <inputs> + <param name="mat" type="data" format="tabular" label="The data matrix with pair-wise statistics between markers" /> + <param name="mark" type="data" format="tabular" label="The *first_marker_order file generated by UPGMA" /> + <param name="scaff" type="data" format="tabular" label="The *first_scaff_order file generated by UPGMA" /> + <param name="type" type="select" label="The type of data. IDENT for identity statistics (ex LOD), DIF for difference statistics (ex REC)" > + <option value="IDENT">IDENT</option> + <option value="DIF">DIF</option> + </param> + <param name="iter" type="text" label="Number of rearrangment without improving before stopping (integer, 'auto' or 'all')" value="auto" /> + <param name="prefix" type="text" label="Prefix of output files" value="optimal" /> + </inputs> + <outputs> + <data format="tabular" name="optimal_scaffold_order" label="${tool.name} : $prefix scaffold order" /> + <data format="tabular" name="optimal_marker_order" label="${tool.name} : $prefix marker order" /> + </outputs> + <tests> + <test> + <param name="mat" value="lod_matrix.txt"/> + <param name="scaff" value="scaffold_order.txt" /> + <param name="mark" value="marker_order.txt" /> + <output name="optimal_scaffold_order" file="optimal_scaffold_order.txt"/> + <output name="optimal_marker_order" file="optimal_marker_order.txt"/> + </test> + </tests> + <help> + +**Overview** + +This program take as input a matrix containing marker linkage or divergence information and the two output files of UPGMA and try to optimize the scaffold order and orientation. + +The optimization is performed by calculating a score for the scaffold order, trying rearrangements (scaffold or scaffold group permutations and/or inversion) followed by score re-calculation. + +If the new score is better than the previous, the new order is conserved; else, the previous order is conserved. + +The program stops when more than a defined number of consecutive rearrangement (Number of rearrangment) do not improve the ordering. + + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/scaff2chrom.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/scaff2chrom.py Mon Nov 14 07:39:42 2016 -0500 |
[ |
@@ -0,0 +1,185 @@ +#!/usr/local/bioinfo/python/2.7.9/bin/python +# +# Copyright 2014 CIRAD +# +# 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/> or +# write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# + + +import optparse, os, shutil, subprocess, sys, tempfile, fileinput, ConfigParser, operator +from Bio.Seq import Seq +from Bio.Alphabet import generic_dna +from Bio import SeqIO +from Bio.SeqRecord import SeqRecord + +def rev_seq(seq): + #function that reverse and complement a sequence + my_dna = Seq(seq, generic_dna) + return str(my_dna.reverse_complement()) + + +def __main__(): + #Parse Command Line + parser = optparse.OptionParser(usage="python %prog [options]\n\nProgram designed by Guillaume MARTIN : guillaume.martin@cirad.fr\n\n" + "This program takes in input files a multifasta containing scaffolds and a table file containing scaffolds order calculated by reorderient.py and " + "output a multifasta file containing reconstructed chromosomes and an agp file locating scaffolds into chromosomes.\n") + + # Wrapper options. + parser.add_option( '', '--table', dest='table', default=None, help='Table file containing in column 1: chromosome name, column 2: scaffold name, column 3: expected orientation (FWD or REV).') + parser.add_option( '', '--seq', dest='seq', default=None, help='Multifasta sequence file containing scaffolds.') + parser.add_option( '', '--unknown', dest='unknown', default='yes', help='Build an unknown chromosome with the remaining sequences: yes or no, [default: %default].') + parser.add_option( '', '--out', dest='out', default='chromosomes.fasta', help='Fasta output file name.') + parser.add_option( '', '--agp', dest='agp', default='chromosomes.agp', help='agp output file name.') + (options, args) = parser.parse_args() + + if options.table == None: + sys.exit('--table argument is missing') + if options.seq == None: + sys.exit('--seq argument is missing') + + #loading sequences + record_dict = SeqIO.index(options.seq, "fasta") + file = open(options.table) + dico = set() + chr = '' + debut = 0 + sequence = '' + scaff = '' + outfile = open(options.out,'w') + outfile2 = open(options.agp,'w') + outfile2.write("##agp-version 2.0\n") + status = "" + for line in file: + data = line.split() + if data: + if data[1] in dico: + print 'Warning '+data[1]+' is found more than once' + dico.add(data[1]) + if not(data[1] in record_dict): + print data[1]+' is not in the fasta file' + i -= 1 + elif chr == '': + i = 0 + chr = data[0] + if len(data) == 2: + sequence = str(record_dict[data[1]].seq) + else:#contain information on orientation + if data[2] == 'FWD': + sequence = str(record_dict[data[1]].seq) + elif data[2] == 'REV': + sequence = rev_seq(str(record_dict[data[1]].seq)) + else: + sys.exit('The orientation information is not recognized') + scaff = data[1] + if len(data) >= 3: + status = data[2] + else: + status = "" + elif chr == data[0]: + i += 1 + if status == 'FWD': + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + elif status == 'REV': + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t-\n') + else: + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + debut = len(sequence) + i += 1 + sequence = sequence + 'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN' + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tN\t100\tfragment\tno\n') + debut = len(sequence) + if len(data) == 2: + sequence = sequence + str(record_dict[data[1]].seq) + else:#contain information on orientation + if data[2] == 'FWD': + sequence = sequence + str(record_dict[data[1]].seq) + elif data[2] == 'REV': + sequence = sequence + rev_seq(str(record_dict[data[1]].seq)) + else: + sys.exit('The orientation information is not recognized') + scaff = data[1] + if len(data) >= 3: + status = data[2] + else: + status = "" + else: + i += 1 + if status == 'FWD': + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + elif status == 'REV': + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t-\n') + else: + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + SeqIO.write(SeqRecord(Seq(sequence, generic_dna), id = chr, description=''),outfile, "fasta") + chr = data[0] + debut = 0 + i = 0 + sequence = '' + if len(data) == 2: + sequence = sequence + str(record_dict[data[1]].seq) + else:#contain information on orientation + if data[2] == 'FWD': + sequence = sequence + str(record_dict[data[1]].seq) + elif data[2] == 'REV': + sequence = sequence + rev_seq(str(record_dict[data[1]].seq)) + else: + sys.exit('The orientation information is not recognized') + scaff = data[1] + if len(data) >= 3: + status = data[2] + else: + status = "" + i += 1 + if status == 'FWD': + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + elif status == 'REV': + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t-\n') + else: + outfile2.write(chr+'\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + SeqIO.write(SeqRecord(Seq(sequence, generic_dna), id = chr, description=''),outfile, "fasta") + #all chromosomes have been constructed, now it is time to build unknown chromosome + if options.unknown == 'yes': + liste = [] + for n in record_dict: + if not(n in dico): + liste.append([n, len(str(record_dict[n].seq))]) + liste = sorted(liste, key=operator.itemgetter(1), reverse = True) + sequence = '' + debut = 0 + i = 0 + for n in liste: + if sequence == '': + sequence = str(record_dict[n[0]].seq) + else: + i += 1 + outfile2.write('chrUn_random\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + debut = len(sequence) + i += 1 + sequence = sequence + 'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN' + outfile2.write('chrUn_random\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tN\t100\tfragment\tno\n') + debut = len(sequence) + sequence = sequence + str(record_dict[n[0]].seq) + scaff = n[0] + i += 1 + if sequence: + outfile2.write('chrUn_random\t'+str(debut+1)+'\t'+str(len(sequence))+'\t'+str(i)+'\tW\t'+scaff+'\t1\t'+str(len(sequence)-debut)+'\t+\n') + SeqIO.write(SeqRecord(Seq(sequence, generic_dna), id = 'chrUn_random', description=''),outfile, "fasta") + outfile.close() + outfile2.close() + +if __name__ == "__main__": __main__() \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/scaff2chrom.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/scaff2chrom.xml Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,60 @@ +<tool id="scaff2chrom" name="scaff2chrom" version="0.1"> + <description> : Assemble scaffolds in a chromosome </description> + <stdio> + <exit_code range="1:" /> + </stdio> + <command> + source $__tool_directory__/include_scaffhunter.sh ; + $__tool_directory__/scaff2chrom.py + --table $table + --seq $seq + --out $fasta_file + --agp $agp_file + --unknown $unknown + </command> + <inputs> + <param name="seq" type="data" format="fasta" label="Scaffold fasta file" /> + <param name="table" type="data" format="tabular" label="Table file containing in column 1: chromosome name, column 2: scaffold name, column 3: expected orientation (FWD or REV)" /> + <param name="prefix" type="text" label="Prefix of output files" /> + <param name="unknown" type="select" label="Create unknown chromosome with remaining sequences" > + <option value="yes" selected="true">yes</option> + <option value="no">no</option> + </param> + </inputs> + <outputs> + <data format="fasta" name="fasta_file" label="${tool.name} : $prefix fasta" /> + <data format="txt" name="agp_file" label="${tool.name} : $prefix agp" /> + </outputs> + <tests> + <test> + <param name="seq" value="scaffolds.fasta"/> + <param name="table" value="LOD_chr01_scaff_order_opt.tab" /> + <output name="fasta_file" file="chromosome.fasta"/> + <output name="agp_file" file="chromosome.agp"/> + </test> + </tests> + <help> + +**Overview** + +This program takes as input files a multifasta containing scaffolds and a table file containing scaffolds order calculated by reorderient and output a multifasta file containing reconstructed chromosomes and an agp file locating scaffolds into chromosomes. + +----- + +.. class:: infomark + +**Galaxy integration** Martin Guillaume (CIRAD), Droc Gaetan (CIRAD). + +.. class:: infomark + +**Support** For any questions about Galaxy integration, please send an e-mail to galaxy-dev-southgreen@cirad.fr + +.. class:: infomark + +**Program encapsulated in Galaxy by South Green** + + </help> + <citations> + <citation type="doi">10.1186/s12864-016-2579-4</citation> + </citations> +</tool> \ No newline at end of file |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/LOD_chr01_scaff_order_opt.tab --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/LOD_chr01_scaff_order_opt.tab Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,8 @@ +chr01 scaff8 REV Ord +chr01 scaff3 FWD Ord +chr01 scaff2 REV Ord +chr01 scaff4 REV Ord +chr01 scaff7 FWD Ord +chr01 scaff5 FWD Ord +chr01 scaff1 REV Ord +chr01 scaff6 FWD Ord |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/REF.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/REF.fasta Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,244130 @@\n+>chr01\r\n+GGTTCCAAACTAGCTCGACTCAGGCTTAACCCAGTTATAACTGGATCAGGAAGACGCGTG\r\n+AGCCGAACTGGCCAAAACGAGCCCATGGGCCAGGAGACGCTCCTGGCCGTGACATTATAT\r\n+TTCCAATGAAAAATAAATATTATAAATATATAAAAAAAATTGAGATTTATAATAATTGAA\r\n+GCAACACACGTTGGAAACAATAAATGATCAACCAATTACTGTATGGAGGCGGCAAATAAG\r\n+TGCTTAAAACTGATCAGTTATAAAATATTAATGGGAAAAAAGAAAAATAAATCAAAACTT\r\n+GTTTAGGGTGGTTTAGGGTTTAGGGACGGTCGATCGTTGTCGCCCGCTACAGGACGGTAT\r\n+TAGCCGAGGGAGAAGGAAGAAGAGAGAGAAGAAAAAGGAGAACTTGGAGATCTGATGCCA\r\n+CTCTCCATCGACGATCCCAATTCGTCGTCGCCCTCCCTCACCAGGCGTCGCAGATGCGAT\r\n+GTCGCCTCCTAGTTTAAGGCAACGAGGCCTCGGCGTCGTCGACGACTTCTTATCCGTATG\r\n+GGGAGAAGAAACCTCTACAATGATGTCATGGAGGCTTCGCGGGGAGAAGAAATGTCTTCT\r\n+CCCCACACGAGGAGAAGAAACGAGGCGACGTCGCCTTGACGACGTTGCCATTTTTTTATT\r\n+TTTTACTTTTTTATTATATATATATATATACATACATACATATATATACCGAGTGGTACG\r\n+TCAGAGTATACCATTCGGCATACTCATACCGTACCATACTAAGCTGATCTCGATACTCCG\r\n+GTACGATACGAAATTGCAAACCTTGACTTATACCCATAATATTAATTCTTTTTAGTTTGC\r\n+AAAAAAAAATAATTTAAAGTATAATATAAACTTCAAAACAAAAATATTACAAAATAACAT\r\n+ATCATGGTAATTGTACATTTGAACTTGCTTAATGTGTCTATGCAGAATATAGCACAAAAC\r\n+TATCTGTACCTATAATTAACTTGGGAAGCACAACCTAACATAGTCAATTAATGTTCCTTG\r\n+TTTGGCATGGCTGGCAGATCCGTTTCTTTACACAACCCATAACCAAAGAAATGCTCTACA\r\n+AATTGTCTGCTTCCTTCTTTCAAAAAGGAAGGAAGAGGAGAATACAGAACTCTACTCTTG\r\n+CTTAAACATGAATAAATTTAATAAGGACATCACCAAGGTCTGTTTCCACTCTATTTATAA\r\n+TTTGTTAAAATTATCAAAAACAAAGCATGCCCACCCAGTTTCTAAGATCAACAAAAACAC\r\n+CAATGCAGTAATGTTTGTAAGATCAGCTTAGAGTAAAACCAAGAATCAAGTATCGAAACC\r\n+TTACTTCCCAACTTCATCACAATCTAATTCCACATAGAAATAATGAAGAGAAAAGAACAC\r\n+AACACTCAACCATTTTCTAAAGCCACATGAACCACAAGACCCAAGTAATGAGACCCAAAT\r\n+ACAGATTTAGGGTTGGCGTGAGTATCCATAAATAGAATAAGATAAAGCAAAGTGGAAGAA\r\n+CTATTCAATATTTCAAAAGATCAAGACACAATCATGAGACTAGACAATCCAATTAGTTTC\r\n+ATGTATACTGTTAAGTGCATAGTGTCACTTCTTTTTTCACAAAATAGACAAATAATACAA\r\n+TTTAAGATAAGGATAACTTTAAGTAGCACTAATTGATCCGAAACGAGAGCGACCGAGTGC\r\n+TAGGGCAAGATTGAAGGCGACAAAAAAAACCCGATCAAGAATCAAAACTAGAGAACAAGA\r\n+TTGAATACGAACCAAAGCAATTGATCCGAAACAACAAGGCCGTGAGCTGGGGGCTGCCAA\r\n+GAGCAAGAGAAACGCTCGAGGAGAAACCTAATAGCTTGCCTAGCGACAAGGTGGAAGAGG\r\n+GAGGGGGAGGGACGAGGGACCGGGGAAGGGGGGGCTGCGATGGCGAAGGACGAAGAAAAG\r\n+AAGAAAGAGAGATATACCAGGGAGTAGAGACGCCACCCAACTCTGCCGCTAGATGAAGAA\r\n+GAAGACGCAGCAGCCGTCGTTCACCGACGAAAAAGCTGCAGCGACAAGAACCCCCGGTAG\r\n+GAAGACAACGCCGTTGCTCCGCTGTTCACTTATGAAGAGGAAGATGGTCGACGTTCGCCG\r\n+AGGAAACGCAGCAATCGCCGTTGGGGAGAGAGAGAGTGCCCGGTGGGAGAACAACCACCG\r\n+CTTAGGGCACGGGAACGACCAGCAAGTGTGTTGTGGGGCGGGTTTCAGGGTGATTATTGC\r\n+CAATTTAGCTTGACTCAAGTTCGACTCAGAATAGTTGAATCACGCCGGAACAAAAGCCCA\r\n+GCAATAGCTTGACTCAAGTTCGACTCAGAATAGTTGAATCACGCCGGAACAAAAGCCCAG\r\n+CAATGCTTGGGCCCAAACTAGCGCACAGGCCGAACGCTAGTTTATAAAAATATATAATAT\r\n+AATTAATAATTTCAAATAAATAAAAATTAACAACATTAAAATCAAAATAATATATTATTA\r\n+ATCTATTAACAAAAAATTAATCATTTCAAAATTCAAATAAACTTAATATTTAGAGTATAT\r\n+TGTATACTGAGCCTGATGGAGAAACGAGGAAGCAGCGGCGAGCGGCGGCAACGACAGCGA\r\n+GAAAGGGAAAGGGAGCGGAAGGCACGAGCAGCGGGAGGCGCGAGCAGCGGCAAGGCTTGC\r\n+GGGAGGCGCGAGCAGCGACAGCGGCGAGCGGCGGCAGTGGGAGCAGGAGCGACGAGCAGC\r\n+GAGATCACGATCGGGATCGGGATCGGTAGTAGGTTAGGGTTGGGTAAGGGTTAGGGTTGG\r\n+GGATATATCGGTTTAGTTGGTTCGATTGAACCAACTAACAACCGAACCAGACCTAAAATT\r\n+CTGGTTCGGTCTCCTTGGTTTACCCAGGCGCTCGCCCGAAGCGCTTGGGCTCGGGCAAGC\r\n+GCCCAGGCGGCGTCTGTTTGAAGCACGCCGCCTGGGACATTAGCGAGGCGCTCGGGCCTC\r\n+GCCTCGCCTCGCCCGAGCGCCTAGGCGAGCGCCAGAGCGCCTTTTTCAATCACTGTGACA\r\n+GCCTAGTAGTTGGATCAACATAATGCGTCGATCAAGATGGGATGTTTACCAGACGATTAC\r\n+TATTAGTAAGCTGCTAAATGAGATAGAGGCCCCATTATGTCGAGATTCGAAAGAGGAGTT\r\n+GGCTCCTGACTTCTGAAAGAATAGCTGCTTAGCATGACAGGATACCGATATTATGGCTCC\r\n+AAGGAACATGAGTAAATATGTTGAAGCTAGTTTAGATGTATACACAGTGTGATTATATAA\r\n+AAGATCTTTTGTCTTTTTTTGTTTTCTCCTTCCCATCAAGTATGTTTGAAACTCGCAATC\r\n+TTTGGGACATTGATTGATCTTTTTCTACCTACTTCTCTTTGGAGATTTTGCAGCCCCTAC\r\n+ACCTTAATTGCTTTGTTATTCTTGTGTGTTCTATTGATCGGTTAATTGTTTTGCTTTTAC\r\n+TTACTGGTGAAATTTATAATTTCGGTGAAGTTTTGAGGAGCCAAAAGGTTTCAAGAAGAT\r\n+GCCATGGACAAGTGCATTGGAGTGCCCTGGATGCCCACCTTTGAGAGCCTTGACGACTGA\r\n+CGTGCTCGGTCTTGTAAAAGGTGGTTGTTGTTGCTTAAACATTACTCTTTCTTGAATGGT\r\n+CTACATGGCATGCATTTCTTAATTACAACTCATGATGTGATATTGCAATGAGTTTTCAGT\r\n+TGTCGAAGCTCATGGAAAGACTGGAATTCCAAAGGTGGTAGAAACATGGGGGCAGCCAAA\r\n+TGCTTCATCTTGTGTCCTTGCTGCTTCTTATTCTGATCACAAATCTGATCTGGTTTGTTA\r\n'..b'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTGTGTCATATCTACAAAAA\r\n+TGAAAATAAATGGGATATCTTGAATTTGTCGTTAGCTTTTAACTACAACCGAAGTTAGGT\r\n+ATGTTCGGCTCTTACACAAATTACTATATCGTAAAGGTGCCTTGCGAAATGAGAGTGTTA\r\n+GTCGTTCATTATTTTTTATCTTGGTCTTCGATTGCAGATGGACCCTTTGATAGGCGAGGT\r\n+TATTCAACACTGGCACAGATTTTACTGTCACAATAGCGATGACCAATCATTCTTGTAAAA\r\n+TTAATTTGATAAGCATAGCACGAGTTCCTTATCCAAGTTCGATCAACTTTCTTATATCAC\r\n+AACAGCCCTCAACCTCAAGAAAAAAGTTGATATTCTCTCGAGCACAAATGCAAAAGGTAT\r\n+TATTCCTAATATCCGCAAGAATCAACCGAAGCTATTTTCAAATACCTCAGAAGAGAAATA\r\n+GGATATAAACAAGCAATCTAGTGCAACACAAAATCGGGGAACTAGCAACTGTATCAGGTT\r\n+CATATCTGCGTCAACAAATTATATCTGCATCAATTGTAAGATTTCTATGAAAAGAAAATG\r\n+TACTCCCACTTGCATTATATTCTCTTGCTTTCCAATTTTCTAATATGTCAAATATCAAAA\r\n+ATCATGATTGACATAAAAAACAATTGAAATCATGTGTCAATTTGAATAGTCTTGTTAAAC\r\n+CATTTAATTAATTATCTTATGCATTTACTTTTGGTAGATCTGACAAAAGATTTGATTAAC\r\n+CCTCTTTTTCTTTGTTTAAATTTTAAAATTTTATTTTATCGAAATTTTAATATTTTTATT\r\n+TTGACTAAATTTTAATATTTTTAATTTGATATTGACTAATATTTTTTATTTCCATTTTGA\r\n+CTAATTCTTTTTTATTTTGATTTTTACAATTATTATTATTATTTTAATTTTGAAAAATAT\r\n+TATTTTTCATATTAAATATTAGAAAAAAGTAATTTGATTAGTATAATCCATAGTTTAATC\r\n+TTATATGCATCAAAAGGTAACATAAATTTTAGGAAGAACCAAGATTCTAGATTTGATATG\r\n+GTAGAATAATTTTCATTCATTCCCATCCAATCAAAATCTTTTTTTGATAAGTCTTGGTAT\r\n+TTTTATTAATTACGATATCGGTATACATATCAGTCTAGTTCTCAATATCTCTGTTGTTTT\r\n+TAAAGTAAAAATAAAGAATTCTATAATTCAAATATTTTCTATCTAGATTTTTATGGGTAT\r\n+CAATAAAATATCATTACTATGCCCATAATTTATATATTAATGTGATAAAAGATCATATCT\r\n+ATAGTGTTTTTAAAATTTATATATAGTTGCACTGGATTGCTAGTTTGTACACTATTTCTA\r\n+TTCTAAAAAATTGGAGATAAGCTTCGATTGATACTTGCGATTATTAGGAATAATACCTTT\r\n+TGCATTTAGGCTCGAGAGAATATCAACTTTTTTCTTGAGGTCAAGGGCAGCTATGAAGTA\r\n+AAAAGTTAATTGTATCTGGATAAGGAACACATGTTATGTTTATCCCATTTATGTTGCCAG\r\n+AATGAATGGCCATCGCTGCTGGGACAGCGAAAATTAAGCTGGTATTGAATCATCTCGCCT\r\n+ATCAGGGGTTTTATCTGCAATCTAAGAACAAGATAAAAAAATGATGAATGACTCACTCTC\r\n+TTATTTCGCTTGGAACCTTTACGATAGAGTAGTCTGTGTCAAAGCCGAACACATTCTGTT\r\n+TTAGCTAGAAGCTGACGACATATTCTTGTCATAAGATGGAAACGTTCCATTGCTGAAAGC\r\n+GGGCAACTATCATTGATGATAACGTTTTTTTCCGGATATCCTGTACTCATAGGACACCAA\r\n+CGGTTGACATTGCAACATGATCCGTGCCACTGTATGTTTCAAATCAGAGCAATCAATATA\r\n+GAGAAAAACAAGAGATATAAAAAAATTAGACTTACCAGTAGAACTAAGTGAAAATAATCA\r\n+TAATTGGACACAATAGTGGTGGAGAAAACCAGCAAGAAAGGGACAACGAGAGGTGTCATG\r\n+CTTTGGCGAGTTAGACTTCTGGGCATGTC\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/alignment_chromosome.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/alignment_chromosome.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,499 @@\n+Musa500\tchr01\t12823\n+Musa499\tchr01\t29432\n+Musa498\tchr01\t59716\n+Musa497\tchr01\t72104\n+Musa496\tchr01\t87140\n+Musa495\tchr01\t93707\n+Musa494\tchr01\t101426\n+Musa493\tchr01\t156104\n+Musa492\tchr01\t169528\n+Musa491\tchr01\t205668\n+Musa490\tchr01\t248329\n+Musa489\tchr01\t263780\n+Musa488\tchr01\t322343\n+Musa486\tchr01\t380077\n+Musa485\tchr01\t435528\n+Musa484\tchr01\t439888\n+Musa483\tchr01\t441248\n+Musa482\tchr01\t473405\n+Musa481\tchr01\t488705\n+Musa480\tchr01\t495728\n+Musa479\tchr01\t503236\n+Musa478\tchr01\t517598\n+Musa477\tchr01\t581530\n+Musa476\tchr01\t588889\n+Musa475\tchr01\t652411\n+Musa474\tchr01\t673547\n+Musa473\tchr01\t707613\n+Musa472\tchr01\t732730\n+Musa471\tchr01\t734932\n+Musa470\tchr01\t781566\n+Musa469\tchr01\t785161\n+Musa468\tchr01\t833803\n+Musa467\tchr01\t865797\n+Musa466\tchr01\t895108\n+Musa465\tchr01\t997337\n+Musa464\tchr01\t1002238\n+Musa463\tchr01\t1006987\n+Musa462\tchr01\t1027681\n+Musa461\tchr01\t1085764\n+Musa460\tchr01\t1086935\n+Musa459\tchr01\t1148535\n+Musa458\tchr01\t1161234\n+Musa457\tchr01\t1194306\n+Musa456\tchr01\t1250445\n+Musa455\tchr01\t1309097\n+Musa454\tchr01\t1328320\n+Musa453\tchr01\t1374444\n+Musa452\tchr01\t1400164\n+Musa451\tchr01\t1402819\n+Musa450\tchr01\t1463698\n+Musa449\tchr01\t1502045\n+Musa448\tchr01\t1557873\n+Musa447\tchr01\t1578212\n+Musa446\tchr01\t1604942\n+Musa445\tchr01\t1619040\n+Musa444\tchr01\t1633309\n+Musa443\tchr01\t1650745\n+Musa442\tchr01\t1668531\n+Musa441\tchr01\t1686145\n+Musa440\tchr01\t1762143\n+Musa439\tchr01\t1766908\n+Musa438\tchr01\t1812431\n+Musa437\tchr01\t1814731\n+Musa436\tchr01\t1823279\n+Musa435\tchr01\t1828819\n+Musa434\tchr01\t1831595\n+Musa433\tchr01\t1833232\n+Musa432\tchr01\t1893746\n+Musa431\tchr01\t1910090\n+Musa430\tchr01\t1912626\n+Musa429\tchr01\t1958648\n+Musa428\tchr01\t2075487\n+Musa427\tchr01\t2171147\n+Musa426\tchr01\t2220042\n+Musa425\tchr01\t2225008\n+Musa424\tchr01\t2236425\n+Musa423\tchr01\t2239827\n+Musa422\tchr01\t2270542\n+Musa421\tchr01\t2293934\n+Musa420\tchr01\t2345849\n+Musa419\tchr01\t2373685\n+Musa418\tchr01\t2418404\n+Musa417\tchr01\t2439005\n+Musa416\tchr01\t2463116\n+Musa415\tchr01\t2475568\n+Musa414\tchr01\t2495613\n+Musa413\tchr01\t2516284\n+Musa412\tchr01\t2521134\n+Musa411\tchr01\t2566659\n+Musa410\tchr01\t2597509\n+Musa409\tchr01\t2688620\n+Musa408\tchr01\t2694406\n+Musa407\tchr01\t2713423\n+Musa406\tchr01\t2812542\n+Musa405\tchr01\t2824019\n+Musa404\tchr01\t2839196\n+Musa403\tchr01\t2879048\n+Musa402\tchr01\t2946715\n+Musa401\tchr01\t2968807\n+Musa400\tchr01\t2976279\n+Musa399\tchr01\t3014264\n+Musa398\tchr01\t3052111\n+Musa397\tchr01\t3079897\n+Musa396\tchr01\t3158513\n+Musa395\tchr01\t3177808\n+Musa394\tchr01\t3215785\n+Musa393\tchr01\t3257152\n+Musa392\tchr01\t3321225\n+Musa391\tchr01\t3323936\n+Musa390\tchr01\t3384552\n+Musa389\tchr01\t3426682\n+Musa388\tchr01\t3460375\n+Musa387\tchr01\t3467746\n+Musa386\tchr01\t3482768\n+Musa385\tchr01\t3530411\n+Musa384\tchr01\t3554404\n+Musa383\tchr01\t3558357\n+Musa382\tchr01\t3573597\n+Musa381\tchr01\t3668493\n+Musa380\tchr01\t3690178\n+Musa379\tchr01\t3723524\n+Musa378\tchr01\t3739256\n+Musa377\tchr01\t3764967\n+Musa376\tchr01\t3802034\n+Musa375\tchr01\t3828489\n+Musa374\tchr01\t3829951\n+Musa373\tchr01\t3846285\n+Musa372\tchr01\t3855480\n+Musa371\tchr01\t3862394\n+Musa370\tchr01\t3863595\n+Musa369\tchr01\t3872855\n+Musa368\tchr01\t3959275\n+Musa367\tchr01\t3992204\n+Musa366\tchr01\t4013248\n+Musa365\tchr01\t4035112\n+Musa364\tchr01\t4037684\n+Musa363\tchr01\t4080987\n+Musa362\tchr01\t4101931\n+Musa361\tchr01\t4135863\n+Musa360\tchr01\t4149509\n+Musa359\tchr01\t4195781\n+Musa358\tchr01\t4211901\n+Musa357\tchr01\t4235749\n+Musa356\tchr01\t4236526\n+Musa355\tchr01\t4271204\n+Musa354\tchr01\t4274547\n+Musa353\tchr01\t4275105\n+Musa352\tchr01\t4287746\n+Musa351\tchr01\t4293355\n+Musa350\tchr01\t4294328\n+Musa349\tchr01\t4313673\n+Musa348\tchr01\t4320084\n+Musa347\tchr01\t4348294\n+Musa346\tchr01\t4352381\n+Musa345\tchr01\t4409920\n+Musa344\tchr01\t4452151\n+Musa343\tchr01\t4466730\n+Musa342\tchr01\t4475765\n+Musa341\tchr01\t4496074\n+Musa340\tchr01\t4551621\n+Musa339\tchr01\t4557715\n+Musa338\tchr01\t4620690\n+Musa337\tchr01\t4627308\n+Musa336\tchr01\t4628471\n+Musa335\tchr01\t4639623\n+Musa334\tchr01\t4643797\n+Musa333\tchr01\t4667136\n+Musa332\tchr01\t4668286\n+Musa331\tchr01\t4744401\n+Musa330\tchr01\t4773545\n+Musa329\tchr01\t4779176\n+Musa328\tchr01\t4831123\n+Musa327\tchr01\t4854069\n+Musa326\tchr01\t4862377\n+Musa325\tchr01\t49307'..b'1\t9846862\n+Musa171\tchr01\t9861079\n+Musa170\tchr01\t9864620\n+Musa169\tchr01\t9873098\n+Musa168\tchr01\t9913032\n+Musa167\tchr01\t9954619\n+Musa166\tchr01\t9992234\n+Musa165\tchr01\t9994641\n+Musa164\tchr01\t10020019\n+Musa163\tchr01\t10027002\n+Musa162\tchr01\t10038734\n+Musa161\tchr01\t10041324\n+Musa160\tchr01\t10089003\n+Musa159\tchr01\t10115545\n+Musa158\tchr01\t10166691\n+Musa157\tchr01\t10209249\n+Musa156\tchr01\t10256571\n+Musa155\tchr01\t10280880\n+Musa154\tchr01\t10285868\n+Musa153\tchr01\t10306451\n+Musa152\tchr01\t10344881\n+Musa151\tchr01\t10346183\n+Musa150\tchr01\t10363204\n+Musa149\tchr01\t10368712\n+Musa148\tchr01\t10404151\n+Musa147\tchr01\t10414647\n+Musa146\tchr01\t10454047\n+Musa145\tchr01\t10466308\n+Musa144\tchr01\t10477787\n+Musa143\tchr01\t10492240\n+Musa142\tchr01\t10509105\n+Musa141\tchr01\t10527347\n+Musa140\tchr01\t10532054\n+Musa139\tchr01\t10536449\n+Musa138\tchr01\t10546207\n+Musa137\tchr01\t10548550\n+Musa136\tchr01\t10554036\n+Musa135\tchr01\t10576141\n+Musa134\tchr01\t10696395\n+Musa133\tchr01\t10730956\n+Musa132\tchr01\t10751064\n+Musa131\tchr01\t10760849\n+Musa130\tchr01\t10839818\n+Musa129\tchr01\t10859220\n+Musa128\tchr01\t10909850\n+Musa127\tchr01\t10947054\n+Musa126\tchr01\t10978819\n+Musa125\tchr01\t11005368\n+Musa124\tchr01\t11055182\n+Musa123\tchr01\t11057084\n+Musa122\tchr01\t11100471\n+Musa121\tchr01\t11150522\n+Musa120\tchr01\t11152962\n+Musa119\tchr01\t11207699\n+Musa118\tchr01\t11213147\n+Musa117\tchr01\t11285913\n+Musa116\tchr01\t11368347\n+Musa115\tchr01\t11387315\n+Musa114\tchr01\t11414696\n+Musa113\tchr01\t11420395\n+Musa112\tchr01\t11448360\n+Musa111\tchr01\t11459019\n+Musa110\tchr01\t11461793\n+Musa109\tchr01\t11536406\n+Musa108\tchr01\t11556873\n+Musa107\tchr01\t11695220\n+Musa106\tchr01\t11699554\n+Musa105\tchr01\t11706623\n+Musa104\tchr01\t11735435\n+Musa103\tchr01\t11749572\n+Musa102\tchr01\t11761840\n+Musa101\tchr01\t11764783\n+Musa100\tchr01\t11771132\n+Musa99\tchr01\t11802985\n+Musa98\tchr01\t11807272\n+Musa97\tchr01\t11856299\n+Musa96\tchr01\t11874851\n+Musa95\tchr01\t11884476\n+Musa94\tchr01\t11952204\n+Musa93\tchr01\t11954222\n+Musa92\tchr01\t11969936\n+Musa91\tchr01\t12007516\n+Musa90\tchr01\t12149243\n+Musa89\tchr01\t12179214\n+Musa88\tchr01\t12212877\n+Musa87\tchr01\t12240507\n+Musa86\tchr01\t12249787\n+Musa85\tchr01\t12261022\n+Musa84\tchr01\t12309761\n+Musa83\tchr01\t12396047\n+Musa82\tchr01\t12424890\n+Musa81\tchr01\t12503168\n+Musa80\tchr01\t12541625\n+Musa79\tchr01\t12576371\n+Musa78\tchr01\t12587019\n+Musa77\tchr01\t12609088\n+Musa76\tchr01\t12626937\n+Musa75\tchr01\t12645333\n+Musa74\tchr01\t12692044\n+Musa73\tchr01\t12704015\n+Musa72\tchr01\t12733580\n+Musa71\tchr01\t12737338\n+Musa70\tchr01\t12750328\n+Musa69\tchr01\t12754256\n+Musa68\tchr01\t12761502\n+Musa67\tchr01\t12770525\n+Musa66\tchr01\t12791553\n+Musa65\tchr01\t12804589\n+Musa64\tchr01\t12817249\n+Musa63\tchr01\t12831884\n+Musa62\tchr01\t12833206\n+Musa61\tchr01\t12878084\n+Musa60\tchr01\t12882744\n+Musa59\tchr01\t12905932\n+Musa58\tchr01\t12951116\n+Musa57\tchr01\t13008967\n+Musa56\tchr01\t13027657\n+Musa55\tchr01\t13048369\n+Musa54\tchr01\t13055521\n+Musa53\tchr01\t13102460\n+Musa52\tchr01\t13105713\n+Musa51\tchr01\t13145191\n+Musa50\tchr01\t13149121\n+Musa49\tchr01\t13173549\n+Musa48\tchr01\t13344599\n+Musa47\tchr01\t13348232\n+Musa46\tchr01\t13426700\n+Musa45\tchr01\t13448308\n+Musa44\tchr01\t13492605\n+Musa43\tchr01\t13492847\n+Musa42\tchr01\t13518144\n+Musa41\tchr01\t13529285\n+Musa40\tchr01\t13535885\n+Musa39\tchr01\t13540823\n+Musa38\tchr01\t13564211\n+Musa37\tchr01\t13604364\n+Musa36\tchr01\t13606053\n+Musa35\tchr01\t13664062\n+Musa34\tchr01\t13666155\n+Musa33\tchr01\t13770935\n+Musa32\tchr01\t13786842\n+Musa31\tchr01\t13801474\n+Musa30\tchr01\t13839881\n+Musa29\tchr01\t13863957\n+Musa28\tchr01\t13939398\n+Musa27\tchr01\t13953391\n+Musa26\tchr01\t13975183\n+Musa25\tchr01\t14008954\n+Musa24\tchr01\t14022475\n+Musa23\tchr01\t14076341\n+Musa22\tchr01\t14096343\n+Musa21\tchr01\t14115524\n+Musa20\tchr01\t14146321\n+Musa19\tchr01\t14146327\n+Musa18\tchr01\t14147468\n+Musa17\tchr01\t14163219\n+Musa16\tchr01\t14166384\n+Musa15\tchr01\t14171300\n+Musa14\tchr01\t14177075\n+Musa13\tchr01\t14226242\n+Musa12\tchr01\t14233597\n+Musa11\tchr01\t14244907\n+Musa10\tchr01\t14253437\n+Musa9\tchr01\t14325036\n+Musa8\tchr01\t14375550\n+Musa7\tchr01\t14471393\n+Musa6\tchr01\t14486154\n+Musa5\tchr01\t14487831\n+Musa4\tchr01\t14497829\n+Musa3\tchr01\t14566529\n+Musa2\tchr01\t14614913\n+Musa1\tchr01\t14626207\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/alignment_on_scaffold3.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/alignment_on_scaffold3.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,80 @@ +Musa475 scaff3 54602 +Musa474 scaff3 75738 +Musa473 scaff3 109804 +Musa472 scaff3 134921 +Musa471 scaff3 137123 +Musa470 scaff3 183757 +Musa469 scaff3 187352 +Musa468 scaff3 235994 +Musa467 scaff3 267988 +Musa466 scaff3 297299 +Musa465 scaff3 399528 +Musa464 scaff3 404429 +Musa463 scaff3 409178 +Musa462 scaff3 429872 +Musa461 scaff3 487955 +Musa460 scaff3 489126 +Musa459 scaff3 550726 +Musa458 scaff3 563425 +Musa457 scaff3 596497 +Musa456 scaff3 652636 +Musa455 scaff3 711288 +Musa454 scaff3 730511 +Musa453 scaff3 776635 +Musa452 scaff3 802355 +Musa451 scaff3 805010 +Musa450 scaff3 865889 +Musa449 scaff3 904236 +Musa448 scaff3 960064 +Musa447 scaff3 980403 +Musa446 scaff3 1007133 +Musa445 scaff3 1021231 +Musa444 scaff3 1035523 +Musa443 scaff3 1052936 +Musa442 scaff3 1070722 +Musa441 scaff3 1088336 +Musa440 scaff3 1164334 +Musa439 scaff3 1169099 +Musa438 scaff3 1214622 +Musa437 scaff3 1216922 +Musa436 scaff3 1225470 +Musa435 scaff3 1231010 +Musa434 scaff3 1233786 +Musa433 scaff3 1235423 +Musa432 scaff3 1295937 +Musa431 scaff3 1312281 +Musa430 scaff3 1314817 +Musa429 scaff3 1360839 +Musa428 scaff3 1477678 +Musa427 scaff3 1573338 +Musa426 scaff3 1622233 +Musa425 scaff3 1627199 +Musa424 scaff3 1638616 +Musa423 scaff3 1642018 +Musa422 scaff3 1672733 +Musa421 scaff3 1696125 +Musa420 scaff3 1748040 +Musa419 scaff3 1775876 +Musa418 scaff3 1820595 +Musa417 scaff3 1841196 +Musa416 scaff3 1865307 +Musa415 scaff3 1877759 +Musa414 scaff3 1897804 +Musa413 scaff3 1918475 +Musa412 scaff3 1923325 +Musa411 scaff3 1968850 +Musa410 scaff3 1999700 +Musa409 scaff3 2090811 +Musa408 scaff3 2096597 +Musa407 scaff3 2115614 +Musa406 scaff3 2214733 +Musa405 scaff3 2226210 +Musa404 scaff3 2241387 +Musa403 scaff3 2281239 +Musa402 scaff3 2348906 +Musa401 scaff3 2370998 +Musa400 scaff3 2378470 +Musa399 scaff3 2416455 +Musa398 scaff3 2454302 +Musa397 scaff3 2482088 +Musa396 scaff3 2560704 |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/alignment_scaffold.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/alignment_scaffold.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,499 @@\n+Musa475\tscaff3\t54602\n+Musa474\tscaff3\t75738\n+Musa473\tscaff3\t109804\n+Musa472\tscaff3\t134921\n+Musa471\tscaff3\t137123\n+Musa470\tscaff3\t183757\n+Musa469\tscaff3\t187352\n+Musa468\tscaff3\t235994\n+Musa467\tscaff3\t267988\n+Musa466\tscaff3\t297299\n+Musa465\tscaff3\t399528\n+Musa464\tscaff3\t404429\n+Musa463\tscaff3\t409178\n+Musa462\tscaff3\t429872\n+Musa461\tscaff3\t487955\n+Musa460\tscaff3\t489126\n+Musa459\tscaff3\t550726\n+Musa458\tscaff3\t563425\n+Musa457\tscaff3\t596497\n+Musa456\tscaff3\t652636\n+Musa455\tscaff3\t711288\n+Musa454\tscaff3\t730511\n+Musa453\tscaff3\t776635\n+Musa452\tscaff3\t802355\n+Musa451\tscaff3\t805010\n+Musa450\tscaff3\t865889\n+Musa449\tscaff3\t904236\n+Musa448\tscaff3\t960064\n+Musa447\tscaff3\t980403\n+Musa446\tscaff3\t1007133\n+Musa445\tscaff3\t1021231\n+Musa444\tscaff3\t1035523\n+Musa443\tscaff3\t1052936\n+Musa442\tscaff3\t1070722\n+Musa441\tscaff3\t1088336\n+Musa440\tscaff3\t1164334\n+Musa439\tscaff3\t1169099\n+Musa438\tscaff3\t1214622\n+Musa437\tscaff3\t1216922\n+Musa436\tscaff3\t1225470\n+Musa435\tscaff3\t1231010\n+Musa434\tscaff3\t1233786\n+Musa433\tscaff3\t1235423\n+Musa432\tscaff3\t1295937\n+Musa431\tscaff3\t1312281\n+Musa430\tscaff3\t1314817\n+Musa429\tscaff3\t1360839\n+Musa428\tscaff3\t1477678\n+Musa427\tscaff3\t1573338\n+Musa426\tscaff3\t1622233\n+Musa425\tscaff3\t1627199\n+Musa424\tscaff3\t1638616\n+Musa423\tscaff3\t1642018\n+Musa422\tscaff3\t1672733\n+Musa421\tscaff3\t1696125\n+Musa420\tscaff3\t1748040\n+Musa419\tscaff3\t1775876\n+Musa418\tscaff3\t1820595\n+Musa417\tscaff3\t1841196\n+Musa416\tscaff3\t1865307\n+Musa415\tscaff3\t1877759\n+Musa414\tscaff3\t1897804\n+Musa413\tscaff3\t1918475\n+Musa412\tscaff3\t1923325\n+Musa411\tscaff3\t1968850\n+Musa410\tscaff3\t1999700\n+Musa409\tscaff3\t2090811\n+Musa408\tscaff3\t2096597\n+Musa407\tscaff3\t2115614\n+Musa406\tscaff3\t2214733\n+Musa405\tscaff3\t2226210\n+Musa404\tscaff3\t2241387\n+Musa403\tscaff3\t2281239\n+Musa402\tscaff3\t2348906\n+Musa401\tscaff3\t2370998\n+Musa400\tscaff3\t2378470\n+Musa399\tscaff3\t2416455\n+Musa398\tscaff3\t2454302\n+Musa397\tscaff3\t2482088\n+Musa396\tscaff3\t2560704\n+Musa283\tscaff2\t3137\n+Musa284\tscaff2\t8350\n+Musa285\tscaff2\t22190\n+Musa286\tscaff2\t29685\n+Musa287\tscaff2\t36463\n+Musa288\tscaff2\t107678\n+Musa289\tscaff2\t130221\n+Musa290\tscaff2\t131407\n+Musa291\tscaff2\t157313\n+Musa292\tscaff2\t201399\n+Musa293\tscaff2\t204491\n+Musa294\tscaff2\t345122\n+Musa295\tscaff2\t405267\n+Musa296\tscaff2\t422481\n+Musa297\tscaff2\t448813\n+Musa298\tscaff2\t461111\n+Musa299\tscaff2\t465028\n+Musa300\tscaff2\t482775\n+Musa301\tscaff2\t500435\n+Musa302\tscaff2\t573239\n+Musa303\tscaff2\t595182\n+Musa304\tscaff2\t607282\n+Musa305\tscaff2\t612597\n+Musa306\tscaff2\t641155\n+Musa307\tscaff2\t703058\n+Musa308\tscaff2\t715509\n+Musa309\tscaff2\t733787\n+Musa310\tscaff2\t749570\n+Musa311\tscaff2\t891904\n+Musa312\tscaff2\t918781\n+Musa313\tscaff2\t924431\n+Musa314\tscaff2\t1006499\n+Musa315\tscaff2\t1029723\n+Musa316\tscaff2\t1036874\n+Musa317\tscaff2\t1067755\n+Musa318\tscaff2\t1072269\n+Musa319\tscaff2\t1202387\n+Musa320\tscaff2\t1222268\n+Musa321\tscaff2\t1240526\n+Musa322\tscaff2\t1265704\n+Musa323\tscaff2\t1277301\n+Musa324\tscaff2\t1374510\n+Musa325\tscaff2\t1447068\n+Musa326\tscaff2\t1515431\n+Musa327\tscaff2\t1523739\n+Musa328\tscaff2\t1546685\n+Musa329\tscaff2\t1598632\n+Musa330\tscaff2\t1604263\n+Musa331\tscaff2\t1633407\n+Musa332\tscaff2\t1709522\n+Musa333\tscaff2\t1710672\n+Musa334\tscaff2\t1734011\n+Musa335\tscaff2\t1738185\n+Musa336\tscaff2\t1749337\n+Musa337\tscaff2\t1750500\n+Musa338\tscaff2\t1757118\n+Musa339\tscaff2\t1820093\n+Musa340\tscaff2\t1826187\n+Musa341\tscaff2\t1881734\n+Musa342\tscaff2\t1902043\n+Musa343\tscaff2\t1911078\n+Musa344\tscaff2\t1925657\n+Musa345\tscaff2\t1967888\n+Musa346\tscaff2\t2025427\n+Musa347\tscaff2\t2029514\n+Musa348\tscaff2\t2057724\n+Musa349\tscaff2\t2064135\n+Musa350\tscaff2\t2083480\n+Musa351\tscaff2\t2084453\n+Musa352\tscaff2\t2090062\n+Musa353\tscaff2\t2102703\n+Musa354\tscaff2\t2103261\n+Musa355\tscaff2\t2106604\n+Musa356\tscaff2\t2141282\n+Musa357\tscaff2\t2142059\n+Musa358\tscaff2\t2165907\n+Musa359\tscaff2\t2182027\n+Musa360\tscaff2\t2228299\n+Musa361\tscaff2\t2241945\n+Musa362\tscaff2\t2275877\n+Musa363\tscaff2\t2296821\n+Musa364\tscaff2\t2340124\n+Musa365\tscaff2\t2342696\n+Musa366\tscaff2\t2364560\n+Musa367\tscaff2\t2385604\n+Musa368\tscaff2\t2418533\n+Musa369\tscaff2\t2504953\n+Musa370\tscaff2\t2514213\n+Musa371\tscaff2\t25'..b'161\tscaff1\t3816880\n+Musa162\tscaff1\t3819470\n+Musa163\tscaff1\t3831202\n+Musa164\tscaff1\t3838185\n+Musa165\tscaff1\t3863563\n+Musa166\tscaff1\t3865970\n+Musa167\tscaff1\t3903585\n+Musa168\tscaff1\t3945172\n+Musa169\tscaff1\t3985106\n+Musa170\tscaff1\t3993584\n+Musa171\tscaff1\t3997125\n+Musa172\tscaff1\t4011342\n+Musa173\tscaff1\t4047879\n+Musa174\tscaff1\t4048092\n+Musa175\tscaff1\t4062888\n+Musa176\tscaff1\t4095609\n+Musa177\tscaff1\t4165418\n+Musa178\tscaff1\t4177419\n+Musa179\tscaff1\t4191599\n+Musa180\tscaff1\t4229496\n+Musa181\tscaff1\t4230277\n+Musa182\tscaff1\t4236817\n+Musa183\tscaff1\t4321831\n+Musa184\tscaff1\t4328160\n+Musa185\tscaff1\t4365031\n+Musa186\tscaff1\t4369942\n+Musa187\tscaff1\t4372886\n+Musa188\tscaff1\t4427788\n+Musa189\tscaff1\t4493281\n+Musa190\tscaff1\t4536269\n+Musa191\tscaff1\t4606070\n+Musa192\tscaff1\t4612281\n+Musa193\tscaff1\t4638851\n+Musa194\tscaff1\t4649255\n+Musa195\tscaff1\t4661801\n+Musa196\tscaff1\t4670588\n+Musa197\tscaff1\t4707756\n+Musa198\tscaff1\t4769140\n+Musa199\tscaff1\t4844139\n+Musa200\tscaff1\t4922119\n+Musa249\tscaff7\t18174\n+Musa248\tscaff7\t26908\n+Musa247\tscaff7\t151658\n+Musa246\tscaff7\t156232\n+Musa245\tscaff7\t176437\n+Musa244\tscaff7\t186131\n+Musa243\tscaff7\t217661\n+Musa242\tscaff7\t271788\n+Musa241\tscaff7\t321464\n+Musa240\tscaff7\t371295\n+Musa239\tscaff7\t385618\n+Musa238\tscaff7\t399358\n+Musa237\tscaff7\t400105\n+Musa236\tscaff7\t402396\n+Musa235\tscaff7\t440914\n+Musa234\tscaff7\t468131\n+Musa233\tscaff7\t514651\n+Musa232\tscaff7\t531942\n+Musa231\tscaff7\t535843\n+Musa230\tscaff7\t536241\n+Musa229\tscaff7\t551572\n+Musa228\tscaff7\t564688\n+Musa227\tscaff7\t584357\n+Musa226\tscaff7\t632781\n+Musa29\tscaff6\t5554\n+Musa28\tscaff6\t80995\n+Musa27\tscaff6\t94988\n+Musa26\tscaff6\t116780\n+Musa25\tscaff6\t150551\n+Musa24\tscaff6\t164072\n+Musa23\tscaff6\t217938\n+Musa22\tscaff6\t237940\n+Musa21\tscaff6\t257121\n+Musa20\tscaff6\t287918\n+Musa19\tscaff6\t287924\n+Musa18\tscaff6\t289065\n+Musa17\tscaff6\t304816\n+Musa16\tscaff6\t307981\n+Musa15\tscaff6\t312897\n+Musa14\tscaff6\t318672\n+Musa13\tscaff6\t367839\n+Musa12\tscaff6\t375194\n+Musa11\tscaff6\t386504\n+Musa10\tscaff6\t395034\n+Musa9\tscaff6\t466633\n+Musa8\tscaff6\t517147\n+Musa7\tscaff6\t612990\n+Musa6\tscaff6\t627751\n+Musa5\tscaff6\t629428\n+Musa4\tscaff6\t639426\n+Musa3\tscaff6\t708126\n+Musa2\tscaff6\t756510\n+Musa1\tscaff6\t767804\n+Musa225\tscaff5\t3638\n+Musa224\tscaff5\t7427\n+Musa223\tscaff5\t17805\n+Musa222\tscaff5\t26220\n+Musa221\tscaff5\t37236\n+Musa220\tscaff5\t56195\n+Musa219\tscaff5\t170552\n+Musa218\tscaff5\t179299\n+Musa217\tscaff5\t236061\n+Musa216\tscaff5\t245046\n+Musa215\tscaff5\t255342\n+Musa214\tscaff5\t296687\n+Musa213\tscaff5\t343407\n+Musa212\tscaff5\t355380\n+Musa211\tscaff5\t402380\n+Musa210\tscaff5\t403152\n+Musa209\tscaff5\t438434\n+Musa208\tscaff5\t541778\n+Musa207\tscaff5\t577051\n+Musa206\tscaff5\t618829\n+Musa205\tscaff5\t646922\n+Musa204\tscaff5\t719921\n+Musa203\tscaff5\t735459\n+Musa202\tscaff5\t806695\n+Musa201\tscaff5\t819298\n+Musa250\tscaff4\t6643\n+Musa251\tscaff4\t19992\n+Musa252\tscaff4\t90181\n+Musa253\tscaff4\t125976\n+Musa254\tscaff4\t132686\n+Musa255\tscaff4\t152348\n+Musa256\tscaff4\t185938\n+Musa257\tscaff4\t291307\n+Musa258\tscaff4\t334681\n+Musa259\tscaff4\t388016\n+Musa260\tscaff4\t427216\n+Musa261\tscaff4\t462250\n+Musa262\tscaff4\t462444\n+Musa263\tscaff4\t481820\n+Musa264\tscaff4\t498310\n+Musa265\tscaff4\t553467\n+Musa266\tscaff4\t594961\n+Musa267\tscaff4\t613766\n+Musa268\tscaff4\t697069\n+Musa269\tscaff4\t722513\n+Musa270\tscaff4\t733914\n+Musa271\tscaff4\t740987\n+Musa272\tscaff4\t742250\n+Musa273\tscaff4\t758641\n+Musa274\tscaff4\t768056\n+Musa275\tscaff4\t799987\n+Musa276\tscaff4\t810305\n+Musa277\tscaff4\t819287\n+Musa278\tscaff4\t828250\n+Musa279\tscaff4\t848421\n+Musa280\tscaff4\t891106\n+Musa281\tscaff4\t898536\n+Musa282\tscaff4\t912682\n+Musa476\tscaff8\t8721\n+Musa477\tscaff8\t16080\n+Musa478\tscaff8\t80012\n+Musa479\tscaff8\t94374\n+Musa480\tscaff8\t101882\n+Musa481\tscaff8\t108905\n+Musa482\tscaff8\t124205\n+Musa483\tscaff8\t156362\n+Musa484\tscaff8\t157722\n+Musa485\tscaff8\t162082\n+Musa486\tscaff8\t217533\n+Musa488\tscaff8\t275267\n+Musa489\tscaff8\t333830\n+Musa490\tscaff8\t349281\n+Musa491\tscaff8\t391942\n+Musa492\tscaff8\t428082\n+Musa493\tscaff8\t441506\n+Musa494\tscaff8\t496184\n+Musa495\tscaff8\t503903\n+Musa496\tscaff8\t510470\n+Musa497\tscaff8\t525506\n+Musa498\tscaff8\t537894\n+Musa499\tscaff8\t568178\n+Musa500\tscaff8\t584787\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/chromosome.agp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/chromosome.agp Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,16 @@ +##agp-version 2.0 +chr01 1 597709 1 W scaff8 1 597709 - +chr01 597710 597809 2 N 100 fragment no +chr01 597810 3167808 3 W scaff3 1 2569999 + +chr01 3167809 3167908 4 N 100 fragment no +chr01 3167909 6377907 5 W scaff2 1 3209999 - +chr01 6377908 6378007 6 N 100 fragment no +chr01 6378008 7408006 7 W scaff4 1 1029999 - +chr01 7408007 7408106 8 N 100 fragment no +chr01 7408107 8058105 9 W scaff7 1 649999 + +chr01 8058106 8058205 10 N 100 fragment no +chr01 8058206 8908204 11 W scaff5 1 849999 + +chr01 8908205 8908304 12 N 100 fragment no +chr01 8908305 13858303 13 W scaff1 1 4949999 - +chr01 13858304 13858403 14 N 100 fragment no +chr01 13858404 14648402 15 W scaff6 1 789999 + |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/chromosome.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/chromosome.fasta Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,244142 @@\n+>chr01\n+GACATGCCCAGAAGTCTAACTCGCCAAAGCATGACACCTCTCGTTGTCCCTTTCTTGCTG\n+GTTTTCTCCACCACTATTGTGTCCAATTATGATTATTTTCACTTAGTTCTACTGGTAAGT\n+CTAATTTTTTTATATCTCTTGTTTTTCTCTATATTGATTGCTCTGATTTGAAACATACAG\n+TGGCACGGATCATGTTGCAATGTCAACCGTTGGTGTCCTATGAGTACAGGATATCCGGAA\n+AAAAACGTTATCATCAATGATAGTTGCCCGCTTTCAGCAATGGAACGTTTCCATCTTATG\n+ACAAGAATATGTCGTCAGCTTCTAGCTAAAACAGAATGTGTTCGGCTTTGACACAGACTA\n+CTCTATCGTAAAGGTTCCAAGCGAAATAAGAGAGTGAGTCATTCATCATTTTTTTATCTT\n+GTTCTTAGATTGCAGATAAAACCCCTGATAGGCGAGATGATTCAATACCAGCTTAATTTT\n+CGCTGTCCCAGCAGCGATGGCCATTCATTCTGGCAACATAAATGGGATAAACATAACATG\n+TGTTCCTTATCCAGATACAATTAACTTTTTACTTCATAGCTGCCCTTGACCTCAAGAAAA\n+AAGTTGATATTCTCTCGAGCCTAAATGCAAAAGGTATTATTCCTAATAATCGCAAGTATC\n+AATCGAAGCTTATCTCCAATTTTTTAGAATAGAAATAGTGTACAAACTAGCAATCCAGTG\n+CAACTATATATAAATTTTAAAAACACTATAGATATGATCTTTTATCACATTAATATATAA\n+ATTATGGGCATAGTAATGATATTTTATTGATACCCATAAAAATCTAGATAGAAAATATTT\n+GAATTATAGAATTCTTTATTTTTACTTTAAAAACAACAGAGATATTGAGAACTAGACTGA\n+TATGTATACCGATATCGTAATTAATAAAAATACCAAGACTTATCAAAAAAAGATTTTGAT\n+TGGATGGGAATGAATGAAAATTATTCTACCATATCAAATCTAGAATCTTGGTTCTTCCTA\n+AAATTTATGTTACCTTTTGATGCATATAAGATTAAACTATGGATTATACTAATCAAATTA\n+CTTTTTTCTAATATTTAATATGAAAAATAATATTTTTCAAAATTAAAATAATAATAATAA\n+TTGTAAAAATCAAAATAAAAAAGAATTAGTCAAAATGGAAATAAAAAATATTAGTCAATA\n+TCAAATTAAAAATATTAAAATTTAGTCAAAATAAAAATATTAAAATTTCGATAAAATAAA\n+ATTTTAAAATTTAAACAAAGAAAAAGAGGGTTAATCAAATCTTTTGTCAGATCTACCAAA\n+AGTAAATGCATAAGATAATTAATTAAATGGTTTAACAAGACTATTCAAATTGACACATGA\n+TTTCAATTGTTTTTTATGTCAATCATGATTTTTGATATTTGACATATTAGAAAATTGGAA\n+AGCAAGAGAATATAATGCAAGTGGGAGTACATTTTCTTTTCATAGAAATCTTACAATTGA\n+TGCAGATATAATTTGTTGACGCAGATATGAACCTGATACAGTTGCTAGTTCCCCGATTTT\n+GTGTTGCACTAGATTGCTTGTTTATATCCTATTTCTCTTCTGAGGTATTTGAAAATAGCT\n+TCGGTTGATTCTTGCGGATATTAGGAATAATACCTTTTGCATTTGTGCTCGAGAGAATAT\n+CAACTTTTTTCTTGAGGTTGAGGGCTGTTGTGATATAAGAAAGTTGATCGAACTTGGATA\n+AGGAACTCGTGCTATGCTTATCAAATTAATTTTACAAGAATGATTGGTCATCGCTATTGT\n+GACAGTAAAATCTGTGCCAGTGTTGAATAACCTCGCCTATCAAAGGGTCCATCTGCAATC\n+GAAGACCAAGATAAAAAATAATGAACGACTAACACTCTCATTTCGCAAGGCACCTTTACG\n+ATATAGTAATTTGTGTAAGAGCCGAACATACCTAACTTCGGTTGTAGTTAAAAGCTAACG\n+ACAAATTCAAGATATCCCATTTATTTTCATTTTTGTAGATATGACACAANNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n+N'..b'TGATTTGATTGTTTACCTCCCATTAA\n+GTAGTTAACATTGTCATAGCATTCATTTATGTATAATAACTCAAATCCAACAAAGAATGT\n+GATAACAAACCAGATCAGATTTGTGATCAGAATAAGAAGCAGCAAGGACACAAGATGAAG\n+CATTTGGCTGCCCCCATGTTTCTACCACCTTTGGAATTCCAGTCTTTCCATGAGCTTCGA\n+CAACTGAAAACTCATTGCAATATCACATCATGAGTTGTAATTAAGAAATGCATGCCATGT\n+AGACCATTCAAGAAAGAGTAATGTTTAAGCAACAACAACCACCTTTTACAAGACCGAGCA\n+CGTCAGTCGTCAAGGCTCTCAAAGGTGGGCATCCAGGGCACTCCAATGCACTTGTCCATG\n+GCATCTTCTTGAAACCTTTTGGCTCCTCAAAACTTCACCGAAATTATAAATTTCACCAGT\n+AAGTAAAAGCAAAACAATTAACCGATCAATAGAACACACAAGAATAACAAAGCAATTAAG\n+GTGTAGGGGCTGCAAAATCTCCAAAGAGAAGTAGGTAGAAAAAGATCAATCAATGTCCCA\n+AAGATTGCGAGTTTCAAACATACTTGATGGGAAGGAGAAAACAAAAAAAGACAAAAGATC\n+TTTTATATAATCACACTGTGTATACATCTAAACTAGCTTCAACATATTTACTCATGTTCC\n+TTGGAGCCATAATATCGGTATCCTGTCATGCTAAGCAGCTATTCTTTCAGAAGTCAGGAG\n+CCAACTCCTCTTTCGAATCTCGACATAATGGGGCCTCTATCTCATTTAGCAGCTTACTAA\n+TAGTAATCGTCTGGTAAACATCCCATCTTGATCGACGCATTATGTTGATCCAACTACTAG\n+GCTGTCACAGTGATTGAAAAAGGCGCTCTGGCGCTCGCCTAGGCGCTCGGGCGAGGCGAG\n+GCGAGGCCCGAGCGCCTCGCTAATGTCCCAGGCGGCGTGCTTCAAACAGACGCCGCCTGG\n+GCGCTTGCCCGAGCCCAAGCGCTTCGGGCGAGCGCCTGGGTAAACCAAGGAGACCGAACC\n+AGAATTTTAGGTCTGGTTCGGTTGTTAGTTGGTTCAATCGAACCAACTAAACCGATATAT\n+CCCCAACCCTAACCCTTACCCAACCCTAACCTACTACCGATCCCGATCCCGATCGTGATC\n+TCGCTGCTCGTCGCTCCTGCTCCCACTGCCGCCGCTCGCCGCTGTCGCTGCTCGCGCCTC\n+CCGCAAGCCTTGCCGCTGCTCGCGCCTCCCGCTGCTCGTGCCTTCCGCTCCCTTTCCCTT\n+TCTCGCTGTCGTTGCCGCCGCTCGCCGCTGCTTCCTCGTTTCTCCATCAGGCTCAGTATA\n+CAATATACTCTAAATATTAAGTTTATTTGAATTTTGAAATGATTAATTTTTTGTTAATAG\n+ATTAATAATATATTATTTTGATTTTAATGTTGTTAATTTTTATTTATTTGAAATTATTAA\n+TTATATTATATATTTTTATAAACTAGCGTTCGGCCTGTGCGCTAGTTTGGGCCCAAGCAT\n+TGCTGGGCTTTTGTTCCGGCGTGATTCAACTATTCTGAGTCGAACTTGAGTCAAGCTATT\n+GCTGGGCTTTTGTTCCGGCGTGATTCAACTATTCTGAGTCGAACTTGAGTCAAGCTAAAT\n+TGGCAATAATCACCCTGAAACCCGCCCCACAACACACTTGCTGGTCGTTCCCGTGCCCTA\n+AGCGGTGGTTGTTCTCCCACCGGGCACTCTCTCTCTCCCCAACGGCGATTGCTGCGTTTC\n+CTCGGCGAACGTCGACCATCTTCCTCTTCATAAGTGAACAGCGGAGCAACGGCGTTGTCT\n+TCCTACCGGGGGTTCTTGTCGCTGCAGCTTTTTCGTCGGTGAACGACGGCTGCTGCGTCT\n+TCTTCTTCATCTAGCGGCAGAGTTGGGTGGCGTCTCTACTCCCTGGTATATCTCTCTTTC\n+TTCTTTTCTTCGTCCTTCGCCATCGCAGCCCCCCCTTCCCCGGTCCCTCGTCCCTCCCCC\n+TCCCTCTTCCACCTTGTCGCTAGGCAAGCTATTAGGTTTCTCCTCGAGCGTTTCTCTTGC\n+TCTTGGCAGCCCCCAGCTCACGGCCTTGTTGTTTCGGATCAATTGCTTTGGTTCGTATTC\n+AATCTTGTTCTCTAGTTTTGATTCTTGATCGGGTTTTTTTTGTCGCCTTCAATCTTGCCC\n+TAGCACTCGGTCGCTCTCGTTTCGGATCAATTAGTGCTACTTAAAGTTATCCTTATCTTA\n+AATTGTATTATTTGTCTATTTTGTGAAAAAAGAAGTGACACTATGCACTTAACAGTATAC\n+ATGAAACTAATTGGATTGTCTAGTCTCATGATTGTGTCTTGATCTTTTGAAATATTGAAT\n+AGTTCTTCCACTTTGCTTTATCTTATTCTATTTATGGATACTCACGCCAACCCTAAATCT\n+GTATTTGGGTCTCATTACTTGGGTCTTGTGGTTCATGTGGCTTTAGAAAATGGTTGAGTG\n+TTGTGTTCTTTTCTCTTCATTATTTCTATGTGGAATTAGATTGTGATGAAGTTGGGAAGT\n+AAGGTTTCGATACTTGATTCTTGGTTTTACTCTAAGCTGATCTTACAAACATTACTGCAT\n+TGGTGTTTTTGTTGATCTTAGAAACTGGGTGGGCATGCTTTGTTTTTGATAATTTTAACA\n+AATTATAAATAGAGTGGAAACAGACCTTGGTGATGTCCTTATTAAATTTATTCATGTTTA\n+AGCAAGAGTAGAGTTCTGTATTCTCCTCTTCCTTCCTTTTTGAAAGAAGGAAGCAGACAA\n+TTTGTAGAGCATTTCTTTGGTTATGGGTTGTGTAAAGAAACGGATCTGCCAGCCATGCCA\n+AACAAGGAACATTAATTGACTATGTTAGGTTGTGCTTCCCAAGTTAATTATAGGTACAGA\n+TAGTTTTGTGCTATATTCTGCATAGACACATTAAGCAAGTTCAAATGTACAATTACCATG\n+ATATGTTATTTTGTAATATTTTTGTTTTGAAGTTTATATTATACTTTAAATTATTTTTTT\n+TTGCAAACTAAAAAGAATTAATATTATGGGTATAAGTCAAGGTTTGCAATTTCGTATCGT\n+ACCGGAGTATCGAGATCAGCTTAGTATGGTACGGTATGAGTATGCCGAATGGTATACTCT\n+GACGTACCACTCGGTATATATATGTATGTATGTATATATATATATATAATAAAAAAGTAA\n+AAAATAAAAAAATGGCAACGTCGTCAAGGCGACGTCGCCTCGTTTCTTCTCCTCGTGTGG\n+GGAGAAGACATTTCTTCTCCCCGCGAAGCCTCCATGACATCATTGTAGAGGTTTCTTCTC\n+CCCATACGGATAAGAAGTCGTCGACGACGCCGAGGCCTCGTTGCCTTAAACTAGGAGGCG\n+ACATCGCATCTGCGACGCCTGGTGAGGGAGGGCGACGACGAATTGGGATCGTCGATGGAG\n+AGTGGCATCAGATCTCCAAGTTCTCCTTTTTCTTCTCTCTCTTCTTCCTTCTCCCTCGGC\n+TAATACCGTCCTGTAGCGGGCGACAACGATCGACCGTCCCTAAACCCTAAACCACCCTAA\n+ACAAGTTTTGATTTATTTTTCTTTTTTCCCATTAATATTTTATAACTGATCAGTTTTAAG\n+CACTTATTTGCCGCCTCCATACAGTAATTGGTTGATCATTTATTGTTTCCAACGTGTGTT\n+GCTTCAATTATTATAAATCTCAATTTTTTTTATATATTTATAATATTTATTTTTCATTGG\n+AAATATAATGTCACGGCCAGGAGCGTCTCCTGGCCCATGGGCTCGTTTTGGCCAGTTCGG\n+CTCACGCGTCTTCCTGATCCAGTTATAACTGGGTTAAGCCTGAGTCGAGCTAGTTTGGAA\n+CC\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/corrected.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/corrected.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,501 @@\n+marker\ttype\tphase\tsegregation\tmark_error\tIND1\tIND2\tIND3\tIND4\tIND5\tIND6\tIND7\tIND8\tIND9\tIND10\tIND11\tIND12\tIND13\tIND14\tIND15\tIND16\tIND17\tIND18\tIND19\tIND20\tIND21\tIND22\tIND23\tIND24\tIND25\tIND26\tIND27\tIND28\tIND29\tIND30\tIND31\tIND32\tIND33\tIND34\tIND35\tIND36\tIND37\tIND38\tIND39\tIND40\tIND41\tIND42\tIND43\tIND44\tIND45\tIND46\tIND47\tIND48\tIND49\tIND50\tIND51\tIND52\tIND53\tIND54\tIND55\tIND56\tIND57\tIND58\tIND59\tIND60\tIND61\tIND62\tIND63\tIND64\tIND65\tIND66\tIND67\tIND68\tIND69\tIND70\tIND71\tIND72\tIND73\tIND74\tIND75\tIND76\tIND77\tIND78\tIND79\tIND80\tIND81\tIND82\tIND83\tIND84\tIND85\tIND86\tIND87\tIND88\tIND89\tIND90\tIND91\tIND92\tIND93\tIND94\tIND95\tIND96\tIND97\tIND98\tIND99\tIND100\tIND101\tIND102\tIND103\tIND104\tIND105\tIND106\tIND107\tIND108\tIND109\tIND110\tIND111\tIND112\tIND113\tIND114\tIND115\tIND116\tIND117\tIND118\tIND119\tIND120\tIND121\tIND122\tIND123\tIND124\tIND125\tIND126\tIND127\tIND128\tIND129\tIND130\tIND131\tIND132\tIND133\tIND134\tIND135\tIND136\tIND137\tIND138\tIND139\tIND140\tIND141\tIND142\tIND143\tIND144\tIND145\tIND146\tIND147\tIND148\tIND149\tIND150\tIND151\tIND152\tIND153\tIND154\tIND155\tIND156\tIND157\tIND158\tIND159\tIND160\tIND161\tIND162\tIND163\tIND164\tIND165\tIND166\tIND167\tIND168\tIND169\tIND170\tIND171\tIND172\tIND173\tIND174\tIND175\tIND176\tIND177\tIND178\tIND179\tIND180\tIND181\tIND182\tIND183\tIND184\tIND185\tIND186\tIND187\tIND188\tIND189\tIND190\tIND191\tIND192\tIND193\tIND194\tIND195\tIND196\tIND197\tIND198\tIND199\tIND200\n+ind_error\t--\t-\t-\t-\t21\t24\t17\t16\t24\t29\t24\t20\t22\t19\t29\t25\t24\t20\t24\t24\t24\t30\t26\t20\t25\t21\t20\t26\t22\t20\t23\t26\t26\t34\t21\t22\t18\t21\t18\t23\t26\t25\t22\t14\t24\t15\t21\t19\t23\t20\t18\t21\t14\t21\t27\t23\t28\t23\t16\t24\t24\t27\t21\t22\t29\t17\t21\t25\t25\t39\t25\t18\t22\t20\t15\t24\t25\t13\t34\t24\t24\t19\t25\t21\t30\t22\t20\t33\t24\t23\t26\t20\t22\t31\t25\t26\t22\t26\t27\t29\t23\t14\t18\t24\t21\t29\t26\t16\t18\t33\t28\t21\t22\t26\t23\t24\t30\t31\t25\t27\t16\t29\t23\t16\t24\t18\t26\t27\t30\t23\t24\t23\t10\t20\t18\t20\t24\t26\t13\t23\t21\t21\t23\t20\t23\t18\t19\t19\t19\t28\t36\t23\t25\t25\t19\t26\t24\t15\t19\t25\t27\t21\t23\t17\t23\t23\t24\t24\t29\t23\t20\t26\t33\t24\t12\t27\t17\t26\t24\t16\t16\t20\t20\t27\t26\t15\t20\t29\t28\t16\t17\t25\t22\t25\t23\t24\t17\t19\t24\t25\t16\t28\t34\t29\n+Musa475\t<hkxhk>\t-\t(hh,hk,kk)\t14\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thh\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thh\thk\thh\tkk\thh\tkk\thk\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\thh\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\tkk\thh\thh\thk\tkk\tkk\thk\tkk\thk\thk\thh\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thk\thk\thh\thh\thk\thk\thk\thk\thk\thh\thh\thk\thk\thk\tkk\thh\thk\thk\thh\thk\thh\thh\thk\thh\thk\tkk\thk\thk\thh\tkk\thh\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa474\t<hkxhk>\t-\t(hh,hk,kk)\t15\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thh\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thh\thk\thh\tkk\thh\tkk\thk\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\thh\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\tkk\thh\thh\thk\tkk\tkk\thk\tkk\thk\thk\thh\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thk\thk\thh\thh\thk\thk\thk\thk\thk\thh\thh\thk\thk\thk\tkk\thh\thk\thk\thh\thk\thh\thh\thk\thh\thk\tkk\thk\thk\thh\tkk\thh\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa473\t<hkxhk>\t-\t(hh,hk,kk)\t14\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thh\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thh\thk\thh\tkk\thh\tkk\thk\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\thh\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\tkk\thh\thh\thk\tkk\tkk\thk\tkk\thk\thk\thh\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thk\thk\thh\thh\thk\thk\thk\thk\thk\thh\thh\thk\thk\thk\tkk\thh\thk\thk\thh\thk\thh\thh\thk\thh\thk\tkk\thk\thk\thh\tkk\thh\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa472\t<hkxhk>\t-\t(hh,hk,kk)\t9\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\t'..b'\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa495\t<hkxhk>\t-\t(hh,hk,kk)\t7\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\thk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa496\t<hkxhk>\t-\t(hh,hk,kk)\t8\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\tkk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\tkk\thh\thk\thh\thk\tkk\thk\thk\n+Musa497\t<hkxhk>\t-\t(hh,hk,kk)\t10\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\tkk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\tkk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\tkk\thh\thk\thh\thk\tkk\thk\thk\n+Musa498\t<hkxhk>\t-\t(hh,hk,kk)\t5\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\tkk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\tkk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\tkk\thh\thk\thh\thk\tkk\thk\thk\n+Musa499\t<hkxhk>\t-\t(hh,hk,kk)\t11\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\tkk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\tkk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\tkk\thh\thk\thh\thk\tkk\thk\thk\n+Musa500\t<hkxhk>\t-\t(hh,hk,kk)\t9\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\tkk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\tkk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\tkk\thh\thk\thh\thk\tkk\thk\thk\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/corrected_non_redundant.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/corrected_non_redundant.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,289 @@\n+marker\ttype\tphase\tsegregation\tmark_error\tIND1\tIND2\tIND3\tIND4\tIND5\tIND6\tIND7\tIND8\tIND9\tIND10\tIND11\tIND12\tIND13\tIND14\tIND15\tIND16\tIND17\tIND18\tIND19\tIND20\tIND21\tIND22\tIND23\tIND24\tIND25\tIND26\tIND27\tIND28\tIND29\tIND30\tIND31\tIND32\tIND33\tIND34\tIND35\tIND36\tIND37\tIND38\tIND39\tIND40\tIND41\tIND42\tIND43\tIND44\tIND45\tIND46\tIND47\tIND48\tIND49\tIND50\tIND51\tIND52\tIND53\tIND54\tIND55\tIND56\tIND57\tIND58\tIND59\tIND60\tIND61\tIND62\tIND63\tIND64\tIND65\tIND66\tIND67\tIND68\tIND69\tIND70\tIND71\tIND72\tIND73\tIND74\tIND75\tIND76\tIND77\tIND78\tIND79\tIND80\tIND81\tIND82\tIND83\tIND84\tIND85\tIND86\tIND87\tIND88\tIND89\tIND90\tIND91\tIND92\tIND93\tIND94\tIND95\tIND96\tIND97\tIND98\tIND99\tIND100\tIND101\tIND102\tIND103\tIND104\tIND105\tIND106\tIND107\tIND108\tIND109\tIND110\tIND111\tIND112\tIND113\tIND114\tIND115\tIND116\tIND117\tIND118\tIND119\tIND120\tIND121\tIND122\tIND123\tIND124\tIND125\tIND126\tIND127\tIND128\tIND129\tIND130\tIND131\tIND132\tIND133\tIND134\tIND135\tIND136\tIND137\tIND138\tIND139\tIND140\tIND141\tIND142\tIND143\tIND144\tIND145\tIND146\tIND147\tIND148\tIND149\tIND150\tIND151\tIND152\tIND153\tIND154\tIND155\tIND156\tIND157\tIND158\tIND159\tIND160\tIND161\tIND162\tIND163\tIND164\tIND165\tIND166\tIND167\tIND168\tIND169\tIND170\tIND171\tIND172\tIND173\tIND174\tIND175\tIND176\tIND177\tIND178\tIND179\tIND180\tIND181\tIND182\tIND183\tIND184\tIND185\tIND186\tIND187\tIND188\tIND189\tIND190\tIND191\tIND192\tIND193\tIND194\tIND195\tIND196\tIND197\tIND198\tIND199\tIND200\n+ind_error\t--\t-\t-\t-\t21\t24\t17\t16\t24\t29\t24\t20\t22\t19\t29\t25\t24\t20\t24\t24\t24\t30\t26\t20\t25\t21\t20\t26\t22\t20\t23\t26\t26\t34\t21\t22\t18\t21\t18\t23\t26\t25\t22\t14\t24\t15\t21\t19\t23\t20\t18\t21\t14\t21\t27\t23\t28\t23\t16\t24\t24\t27\t21\t22\t29\t17\t21\t25\t25\t39\t25\t18\t22\t20\t15\t24\t25\t13\t34\t24\t24\t19\t25\t21\t30\t22\t20\t33\t24\t23\t26\t20\t22\t31\t25\t26\t22\t26\t27\t29\t23\t14\t18\t24\t21\t29\t26\t16\t18\t33\t28\t21\t22\t26\t23\t24\t30\t31\t25\t27\t16\t29\t23\t16\t24\t18\t26\t27\t30\t23\t24\t23\t10\t20\t18\t20\t24\t26\t13\t23\t21\t21\t23\t20\t23\t18\t19\t19\t19\t28\t36\t23\t25\t25\t19\t26\t24\t15\t19\t25\t27\t21\t23\t17\t23\t23\t24\t24\t29\t23\t20\t26\t33\t24\t12\t27\t17\t26\t24\t16\t16\t20\t20\t27\t26\t15\t20\t29\t28\t16\t17\t25\t22\t25\t23\t24\t17\t19\t24\t25\t16\t28\t34\t29\n+Musa475\t<hkxhk>\t-\t(hh,hk,kk)\t14\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thh\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thh\thk\thh\tkk\thh\tkk\thk\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\thh\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\tkk\thh\thh\thk\tkk\tkk\thk\tkk\thk\thk\thh\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thk\thk\thh\thh\thk\thk\thk\thk\thk\thh\thh\thk\thk\thk\tkk\thh\thk\thk\thh\thk\thh\thh\thk\thh\thk\tkk\thk\thk\thh\tkk\thh\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa471\t<hkxhk>\t-\t(hh,hk,kk)\t9\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thh\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thh\thk\thh\tkk\thh\tkk\thk\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\thh\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\tkk\thh\thh\thk\tkk\tkk\thk\tkk\thk\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thk\thk\thh\thh\thk\thk\thk\thk\thk\thh\thh\thk\thk\thk\tkk\thh\thk\thk\thh\thk\thh\thh\thk\thh\thk\tkk\thk\thk\thh\tkk\thh\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa468\t<hkxhk>\t-\t(hh,hk,kk)\t3\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thh\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thh\thk\thh\tkk\thh\tkk\thk\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\thh\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\tkk\thh\thh\thk\tkk\tkk\thk\tkk\thk\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\tkk\thk\thk\thh\thh\thk\thk\thk\thk\thk\thh\thh\thk\thk\thk\tkk\thh\thk\thk\thh\thk\thh\thh\thk\thh\thk\tkk\thk\thk\thh\tkk\thh\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa467\t<hkxhk>\t-\t(hh,hk,kk)\t9\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thh\thk\thh\thk\tkk\thk\tkk'..b'k\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thk\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa491\t<hkxhk>\t-\t(hh,hk,kk)\t8\thk\tkk\thk\thk\tkk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thk\tkk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\thk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thk\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa492\t<hkxhk>\t-\t(hh,hk,kk)\t3\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thk\tkk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\thk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa494\t<hkxhk>\t-\t(hh,hk,kk)\t7\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thk\thh\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\thk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa495\t<hkxhk>\t-\t(hh,hk,kk)\t7\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\thk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\thk\thh\thk\thh\thk\tkk\thk\thk\n+Musa496\t<hkxhk>\t-\t(hh,hk,kk)\t8\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\thk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\tkk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\tkk\thh\thk\thh\thk\tkk\thk\thk\n+Musa497\t<hkxhk>\t-\t(hh,hk,kk)\t10\thk\tkk\thk\thk\thk\thk\thh\thk\thh\tkk\thh\thk\thk\tkk\thk\thh\thk\thk\thk\thk\tkk\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\tkk\thk\tkk\thh\thk\thk\thh\tkk\tkk\thk\thk\thh\tkk\thh\thh\tkk\thk\tkk\tkk\thh\tkk\thk\thk\thk\thk\thk\thk\thh\thk\tkk\thk\thk\thk\thk\thk\thh\tkk\thh\tkk\thh\thk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thk\thh\tkk\thh\tkk\thh\tkk\thk\thh\thh\thk\tkk\tkk\thk\thk\thk\thk\thh\tkk\tkk\thk\thh\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\thh\thk\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thk\thk\thk\thh\thh\tkk\thh\thk\tkk\thk\thk\thh\tkk\thk\tkk\thh\thk\thh\thk\tkk\thk\thk\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/dis_file.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/dis_file.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,501 @@\n+@DARwin 5.0 - DIS\n+499\n+\t1\t2\t3\t4\t5\t6\t7\t8\t9\t10\t11\t12\t13\t14\t15\t16\t17\t18\t19\t20\t21\t22\t23\t24\t25\t26\t27\t28\t29\t30\t31\t32\t33\t34\t35\t36\t37\t38\t39\t40\t41\t42\t43\t44\t45\t46\t47\t48\t49\t50\t51\t52\t53\t54\t55\t56\t57\t58\t59\t60\t61\t62\t63\t64\t65\t66\t67\t68\t69\t70\t71\t72\t73\t74\t75\t76\t77\t78\t79\t80\t81\t82\t83\t84\t85\t86\t87\t88\t89\t90\t91\t92\t93\t94\t95\t96\t97\t98\t99\t100\t101\t102\t103\t104\t105\t106\t107\t108\t109\t110\t111\t112\t113\t114\t115\t116\t117\t118\t119\t120\t121\t122\t123\t124\t125\t126\t127\t128\t129\t130\t131\t132\t133\t134\t135\t136\t137\t138\t139\t140\t141\t142\t143\t144\t145\t146\t147\t148\t149\t150\t151\t152\t153\t154\t155\t156\t157\t158\t159\t160\t161\t162\t163\t164\t165\t166\t167\t168\t169\t170\t171\t172\t173\t174\t175\t176\t177\t178\t179\t180\t181\t182\t183\t184\t185\t186\t187\t188\t189\t190\t191\t192\t193\t194\t195\t196\t197\t198\t199\t200\t201\t202\t203\t204\t205\t206\t207\t208\t209\t210\t211\t212\t213\t214\t215\t216\t217\t218\t219\t220\t221\t222\t223\t224\t225\t226\t227\t228\t229\t230\t231\t232\t233\t234\t235\t236\t237\t238\t239\t240\t241\t242\t243\t244\t245\t246\t247\t248\t249\t250\t251\t252\t253\t254\t255\t256\t257\t258\t259\t260\t261\t262\t263\t264\t265\t266\t267\t268\t269\t270\t271\t272\t273\t274\t275\t276\t277\t278\t279\t280\t281\t282\t283\t284\t285\t286\t287\t288\t289\t290\t291\t292\t293\t294\t295\t296\t297\t298\t299\t300\t301\t302\t303\t304\t305\t306\t307\t308\t309\t310\t311\t312\t313\t314\t315\t316\t317\t318\t319\t320\t321\t322\t323\t324\t325\t326\t327\t328\t329\t330\t331\t332\t333\t334\t335\t336\t337\t338\t339\t340\t341\t342\t343\t344\t345\t346\t347\t348\t349\t350\t351\t352\t353\t354\t355\t356\t357\t358\t359\t360\t361\t362\t363\t364\t365\t366\t367\t368\t369\t370\t371\t372\t373\t374\t375\t376\t377\t378\t379\t380\t381\t382\t383\t384\t385\t386\t387\t388\t389\t390\t391\t392\t393\t394\t395\t396\t397\t398\t399\t400\t401\t402\t403\t404\t405\t406\t407\t408\t409\t410\t411\t412\t413\t414\t415\t416\t417\t418\t419\t420\t421\t422\t423\t424\t425\t426\t427\t428\t429\t430\t431\t432\t433\t434\t435\t436\t437\t438\t439\t440\t441\t442\t443\t444\t445\t446\t447\t448\t449\t450\t451\t452\t453\t454\t455\t456\t457\t458\t459\t460\t461\t462\t463\t464\t465\t466\t467\t468\t469\t470\t471\t472\t473\t474\t475\t476\t477\t478\t479\t480\t481\t482\t483\t484\t485\t486\t487\t488\t489\t490\t491\t492\t493\t494\t495\t496\t497\t498\n+2\t0.0285263109431\n+3\t0.0178577996298\t0.0232648287737\n+4\t0.0367038929379\t0.0370785345831\t0.0286869431817\n+5\t0.0286823213397\t0.0316657561345\t0.0207594411266\t0.0291467193694\n+6\t0.0443479995944\t0.0475240007788\t0.0336716712571\t0.0423385660522\t0.0288401344457\n+7\t0.0445878467687\t0.0477847237713\t0.0338509440997\t0.0423385660522\t0.0316887604383\t0.0260487494321\n+8\t0.0470374174567\t0.0502511481074\t0.0363213816984\t0.0450635540236\t0.034201951798\t0.0232797008049\t0.0287054614985\n+9\t0.0363138608331\t0.0393734187904\t0.0257647048793\t0.034201951798\t0.0235144636184\t0.0180456776307\t0.0181420325433\t0.0154427082019\n+10\t0.0582530492236\t0.0616731268798\t0.047292783588\t0.0564167012993\t0.0452991010927\t0.0338574647659\t0.0396418299126\t0.0313675177544\t0.0260411871214\n+11\t0.063104163831\t0.0665339641734\t0.052177707386\t0.055773128858\t0.0502663889256\t0.0497659781175\t0.0500526112707\t0.041658013649\t0.0363213816984\t0.0418925968171\n+12\t0.063104163831\t0.0665339641734\t0.0467720393123\t0.0613526742517\t0.0502663889256\t0.0497659781175\t0.0500526112707\t0.0470505039064\t0.0363213816984\t0.0418925968171\t0.0414460563564\n+13\t0.0582321124559\t0.0612820126983\t0.0472794872362\t0.0563968663251\t0.0398023054093\t0.0448303903795\t0.0450878153241\t0.0421091816784\t0.0286869431817\t0.0369100584469\t0.0418925968171\t0.0418925968171\n+14\t0.0551451645738\t0.0584705378778\t0.0389626436155\t0.0532810671715\t0.0422962523299\t0.0365078084801\t0.0394095408011\t0.033837918482\t0.0285308547019\t0.0286869431817\t0.0336588589434\t0.0283810089623\t0.0340189383796\n+15\t0.068672161265\t0.0721880699119\t0.057636973145\t0.0641653364641\t0.0557922720122\t0.0552377176833\t0.0473194240058\t0.0552377176833\t0.0443595303225\t0.0445995750896\t0.0495119920524\t0.0495119920524\t0.0500526112707\t0.041658013649\n+16\t0.0628316588671\t0.0662472008564\t0.0519450172164\t0.0610819716813\t0.0500375550307\t0.0549734316457\t0.0552935705793\t0.0522430297471\t0.0414659112411\t0.047089856218\t0.041255747618\t0.0359540839637\t0.0363364430242\t0.038790561727\t0.0492892142784\n+17\t0.0575965131953\t0.0609428030397\t0.0467720393123\t0.055773128858\t0.0447946791727\t0.0389888535865\t0.0392069374519'..b'427897312908\t0.406736030783\t0.423893190815\t0.416555815681\t0.433880797124\t0.408216508238\t0.416175417463\t0.501619065904\t0.435127393555\t0.423893190815\t0.398586959494\t0.422520705336\t0.407747579233\t0.409531132752\t0.42055424244\t0.44072011809\t0.453071882108\t0.44250123903\t0.408918522473\t0.424486071901\t0.441348367405\t0.4296118038\t0.40761838565\t0.427779091847\t0.474947206582\t0.441096267777\t0.424453947975\t0.413097691019\t0.417335882834\t0.437204364787\t0.458009128873\t0.432294369465\t0.428309143707\t0.42055424244\t0.416902668472\t0.389286608563\t0.42490093687\t0.421616397109\t0.442729452426\t0.395550504794\t0.458009128873\t0.413024128057\t0.40331879029\t0.488088504816\t0.442729452426\t0.438634711751\t0.453416988279\t0.41062856757\t0.432690947147\t0.438323617405\t0.41062856757\t0.432690947147\t0.470770772191\t0.416175417463\t0.447453516005\t0.451082427058\t0.42490093687\t0.455777636621\t0.439010486635\t0.451426874245\t0.440341751269\t0.446739383128\t0.432690947147\t0.43349400637\t0.455777636621\t0.519540915564\t0.428274427663\t0.445268434579\t0.468347204373\t0.462233332681\t0.444912522077\t0.425056651251\t0.444735954335\t0.44612052031\t0.412428605368\t0.438634711751\t0.43773865175\t0.431553866842\t0.458331580299\t0.424912662053\t0.435808925488\t0.419690432437\t0.408216508238\t0.437602994404\t0.423893190815\t0.422227784235\t0.426450088162\t0.430302621237\t0.396060023802\t0.397325581611\t0.359123007995\t0.402359478108\t0.443975428346\t0.399412161442\t0.389286608563\t0.418586940989\t0.394636734706\t0.421506506706\t0.41200577996\t0.394817892363\t0.391656762912\t0.409313876319\t0.380755165244\t0.382080933024\t0.387245802693\t0.402840843465\t0.365175026751\t0.375927178508\t0.398991172413\t0.402359478108\t0.395145678945\t0.416527996322\t0.409313876319\t0.379441607577\t0.419444148689\t0.402359478108\t0.359747135407\t0.418283082125\t0.374447791022\t0.379646908\t0.374374308224\t0.351654771805\t0.381490982209\t0.393306110379\t0.393306110379\t0.386562285199\t0.39584251821\t0.383809292277\t0.404851059069\t0.38852971616\t0.363439690745\t0.365067610552\t0.351262587849\t0.340881513699\t0.35654532678\t0.369669407808\t0.364062147368\t0.370116472432\t0.34701806005\t0.348888855526\t0.354918485408\t0.351262587849\t0.356810202484\t0.373533686704\t0.325661182999\t0.339556427962\t0.335928418087\t0.314583666467\t0.35559068763\t0.30208384454\t0.306670375508\t0.332381109082\t0.31164980478\t0.327270312434\t0.300007527145\t0.307191308861\t0.288198018326\t0.318682438416\t0.335935626836\t0.304644236531\t0.309137113995\t0.289047400277\t0.294935510574\t0.334403140823\t0.304164053586\t0.264170341689\t0.276155061158\t0.289573820572\t0.300982755033\t0.306028675889\t0.279188763127\t0.282650073174\t0.291704376649\t0.323000283455\t0.289811431757\t0.276643831001\t0.295644504078\t0.270098096982\t0.263827220114\t0.268808732678\t0.247916284479\t0.273618141669\t0.26262587441\t0.26294548674\t0.250530337821\t0.235913720984\t0.2284039218\t0.227243334822\t0.227776973744\t0.22718901034\t0.225871650393\t0.229034419678\t0.201898440609\t0.223487263956\t0.207880513496\t0.214138168686\t0.220647042271\t0.216379587739\t0.21510659225\t0.185753274587\t0.215610900996\t0.194958322489\t0.222267284832\t0.191786757003\t0.189611268228\t0.190687670715\t0.199877318836\t0.198794595702\t0.189966784564\t0.175226209784\t0.202990893632\t0.156834220366\t0.164158360663\t0.170027536475\t0.154516459331\t0.161799025046\t0.149058016725\t0.149853541018\t0.163520970014\t0.154099547672\t0.159373116403\t0.17951359479\t0.143816317836\t0.144397162039\t0.133089363147\t0.142123009021\t0.144931430699\t0.154726938115\t0.131689052457\t0.138472786443\t0.132792261074\t0.139363591191\t0.128096749734\t0.152068901631\t0.1464086698\t0.123655518835\t0.133945245651\t0.120471822319\t0.130665382497\t0.115808512451\t0.129819733662\t0.119311526223\t0.125731053312\t0.112833755887\t0.124015982466\t0.104864091359\t0.102349741828\t0.10242602118\t0.101057950792\t0.0761871315024\t0.0938934633604\t0.0849827030765\t0.0736783979361\t0.0640613411679\t0.0939560735527\t0.0904645265287\t0.0694765607974\t0.067640018797\t0.0679670319204\t0.064474427548\t0.0648669043535\t0.0679970790595\t0.0676992980027\t0.0264536935876\t0.0570765174885\t0.0370945835808\t0.0372971628387\t0.0508552511182\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/don_file.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/don_file.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,502 @@\n+@DARwin 5.0 - DON\t\n+499\t2\n+unit\tname\tchrom\n+1\tMusa500\tchr01\n+2\tMusa499\tchr01\n+3\tMusa498\tchr01\n+4\tMusa497\tchr01\n+5\tMusa496\tchr01\n+6\tMusa495\tchr01\n+7\tMusa494\tchr01\n+8\tMusa493\tchr01\n+9\tMusa492\tchr01\n+10\tMusa491\tchr01\n+11\tMusa490\tchr01\n+12\tMusa489\tchr01\n+13\tMusa488\tchr01\n+14\tMusa486\tchr01\n+15\tMusa485\tchr01\n+16\tMusa484\tchr01\n+17\tMusa483\tchr01\n+18\tMusa482\tchr01\n+19\tMusa481\tchr01\n+20\tMusa480\tchr01\n+21\tMusa479\tchr01\n+22\tMusa478\tchr01\n+23\tMusa477\tchr01\n+24\tMusa476\tchr01\n+25\tMusa475\tchr01\n+26\tMusa474\tchr01\n+27\tMusa473\tchr01\n+28\tMusa472\tchr01\n+29\tMusa471\tchr01\n+30\tMusa470\tchr01\n+31\tMusa469\tchr01\n+32\tMusa468\tchr01\n+33\tMusa467\tchr01\n+34\tMusa466\tchr01\n+35\tMusa465\tchr01\n+36\tMusa464\tchr01\n+37\tMusa463\tchr01\n+38\tMusa462\tchr01\n+39\tMusa461\tchr01\n+40\tMusa460\tchr01\n+41\tMusa459\tchr01\n+42\tMusa458\tchr01\n+43\tMusa457\tchr01\n+44\tMusa456\tchr01\n+45\tMusa455\tchr01\n+46\tMusa454\tchr01\n+47\tMusa453\tchr01\n+48\tMusa452\tchr01\n+49\tMusa451\tchr01\n+50\tMusa450\tchr01\n+51\tMusa449\tchr01\n+52\tMusa448\tchr01\n+53\tMusa447\tchr01\n+54\tMusa446\tchr01\n+55\tMusa445\tchr01\n+56\tMusa444\tchr01\n+57\tMusa443\tchr01\n+58\tMusa442\tchr01\n+59\tMusa441\tchr01\n+60\tMusa440\tchr01\n+61\tMusa439\tchr01\n+62\tMusa438\tchr01\n+63\tMusa437\tchr01\n+64\tMusa436\tchr01\n+65\tMusa435\tchr01\n+66\tMusa434\tchr01\n+67\tMusa433\tchr01\n+68\tMusa432\tchr01\n+69\tMusa431\tchr01\n+70\tMusa430\tchr01\n+71\tMusa429\tchr01\n+72\tMusa428\tchr01\n+73\tMusa427\tchr01\n+74\tMusa426\tchr01\n+75\tMusa425\tchr01\n+76\tMusa424\tchr01\n+77\tMusa423\tchr01\n+78\tMusa422\tchr01\n+79\tMusa421\tchr01\n+80\tMusa420\tchr01\n+81\tMusa419\tchr01\n+82\tMusa418\tchr01\n+83\tMusa417\tchr01\n+84\tMusa416\tchr01\n+85\tMusa415\tchr01\n+86\tMusa414\tchr01\n+87\tMusa413\tchr01\n+88\tMusa412\tchr01\n+89\tMusa411\tchr01\n+90\tMusa410\tchr01\n+91\tMusa409\tchr01\n+92\tMusa408\tchr01\n+93\tMusa407\tchr01\n+94\tMusa406\tchr01\n+95\tMusa405\tchr01\n+96\tMusa404\tchr01\n+97\tMusa403\tchr01\n+98\tMusa402\tchr01\n+99\tMusa401\tchr01\n+100\tMusa400\tchr01\n+101\tMusa399\tchr01\n+102\tMusa398\tchr01\n+103\tMusa397\tchr01\n+104\tMusa396\tchr01\n+105\tMusa395\tchr01\n+106\tMusa394\tchr01\n+107\tMusa393\tchr01\n+108\tMusa392\tchr01\n+109\tMusa391\tchr01\n+110\tMusa390\tchr01\n+111\tMusa389\tchr01\n+112\tMusa388\tchr01\n+113\tMusa387\tchr01\n+114\tMusa386\tchr01\n+115\tMusa385\tchr01\n+116\tMusa384\tchr01\n+117\tMusa383\tchr01\n+118\tMusa382\tchr01\n+119\tMusa381\tchr01\n+120\tMusa380\tchr01\n+121\tMusa379\tchr01\n+122\tMusa378\tchr01\n+123\tMusa377\tchr01\n+124\tMusa376\tchr01\n+125\tMusa375\tchr01\n+126\tMusa374\tchr01\n+127\tMusa373\tchr01\n+128\tMusa372\tchr01\n+129\tMusa371\tchr01\n+130\tMusa370\tchr01\n+131\tMusa369\tchr01\n+132\tMusa368\tchr01\n+133\tMusa367\tchr01\n+134\tMusa366\tchr01\n+135\tMusa365\tchr01\n+136\tMusa364\tchr01\n+137\tMusa363\tchr01\n+138\tMusa362\tchr01\n+139\tMusa361\tchr01\n+140\tMusa360\tchr01\n+141\tMusa359\tchr01\n+142\tMusa358\tchr01\n+143\tMusa357\tchr01\n+144\tMusa356\tchr01\n+145\tMusa355\tchr01\n+146\tMusa354\tchr01\n+147\tMusa353\tchr01\n+148\tMusa352\tchr01\n+149\tMusa351\tchr01\n+150\tMusa350\tchr01\n+151\tMusa349\tchr01\n+152\tMusa348\tchr01\n+153\tMusa347\tchr01\n+154\tMusa346\tchr01\n+155\tMusa345\tchr01\n+156\tMusa344\tchr01\n+157\tMusa343\tchr01\n+158\tMusa342\tchr01\n+159\tMusa341\tchr01\n+160\tMusa340\tchr01\n+161\tMusa339\tchr01\n+162\tMusa338\tchr01\n+163\tMusa337\tchr01\n+164\tMusa336\tchr01\n+165\tMusa335\tchr01\n+166\tMusa334\tchr01\n+167\tMusa333\tchr01\n+168\tMusa332\tchr01\n+169\tMusa331\tchr01\n+170\tMusa330\tchr01\n+171\tMusa329\tchr01\n+172\tMusa328\tchr01\n+173\tMusa327\tchr01\n+174\tMusa326\tchr01\n+175\tMusa325\tchr01\n+176\tMusa324\tchr01\n+177\tMusa323\tchr01\n+178\tMusa322\tchr01\n+179\tMusa321\tchr01\n+180\tMusa320\tchr01\n+181\tMusa319\tchr01\n+182\tMusa318\tchr01\n+183\tMusa317\tchr01\n+184\tMusa316\tchr01\n+185\tMusa315\tchr01\n+186\tMusa314\tchr01\n+187\tMusa313\tchr01\n+188\tMusa312\tchr01\n+189\tMusa311\tchr01\n+190\tMusa310\tchr01\n+191\tMusa309\tchr01\n+192\tMusa308\tchr01\n+193\tMusa307\tchr01\n+194\tMusa306\tchr01\n+195\tMusa305\tchr01\n+196\tMusa304\tchr01\n+197\tMusa303\tchr01\n+198\tMusa302\tchr01\n+199\tMusa301\tchr01\n+200\tMusa300\tchr01\n+201\tMusa299\tchr01\n+202\tMusa298\tchr01\n+203\tMusa297\tchr01\n+204\tMusa296\tchr01\n+205\tMusa295\tchr01\n+206\tMusa294\tchr01\n+207\tMusa293\tchr01\n+208\tMusa292\tchr01\n+209\tMusa291\tchr01\n+210\tMusa290\tchr01\n+211\tMusa289\tchr01\n+212\tMusa288\tchr01\n+213\tMusa287\tchr0'..b'01\n+284\tMusa216\tchr01\n+285\tMusa215\tchr01\n+286\tMusa214\tchr01\n+287\tMusa213\tchr01\n+288\tMusa212\tchr01\n+289\tMusa211\tchr01\n+290\tMusa210\tchr01\n+291\tMusa209\tchr01\n+292\tMusa208\tchr01\n+293\tMusa207\tchr01\n+294\tMusa206\tchr01\n+295\tMusa205\tchr01\n+296\tMusa204\tchr01\n+297\tMusa203\tchr01\n+298\tMusa202\tchr01\n+299\tMusa201\tchr01\n+300\tMusa200\tchr01\n+301\tMusa199\tchr01\n+302\tMusa198\tchr01\n+303\tMusa197\tchr01\n+304\tMusa196\tchr01\n+305\tMusa195\tchr01\n+306\tMusa194\tchr01\n+307\tMusa193\tchr01\n+308\tMusa192\tchr01\n+309\tMusa191\tchr01\n+310\tMusa190\tchr01\n+311\tMusa189\tchr01\n+312\tMusa188\tchr01\n+313\tMusa187\tchr01\n+314\tMusa186\tchr01\n+315\tMusa185\tchr01\n+316\tMusa184\tchr01\n+317\tMusa183\tchr01\n+318\tMusa182\tchr01\n+319\tMusa181\tchr01\n+320\tMusa180\tchr01\n+321\tMusa179\tchr01\n+322\tMusa178\tchr01\n+323\tMusa177\tchr01\n+324\tMusa176\tchr01\n+325\tMusa175\tchr01\n+326\tMusa174\tchr01\n+327\tMusa173\tchr01\n+328\tMusa172\tchr01\n+329\tMusa171\tchr01\n+330\tMusa170\tchr01\n+331\tMusa169\tchr01\n+332\tMusa168\tchr01\n+333\tMusa167\tchr01\n+334\tMusa166\tchr01\n+335\tMusa165\tchr01\n+336\tMusa164\tchr01\n+337\tMusa163\tchr01\n+338\tMusa162\tchr01\n+339\tMusa161\tchr01\n+340\tMusa160\tchr01\n+341\tMusa159\tchr01\n+342\tMusa158\tchr01\n+343\tMusa157\tchr01\n+344\tMusa156\tchr01\n+345\tMusa155\tchr01\n+346\tMusa154\tchr01\n+347\tMusa153\tchr01\n+348\tMusa152\tchr01\n+349\tMusa151\tchr01\n+350\tMusa150\tchr01\n+351\tMusa149\tchr01\n+352\tMusa148\tchr01\n+353\tMusa147\tchr01\n+354\tMusa146\tchr01\n+355\tMusa145\tchr01\n+356\tMusa144\tchr01\n+357\tMusa143\tchr01\n+358\tMusa142\tchr01\n+359\tMusa141\tchr01\n+360\tMusa140\tchr01\n+361\tMusa139\tchr01\n+362\tMusa138\tchr01\n+363\tMusa137\tchr01\n+364\tMusa136\tchr01\n+365\tMusa135\tchr01\n+366\tMusa134\tchr01\n+367\tMusa133\tchr01\n+368\tMusa132\tchr01\n+369\tMusa131\tchr01\n+370\tMusa130\tchr01\n+371\tMusa129\tchr01\n+372\tMusa128\tchr01\n+373\tMusa127\tchr01\n+374\tMusa126\tchr01\n+375\tMusa125\tchr01\n+376\tMusa124\tchr01\n+377\tMusa123\tchr01\n+378\tMusa122\tchr01\n+379\tMusa121\tchr01\n+380\tMusa120\tchr01\n+381\tMusa119\tchr01\n+382\tMusa118\tchr01\n+383\tMusa117\tchr01\n+384\tMusa116\tchr01\n+385\tMusa115\tchr01\n+386\tMusa114\tchr01\n+387\tMusa113\tchr01\n+388\tMusa112\tchr01\n+389\tMusa111\tchr01\n+390\tMusa110\tchr01\n+391\tMusa109\tchr01\n+392\tMusa108\tchr01\n+393\tMusa107\tchr01\n+394\tMusa106\tchr01\n+395\tMusa105\tchr01\n+396\tMusa104\tchr01\n+397\tMusa103\tchr01\n+398\tMusa102\tchr01\n+399\tMusa101\tchr01\n+400\tMusa100\tchr01\n+401\tMusa99\tchr01\n+402\tMusa98\tchr01\n+403\tMusa97\tchr01\n+404\tMusa96\tchr01\n+405\tMusa95\tchr01\n+406\tMusa94\tchr01\n+407\tMusa93\tchr01\n+408\tMusa92\tchr01\n+409\tMusa91\tchr01\n+410\tMusa90\tchr01\n+411\tMusa89\tchr01\n+412\tMusa88\tchr01\n+413\tMusa87\tchr01\n+414\tMusa86\tchr01\n+415\tMusa85\tchr01\n+416\tMusa84\tchr01\n+417\tMusa83\tchr01\n+418\tMusa82\tchr01\n+419\tMusa81\tchr01\n+420\tMusa80\tchr01\n+421\tMusa79\tchr01\n+422\tMusa78\tchr01\n+423\tMusa77\tchr01\n+424\tMusa76\tchr01\n+425\tMusa75\tchr01\n+426\tMusa74\tchr01\n+427\tMusa73\tchr01\n+428\tMusa72\tchr01\n+429\tMusa71\tchr01\n+430\tMusa70\tchr01\n+431\tMusa69\tchr01\n+432\tMusa68\tchr01\n+433\tMusa67\tchr01\n+434\tMusa66\tchr01\n+435\tMusa65\tchr01\n+436\tMusa64\tchr01\n+437\tMusa63\tchr01\n+438\tMusa62\tchr01\n+439\tMusa61\tchr01\n+440\tMusa60\tchr01\n+441\tMusa59\tchr01\n+442\tMusa58\tchr01\n+443\tMusa57\tchr01\n+444\tMusa56\tchr01\n+445\tMusa55\tchr01\n+446\tMusa54\tchr01\n+447\tMusa53\tchr01\n+448\tMusa52\tchr01\n+449\tMusa51\tchr01\n+450\tMusa50\tchr01\n+451\tMusa49\tchr01\n+452\tMusa48\tchr01\n+453\tMusa47\tchr01\n+454\tMusa46\tchr01\n+455\tMusa45\tchr01\n+456\tMusa44\tchr01\n+457\tMusa43\tchr01\n+458\tMusa42\tchr01\n+459\tMusa41\tchr01\n+460\tMusa40\tchr01\n+461\tMusa39\tchr01\n+462\tMusa38\tchr01\n+463\tMusa37\tchr01\n+464\tMusa36\tchr01\n+465\tMusa35\tchr01\n+466\tMusa34\tchr01\n+467\tMusa33\tchr01\n+468\tMusa32\tchr01\n+469\tMusa31\tchr01\n+470\tMusa30\tchr01\n+471\tMusa29\tchr01\n+472\tMusa28\tchr01\n+473\tMusa27\tchr01\n+474\tMusa26\tchr01\n+475\tMusa25\tchr01\n+476\tMusa24\tchr01\n+477\tMusa23\tchr01\n+478\tMusa22\tchr01\n+479\tMusa21\tchr01\n+480\tMusa20\tchr01\n+481\tMusa19\tchr01\n+482\tMusa18\tchr01\n+483\tMusa17\tchr01\n+484\tMusa16\tchr01\n+485\tMusa15\tchr01\n+486\tMusa14\tchr01\n+487\tMusa13\tchr01\n+488\tMusa12\tchr01\n+489\tMusa11\tchr01\n+490\tMusa10\tchr01\n+491\tMusa9\tchr01\n+492\tMusa8\tchr01\n+493\tMusa7\tchr01\n+494\tMusa6\tchr01\n+495\tMusa5\tchr01\n+496\tMusa4\tchr01\n+497\tMusa3\tchr01\n+498\tMusa2\tchr01\n+499\tMusa1\tchr01\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/lod_matrix.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/lod_matrix.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,501 @@\n+ID\tMusa1\tMusa10\tMusa100\tMusa101\tMusa102\tMusa103\tMusa104\tMusa105\tMusa106\tMusa107\tMusa108\tMusa109\tMusa11\tMusa110\tMusa111\tMusa112\tMusa113\tMusa114\tMusa115\tMusa116\tMusa117\tMusa118\tMusa119\tMusa12\tMusa120\tMusa121\tMusa122\tMusa123\tMusa124\tMusa125\tMusa126\tMusa127\tMusa128\tMusa129\tMusa13\tMusa130\tMusa131\tMusa132\tMusa133\tMusa134\tMusa135\tMusa136\tMusa137\tMusa138\tMusa139\tMusa14\tMusa140\tMusa141\tMusa142\tMusa143\tMusa144\tMusa145\tMusa146\tMusa147\tMusa148\tMusa149\tMusa15\tMusa150\tMusa151\tMusa152\tMusa153\tMusa154\tMusa155\tMusa156\tMusa157\tMusa158\tMusa159\tMusa16\tMusa160\tMusa161\tMusa162\tMusa163\tMusa164\tMusa165\tMusa166\tMusa167\tMusa168\tMusa169\tMusa17\tMusa170\tMusa171\tMusa172\tMusa173\tMusa174\tMusa175\tMusa176\tMusa177\tMusa178\tMusa179\tMusa18\tMusa180\tMusa181\tMusa182\tMusa183\tMusa184\tMusa185\tMusa186\tMusa187\tMusa188\tMusa189\tMusa19\tMusa190\tMusa191\tMusa192\tMusa193\tMusa194\tMusa195\tMusa196\tMusa197\tMusa198\tMusa199\tMusa2\tMusa20\tMusa200\tMusa201\tMusa202\tMusa203\tMusa204\tMusa205\tMusa206\tMusa207\tMusa208\tMusa209\tMusa21\tMusa210\tMusa211\tMusa212\tMusa213\tMusa214\tMusa215\tMusa216\tMusa217\tMusa218\tMusa219\tMusa22\tMusa220\tMusa221\tMusa222\tMusa223\tMusa224\tMusa225\tMusa226\tMusa227\tMusa228\tMusa229\tMusa23\tMusa230\tMusa231\tMusa232\tMusa233\tMusa234\tMusa235\tMusa236\tMusa237\tMusa238\tMusa239\tMusa24\tMusa240\tMusa241\tMusa242\tMusa243\tMusa244\tMusa245\tMusa246\tMusa247\tMusa248\tMusa249\tMusa25\tMusa250\tMusa251\tMusa252\tMusa253\tMusa254\tMusa255\tMusa256\tMusa257\tMusa258\tMusa259\tMusa26\tMusa260\tMusa261\tMusa262\tMusa263\tMusa264\tMusa265\tMusa266\tMusa267\tMusa268\tMusa269\tMusa27\tMusa270\tMusa271\tMusa272\tMusa273\tMusa274\tMusa275\tMusa276\tMusa277\tMusa278\tMusa279\tMusa28\tMusa280\tMusa281\tMusa282\tMusa283\tMusa284\tMusa285\tMusa286\tMusa287\tMusa288\tMusa289\tMusa29\tMusa290\tMusa291\tMusa292\tMusa293\tMusa294\tMusa295\tMusa296\tMusa297\tMusa298\tMusa299\tMusa3\tMusa30\tMusa300\tMusa301\tMusa302\tMusa303\tMusa304\tMusa305\tMusa306\tMusa307\tMusa308\tMusa309\tMusa31\tMusa310\tMusa311\tMusa312\tMusa313\tMusa314\tMusa315\tMusa316\tMusa317\tMusa318\tMusa319\tMusa32\tMusa320\tMusa321\tMusa322\tMusa323\tMusa324\tMusa325\tMusa326\tMusa327\tMusa328\tMusa329\tMusa33\tMusa330\tMusa331\tMusa332\tMusa333\tMusa334\tMusa335\tMusa336\tMusa337\tMusa338\tMusa339\tMusa34\tMusa340\tMusa341\tMusa342\tMusa343\tMusa344\tMusa345\tMusa346\tMusa347\tMusa348\tMusa349\tMusa35\tMusa350\tMusa351\tMusa352\tMusa353\tMusa354\tMusa355\tMusa356\tMusa357\tMusa358\tMusa359\tMusa36\tMusa360\tMusa361\tMusa362\tMusa363\tMusa364\tMusa365\tMusa366\tMusa367\tMusa368\tMusa369\tMusa37\tMusa370\tMusa371\tMusa372\tMusa373\tMusa374\tMusa375\tMusa376\tMusa377\tMusa378\tMusa379\tMusa38\tMusa380\tMusa381\tMusa382\tMusa383\tMusa384\tMusa385\tMusa386\tMusa387\tMusa388\tMusa389\tMusa39\tMusa390\tMusa391\tMusa392\tMusa393\tMusa394\tMusa395\tMusa396\tMusa397\tMusa398\tMusa399\tMusa4\tMusa40\tMusa400\tMusa401\tMusa402\tMusa403\tMusa404\tMusa405\tMusa406\tMusa407\tMusa408\tMusa409\tMusa41\tMusa410\tMusa411\tMusa412\tMusa413\tMusa414\tMusa415\tMusa416\tMusa417\tMusa418\tMusa419\tMusa42\tMusa420\tMusa421\tMusa422\tMusa423\tMusa424\tMusa425\tMusa426\tMusa427\tMusa428\tMusa429\tMusa43\tMusa430\tMusa431\tMusa432\tMusa433\tMusa434\tMusa435\tMusa436\tMusa437\tMusa438\tMusa439\tMusa44\tMusa440\tMusa441\tMusa442\tMusa443\tMusa444\tMusa445\tMusa446\tMusa447\tMusa448\tMusa449\tMusa45\tMusa450\tMusa451\tMusa452\tMusa453\tMusa454\tMusa455\tMusa456\tMusa457\tMusa458\tMusa459\tMusa46\tMusa460\tMusa461\tMusa462\tMusa463\tMusa464\tMusa465\tMusa466\tMusa467\tMusa468\tMusa469\tMusa47\tMusa470\tMusa471\tMusa472\tMusa473\tMusa474\tMusa475\tMusa476\tMusa477\tMusa478\tMusa479\tMusa48\tMusa480\tMusa481\tMusa482\tMusa483\tMusa484\tMusa485\tMusa486\tMusa487\tMusa488\tMusa489\tMusa49\tMusa490\tMusa491\tMusa492\tMusa493\tMusa494\tMusa495\tMusa496\tMusa497\tMusa498\tMusa499\tMusa5\tMusa50\tMusa500\tMusa51\tMusa52\tMusa53\tMusa54\tMusa55\tMusa56\tMusa57\tMusa58\tMusa59\tMusa6\tMusa60\tMusa61\tMusa62\tMusa63\tMusa64\tMusa65\tMusa66\tMusa67\tMusa68\tMusa69\tMusa7\tMusa70\tMusa71\tMusa72\tMusa73\tMusa74\tMusa75\tMusa76\tMusa77\tMusa78\tMusa79\tMusa8\tMusa80\tMusa81\tMusa82\tMusa83\tMusa84\tMusa85\tMusa86\tMusa87\tMusa88\tMusa89\tMusa9\tMusa90\tMusa91\tMusa92\tMusa93\tMusa94\tMusa95\tMusa96\tMusa97\tMusa98\tMusa99\n+Musa1\t82.3516245731\t47.7747904468\t7.35989703024\t7.9228017673\t9.0391383404\t10.2925711'..b'615\t8.07036205514\t8.18268620568\t17.0002670438\t9.23486066687\t8.67314047798\t11.7169126274\t9.94373035644\t7.66831665702\t11.4648737324\t11.45288656\t6.68575320463\t10.009634331\t8.71524455236\t17.8224454369\t9.02230936778\t9.96389652522\t8.31525206613\t8.71834951781\t7.48657007321\t9.82374710109\t7.92259551615\t8.56175251053\t7.93688935726\t6.64777279509\t21.7375449992\t7.03606460633\t9.61462627663\t8.8146064017\t6.02638735626\t9.15171808814\t7.53729900081\t7.13444524602\t6.59802848483\t7.52449857246\t5.52206001224\t20.1971846502\t6.31261457599\t6.25681109746\t4.91452024987\t5.83283110965\t4.89549411615\t5.35353105387\t4.07007824166\t5.07614634093\t4.95024182131\t4.45202915238\t20.1324702906\t3.80151168406\t4.40289306844\t3.66321813334\t2.73341875445\t1.92567912686\t2.14157349655\t2.15817252966\t1.08998570532\t2.82816139437\t2.51990335541\t17.6809114998\t2.09667617933\t2.93193067411\t1.65700933012\t1.233629134\t2.0022812792\t2.65698267343\t1.828552123\t3.02528781573\t1.51927550501\t1.87793866247\t17.7651385729\t1.5876675078\t2.31992536751\t2.79417421489\t2.1896519881\t3.55444009818\t2.56320242411\t1.49134766099\t1.99032836206\t3.04024011687\t2.68142870773\t20.2004056221\t1.93022486073\t3.15557293768\t1.96151069209\t1.14777678165\t2.49662744352\t2.50925064274\t1.50483776191\t2.26118742361\t2.59113245029\t1.05764808168\t21.1668827144\t1.36849471293\t0.780225609147\t0.450859897937\t0.721482426636\t1.30034223715\t1.13216097645\t2.01499350044\t1.25258712796\t1.54133669121\t0.637934462765\t20.8169171492\t2.281028154\t1.42619657166\t0.663597545123\t1.13928471623\t0.912950697805\t0.690233191066\t0.69957099985\t0.182725517235\t0.796949849459\t0.480920443008\t9.09729664493\t20.360035574\t0.402787311053\t0.656972834628\t0.202886240873\t0.818589097938\t0.699610738503\t0.321788482931\t0.307716671609\t0.700013838932\t0.312371728261\t0.258734449082\t19.4659348649\t0.148509378336\t0.602142952593\t0.141141806739\t0.215696810831\t0.0205776452834\t0.060249845745\t0.08923188921\t0.194280423379\t0.266802116156\t0.0195775462375\t18.7668646873\t0.286073341124\t0.192291420257\t0.118375187684\t0.0742610966821\t0.0807536484556\t0.0286009997616\t0.155759368705\t0.228024526002\t0.315338349857\t0.123569517743\t19.3447442041\t0.48927604805\t0.132373435807\t0.423670781164\t0.284895089487\t0.107937268149\t0.488099555839\t0.462108316369\t0.306807173904\t0.236461062597\t0.383828615353\t22.6251890049\t0.270741790019\t0.0878889489046\t0.147948542444\t0.48019719096\t0.236889205839\t0.122813830568\t0.189172385428\t0.199298661229\t0.1762536867\t0.672939115915\t19.5974729826\t0.118846777667\t0.308832370115\t0.181967641284\t0.255631469134\t0.0434880964037\t0.166841440194\t0.73593623897\t0.0797201443966\t0.89023530369\t0.232601135355\t19.6070905579\t0.378017293098\t0.424296275725\t0.0933484574365\t0.264510966284\t0.296499424844\t0.468956077798\t0.427367982951\t0.303580751102\t0.342930703463\t0.490402609028\t20.8508785277\t0.297249881408\t0.505890399757\t0.325687001933\t0.0704358593834\t0.161147797608\t0.293095130247\t0.308787268572\t0.166973118456\t0.199258732051\t0.111208803492\t21.2441672824\t0.717739086141\t0.383530746844\t0.261130648292\t0.498798169505\t1.27223994307\t0.650379479409\t1.22129415689\t0.126473754411\t0.828022669478\t0.581040094876\t21.6206013781\t0.598344606942\t1.04441330147\t0.562340364344\t0.791015871167\t0.283650621431\t0.917477871767\t0.433658379504\t0.589761043359\t0.821661282526\t0.390454931851\t7.92515582994\t22.7890665967\t0.311283003713\t22.3387994618\t26.6773451561\t26.9358809784\t21.2297086796\t21.8677116167\t23.6447131955\t26.2127982127\t23.4665238138\t23.3872373966\t9.60209820075\t26.3911837167\t27.6688062162\t27.0619983839\t27.0915421069\t27.681273041\t30.4086793741\t29.1089414563\t28.9796685065\t32.9718795821\t32.599554029\t9.16391827467\t32.058681758\t33.0859949948\t34.2065520355\t37.733533858\t37.0289378632\t39.3229164297\t33.5456255958\t41.2670505737\t37.7781793199\t35.3168394683\t10.13342608\t47.3478207226\t39.3197598646\t42.5411740953\t42.4195465451\t42.2503871959\t42.2556293297\t42.7016692257\t49.8198576041\t43.6195375703\t51.3146315818\t12.5508219982\t48.0606670844\t48.8453555465\t49.386950878\t48.8301322966\t56.8519034649\t52.5006239372\t57.164344555\t62.3433643052\t69.6769420257\t82.3516245731\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/marker_data.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/marker_data.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,501 @@\n+locus\ttype\tphase\tsegregation\tIND1\tIND2\tIND3\tIND4\tIND5\tIND6\tIND7\tIND8\tIND9\tIND10\tIND11\tIND12\tIND13\tIND14\tIND15\tIND16\tIND17\tIND18\tIND19\tIND20\tIND21\tIND22\tIND23\tIND24\tIND25\tIND26\tIND27\tIND28\tIND29\tIND30\tIND31\tIND32\tIND33\tIND34\tIND35\tIND36\tIND37\tIND38\tIND39\tIND40\tIND41\tIND42\tIND43\tIND44\tIND45\tIND46\tIND47\tIND48\tIND49\tIND50\tIND51\tIND52\tIND53\tIND54\tIND55\tIND56\tIND57\tIND58\tIND59\tIND60\tIND61\tIND62\tIND63\tIND64\tIND65\tIND66\tIND67\tIND68\tIND69\tIND70\tIND71\tIND72\tIND73\tIND74\tIND75\tIND76\tIND77\tIND78\tIND79\tIND80\tIND81\tIND82\tIND83\tIND84\tIND85\tIND86\tIND87\tIND88\tIND89\tIND90\tIND91\tIND92\tIND93\tIND94\tIND95\tIND96\tIND97\tIND98\tIND99\tIND100\tIND101\tIND102\tIND103\tIND104\tIND105\tIND106\tIND107\tIND108\tIND109\tIND110\tIND111\tIND112\tIND113\tIND114\tIND115\tIND116\tIND117\tIND118\tIND119\tIND120\tIND121\tIND122\tIND123\tIND124\tIND125\tIND126\tIND127\tIND128\tIND129\tIND130\tIND131\tIND132\tIND133\tIND134\tIND135\tIND136\tIND137\tIND138\tIND139\tIND140\tIND141\tIND142\tIND143\tIND144\tIND145\tIND146\tIND147\tIND148\tIND149\tIND150\tIND151\tIND152\tIND153\tIND154\tIND155\tIND156\tIND157\tIND158\tIND159\tIND160\tIND161\tIND162\tIND163\tIND164\tIND165\tIND166\tIND167\tIND168\tIND169\tIND170\tIND171\tIND172\tIND173\tIND174\tIND175\tIND176\tIND177\tIND178\tIND179\tIND180\tIND181\tIND182\tIND183\tIND184\tIND185\tIND186\tIND187\tIND188\tIND189\tIND190\tIND191\tIND192\tIND193\tIND194\tIND195\tIND196\tIND197\tIND198\tIND199\tIND200\r\n+Musa1\t<hkxhk>\t-\t(hh,hk,kk)\thh\thk\thk\tkk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thh\thh\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\tkk\thh\tkk\thk\tkk\tkk\tkk\thk\thk\thk\thk\thh\thk\tkk\tkk\thk\tkk\thk\thk\thk\tkk\thh\thh\thh\thk\thk\t--\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\tkk\tkk\thh\t--\thh\thk\thk\tkk\thk\tkk\tkk\thk\thk\thh\thk\thk\thk\thk\thk\tkk\thk\thk\thh\thh\thk\thk\tkk\thk\thk\thk\thh\thk\thk\thk\thk\thk\tkk\thh\thk\tkk\thk\thh\tkk\tkk\thk\thk\t--\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thh\thh\thk\thk\t--\thk\thh\thk\tkk\tkk\tkk\thk\thh\thk\thh\thh\thh\thh\tkk\thk\thk\tkk\tkk\thk\tkk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\thk\thk\thk\thh\tkk\thh\thk\thk\thk\tkk\thk\thk\thh\tkk\thk\thh\thk\thh\thk\thk\thk\thk\tkk\thk\r\n+Musa10\t<hkxhk>\t-\t(hh,hk,kk)\thh\thk\thk\tkk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thk\thk\thh\thh\t--\thh\t--\thk\thk\thh\thk\thk\thh\thh\tkk\thk\thh\thk\tkk\thh\tkk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\tkk\tkk\thk\thh\thk\thk\thk\tkk\thh\thh\thh\thk\thk\thh\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\tkk\tkk\thh\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\thk\thh\thh\thk\thk\tkk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thk\thk\thk\thh\tkk\tkk\thk\thk\tkk\thk\tkk\thk\thk\tkk\thk\tkk\thk\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thh\thh\thk\thh\thh\thh\thh\thk\tkk\tkk\thk\thk\thh\thk\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\tkk\tkk\tkk\thk\tkk\thh\thh\thk\thk\thh\thk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\tkk\thk\thk\thh\tkk\thk\thh\thk\thh\thk\thk\thk\thk\tkk\thk\r\n+Musa100\t<hkxhk>\t-\t(hh,hk,kk)\thh\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\tkk\thk\tkk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\thk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\tkk\thh\thk\thk\thh\thh\t--\thk\thh\thk\thh\tkk\t--\tkk\thk\tkk\thh\thk\thh\thk\thk\thk\tkk\tkk\thk\thk\thk\thh\thk\thh\thk\thk\thh\thh\t--\thh\tkk\thk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\t--\thh\thh\tkk\thh\thh\thk\thh\tkk\thk\thh\thk\thk\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\tkk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa101\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\tkk\thk\thk\thk\thk\tkk\thh\thh\thk\thh\thk\thh\tkk\thk\thh\tkk\thk\thk\tkk\thh\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\thk\tkk\tkk\thk\thh\thk\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\thh\thh\thk\thh\thk\thk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thk\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thh\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thh\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa102\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\t--\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\tkk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh'..b'k\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\tkk\t--\tkk\tkk\tkk\thh\thk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa94\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\t--\thh\thh\thh\thh\thk\thh\tkk\tkk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thh\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\thk\tkk\tkk\thk\thk\thk\thh\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thh\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\t--\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa95\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thk\thh\thh\thk\tkk\tkk\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\t--\thh\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thh\tkk\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\thk\thh\thk\thh\tkk\tkk\t--\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\tkk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\t--\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\t--\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thk\thk\thk\thk\t--\thk\thh\thk\thk\thh\thk\r\n+Musa96\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\t--\thk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thh\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\thh\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\tkk\thk\tkk\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\t--\thk\thh\tkk\tkk\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thh\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa97\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\thh\thk\thh\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\tkk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\t--\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\tkk\thk\thh\thh\t--\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\t--\thk\thh\tkk\tkk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\t--\thk\r\n+Musa98\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa99\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\t--\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\tkk\tkk\tkk\thk\thh\thh\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\tkk\t--\thh\thk\thk\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\tkk\thk\thk\tkk\thk\thh\thk\thk\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\tkk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\t--\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thk\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/marker_order.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/marker_order.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,499 @@ +Musa500 scaff8 +Musa499 scaff8 +Musa498 scaff8 +Musa497 scaff8 +Musa496 scaff8 +Musa495 scaff8 +Musa494 scaff8 +Musa493 scaff8 +Musa492 scaff8 +Musa491 scaff8 +Musa490 scaff8 +Musa489 scaff8 +Musa488 scaff8 +Musa486 scaff8 +Musa485 scaff8 +Musa484 scaff8 +Musa483 scaff8 +Musa482 scaff8 +Musa481 scaff8 +Musa480 scaff8 +Musa479 scaff8 +Musa478 scaff8 +Musa477 scaff8 +Musa476 scaff8 +Musa475 scaff3 +Musa474 scaff3 +Musa473 scaff3 +Musa472 scaff3 +Musa471 scaff3 +Musa470 scaff3 +Musa469 scaff3 +Musa468 scaff3 +Musa467 scaff3 +Musa466 scaff3 +Musa465 scaff3 +Musa464 scaff3 +Musa463 scaff3 +Musa462 scaff3 +Musa461 scaff3 +Musa460 scaff3 +Musa459 scaff3 +Musa458 scaff3 +Musa457 scaff3 +Musa456 scaff3 +Musa455 scaff3 +Musa454 scaff3 +Musa453 scaff3 +Musa452 scaff3 +Musa451 scaff3 +Musa450 scaff3 +Musa449 scaff3 +Musa448 scaff3 +Musa447 scaff3 +Musa446 scaff3 +Musa445 scaff3 +Musa444 scaff3 +Musa443 scaff3 +Musa442 scaff3 +Musa441 scaff3 +Musa440 scaff3 +Musa439 scaff3 +Musa438 scaff3 +Musa437 scaff3 +Musa436 scaff3 +Musa435 scaff3 +Musa434 scaff3 +Musa433 scaff3 +Musa432 scaff3 +Musa431 scaff3 +Musa430 scaff3 +Musa429 scaff3 +Musa428 scaff3 +Musa427 scaff3 +Musa426 scaff3 +Musa425 scaff3 +Musa424 scaff3 +Musa423 scaff3 +Musa422 scaff3 +Musa421 scaff3 +Musa420 scaff3 +Musa419 scaff3 +Musa418 scaff3 +Musa417 scaff3 +Musa416 scaff3 +Musa415 scaff3 +Musa414 scaff3 +Musa413 scaff3 +Musa412 scaff3 +Musa411 scaff3 +Musa410 scaff3 +Musa409 scaff3 +Musa408 scaff3 +Musa407 scaff3 +Musa406 scaff3 +Musa405 scaff3 +Musa404 scaff3 +Musa403 scaff3 +Musa402 scaff3 +Musa401 scaff3 +Musa400 scaff3 +Musa399 scaff3 +Musa398 scaff3 +Musa397 scaff3 +Musa396 scaff3 +Musa395 scaff2 +Musa394 scaff2 +Musa393 scaff2 +Musa392 scaff2 +Musa391 scaff2 +Musa390 scaff2 +Musa389 scaff2 +Musa388 scaff2 +Musa387 scaff2 +Musa386 scaff2 +Musa385 scaff2 +Musa384 scaff2 +Musa383 scaff2 +Musa382 scaff2 +Musa381 scaff2 +Musa380 scaff2 +Musa379 scaff2 +Musa378 scaff2 +Musa377 scaff2 +Musa376 scaff2 +Musa375 scaff2 +Musa374 scaff2 +Musa373 scaff2 +Musa372 scaff2 +Musa371 scaff2 +Musa370 scaff2 +Musa369 scaff2 +Musa368 scaff2 +Musa367 scaff2 +Musa366 scaff2 +Musa365 scaff2 +Musa364 scaff2 +Musa363 scaff2 +Musa362 scaff2 +Musa361 scaff2 +Musa360 scaff2 +Musa359 scaff2 +Musa358 scaff2 +Musa357 scaff2 +Musa356 scaff2 +Musa355 scaff2 +Musa354 scaff2 +Musa353 scaff2 +Musa352 scaff2 +Musa351 scaff2 +Musa350 scaff2 +Musa349 scaff2 +Musa348 scaff2 +Musa347 scaff2 +Musa346 scaff2 +Musa345 scaff2 +Musa344 scaff2 +Musa343 scaff2 +Musa342 scaff2 +Musa341 scaff2 +Musa340 scaff2 +Musa339 scaff2 +Musa338 scaff2 +Musa337 scaff2 +Musa336 scaff2 +Musa335 scaff2 +Musa334 scaff2 +Musa333 scaff2 +Musa332 scaff2 +Musa331 scaff2 +Musa330 scaff2 +Musa329 scaff2 +Musa328 scaff2 +Musa327 scaff2 +Musa326 scaff2 +Musa325 scaff2 +Musa324 scaff2 +Musa323 scaff2 +Musa322 scaff2 +Musa321 scaff2 +Musa320 scaff2 +Musa319 scaff2 +Musa318 scaff2 +Musa317 scaff2 +Musa316 scaff2 +Musa315 scaff2 +Musa314 scaff2 +Musa313 scaff2 +Musa312 scaff2 +Musa311 scaff2 +Musa310 scaff2 +Musa309 scaff2 +Musa308 scaff2 +Musa307 scaff2 +Musa306 scaff2 +Musa305 scaff2 +Musa304 scaff2 +Musa303 scaff2 +Musa302 scaff2 +Musa301 scaff2 +Musa300 scaff2 +Musa299 scaff2 +Musa298 scaff2 +Musa297 scaff2 +Musa296 scaff2 +Musa295 scaff2 +Musa294 scaff2 +Musa293 scaff2 +Musa292 scaff2 +Musa291 scaff2 +Musa290 scaff2 +Musa289 scaff2 +Musa288 scaff2 +Musa287 scaff2 +Musa286 scaff2 +Musa285 scaff2 +Musa284 scaff2 +Musa283 scaff2 +Musa282 scaff4 +Musa281 scaff4 +Musa280 scaff4 +Musa279 scaff4 +Musa278 scaff4 +Musa277 scaff4 +Musa276 scaff4 +Musa275 scaff4 +Musa274 scaff4 +Musa273 scaff4 +Musa272 scaff4 +Musa271 scaff4 +Musa270 scaff4 +Musa269 scaff4 +Musa268 scaff4 +Musa267 scaff4 +Musa266 scaff4 +Musa265 scaff4 +Musa264 scaff4 +Musa263 scaff4 +Musa262 scaff4 +Musa261 scaff4 +Musa260 scaff4 +Musa259 scaff4 +Musa258 scaff4 +Musa257 scaff4 +Musa256 scaff4 +Musa255 scaff4 +Musa254 scaff4 +Musa253 scaff4 +Musa252 scaff4 +Musa251 scaff4 +Musa250 scaff4 +Musa249 scaff7 +Musa248 scaff7 +Musa247 scaff7 +Musa246 scaff7 +Musa245 scaff7 +Musa244 scaff7 +Musa243 scaff7 +Musa242 scaff7 +Musa241 scaff7 +Musa240 scaff7 +Musa239 scaff7 +Musa238 scaff7 +Musa237 scaff7 +Musa236 scaff7 +Musa235 scaff7 +Musa234 scaff7 +Musa233 scaff7 +Musa232 scaff7 +Musa231 scaff7 +Musa230 scaff7 +Musa229 scaff7 +Musa228 scaff7 +Musa227 scaff7 +Musa226 scaff7 +Musa225 scaff5 +Musa224 scaff5 +Musa223 scaff5 +Musa222 scaff5 +Musa221 scaff5 +Musa220 scaff5 +Musa219 scaff5 +Musa218 scaff5 +Musa217 scaff5 +Musa216 scaff5 +Musa215 scaff5 +Musa214 scaff5 +Musa213 scaff5 +Musa212 scaff5 +Musa211 scaff5 +Musa210 scaff5 +Musa209 scaff5 +Musa208 scaff5 +Musa207 scaff5 +Musa206 scaff5 +Musa205 scaff5 +Musa204 scaff5 +Musa203 scaff5 +Musa202 scaff5 +Musa201 scaff5 +Musa200 scaff1 +Musa199 scaff1 +Musa198 scaff1 +Musa197 scaff1 +Musa196 scaff1 +Musa195 scaff1 +Musa194 scaff1 +Musa193 scaff1 +Musa192 scaff1 +Musa191 scaff1 +Musa190 scaff1 +Musa189 scaff1 +Musa188 scaff1 +Musa187 scaff1 +Musa186 scaff1 +Musa185 scaff1 +Musa184 scaff1 +Musa183 scaff1 +Musa182 scaff1 +Musa181 scaff1 +Musa180 scaff1 +Musa179 scaff1 +Musa178 scaff1 +Musa177 scaff1 +Musa176 scaff1 +Musa175 scaff1 +Musa174 scaff1 +Musa173 scaff1 +Musa172 scaff1 +Musa171 scaff1 +Musa170 scaff1 +Musa169 scaff1 +Musa168 scaff1 +Musa167 scaff1 +Musa166 scaff1 +Musa165 scaff1 +Musa164 scaff1 +Musa163 scaff1 +Musa162 scaff1 +Musa161 scaff1 +Musa160 scaff1 +Musa159 scaff1 +Musa158 scaff1 +Musa157 scaff1 +Musa156 scaff1 +Musa155 scaff1 +Musa154 scaff1 +Musa153 scaff1 +Musa152 scaff1 +Musa151 scaff1 +Musa150 scaff1 +Musa149 scaff1 +Musa148 scaff1 +Musa147 scaff1 +Musa146 scaff1 +Musa145 scaff1 +Musa144 scaff1 +Musa143 scaff1 +Musa142 scaff1 +Musa141 scaff1 +Musa140 scaff1 +Musa139 scaff1 +Musa138 scaff1 +Musa137 scaff1 +Musa136 scaff1 +Musa135 scaff1 +Musa134 scaff1 +Musa133 scaff1 +Musa132 scaff1 +Musa131 scaff1 +Musa130 scaff1 +Musa129 scaff1 +Musa128 scaff1 +Musa127 scaff1 +Musa126 scaff1 +Musa125 scaff1 +Musa124 scaff1 +Musa123 scaff1 +Musa122 scaff1 +Musa121 scaff1 +Musa120 scaff1 +Musa119 scaff1 +Musa118 scaff1 +Musa117 scaff1 +Musa116 scaff1 +Musa115 scaff1 +Musa114 scaff1 +Musa113 scaff1 +Musa112 scaff1 +Musa111 scaff1 +Musa110 scaff1 +Musa109 scaff1 +Musa108 scaff1 +Musa107 scaff1 +Musa106 scaff1 +Musa105 scaff1 +Musa104 scaff1 +Musa103 scaff1 +Musa102 scaff1 +Musa101 scaff1 +Musa100 scaff1 +Musa99 scaff1 +Musa98 scaff1 +Musa97 scaff1 +Musa96 scaff1 +Musa95 scaff1 +Musa94 scaff1 +Musa93 scaff1 +Musa92 scaff1 +Musa91 scaff1 +Musa90 scaff1 +Musa89 scaff1 +Musa88 scaff1 +Musa87 scaff1 +Musa86 scaff1 +Musa85 scaff1 +Musa84 scaff1 +Musa83 scaff1 +Musa82 scaff1 +Musa81 scaff1 +Musa80 scaff1 +Musa79 scaff1 +Musa78 scaff1 +Musa77 scaff1 +Musa76 scaff1 +Musa75 scaff1 +Musa74 scaff1 +Musa73 scaff1 +Musa72 scaff1 +Musa71 scaff1 +Musa70 scaff1 +Musa69 scaff1 +Musa68 scaff1 +Musa67 scaff1 +Musa66 scaff1 +Musa65 scaff1 +Musa64 scaff1 +Musa63 scaff1 +Musa62 scaff1 +Musa61 scaff1 +Musa60 scaff1 +Musa59 scaff1 +Musa58 scaff1 +Musa57 scaff1 +Musa56 scaff1 +Musa55 scaff1 +Musa54 scaff1 +Musa53 scaff1 +Musa52 scaff1 +Musa51 scaff1 +Musa50 scaff1 +Musa49 scaff1 +Musa48 scaff1 +Musa47 scaff1 +Musa46 scaff1 +Musa45 scaff1 +Musa44 scaff1 +Musa43 scaff1 +Musa42 scaff1 +Musa41 scaff1 +Musa40 scaff1 +Musa39 scaff1 +Musa38 scaff1 +Musa37 scaff1 +Musa36 scaff1 +Musa35 scaff1 +Musa34 scaff1 +Musa33 scaff1 +Musa32 scaff1 +Musa31 scaff1 +Musa30 scaff1 +Musa29 scaff6 +Musa28 scaff6 +Musa27 scaff6 +Musa26 scaff6 +Musa25 scaff6 +Musa24 scaff6 +Musa23 scaff6 +Musa22 scaff6 +Musa21 scaff6 +Musa20 scaff6 +Musa19 scaff6 +Musa18 scaff6 +Musa17 scaff6 +Musa16 scaff6 +Musa15 scaff6 +Musa14 scaff6 +Musa13 scaff6 +Musa12 scaff6 +Musa11 scaff6 +Musa10 scaff6 +Musa9 scaff6 +Musa8 scaff6 +Musa7 scaff6 +Musa6 scaff6 +Musa5 scaff6 +Musa4 scaff6 +Musa3 scaff6 +Musa2 scaff6 +Musa1 scaff6 |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/markers.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/markers.fasta Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,1000 @@\n+>Musa1\n+TTACCGAGACTGGGCATAACCCGAACCGAGCGATAGAATTTGGATCGAGATCACATGATTTAAAGCTCGACTCGACGATGCCAATTGTAAGCGGGTCAAAC\r\n+>Musa2\n+ACACTCCCTAATTGGTTTTTATGATGAAAATATCCTCGGTCAAATCCATAAATAACATCGATAATCCATCATAAATGAAAATATCCTCAGTCAAACAGGTC\r\n+>Musa3\n+TCCATCTTTTGAGGCCTCCGTACTGCTGTATTTTCCTTGTTCGAGCAAGGTGCTTTTCATATCCTGTTTCCCGACCCTTCTGGGATACTTGGCAAAGGCAG\r\n+>Musa4\n+ATTATTTTGTGCTTAGTTTTGATATTCTCATGTACATGTAAAGATGAGTTGAACAAAAAAGGACTTGCAAGCTTTAAACAAAATAGTTTTTGTGTATTTAA\r\n+>Musa5\n+ATCCTTTATGATAACAAATTTGGATCTATTACGGACATTCAAGGTGCAATAGTAGGATCAGGGTTGCCGCAAGCGCTAGGTGCCACAGACTCAAAATGCCC\r\n+>Musa6\n+CAGCATAATACATAAATAAAAAAACTAAGCAAAATATGAACAAAACACATTGAAATAAGAACCGTTATATCACGGACAAACTTCGAAATAGGGTGTTTGAT\r\n+>Musa7\n+CATGCCATCATCCAATGTCTTTGACCGACATAATCCAATGCAAACATTTCATATAATAATCTTTCTTGATAACTTTATTTTTCCATGCAGTTCTAATCTTC\r\n+>Musa8\n+ATGGAAGTCAATACCAACCTTAGTTGATGCCCTATAGAAGATACTTAATATAATCTCAGTTGGTTTTAAGGTTTGATTCAAGTTTACGAACAAATATGCCA\r\n+>Musa9\n+TAATAATAATGGTATGAGAGAGATAGAGACTTCATGAGCTTATTTTTGACAAATGACAAAAGATGCATGCAGTTAAGCCTAAATATTTGAGACTTCATGAG\r\n+>Musa10\n+ATCGTCACTGGTCTTTCAACCAACGATCAGAAGAACCTAGATGGTCATAGACCCATCAGGAATGCCTACATGATTAGTGAAGGATGGGCATCGAGTACTCC\r\n+>Musa11\n+TCCTACAATGGAAAAGGTGTTGAACAGAGAGTTAGCTGATACTGGTTGGACATATTGATGTGCAGGATGCGACTGAACTATTGAAGGATGGAATTGATTTG\r\n+>Musa12\n+AGGGAGCTCCGGAGGAAACTATTTGGGCGGTACAGGAGGCCCAACACACGAAGAAGTCGAAGTCGCAGTCACAGTCCAAGCCCATATTATAAAAGGGGATC\r\n+>Musa13\n+TACCTCCACCACCTCCTTTATCCACCGCCTTCTTCCGCCCACGTGCAACCGGAAGAATCGAAGGCGCCCCAGGAGACGAAACCCGAGCTTTGCCCTGACAA\r\n+>Musa14\n+TTAAATATTAAAAAAAATACTTTCAACCCAAACAAACCTCACGTGAGCATTTTTACCAACCCAAGGCTGAGTGAGACCAACGGGGCTCACCACCGCACTGC\r\n+>Musa15\n+GCAATCATGACGACATCGAGAACCGCTGCTTCTGGTTTCGGACATGGACGAGGCTCCGCTGCCTCTCGCTTTGGATACCCGCAGGAGAAGTGCTAACGCCG\r\n+>Musa16\n+TCAATGTTCATTTATGAATGTAACAATTTAAATATTATCCATTTTACCTTAAATTTTTACTATAGAGGAGCAATAAAATCTAAATAATGAATCAATAGTTC\r\n+>Musa17\n+CAGGAAACTATGAAATGCCACGATTATCATCATCCAAGACTTCTGCTAGACTATGTTTAGCAATTTAGAAAGCATCATAAGCCTAGAAGACACAAAGTTTT\r\n+>Musa18\n+GACTGTAAGTAGATGAATGCACCTCTAGGGCCAAAAATCTGGAAGCAATTATAAATATTTAGTGGAAGTGAAATATAATGGCATGATCACCAGGACTCTCA\r\n+>Musa19\n+TCCCAATAAAGCAGATGCCAAGTTTCTAGTCAGGTCAACTTTTGGAATTCAACACAACTAATTGGCAGGTAGAAAACTTGTCAGGTCATACCGAACGATAT\r\n+>Musa20\n+TAAAGCAGATGCCAAGTTTCTAGTCAGGTCAACTTTTGGAATTCAACACAACTAATTGGCAGGTAGAAAACTTGTCAGGTCATACCGAACGATATATATAT\r\n+>Musa21\n+TTCTTTCTTTGCAGCTCGGTCTTCAGGCCTGTACTTGAGAAGCATCTTGAAAAGATTTGTAGCTGGAAAAACATTATATAGACAGATAAGTGGGACGACAA\r\n+>Musa22\n+ATTGAACTATTGGAAAGGGGTAGATTCATCATTTGCAGGGACATTTAGGTTTTTTTTTAAATTTTTCTAGCTGGTTCGGAATTGAATCAAAACTGTTTCTG\r\n+>Musa23\n+CACTTGGGAAGAGTGCAATTACCCAGAAATTTTGCTTCTCATGTCACCATCAACTTCTCCATCGACACAAGCCAACTTTCACAATTTCAAGGCTTCATTCA\r\n+>Musa24\n+AATAGATAAATTAAGAACATACATAAATCTAATGAGTTTACCGAGTGGTACGGTATGGTACAGTATCGTGTACCGAGTGGTATACCTAATCGAGGTTGGCT\r\n+>Musa25\n+AAACCTAAAATTAACTAAAATTCTATAGTTCTATGGTTCTAGAGTAAAATTTTTCGTAGAACATAATGTCACAAAATTATTTACATGGATTATGCTCTGTT\r\n+>Musa26\n+TGTTTCAAAGCCGAAAGCTTTATGGCGTTTCTCAAATCCTCTGCTTCTCTCTGTTTCGTCGGTTTTGTTACTCCATCCATATATGGTTCATATATGGAAGG\r\n+>Musa27\n+AACACAAGGGTGCCTTACGACTTAGGCAATTGTAGCTAAGTCCGTGAAATTACGGTATCAGAGCGGGCAAGTAGTTCGAGCAAACGGCGAAAGTTTGCAAT\r\n+>Musa28\n+AGGAAGAGGAGGCGGAGGGGAAGGTGACGGATGAGGAAGATAAAGAGGGTATTATTATTTGTGAATAACAGGAGACCATTGACGAAGTGATGGCAACGGCG\r\n+>Musa29\n+AGATTCAAAGAAGTAATACAACAACAACAAGAAGAAGAAGAAGAAGAAGTACTCCAAATCAAACCATTTATATTCTAAATCTAACTTCATATCCAGTATCA\r\n+>Musa30\n+TCCATCGTTGTCAACTCCAGTGAGATTGCTCCTTCCCCAGCACCAAGTTTAACACCAAGGCCACGGCCAAGCCCTGGTGGCTTTAAGAGTAGTAACAAGTC\r\n+>Musa31\n+TTTTATAGAACATTGGTATGATGAAGATACTAGATTTGGTAATCATAATAGTTTAATACTTCATTCGATGAATTAAAGTTTTGAAATCTCAGCTAATAAAT\r\n+>Musa32\n+TAGTTCAATCAAAAGAAAAATAATATACAATTTATAGTAGCATAATTATATATAGCCTTTCTAGGAATTAACTCATGAAAATAATTATGTTGCATATATTT\r\n+>Musa33\n+CTTTAATCATTTTGCAGCCATCAACCATGATAGAGTCATTAGAAGCTTTAATAATGTATCCAATGCCTGCAAACTCAGCAGAGGGGTTACAGGAACCATCG\r\n+>Musa34\n+GCAGGCACTGCAGTGTGTTTGTTGTTTGAGACTTGACAGCACTTTTGTCTACCAATCTCCTCAACCTAAGCAGTCCTCTGAGTGCTCTCCATGATCTCCTC\r\n+>Musa35\n+CCAAAGAGAGAGCTTTTCCTGTTCCTCCTCACCAACGATGAAAGTAAACAACGAGGCCTTTCAAAGACCGGAACTTGGGAGGTTGTACGCGGCTGGCGACC\r\n+>Musa36\n+TTTTTTGTGAAGACATTTCTTTGC'..b'ACCAGAA\r\n+>Musa466\n+CTCTAGTTGACGTTGGTGACCTCGTCGGTGGAGGAAGCCAAAAGTGGAGTAGGTCAAGATTGACCGAACCACTCTAAATCTCGGTTTGCATTTACTTTGAG\r\n+>Musa467\n+GCACCGCTCTAGGATAGTCCGTCGCCTAGTAGCTCCCGAAGTCCACCGACTTCGCTGTAATTTGTGCACCATTGTCTGGATCCTGGGCCTCTGCCCCTACC\r\n+>Musa468\n+TCTCACCCCCACAATAAAAGGAAAAAAGCAGCATAAGACATTTTCTGAATGCATGTCATGTGCATCAGTGGTACTAAGGAACAAATCCAGTTATGCAGCAA\r\n+>Musa469\n+TCTCTTCTCATTTGCTAGATTTCATTCTTTCTTTGTGGGTGATGAGTTCGGTATTTGCCTACATTGTAAAGGTATGAGTTTTCGCCTCTGTGGGTTGAGAA\r\n+>Musa470\n+ATTCAATCGTAATATGCATAAACATAAATGTAAACAGGATAGCAGAAATAGATAACTTTAATTAAGCAAGAAGAATGTCAATAATATCATCCGCATAAACA\r\n+>Musa471\n+CAGCATAATCTTCGCTACGCACCGCTTCCTTCATGACAATTTGAATGATAGCACTGTGGCATATTCTTCAATAGTACTCGCTTCCGCGTCCTCTTGCCCCG\r\n+>Musa472\n+CACATGAATTAGCACTCATGGCAGAAAGTAATGACATTTTATTTTATTACTGCAAAATTCTAGATATTGCATGGGTGACATTTTAACAAAAACTCAAGTAC\r\n+>Musa473\n+AAATTTACTTTATTATTAACAATAACATACTATACATAAAATTAATTATTTAAATTTATAAATACCTACGGATGTAGTTGTCCTAGATCGAACTACCACTA\r\n+>Musa474\n+CACAGCTGTACCATCGATCATTTGGTGGCTTCCCTATCTCGCTCTACCGCTCCATTATTTTATTGCCCTCACTACATCCAATTCAGCAAACAAGAAACAAA\r\n+>Musa475\n+TGTCTATGACCAGTTACGCGTGGTGCGTGAAGGTCAACTGCGGATTGTTTTCTCTGCTGAATTGAAGGTATAATATAACTAAAGGAGCTGATTTTTTGGTA\r\n+>Musa476\n+AGGATCCATTGGAAATGACCCTAGGGTTAGGTAACCTCGACCGACTATTGTTGGGTCTACGAATATGCCTACTCAACTTATGAAGGCTTGCTTGGGGAGAA\r\n+>Musa477\n+CAAATATCCGAATCTCGTATCATCGAATAATGATGGATAGGTTTTTCATAAATTTTATTTTATTATTATTATTTTTTTGCTCGCTAAGCTTAATCTATACC\r\n+>Musa478\n+ATTGCTACAAAGTGTTTTTCATCTAATTTATTTTCATACAACGCCTCTTATTTTTTAAAATGATGAGATCATTCACTCCCATATCTTGTTAGTTACTATTG\r\n+>Musa479\n+TCCGTCTCCGCTGGCTTCGGAGGCTCTTCGGTCTCAATCTTGGGTTCCTCCGTAGCAGGGGCAGCGGGCTCTTCAGGCTTGGATTCCTCCTCCTTGGCTGG\r\n+>Musa480\n+GTTTCATGCGCTAAGGGTGTCGCGTGACTCGCTAGTAAAATAGTGGGAGCATATTAAGATAGAAGCACATATCTTGATTGTTTAATTTTGTAAAATCTGCA\r\n+>Musa481\n+CAATAGTTTGCAGTTTGCAATTTCAAATGATGTCATTTGGTTCCTCGGATGACACTGTTCGACAGCCAAATTGGAGAAATATTACTTTTAATTACTTGATT\r\n+>Musa482\n+TATATCTATCCACGGTACCTCTTTATTCTTTGATCTTCTTTTCATCTCCCTTCTAACAAAAGTGATGTAATTCGGGAAGGGAATCAGGCAGCCAAAAGCTT\r\n+>Musa483\n+AAGAGGAGGATTCCAACAAGAGGACCAACCTCGTTCCCCCCCACCTCTTCCCACCCAACCTCAACGGCACCAGACGTGGCCCCCAAGCCACGTGCCTGGTC\r\n+>Musa484\n+ATGATTGAATATTTTTTGGTACCCCACATGTTGGTCCTCCGCGGGGCCCAGAAACGGGTACGGAACAGAAGTTACGCTACTAGGCGGCTACGATTGCTTCC\r\n+>Musa485\n+TGCCCAGAAGAGGGCTAAATGTCTCTGGTCCTGTCAAATCATACCACCCTAACTTGAAAAACTTTTGGTATCCAGTGGCATTCTCATGTGATCTAAAAGAT\r\n+>Musa486\n+TTTACTTGATATAACTAAGATAAAAATTGGATGTAAAGTCAATAATATCTGCAGCTTCACAAACTTATTCAAAGTTATAGGAAGTAGAATTACTAGTAAAG\r\n+>Musa487\n+ATGGATGCAGCTGGTCTCATAGCTGCTCGTGTAGGGACACTAGGGATACAGTACAGGTGCTCATTGGAGAATGAGTTCACTGATTGATCCGCTTACGGAAT\r\n+>Musa488\n+TCCGCAACTCCGATATCCTTGGCGTAATACCCGCTCTTCTTGGCCTGATGCCCGAGTCCACAGCCCGAAGCCTTCTATCGATACGTCAATCGATCCACTGG\r\n+>Musa489\n+ACTAGCACTAACACTAAAACTGGGCGATACCACCACCTAGTATGGTAGTACCACCGCCTGACAATCTCTCGGAGACTGTGTCTGGGCGTACCACCACCCAA\r\n+>Musa490\n+TCATATTTCTATAGAAAAAAGAAGCAAATTTGATGACAAAAAGTGTTAAATATATATTTGTGAGGCATAGTAACGAGACAAAAGGTTCTAGATTTTATAAT\r\n+>Musa491\n+TTAGCATAAAGGCTTTATTCTCTCCCATTCTATTTCAAGTTTCAAGCATAAAGGTGTGTATTTCAAGGTTTAGAGAGGTATGTCTTTTAAGATTCTGGAAG\r\n+>Musa492\n+TAAAAATTTTTCTTCACTCTTTTGTAGATTCTCAGGAATCTGAAATGCCCTGCTGAAGGTGTGGAGTGCATTTCATGCAGGATGATTTTGATGCAAGGAGA\r\n+>Musa493\n+GTAGAAGTCCTATTAGGAGTTAGTTAGAAGTCCTATTATGAGTTAGGGTTTATAAGCCCTATAAATAGCCATGTATTCATCCTATTTTCTTAAACAATAGA\r\n+>Musa494\n+TAGTTCCGCAATAAATGAGAGCTTGTTATACCAGAGAGATTGTTTGGTAATATGGGCTTTTCCCCTATTTAACTTCTGACTAACTTGCTACAGATTAACTT\r\n+>Musa495\n+ATACGGTACGGTATTACGAACCTTGCCATGGTCTGCCGTACCGAAGCGTACCGCCCGTACCGGGCGGTATGTACCGGTCCGACAGGTTCTCGGTACACCAG\r\n+>Musa496\n+GTCCAAACCAAGGTTCGCCTTACCGGTCCGAACCAACATACCGGCTGACTAACAAAAACGAAAGACATGGATATACACAAATGTTACATCGAACATTATTT\r\n+>Musa497\n+TGCAGGAACATGACTTTGGAGTCATGTCAATCGCCTGAGTTCGGAAGCTTTTTCTTCTTGGAAAATACTGTACCTGATGATCATACAATACGGATCGAAAA\r\n+>Musa498\n+CTGTTCCACCACGATCCACTGCACCATGTCGCCTCCTGGTGACATCTCCATTGCATTCTGATCCTTGTGGGATGAACTCGAATTGTGAACCCTCCATGTGT\r\n+>Musa499\n+ATGTCAAATTGGTTATTGGTTCTTGAAAGGGTTTCTTGAAAGAGAATGATTCATTTTAAATATAATTAATGTAATATATCTTTTGGGATTATATAAACCCT\r\n+>Musa500\n+TTAGTCATTTATTATTTTTTATCTTGGTCTTCGATAAAAAATCTGCATCAACAAATTATATCTGCATCAATTGTAAGATTTCTATGAAAAGAAAATGTACT\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/matrix.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/matrix.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,501 @@\n+ID\tMusa1\tMusa10\tMusa100\tMusa101\tMusa102\tMusa103\tMusa104\tMusa105\tMusa106\tMusa107\tMusa108\tMusa109\tMusa11\tMusa110\tMusa111\tMusa112\tMusa113\tMusa114\tMusa115\tMusa116\tMusa117\tMusa118\tMusa119\tMusa12\tMusa120\tMusa121\tMusa122\tMusa123\tMusa124\tMusa125\tMusa126\tMusa127\tMusa128\tMusa129\tMusa13\tMusa130\tMusa131\tMusa132\tMusa133\tMusa134\tMusa135\tMusa136\tMusa137\tMusa138\tMusa139\tMusa14\tMusa140\tMusa141\tMusa142\tMusa143\tMusa144\tMusa145\tMusa146\tMusa147\tMusa148\tMusa149\tMusa15\tMusa150\tMusa151\tMusa152\tMusa153\tMusa154\tMusa155\tMusa156\tMusa157\tMusa158\tMusa159\tMusa16\tMusa160\tMusa161\tMusa162\tMusa163\tMusa164\tMusa165\tMusa166\tMusa167\tMusa168\tMusa169\tMusa17\tMusa170\tMusa171\tMusa172\tMusa173\tMusa174\tMusa175\tMusa176\tMusa177\tMusa178\tMusa179\tMusa18\tMusa180\tMusa181\tMusa182\tMusa183\tMusa184\tMusa185\tMusa186\tMusa187\tMusa188\tMusa189\tMusa19\tMusa190\tMusa191\tMusa192\tMusa193\tMusa194\tMusa195\tMusa196\tMusa197\tMusa198\tMusa199\tMusa2\tMusa20\tMusa200\tMusa201\tMusa202\tMusa203\tMusa204\tMusa205\tMusa206\tMusa207\tMusa208\tMusa209\tMusa21\tMusa210\tMusa211\tMusa212\tMusa213\tMusa214\tMusa215\tMusa216\tMusa217\tMusa218\tMusa219\tMusa22\tMusa220\tMusa221\tMusa222\tMusa223\tMusa224\tMusa225\tMusa226\tMusa227\tMusa228\tMusa229\tMusa23\tMusa230\tMusa231\tMusa232\tMusa233\tMusa234\tMusa235\tMusa236\tMusa237\tMusa238\tMusa239\tMusa24\tMusa240\tMusa241\tMusa242\tMusa243\tMusa244\tMusa245\tMusa246\tMusa247\tMusa248\tMusa249\tMusa25\tMusa250\tMusa251\tMusa252\tMusa253\tMusa254\tMusa255\tMusa256\tMusa257\tMusa258\tMusa259\tMusa26\tMusa260\tMusa261\tMusa262\tMusa263\tMusa264\tMusa265\tMusa266\tMusa267\tMusa268\tMusa269\tMusa27\tMusa270\tMusa271\tMusa272\tMusa273\tMusa274\tMusa275\tMusa276\tMusa277\tMusa278\tMusa279\tMusa28\tMusa280\tMusa281\tMusa282\tMusa283\tMusa284\tMusa285\tMusa286\tMusa287\tMusa288\tMusa289\tMusa29\tMusa290\tMusa291\tMusa292\tMusa293\tMusa294\tMusa295\tMusa296\tMusa297\tMusa298\tMusa299\tMusa3\tMusa30\tMusa300\tMusa301\tMusa302\tMusa303\tMusa304\tMusa305\tMusa306\tMusa307\tMusa308\tMusa309\tMusa31\tMusa310\tMusa311\tMusa312\tMusa313\tMusa314\tMusa315\tMusa316\tMusa317\tMusa318\tMusa319\tMusa32\tMusa320\tMusa321\tMusa322\tMusa323\tMusa324\tMusa325\tMusa326\tMusa327\tMusa328\tMusa329\tMusa33\tMusa330\tMusa331\tMusa332\tMusa333\tMusa334\tMusa335\tMusa336\tMusa337\tMusa338\tMusa339\tMusa34\tMusa340\tMusa341\tMusa342\tMusa343\tMusa344\tMusa345\tMusa346\tMusa347\tMusa348\tMusa349\tMusa35\tMusa350\tMusa351\tMusa352\tMusa353\tMusa354\tMusa355\tMusa356\tMusa357\tMusa358\tMusa359\tMusa36\tMusa360\tMusa361\tMusa362\tMusa363\tMusa364\tMusa365\tMusa366\tMusa367\tMusa368\tMusa369\tMusa37\tMusa370\tMusa371\tMusa372\tMusa373\tMusa374\tMusa375\tMusa376\tMusa377\tMusa378\tMusa379\tMusa38\tMusa380\tMusa381\tMusa382\tMusa383\tMusa384\tMusa385\tMusa386\tMusa387\tMusa388\tMusa389\tMusa39\tMusa390\tMusa391\tMusa392\tMusa393\tMusa394\tMusa395\tMusa396\tMusa397\tMusa398\tMusa399\tMusa4\tMusa40\tMusa400\tMusa401\tMusa402\tMusa403\tMusa404\tMusa405\tMusa406\tMusa407\tMusa408\tMusa409\tMusa41\tMusa410\tMusa411\tMusa412\tMusa413\tMusa414\tMusa415\tMusa416\tMusa417\tMusa418\tMusa419\tMusa42\tMusa420\tMusa421\tMusa422\tMusa423\tMusa424\tMusa425\tMusa426\tMusa427\tMusa428\tMusa429\tMusa43\tMusa430\tMusa431\tMusa432\tMusa433\tMusa434\tMusa435\tMusa436\tMusa437\tMusa438\tMusa439\tMusa44\tMusa440\tMusa441\tMusa442\tMusa443\tMusa444\tMusa445\tMusa446\tMusa447\tMusa448\tMusa449\tMusa45\tMusa450\tMusa451\tMusa452\tMusa453\tMusa454\tMusa455\tMusa456\tMusa457\tMusa458\tMusa459\tMusa46\tMusa460\tMusa461\tMusa462\tMusa463\tMusa464\tMusa465\tMusa466\tMusa467\tMusa468\tMusa469\tMusa47\tMusa470\tMusa471\tMusa472\tMusa473\tMusa474\tMusa475\tMusa476\tMusa477\tMusa478\tMusa479\tMusa48\tMusa480\tMusa481\tMusa482\tMusa483\tMusa484\tMusa485\tMusa486\tMusa487\tMusa488\tMusa489\tMusa49\tMusa490\tMusa491\tMusa492\tMusa493\tMusa494\tMusa495\tMusa496\tMusa497\tMusa498\tMusa499\tMusa5\tMusa50\tMusa500\tMusa51\tMusa52\tMusa53\tMusa54\tMusa55\tMusa56\tMusa57\tMusa58\tMusa59\tMusa6\tMusa60\tMusa61\tMusa62\tMusa63\tMusa64\tMusa65\tMusa66\tMusa67\tMusa68\tMusa69\tMusa7\tMusa70\tMusa71\tMusa72\tMusa73\tMusa74\tMusa75\tMusa76\tMusa77\tMusa78\tMusa79\tMusa8\tMusa80\tMusa81\tMusa82\tMusa83\tMusa84\tMusa85\tMusa86\tMusa87\tMusa88\tMusa89\tMusa9\tMusa90\tMusa91\tMusa92\tMusa93\tMusa94\tMusa95\tMusa96\tMusa97\tMusa98\tMusa99\n+Musa1\t999999999\t47.7747904468\t7.35989703024\t7.9228017673\t9.0391383404\t10.2925711351\t'..b'1388615\t8.07036205514\t8.18268620568\t17.0002670438\t9.23486066687\t8.67314047798\t11.7169126274\t9.94373035644\t7.66831665702\t11.4648737324\t11.45288656\t6.68575320463\t10.009634331\t8.71524455236\t17.8224454369\t9.02230936778\t9.96389652522\t8.31525206613\t8.71834951781\t7.48657007321\t9.82374710109\t7.92259551615\t8.56175251053\t7.93688935726\t6.64777279509\t21.7375449992\t7.03606460633\t9.61462627663\t8.8146064017\t6.02638735626\t9.15171808814\t7.53729900081\t7.13444524602\t6.59802848483\t7.52449857246\t5.52206001224\t20.1971846502\t6.31261457599\t6.25681109746\t4.91452024987\t5.83283110965\t4.89549411615\t5.35353105387\t4.07007824166\t5.07614634093\t4.95024182131\t4.45202915238\t20.1324702906\t3.80151168406\t4.40289306844\t3.66321813334\t2.73341875445\t1.92567912686\t2.14157349655\t2.15817252966\t1.08998570532\t2.82816139437\t2.51990335541\t17.6809114998\t2.09667617933\t2.93193067411\t1.65700933012\t1.233629134\t2.0022812792\t2.65698267343\t1.828552123\t3.02528781573\t1.51927550501\t1.87793866247\t17.7651385729\t1.5876675078\t2.31992536751\t2.79417421489\t2.1896519881\t3.55444009818\t2.56320242411\t1.49134766099\t1.99032836206\t3.04024011687\t2.68142870773\t20.2004056221\t1.93022486073\t3.15557293768\t1.96151069209\t1.14777678165\t2.49662744352\t2.50925064274\t1.50483776191\t2.26118742361\t2.59113245029\t1.05764808168\t21.1668827144\t1.36849471293\t0.780225609147\t0.450859897937\t0.721482426636\t1.30034223715\t1.13216097645\t2.01499350044\t1.25258712796\t1.54133669121\t0.637934462765\t20.8169171492\t2.281028154\t1.42619657166\t0.663597545123\t1.13928471623\t0.912950697805\t0.690233191066\t0.69957099985\t0.182725517235\t0.796949849459\t0.480920443008\t9.09729664493\t20.360035574\t0.402787311053\t0.656972834628\t0.202886240873\t0.818589097938\t0.699610738503\t0.321788482931\t0.307716671609\t0.700013838932\t0.312371728261\t0.258734449082\t19.4659348649\t0.148509378336\t0.602142952593\t0.141141806739\t0.215696810831\t0.0205776452834\t0.060249845745\t0.08923188921\t0.194280423379\t0.266802116156\t0.0195775462375\t18.7668646873\t0.286073341124\t0.192291420257\t0.118375187684\t0.0742610966821\t0.0807536484556\t0.0286009997616\t0.155759368705\t0.228024526002\t0.315338349857\t0.123569517743\t19.3447442041\t0.48927604805\t0.132373435807\t0.423670781164\t0.284895089487\t0.107937268149\t0.488099555839\t0.462108316369\t0.306807173904\t0.236461062597\t0.383828615353\t22.6251890049\t0.270741790019\t0.0878889489045\t0.147948542444\t0.48019719096\t0.236889205839\t0.122813830568\t0.189172385428\t0.199298661229\t0.1762536867\t0.672939115915\t19.5974729826\t0.118846777667\t0.308832370115\t0.181967641284\t0.255631469134\t0.0434880964037\t0.166841440194\t0.73593623897\t0.0797201443966\t0.89023530369\t0.232601135355\t19.6070905579\t0.378017293098\t0.424296275725\t0.0933484574365\t0.264510966284\t0.296499424844\t0.468956077798\t0.427367982951\t0.303580751102\t0.342930703463\t0.490402609028\t20.8508785277\t0.297249881408\t0.505890399757\t0.325687001933\t0.0704358593834\t0.161147797608\t0.293095130247\t0.308787268572\t0.166973118456\t0.199258732051\t0.111208803492\t21.2441672824\t0.717739086141\t0.383530746844\t0.261130648292\t0.498798169505\t1.27223994307\t0.650379479409\t1.22129415689\t0.126473754411\t0.828022669478\t0.581040094876\t21.6206013781\t0.598344606942\t1.04441330147\t0.562340364344\t0.791015871167\t0.283650621431\t0.917477871767\t0.433658379504\t0.589761043359\t0.821661282526\t0.390454931851\t7.92515582994\t22.7890665967\t0.311283003713\t22.3387994618\t26.6773451561\t26.9358809784\t21.2297086796\t21.8677116167\t23.6447131955\t26.2127982127\t23.4665238138\t23.3872373966\t9.60209820075\t26.3911837167\t27.6688062162\t27.0619983839\t27.0915421069\t27.681273041\t30.4086793741\t29.1089414563\t28.9796685065\t32.9718795821\t32.599554029\t9.16391827467\t32.058681758\t33.0859949948\t34.2065520355\t37.733533858\t37.0289378632\t39.3229164297\t33.5456255958\t41.2670505737\t37.7781793199\t35.3168394683\t10.13342608\t47.3478207226\t39.3197598646\t42.5411740953\t42.4195465451\t42.2503871959\t42.2556293297\t42.7016692257\t49.8198576041\t43.6195375703\t51.3146315818\t12.5508219982\t48.0606670844\t48.8453555465\t49.386950878\t48.8301322966\t56.8519034649\t52.5006239372\t57.164344555\t62.3433643052\t69.6769420257\t999999999\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/matrix2ortho.png |
b |
Binary file scaffhunter/test-data/matrix2ortho.png has changed |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/no_suspect.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/no_suspect.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,500 @@\n+locus\ttype\tphase\tsegregation\tIND1\tIND2\tIND3\tIND4\tIND5\tIND6\tIND7\tIND8\tIND9\tIND10\tIND11\tIND12\tIND13\tIND14\tIND15\tIND16\tIND17\tIND18\tIND19\tIND20\tIND21\tIND22\tIND23\tIND24\tIND25\tIND26\tIND27\tIND28\tIND29\tIND30\tIND31\tIND32\tIND33\tIND34\tIND35\tIND36\tIND37\tIND38\tIND39\tIND40\tIND41\tIND42\tIND43\tIND44\tIND45\tIND46\tIND47\tIND48\tIND49\tIND50\tIND51\tIND52\tIND53\tIND54\tIND55\tIND56\tIND57\tIND58\tIND59\tIND60\tIND61\tIND62\tIND63\tIND64\tIND65\tIND66\tIND67\tIND68\tIND69\tIND70\tIND71\tIND72\tIND73\tIND74\tIND75\tIND76\tIND77\tIND78\tIND79\tIND80\tIND81\tIND82\tIND83\tIND84\tIND85\tIND86\tIND87\tIND88\tIND89\tIND90\tIND91\tIND92\tIND93\tIND94\tIND95\tIND96\tIND97\tIND98\tIND99\tIND100\tIND101\tIND102\tIND103\tIND104\tIND105\tIND106\tIND107\tIND108\tIND109\tIND110\tIND111\tIND112\tIND113\tIND114\tIND115\tIND116\tIND117\tIND118\tIND119\tIND120\tIND121\tIND122\tIND123\tIND124\tIND125\tIND126\tIND127\tIND128\tIND129\tIND130\tIND131\tIND132\tIND133\tIND134\tIND135\tIND136\tIND137\tIND138\tIND139\tIND140\tIND141\tIND142\tIND143\tIND144\tIND145\tIND146\tIND147\tIND148\tIND149\tIND150\tIND151\tIND152\tIND153\tIND154\tIND155\tIND156\tIND157\tIND158\tIND159\tIND160\tIND161\tIND162\tIND163\tIND164\tIND165\tIND166\tIND167\tIND168\tIND169\tIND170\tIND171\tIND172\tIND173\tIND174\tIND175\tIND176\tIND177\tIND178\tIND179\tIND180\tIND181\tIND182\tIND183\tIND184\tIND185\tIND186\tIND187\tIND188\tIND189\tIND190\tIND191\tIND192\tIND193\tIND194\tIND195\tIND196\tIND197\tIND198\tIND199\tIND200\r\n+Musa1\t<hkxhk>\t-\t(hh,hk,kk)\thh\thk\thk\tkk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thh\thh\thh\thh\thh\thk\thk\thh\thh\thk\thh\thh\thk\thk\thk\thk\tkk\thh\tkk\thk\tkk\tkk\tkk\thk\thk\thk\thk\thh\thk\tkk\tkk\thk\tkk\thk\thk\thk\tkk\thh\thh\thh\thk\thk\t--\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\tkk\tkk\thh\t--\thh\thk\thk\tkk\thk\tkk\tkk\thk\thk\thh\thk\thk\thk\thk\thk\tkk\thk\thk\thh\thh\thk\thk\tkk\thk\thk\thk\thh\thk\thk\thk\thk\thk\tkk\thh\thk\tkk\thk\thh\tkk\tkk\thk\thk\t--\thk\thk\thk\thk\tkk\thk\tkk\thk\thk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thh\thh\thk\thk\t--\thk\thh\thk\tkk\tkk\tkk\thk\thh\thk\thh\thh\thh\thh\tkk\thk\thk\tkk\tkk\thk\tkk\thk\tkk\thk\tkk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\thk\thk\thk\thh\tkk\thh\thk\thk\thk\tkk\thk\thk\thh\tkk\thk\thh\thk\thh\thk\thk\thk\thk\tkk\thk\r\n+Musa10\t<hkxhk>\t-\t(hh,hk,kk)\thh\thk\thk\tkk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thk\thk\thh\thh\t--\thh\t--\thk\thk\thh\thk\thk\thh\thh\tkk\thk\thh\thk\tkk\thh\tkk\thk\tkk\thk\tkk\thk\thk\thk\thk\thh\thk\tkk\tkk\thk\thh\thk\thk\thk\tkk\thh\thh\thh\thk\thk\thh\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\tkk\tkk\thh\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\thk\thh\thh\thk\thk\tkk\thk\thk\thk\thk\thk\thk\thk\thk\thk\tkk\thh\thk\thk\thk\thh\tkk\tkk\thk\thk\tkk\thk\tkk\thk\thk\tkk\thk\tkk\thk\thk\thh\thh\thk\thk\thk\thk\thk\thk\thk\thk\thh\thh\thk\thh\thh\thh\thh\thk\tkk\tkk\thk\thk\thh\thk\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\tkk\tkk\tkk\thk\tkk\thh\thh\thk\thk\thh\thk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\tkk\tkk\thk\thk\thh\tkk\thk\thh\thk\thh\thk\thk\thk\thk\tkk\thk\r\n+Musa100\t<hkxhk>\t-\t(hh,hk,kk)\thh\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\tkk\thk\tkk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\thk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\thk\thh\tkk\thk\thh\thh\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\tkk\thh\thk\thk\thh\thh\t--\thk\thh\thk\thh\tkk\t--\tkk\thk\tkk\thh\thk\thh\thk\thk\thk\tkk\tkk\thk\thk\thk\thh\thk\thh\thk\thk\thh\thh\t--\thh\tkk\thk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\t--\thh\thh\tkk\thh\thh\thk\thh\tkk\thk\thh\thk\thk\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\tkk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa101\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\tkk\thk\thk\thk\thk\tkk\thh\thh\thk\thh\thk\thh\tkk\thk\thh\tkk\thk\thk\tkk\thh\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\thk\tkk\tkk\thk\thh\thk\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\thh\thh\thk\thh\thk\thk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\thk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thk\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thh\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thh\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa102\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\t--\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\tkk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh'..b'k\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\tkk\t--\tkk\tkk\tkk\thh\thk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa94\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\t--\thh\thh\thh\thh\thk\thh\tkk\tkk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thh\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thh\thh\thk\thk\thh\thk\thk\tkk\tkk\thk\thk\thk\thh\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thh\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\t--\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thk\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa95\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thk\thh\thh\thk\tkk\tkk\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\t--\thh\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thh\tkk\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\thk\thh\thk\thh\tkk\tkk\t--\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\tkk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\t--\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\t--\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thk\thk\thk\thk\t--\thk\thh\thk\thk\thh\thk\r\n+Musa96\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\t--\thk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thh\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\thh\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\tkk\thk\tkk\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\t--\thk\thh\tkk\tkk\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thh\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa97\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\thh\thk\thh\tkk\thh\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\tkk\tkk\tkk\thk\thh\thh\thk\thk\thk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\t--\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\tkk\thk\thh\thh\t--\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\tkk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\t--\thk\thh\tkk\tkk\thk\thk\tkk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\tkk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\t--\thk\r\n+Musa98\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\thh\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thk\thk\thk\thh\thk\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\tkk\tkk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\thk\tkk\tkk\thk\thh\thh\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\thk\thk\thh\thk\thk\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\thh\thk\thk\tkk\thk\thh\thk\thh\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\thk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\thk\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\thh\thk\thk\thk\thk\r\n+Musa99\t<hkxhk>\t-\t(hh,hk,kk)\thk\thk\thh\thk\thh\t--\thk\thk\thk\tkk\thh\tkk\thk\thh\thk\thh\thh\thk\thk\thh\thh\thk\thk\thk\thk\thk\tkk\thh\thh\thh\thh\thk\thh\tkk\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thk\thk\thk\tkk\tkk\thh\thk\thh\tkk\tkk\tkk\thk\thh\thh\thk\thk\tkk\thk\tkk\tkk\thk\thh\tkk\thk\thk\thh\thk\thk\thk\thh\tkk\t--\thh\thk\thk\tkk\tkk\tkk\thk\tkk\thh\thk\thh\tkk\thk\thk\tkk\tkk\thk\thk\thk\thh\thh\tkk\thk\thk\thh\thh\thk\thh\tkk\tkk\thk\tkk\thh\tkk\thh\thk\thh\thk\thk\thk\thh\thh\thh\tkk\thh\tkk\thk\thk\tkk\thk\thh\thk\thk\tkk\thk\thk\thk\thk\tkk\thk\thk\thh\thk\thk\thh\thk\thk\thh\thk\tkk\thk\thk\thh\thh\thh\thh\thh\thh\thh\tkk\thk\thh\tkk\tkk\tkk\thk\thk\tkk\thk\tkk\thk\thh\thk\tkk\thk\thk\thh\thh\thk\tkk\thk\thk\tkk\thk\t--\thk\thk\thh\tkk\thk\tkk\tkk\thk\thh\thk\thk\thk\thk\thk\tkk\thk\thk\thk\thk\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/optimal_marker_order.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/optimal_marker_order.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,499 @@ +Musa500 scaff8 +Musa499 scaff8 +Musa498 scaff8 +Musa497 scaff8 +Musa496 scaff8 +Musa495 scaff8 +Musa494 scaff8 +Musa493 scaff8 +Musa492 scaff8 +Musa491 scaff8 +Musa490 scaff8 +Musa489 scaff8 +Musa488 scaff8 +Musa486 scaff8 +Musa485 scaff8 +Musa484 scaff8 +Musa483 scaff8 +Musa482 scaff8 +Musa481 scaff8 +Musa480 scaff8 +Musa479 scaff8 +Musa478 scaff8 +Musa477 scaff8 +Musa476 scaff8 +Musa475 scaff3 +Musa474 scaff3 +Musa473 scaff3 +Musa472 scaff3 +Musa471 scaff3 +Musa470 scaff3 +Musa469 scaff3 +Musa468 scaff3 +Musa467 scaff3 +Musa466 scaff3 +Musa465 scaff3 +Musa464 scaff3 +Musa463 scaff3 +Musa462 scaff3 +Musa461 scaff3 +Musa460 scaff3 +Musa459 scaff3 +Musa458 scaff3 +Musa457 scaff3 +Musa456 scaff3 +Musa455 scaff3 +Musa454 scaff3 +Musa453 scaff3 +Musa452 scaff3 +Musa451 scaff3 +Musa450 scaff3 +Musa449 scaff3 +Musa448 scaff3 +Musa447 scaff3 +Musa446 scaff3 +Musa445 scaff3 +Musa444 scaff3 +Musa443 scaff3 +Musa442 scaff3 +Musa441 scaff3 +Musa440 scaff3 +Musa439 scaff3 +Musa438 scaff3 +Musa437 scaff3 +Musa436 scaff3 +Musa435 scaff3 +Musa434 scaff3 +Musa433 scaff3 +Musa432 scaff3 +Musa431 scaff3 +Musa430 scaff3 +Musa429 scaff3 +Musa428 scaff3 +Musa427 scaff3 +Musa426 scaff3 +Musa425 scaff3 +Musa424 scaff3 +Musa423 scaff3 +Musa422 scaff3 +Musa421 scaff3 +Musa420 scaff3 +Musa419 scaff3 +Musa418 scaff3 +Musa417 scaff3 +Musa416 scaff3 +Musa415 scaff3 +Musa414 scaff3 +Musa413 scaff3 +Musa412 scaff3 +Musa411 scaff3 +Musa410 scaff3 +Musa409 scaff3 +Musa408 scaff3 +Musa407 scaff3 +Musa406 scaff3 +Musa405 scaff3 +Musa404 scaff3 +Musa403 scaff3 +Musa402 scaff3 +Musa401 scaff3 +Musa400 scaff3 +Musa399 scaff3 +Musa398 scaff3 +Musa397 scaff3 +Musa396 scaff3 +Musa395 scaff2 +Musa394 scaff2 +Musa393 scaff2 +Musa392 scaff2 +Musa391 scaff2 +Musa390 scaff2 +Musa389 scaff2 +Musa388 scaff2 +Musa387 scaff2 +Musa386 scaff2 +Musa385 scaff2 +Musa384 scaff2 +Musa383 scaff2 +Musa382 scaff2 +Musa381 scaff2 +Musa380 scaff2 +Musa379 scaff2 +Musa378 scaff2 +Musa377 scaff2 +Musa376 scaff2 +Musa375 scaff2 +Musa374 scaff2 +Musa373 scaff2 +Musa372 scaff2 +Musa371 scaff2 +Musa370 scaff2 +Musa369 scaff2 +Musa368 scaff2 +Musa367 scaff2 +Musa366 scaff2 +Musa365 scaff2 +Musa364 scaff2 +Musa363 scaff2 +Musa362 scaff2 +Musa361 scaff2 +Musa360 scaff2 +Musa359 scaff2 +Musa358 scaff2 +Musa357 scaff2 +Musa356 scaff2 +Musa355 scaff2 +Musa354 scaff2 +Musa353 scaff2 +Musa352 scaff2 +Musa351 scaff2 +Musa350 scaff2 +Musa349 scaff2 +Musa348 scaff2 +Musa347 scaff2 +Musa346 scaff2 +Musa345 scaff2 +Musa344 scaff2 +Musa343 scaff2 +Musa342 scaff2 +Musa341 scaff2 +Musa340 scaff2 +Musa339 scaff2 +Musa338 scaff2 +Musa337 scaff2 +Musa336 scaff2 +Musa335 scaff2 +Musa334 scaff2 +Musa333 scaff2 +Musa332 scaff2 +Musa331 scaff2 +Musa330 scaff2 +Musa329 scaff2 +Musa328 scaff2 +Musa327 scaff2 +Musa326 scaff2 +Musa325 scaff2 +Musa324 scaff2 +Musa323 scaff2 +Musa322 scaff2 +Musa321 scaff2 +Musa320 scaff2 +Musa319 scaff2 +Musa318 scaff2 +Musa317 scaff2 +Musa316 scaff2 +Musa315 scaff2 +Musa314 scaff2 +Musa313 scaff2 +Musa312 scaff2 +Musa311 scaff2 +Musa310 scaff2 +Musa309 scaff2 +Musa308 scaff2 +Musa307 scaff2 +Musa306 scaff2 +Musa305 scaff2 +Musa304 scaff2 +Musa303 scaff2 +Musa302 scaff2 +Musa301 scaff2 +Musa300 scaff2 +Musa299 scaff2 +Musa298 scaff2 +Musa297 scaff2 +Musa296 scaff2 +Musa295 scaff2 +Musa294 scaff2 +Musa293 scaff2 +Musa292 scaff2 +Musa291 scaff2 +Musa290 scaff2 +Musa289 scaff2 +Musa288 scaff2 +Musa287 scaff2 +Musa286 scaff2 +Musa285 scaff2 +Musa284 scaff2 +Musa283 scaff2 +Musa282 scaff4 +Musa281 scaff4 +Musa280 scaff4 +Musa279 scaff4 +Musa278 scaff4 +Musa277 scaff4 +Musa276 scaff4 +Musa275 scaff4 +Musa274 scaff4 +Musa273 scaff4 +Musa272 scaff4 +Musa271 scaff4 +Musa270 scaff4 +Musa269 scaff4 +Musa268 scaff4 +Musa267 scaff4 +Musa266 scaff4 +Musa265 scaff4 +Musa264 scaff4 +Musa263 scaff4 +Musa262 scaff4 +Musa261 scaff4 +Musa260 scaff4 +Musa259 scaff4 +Musa258 scaff4 +Musa257 scaff4 +Musa256 scaff4 +Musa255 scaff4 +Musa254 scaff4 +Musa253 scaff4 +Musa252 scaff4 +Musa251 scaff4 +Musa250 scaff4 +Musa249 scaff7 +Musa248 scaff7 +Musa247 scaff7 +Musa246 scaff7 +Musa245 scaff7 +Musa244 scaff7 +Musa243 scaff7 +Musa242 scaff7 +Musa241 scaff7 +Musa240 scaff7 +Musa239 scaff7 +Musa238 scaff7 +Musa237 scaff7 +Musa236 scaff7 +Musa235 scaff7 +Musa234 scaff7 +Musa233 scaff7 +Musa232 scaff7 +Musa231 scaff7 +Musa230 scaff7 +Musa229 scaff7 +Musa228 scaff7 +Musa227 scaff7 +Musa226 scaff7 +Musa225 scaff5 +Musa224 scaff5 +Musa223 scaff5 +Musa222 scaff5 +Musa221 scaff5 +Musa220 scaff5 +Musa219 scaff5 +Musa218 scaff5 +Musa217 scaff5 +Musa216 scaff5 +Musa215 scaff5 +Musa214 scaff5 +Musa213 scaff5 +Musa212 scaff5 +Musa211 scaff5 +Musa210 scaff5 +Musa209 scaff5 +Musa208 scaff5 +Musa207 scaff5 +Musa206 scaff5 +Musa205 scaff5 +Musa204 scaff5 +Musa203 scaff5 +Musa202 scaff5 +Musa201 scaff5 +Musa200 scaff1 +Musa199 scaff1 +Musa198 scaff1 +Musa197 scaff1 +Musa196 scaff1 +Musa195 scaff1 +Musa194 scaff1 +Musa193 scaff1 +Musa192 scaff1 +Musa191 scaff1 +Musa190 scaff1 +Musa189 scaff1 +Musa188 scaff1 +Musa187 scaff1 +Musa186 scaff1 +Musa185 scaff1 +Musa184 scaff1 +Musa183 scaff1 +Musa182 scaff1 +Musa181 scaff1 +Musa180 scaff1 +Musa179 scaff1 +Musa178 scaff1 +Musa177 scaff1 +Musa176 scaff1 +Musa175 scaff1 +Musa174 scaff1 +Musa173 scaff1 +Musa172 scaff1 +Musa171 scaff1 +Musa170 scaff1 +Musa169 scaff1 +Musa168 scaff1 +Musa167 scaff1 +Musa166 scaff1 +Musa165 scaff1 +Musa164 scaff1 +Musa163 scaff1 +Musa162 scaff1 +Musa161 scaff1 +Musa160 scaff1 +Musa159 scaff1 +Musa158 scaff1 +Musa157 scaff1 +Musa156 scaff1 +Musa155 scaff1 +Musa154 scaff1 +Musa153 scaff1 +Musa152 scaff1 +Musa151 scaff1 +Musa150 scaff1 +Musa149 scaff1 +Musa148 scaff1 +Musa147 scaff1 +Musa146 scaff1 +Musa145 scaff1 +Musa144 scaff1 +Musa143 scaff1 +Musa142 scaff1 +Musa141 scaff1 +Musa140 scaff1 +Musa139 scaff1 +Musa138 scaff1 +Musa137 scaff1 +Musa136 scaff1 +Musa135 scaff1 +Musa134 scaff1 +Musa133 scaff1 +Musa132 scaff1 +Musa131 scaff1 +Musa130 scaff1 +Musa129 scaff1 +Musa128 scaff1 +Musa127 scaff1 +Musa126 scaff1 +Musa125 scaff1 +Musa124 scaff1 +Musa123 scaff1 +Musa122 scaff1 +Musa121 scaff1 +Musa120 scaff1 +Musa119 scaff1 +Musa118 scaff1 +Musa117 scaff1 +Musa116 scaff1 +Musa115 scaff1 +Musa114 scaff1 +Musa113 scaff1 +Musa112 scaff1 +Musa111 scaff1 +Musa110 scaff1 +Musa109 scaff1 +Musa108 scaff1 +Musa107 scaff1 +Musa106 scaff1 +Musa105 scaff1 +Musa104 scaff1 +Musa103 scaff1 +Musa102 scaff1 +Musa101 scaff1 +Musa100 scaff1 +Musa99 scaff1 +Musa98 scaff1 +Musa97 scaff1 +Musa96 scaff1 +Musa95 scaff1 +Musa94 scaff1 +Musa93 scaff1 +Musa92 scaff1 +Musa91 scaff1 +Musa90 scaff1 +Musa89 scaff1 +Musa88 scaff1 +Musa87 scaff1 +Musa86 scaff1 +Musa85 scaff1 +Musa84 scaff1 +Musa83 scaff1 +Musa82 scaff1 +Musa81 scaff1 +Musa80 scaff1 +Musa79 scaff1 +Musa78 scaff1 +Musa77 scaff1 +Musa76 scaff1 +Musa75 scaff1 +Musa74 scaff1 +Musa73 scaff1 +Musa72 scaff1 +Musa71 scaff1 +Musa70 scaff1 +Musa69 scaff1 +Musa68 scaff1 +Musa67 scaff1 +Musa66 scaff1 +Musa65 scaff1 +Musa64 scaff1 +Musa63 scaff1 +Musa62 scaff1 +Musa61 scaff1 +Musa60 scaff1 +Musa59 scaff1 +Musa58 scaff1 +Musa57 scaff1 +Musa56 scaff1 +Musa55 scaff1 +Musa54 scaff1 +Musa53 scaff1 +Musa52 scaff1 +Musa51 scaff1 +Musa50 scaff1 +Musa49 scaff1 +Musa48 scaff1 +Musa47 scaff1 +Musa46 scaff1 +Musa45 scaff1 +Musa44 scaff1 +Musa43 scaff1 +Musa42 scaff1 +Musa41 scaff1 +Musa40 scaff1 +Musa39 scaff1 +Musa38 scaff1 +Musa37 scaff1 +Musa36 scaff1 +Musa35 scaff1 +Musa34 scaff1 +Musa33 scaff1 +Musa32 scaff1 +Musa31 scaff1 +Musa30 scaff1 +Musa29 scaff6 +Musa28 scaff6 +Musa27 scaff6 +Musa26 scaff6 +Musa25 scaff6 +Musa24 scaff6 +Musa23 scaff6 +Musa22 scaff6 +Musa21 scaff6 +Musa20 scaff6 +Musa19 scaff6 +Musa18 scaff6 +Musa17 scaff6 +Musa16 scaff6 +Musa15 scaff6 +Musa14 scaff6 +Musa13 scaff6 +Musa12 scaff6 +Musa11 scaff6 +Musa10 scaff6 +Musa9 scaff6 +Musa8 scaff6 +Musa7 scaff6 +Musa6 scaff6 +Musa5 scaff6 +Musa4 scaff6 +Musa3 scaff6 +Musa2 scaff6 +Musa1 scaff6 |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/optimal_scaffold_order.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/optimal_scaffold_order.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,8 @@ +scaff8 REV Ord +scaff3 FWD Ord +scaff2 REV Ord +scaff4 REV Ord +scaff7 FWD Ord +scaff5 FWD Ord +scaff1 REV Ord +scaff6 FWD Ord |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/pairwise.pwd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/pairwise.pwd Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,125256 @@\n+; Fri, 11 Jul 2014, 08:25:29\r\n+; 124750 pairs out of 124750, 0 not informative\r\n+\r\n+name = toto\r\n+Musa1\tMusa10\t6.4119432360284888e-02\t4.7774790446836344e+01\r\n+Musa1\tMusa100\t2.7278685009533384e-01\t7.3598970302357680e+00\r\n+Musa1\tMusa101\t2.6922335183479528e-01\t7.9228017673020960e+00\r\n+Musa1\tMusa102\t2.6102282076672540e-01\t9.0391383403986864e+00\r\n+Musa1\tMusa103\t2.5112479892443236e-01\t1.0292571135062972e+01\r\n+Musa1\tMusa104\t2.4205583956829792e-01\t1.0491866345931468e+01\r\n+Musa1\tMusa105\t2.7147457000259672e-01\t8.2040428820258096e+00\r\n+Musa1\tMusa106\t2.9209705418041404e-01\t6.0628589709241304e+00\r\n+Musa1\tMusa107\t2.6490141911194404e-01\t8.2909620673055824e+00\r\n+Musa1\tMusa108\t2.6063965620673568e-01\t9.2565205698065344e+00\r\n+Musa1\tMusa109\t2.7496265170321376e-01\t7.8713184479358432e+00\r\n+Musa1\tMusa11\t6.7551469978650136e-02\t4.8198929618536344e+01\r\n+Musa1\tMusa110\t2.7181302142472352e-01\t7.9571948497715888e+00\r\n+Musa1\tMusa111\t2.9310472171982888e-01\t6.3999116250716072e+00\r\n+Musa1\tMusa112\t2.8155132856738200e-01\t7.3899310221051872e+00\r\n+Musa1\tMusa113\t2.6002053095734008e-01\t8.6290153533016896e+00\r\n+Musa1\tMusa114\t2.7360238852812492e-01\t7.7900492766874000e+00\r\n+Musa1\tMusa115\t2.6853013960528616e-01\t8.7248534830399680e+00\r\n+Musa1\tMusa116\t2.8735937510170044e-01\t5.9721635041059048e+00\r\n+Musa1\tMusa117\t2.7671061461171496e-01\t7.7231850020641728e+00\r\n+Musa1\tMusa118\t2.9076196009921664e-01\t6.5679912621117232e+00\r\n+Musa1\tMusa119\t2.7323723179814908e-01\t8.0253932210654544e+00\r\n+Musa1\tMusa12\t6.7230397437402224e-02\t4.7086591612362576e+01\r\n+Musa1\tMusa120\t2.7000428087524420e-01\t7.9125387079315488e+00\r\n+Musa1\tMusa121\t3.0570855394507480e-01\t5.0182693362521320e+00\r\n+Musa1\tMusa122\t2.7873929657587404e-01\t7.1134918140732000e+00\r\n+Musa1\tMusa123\t2.9309999015556416e-01\t6.3777818295007080e+00\r\n+Musa1\tMusa124\t2.9547117807416008e-01\t6.0641931235134712e+00\r\n+Musa1\tMusa125\t2.8627975062199912e-01\t6.6784401639195400e+00\r\n+Musa1\tMusa126\t3.1669806455082684e-01\t4.0689258444030464e+00\r\n+Musa1\tMusa127\t3.0647103791126468e-01\t5.2321188524430304e+00\r\n+Musa1\tMusa128\t3.0298408015089252e-01\t5.9608009444801736e+00\r\n+Musa1\tMusa129\t3.0528729565364376e-01\t5.4330131087679488e+00\r\n+Musa1\tMusa13\t6.9032836994427984e-02\t4.8445964277769656e+01\r\n+Musa1\tMusa130\t3.0147765380432568e-01\t5.5429448998261408e+00\r\n+Musa1\tMusa131\t3.0028430893843660e-01\t5.9734786753660624e+00\r\n+Musa1\tMusa132\t3.1464294028538504e-01\t4.8768133792242416e+00\r\n+Musa1\tMusa133\t3.1095823566239904e-01\t5.3934727752093072e+00\r\n+Musa1\tMusa134\t3.1437276162570660e-01\t5.1586760755144712e+00\r\n+Musa1\tMusa135\t3.0630562177967120e-01\t5.8589669294544712e+00\r\n+Musa1\tMusa136\t2.9633217639572564e-01\t6.6172967252143632e+00\r\n+Musa1\tMusa137\t3.0298408015089252e-01\t6.1239072034946328e+00\r\n+Musa1\tMusa138\t3.1157403473180500e-01\t5.2646321387164624e+00\r\n+Musa1\tMusa139\t3.1057623731415068e-01\t5.3145756697445808e+00\r\n+Musa1\tMusa14\t8.9490154618445488e-02\t4.6075278046796688e+01\r\n+Musa1\tMusa140\t3.2550782794596860e-01\t4.2142210172838928e+00\r\n+Musa1\tMusa141\t3.3471295032160580e-01\t3.8853822584710888e+00\r\n+Musa1\tMusa142\t3.2277128276020804e-01\t4.6210576235607320e+00\r\n+Musa1\tMusa143\t3.2968127308792816e-01\t3.6027291104293796e+00\r\n+Musa1\tMusa144\t3.2437133084826176e-01\t4.1605350536846144e+00\r\n+Musa1\tMusa145\t3.2824279217894640e-01\t3.6835549213979576e+00\r\n+Musa1\tMusa146\t3.2824279217894640e-01\t3.8321844459646880e+00\r\n+Musa1\tMusa147\t3.2141502117171820e-01\t4.3315740581107720e+00\r\n+Musa1\tMusa148\t3.0323213722071252e-01\t5.1955430628050248e+00\r\n+Musa1\tMusa149\t3.1720090063147872e-01\t4.3872476253940864e+00\r\n+Musa1\tMusa15\t9.2865580000740528e-02\t4.1106029620558024e+01\r\n+Musa1\tMusa150\t3.2033040806331992e-01\t4.8146836339057328e+00\r\n+Musa1\tMusa151\t3.1724480503350024e-01\t4.4940596314836192e+00\r\n+Musa1\tMusa152\t3.4199299516716304e-01\t2.9634184770681288e+00\r\n+Musa1\tMusa153\t3.0829797244718092e-01\t5.6927058226574464e+00\r\n+Musa1\tMusa154\t3.3333333333333332e-01\t3.8155080550581856e+00\r\n+Musa1\tMusa155\t3.4260989109613384e-01\t3.1691876759851740e+00\r\n+Musa1\tMusa156\t3.2020934059435912e-01\t4.87'..b' 32 Musa32\r\n+ 320 Musa320\r\n+ 321 Musa321\r\n+ 322 Musa322\r\n+ 323 Musa323\r\n+ 324 Musa324\r\n+ 325 Musa325\r\n+ 326 Musa326\r\n+ 327 Musa327\r\n+ 328 Musa328\r\n+ 329 Musa329\r\n+ 33 Musa33\r\n+ 330 Musa330\r\n+ 331 Musa331\r\n+ 332 Musa332\r\n+ 333 Musa333\r\n+ 334 Musa334\r\n+ 335 Musa335\r\n+ 336 Musa336\r\n+ 337 Musa337\r\n+ 338 Musa338\r\n+ 339 Musa339\r\n+ 34 Musa34\r\n+ 340 Musa340\r\n+ 341 Musa341\r\n+ 342 Musa342\r\n+ 343 Musa343\r\n+ 344 Musa344\r\n+ 345 Musa345\r\n+ 346 Musa346\r\n+ 347 Musa347\r\n+ 348 Musa348\r\n+ 349 Musa349\r\n+ 35 Musa35\r\n+ 350 Musa350\r\n+ 351 Musa351\r\n+ 352 Musa352\r\n+ 353 Musa353\r\n+ 354 Musa354\r\n+ 355 Musa355\r\n+ 356 Musa356\r\n+ 357 Musa357\r\n+ 358 Musa358\r\n+ 359 Musa359\r\n+ 36 Musa36\r\n+ 360 Musa360\r\n+ 361 Musa361\r\n+ 362 Musa362\r\n+ 363 Musa363\r\n+ 364 Musa364\r\n+ 365 Musa365\r\n+ 366 Musa366\r\n+ 367 Musa367\r\n+ 368 Musa368\r\n+ 369 Musa369\r\n+ 37 Musa37\r\n+ 370 Musa370\r\n+ 371 Musa371\r\n+ 372 Musa372\r\n+ 373 Musa373\r\n+ 374 Musa374\r\n+ 375 Musa375\r\n+ 376 Musa376\r\n+ 377 Musa377\r\n+ 378 Musa378\r\n+ 379 Musa379\r\n+ 38 Musa38\r\n+ 380 Musa380\r\n+ 381 Musa381\r\n+ 382 Musa382\r\n+ 383 Musa383\r\n+ 384 Musa384\r\n+ 385 Musa385\r\n+ 386 Musa386\r\n+ 387 Musa387\r\n+ 388 Musa388\r\n+ 389 Musa389\r\n+ 39 Musa39\r\n+ 390 Musa390\r\n+ 391 Musa391\r\n+ 392 Musa392\r\n+ 393 Musa393\r\n+ 394 Musa394\r\n+ 395 Musa395\r\n+ 396 Musa396\r\n+ 397 Musa397\r\n+ 398 Musa398\r\n+ 399 Musa399\r\n+ 4 Musa4\r\n+ 40 Musa40\r\n+ 400 Musa400\r\n+ 401 Musa401\r\n+ 402 Musa402\r\n+ 403 Musa403\r\n+ 404 Musa404\r\n+ 405 Musa405\r\n+ 406 Musa406\r\n+ 407 Musa407\r\n+ 408 Musa408\r\n+ 409 Musa409\r\n+ 41 Musa41\r\n+ 410 Musa410\r\n+ 411 Musa411\r\n+ 412 Musa412\r\n+ 413 Musa413\r\n+ 414 Musa414\r\n+ 415 Musa415\r\n+ 416 Musa416\r\n+ 417 Musa417\r\n+ 418 Musa418\r\n+ 419 Musa419\r\n+ 42 Musa42\r\n+ 420 Musa420\r\n+ 421 Musa421\r\n+ 422 Musa422\r\n+ 423 Musa423\r\n+ 424 Musa424\r\n+ 425 Musa425\r\n+ 426 Musa426\r\n+ 427 Musa427\r\n+ 428 Musa428\r\n+ 429 Musa429\r\n+ 43 Musa43\r\n+ 430 Musa430\r\n+ 431 Musa431\r\n+ 432 Musa432\r\n+ 433 Musa433\r\n+ 434 Musa434\r\n+ 435 Musa435\r\n+ 436 Musa436\r\n+ 437 Musa437\r\n+ 438 Musa438\r\n+ 439 Musa439\r\n+ 44 Musa44\r\n+ 440 Musa440\r\n+ 441 Musa441\r\n+ 442 Musa442\r\n+ 443 Musa443\r\n+ 444 Musa444\r\n+ 445 Musa445\r\n+ 446 Musa446\r\n+ 447 Musa447\r\n+ 448 Musa448\r\n+ 449 Musa449\r\n+ 45 Musa45\r\n+ 450 Musa450\r\n+ 451 Musa451\r\n+ 452 Musa452\r\n+ 453 Musa453\r\n+ 454 Musa454\r\n+ 455 Musa455\r\n+ 456 Musa456\r\n+ 457 Musa457\r\n+ 458 Musa458\r\n+ 459 Musa459\r\n+ 46 Musa46\r\n+ 460 Musa460\r\n+ 461 Musa461\r\n+ 462 Musa462\r\n+ 463 Musa463\r\n+ 464 Musa464\r\n+ 465 Musa465\r\n+ 466 Musa466\r\n+ 467 Musa467\r\n+ 468 Musa468\r\n+ 469 Musa469\r\n+ 47 Musa47\r\n+ 470 Musa470\r\n+ 471 Musa471\r\n+ 472 Musa472\r\n+ 473 Musa473\r\n+ 474 Musa474\r\n+ 475 Musa475\r\n+ 476 Musa476\r\n+ 477 Musa477\r\n+ 478 Musa478\r\n+ 479 Musa479\r\n+ 48 Musa48\r\n+ 480 Musa480\r\n+ 481 Musa481\r\n+ 482 Musa482\r\n+ 483 Musa483\r\n+ 484 Musa484\r\n+ 485 Musa485\r\n+ 486 Musa486\r\n+ 487 Musa487\r\n+ 488 Musa488\r\n+ 489 Musa489\r\n+ 49 Musa49\r\n+ 490 Musa490\r\n+ 491 Musa491\r\n+ 492 Musa492\r\n+ 493 Musa493\r\n+ 494 Musa494\r\n+ 495 Musa495\r\n+ 496 Musa496\r\n+ 497 Musa497\r\n+ 498 Musa498\r\n+ 499 Musa499\r\n+ 5 Musa5\r\n+ 50 Musa50\r\n+ 500 Musa500\r\n+ 51 Musa51\r\n+ 52 Musa52\r\n+ 53 Musa53\r\n+ 54 Musa54\r\n+ 55 Musa55\r\n+ 56 Musa56\r\n+ 57 Musa57\r\n+ 58 Musa58\r\n+ 59 Musa59\r\n+ 6 Musa6\r\n+ 60 Musa60\r\n+ 61 Musa61\r\n+ 62 Musa62\r\n+ 63 Musa63\r\n+ 64 Musa64\r\n+ 65 Musa65\r\n+ 66 Musa66\r\n+ 67 Musa67\r\n+ 68 Musa68\r\n+ 69 Musa69\r\n+ 7 Musa7\r\n+ 70 Musa70\r\n+ 71 Musa71\r\n+ 72 Musa72\r\n+ 73 Musa73\r\n+ 74 Musa74\r\n+ 75 Musa75\r\n+ 76 Musa76\r\n+ 77 Musa77\r\n+ 78 Musa78\r\n+ 79 Musa79\r\n+ 8 Musa8\r\n+ 80 Musa80\r\n+ 81 Musa81\r\n+ 82 Musa82\r\n+ 83 Musa83\r\n+ 84 Musa84\r\n+ 85 Musa85\r\n+ 86 Musa86\r\n+ 87 Musa87\r\n+ 88 Musa88\r\n+ 89 Musa89\r\n+ 9 Musa9\r\n+ 90 Musa90\r\n+ 91 Musa91\r\n+ 92 Musa92\r\n+ 93 Musa93\r\n+ 94 Musa94\r\n+ 95 Musa95\r\n+ 96 Musa96\r\n+ 97 Musa97\r\n+ 98 Musa98\r\n+ 99 Musa99\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/pairwise_LOD.tab --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/pairwise_LOD.tab Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,124750 @@\n+Musa1\tMusa10\t47.77479044683630\t\t\r\n+Musa1\tMusa100\t7.35989703023576\t\t\r\n+Musa1\tMusa101\t7.92280176730209\t\t\r\n+Musa1\tMusa102\t9.03913834039868\t\t\r\n+Musa1\tMusa103\t10.29257113506290\t\t\r\n+Musa1\tMusa104\t10.49186634593140\t\t\r\n+Musa1\tMusa105\t8.20404288202580\t\t\r\n+Musa1\tMusa106\t6.06285897092413\t\t\r\n+Musa1\tMusa107\t8.29096206730558\t\t\r\n+Musa1\tMusa108\t9.25652056980653\t\t\r\n+Musa1\tMusa109\t7.87131844793584\t\t\r\n+Musa1\tMusa11\t48.19892961853630\t\t\r\n+Musa1\tMusa110\t7.95719484977158\t\t\r\n+Musa1\tMusa111\t6.39991162507160\t\t\r\n+Musa1\tMusa112\t7.38993102210518\t\t\r\n+Musa1\tMusa113\t8.62901535330168\t\t\r\n+Musa1\tMusa114\t7.79004927668740\t\t\r\n+Musa1\tMusa115\t8.72485348303996\t\t\r\n+Musa1\tMusa116\t5.97216350410590\t\t\r\n+Musa1\tMusa117\t7.72318500206417\t\t\r\n+Musa1\tMusa118\t6.56799126211172\t\t\r\n+Musa1\tMusa119\t8.02539322106545\t\t\r\n+Musa1\tMusa12\t47.08659161236250\t\t\r\n+Musa1\tMusa120\t7.91253870793154\t\t\r\n+Musa1\tMusa121\t5.01826933625213\t\t\r\n+Musa1\tMusa122\t7.11349181407320\t\t\r\n+Musa1\tMusa123\t6.37778182950070\t\t\r\n+Musa1\tMusa124\t6.06419312351347\t\t\r\n+Musa1\tMusa125\t6.67844016391954\t\t\r\n+Musa1\tMusa126\t4.06892584440304\t\t\r\n+Musa1\tMusa127\t5.23211885244303\t\t\r\n+Musa1\tMusa128\t5.96080094448017\t\t\r\n+Musa1\tMusa129\t5.43301310876794\t\t\r\n+Musa1\tMusa13\t48.44596427776960\t\t\r\n+Musa1\tMusa130\t5.54294489982614\t\t\r\n+Musa1\tMusa131\t5.97347867536606\t\t\r\n+Musa1\tMusa132\t4.87681337922424\t\t\r\n+Musa1\tMusa133\t5.39347277520930\t\t\r\n+Musa1\tMusa134\t5.15867607551447\t\t\r\n+Musa1\tMusa135\t5.85896692945447\t\t\r\n+Musa1\tMusa136\t6.61729672521436\t\t\r\n+Musa1\tMusa137\t6.12390720349463\t\t\r\n+Musa1\tMusa138\t5.26463213871646\t\t\r\n+Musa1\tMusa139\t5.31457566974458\t\t\r\n+Musa1\tMusa14\t46.07527804679660\t\t\r\n+Musa1\tMusa140\t4.21422101728389\t\t\r\n+Musa1\tMusa141\t3.88538225847108\t\t\r\n+Musa1\tMusa142\t4.62105762356073\t\t\r\n+Musa1\tMusa143\t3.60272911042937\t\t\r\n+Musa1\tMusa144\t4.16053505368461\t\t\r\n+Musa1\tMusa145\t3.68355492139795\t\t\r\n+Musa1\tMusa146\t3.83218444596468\t\t\r\n+Musa1\tMusa147\t4.33157405811077\t\t\r\n+Musa1\tMusa148\t5.19554306280502\t\t\r\n+Musa1\tMusa149\t4.38724762539408\t\t\r\n+Musa1\tMusa15\t41.10602962055800\t\t\r\n+Musa1\tMusa150\t4.81468363390573\t\t\r\n+Musa1\tMusa151\t4.49405963148361\t\t\r\n+Musa1\tMusa152\t2.96341847706812\t\t\r\n+Musa1\tMusa153\t5.69270582265744\t\t\r\n+Musa1\tMusa154\t3.81550805505818\t\t\r\n+Musa1\tMusa155\t3.16918767598517\t\t\r\n+Musa1\tMusa156\t4.87466331397429\t\t\r\n+Musa1\tMusa157\t3.74604549438372\t\t\r\n+Musa1\tMusa158\t3.15811478924417\t\t\r\n+Musa1\tMusa159\t3.99906947664246\t\t\r\n+Musa1\tMusa16\t49.81333441536850\t\t\r\n+Musa1\tMusa160\t3.86288932400283\t\t\r\n+Musa1\tMusa161\t4.25836157043762\t\t\r\n+Musa1\tMusa162\t5.55573879975868\t\t\r\n+Musa1\tMusa163\t5.49252251009659\t\t\r\n+Musa1\tMusa164\t4.69710742281968\t\t\r\n+Musa1\tMusa165\t4.83571187843712\t\t\r\n+Musa1\tMusa166\t5.17099628299131\t\t\r\n+Musa1\tMusa167\t5.36714181403764\t\t\r\n+Musa1\tMusa168\t4.14243642941530\t\t\r\n+Musa1\tMusa169\t4.81084094772270\t\t\r\n+Musa1\tMusa17\t45.89590770394280\t\t\r\n+Musa1\tMusa170\t4.47647153198598\t\t\r\n+Musa1\tMusa171\t3.29440583030555\t\t\r\n+Musa1\tMusa172\t3.63766413408389\t\t\r\n+Musa1\tMusa173\t4.21151676305266\t\t\r\n+Musa1\tMusa174\t4.07110253023026\t\t\r\n+Musa1\tMusa175\t5.16813343083197\t\t\r\n+Musa1\tMusa176\t4.33726490685030\t\t\r\n+Musa1\tMusa177\t2.43449849769871\t\t\r\n+Musa1\tMusa178\t4.02883223207624\t\t\r\n+Musa1\tMusa179\t5.88439597489030\t\t\r\n+Musa1\tMusa18\t43.43452810648720\t\t\r\n+Musa1\tMusa180\t4.20323189838540\t\t\r\n+Musa1\tMusa181\t4.47467537551788\t\t\r\n+Musa1\tMusa182\t3.75327228328930\t\t\r\n+Musa1\tMusa183\t4.02565676341486\t\t\r\n+Musa1\tMusa184\t4.71579945418838\t\t\r\n+Musa1\tMusa185\t3.43609204505936\t\t\r\n+Musa1\tMusa186\t3.39472153388537\t\t\r\n+Musa1\tMusa187\t4.32624382044790\t\t\r\n+Musa1\tMusa188\t4.74234851428574\t\t\r\n+Musa1\tMusa189\t3.51172527770935\t\t\r\n+Musa1\tMusa19\t40.22777172625550\t\t\r\n+Musa1\tMusa190\t4.51748000684897\t\t\r\n+Musa1\tMusa191\t3.18740298772654\t\t\r\n+Musa1\tMusa192\t4.03442980798943\t\t\r\n+Musa1\tMusa193\t3.82118087727012\t\t\r\n+Musa1\tMusa194\t3.57515888622970\t\t\r\n+Musa1\tMusa195\t5.66328526862255\t\t\r\n+Musa1\tMusa196\t4.04722099420547\t\t\r\n+Musa1\tMusa197\t3.94484605245055\t\t\r\n+Musa1\tMusa198\t5.67216914715707\t\t\r\n+Musa1\tMusa199\t3.78658116977579\t\t\r\n+Musa1\tMusa2\t58.38772326906010\t\t\r\n+Musa1\tMusa20\t45.95759710397710\t\t\r\n+Musa1\tMusa200\t3.90658130081330\t\t\r\n+Musa1\tMusa201\t4.08901'..b'4267977183850\t\t\r\n+Musa85\tMusa94\t54.69157261618840\t\t\r\n+Musa85\tMusa95\t50.95853403825060\t\t\r\n+Musa85\tMusa96\t44.65055101748910\t\t\r\n+Musa85\tMusa97\t45.99672922218580\t\t\r\n+Musa85\tMusa98\t45.58928051604830\t\t\r\n+Musa85\tMusa99\t42.25562932969680\t\t\r\n+Musa86\tMusa87\t60.62079782857140\t\t\r\n+Musa86\tMusa88\t61.38389723883930\t\t\r\n+Musa86\tMusa89\t65.64812500895310\t\t\r\n+Musa86\tMusa9\t15.93698183605870\t\t\r\n+Musa86\tMusa90\t60.63552787099560\t\t\r\n+Musa86\tMusa91\t63.13725573443350\t\t\r\n+Musa86\tMusa92\t60.55504883528980\t\t\r\n+Musa86\tMusa93\t49.42533951965140\t\t\r\n+Musa86\tMusa94\t56.14742918250420\t\t\r\n+Musa86\tMusa95\t52.29724245737130\t\t\r\n+Musa86\tMusa96\t46.62735226963020\t\t\r\n+Musa86\tMusa97\t46.50620584293680\t\t\r\n+Musa86\tMusa98\t46.13823287267190\t\t\r\n+Musa86\tMusa99\t42.70166922568670\t\t\r\n+Musa87\tMusa88\t62.58305699301170\t\t\r\n+Musa87\tMusa89\t67.07358252304260\t\t\r\n+Musa87\tMusa9\t16.80391662336540\t\t\r\n+Musa87\tMusa90\t63.13999018379190\t\t\r\n+Musa87\tMusa91\t63.18327925434920\t\t\r\n+Musa87\tMusa92\t58.79309416456160\t\t\r\n+Musa87\tMusa93\t53.35554107233100\t\t\r\n+Musa87\tMusa94\t60.22625466384530\t\t\r\n+Musa87\tMusa95\t55.98110004095650\t\t\r\n+Musa87\tMusa96\t52.03379736346860\t\t\r\n+Musa87\tMusa97\t53.54638018259470\t\t\r\n+Musa87\tMusa98\t54.38091009007620\t\t\r\n+Musa87\tMusa99\t49.81985760408860\t\t\r\n+Musa88\tMusa89\t65.76614552428890\t\t\r\n+Musa88\tMusa9\t16.32680464971450\t\t\r\n+Musa88\tMusa90\t65.58403879342990\t\t\r\n+Musa88\tMusa91\t65.66386705558510\t\t\r\n+Musa88\tMusa92\t59.93218647831410\t\t\r\n+Musa88\tMusa93\t58.34993082468400\t\t\r\n+Musa88\tMusa94\t57.91205376652490\t\t\r\n+Musa88\tMusa95\t53.52763539186230\t\t\r\n+Musa88\tMusa96\t47.82232559489450\t\t\r\n+Musa88\tMusa97\t47.81786072399680\t\t\r\n+Musa88\tMusa98\t47.59132817571100\t\t\r\n+Musa88\tMusa99\t43.61953757029860\t\t\r\n+Musa89\tMusa9\t18.13985446035040\t\t\r\n+Musa89\tMusa90\t67.66690219756750\t\t\r\n+Musa89\tMusa91\t69.17897020748250\t\t\r\n+Musa89\tMusa92\t62.53916111942000\t\t\r\n+Musa89\tMusa93\t54.68982136607220\t\t\r\n+Musa89\tMusa94\t63.75220992746460\t\t\r\n+Musa89\tMusa95\t58.63427135563680\t\t\r\n+Musa89\tMusa96\t53.84545097925770\t\t\r\n+Musa89\tMusa97\t55.55281680524290\t\t\r\n+Musa89\tMusa98\t54.89184787341660\t\t\r\n+Musa89\tMusa99\t51.31463158179240\t\t\r\n+Musa9\tMusa90\t16.28703368966420\t\t\r\n+Musa9\tMusa91\t16.84190798485550\t\t\r\n+Musa9\tMusa92\t14.53675768960740\t\t\r\n+Musa9\tMusa93\t14.26752916570850\t\t\r\n+Musa9\tMusa94\t15.89085083727320\t\t\r\n+Musa9\tMusa95\t13.38512279323640\t\t\r\n+Musa9\tMusa96\t13.05282497958080\t\t\r\n+Musa9\tMusa97\t14.09081497082210\t\t\r\n+Musa9\tMusa98\t13.29739669456410\t\t\r\n+Musa9\tMusa99\t12.55082199822340\t\t\r\n+Musa90\tMusa91\t69.51403868089840\t\t\r\n+Musa90\tMusa92\t62.61955489704220\t\t\r\n+Musa90\tMusa93\t54.62417570559210\t\t\r\n+Musa90\tMusa94\t63.58524084912080\t\t\r\n+Musa90\tMusa95\t57.39663361438960\t\t\r\n+Musa90\tMusa96\t51.12888070048740\t\t\r\n+Musa90\tMusa97\t53.62251799592580\t\t\r\n+Musa90\tMusa98\t58.00042587959240\t\t\r\n+Musa90\tMusa99\t48.06066708440930\t\t\r\n+Musa91\tMusa92\t66.89321624980080\t\t\r\n+Musa91\tMusa93\t58.36364303908790\t\t\r\n+Musa91\tMusa94\t66.70151039654720\t\t\r\n+Musa91\tMusa95\t61.01989143134050\t\t\r\n+Musa91\tMusa96\t54.23908131405810\t\t\r\n+Musa91\tMusa97\t56.00187802756110\t\t\r\n+Musa91\tMusa98\t56.16962108289420\t\t\r\n+Musa91\tMusa99\t48.84535554645970\t\t\r\n+Musa92\tMusa93\t59.73959046990030\t\t\r\n+Musa92\tMusa94\t66.22948761220520\t\t\r\n+Musa92\tMusa95\t60.98006199689840\t\t\r\n+Musa92\tMusa96\t55.45337657070920\t\t\r\n+Musa92\tMusa97\t56.09582713306060\t\t\r\n+Musa92\tMusa98\t55.63641067602840\t\t\r\n+Musa92\tMusa99\t49.38695087796760\t\t\r\n+Musa93\tMusa94\t65.62905442523150\t\t\r\n+Musa93\tMusa95\t59.65200998820260\t\t\r\n+Musa93\tMusa96\t57.13910530888140\t\t\r\n+Musa93\tMusa97\t54.51119161342090\t\t\r\n+Musa93\tMusa98\t54.52382488286990\t\t\r\n+Musa93\tMusa99\t48.83013229655250\t\t\r\n+Musa94\tMusa95\t69.36553863155700\t\t\r\n+Musa94\tMusa96\t62.47191202251380\t\t\r\n+Musa94\tMusa97\t64.86063256634200\t\t\r\n+Musa94\tMusa98\t64.82812622401710\t\t\r\n+Musa94\tMusa99\t56.85190346490230\t\t\r\n+Musa95\tMusa96\t60.32695631452420\t\t\r\n+Musa95\tMusa97\t62.34792046529200\t\t\r\n+Musa95\tMusa98\t60.11868561556340\t\t\r\n+Musa95\tMusa99\t52.50062393717260\t\t\r\n+Musa96\tMusa97\t66.62898159134440\t\t\r\n+Musa96\tMusa98\t61.80855903765440\t\t\r\n+Musa96\tMusa99\t57.16434455500770\t\t\r\n+Musa97\tMusa98\t70.14053565769190\t\t\r\n+Musa97\tMusa99\t62.34336430516710\t\t\r\n+Musa98\tMusa99\t69.67694202571420\t\t\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/pwd2figure.png |
b |
Binary file scaffhunter/test-data/pwd2figure.png has changed |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/rec_matrix.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/rec_matrix.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,501 @@\n+ID\tMusa1\tMusa10\tMusa100\tMusa101\tMusa102\tMusa103\tMusa104\tMusa105\tMusa106\tMusa107\tMusa108\tMusa109\tMusa11\tMusa110\tMusa111\tMusa112\tMusa113\tMusa114\tMusa115\tMusa116\tMusa117\tMusa118\tMusa119\tMusa12\tMusa120\tMusa121\tMusa122\tMusa123\tMusa124\tMusa125\tMusa126\tMusa127\tMusa128\tMusa129\tMusa13\tMusa130\tMusa131\tMusa132\tMusa133\tMusa134\tMusa135\tMusa136\tMusa137\tMusa138\tMusa139\tMusa14\tMusa140\tMusa141\tMusa142\tMusa143\tMusa144\tMusa145\tMusa146\tMusa147\tMusa148\tMusa149\tMusa15\tMusa150\tMusa151\tMusa152\tMusa153\tMusa154\tMusa155\tMusa156\tMusa157\tMusa158\tMusa159\tMusa16\tMusa160\tMusa161\tMusa162\tMusa163\tMusa164\tMusa165\tMusa166\tMusa167\tMusa168\tMusa169\tMusa17\tMusa170\tMusa171\tMusa172\tMusa173\tMusa174\tMusa175\tMusa176\tMusa177\tMusa178\tMusa179\tMusa18\tMusa180\tMusa181\tMusa182\tMusa183\tMusa184\tMusa185\tMusa186\tMusa187\tMusa188\tMusa189\tMusa19\tMusa190\tMusa191\tMusa192\tMusa193\tMusa194\tMusa195\tMusa196\tMusa197\tMusa198\tMusa199\tMusa2\tMusa20\tMusa200\tMusa201\tMusa202\tMusa203\tMusa204\tMusa205\tMusa206\tMusa207\tMusa208\tMusa209\tMusa21\tMusa210\tMusa211\tMusa212\tMusa213\tMusa214\tMusa215\tMusa216\tMusa217\tMusa218\tMusa219\tMusa22\tMusa220\tMusa221\tMusa222\tMusa223\tMusa224\tMusa225\tMusa226\tMusa227\tMusa228\tMusa229\tMusa23\tMusa230\tMusa231\tMusa232\tMusa233\tMusa234\tMusa235\tMusa236\tMusa237\tMusa238\tMusa239\tMusa24\tMusa240\tMusa241\tMusa242\tMusa243\tMusa244\tMusa245\tMusa246\tMusa247\tMusa248\tMusa249\tMusa25\tMusa250\tMusa251\tMusa252\tMusa253\tMusa254\tMusa255\tMusa256\tMusa257\tMusa258\tMusa259\tMusa26\tMusa260\tMusa261\tMusa262\tMusa263\tMusa264\tMusa265\tMusa266\tMusa267\tMusa268\tMusa269\tMusa27\tMusa270\tMusa271\tMusa272\tMusa273\tMusa274\tMusa275\tMusa276\tMusa277\tMusa278\tMusa279\tMusa28\tMusa280\tMusa281\tMusa282\tMusa283\tMusa284\tMusa285\tMusa286\tMusa287\tMusa288\tMusa289\tMusa29\tMusa290\tMusa291\tMusa292\tMusa293\tMusa294\tMusa295\tMusa296\tMusa297\tMusa298\tMusa299\tMusa3\tMusa30\tMusa300\tMusa301\tMusa302\tMusa303\tMusa304\tMusa305\tMusa306\tMusa307\tMusa308\tMusa309\tMusa31\tMusa310\tMusa311\tMusa312\tMusa313\tMusa314\tMusa315\tMusa316\tMusa317\tMusa318\tMusa319\tMusa32\tMusa320\tMusa321\tMusa322\tMusa323\tMusa324\tMusa325\tMusa326\tMusa327\tMusa328\tMusa329\tMusa33\tMusa330\tMusa331\tMusa332\tMusa333\tMusa334\tMusa335\tMusa336\tMusa337\tMusa338\tMusa339\tMusa34\tMusa340\tMusa341\tMusa342\tMusa343\tMusa344\tMusa345\tMusa346\tMusa347\tMusa348\tMusa349\tMusa35\tMusa350\tMusa351\tMusa352\tMusa353\tMusa354\tMusa355\tMusa356\tMusa357\tMusa358\tMusa359\tMusa36\tMusa360\tMusa361\tMusa362\tMusa363\tMusa364\tMusa365\tMusa366\tMusa367\tMusa368\tMusa369\tMusa37\tMusa370\tMusa371\tMusa372\tMusa373\tMusa374\tMusa375\tMusa376\tMusa377\tMusa378\tMusa379\tMusa38\tMusa380\tMusa381\tMusa382\tMusa383\tMusa384\tMusa385\tMusa386\tMusa387\tMusa388\tMusa389\tMusa39\tMusa390\tMusa391\tMusa392\tMusa393\tMusa394\tMusa395\tMusa396\tMusa397\tMusa398\tMusa399\tMusa4\tMusa40\tMusa400\tMusa401\tMusa402\tMusa403\tMusa404\tMusa405\tMusa406\tMusa407\tMusa408\tMusa409\tMusa41\tMusa410\tMusa411\tMusa412\tMusa413\tMusa414\tMusa415\tMusa416\tMusa417\tMusa418\tMusa419\tMusa42\tMusa420\tMusa421\tMusa422\tMusa423\tMusa424\tMusa425\tMusa426\tMusa427\tMusa428\tMusa429\tMusa43\tMusa430\tMusa431\tMusa432\tMusa433\tMusa434\tMusa435\tMusa436\tMusa437\tMusa438\tMusa439\tMusa44\tMusa440\tMusa441\tMusa442\tMusa443\tMusa444\tMusa445\tMusa446\tMusa447\tMusa448\tMusa449\tMusa45\tMusa450\tMusa451\tMusa452\tMusa453\tMusa454\tMusa455\tMusa456\tMusa457\tMusa458\tMusa459\tMusa46\tMusa460\tMusa461\tMusa462\tMusa463\tMusa464\tMusa465\tMusa466\tMusa467\tMusa468\tMusa469\tMusa47\tMusa470\tMusa471\tMusa472\tMusa473\tMusa474\tMusa475\tMusa476\tMusa477\tMusa478\tMusa479\tMusa48\tMusa480\tMusa481\tMusa482\tMusa483\tMusa484\tMusa485\tMusa486\tMusa487\tMusa488\tMusa489\tMusa49\tMusa490\tMusa491\tMusa492\tMusa493\tMusa494\tMusa495\tMusa496\tMusa497\tMusa498\tMusa499\tMusa5\tMusa50\tMusa500\tMusa51\tMusa52\tMusa53\tMusa54\tMusa55\tMusa56\tMusa57\tMusa58\tMusa59\tMusa6\tMusa60\tMusa61\tMusa62\tMusa63\tMusa64\tMusa65\tMusa66\tMusa67\tMusa68\tMusa69\tMusa7\tMusa70\tMusa71\tMusa72\tMusa73\tMusa74\tMusa75\tMusa76\tMusa77\tMusa78\tMusa79\tMusa8\tMusa80\tMusa81\tMusa82\tMusa83\tMusa84\tMusa85\tMusa86\tMusa87\tMusa88\tMusa89\tMusa9\tMusa90\tMusa91\tMusa92\tMusa93\tMusa94\tMusa95\tMusa96\tMusa97\tMusa98\tMusa99\n+Musa1\t0\t0.0641194323603\t0.272786850095\t0.269223351835\t0.261022820767\t0.251124798924\t'..b'6113\t0.294458356674\t0.261671062878\t0.273646891779\t0.200555564709\t0.268066402286\t0.268259002392\t0.278301239836\t0.27268981144\t0.284737077764\t0.260169834672\t0.279866179203\t0.27802903959\t0.281954246404\t0.284590753063\t0.18016817269\t0.286865352772\t0.264130778947\t0.271452321442\t0.297778380699\t0.268066402286\t0.283087383187\t0.284666302938\t0.291953312374\t0.281419046892\t0.300735098967\t0.18692215666\t0.300860777698\t0.293575377539\t0.309816011017\t0.300617281687\t0.311866654832\t0.304253708549\t0.322510815406\t0.31111597327\t0.307652944835\t0.31650341389\t0.186356832727\t0.331728981976\t0.31644619005\t0.322538246429\t0.341992995167\t0.353100305472\t0.351433398064\t0.349893852021\t0.375136651678\t0.335968585359\t0.350957486656\t0.202161724529\t0.355955696705\t0.340645866496\t0.362487168092\t0.375\t0.358609068143\t0.344059105141\t0.360332462094\t0.335900697492\t0.370261866978\t0.360509729062\t0.205892206234\t0.369369553171\t0.354889519001\t0.344059105141\t0.353093223049\t0.331043461523\t0.347109415153\t0.374483991273\t0.362843024597\t0.346002184231\t0.352561321826\t0.186418028878\t0.358428782527\t0.335810630997\t0.362754055988\t0.373731223332\t0.35182897506\t0.350334010122\t0.370091772744\t0.356950993186\t0.345388172541\t0.378413118637\t0.186356832727\t0.374614093819\t0.387542884354\t0.403633120115\t0.38658749618\t0.374107388981\t0.380124359163\t0.359277444422\t0.375727415497\t0.369420081965\t0.387039992678\t0.183748708042\t0.35325866763\t0.370365103502\t0.392149433156\t0.376155801823\t0.386892792589\t0.389516350175\t0.390363468384\t0.416376280507\t0.388683074344\t0.398840403426\t0.26199693888\t0.182850716289\t0.404538860422\t0.390267318515\t0.422935027578\t0.384533268157\t0.39324885249\t0.414880484241\t0.418837190941\t0.391400178453\t0.408934211631\t0.410671999014\t0.194038016709\t0.423364264065\t0.396018736259\t0.424355593371\t0.418796895869\t0.457321188563\t0.455473436005\t0.428631482989\t0.419055457437\t0.412404842244\t0.447420311225\t0.195529895085\t0.410010871383\t0.415586244207\t0.430102619253\t0.430541539759\t0.428543363384\t0.446342759603\t0.418970681978\t0.416421334028\t0.409781900988\t0.425112450577\t0.194784131292\t0.405758491419\t0.429374246365\t0.40305922742\t0.410411533445\t0.440194876774\t0.411339030395\t0.400892967862\t0.419575017692\t0.422171397298\t0.410671999014\t0.173329889325\t0.416466248577\t0.446874259393\t0.42220781123\t0.410064131373\t0.422595574641\t0.426440394189\t0.424724358706\t0.435930129983\t0.42496561385\t0.401165384432\t0.189633081584\t0.456419483902\t0.437227165783\t0.428543363384\t0.442280717471\t0.44662097877\t0.422171397298\t0.39333588816\t0.446874259393\t0.403950064529\t0.430102619253\t0.18848897099\t0.427133649577\t0.418264073898\t0.450563685232\t0.42060102229\t0.427864052789\t0.410726470981\t0.422935027578\t0.436564411576\t0.416511024998\t0.413150281629\t0.187177966775\t0.41979353917\t0.416466248577\t0.431466474473\t0.443437906446\t0.443986086037\t0.430566736204\t0.432832237483\t0.442280717471\t0.430816982255\t0.439897161355\t0.195512597892\t0.40298901405\t0.42220781123\t0.424833967102\t0.414019589185\t0.388441926435\t0.412404842244\t0.40536815142\t0.439028487991\t0.402711678799\t0.404017726347\t0.180467542895\t0.42220781123\t0.403950064529\t0.413199381838\t0.4\t0.419055457437\t0.409838440326\t0.422899866686\t0.404828662018\t0.398034695906\t0.422171397298\t0.274777524347\t0.175710563038\t0.415679373088\t0.175135851434\t0.153185936832\t0.152240507788\t0.180158539845\t0.176854004575\t0.168962523153\t0.153744645311\t0.168492174315\t0.174582124589\t0.258207454838\t0.154976977074\t0.145901711469\t0.152628185465\t0.147542279755\t0.145901711469\t0.133586782346\t0.137933988681\t0.144071397667\t0.121979806794\t0.124248020766\t0.265824999309\t0.126408638968\t0.125623552957\t0.119433601751\t0.108389307331\t0.106427588939\t0.100366978145\t0.12373941203\t0.0941866401091\t0.103872259596\t0.11569704999\t0.266345929375\t0.0749922663976\t0.100509765203\t0.0964977297256\t0.0876477254221\t0.0891068924416\t0.0914484165934\t0.0914484165934\t0.069700226714\t0.0878072786448\t0.0669997480818\t0.234482714149\t0.0752298896063\t0.0717924288456\t0.0701233759928\t0.0810826654067\t0.0526729072462\t0.0642682931439\t0.0554113756923\t0.0450300065041\t0.0283238750086\t0\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/scaffold_order.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/scaffold_order.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
@@ -0,0 +1,8 @@ +scaff8 REV +scaff3 FWD +scaff2 REV +scaff4 REV +scaff7 FWD +scaff5 FWD +scaff1 REV +scaff6 FWD |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/scaffolds.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/scaffolds.fasta Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,292963 @@\n+>scaff1\r\n+CTTTCAGCATTGTGAAGGAAAGCTAGCCCTTTAGCAGCACCAAGTGCGAT\r\n+TGACATTCTTGTTGCCCAGGATAGTGGAGCAGCTGCCTCTGAATGCCTCA\r\n+AAGAAGAAAGCCAGGTTCAGATGGAAGTTTATCAGAGCTCACCAACAAAG\r\n+AAGCATAATTTTTAATGGTGTAGAGAAATCATAACAAACAAGAAACTTCA\r\n+AGTTCAAAGTCTAAATCAGCATCAATTATCAAAGTGCTAATTCCTTAAGC\r\n+ATCAACAAAAACCAAAACAGCTGAAAGAAAAATCAAACTGAAATCTTTGA\r\n+CAGAAGTAACATAGAGAAAATTTCAATAGAGTAAATTCCTTCTTATATCC\r\n+CTCCATGATATACATCAAGGCCGCTCACGTGCATATGCTAATTAGAGGCA\r\n+AAGATAACAAATCAGCACAGCAGGCCACCACTTTCCTTAACTACACCAAT\r\n+ATGTCCTCTCATATGCAAACCATTGGTACATCATAAATATTTCAATCTCA\r\n+ACATCAAGTCACCAAATCTTATATTTCAACTAACTTATGATAAGATTGAC\r\n+AAATAATTTTGGTGGACAACAGACACAAACGGTCATACTACACAAATTTG\r\n+TATGTACATTGGCAAAATTATGAGAAAAGCAGCAGTCCCACTAGCTAGCA\r\n+TAACTAGGAAAAAGGCATAAATGACATCAGATTTAAAAATATTTAAAAAT\r\n+TTCTTGTCGATTTTCATTAAGTGCCAACTTCTTGTCCATTTTCTTTTTCT\r\n+ACTTGTCATCTAGAACAGCAAAAAATAGAAAGCAGATACTGTCTTGCCAA\r\n+GCTAATAAAATTAAGCATATCCAACAAGTCATTCACAAAGAGGCAAAATC\r\n+CAAATCATTTTGAATTTTCACTTCCGTTTGCTGAAAACCCATTTCTGATA\r\n+TTATCTCGAATGTCAGACAGACACACAGATACTATCTCTCTCTCTCTCTC\r\n+TACTTTGACAGGTTCTTTACTCCAATTTTAAGATCCAATTTCATTGAGTA\r\n+TTTTGTTATTGCAACAATAATTAGTCCACTTTATTTTATTTTTTATTTTG\r\n+TTCCTTTCTAAAGACTCTAATTAACCTTGAGATATTTTATAGTTCTGAGA\r\n+GTAGCTTGTTATACCAAGAACTTGACAATAGTTTATCTTTAAGCTTAGGC\r\n+TTACAGAATAAATTCTGTCCATGACTAAGCTATGTTAGTATCTTGCTTGC\r\n+AAGTACTTGCAGAACTTCTTTATTATGCTAGAAATGGGCCTAGGTTGGCT\r\n+CCAGGCACAAAAAACTTAGGTTTCAGCATAGAGCAGCTCTAACCTTTATT\r\n+CATTAATAATTTGCATGACTGATTTCTGAAATAGCATGCTTGGCTTGAGC\r\n+CGATTTTCAATTGTAATTATTTCTTTGCTGATTAAATATTATACCAATCC\r\n+AGAAGATTAATGCCATCAAATGAATCATACACCTCCATCCTTCTCCATTT\r\n+CCATCTTCTTTCCCCTCCCTGAAATCGTTTTCACACTTATCCTTGTTCCC\r\n+ATCTTCCATCTCTTAGTTCCACATTTCATGTGTTGCCAAAAAAACAAAGA\r\n+TAAAGAACCCTTGTAGTTTCTTAATTTATTTATGCATAGAAAGCTCGAAT\r\n+TATAGTTCAATAAGGTCAAATCAGCTGCCATGGCCTTACTACTTTTTGCA\r\n+ACCCACTTATCAAGCATCATTTTGAATATTTGAAGAGGAAAATTGCTGTC\r\n+TTAAATTGCTGAATGTCTCATTGTGACATCAGGGACAATATCAAACAACA\r\n+AAATAATTTTGATAATTTAGAATATTGCACGAATAGAGGTGAAAGAAAAA\r\n+GTAAGAAAGACTAAATAAACTTTTTTACGATATGTTATCAGACGATGAAA\r\n+AAGACAATATTCCTCATATTTCTTTAATCATATTGTTTCAGTCTCTGACT\r\n+TGTACAGCACCTCATCATTTAGATATACAGATTATTTTATTTGAACTGAT\r\n+GTTTAGACATTGGATTGTAGTTTATGATAGTTTCCTAACATTTTCTCCTT\r\n+TGCTTAGATTGCACATGAACTGATGAATACTCTATCTACCTATAGGAAGT\r\n+ACAGTCAACAGAAGATTATATAGTTTGAAACTAAATACAACATTTCTATC\r\n+TTATGCACAAGAAACCTGTGGAGAAGAATAAGTTCTAAAATAATTGCATA\r\n+AGATTGTAAAAGAACAATAAGGGCATATTCTAATCTGTAGAAAATAATGT\r\n+CAGAGTAATGTACTTCGAAACAAGTGGTTCTCAAGACTTCCACGGAACAT\r\n+GAACTCATAGACAAGAAGCCTATGATCATCTTCACAGCAATATCCGATCA\r\n+ACTTCACTAGATTAGGGTGCCTCAGTTGTCCTAGAAAATTAACCTCTGTC\r\n+TGGTGACACAAGGATGTAAGTCAAAGTCAAAAACAACTCAACTAACCAAA\r\n+GGCATAGATAAAATTATTTTGAAGAGAATCAGATTAAGCCAATGCACTAT\r\n+CTTATCTTACAAGCAAAATATGTACATGCATATCACAGAGGTTTTAATTT\r\n+TGCTTGTTATATTGAGATGTTCCTTATGTTTGTTGAAAAATAAAACATAA\r\n+TAATTGACATTCAATCATAGAAAACAACATAGAAGTTCTTTTTGCAATTA\r\n+TTGATTGGAATATCCTGTCTATGATTCCTGTAATGGTTTCACATTTTTCA\r\n+AAAATATGTCAACTCAACATGGAAAAGTCACACAGCTTAAGGCTGCATTG\r\n+TTGGGCCCTGCCAAACTATGAGAACATAAAAGACTTTGCTAGCAATGTTC\r\n+TATTCGTACCTCAAAGTCTAGAACACAATTTGCAGTTGAACCGTTCACAA\r\n+TTGCATGTCAAAAATGGATAGTAAAACTTTATATATTCTTAGTACCTTTG\r\n+TTTCAAGTAGCAGGCATTAATCTCGGTAATTTTTTTACTAATTAATGATG\r\n+GAGGTGCATAAGTTCTGAATTTGCTAAATGATTTAGGAGACAAATGCATC\r\n+TTTTTGTTTCCGCATGAATACCAGCCAATAAAGATTAGCATCAACTATGG\r\n+ATGAGATGGCCAGATATTTGTCGCATATGAAAGAATAATCCAGATAAATT\r\n+GCATAGCTTTGACATAACTTACTTTAGCACAAAGATCAAATAATAGACCA\r\n+AGTGAGAACCAACTTACAAGCCATTCTCTATGCCCCTGATGACCATCTTT\r\n+GTTGAGGACCTTAACGGCGACCGGAAGTGATTTGAGGCCAACTCTCACAT\r\n+TCTCATCTATATAACCCTTGTAGACAGCGCCAAACCCTCCTTCACCAAGA\r\n+ACATAATCTGGCCGGAAGCTCTTTGTAATCGTCTCTAGCTCGAACAATGT\r\n+GAATGCTATCACATCATTGTATATTGCAATGTTTCTTGAATCCTCAATGT\r\n+GTCGAGGAGTCGAGGGGTCACTCATATCTGAGAAAGTACGAGTGTGTTTT\r\n+TTCTCTGGAAGAGCATTCTTAACAGGTAGTTGGAACATTTGGAGCTGCTG\r\n+AACTGCACAAATAAATTTACACACACATTTAGATTAACCACTGATTCTAC\r\n+ATAATTCTGAAATTCATGATGAACTGAATAAAAATGATGATTTGAAGAAT\r\n+ACAGAAGATCTAAAATAAAGATTGGGGCAAGTGAAGTATAATGAAGATAA\r\n+TCAAATATATATCCTGCTCATTTCTACTTGCTACTTGATTCATTTTTCAT\r\n+TGGTGAGGCTGAGCAACTAAAATTTCTGCATACCAGAGAGAATCAAGCTG\r\n+GAACACCAACAAGCAAGATCCTCGAAGTAGTTGCATGACAAACTA'..b'NNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\r\n+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTGTGTCATATCTACAAAAA\r\n+TGAAAATAAATGGGATATCTTGAATTTGTCGTTAGCTTTTAACTACAACC\r\n+GAAGTTAGGTATGTTCGGCTCTTACACAAATTACTATATCGTAAAGGTGC\r\n+CTTGCGAAATGAGAGTGTTAGTCGTTCATTATTTTTTATCTTGGTCTTCG\r\n+ATTGCAGATGGACCCTTTGATAGGCGAGGTTATTCAACACTGGCACAGAT\r\n+TTTACTGTCACAATAGCGATGACCAATCATTCTTGTAAAATTAATTTGAT\r\n+AAGCATAGCACGAGTTCCTTATCCAAGTTCGATCAACTTTCTTATATCAC\r\n+AACAGCCCTCAACCTCAAGAAAAAAGTTGATATTCTCTCGAGCACAAATG\r\n+CAAAAGGTATTATTCCTAATATCCGCAAGAATCAACCGAAGCTATTTTCA\r\n+AATACCTCAGAAGAGAAATAGGATATAAACAAGCAATCTAGTGCAACACA\r\n+AAATCGGGGAACTAGCAACTGTATCAGGTTCATATCTGCGTCAACAAATT\r\n+ATATCTGCATCAATTGTAAGATTTCTATGAAAAGAAAATGTACTCCCACT\r\n+TGCATTATATTCTCTTGCTTTCCAATTTTCTAATATGTCAAATATCAAAA\r\n+ATCATGATTGACATAAAAAACAATTGAAATCATGTGTCAATTTGAATAGT\r\n+CTTGTTAAACCATTTAATTAATTATCTTATGCATTTACTTTTGGTAGATC\r\n+TGACAAAAGATTTGATTAACCCTCTTTTTCTTTGTTTAAATTTTAAAATT\r\n+TTATTTTATCGAAATTTTAATATTTTTATTTTGACTAAATTTTAATATTT\r\n+TTAATTTGATATTGACTAATATTTTTTATTTCCATTTTGACTAATTCTTT\r\n+TTTATTTTGATTTTTACAATTATTATTATTATTTTAATTTTGAAAAATAT\r\n+TATTTTTCATATTAAATATTAGAAAAAAGTAATTTGATTAGTATAATCCA\r\n+TAGTTTAATCTTATATGCATCAAAAGGTAACATAAATTTTAGGAAGAACC\r\n+AAGATTCTAGATTTGATATGGTAGAATAATTTTCATTCATTCCCATCCAA\r\n+TCAAAATCTTTTTTTGATAAGTCTTGGTATTTTTATTAATTACGATATCG\r\n+GTATACATATCAGTCTAGTTCTCAATATCTCTGTTGTTTTTAAAGTAAAA\r\n+ATAAAGAATTCTATAATTCAAATATTTTCTATCTAGATTTTTATGGGTAT\r\n+CAATAAAATATCATTACTATGCCCATAATTTATATATTAATGTGATAAAA\r\n+GATCATATCTATAGTGTTTTTAAAATTTATATATAGTTGCACTGGATTGC\r\n+TAGTTTGTACACTATTTCTATTCTAAAAAATTGGAGATAAGCTTCGATTG\r\n+ATACTTGCGATTATTAGGAATAATACCTTTTGCATTTAGGCTCGAGAGAA\r\n+TATCAACTTTTTTCTTGAGGTCAAGGGCAGCTATGAAGTAAAAAGTTAAT\r\n+TGTATCTGGATAAGGAACACATGTTATGTTTATCCCATTTATGTTGCCAG\r\n+AATGAATGGCCATCGCTGCTGGGACAGCGAAAATTAAGCTGGTATTGAAT\r\n+CATCTCGCCTATCAGGGGTTTTATCTGCAATCTAAGAACAAGATAAAAAA\r\n+ATGATGAATGACTCACTCTCTTATTTCGCTTGGAACCTTTACGATAGAGT\r\n+AGTCTGTGTCAAAGCCGAACACATTCTGTTTTAGCTAGAAGCTGACGACA\r\n+TATTCTTGTCATAAGATGGAAACGTTCCATTGCTGAAAGCGGGCAACTAT\r\n+CATTGATGATAACGTTTTTTTCCGGATATCCTGTACTCATAGGACACCAA\r\n+CGGTTGACATTGCAACATGATCCGTGCCACTGTATGTTTCAAATCAGAGC\r\n+AATCAATATAGAGAAAAACAAGAGATATAAAAAAATTAGACTTACCAGTA\r\n+GAACTAAGTGAAAATAATCATAATTGGACACAATAGTGGTGGAGAAAACC\r\n+AGCAAGAAAGGGACAACGAGAGGTGTCATGCTTTGGCGAGTTAGACTTCT\r\n+GGGCATGTC\r\n' |
b |
diff -r 000000000000 -r 9c61692acd7b scaffhunter/test-data/sub_matrix.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scaffhunter/test-data/sub_matrix.txt Mon Nov 14 07:39:42 2016 -0500 |
b |
b'@@ -0,0 +1,81 @@\n+ID\tMusa475\tMusa474\tMusa473\tMusa472\tMusa471\tMusa470\tMusa469\tMusa468\tMusa467\tMusa466\tMusa465\tMusa464\tMusa463\tMusa462\tMusa461\tMusa460\tMusa459\tMusa458\tMusa457\tMusa456\tMusa455\tMusa454\tMusa453\tMusa452\tMusa451\tMusa450\tMusa449\tMusa448\tMusa447\tMusa446\tMusa445\tMusa444\tMusa443\tMusa442\tMusa441\tMusa440\tMusa439\tMusa438\tMusa437\tMusa436\tMusa435\tMusa434\tMusa433\tMusa432\tMusa431\tMusa430\tMusa429\tMusa428\tMusa427\tMusa426\tMusa425\tMusa424\tMusa423\tMusa422\tMusa421\tMusa420\tMusa419\tMusa418\tMusa417\tMusa416\tMusa415\tMusa414\tMusa413\tMusa412\tMusa411\tMusa410\tMusa409\tMusa408\tMusa407\tMusa406\tMusa405\tMusa404\tMusa403\tMusa402\tMusa401\tMusa400\tMusa399\tMusa398\tMusa397\tMusa396\n+Musa475\t82.3516245731\t59.1047336769\t56.9383434418\t56.4238137942\t56.734071277\t57.0756391156\t58.5522344901\t57.7786943709\t52.0114734972\t54.3878471161\t55.984417121\t53.3155856958\t53.0524078937\t45.1666835551\t45.0312624208\t43.7522585657\t46.7057338799\t45.7034049898\t41.4759011511\t37.3181144454\t42.1725227844\t37.0527241892\t36.1603564064\t38.6469190096\t35.6306499707\t29.7820907247\t33.1110383755\t32.5670698572\t30.3907103988\t31.1784895212\t31.6762074257\t28.4823940839\t29.8732925522\t28.5571948298\t25.8740149749\t27.9352504433\t28.4476256483\t26.2983676523\t23.8864601648\t21.9446301033\t25.2099498241\t22.4497163829\t22.3777131756\t23.522522968\t19.1407521175\t22.2818170703\t20.7674410271\t22.8784049683\t22.7858557547\t22.288358159\t19.1494518635\t18.7817278686\t20.032047121\t20.7535432448\t19.1956734695\t19.2997248211\t17.9326426085\t18.2177435674\t18.8878768418\t18.9729633356\t19.1338776839\t18.8024092988\t14.4621545852\t18.3296658139\t12.3817426239\t13.7100975446\t14.6847454214\t14.3740796837\t14.556010915\t10.7538200869\t12.9776774207\t13.0391575614\t12.5076719514\t10.3163450521\t12.7006066161\t13.1338220095\t10.5951641642\t12.6491408429\t14.0708141518\t11.7111250001\n+Musa474\t59.1047336769\t82.3516245731\t55.8549542924\t56.8546003685\t53.6417606823\t54.343986945\t59.9484155818\t57.8096938071\t54.4208044062\t53.1530980396\t56.1694983076\t52.3513597722\t53.3785901178\t43.822425804\t44.1599491992\t43.6952659876\t46.029338069\t45.2431834111\t41.0202401612\t36.693247759\t41.387430707\t35.6916853046\t34.984877151\t36.386036245\t37.0196132212\t29.3219261965\t32.4031717761\t31.8342158871\t28.2676813739\t30.8328865204\t30.810645487\t27.1915674473\t28.7004576783\t29.0345111222\t24.7096281362\t28.3455471974\t27.406189412\t25.3235146936\t24.4416403028\t20.8659572117\t22.7392094699\t22.1592936847\t21.7085610644\t23.3925830358\t18.6510492669\t21.9287619831\t20.7659568101\t19.5346313326\t21.1918546126\t22.0935656028\t17.7791595209\t20.519376218\t17.2629798963\t19.4371223781\t18.6208217201\t18.8795713984\t16.5564915117\t17.0410319803\t17.7172907774\t17.966544803\t17.1618682063\t17.5915618665\t13.2949645631\t16.0928202938\t11.202381865\t13.2646778382\t13.4065189761\t13.0920978898\t13.6690822434\t10.8492856689\t10.7735496688\t9.85524135388\t10.3996296266\t7.07455340785\t9.87706340756\t11.2093348514\t9.67498872916\t10.5876850534\t10.4502330351\t9.96324023123\n+Musa473\t56.9383434418\t55.8549542924\t82.3516245731\t58.2384885828\t54.4584470702\t54.4860443541\t60.9624400259\t58.9348644098\t54.126575772\t54.9322231149\t56.1655461763\t54.0345493881\t52.4822993632\t47.7448739592\t46.1418266973\t48.7337108005\t50.5664110151\t46.5418435892\t46.6236152147\t38.9812356705\t46.3245218569\t40.4544796026\t38.9429553215\t40.625529227\t38.7857600847\t34.9730753264\t36.7325213883\t35.0885416769\t35.3538034374\t35.1656522482\t35.2502389768\t31.9462329824\t32.7087773829\t30.3223375992\t27.7727732243\t30.5340124675\t31.2634748536\t28.9255996309\t27.1947557491\t25.165985696\t25.4569376208\t23.4604028632\t24.3649171269\t25.9738418281\t19.9121692892\t21.9072856949\t22.1732932699\t22.6272180557\t24.6910389575\t24.3822564899\t20.0047092254\t20.2902551092\t21.342542107\t23.9635860444\t20.7283040068\t21.0013514529\t19.506297883\t20.4548573272\t20.6563421787\t22.4611396741\t19.6402846187\t20.427701015\t16.4255132262\t19.2166653531\t13.7144899037\t15.0536405484\t14.3963351107\t15.9724575462\t15.6517502373\t11.8999327828\t14.4657697931\t12.5870550402\t13.2214294138\t9.75190973708\t12.8611783175\t14.786704968\t10.8257968324\t13.1362954069\t12.4'..b'8184\t26.2993002986\t27.5545767352\t25.9985833355\t22.4759306054\t24.555850595\t27.8583867388\t24.7419380215\t28.4615629354\t28.1329992564\t24.568870424\t29.0782581986\t28.646522396\t35.2822744333\t32.5016043449\t33.0200046285\t32.2800180162\t31.993070799\t33.983326032\t33.3674165124\t32.7112077608\t34.4284729057\t31.5708259005\t35.7312912325\t39.3704040844\t40.1146531804\t37.0014827493\t38.4176603768\t39.8853325476\t41.265741299\t40.3253137119\t42.4263505871\t49.7869314499\t54.8128655109\t56.7344693966\t45.4188194564\t56.2792648133\t50.461713176\t57.9889493269\t54.7946239336\t59.5648297793\t57.9096460051\t82.3516245731\t66.3755637511\t60.6132497516\t67.0652705848\n+Musa398\t12.6491408429\t10.5876850534\t13.1362954069\t14.7403744267\t13.1793395444\t13.621002806\t14.8339284725\t15.6353613764\t14.2291607667\t17.1379718452\t19.5272832423\t16.9659583807\t15.4488911552\t16.3394363077\t18.4875236552\t18.6549334567\t21.9200490534\t19.2723136151\t19.5895401407\t21.9826570216\t22.4198042726\t20.9611010225\t20.2844501581\t21.8043232565\t23.6529825163\t22.5650417057\t26.4341649016\t25.4696747852\t22.2177762001\t25.2811198108\t28.0302008354\t23.3392383735\t28.8417365891\t29.2709090716\t28.9255692047\t30.0348243734\t33.1981311355\t29.9326572363\t26.1784844784\t29.0119362827\t31.4871310258\t26.9173918531\t28.5519061732\t33.5147730287\t29.4570805415\t32.2880082269\t32.5906145521\t41.5314907458\t38.2754359677\t38.5715382368\t37.7347595663\t36.5113544895\t39.3609140813\t39.4337017907\t36.8833709686\t39.3667844707\t36.9531971252\t41.6783147461\t45.1960455625\t47.0101913285\t41.5305136421\t42.5517683019\t45.1168986584\t47.9851785823\t45.734327036\t48.8534820572\t56.1009976669\t59.2356494348\t59.4998345555\t48.0642909024\t60.2797964783\t54.0635302657\t61.0159714472\t55.1769874147\t60.7291087346\t65.4464730281\t66.3755637511\t82.3516245731\t69.1243149145\t75.92598364\n+Musa397\t14.0708141518\t10.4502330351\t12.495187533\t13.3110113717\t15.1507141451\t14.0930658959\t14.9727379011\t15.479527317\t13.5659111057\t16.7683468023\t18.4568563403\t15.9425992115\t15.0728397462\t16.9564821335\t18.9454120552\t18.0256998497\t20.0416236028\t19.7460714886\t18.827395332\t20.1384343967\t21.8925991019\t22.1642994701\t18.8648785508\t20.7922280997\t21.5613208131\t21.9260043183\t25.5134540027\t25.5443490584\t20.779507183\t23.8922792515\t27.1170147957\t23.1819123829\t26.6895759048\t26.2724964164\t28.0113325698\t29.1416555005\t32.409137198\t26.3736459506\t25.6754010755\t26.4900523702\t29.3028378503\t28.1239630289\t25.5588627453\t28.6272254301\t26.2315223032\t29.6908789035\t29.8324073333\t35.4773929892\t33.4534472263\t33.8935964435\t32.2767892016\t31.5326701156\t35.3389460021\t35.3150044622\t32.7970691691\t35.713789456\t32.8093972701\t36.222008128\t39.5449315019\t41.3070151598\t39.2168872988\t35.8822530229\t37.6335993768\t40.5547210483\t38.1075298473\t41.5727708161\t48.1436049777\t52.5773429822\t52.1387251588\t40.9039076406\t53.8290517256\t47.6054373732\t55.0892770759\t49.5024733039\t55.2931813021\t57.4223703636\t60.6132497516\t69.1243149145\t82.3516245731\t67.1573011381\n+Musa396\t11.7111250001\t9.96324023123\t12.2202127793\t12.9226681536\t12.5366603088\t12.5403931123\t14.3227097802\t14.9066496189\t14.4940053288\t16.2452295991\t19.0532199654\t15.8739743769\t14.8577340985\t15.3564207933\t18.4978519054\t16.6818121437\t21.6876588517\t19.7914542972\t18.4130286518\t19.6043150153\t21.5254864904\t20.3025928154\t18.8225169113\t20.5628565897\t22.0902975772\t23.945425486\t25.0819895021\t24.3787120053\t20.5511832289\t24.6988793191\t26.8387486575\t23.0261227792\t26.5522819479\t27.3407263921\t27.8371667997\t28.9258119921\t31.9366966147\t27.5085719709\t26.4498568946\t26.8174310209\t29.5861062902\t26.505130574\t25.8842370824\t31.0418999234\t26.9757351888\t30.5141979341\t31.6542531804\t38.3013810619\t36.3617575467\t36.7100145969\t35.0377603942\t34.2121353774\t39.2933556581\t37.1917343361\t36.7477559506\t38.002592304\t35.3157843403\t41.5555018181\t42.2884700109\t46.8394050719\t39.3922922431\t40.3912086591\t42.3684692445\t45.4203846469\t42.8325025403\t46.4551652093\t52.9453814762\t58.9645973935\t57.9791265937\t44.4847720301\t58.1873093877\t51.9160010828\t59.4417902423\t54.0829939659\t58.3878600638\t61.8001063233\t67.0652705848\t75.92598364\t67.1573011381\t82.3516245731\n' |