# HG changeset patch # User dereeper # Date 1534248263 14400 # Node ID 6f11162b6fa2d9aecab9fdfd111c6f7c7b28bd95 planemo upload commit 11382afe87364aaafb19973470d5066229a6e34f diff -r 000000000000 -r 6f11162b6fa2 Haplophyle.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Haplophyle.pl Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,142 @@ +#!/usr/bin/perl + +use strict; +use Getopt::Long; +use Bio::SeqIO; + +use Cwd; +my $dir = getcwd; + + +my $usage = qq~Usage:$0 [] +where are: + -i, --input + -o, --output + -d, --dotfile + are: + -g, --groups + -s, --stats + -t, --tool_path +~; +$usage .= "\n"; + +my ($infile,$output,$outfile,$groupfile,$statfile,$tool_path); + + +GetOptions( + "input=s" => \$infile, + "output=s" => \$output, + "dot=s" => \$outfile, + "groups=s" => \$groupfile, + "stats=s" => \$statfile, + "tool_path=s"=> \$tool_path +); + + +die $usage + if ( !$infile); + + +my $HAPLOPHYLE_EXE = "java -Xmx2048m -jar NetworkCreator_fat.jar"; +if ($tool_path){ + $HAPLOPHYLE_EXE = "java -Xmx2048m -jar $tool_path/NetworkCreator_fat.jar"; +} + + +my $out_png = "network.png"; + +my $command = "$HAPLOPHYLE_EXE -in $infile -out $outfile"; +system($command); + + + +my %groups; +my %groups2; +my %hash; +my %haplosize; +if ($groupfile && $statfile){ + open(G,$groupfile); + while(){ + my $line = $_;$line=~s/\n//g;$line=~s/\r//g; + my ($ind,$group) = split(";",$line); + if ($group =~/\w+/ && $ind=~/\w+/){ + $groups{$group}.=$ind.","; + $groups2{$ind} = $group; + } + } + close(G); + + open(S,$statfile); + while(){ + if (/^(haplo\d+):(\d+):(.*)/){ + my $haplo_num = $1; + my $nb_haplo = $2; + my $inds = $3; + my @inds = split(",",$3); + foreach my $ind(@inds){ + my ($indname,$rank) = split("_",$ind); + my $group = $groups2{$indname}; + $hash{$haplo_num}{$group}++; + $haplosize{$haplo_num}++; + } + } + } + close(S); +} + +my $nb_groups = scalar keys(%groups); +my @colors = ("#ed292a","#ed292a","#82ABA0","#2255a6","#6ebe43","#e76599","#662e91","#c180ff","#ea8b2f","#fff100","#666666","#01ffff","#bfbfbf","#2ac966","#666666"); +my $pie_block = ""; +my %correspondence_groups; +my $i = 0; +foreach my $group(keys(%groups)){ + $i++; + $correspondence_groups{$i} = $group; + $pie_block .= "'pie-$i-background-color': '$colors[$i]',\n"; + $pie_block .= "'pie-$i-background-size': 'mapData(group$i, 0, 10, 0, 100)',\n"; +} +open(JSON_CYTOSCAPE,">$output"); +my $json = "{\"elements\": {\"nodes\": ["; +my $done = 0; +open(OUTFILE,"$outfile"); +while(){ + if (/(^\w+)\s\[.*width=([\d\.]+),/){ + my $node = $1; + my $size = $2; + my $ref_hash = $hash{$node}; + if ($ref_hash){ + my %hash2 = %$ref_hash; + my $s = scalar keys(%hash2); + $json.= "{ \"data\": { \"id\": \"$node\", \"width\": $size"; + for (my $i = 1; $i <= $nb_groups; $i++){ + my $group = $correspondence_groups{$i}; + my $ratio = 0; + if ($haplosize{$node} > 0 && $hash{$node}{$group} > 0){ + $ratio = ($hash{$node}{$group}/$haplosize{$node}) * 10; + } + $json .= ", group$i: $ratio"; + } + $json.= " } },\n"; + } + else{ + $json.= "{ \"data\": { \"id\": \"$node\", \"width\": $size} },\n"; + } + } + if (/(\w+) -- (\w+)/){ + if ($done == 0){ + $done = 1; + chop($json); + chop($json); + $json .= "],\n"; + $json .= "\"edges\": [\n"; + } + $done = 1; + $json.= "{ \"data\": { \"id\": \"$1$2\", \"weight\": 1, \"source\": \"$1\", \"target\": \"$2\"} },\n"; + } +} +chop($json); +chop($json); +$json.="]}}"; +print JSON_CYTOSCAPE $json; +close(JSON_CYTOSCAPE); + diff -r 000000000000 -r 6f11162b6fa2 Haplophyle.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Haplophyle.sh Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,36 @@ +#!/bin/bash + +# Config ####### +maxsizeseq=500 +maxnumseq=200 +################ + +tool_path=$(dirname $0) + +filein=$1 +fileout=$2 +dotfile=$3 +logfile=$4 +filein2=$5 +groups=$6 + +nbline=$(sed -n '$=' $filein) +let "nbseq = $nbline / 2" +seq=$(sed -n 2p $filein) +sizeseq=${#seq} + +if [ $nbseq -lt $maxnumseq ] +then + if [ $sizeseq -lt $maxsizeseq ] + then + perl $tool_path/Haplophyle.pl --input $filein --groups $groups --stats $filein2 --dot $dotfile --out $fileout --tool_path $tool_path >>$logfile 2>&1 + else + echo "Sequence size: $sizeseq" + echo "Input Sequences bust have a length < $maxsizeseq" + exit 1 + fi +else + echo "$nbseq sequences in the file" + echo "Input file must have less than $maxnumseq sequences" + exit 1 +fi diff -r 000000000000 -r 6f11162b6fa2 Haplophyle.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Haplophyle.xml Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,227 @@ + + + + Generates haplotype network + + + + perl + perl-bioperl + + + + + + + + + + + + Haplophyle.sh $input $fileout $dotfile $filelog + #if str( $color.choice ) == "yes": + $color.input2 $color.groups + #end if + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + haplo1|1 + AGAGGCCCATT + >haplo2|1 + CGAGGTCCATT + >haplo3|1 + CGGAGCCCATT + >haplo4|2 + AGAGGTCTATT + >haplo5|1 + CGAGGTCTATT + >haplo6|7 + AGAGGTCCATT + >haplo7|3 + CAAGATCCATC + >haplo8|1 + CGAGGTTCATT + >haplo9|1 + CGGAGCCCGTT + >haplo10|1 + CGAGGCCCATT + >haplo11|1 + AGAGGTTCATT + >haplo12|38 + CAAGGTCCATT + >haplo13|3 + CAAGGTCCACT + >haplo14|1 + AGGAGCCCATT + + +Haplotype sequences and their individuals +---------------------------------------------- + +:: + + haplo4:2:RS10_1,RS10_2, + GAGTGGGTTGCTTCCTTGCGTAGCCATCCGCCAACGACTGT + haplo5:2:RC3_1,RC3_2, + AGGTATACTGCCTGCTCGCGTAGTCAGCCGCCGACGGCTGG + haplo6:2:RS8_1,RS8_2, + GAGTGGGTTGCTTCCTTGCGTAGCCATCCACCAACGACTGT + haplo7:2:sativa_1,sativa_2, + GAGTGGGCTGCTTCCTCGCGTAGTCAGCCGCCGACAGCTGG + + + +Output files +============ + +output.json +---------------------------- + +:: + + {"elements": {"nodes": [{ "data": { "id": "MV1", "width": 0.1} }, + { "data": { "id": "MV2", "width": 0.1} }, + { "data": { "id": "MV3", "width": 0.1} }, + { "data": { "id": "haplo6", "width": 0.8 } }, + { "data": { "id": "haplo7", "width": 0.8 } }, + { "data": { "id": "haplo8", "width": 0.8 } }], + "edges": [ + { "data": { "id": "haplo4MV1", "weight": 1, "source": "haplo4", "target": "MV1"} }, + { "data": { "id": "haplo3haplo4", "weight": 1, "source": "haplo3", "target": "haplo4"} }, + { "data": { "id": "haplo5MV3", "weight": 1, "source": "haplo5", "target": "MV3"} }, + { "data": { "id": "MV1MV2", "weight": 1, "source": "MV1", "target": "MV2"} }, + { "data": { "id": "haplo8MV3", "weight": 1, "source": "haplo8", "target": "MV3"} }]}} + + +dotfile.txt +---------------------------- + +:: + + graph G { + overlap="scale"; + outputMode="nodesfirst"; + MV1 [shape="circle", color="red", width=0.1, height=0.1,fixedsize=true]; + MV2 [shape="circle", color="red", width=0.1, height=0.1,fixedsize=true]; + haplo2 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; + haplo4 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; + haplo8 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; + haplo7 -- MV2 [len=0.2]; + haplo1 -- haplo2 [len=0.2]; + haplo4 -- MV1 [len=0.2]; + MV2 -- MV3 [len=0.6]; + haplo5 -- MV3 [len=0.8]; + haplo8 -- MV3 [len=1,label="length: 24.0",color="red"]; + } + + + + + ]]> + + diff -r 000000000000 -r 6f11162b6fa2 HaplophyleInBatch.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HaplophyleInBatch.pl Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,107 @@ +#!/usr/bin/perl + +use strict; +use Switch; +use Getopt::Long; +use Bio::SeqIO; + +my $HAPLOPHYLE_EXE = "java -Xmx2048m -jar /usr/local/bioinfo/sniplay/Haplophyle/NetworkCreator_fat.jar"; +my $NEATO_EXE = "neato"; +my $CONVERT_EXE = "convert"; +my $RSCRIPT_EXE = "/usr/local/bioinfo/R/default/bin/Rscript"; + +my $usage = qq~Usage:$0 [] +where are: + -i, --input + + -r, --rscript +~; +$usage .= "\n"; + +my ($infile,$r_zip); + + +GetOptions( + "input=s" => \$infile, + "rscript=s" => \$r_zip +); + + +die $usage + if ( !$infile); + + +if (-e $r_zip) +{ + system("unzip $r_zip"); +} + +my %inputs; +my $gene; +my $data = ""; +open(my $I,$infile); +while(<$I>) +{ + if (/===(.*)===/) + { + $gene = $1; + } + else + { + $inputs{$gene}.= $_; + } +} +close($I); + + +foreach my $gene(keys(%inputs)) +{ + open(F,">$gene.distinct_haplo.fas"); + print F $inputs{$gene}; + close(F); + + my $input = "$gene.distinct_haplo.fas"; + my $outfile = "$gene.network.dot"; + my $out_png = "$gene.network.png"; + + my $command = "$HAPLOPHYLE_EXE -in $input -out $outfile >> $gene.haplophyle.log 2>&1"; + system($command); + + + + + open(OUTFILE,"$outfile"); + open(OUTFILE2,">$outfile.vis"); + print OUTFILE2 "var nodes = [\n"; + open(INFILE,"$input"); + while() + { + if (/>haplo(\d+)\|(\d+)/) + { + print OUTFILE2 "{id: $1, label: 'Haplo$1',shape:'image',radius:'$2'}\n"; + } + } + close(INFILE); + print OUTFILE2 "];\n"; + print OUTFILE2 "var edges = [\n"; + my $n = 0; + while() + { + my $line = $_; + if (/^haplo(\d+) -- haplo(\d+)/) + { + my $from = $1; + my $to = $2; + + print OUTFILE2 "{from: $from, to: $to,length:'7',style: 'line',color:'black',},\n"; + } + + } + close(OUTFILE); + print OUTFILE2 "];\n"; + close(OUTFILE2); +} + +system("zip networks.zip *network.dot"); +#system("zip pies.zip *pie.eps"); + diff -r 000000000000 -r 6f11162b6fa2 NetworkCreator_fat.jar Binary file NetworkCreator_fat.jar has changed diff -r 000000000000 -r 6f11162b6fa2 test-data/cytoscape.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/cytoscape.html Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,84 @@ + + + + + + +Pie style + + + + + +
+
diff -r 000000000000 -r 6f11162b6fa2 test-data/dotfile.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/dotfile.txt Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,25 @@ +graph G { +overlap="scale"; +outputMode="nodesfirst"; +MV1 [shape="circle", color="red", width=0.1, height=0.1,fixedsize=true]; +MV2 [shape="circle", color="red", width=0.1, height=0.1,fixedsize=true]; +MV3 [shape="circle", color="red", width=0.1, height=0.1,fixedsize=true]; +haplo1 [shape="circle",style="filled", color="green" , imagescale="both", width=1.2000000000000002, height=1.2000000000000002,fixedsize=true]; +haplo2 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; +haplo3 [shape="circle",style="filled", color="green" , imagescale="both", width=5.0, height=5.0,fixedsize=true]; +haplo4 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; +haplo5 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; +haplo6 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; +haplo7 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; +haplo8 [shape="circle",style="filled", color="green" , imagescale="both", width=0.8, height=0.8,fixedsize=true]; +haplo7 -- MV2 [len=0.2]; +haplo4 -- haplo6 [len=0.2]; +haplo1 -- haplo2 [len=0.2]; +haplo1 -- MV1 [len=0.2]; +haplo4 -- MV1 [len=0.2]; +haplo3 -- haplo4 [len=0.2]; +MV2 -- MV3 [len=0.6]; +haplo5 -- MV3 [len=0.8]; +MV1 -- MV2 [len=1,label="length: 6.0",color="red"]; +haplo8 -- MV3 [len=1,label="length: 24.0",color="red"]; +} \ No newline at end of file diff -r 000000000000 -r 6f11162b6fa2 test-data/filelog.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/filelog.txt Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,31 @@ +Determine Wed Jun 13 09:59:55 CEST 2018 +Triplets calculés Wed Jun 13 09:59:55 CEST 2018 +nb MV: 1 +MV: MVhaplo1-haplo4-haplo7 +Sequence: [1, 2, 1, 3, 1, 1, 1, 3, 3, 1, 4, 3, 3, 4, 4, 3, 3, 1, 4, 1, 3, 2, 1, 4, 4, 2, 3, 4, 4, 1, 4, 4, 1, 2, 4, 1, 2, 4, 3, 1, 3] +nb Obsolete: 0 +Determine Wed Jun 13 09:59:55 CEST 2018 +Triplets calculés Wed Jun 13 09:59:55 CEST 2018 +nb MV: 1 +MV: MVhaplo5-haplo7-MVhaplo1-haplo4-haplo7 +Sequence: [1, 2, 1, 3, 1, 1, 1, 4, 3, 1, 4, 3, 3, 4, 4, 3, 4, 1, 4, 1, 3, 2, 1, 3, 4, 2, 1, 4, 4, 1, 4, 4, 1, 2, 4, 1, 1, 4, 3, 1, 1] +nb Obsolete: 0 +Determine Wed Jun 13 09:59:55 CEST 2018 +Triplets calculés Wed Jun 13 09:59:55 CEST 2018 +nb MV: 2 +MV: MVhaplo8-MVhaplo1-haplo4-haplo7-MVhaplo5-haplo7-MVhaplo1-haplo4-haplo7 +Sequence: [1, 2, 1, 3, 1, 1, 1, 4, 3, 1, 4, 3, 3, 4, 4, 3, 3, 1, 4, 1, 3, 2, 1, 4, 4, 2, 1, 4, 4, 1, 4, 4, 1, 2, 4, 1, 1, 4, 3, 1, 1] +MV: MVhaplo5-haplo8-MVhaplo5-haplo7-MVhaplo1-haplo4-haplo7 +Sequence: [1, 1, 1, 3, 1, 1, 1, 4, 3, 1, 4, 4, 3, 1, 4, 3, 4, 1, 4, 1, 3, 2, 1, 3, 4, 2, 1, 4, 4, 1, 4, 4, 1, 2, 4, 1, 1, 4, 3, 1, 1] +nb Obsolete: 1 +Obsolete: MVhaplo8-MVhaplo1-haplo4-haplo7-MVhaplo5-haplo7-MVhaplo1-haplo4-haplo7 +nb Obsolete: 0 +Determine Wed Jun 13 09:59:55 CEST 2018 +Triplets calculés Wed Jun 13 09:59:55 CEST 2018 +nb MV: 0 +nb Obsolete: 0 +Generated 3 MV +MV1 [1, 2, 1, 3, 1, 1, 1, 3, 3, 1, 4, 3, 3, 4, 4, 3, 3, 1, 4, 1, 3, 2, 1, 4, 4, 2, 3, 4, 4, 1, 4, 4, 1, 2, 4, 1, 2, 4, 3, 1, 3] +MV2 [1, 2, 1, 3, 1, 1, 1, 4, 3, 1, 4, 3, 3, 4, 4, 3, 4, 1, 4, 1, 3, 2, 1, 3, 4, 2, 1, 4, 4, 1, 4, 4, 1, 2, 4, 1, 1, 4, 3, 1, 1] +MV3 [1, 1, 1, 3, 1, 1, 1, 4, 3, 1, 4, 4, 3, 1, 4, 3, 4, 1, 4, 1, 3, 2, 1, 3, 4, 2, 1, 4, 4, 1, 4, 4, 1, 2, 4, 1, 1, 4, 3, 1, 1] +Writing output to /tmp/tmpYCq49l/files/000/dataset_4.dat diff -r 000000000000 -r 6f11162b6fa2 test-data/haplotype.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/haplotype.fasta Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,16 @@ +>haplo1|3 +GAGTGGGTTGCTTCCCTGCGTAGCCATCCGCCGACGACTGT +>haplo2|2 +GAATGGGTTGCTTCCCTGCGTAGCCATCCGCCGACGACTGT +>haplo3|23 +GAGTGGGTTGCTTCCTTGCGTAGCCATCCGCCAACGACTAT +>haplo4|2 +GAGTGGGTTGCTTCCTTGCGTAGCCATCCGCCAACGACTGT +>haplo5|2 +AGGTATACTGCCTGCTCGCGTAGTCAGCCGCCGACGGCTGG +>haplo6|2 +GAGTGGGTTGCTTCCTTGCGTAGCCATCCACCAACGACTGT +>haplo7|2 +GAGTGGGCTGCTTCCTCGCGTAGTCAGCCGCCGACAGCTGG +>haplo8|2 +GGGAGGGCAAGCCGTTTTGACGACTGGTTGTTGGGGGTAGG diff -r 000000000000 -r 6f11162b6fa2 test-data/haplotype.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/haplotype.txt Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,16 @@ +haplo1:3:RS2_2,RS4_1,RS4_2, +GAGTGGGTTGCTTCCCTGCGTAGCCATCCGCCGACGACTGT +haplo2:2:RS9_1,RS9_2, +GAATGGGTTGCTTCCCTGCGTAGCCATCCGCCGACGACTGT +haplo3:23:RC1_1,RC1_2,RC2_1,RC2_2,RC4_1,RC4_2,RC5_1,RC5_2,RC6_1,RC6_2,RC7_1,RC7_2,RC10_1,RC10_2,RS2_1,RS3_1,RS3_2,RS5_1,RS5_2,RS6_1,RS6_2,RS7_1,RS7_2, +GAGTGGGTTGCTTCCTTGCGTAGCCATCCGCCAACGACTAT +haplo4:2:RS10_1,RS10_2, +GAGTGGGTTGCTTCCTTGCGTAGCCATCCGCCAACGACTGT +haplo5:2:RC3_1,RC3_2, +AGGTATACTGCCTGCTCGCGTAGTCAGCCGCCGACGGCTGG +haplo6:2:RS8_1,RS8_2, +GAGTGGGTTGCTTCCTTGCGTAGCCATCCACCAACGACTGT +haplo7:2:sativa_1,sativa_2, +GAGTGGGCTGCTTCCTCGCGTAGTCAGCCGCCGACAGCTGG +haplo8:2:meridionalis_1,meridionalis_2, +GGGAGGGCAAGCCGTTTTGACGACTGGTTGTTGGGGGTAGG diff -r 000000000000 -r 6f11162b6fa2 test-data/network.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/network.txt Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,15 @@ +var nodes = [ +{id: 1, label: 'Haplo1',shape:'image',radius:'3'} +{id: 2, label: 'Haplo2',shape:'image',radius:'2'} +{id: 3, label: 'Haplo3',shape:'image',radius:'23'} +{id: 4, label: 'Haplo4',shape:'image',radius:'2'} +{id: 5, label: 'Haplo5',shape:'image',radius:'2'} +{id: 6, label: 'Haplo6',shape:'image',radius:'2'} +{id: 7, label: 'Haplo7',shape:'image',radius:'2'} +{id: 8, label: 'Haplo8',shape:'image',radius:'2'} +]; +var edges = [ +{from: 4, to: 6,length:'7',style: 'line',color:'black',}, +{from: 1, to: 2,length:'7',style: 'line',color:'black',}, +{from: 3, to: 4,length:'7',style: 'line',color:'black',}, +]; diff -r 000000000000 -r 6f11162b6fa2 test-data/output.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output.json Tue Aug 14 08:04:23 2018 -0400 @@ -0,0 +1,22 @@ +{"elements": {"nodes": [{ "data": { "id": "MV1", "width": 0.1} }, +{ "data": { "id": "MV2", "width": 0.1} }, +{ "data": { "id": "MV3", "width": 0.1} }, +{ "data": { "id": "haplo1", "width": 1.2000000000000002 } }, +{ "data": { "id": "haplo2", "width": 0.8 } }, +{ "data": { "id": "haplo3", "width": 5.0 } }, +{ "data": { "id": "haplo4", "width": 0.8 } }, +{ "data": { "id": "haplo5", "width": 0.8 } }, +{ "data": { "id": "haplo6", "width": 0.8 } }, +{ "data": { "id": "haplo7", "width": 0.8 } }, +{ "data": { "id": "haplo8", "width": 0.8 } }], +"edges": [ +{ "data": { "id": "haplo4MV1", "weight": 1, "source": "haplo4", "target": "MV1"} }, +{ "data": { "id": "haplo3haplo4", "weight": 1, "source": "haplo3", "target": "haplo4"} }, +{ "data": { "id": "haplo4haplo6", "weight": 1, "source": "haplo4", "target": "haplo6"} }, +{ "data": { "id": "haplo1MV1", "weight": 1, "source": "haplo1", "target": "MV1"} }, +{ "data": { "id": "haplo1haplo2", "weight": 1, "source": "haplo1", "target": "haplo2"} }, +{ "data": { "id": "haplo7MV2", "weight": 1, "source": "haplo7", "target": "MV2"} }, +{ "data": { "id": "MV2MV3", "weight": 1, "source": "MV2", "target": "MV3"} }, +{ "data": { "id": "haplo5MV3", "weight": 1, "source": "haplo5", "target": "MV3"} }, +{ "data": { "id": "MV1MV2", "weight": 1, "source": "MV1", "target": "MV2"} }, +{ "data": { "id": "haplo8MV3", "weight": 1, "source": "haplo8", "target": "MV3"} }]}} \ No newline at end of file