+Under development!
+
+Tutorial for multiple sequence alignments and phylogenetic methods in [http://bioruby.open-bio.org/ BioRuby].
+
+Eventually, this is expected to be placed on the official !BioRuby page.
+
+Author: [https://sites.google.com/site/cmzmasek/ Christian Zmasek], Sanford-Burnham Medical Research Institute
+
+
+Copyright (C) 2011 Christian M Zmasek. All rights reserved.
+
+
+= Multiple Sequence Alignment =
+
+
+== Multiple Sequence Alignment Input and Output ==
+
+=== Reading in a Multiple Sequence Alignment from a File ===
+
+This automatically determines the format
+{{{
+#!/usr/bin/env ruby
+require 'bio'
+
+seq_ary = Array.new
+ff = Bio::FlatFile.auto('bcl2.fasta')
+ff.each_entry do |entry|
+ seq_ary.push(entry)
+ puts entry.entry_id # prints the identifier of the entry
+ puts entry.definition # prints the definition of the entry
+ puts entry.seq # prints the sequence data of the entry
+end
+
+# Creates a multiple sequence alignment (possibly unaligned) named
+# 'seqs' from array 'seq_ary'.
+seqs = Bio::Alignment.new(seq_ary)
+seqs.each { |seq| puts seq.to_s }
+
+# Writes multiple sequence alignment (possibly unaligned) 'seqs'
+# to a file in PHYLIP format.
+File.open('out0.phylip', 'w') do |f|
+ f.write(seqs.output(:phylip))
+end
+
+# Writes multiple sequence alignment (possibly unaligned) 'seqs'
+# to a file in FASTA format.
+File.open('out0.fasta', 'w') do |f|
+ f.write(seqs.output(:fasta))
+end
+}}}
+
+
+==== ClustalW Format ====
+
+The following example shows how to read in a *ClustalW*-formatted multiple sequence alignment.
+
+{{{
+#!/usr/bin/env ruby
+require 'bio'
+
+# Reads in a ClustalW-formatted multiple sequence alignment
+# from a file named "infile_clustalw.aln" and stores it in 'report'.
+report = Bio::ClustalW::Report.new(File.read('infile_clustalw.aln'))
+
+# Accesses the actual alignment.
+msa = report.alignment
+
+# Goes through all sequences in 'msa' and prints the
+# actual molecular sequence.
+msa.each do |entry|
+ puts entry.seq
+end
+}}}
+
+==== FASTA Format ====
+
+The following example shows how to read in a *FASTA*-formatted multiple sequence file. (_This seems a little clumsy, I wonder if there is a more direct way, avoiding the creation of an array.)
+{{{
+#!/usr/bin/env ruby
+require 'bio'
+
+# Reads in a FASTA-formatted multiple sequence alignment (which does
+# not have to be aligned, though) and stores its sequences in
+# array 'seq_ary'.
+seq_ary = Array.new
+fasta_seqs = Bio::Alignment::MultiFastaFormat.new(File.open('infile.fasta').read)
+fasta_seqs.entries.each do |seq|
+ seq_ary.push(seq)
+end
+
+# Creates a multiple sequence alignment (possibly unaligned) named
+# 'seqs' from array 'seq_ary'.
+seqs = Bio::Alignment.new(seq_ary)
+
+# Prints each sequence to the console.
+seqs.each { |seq| puts seq.to_s }
+
+# Writes multiple sequence alignment (possibly unaligned) 'seqs'
+# to a file in PHYLIP format.
+File.open('outfile.phylip', 'w') do |f|
+ f.write(seqs.output(:phylip))
+end
+}}}
+
+Relevant API documentation:
+
+ * [http://bioruby.open-bio.org/rdoc/classes/Bio/ClustalW/Report.html Bio::ClustalW::Report]
+ * [http://bioruby.open-bio.org/rdoc/classes/Bio/Alignment.html Bio::Alignment]
+ * [http://bioruby.open-bio.org/rdoc/classes/Bio/Sequence.html Bio::Sequence]
+
+=== Creating a Multiple Sequence Alignment ===
+
+
+=== Creating a Multiple Sequence Alignment from a Database ===
+
+?
+
+=== Writing a Multiple Sequence Alignment to a File ===
+
+
+The following example shows how to write a multiple sequence alignment in *FASTA*-format. It first creates a file named "outfile.fasta" for writing ('w') and then writes the multiple sequence alignment referred to by variable 'msa' to it in FASTA-format (':fasta').
+
+{{{
+#!/usr/bin/env ruby
+require 'bio'
+
+# Creates a new file named "outfile.fasta" and writes
+# multiple sequence alignment 'msa' to it in fasta format.
+File.open('outfile.fasta', 'w') do |f|
+ f.write(msa.output(:fasta))
+end
+}}}
+
+==== Setting the Output Format ====
+
+The following symbols determine the output format:
+
+ * `:clustal` for ClustalW
+ * `:fasta` for FASTA
+ * `:phylip` for PHYLIP interleaved (will truncate sequence names to no more than 10 characters)
+ * `:phylipnon` for PHYLIP non-interleaved (will truncate sequence names to no more than 10 characters)
+ * `:msf` for MSF
+ * `:molphy` for Molphy
+
+
+For example, the following writes in PHYLIP's non-interleaved format:
+
+{{{
+f.write(align.output(:phylipnon))
+}}}
+
+
+=== Formatting of Individual Sequences ===