Wow, thanks for your hacking solution man. I didn't expect any solution anymore, I thought it was just me. So when my co-workers asked again for the motifs last week, I found out that you can also use the old method in homer (without the svg). You'll have to include -seqlogo to the findMotifsGenome.pl command. You'll have to install some other stuff first, though. Sorry didn't have time to post it here yet (I am not very active here anymore).
I also asked this question on SE bioinformatics, but since I didn't get any answers yet, I would like to ask it here as well. Hope you don't mind.
I have been using homer's findMotifsGenome.pl, but with my new version (v4.9.1) of homer I don't get .motif files in the knownResults folder. I do get them in the homerResults (de novo) folder, though. With my previous version of homer I did get them and used them to find which peaks are in which motif. Which is what I would like to do
Does anyone know why there are no .motif files? I have only .svg files. I have seen that for the homerResults the .motif files are concatenated already into a file called homerMotifs.all.motifs, but no such file for knownResults.
Does anyone know of this 'bug' in the new version of homer? Any solutions?
My code:
findMotifsGenome.pl All_peaks.txt Homo_sapiens.GRCh38.dna.primary_assembly.fa Peaks.All -p 20
1 answer
If you edit the file findKnownMotifs.pl and move the call to printMotif to come before testing $svgFlag you will find that .motif files are printed again.
In the following I have commented out the call from where it need not be, and introduced it as the first line, right before the if block:
printMotif($_, $directory . "/$knownDir/$matrixFile"); # this should be done regardless of $svgFlag
if ($svgFlag) {
my $str = HomerSVGLogo::motif2svg($_,$bitFlag,$rnaFlag2);
open SVG, ">$directory/$knownDir/$logoFile.svg";
print SVG $str;
close SVG;
print MAIN "$str\n";
} else {
#printMotif($_, $directory . "/$knownDir/$matrixFile"); # this should be done regardless of $svgFlag
`profile2seq.pl "$directory/$knownDir/$matrixFile" 100 > "$tmpFile"`;
my $width = $widthFactor * $_->{'len'};
`seqlogo -a $bits -f "$tmpFile" -F PNG -S -c -o "$directory/$knownDir/$logoFile" -h $height -w $width`;
`seqlogo -a $bits -f "$tmpFile" -F PDF -S -c -o "$directory/$knownDir/$logoFile" -h $height -w $width 2> /dev/null`;
print MAIN "<IMG src=\"$knownDir/$logoFile.png\"/>";
}
I expect this change was mistakenly introduced while refactoring the code to support svg as alternate output format for logos.
I have reported this to the author of this code.
~ Similarly afflicted in Kansas USA!
Log in to answer this question.