visualizing the dependencies in a Makefile
Update 2014: I wrote a C version at https://github.com/lindenb/makefile2graph.
I've just coded a tool to visualize the dependencies in a Makefile. The java source code is available on github at : https://github.com/lindenb/jsandbox/blob/master/src/sandbox/MakeGraphDependencies.java. This simple tool parses the ouput of make -dq( here option '-d' is 'Print lots of debugging information' and '-q' is 'Run no commands') and prints a graphiz-dot file.
Example
Below is a simple NGS workflow:%.bam.bai : %.bam file.vcf: merged.bam.bai ref.fa merged.bam : sorted1.bam sorted2.bam sorted1.bam: lane1_1.fastq lane1_2.fastq ref.fa sorted2.bam: lane2_1.fastq lane2_2.fastq ref.faInvoking the program:
make -d --dry-run | java -jar makegraphdependencies.jargenerates the following graphiz-dot file:
digraph G { n9[label="sorted2.bam" ]; n3[label="merged.bam.bai" ]; n10[label="lane2_1.fastq" ]; n11[label="lane2_2.fastq" ]; n2[label="file.vcf" ]; n4[label="merged.bam" ]; n6[label="lane1_1.fastq" ]; n8[label="ref.fa" ]; n7[label="lane1_2.fastq" ]; n0[label="[ROOT]" ]; n5[label="sorted1.bam" ]; n1[label="Makefile" ]; n10->n9; n11->n9; n8->n9; n4->n3; n3->n2; n8->n2; n9->n4; n5->n4; n2->n0; n1->n0; n6->n5; n8->n5; n7->n5; }The result: (here using the google chart API for Graphviz)
That's it,
Pierre
No comments:
Post a Comment