Made getters and setters for found nodes public (needed for Jalview)
[jalview.git] / wiki / PhyloBioRuby.wiki
index 44136a6..4b6b45f 100644 (file)
@@ -10,7 +10,7 @@ Tutorial for multiple sequence alignments and phylogenetic methods in [http://bi
 
 Eventually, this is expected to be placed on the official !BioRuby page.
 
-Author: [http://www.cmzmasek.net/ Christian M Zmasek], Sanford-Burnham Medical Research Institute
+Author: [https://sites.google.com/site/cmzmasek/ Christian Zmasek], Sanford-Burnham Medical Research Institute
 
  
 Copyright (C) 2011 Christian M Zmasek. All rights reserved.
@@ -23,6 +23,41 @@ Copyright (C) 2011 Christian M Zmasek. All rights reserved.
 
 === 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.
 
 {{{
@@ -43,7 +78,48 @@ msa.each do |entry|
 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 ===
 
@@ -82,8 +158,6 @@ f.write(align.output(:phylipnon))
 
 === Formatting of Individual Sequences ===
 
-_... to be done_
-
 !BioRuby can format molecular sequences in a variety of formats.
 Individual sequences can be formatted to (e.g.) Genbank format as shown in the following examples.
 
@@ -101,14 +175,12 @@ The following symbols determine the output format:
   * `:genbank` for Genbank
   * `:embl` for EMBL
   * `:fasta` for FASTA
-  * `:fasta_ncbi` for 
-  * `:raw` for
-  * `:fastq` for
-  * `:fastq_sanger` for
-  * `:fastq_solexa` for
-  * `:fastq_illumina` for
-  * `:fasta_numeric` for
-  * `:qual` for
+  * `:fasta_ncbi` for NCBI-type FASTA
+  * `:raw` for raw sequence
+  * `:fastq` for FASTQ (includes quality scores)
+  * `:fastq_sanger` for Sanger-type FASTQ 
+  * `:fastq_solexa` for Solexa-type FASTQ 
+  * `:fastq_illumina` for Illumina-type FASTQ 
 
 == Calculating Multiple Sequence Alignments ==