/// <summary>
/// Write out the given SequenceAlignmentMap to the file
/// </summary>
/// <param name="formatter">BAMFormatter</param>
/// <param name="sam">SequenceAlignmentMap</param>
/// <param name="filename">File to write to</param>
public static void Format(this BAMFormatter formatter, SequenceAlignmentMap sam, string filename)
{
if (formatter == null)
{
throw new ArgumentNullException("formatter");
}
if (sam == null)
{
throw new ArgumentNullException("sam");
}
if (string.IsNullOrWhiteSpace(filename))
{
throw new ArgumentNullException("filename");
}
using (var fs = File.Create(filename))
{
// Create the IndexFile if necessary
if (formatter.CreateIndexFile)
{
using (var bamIndexFile = new BAMIndexStorage(
File.Create(filename + Properties.Resource.BAM_INDEXFILEEXTENSION)))
{
formatter.Format(fs, bamIndexFile, sam);
}
}
else
{
formatter.Format(fs, sam);
}
}
}