
org.biojava.nbio.structure.align.xml.MultipleAlignmentXMLConverter Maven / Gradle / Ivy
Show all versions of biojava-structure Show documentation
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.nbio.structure.align.xml;
import java.io.IOException;
import java.util.List;
import javax.vecmath.Matrix4d;
import org.biojava.nbio.core.util.PrettyXMLWriter;
import org.biojava.nbio.structure.StructureIdentifier;
import org.biojava.nbio.structure.align.multiple.Block;
import org.biojava.nbio.structure.align.multiple.BlockSet;
import org.biojava.nbio.structure.align.multiple.MultipleAlignment;
import org.biojava.nbio.structure.align.multiple.MultipleAlignmentEnsemble;
import org.biojava.nbio.structure.align.multiple.ScoresCache;
import org.biojava.nbio.structure.align.multiple.util.MultipleAlignmentWriter;
/**
* Helper methods to convert all the hierarchy levels of a MultipleAlignment
* into an XML format.
*
* To convert a MultipleAlignment to an XML String use the
* {@link MultipleAlignmentWriter#toXML(MultipleAlignmentEnsemble)} method.
*
* @author Aleix Lafita
* @since 4.1.1
*
*/
public class MultipleAlignmentXMLConverter {
public synchronized static void printXMLensemble(PrettyXMLWriter xml,
MultipleAlignmentEnsemble ensemble) throws IOException {
xml.openTag("MultipleAlignmentEnsemble");
printXMLheader(xml,ensemble);
for (MultipleAlignment msa:ensemble.getMultipleAlignments()){
printXMLalignment(xml,msa);
}
printXMLscoresCache(xml,ensemble);
xml.closeTag("MultipleAlignmentEnsemble");
}
public synchronized static void printXMLalignment(PrettyXMLWriter xml,
MultipleAlignment msa) throws IOException {
xml.openTag("MultipleAlignment");
for(BlockSet bs:msa.getBlockSets()) {
printXMLblockSet(xml, bs);
}
printXMLscoresCache(xml,msa);
xml.closeTag("MultipleAlignment");
}
public synchronized static void printXMLblockSet(PrettyXMLWriter xml,
BlockSet bs) throws IOException {
xml.openTag("BlockSet");
for(Block b:bs.getBlocks()) {
printXMLblock(xml, b);
}
if (bs.getTransformations() != null){
for(Matrix4d t:bs.getTransformations()){
printXMLmatrix4d(xml, t);
}
}
printXMLscoresCache(xml,bs);
xml.closeTag("BlockSet");
}
public synchronized static void printXMLblock(PrettyXMLWriter xml,
Block b) throws IOException {
xml.openTag("Block");
List> alignment = b.getAlignRes();
for (int pos=0;pos