+++ /dev/null
-package jalview.datamodel;
-
-/**
- * stores data for each node in the hmm model
- * @author TZVanaalten
- *
- */
-public class HMMNode
-{
- //contains the match emissions for each symbol
- double[] matchEmissions;
-
- //contains the insert emissions for each symbol
- double[] insertEmissions;
-
- // contains the state transitions for each possible transition. These are mm,
- // mi, md, im, ii, dm and dd in order
- double[] stateTransitions;
-
- //annotations
- int residueNumber;
- char consensusResidue;
- char referenceAnnotation;
- char maskValue;
- char consensusStructure;
-
- /**
- * Constructor
- */
- public HMMNode()
- {
- }
-
- public double[] getMatchEmissions()
- {
- return matchEmissions;
- }
-
- double getMatchEmission(int symbolIndex)
- {
- return matchEmissions[symbolIndex];
- }
-
- public void setMatchEmissions(double[] matches)
- {
- this.matchEmissions = matches;
- }
-
- public double[] getInsertEmissions()
- {
- return insertEmissions;
- }
-
- double getInsertEmission(int symbolIndex)
- {
- return insertEmissions[symbolIndex];
- }
-
- public void setInsertEmissions(double[] insertEmissionsL)
- {
- this.insertEmissions = insertEmissionsL;
- }
-
- public double[] getStateTransitions()
- {
- return stateTransitions;
- }
-
- double getStateTransition(int transition)
- {
- return stateTransitions[transition];
- }
-
- public void setStateTransitions(double[] stateTransitionsM)
- {
- this.stateTransitions = stateTransitionsM;
- }
-
- int getResidueNumber()
- {
- return residueNumber;
- }
- public void setResidueNumber(int resNo)
- {
- this.residueNumber = resNo;
- }
-
- char getConsensusResidue()
- {
- return consensusResidue;
- }
- public void setConsensusResidue(char consensusResidue)
- {
- this.consensusResidue = consensusResidue;
- }
-
- char getReferenceAnnotation()
- {
- return referenceAnnotation;
- }
- public void setReferenceAnnotation(char referenceAnnotation)
- {
- this.referenceAnnotation = referenceAnnotation;
- }
-
- char getMaskValue()
- {
- return maskValue;
- }
- public void setMaskValue(char maskValue)
- {
- this.maskValue = maskValue;
- }
-
- char getConsensusStructure()
- {
- return consensusStructure;
- }
- public void setConsensusStructure(char consensusStructure)
- {
- this.consensusStructure = consensusStructure;
- }
-
- /**
- * Answers the symbol index of the symbol with the highest match emission
- * probability (first symbol in case of a tie). Note this object stores
- * probabilities, not the negative logarithms as in the HMM file.
- *
- * @return
- */
- int getMaxMatchEmissionIndex()
- {
- int maxIndex = 0;
- double max = 0D;
-
- for (int i = 0; i < matchEmissions.length; i++)
- {
- if (matchEmissions[i] > max)
- {
- max = matchEmissions[i];
- maxIndex = i;
- }
- }
- return maxIndex;
- }
-}
-
-
+++ /dev/null
-package jalview.datamodel;
-
-import jalview.io.HMMFile;
-import jalview.schemes.ResidueProperties;
-import jalview.util.Comparison;
-import jalview.util.MapList;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Data structure which stores a hidden Markov model
- *
- * @author TZVanaalten
- *
- */
-public class HiddenMarkovModel
-{
- private static final char GAP_DASH = '-';
-
- public final static String YES = "yes";
-
- public final static String NO = "no";
-
- public static final int MATCHTOMATCH = 0;
-
- public static final int MATCHTOINSERT = 1;
-
- public static final int MATCHTODELETE = 2;
-
- public static final int INSERTTOMATCH = 3;
-
- public static final int INSERTTOINSERT = 4;
-
- public static final int DELETETOMATCH = 5;
-
- public static final int DELETETODELETE = 6;
-
- private static final double LOG2 = Math.log(2);
-
- /*
- * properties read from HMM file header lines
- */
- private Map<String, String> fileProperties = new HashMap<>();
-
- private String fileHeader;
-
- /*
- * the symbols used in this model e.g. "ACGT"
- */
- private String alphabet;
-
- /*
- * symbol lookup index into the alphabet for 'A' to 'Z'
- */
- private int[] symbolIndexLookup = new int['Z' - 'A' + 1];
-
- /*
- * Nodes in the model. The begin node is at index 0, and contains
- * average emission probabilities for each symbol.
- */
- private List<HMMNode> nodes = new ArrayList<>();
-
- /*
- * the aligned HMM consensus sequence extracted from the HMM profile
- */
- private SequenceI hmmSeq;
-
- /*
- * mapping from HMM nodes to residues of the hmm consensus sequence
- */
- private Mapping mapToHmmConsensus;
-
- /**
- * Constructor
- */
- public HiddenMarkovModel()
- {
- }
-
- /**
- * Copy constructor given a new aligned sequence with which to associate the
- * HMM profile
- *
- * @param hmm
- * @param sq
- */
- public HiddenMarkovModel(HiddenMarkovModel hmm, SequenceI sq)
- {
- super();
- this.fileProperties = new HashMap<>(hmm.fileProperties);
- this.alphabet = hmm.alphabet;
- this.nodes = new ArrayList<>(hmm.nodes);
- this.symbolIndexLookup = hmm.symbolIndexLookup;
- this.fileHeader = new String(hmm.fileHeader);
- this.hmmSeq = sq;
- if (sq.getDatasetSequence() == hmm.mapToHmmConsensus.getTo())
- {
- // same dataset sequence e.g. after realigning search results
- this.mapToHmmConsensus = hmm.mapToHmmConsensus;
- }
- else
- {
- // different dataset sequence e.g. after loading HMM from project
- this.mapToHmmConsensus = new Mapping(sq.getDatasetSequence(),
- hmm.mapToHmmConsensus.getMap());
- }
- }
-
- /**
- * Returns the information content at a specified column, calculated as the
- * sum (over possible symbols) of the log ratio
- *
- * <pre>
- * log(emission probability / background probability) / log(2)
- * </pre>
- *
- * @param column
- * column position (base 0)
- * @return
- */
- public float getInformationContent(int column)
- {
- float informationContent = 0f;
-
- for (char symbol : getSymbols().toCharArray())
- {
- float freq = ResidueProperties.backgroundFrequencies
- .get(getAlphabetType()).get(symbol);
- float prob = (float) getMatchEmissionProbability(column, symbol);
- informationContent += prob * Math.log(prob / freq);
- }
-
- informationContent = informationContent / (float) LOG2;
-
- return informationContent;
- }
-
- /**
- * Gets the file header of the .hmm file this model came from
- *
- * @return
- */
- public String getFileHeader()
- {
- return fileHeader;
- }
-
- /**
- * Sets the file header of this model.
- *
- * @param header
- */
- public void setFileHeader(String header)
- {
- fileHeader = header;
- }
-
- /**
- * Returns the symbols used in this hidden Markov model
- *
- * @return
- */
- public String getSymbols()
- {
- return alphabet;
- }
-
- /**
- * Gets the node in the hidden Markov model at the specified position.
- *
- * @param nodeIndex
- * The index of the node requested. Node 0 optionally contains the
- * average match emission probabilities across the entire model, and
- * always contains the insert emission probabilities and state
- * transition probabilities for the begin node. Node 1 contains the
- * first node in the HMM that can correspond to a column in the
- * alignment.
- * @return
- */
- public HMMNode getNode(int nodeIndex)
- {
- return nodes.get(nodeIndex);
- }
-
- /**
- * Returns the name of the sequence alignment on which the HMM is based.
- *
- * @return
- */
- public String getName()
- {
- return fileProperties.get(HMMFile.NAME);
- }
-
- /**
- * Answers the string value of the property (parsed from an HMM file) for the
- * given key, or null if the property is not present
- *
- * @param key
- * @return
- */
- public String getProperty(String key)
- {
- return fileProperties.get(key);
- }
-
- /**
- * Answers true if the property with the given key is present with a value of
- * "yes" (not case-sensitive), else false
- *
- * @param key
- * @return
- */
- public boolean getBooleanProperty(String key)
- {
- return YES.equalsIgnoreCase(fileProperties.get(key));
- }
-
- /**
- * Returns the length of the hidden Markov model. The value returned is the
- * LENG property if specified, else the number of nodes, excluding the begin
- * node (which should be the same thing).
- *
- * @return
- */
- public int getLength()
- {
- if (fileProperties.get(HMMFile.LENGTH) == null)
- {
- return nodes.size() - 1; // not counting BEGIN node
- }
- return Integer.parseInt(fileProperties.get(HMMFile.LENGTH));
- }
-
- /**
- * Returns the value of mandatory property "ALPH" - "amino", "DNA", "RNA" are
- * the options. Other alphabets may be added.
- *
- * @return
- */
- public String getAlphabetType()
- {
- return fileProperties.get(HMMFile.ALPHABET);
- }
-
- /**
- * Sets the model alphabet to the symbols in the given string (ignoring any
- * whitespace), and returns the number of symbols
- *
- * @param symbols
- */
- public int setAlphabet(String symbols)
- {
- String trimmed = symbols.toUpperCase().replaceAll("\\s", "");
- int count = trimmed.length();
- alphabet = trimmed;
- symbolIndexLookup = new int['Z' - 'A' + 1];
- Arrays.fill(symbolIndexLookup, -1);
- int ignored = 0;
-
- /*
- * save the symbols in order, and a quick lookup of symbol position
- */
- for (short i = 0; i < count; i++)
- {
- char symbol = trimmed.charAt(i);
- if (symbol >= 'A' && symbol <= 'Z'
- && symbolIndexLookup[symbol - 'A'] == -1)
- {
- symbolIndexLookup[symbol - 'A'] = i;
- }
- else
- {
- System.err
- .println(
- "Unexpected or duplicated character in HMM ALPHabet: "
- + symbol);
- ignored++;
- }
- }
- return count - ignored;
- }
-
- /**
- * Answers the node of the model corresponding to an aligned column position
- * (0...), or null if there is no such node
- *
- * @param column
- * @return
- */
- HMMNode getNodeForColumn(int column)
- {
- /*
- * if the hmm consensus is gapped at the column,
- * there is no corresponding node
- */
- if (Comparison.isGap(hmmSeq.getCharAt(column)))
- {
- return null;
- }
-
- /*
- * find the node (if any) that is mapped to the
- * consensus sequence residue position at the column
- */
- int seqPos = hmmSeq.findPosition(column);
- int[] nodeNo = mapToHmmConsensus.getMap().locateInFrom(seqPos, seqPos);
- if (nodeNo != null)
- {
- return getNode(nodeNo[0]);
- }
- return null;
- }
-
- /**
- * Gets the match emission probability for a given symbol at a column in the
- * alignment.
- *
- * @param alignColumn
- * The index of the alignment column, starting at index 0. Index 0
- * usually corresponds to index 1 in the HMM.
- * @param symbol
- * The symbol for which the desired probability is being requested.
- * @return
- *
- */
- public double getMatchEmissionProbability(int alignColumn, char symbol)
- {
- HMMNode node = getNodeForColumn(alignColumn);
- int symbolIndex = getSymbolIndex(symbol);
- if (node != null && symbolIndex != -1)
- {
- return node.getMatchEmission(symbolIndex);
- }
- return 0D;
- }
-
- /**
- * Gets the insert emission probability for a given symbol at a column in the
- * alignment.
- *
- * @param alignColumn
- * The index of the alignment column, starting at index 0. Index 0
- * usually corresponds to index 1 in the HMM.
- * @param symbol
- * The symbol for which the desired probability is being requested.
- * @return
- *
- */
- public double getInsertEmissionProbability(int alignColumn, char symbol)
- {
- HMMNode node = getNodeForColumn(alignColumn);
- int symbolIndex = getSymbolIndex(symbol);
- if (node != null && symbolIndex != -1)
- {
- return node.getInsertEmission(symbolIndex);
- }
- return 0D;
- }
-
- /**
- * Gets the state transition probability for a given symbol at a column in the
- * alignment.
- *
- * @param alignColumn
- * The index of the alignment column, starting at index 0. Index 0
- * usually corresponds to index 1 in the HMM.
- * @param symbol
- * The symbol for which the desired probability is being requested.
- * @return
- *
- */
- public double getStateTransitionProbability(int alignColumn,
- int transition)
- {
- HMMNode node = getNodeForColumn(alignColumn);
- if (node != null)
- {
- return node.getStateTransition(transition);
- }
- return 0D;
- }
-
- /**
- * Returns the sequence position linked to the node at the given index. This
- * corresponds to an aligned column position (counting from 1).
- *
- * @param nodeIndex
- * The index of the node, starting from index 1. Index 0 is the begin
- * node, which does not correspond to a column in the alignment.
- * @return
- */
- public int getNodeMapPosition(int nodeIndex)
- {
- return nodes.get(nodeIndex).getResidueNumber();
- }
-
- /**
- * Returns the consensus residue at the specified node.
- *
- * @param nodeIndex
- * The index of the specified node.
- * @return
- */
- public char getConsensusResidue(int nodeIndex)
- {
- char value = nodes.get(nodeIndex).getConsensusResidue();
- return value;
- }
-
- /**
- * Returns the reference annotation at the specified node.
- *
- * @param nodeIndex
- * The index of the specified node.
- * @return
- */
- public char getReferenceAnnotation(int nodeIndex)
- {
- char value = nodes.get(nodeIndex).getReferenceAnnotation();
- return value;
- }
-
- /**
- * Returns the mask value at the specified node.
- *
- * @param nodeIndex
- * The index of the specified node.
- * @return
- */
- public char getMaskedValue(int nodeIndex)
- {
- char value = nodes.get(nodeIndex).getMaskValue();
- return value;
- }
-
- /**
- * Returns the consensus structure at the specified node.
- *
- * @param nodeIndex
- * The index of the specified node.
- * @return
- */
- public char getConsensusStructure(int nodeIndex)
- {
- char value = nodes.get(nodeIndex).getConsensusStructure();
- return value;
- }
-
- /**
- * Sets a property read from an HMM file
- *
- * @param key
- * @param value
- */
- public void setProperty(String key, String value)
- {
- fileProperties.put(key, value);
- }
-
- /**
- * Temporary implementation, should not be used.
- *
- * @return
- */
- public String getViterbi()
- {
- String value;
- value = fileProperties.get(HMMFile.VITERBI);
- return value;
- }
-
- /**
- * Temporary implementation, should not be used.
- *
- * @return
- */
- public String getMSV()
- {
- String value;
- value = fileProperties.get(HMMFile.MSV);
- return value;
- }
-
- /**
- * Temporary implementation, should not be used.
- *
- * @return
- */
- public String getForward()
- {
- String value;
- value = fileProperties.get(HMMFile.FORWARD);
- return value;
- }
-
- /**
- * Constructs the consensus sequence based on the most probable symbol at each
- * position. Gap characters are inserted for discontinuities in the node map
- * numbering (if provided), else an ungapped sequence is generated.
- * <p>
- * A mapping between the HMM nodes and residue positions of the sequence is
- * also built and saved.
- *
- * @return
- */
- void buildConsensusSequence()
- {
- List<int[]> toResidues = new ArrayList<>();
-
- /*
- * if the HMM provided a map to sequence, use those start/end values,
- * else just treat it as for a contiguous sequence numbered from 1
- */
- boolean hasMap = getBooleanProperty(HMMFile.MAP);
- int start = hasMap ? getNode(1).getResidueNumber() : 1;
- int endResNo = hasMap ? getNode(nodes.size() - 1).getResidueNumber()
- : (start + getLength() - 1);
- char[] sequence = new char[endResNo - start + 1];
-
- int lastResNo = start - 1;
- int seqOffset = 0;
- int gapCount = 0;
-
- for (int nodeNo = 1; nodeNo < nodes.size(); nodeNo++)
- {
- HMMNode node = nodes.get(nodeNo);
- final int resNo = hasMap ? node.getResidueNumber() : lastResNo + 1;
-
- /*
- * insert gaps if map numbering is not continuous
- */
- while (resNo > lastResNo + 1)
- {
- sequence[seqOffset++] = '-';
- lastResNo++;
- gapCount++;
- }
- char consensusResidue = node.getConsensusResidue();
- if (GAP_DASH == consensusResidue)
- {
- /*
- * no residue annotation in HMM - scan for the symbol
- * with the highest match emission probability
- */
- int symbolIndex = node.getMaxMatchEmissionIndex();
- consensusResidue = alphabet.charAt(symbolIndex);
- if (node.getMatchEmission(symbolIndex) < 0.5D)
- {
- // follow convention of lower case if match emission prob < 0.5
- consensusResidue = Character.toLowerCase(consensusResidue);
- }
- }
- sequence[seqOffset++] = consensusResidue;
- lastResNo = resNo;
- }
-
- Sequence seq = new Sequence(getName(), sequence, start,
- lastResNo - gapCount);
- seq.createDatasetSequence();
- seq.setHMM(this);
- this.hmmSeq = seq;
-
- /*
- * construct and store Mapping of nodes to residues
- * note as constructed this is just an identity mapping,
- * but it allows for greater flexibility in future
- */
- List<int[]> fromNodes = new ArrayList<>();
- fromNodes.add(new int[] { 1, getLength() });
- toResidues.add(new int[] { seq.getStart(), seq.getEnd() });
- MapList mapList = new MapList(fromNodes, toResidues, 1, 1);
- mapToHmmConsensus = new Mapping(seq.getDatasetSequence(), mapList);
- }
-
-
- /**
- * Answers the aligned consensus sequence for the profile. Note this will
- * return null if called before <code>setNodes</code> has been called.
- *
- * @return
- */
- public SequenceI getConsensusSequence()
- {
- return hmmSeq;
- }
-
- /**
- * Answers the index position (0...) of the given symbol, or -1 if not a valid
- * symbol for this HMM
- *
- * @param symbol
- * @return
- */
- private int getSymbolIndex(char symbol)
- {
- /*
- * symbolIndexLookup holds the index for 'A' to 'Z'
- */
- char c = Character.toUpperCase(symbol);
- if ('A' <= c && c <= 'Z')
- {
- return symbolIndexLookup[c - 'A'];
- }
- return -1;
- }
-
- /**
- * Sets the nodes of this HMM, and also extracts the HMM consensus sequence
- * and a mapping between node numbers and sequence positions
- *
- * @param nodeList
- */
- public void setNodes(List<HMMNode> nodeList)
- {
- nodes = nodeList;
- if (nodes.size() > 1)
- {
- buildConsensusSequence();
- }
- }
-
- /**
- * Sets the aligned consensus sequence this HMM is the model for
- *
- * @param hmmSeq
- */
- public void setHmmSeq(SequenceI hmmSeq)
- {
- this.hmmSeq = hmmSeq;
- }
-}
-
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.gui;
-
-import jalview.jbgui.GDasSourceBrowser;
-import jalview.util.MessageManager;
-import jalview.util.TableSorter;
-import jalview.ws.dbsources.das.api.DasSourceRegistryI;
-import jalview.ws.dbsources.das.api.jalviewSourceI;
-
-import java.awt.BorderLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.ListSelectionModel;
-import javax.swing.SwingUtilities;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.AbstractTableModel;
-
-import org.biodas.jdas.schema.sources.CAPABILITY;
-import org.biodas.jdas.schema.sources.COORDINATES;
-import org.biodas.jdas.schema.sources.PROP;
-import org.biodas.jdas.schema.sources.VERSION;
-
-public class DasSourceBrowser extends GDasSourceBrowser
- implements Runnable, ListSelectionListener
-{
- DasSourceRegistryI sourceRegistry = null;
-
- Vector<String> selectedSources;
-
- public DasSourceBrowser(FeatureSettings featureSettings)
- {
- fs = featureSettings;
- // TODO DasSourceRegistryProvider API
- sourceRegistry = jalview.bin.Cache.getDasSourceRegistry();
- String registry = sourceRegistry.getDasRegistryURL();
-
- registryURL.setText(registry);
-
- setSelectedFromProperties();
-
- displayFullDetails(null);
- table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-
- filter1.addListSelectionListener(this);
- filter2.addListSelectionListener(this);
- filter3.addListSelectionListener(this);
-
- // Ask to be notified of selection changes.
- ListSelectionModel rowSM = table.getSelectionModel();
- rowSM.addListSelectionListener(new ListSelectionListener()
- {
- @Override
- public void valueChanged(ListSelectionEvent e)
- {
- ListSelectionModel lsm = (ListSelectionModel) e.getSource();
- if (!lsm.isSelectionEmpty())
- {
- int selectedRow = lsm.getMinSelectionIndex();
- displayFullDetails(table.getValueAt(selectedRow, 0).toString());
- }
- }
- });
-
- table.addMouseListener(new MouseAdapter()
- {
- @Override
- public void mouseClicked(MouseEvent evt)
- {
- if (evt.getClickCount() == 2 || evt.isPopupTrigger())
- {
- editRemoveLocalSource(evt);
- }
- }
- });
-
- if (sourceRegistry.getSources() != null)
- {
- init();
- }
- }
-
- FeatureSettings fs = null;
-
- private boolean loadingDasSources;
-
- public DasSourceBrowser()
- {
- this(null);
- }
-
- @Override
- public void paintComponent(java.awt.Graphics g)
- {
- if (sourceRegistry == null)
- {
- Thread worker = new Thread(this);
- worker.start();
- }
- }
-
- void init()
- {
- List<jalviewSourceI> sources = sourceRegistry.getSources();
- int dSize = sources.size();
- Object[][] data = new Object[dSize][2];
- for (int i = 0; i < dSize; i++)
- {
- data[i][0] = sources.get(i).getTitle(); // what's equivalent of nickname
- data[i][1] = new Boolean(
- selectedSources.contains(sources.get(i).getTitle()));
- }
-
- refreshTableData(data);
- setCapabilities(sourceRegistry);
-
- javax.swing.SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- TableSorter sorter = (TableSorter) table.getModel();
- sorter.setSortingStatus(1, TableSorter.DESCENDING);
- sorter.setSortingStatus(1, TableSorter.NOT_SORTED);
- }
- });
-
- progressBar.setIndeterminate(false);
- progressBar.setVisible(false);
- addLocal.setVisible(true);
- refresh.setVisible(true);
- }
-
- public void refreshTableData(Object[][] data)
- {
- TableSorter sorter = new TableSorter(new DASTableModel(data));
- sorter.setTableHeader(table.getTableHeader());
- table.setModel(sorter);
- }
-
- void displayFullDetails(String nickName)
- {
-
- StringBuffer text = new StringBuffer(
- "<HTML><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">");
-
- if (nickName == null)
- {
- fullDetails.setText(text + MessageManager
- .getString("label.select_das_service_from_table"));
- return;
- }
-
- int dSize = sourceRegistry.getSources().size();
- for (jalviewSourceI ds : sourceRegistry.getSources())
- {
- if (!ds.getTitle().equals(nickName))
- {
- continue;
- }
-
- VERSION latest = ds.getVersion();
- text.append(
- "<font color=\"#0000FF\">Id:</font> " + ds.getUri() + "<br>");
- text.append("<font color=\"#0000FF\">Nickname:</font> "
- + ds.getTitle() + "<br>");
-
- text.append("<font color=\"#0000FF\">URL:</font> <a href=\""
- + ds.getSourceURL() + "\">" + ds.getSourceURL() + "</a>"
- + "<br>");
- if (!ds.isLocal())
- {
- if (ds.getDocHref() != null && ds.getDocHref().length() > 0)
- {
- text.append("<font color=\"#0000FF\">Site:</font> <a href=\""
- + ds.getDocHref() + "\">" + ds.getDocHref() + "</a>"
- + "<br>");
- }
-
- text.append("<font color=\"#0000FF\">Description:</font> "
- + ds.getDescription() + "<br>");
-
- text.append(
- "<font color=\"#0000FF\">Admin Email:</font> <a href=\"mailto:"
- + ds.getEmail() + "\">" + ds.getEmail() + "</a>"
- + "<br>");
-
- text.append("<font color=\"#0000FF\">Registered at:</font> "
- + latest.getCreated() + "<br>");
-
- // TODO: Identify last successful test date
- // text.append("<font color=\"#0000FF\">Last successful test:</font> "
- // + latest.dasSources[i].getLeaseDate() + "<br>");
- }
- else
- {
- text.append("Source was added manually.<br/>");
- }
- text.append("<font color=\"#0000FF\">Labels:</font> ");
- boolean b = false;
- for (PROP labl : latest.getPROP())
- {
- if (labl.getName().equalsIgnoreCase("LABEL"))
- {
- if (b)
- {
- text.append(",");
- }
- text.append(" ");
-
- text.append(labl.getValue());
- b = true;
- }
- ;
- }
- text.append("<br>");
-
- text.append("<font color=\"#0000FF\">Capabilities:</font> ");
- CAPABILITY[] scap = latest.getCAPABILITY().toArray(new CAPABILITY[0]);
- for (int j = 0; j < scap.length; j++)
- {
- text.append(scap[j].getType());
- if (j < scap.length - 1)
- {
- text.append(", ");
- }
- }
- text.append("<br>");
-
- text.append("<font color=\"#0000FF\">Coordinates:</font>");
- int i = 1;
- for (COORDINATES dcs : latest.getCOORDINATES())
- {
- text.append("<br/>" + i++ + ". ");
- text.append(dcs.getAuthority() + " : " + dcs.getSource());
- if (dcs.getTaxid() != null && dcs.getTaxid().trim().length() > 0)
- {
- text.append(" [TaxId:" + dcs.getTaxid() + "]");
- }
- if (dcs.getVersion() != null
- && dcs.getVersion().trim().length() > 0)
- {
- {
- text.append(" {v. " + dcs.getVersion() + "}");
- }
- }
- text.append(" (<a href=\"" + dcs.getUri() + "\">" + dcs.getUri()
- + "</a>)");
- }
- text.append("</font></html>");
-
- break;
- }
-
- fullDetails.setText(text.toString());
- javax.swing.SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- fullDetailsScrollpane.getVerticalScrollBar().setValue(0);
- }
- });
- }
-
- @Override
- public void run()
- {
- loadingDasSources = true;
-
- addLocal.setVisible(false);
- refresh.setVisible(false);
- progressBar.setVisible(true);
- progressBar.setIndeterminate(true);
- setParentGuiEnabled(false);
- // Refresh the source list.
- sourceRegistry.refreshSources();
-
- init();
-
- setParentGuiEnabled(true);
- loadingDasSources = false;
-
- }
-
- private void setParentGuiEnabled(boolean b)
- {
- if (fs != null)
- {
- fs.fetchDAS.setEnabled(b);
- fs.saveDAS.setEnabled(b);
- }
- }
-
- public Vector<jalviewSourceI> getSelectedSources()
- {
- // wait around if we're still loading.
- while (sourceRegistry == null)
- {
- if (!loadingDasSources)
- {
- new Thread(this).start();
- try
- {
- Thread.sleep(5);
- } catch (Exception e)
- {
- }
- ;
- while (loadingDasSources)
- {
- try
- {
- Thread.sleep(5);
- } catch (Exception e)
- {
- }
- ;
- }
- ;
- }
- }
-
- Vector<jalviewSourceI> selected = new Vector<jalviewSourceI>();
- for (String source : selectedSources)
- {
- jalviewSourceI srce = sourceRegistry.getSource(source);
- if (srce != null)
- {
- selected.addElement(srce);
- }
- }
- return selected;
- }
-
- @Override
- public void refresh_actionPerformed(ActionEvent e)
- {
- saveProperties(jalview.bin.Cache.applicationProperties);
-
- Thread worker = new Thread(this);
- worker.start();
- }
-
- private void setCapabilities(DasSourceRegistryI sourceRegistry2)
- {
- Vector<String> authority = new Vector<String>();
- Vector<String> type = new Vector<String>();
- Vector<String> label = new Vector<String>();
- Vector<String> taxIds = new Vector<String>();
- authority.add("Any");
- type.add("Any");
- label.add("Any");
-
- for (jalviewSourceI ds : sourceRegistry2.getSources())
- {
- VERSION latest = ds.getVersion();
-
- for (COORDINATES cs : latest.getCOORDINATES())
- {
- if (!type.contains(cs.getSource()))
- {
- type.add(cs.getSource()); // source==category
- }
-
- if (!authority.contains(cs.getAuthority()))
- {
- authority.add(cs.getAuthority());
- }
- }
-
- for (PROP slabel : latest.getPROP())
- {
- if (slabel.getName().equalsIgnoreCase("LABEL")
- && !label.contains(slabel.getValue()))
- {
- label.add(slabel.getValue());
- }
- }
-
- }
-
- filter1.setListData(authority);
- filter2.setListData(type);
- filter3.setListData(label);
- // filter4 taxIds
-
- javax.swing.SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- filter1.setSelectedIndex(0);
- filter2.setSelectedIndex(0);
- filter3.setSelectedIndex(0);
- }
- });
- }
-
- @Override
- public void amendLocal(boolean newSource)
- {
- String url = "http://localhost:8080/", nickname = "";
- boolean seqsrc = false;
- if (!newSource)
- {
- int selectedRow = table.getSelectionModel().getMinSelectionIndex();
- nickname = table.getValueAt(selectedRow, 0).toString();
- jalviewSourceI source = sourceRegistry.getSource(nickname);
- url = source.getUri();
- seqsrc = source.isSequenceSource();
- }
-
- JTextField nametf = new JTextField(nickname, 40);
- JTextField urltf = new JTextField(url, 40);
- JCheckBox seqs = new JCheckBox(
- MessageManager.getString("label.sequence_source"));
- seqs.setSelected(seqsrc);
- JPanel panel = new JPanel(new BorderLayout());
- JPanel pane12 = new JPanel(new BorderLayout());
- pane12.add(new JLabel(MessageManager.getString("label.name:")),
- BorderLayout.CENTER);
- pane12.add(nametf, BorderLayout.EAST);
- panel.add(pane12, BorderLayout.NORTH);
- pane12 = new JPanel(new BorderLayout());
- pane12.add(new JLabel(MessageManager.getString("label.url:")),
- BorderLayout.NORTH);
- pane12.add(seqs, BorderLayout.SOUTH);
- pane12.add(urltf, BorderLayout.EAST);
- panel.add(pane12, BorderLayout.SOUTH);
-
- int reply = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
- panel, MessageManager.getString("label.enter_local_das_source"),
- JvOptionPane.OK_CANCEL_OPTION);
-
- if (reply != JvOptionPane.OK_OPTION)
- {
- return;
- }
-
- if (!urltf.getText().endsWith("/"))
- {
- urltf.setText(urltf.getText() + "/");
- }
-
- jalviewSourceI local = sourceRegistry.createLocalSource(urltf.getText(),
- nametf.getText(), seqs.isSelected(), true);
- List sources = sourceRegistry.getSources();
- int osize = sources.size();
- int size = osize + (newSource ? 1 : 0);
-
- Object[][] data = new Object[size][2];
- DASTableModel dtm = (table != null)
- ? (DASTableModel) ((TableSorter) table.getModel())
- .getTableModel()
- : null;
- for (int i = 0; i < osize; i++)
- {
- String osrc = (dtm == null || i >= osize) ? null
- : (String) dtm.getValueAt(i, 0);
- if (!newSource && osrc != null
- && dtm.getValueAt(i, 0).equals(nickname))
- {
- data[i][0] = local.getTitle();
- data[i][1] = new Boolean(true);
- }
- else
- {
- data[i][0] = osrc;
- data[i][1] = new Boolean(selectedSources.contains(osrc));
- }
- }
- // Always add a new source at the end
- if (newSource)
- {
- data[osize][0] = local.getTitle();
- data[osize][1] = new Boolean(true);
- selectedSources.add(local.getTitle());
- }
-
- refreshTableData(data);
-
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- scrollPane.getVerticalScrollBar()
- .setValue(scrollPane.getVerticalScrollBar().getMaximum());
- }
- });
-
- displayFullDetails(local.getTitle());
- }
-
- public void editRemoveLocalSource(MouseEvent evt)
- {
- int selectedRow = table.getSelectionModel().getMinSelectionIndex();
- if (selectedRow == -1)
- {
- return;
- }
-
- String nickname = table.getValueAt(selectedRow, 0).toString();
-
- if (!sourceRegistry.getSource(nickname).isLocal())
- {
- JvOptionPane.showInternalMessageDialog(Desktop.desktop,
- MessageManager.getString(
- "label.you_can_only_edit_or_remove_local_das_sources"),
- MessageManager.getString("label.public_das_source"),
- JvOptionPane.WARNING_MESSAGE);
- return;
- }
-
- Object[] options = { "Edit", "Remove", "Cancel" };
- int choice = JvOptionPane.showInternalOptionDialog(Desktop.desktop,
- "Do you want to edit or remove " + nickname + "?",
- "Edit / Remove Local DAS Source",
- JvOptionPane.YES_NO_CANCEL_OPTION,
- JvOptionPane.QUESTION_MESSAGE, null, options, options[2]);
-
- switch (choice)
- {
- case 0:
- amendLocal(false);
- break;
- case 1:
- sourceRegistry.removeLocalSource(sourceRegistry.getSource(nickname));
- selectedSources.remove(nickname);
- Object[][] data = new Object[sourceRegistry.getSources().size()][2];
- int index = 0, l = table.getRowCount();
-
- for (int i = 0; i < l; i++)
- {
- String nm;
- if ((nm = (String) table.getValueAt(i, 0)).equals(nickname))
- {
- continue;
- }
- else
- {
- data[index][0] = nm;
- data[index][1] = new Boolean(selectedSources.contains(nm));
- index++;
- }
- }
- refreshTableData(data);
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- scrollPane.getVerticalScrollBar()
- .setValue(scrollPane.getVerticalScrollBar().getMaximum());
- }
- });
-
- break;
- }
- }
-
- @Override
- public void valueChanged(ListSelectionEvent evt)
- {
- // Called when the MainTable selection changes
- if (evt.getValueIsAdjusting())
- {
- return;
- }
-
- displayFullDetails(null);
-
- // Filter the displayed data sources
-
- ArrayList names = new ArrayList();
- ArrayList selected = new ArrayList();
-
- // The features filter is not visible, but we must still
- // filter the das source list here.
- // July 2006 - only 6 sources fo not serve features
- Object[] dummyFeatureList = new Object[] { "features" };
- List<jalviewSourceI> srcs = sourceRegistry.getSources();
- for (jalviewSourceI ds : srcs)
- {
-
- VERSION v = ds.getVersion();
- List<COORDINATES> coords = v.getCOORDINATES();
- if (ds.isLocal() || ((coords == null || coords.size() == 0)
- && filter1.getSelectedIndex() == 0
- && filter2.getSelectedIndex() == 0
- && filter3.getSelectedIndex() == 0))
- {
- // THIS IS A FIX FOR LOCAL SOURCES WHICH DO NOT
- // HAVE COORDINATE SYSTEMS, INFO WHICH AT PRESENT
- // IS ADDED FROM THE REGISTRY
- names.add(ds.getTitle());
- selected.add(new Boolean(selectedSources.contains(ds.getTitle())));
- continue;
- }
-
- if (!selectedInList(dummyFeatureList, ds.getCapabilityList(v))
- || !selectedInList(filter3.getSelectedValues(),
- ds.getLabelsFor(v)))
- {
- continue;
- }
-
- for (int j = 0; j < coords.size(); j++)
- {
- if (selectedInList(filter1.getSelectedValues(),
- new String[]
- { coords.get(j).getAuthority() })
- && selectedInList(filter2.getSelectedValues(), new String[]
- { coords.get(j).getSource() }))
- {
- names.add(ds.getTitle());
- selected.add(
- new Boolean(selectedSources.contains(ds.getTitle())));
- break;
- }
- }
- }
-
- int dSize = names.size();
- Object[][] data = new Object[dSize][2];
- for (int d = 0; d < dSize; d++)
- {
- data[d][0] = names.get(d);
- data[d][1] = selected.get(d);
- }
-
- refreshTableData(data);
- }
-
- private boolean selectedInList(Object[] selection, String[] items)
- {
- for (int i = 0; i < selection.length; i++)
- {
- if (selection[i].equals("Any"))
- {
- return true;
- }
- if (items == null || items.length == 0)
- {
- return false;
- }
- String sel = (items[0].startsWith("das1:") ? "das1:" : "")
- + selection[i];
- for (int j = 0; j < items.length; j++)
- {
- if (sel.equals(items[j]))
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- void setSelectedFromProperties()
- {
- String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE",
- "uniprot");
- StringTokenizer st = new StringTokenizer(active, "\t");
- selectedSources = new Vector();
- while (st.hasMoreTokens())
- {
- selectedSources.addElement(st.nextToken());
- }
- }
-
- @Override
- public void reset_actionPerformed(ActionEvent e)
- {
- registryURL.setText(sourceRegistry.getDasRegistryURL());
- }
-
- /**
- * set the DAS source settings in the given jalview properties.
- *
- * @param properties
- */
- public void saveProperties(Properties properties)
- {
- if (registryURL.getText() == null || registryURL.getText().length() < 1)
- {
- properties.remove(jalview.bin.Cache.DAS_REGISTRY_URL);
- }
- else
- {
- properties.setProperty(jalview.bin.Cache.DAS_REGISTRY_URL,
- registryURL.getText());
- }
-
- StringBuffer sb = new StringBuffer();
- for (int r = 0; r < table.getModel().getRowCount(); r++)
- {
- if (((Boolean) table.getValueAt(r, 1)).booleanValue())
- {
- sb.append(table.getValueAt(r, 0) + "\t");
- }
- }
-
- properties.setProperty(jalview.bin.Cache.DAS_ACTIVE_SOURCE,
- sb.toString());
-
- String sourceprop = sourceRegistry.getLocalSourceString();
- properties.setProperty(jalview.bin.Cache.DAS_LOCAL_SOURCE, sourceprop);
- }
-
- class DASTableModel extends AbstractTableModel
- {
-
- public DASTableModel(Object[][] data)
- {
- this.data = data;
- }
-
- private String[] columnNames = new String[] {
- MessageManager.getString("label.nickname"),
- MessageManager.getString("label.use_source") };
-
- private Object[][] data;
-
- @Override
- public int getColumnCount()
- {
- return columnNames.length;
- }
-
- @Override
- public int getRowCount()
- {
- return data.length;
- }
-
- @Override
- public String getColumnName(int col)
- {
- return columnNames[col];
- }
-
- @Override
- public Object getValueAt(int row, int col)
- {
- return data[row][col];
- }
-
- /*
- * JTable uses this method to determine the default renderer/ editor for
- * each cell. If we didn't implement this method, then the last column would
- * contain text ("true"/"false"), rather than a check box.
- */
- @Override
- public Class getColumnClass(int c)
- {
- return getValueAt(0, c).getClass();
- }
-
- /*
- * Don't need to implement this method unless your table's editable.
- */
- @Override
- public boolean isCellEditable(int row, int col)
- {
- // Note that the data/cell address is constant,
- // no matter where the cell appears onscreen.
- return col == 1;
-
- }
-
- /*
- * Don't need to implement this method unless your table's data can change.
- */
- @Override
- public void setValueAt(Object value, int row, int col)
- {
- data[row][col] = value;
- fireTableCellUpdated(row, col);
-
- String name = getValueAt(row, 0).toString();
- boolean selected = ((Boolean) value).booleanValue();
-
- if (selectedSources.contains(name) && !selected)
- {
- selectedSources.remove(name);
- }
-
- if (!selectedSources.contains(name) && selected)
- {
- selectedSources.add(name);
- }
- }
- }
-
- public void initDasSources()
- {
-
- Thread thr = new Thread(new Runnable()
- {
- @Override
- public void run()
- {
- // this actually initialises the das source list
- paintComponent(null); // yuk
- }
- });
- thr.start();
- while (loadingDasSources || sourceRegistry == null)
- {
- try
- {
- Thread.sleep(10);
- } catch (Exception e)
- {
- }
- ;
- }
- }
-
- /**
- * disable or enable the buttons on the source browser
- *
- * @param b
- */
- public void setGuiEnabled(boolean b)
- {
- refresh.setEnabled(b);
- addLocal.setEnabled(b);
- }
-}
+++ /dev/null
-package jalview.hmmer;
-
-import jalview.analysis.AlignmentSorter;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.AlignmentOrder;
-import jalview.datamodel.AlignmentView;
-import jalview.datamodel.HiddenColumns;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignFrame;
-import jalview.gui.Desktop;
-import jalview.gui.JvOptionPane;
-import jalview.gui.SplitFrame;
-import jalview.io.DataSourceType;
-import jalview.io.StockholmFile;
-import jalview.util.FileUtils;
-import jalview.util.MessageManager;
-import jalview.viewmodel.seqfeatures.FeatureRendererSettings;
-import jalview.ws.params.ArgumentI;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
-import javax.swing.JInternalFrame;
-
-public class HMMAlign extends HmmerCommand
-{
- static final String HMMALIGN = "hmmalign";
-
- static final String ARG_TRIM = "--trim";
-
- private final AlignmentI dataset;
-
- /**
- * Constructor for the HMMAlignThread
- *
- * @param af
- * @param args
- */
- public HMMAlign(AlignFrame af, List<ArgumentI> args)
- {
- super(af, args);
- if (alignment.getDataset() != null)
- {
- dataset = alignment.getDataset();
- }
- else
- {
- dataset = null;
- }
- }
-
- /**
- * Runs the HMMAlignThread: the data on the alignment or group is exported,
- * then the command is executed in the command line and then the data is
- * imported and displayed in a new frame (if true). The command is executed
- * for each segment of the alignment. Call this method directly to execute
- * synchronously, or via start() in a new Thread for asynchronously.
- */
- @Override
- public void run()
- {
- HiddenMarkovModel hmm = getHmmProfile();
-
- long msgId = System.currentTimeMillis();
- af.setProgressBar(MessageManager.getString("status.running_hmmalign"),
- msgId);
-
- AlignmentView msa = af.gatherSequencesForAlignment();
- SequenceI[][] subAlignments = msa.getVisibleContigs(alignment.getGapCharacter());
-
- List<AlignmentOrder> allOrders = new ArrayList<>();
-
- SequenceI[][] allResults = new SequenceI[subAlignments.length][];
- int job = 0;
- for (SequenceI[] seqs : subAlignments)
- {
- Hashtable sequencesHash = stashSequences(seqs);
- try
- {
- File modelFile = FileUtils.createTempFile("hmm", ".hmm");
- File alignmentFile = FileUtils.createTempFile("output", ".sto");
- File resultFile = FileUtils.createTempFile("input", ".sto");
-
- exportStockholm(seqs, alignmentFile.getAbsoluteFile(), null);
- exportHmm(hmm, modelFile.getAbsoluteFile());
-
- boolean ran = runCommand(modelFile, alignmentFile, resultFile);
- if (!ran)
- {
- JvOptionPane.showInternalMessageDialog(af, MessageManager
- .formatMessage("warn.command_failed", "hmmalign"));
- return;
- }
-
- SequenceI[] result = importData(resultFile, allOrders);
- recoverSequences(sequencesHash, result);
- allResults[job] = result;
- modelFile.delete();
- alignmentFile.delete();
- resultFile.delete();
- } catch (IOException e)
- {
- e.printStackTrace();
- }
- job++;
- }
-
- String title = "hmmalign to " + hmm.getConsensusSequence().getName();
- displayResults(allResults, allOrders, msa, title);
-
- af.setProgressBar("", msgId);
- }
-
- /**
- * Executes the hmmalign command and returns true if successful, false if an
- * error is detected
- *
- * @param modelFile
- * the HMM to align to
- * @param alignmentFile
- * the sequences to align
- * @param resultFile
- * the file to hold the results of alignment
- * @return
- * @throws IOException
- */
- private boolean runCommand(File modelFile, File alignmentFile,
- File resultFile) throws IOException
- {
- String command = getCommandPath(HMMALIGN);
- if (command == null)
- {
- return false;
- }
- List<String> args = new ArrayList<>();
- args.add(command);
-
- if (params != null)
- {
- for (ArgumentI arg : params)
- {
- String name = arg.getName();
- if (MessageManager.getString("label.trim_termini").equals(name))
- {
- args.add(ARG_TRIM);
- }
- }
- }
- args.add("-o");
- args.add(getFilePath(resultFile));
- args.add(getFilePath(modelFile));
- args.add(getFilePath(alignmentFile));
-
- return runCommand(args);
- }
-
- /**
- * Imports the data from the file holding the output of hmmalign
- *
- * @param resultFile
- * @param allOrders
- * a list of alignment orders to add to
- *
- * @return
- * @throws IOException
- */
- private SequenceI[] importData(File resultFile,
- List<AlignmentOrder> allOrders) throws IOException
- {
- StockholmFile file = new StockholmFile(getFilePath(resultFile),
- DataSourceType.FILE);
- SequenceI[] result = file.getSeqsAsArray();
- AlignmentOrder msaorder = new AlignmentOrder(result);
- AlignmentSorter.recoverOrder(result);
- allOrders.add(msaorder);
-
- return result;
- }
-
- /**
- * Displays the results of all 'jobs' in a new frame
- *
- * @param allResults
- *
- * @param allOrders
- * @param msa
- * @param title
- */
- private void displayResults(SequenceI[][] allResults,
- List<AlignmentOrder> allOrders, AlignmentView msa, String title)
- {
- AlignmentOrder[] arrOrders = allOrders
- .toArray(new AlignmentOrder[allOrders.size()]);
- Object[] newview = msa.getUpdatedView(allResults, arrOrders,
- alignment.getGapCharacter());
- SequenceI[] seqs = (SequenceI[]) newview[0];
- HiddenColumns hidden = (HiddenColumns) newview[1];
- Alignment al = new Alignment(seqs);
- al.setProperty("Alignment Program", "hmmalign");
- if (dataset != null)
- {
- al.setDataset(dataset);
- }
-
- displayInNewFrame(al, allOrders, hidden, title);
- }
-
- /**
- * Displays the results in a new frame
- *
- * @param al
- * The alignment containing the results
- * @param alorders
- * The order of the sequences in the alignment on which the jobs were
- * run
- * @param hidden
- * Hidden columns in the previous alignment
- * @param title
- */
- private void displayInNewFrame(AlignmentI al,
- List<AlignmentOrder> alorders, HiddenColumns hidden, String title)
- {
- AlignFrame alignFrame = new AlignFrame(al, hidden, AlignFrame.DEFAULT_WIDTH,
- AlignFrame.DEFAULT_HEIGHT);
- alignFrame.setTitle(title);
-
- FeatureRendererSettings featureSettings = af.getFeatureRenderer()
- .getSettings();
- // initialise with same renderer settings as in parent alignframe.
- alignFrame.getFeatureRenderer().transferSettings(featureSettings);
-
- addSortByMenuItems(alignFrame, alorders);
-
- // TODO: refactor retrieve and show as new splitFrame as Desktop method
-
- /*
- * If alignment was requested from one half of a SplitFrame, show in a
- * SplitFrame with the other pane similarly aligned.
- */
- AlignFrame requestedBy = this.af;
- if (requestedBy != null && requestedBy.getSplitViewContainer() != null
- && requestedBy.getSplitViewContainer()
- .getComplement(requestedBy) != null)
- {
- AlignmentI complement = requestedBy.getSplitViewContainer()
- .getComplement(requestedBy);
- String complementTitle = requestedBy.getSplitViewContainer()
- .getComplementTitle(requestedBy);
- // becomes null if the alignment window was closed before the alignment
- // job finished.
- AlignmentI copyComplement = new Alignment(complement);
- // todo should this be done by copy constructor?
- copyComplement.setGapCharacter(complement.getGapCharacter());
- // share the same dataset (and the mappings it holds)
- copyComplement.setDataset(complement.getDataset());
- copyComplement.alignAs(al);
- if (copyComplement.getHeight() > 0)
- {
- alignFrame.setTitle(this.af.getTitle());
- AlignFrame af2 = new AlignFrame(copyComplement,
- AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
- af2.setTitle(complementTitle);
- String linkedTitle = MessageManager
- .getString("label.linked_view_title");
- JInternalFrame splitFrame = new SplitFrame(
- al.isNucleotide() ? alignFrame : af2, al.isNucleotide() ? af2 : alignFrame);
- Desktop.addInternalFrame(splitFrame, linkedTitle, -1, -1);
- return;
- }
- }
-
- /*
- * Not from SplitFrame, or failed to created a complementary alignment
- */
- Desktop.addInternalFrame(alignFrame, alignFrame.getTitle(), AlignFrame.DEFAULT_WIDTH,
- AlignFrame.DEFAULT_HEIGHT);
- }
-
- /**
- * Adds sort order options to the AlignFrame menus
- *
- * @param alignFrame
- * @param alorders
- */
- protected void addSortByMenuItems(AlignFrame alignFrame,
- List<AlignmentOrder> alorders)
- {
- // update orders
- if (alorders.size() == 1)
- {
- alignFrame.addSortByOrderMenuItem("hmmalign" + " Ordering", alorders.get(0));
- }
- else
- {
- // construct a non-redundant ordering set
- List<String> names = new ArrayList<>();
- for (int i = 0, l = alorders.size(); i < l; i++)
- {
- String orderName = " Region " + i;
- int j = i + 1;
-
- while (j < l)
- {
- if (alorders.get(i).equals(alorders.get(j)))
- {
- alorders.remove(j);
- l--;
- orderName += "," + j;
- }
- else
- {
- j++;
- }
- }
-
- if (i == 0 && j == 1)
- {
- names.add("");
- }
- else
- {
- names.add(orderName);
- }
- }
- for (int i = 0, l = alorders.size(); i < l; i++)
- {
- alignFrame.addSortByOrderMenuItem("hmmalign" + (names.get(i)) + " Ordering",
- alorders.get(i));
- }
- }
- }
-}
+++ /dev/null
-package jalview.hmmer;
-
-import jalview.api.AlignViewportI;
-import jalview.bin.Cache;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignFrame;
-import jalview.gui.JvOptionPane;
-import jalview.io.DataSourceType;
-import jalview.io.FileParse;
-import jalview.io.HMMFile;
-import jalview.util.FileUtils;
-import jalview.util.MessageManager;
-import jalview.ws.params.ArgumentI;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
-/**
- * A class that runs the hmmbuild command as a separate process.
- *
- * @author gmcarstairs
- *
- */
-public class HMMBuild extends HmmerCommand
-{
- static final String ARG_AMINO = "--amino";
-
- static final String ARG_DNA = "--dna";
-
- static final String ARG_RNA = "--rna";
-
- /**
- * Constructor
- *
- * @param alignFrame
- * @param args
- */
- public HMMBuild(AlignFrame alignFrame, List<ArgumentI> args)
- {
- super(alignFrame, args);
- }
-
- /**
- * Builds a HMM from an alignment (and/or groups), then imports and adds it to
- * the alignment (and/or groups). Call this method directly to execute
- * synchronously, or via start() in a new Thread for asynchronously.
- */
- @Override
- public void run()
- {
- if (params == null || params.isEmpty())
- {
- Cache.log.error("No parameters to HMMBuild!|");
- return;
- }
-
- long msgID = System.currentTimeMillis();
- af.setProgressBar(MessageManager.getString("status.running_hmmbuild"),
- msgID);
-
- AlignViewportI viewport = af.getViewport();
- try
- {
- /*
- * run hmmbuild for alignment and/or groups as selected
- */
- List<AnnotatedCollectionI> runBuildFor = parseParameters(viewport);
-
- for (AnnotatedCollectionI grp : runBuildFor)
- {
- runHMMBuild(grp);
- }
- } finally
- {
- af.setProgressBar("", msgID);
- viewport.alignmentChanged(af.alignPanel);
- af.buildColourMenu(); // to enable HMMER colour schemes
- }
- }
-
- /**
- * Scans the parameters to determine whether to run hmmmbuild for the whole
- * alignment or specified subgroup(s) or both
- *
- * @param viewport
- * @return
- */
- protected List<AnnotatedCollectionI> parseParameters(
- AlignViewportI viewport)
- {
- List<AnnotatedCollectionI> runBuildFor = new ArrayList<>();
- boolean foundArg = false;
-
- for (ArgumentI arg : params)
- {
- String name = arg.getName();
- if (MessageManager.getString("label.hmmbuild_for").equals(name))
- {
- foundArg = true;
- String value = arg.getValue();
- if (MessageManager.getString("label.alignment").equals(value))
- {
- runBuildFor.add(alignment);
- }
- else if (MessageManager.getString("label.groups_and_alignment")
- .equals(value))
- {
- runBuildFor.add(alignment);
- runBuildFor.addAll(viewport.getAlignment().getGroups());
- }
- else if (MessageManager.getString("label.groups").equals(value))
- {
- runBuildFor.addAll(viewport.getAlignment().getGroups());
- }
- else if (MessageManager.getString("label.selected_group")
- .equals(value))
- {
- runBuildFor.add(viewport.getSelectionGroup());
- }
- }
- else if (MessageManager.getString("label.use_reference")
- .equals(name))
- {
- // todo disable this option if no RF annotation on alignment
- if (!af.getViewport().hasReferenceAnnotation())
- {
- JvOptionPane.showInternalMessageDialog(af, MessageManager
- .getString("warn.no_reference_annotation"));
- // return;
- }
- }
- }
-
- /*
- * default is to build for the whole alignment
- */
- if (!foundArg)
- {
- runBuildFor.add(alignment);
- }
-
- return runBuildFor;
- }
-
- /**
- * Runs hmmbuild on the given sequences (alignment or group)
- *
- * @param grp
- */
- private void runHMMBuild(AnnotatedCollectionI ac)
- {
- File hmmFile = null;
- File alignmentFile = null;
- try
- {
- hmmFile = FileUtils.createTempFile("hmm", ".hmm");
- alignmentFile = FileUtils.createTempFile("output", ".sto");
-
- if (ac instanceof Alignment)
- {
- AlignmentI al = (Alignment) ac;
- // todo pad gaps in an unaligned SequenceGroup as well?
- if (!al.isAligned())
- {
- al.padGaps();
- }
- }
-
- deleteHmmSequences(ac);
-
- List<SequenceI> copy = new ArrayList<>();
- if (ac instanceof Alignment)
- {
- copy.addAll(ac.getSequences());
- }
- else
- {
- SequenceI[] sel = ((SequenceGroup) ac)
- .getSelectionAsNewSequences((AlignmentI) ac.getContext());
- for (SequenceI seq : sel)
- {
- copy.add(seq);
- }
- }
-
- SequenceI[] copyArray = copy.toArray(new SequenceI[copy.size()]);
- Hashtable sequencesHash = stashSequences(copyArray);
-
- exportStockholm(copyArray, alignmentFile, ac);
-
- recoverSequences(sequencesHash, copy.toArray(new SequenceI[] {}));
-
- boolean ran = runCommand(alignmentFile, hmmFile, ac);
- if (!ran)
- {
- JvOptionPane.showInternalMessageDialog(af, MessageManager
- .formatMessage("warn.command_failed", "hmmbuild"));
- return;
- }
- importData(hmmFile, ac);
- } catch (Exception e)
- {
- e.printStackTrace();
- } finally
- {
- if (hmmFile != null)
- {
- hmmFile.delete();
- }
- if (alignmentFile != null)
- {
- alignmentFile.delete();
- }
- }
- }
-
- /**
- * A helper method that deletes any HMM consensus sequence from the given
- * collection, and from the parent alignment if <code>ac</code> is a subgroup
- *
- * @param ac
- */
- void deleteHmmSequences(AnnotatedCollectionI ac)
- {
- List<SequenceI> hmmSeqs = ac.getHmmSequences();
- for (SequenceI hmmSeq : hmmSeqs)
- {
- if (ac instanceof SequenceGroup)
- {
- ((SequenceGroup) ac).deleteSequence(hmmSeq, false);
- AnnotatedCollectionI context = ac.getContext();
- if (context != null && context instanceof AlignmentI)
- {
- ((AlignmentI) context).deleteSequence(hmmSeq);
- }
- }
- else
- {
- ((AlignmentI) ac).deleteSequence(hmmSeq);
- }
- }
- }
-
- /**
- * Constructs and executes the hmmbuild command as a separate process
- *
- * @param sequencesFile
- * the alignment from which the HMM is built
- * @param hmmFile
- * the output file to which the HMM is written
- * @param group
- * alignment or group for which the hmm is generated
- *
- * @return
- * @throws IOException
- */
- private boolean runCommand(File sequencesFile, File hmmFile,
- AnnotatedCollectionI group) throws IOException
- {
- String cmd = getCommandPath(HMMBUILD);
- if (cmd == null)
- {
- return false; // executable not found
- }
- List<String> args = new ArrayList<>();
- args.add(cmd);
-
- /*
- * HMM name (will be given to consensus sequence) is
- * - as specified by an input parameter if set
- * - else group name with _HMM appended (if for a group)
- * - else align frame title with _HMM appended (if title is not too long)
- * - else "Alignment_HMM"
- */
- String name = "";
-
- if (params != null)
- {
- for (ArgumentI arg : params)
- {
- String argName = arg.getName();
- switch (argName)
- {
- case "HMM Name":
- name = arg.getValue().trim();
- break;
- case "Use Reference Annotation":
- args.add("--hand");
- break;
- }
- }
- }
-
- if (group instanceof SequenceGroup)
- {
- name = ((SequenceGroup) group).getName() + "_HMM";
- }
-
- if ("".equals(name))
- {
- if (af != null && af.getTitle().length() < 15)
- {
- name = af.getTitle();
- }
- else
- {
- name = "Alignment_HMM";
- }
- }
-
- args.add("-n");
- args.add(name.replace(' ', '_'));
- if (!alignment.isNucleotide())
- {
- args.add(ARG_AMINO); // TODO check for rna
- }
- else
- {
- args.add(ARG_DNA);
- }
-
- args.add(getFilePath(hmmFile));
- args.add(getFilePath(sequencesFile));
-
- return runCommand(args);
- }
-
- /**
- * Imports the .hmm file produced by hmmbuild, and inserts the HMM consensus
- * sequence (with attached HMM profile) as the first sequence in the alignment
- * or group for which it was generated
- *
- * @param hmmFile
- * @param ac
- * (optional) the group for which the hmm was generated
- * @throws IOException
- */
- private void importData(File hmmFile, AnnotatedCollectionI ac)
- throws IOException
- {
- if (hmmFile.length() == 0L)
- {
- Cache.log.error("Error: hmmbuild produced empty hmm file");
- return;
- }
-
- HMMFile file = new HMMFile(
- new FileParse(hmmFile.getAbsolutePath(), DataSourceType.FILE));
- SequenceI hmmSeq = file.getHMM().getConsensusSequence();
-
- if (hmmSeq == null)
- {
- // hmmbuild failure not detected earlier
- return;
- }
-
- if (ac instanceof SequenceGroup)
- {
- SequenceGroup grp = (SequenceGroup) ac;
- char gapChar = alignment.getGapCharacter();
- hmmSeq.insertCharAt(0, ac.getStartRes(), gapChar);
- hmmSeq.insertCharAt(ac.getEndRes() + 1,
- alignment.getWidth() - ac.getEndRes() - 1, gapChar);
- SequenceI topSeq = grp.getSequencesInOrder(alignment)[0];
- int topIndex = alignment.findIndex(topSeq);
- alignment.insertSequenceAt(topIndex, hmmSeq);
- ac.setSeqrep(hmmSeq);
- grp.addSequence(hmmSeq, false);
- }
- else
- {
- alignment.insertSequenceAt(0, hmmSeq);
- }
- }
-}
+++ /dev/null
-package jalview.hmmer;
-
-import jalview.bin.Cache;
-import jalview.datamodel.SequenceI;
-import jalview.gui.Preferences;
-import jalview.util.MessageManager;
-import jalview.viewmodel.AlignmentViewport;
-import jalview.ws.params.ArgumentI;
-import jalview.ws.params.ParamDatastoreI;
-import jalview.ws.params.WsParamSetI;
-import jalview.ws.params.simple.BooleanOption;
-import jalview.ws.params.simple.DoubleParameter;
-import jalview.ws.params.simple.FileParameter;
-import jalview.ws.params.simple.IntegerParameter;
-import jalview.ws.params.simple.LogarithmicParameter;
-import jalview.ws.params.simple.Option;
-import jalview.ws.params.simple.RadioChoiceParameter;
-import jalview.ws.params.simple.StringParameter;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Scanner;
-
-public final class HMMERParamStore implements ParamDatastoreI
-{
- private static final String HMMBUILD = "hmmbuild";
-
- private static final String HMMALIGN = "hmmalign";
-
- private static final String HMMSEARCH = "hmmsearch";
-
- private String name;
-
- private List<WsParamSetI> presets = new ArrayList<>();
-
- private AlignmentViewport viewport;
-
- private HMMERParamStore(String nam, AlignmentViewport av)
- {
- this.viewport = av;
- this.name = nam;
- }
-
- public static HMMERParamStore forBuild(AlignmentViewport viewport)
- {
- return new HMMERParamStore(HMMBUILD, viewport);
- }
-
- public static HMMERParamStore forAlign(AlignmentViewport viewport)
- {
- return new HMMERParamStore(HMMALIGN, viewport);
- }
-
- public static HMMERParamStore forSearch(AlignmentViewport viewport)
- {
- return new HMMERParamStore(HMMSEARCH, viewport);
- }
-
- @Override
- public List<WsParamSetI> getPresets()
- {
- return presets;
- }
-
- @Override
- public WsParamSetI getPreset(String nam)
- {
- return null;
- }
-
- @Override
- public List<ArgumentI> getServiceParameters()
- {
- List<ArgumentI> args = new ArrayList<>();
- switch (name)
- {
- case HMMSEARCH:
- getHMMSearchParams(args);
- break;
- case HMMALIGN:
- getHMMAlignParams(args);
- break;
- case HMMBUILD:
- getHMMBuildParams(args);
- break;
- default:
- }
-
- return args;
- }
-
- /**
- * Answers default parameters for hmmsearch, taking into account any
- * configured as user preferences
- *
- * @param args
- */
- private void getHMMSearchParams(List<ArgumentI> args)
- {
- /*
- * 'Options'
- */
- args.add(new BooleanOption(
- MessageManager.getString(HMMSearch.AUTO_ALIGN_SEQS_KEY),
- MessageManager.getString("label.auto_align_seqs_desc"), false,
- false, false, null));
- args.add(new BooleanOption(
- MessageManager.getString(HMMSearch.USE_ACCESSIONS_KEY),
- MessageManager.getString("label.use_accessions_desc"), false,
- false, true, null));
- args.add(new BooleanOption(
- MessageManager.getString(HMMSearch.TRIM_TERMINI_KEY),
- MessageManager.getString("label.trim_termini_desc"), false,
- false, true, null));
-
- /*
- * 'Parameters'
- */
- addChoiceOfHmm(args);
-
- // addChoiceOfDatabase(args);
-
- String thisAlignment = MessageManager
- .getString(HMMSearch.THIS_ALIGNMENT_KEY);
- String database = MessageManager.getString("label.database");
- args.add(new RadioChoiceParameter(
- MessageManager.getString("action.search"), null,
- Arrays.asList(thisAlignment,
- database),
- thisAlignment));
- args.add(new FileParameter(database, "", false, "", ""));
- args.add(new IntegerParameter(
- MessageManager.getString(HMMSearch.NUMBER_OF_RESULTS_KEY),
- MessageManager.getString("label.number_of_results_desc"), true,
- 100, 0, 100000));
- args.add(new RadioChoiceParameter(
- MessageManager.getString(HMMSearch.REPORTING_CUTOFF_KEY), null,
- Arrays.asList(HMMSearch.CUTOFF_NONE, HMMSearch.CUTOFF_EVALUE,
- HMMSearch.CUTOFF_SCORE),
- HMMSearch.CUTOFF_EVALUE));
- args.add(new LogarithmicParameter(
- MessageManager.getString(HMMSearch.SEQ_EVALUE_KEY),
- MessageManager.getString("label.seq_e_value_desc"), false, 1D,
- 1E-38, 10D));
- args.add(new LogarithmicParameter(
- MessageManager.getString(HMMSearch.DOM_EVALUE_KEY),
- MessageManager.getString("label.dom_e_value_desc"), false, 1D,
- 1E-38, 10D));
- args.add(
- new DoubleParameter(
- MessageManager.getString(HMMSearch.SEQ_SCORE_KEY),
- MessageManager.getString("label.seq_score_desc"), false,
- 0d, 0d, 1000d));
- args.add(
- new DoubleParameter(
- MessageManager.getString(HMMSearch.DOM_SCORE_KEY),
- MessageManager.getString("label.dom_score_desc"), false,
- 0d, 0d, 1000d));
- }
-
- /**
- * Constructs a choice parameter for database to search; always includes 'this
- * alignment', and also includes any databases held under user preferences key
- * "HMMSEARCH_DBS" as a comma-delimited list
- *
- * @param args
- */
- protected void addChoiceOfDatabase(List<ArgumentI> args)
- {
- String names = Cache.getProperty(Preferences.HMMSEARCH_DBS);
- if (names == null || names.isEmpty())
- {
- return;
- }
-
- List<String> filePaths = new ArrayList<>();
- List<String> fileNames = new ArrayList<>();
-
- String thisAlignment = MessageManager.getString(HMMSearch.THIS_ALIGNMENT_KEY);
- filePaths.add(thisAlignment);
- fileNames.add(thisAlignment);
-
- Scanner nameScanner = new Scanner(names);
- nameScanner.useDelimiter(Preferences.COMMA);
-
- while (nameScanner.hasNext())
- {
- String next = nameScanner.next();
- if ("null".equals(next))
- {
- Cache.setProperty(Preferences.HMMSEARCH_DBS, "");
- }
- else
- {
- filePaths.add(next);
- int pos = next.lastIndexOf(File.separator);
- String fileName = next.substring(pos + 1);
- fileNames.add(fileName);
- }
- }
- nameScanner.close();
- ArgumentI databasesOption = new StringParameter(
- MessageManager.getString(HMMSearch.DATABASE_KEY),
- MessageManager.getString("label.database_for_hmmsearch"), true,
- thisAlignment,
- thisAlignment,
- filePaths, fileNames);
- args.add(databasesOption);
- }
-
- /**
- * Answers default parameters for hmmalign, taking into account any configured
- * as user preferences
- *
- * @param args
- */
- private void getHMMAlignParams(List<ArgumentI> args)
- {
- addChoiceOfHmm(args);
-
- boolean def = Cache.getDefault(Preferences.HMMALIGN_TRIM_TERMINI,
- false);
- args.add(new BooleanOption(
- MessageManager.getString("label.trim_termini"),
- MessageManager.getString("label.trim_termini_desc"),
- false, false, def, null));
- }
-
- /**
- * Adds an argument representing the choice of HMM sequences (profiles)
- * against which to perform align or search, provided at least one is found
- *
- * @param args
- */
- protected void addChoiceOfHmm(List<ArgumentI> args)
- {
- List<SequenceI> hmms = viewport.getAlignment().getHmmSequences();
- if (!hmms.isEmpty())
- {
- List<String> options = new ArrayList<>();
- for (SequenceI hmmSeq : hmms)
- {
- options.add(hmmSeq.getName());
- }
- String defseq = options.get(0);
- ArgumentI arg = new StringParameter(
- MessageManager.getString("label.use_hmm"), null, true, defseq,
- defseq, options, null);
- args.add(arg);
- }
- }
-
- /**
- * Answers default parameters for hmmbuild, taking into account any configured
- * as user preferences
- *
- * @param args
- */
- private void getHMMBuildParams(List<ArgumentI> args)
- {
- /*
- * name to give the computed alignment HMM consensus sequence
- * (Jalview constructs group HMM consensus sequence names)
- */
- String defValue = "Alignment_HMM";
- StringParameter nameParam = new StringParameter(MessageManager.getString("label.hmm_name"),
- MessageManager.getString("label.hmm_name_desc"), true, defValue,
- defValue);
- args.add(nameParam);
-
- /*
- * only enable Use Reference Annotation if RF is present
- */
- if (viewport.hasReferenceAnnotation())
- {
- args.add(new BooleanOption(
- MessageManager.getString("label.use_reference"),
- MessageManager.getString("label.use_reference_desc"), true,
- true, true, null));
- }
-
- /*
- * choice of whether to compute HMM for alignment and/or group(s)
- * - only if there are any groups
- */
- if (!viewport.getAlignment().getGroups().isEmpty())
- {
- List<String> options = new ArrayList<>();
- options.add(MessageManager.getString("label.alignment"));
- options.add(MessageManager.getString("label.groups_and_alignment"));
- options.add(MessageManager.getString("label.groups"));
- options.add(MessageManager.getString("label.selected_group"));
- args.add(new Option(MessageManager.getString("label.hmmbuild_for"),
- MessageManager.getString("label.hmmbuild_for_desc"), true,
- MessageManager.getString("label.alignment"),
- MessageManager.getString("label.alignment"), options, null));
- }
- }
-
- @Override
- public boolean presetExists(String forName)
- {
- return false;
- }
-
- @Override
- public void deletePreset(String forName)
- {
- }
-
- @Override
- public void storePreset(String presetName, String text,
- List<ArgumentI> jobParams)
- {
- }
-
- @Override
- public void updatePreset(String oldName, String presetName, String text,
- List<ArgumentI> jobParams)
- {
- }
-
- @Override
- public WsParamSetI parseServiceParameterFile(String forName,
- String description, String[] serviceURL, String parameters)
- throws IOException
- {
- return null;
- }
-
- @Override
- public String generateServiceParameterFile(WsParamSetI pset)
- throws IOException
- {
- return null;
- }
-
-}
+++ /dev/null
-package jalview.hmmer;
-
-import jalview.ws.params.ArgumentI;
-import jalview.ws.params.WsParamSetI;
-
-import java.util.List;
-
-public class HMMERPreset implements WsParamSetI
-{
-
- @Override
- public String getName()
- {
- return null;
- }
-
- @Override
- public String getDescription()
- {
- return null;
- }
-
- @Override
- public String[] getApplicableUrls()
- {
- return null;
- }
-
- @Override
- public String getSourceFile()
- {
- return null;
- }
-
- @Override
- public void setSourceFile(String newfile)
- {
- }
-
- @Override
- public boolean isModifiable()
- {
- return false;
- }
-
- @Override
- public List<ArgumentI> getArguments()
- {
- return null;
- }
-
- @Override
- public void setArguments(List<ArgumentI> args)
- {
- }
-
-}
+++ /dev/null
-package jalview.hmmer;
-
-import jalview.bin.Cache;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignFrame;
-import jalview.gui.Desktop;
-import jalview.gui.JvOptionPane;
-import jalview.io.DataSourceType;
-import jalview.io.FileParse;
-import jalview.io.StockholmFile;
-import jalview.util.FileUtils;
-import jalview.util.MessageManager;
-import jalview.ws.params.ArgumentI;
-import jalview.ws.params.simple.BooleanOption;
-import jalview.ws.params.simple.Option;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Scanner;
-
-import javax.swing.JOptionPane;
-
-public class HMMSearch extends HmmerCommand
-{
- static final String HMMSEARCH = "hmmsearch";
-
- /*
- * constants for i18n lookup of passed parameter names
- */
- static final String DATABASE_KEY = "label.database";
-
- static final String THIS_ALIGNMENT_KEY = "label.this_alignment";
-
- static final String USE_ACCESSIONS_KEY = "label.use_accessions";
-
- static final String AUTO_ALIGN_SEQS_KEY = "label.auto_align_seqs";
-
- static final String NUMBER_OF_RESULTS_KEY = "label.number_of_results";
-
- static final String TRIM_TERMINI_KEY = "label.trim_termini";
-
- static final String REPORTING_CUTOFF_KEY = "label.reporting_cutoff";
-
- static final String CUTOFF_NONE = "None";
-
- static final String CUTOFF_SCORE = "Score";
-
- static final String CUTOFF_EVALUE = "E-Value";
-
- static final String SEQ_EVALUE_KEY = "label.seq_evalue";
-
- static final String DOM_EVALUE_KEY = "label.dom_evalue";
-
- static final String SEQ_SCORE_KEY = "label.seq_score";
-
- static final String DOM_SCORE_KEY = "label.dom_score";
-
- boolean realign = false;
-
- boolean trim = false;
-
- int seqsToReturn = Integer.MAX_VALUE;
-
- SequenceI[] seqs;
-
- private String databaseName;
-
- /**
- * Constructor for the HMMSearchThread
- *
- * @param af
- */
- public HMMSearch(AlignFrame af, List<ArgumentI> args)
- {
- super(af, args);
- }
-
- /**
- * Runs the HMMSearchThread: the data on the alignment or group is exported,
- * then the command is executed in the command line and then the data is
- * imported and displayed in a new frame. Call this method directly to execute
- * synchronously, or via start() in a new Thread for asynchronously.
- */
- @Override
- public void run()
- {
- HiddenMarkovModel hmm = getHmmProfile();
- if (hmm == null)
- {
- // shouldn't happen if we got this far
- Cache.log.error("Error: no hmm for hmmsearch");
- return;
- }
-
- SequenceI hmmSeq = hmm.getConsensusSequence();
- long msgId = System.currentTimeMillis();
- af.setProgressBar(MessageManager.getString("status.running_hmmsearch"),
- msgId);
-
- try
- {
- File hmmFile = FileUtils.createTempFile("hmm", ".hmm");
- File hitsAlignmentFile = FileUtils.createTempFile("hitAlignment",
- ".sto");
- File searchOutputFile = FileUtils.createTempFile("searchOutput",
- ".sto");
-
- exportHmm(hmm, hmmFile.getAbsoluteFile());
-
- boolean ran = runCommand(searchOutputFile, hitsAlignmentFile, hmmFile);
- if (!ran)
- {
- JvOptionPane.showInternalMessageDialog(af, MessageManager
- .formatMessage("warn.command_failed", "hmmsearch"));
- return;
- }
-
- importData(hmmSeq, hitsAlignmentFile, hmmFile, searchOutputFile);
- // TODO make realignment of search results a step at this level
- // and make it conditional on this.realign
- } catch (IOException | InterruptedException e)
- {
- e.printStackTrace();
- }
- finally
- {
- af.setProgressBar("", msgId);
- }
- }
-
- /**
- * Executes an hmmsearch with the given hmm as input. The database to be
- * searched is a local file as specified by the 'Database' parameter, or the
- * current alignment (written to file) if none is specified.
- *
- * @param searchOutputFile
- * @param hitsAlignmentFile
- * @param hmmFile
- *
- * @return
- * @throws IOException
- */
- private boolean runCommand(File searchOutputFile, File hitsAlignmentFile,
- File hmmFile) throws IOException
- {
- String command = getCommandPath(HMMSEARCH);
- if (command == null)
- {
- return false;
- }
-
- List<String> args = new ArrayList<>();
- args.add(command);
- buildArguments(args, searchOutputFile, hitsAlignmentFile, hmmFile);
-
- return runCommand(args);
- }
-
- /**
- * Appends command line arguments to the given list, to specify input and
- * output files for the search, and any additional options that may have been
- * passed from the parameters dialog
- *
- * @param args
- * @param searchOutputFile
- * @param hitsAlignmentFile
- * @param hmmFile
- * @throws IOException
- */
- protected void buildArguments(List<String> args, File searchOutputFile,
- File hitsAlignmentFile, File hmmFile) throws IOException
- {
- args.add("-o");
- args.add(getFilePath(searchOutputFile));
- args.add("-A");
- args.add(getFilePath(hitsAlignmentFile));
-
- boolean dbFound = false;
- String dbPath = "";
- File databaseFile = null;
-
- boolean useEvalueCutoff = false;
- boolean useScoreCutoff = false;
- String seqEvalueCutoff = null;
- String domEvalueCutoff = null;
- String seqScoreCutoff = null;
- String domScoreCutoff = null;
- databaseName = "Alignment";
- boolean searchAlignment = false;
-
- if (params != null)
- {
- for (ArgumentI arg : params)
- {
- String name = arg.getName();
- if (MessageManager.getString(NUMBER_OF_RESULTS_KEY)
- .equals(name))
- {
- seqsToReturn = Integer.parseInt(arg.getValue());
- }
- else if (MessageManager.getString("action.search").equals(name))
- {
- searchAlignment = arg.getValue().equals(
- MessageManager.getString(HMMSearch.THIS_ALIGNMENT_KEY));
- }
- else if (MessageManager.getString(DATABASE_KEY).equals(name))
- {
- dbPath = arg.getValue();
- int pos = dbPath.lastIndexOf(File.separator);
- databaseName = dbPath.substring(pos + 1);
- databaseFile = new File(dbPath);
- }
- else if (MessageManager.getString(AUTO_ALIGN_SEQS_KEY)
- .equals(name))
- {
- realign = true;
- }
- else if (MessageManager.getString(USE_ACCESSIONS_KEY)
- .equals(name))
- {
- args.add("--acc");
- }
- else if (MessageManager.getString(REPORTING_CUTOFF_KEY)
- .equals(name))
- {
- if (CUTOFF_EVALUE.equals(arg.getValue()))
- {
- useEvalueCutoff = true;
- }
- else if (CUTOFF_SCORE.equals(arg.getValue()))
- {
- useScoreCutoff = true;
- }
- }
- else if (MessageManager.getString(SEQ_EVALUE_KEY).equals(name))
- {
- seqEvalueCutoff = arg.getValue();
- }
- else if (MessageManager.getString(SEQ_SCORE_KEY).equals(name))
- {
- seqScoreCutoff = arg.getValue();
- }
- else if (MessageManager.getString(DOM_EVALUE_KEY)
- .equals(name))
- {
- domEvalueCutoff = arg.getValue();
- }
- else if (MessageManager.getString(DOM_SCORE_KEY).equals(name))
- {
- domScoreCutoff = arg.getValue();
- }
- else if (MessageManager.getString(TRIM_TERMINI_KEY)
- .equals(name))
- {
- trim = true;
- }
- else if (MessageManager.getString(DATABASE_KEY).equals(name))
- {
- dbFound = true;
- dbPath = arg.getValue();
- if (!MessageManager.getString(THIS_ALIGNMENT_KEY)
- .equals(dbPath))
- {
- int pos = dbPath.lastIndexOf(File.separator);
- databaseName = dbPath.substring(pos + 1);
- databaseFile = new File(dbPath);
- }
- }
- }
- }
-
- if (useEvalueCutoff)
- {
- args.add("-E");
- args.add(seqEvalueCutoff);
- args.add("--domE");
- args.add(domEvalueCutoff);
- }
- else if (useScoreCutoff)
- {
- args.add("-T");
- args.add(seqScoreCutoff);
- args.add("--domT");
- args.add(domScoreCutoff);
- }
-
-// if (!dbFound || MessageManager.getString(THIS_ALIGNMENT_KEY)
-// .equals(dbPath))
- if (searchAlignment)
- {
- /*
- * no external database specified for search, so
- * export current alignment as 'database' to search,
- * excluding any HMM consensus sequences it contains
- */
- databaseFile = FileUtils.createTempFile("database", ".sto");
- AlignmentI al = af.getViewport().getAlignment();
- AlignmentI copy = new Alignment(al);
- List<SequenceI> hmms = copy.getHmmSequences();
- for (SequenceI hmmSeq : hmms)
- {
- copy.deleteSequence(hmmSeq);
- }
- exportStockholm(copy.getSequencesArray(), databaseFile, null);
- }
-
- args.add(getFilePath(hmmFile));
- args.add(getFilePath(databaseFile));
- }
-
- /**
- * Imports the data from the temporary file to which the output of hmmsearch
- * was directed. The results are optionally realigned using hmmalign.
- *
- * @param hmmSeq
- */
- private void importData(SequenceI hmmSeq, File inputAlignmentTemp,
- File hmmTemp, File searchOutputFile)
- throws IOException, InterruptedException
- {
- BufferedReader br = new BufferedReader(
- new FileReader(inputAlignmentTemp));
- try
- {
- if (br.readLine() == null)
- {
- JOptionPane.showMessageDialog(af,
- MessageManager.getString("label.no_sequences_found"));
- return;
- }
- StockholmFile file = new StockholmFile(new FileParse(
- inputAlignmentTemp.getAbsolutePath(), DataSourceType.FILE));
- seqs = file.getSeqsAsArray();
-
- readTable(searchOutputFile);
-
- int seqCount = Math.min(seqs.length, seqsToReturn);
- SequenceI[] hmmAndSeqs = new SequenceI[seqCount + 1];
- hmmAndSeqs[0] = hmmSeq;
- System.arraycopy(seqs, 0, hmmAndSeqs, 1, seqCount);
-
- if (realign)
- {
- realignResults(hmmAndSeqs);
- }
- else
- {
- AlignmentI al = new Alignment(hmmAndSeqs);
- AlignFrame alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH,
- AlignFrame.DEFAULT_HEIGHT);
- String ttl = "hmmSearch of " + databaseName + " using "
- + hmmSeq.getName();
- Desktop.addInternalFrame(alignFrame, ttl, AlignFrame.DEFAULT_WIDTH,
- AlignFrame.DEFAULT_HEIGHT);
- }
-
- hmmTemp.delete();
- inputAlignmentTemp.delete();
- searchOutputFile.delete();
- } finally
- {
- if (br != null)
- {
- br.close();
- }
- }
- }
-
- /**
- * Realigns the given sequences using hmmalign, to the HMM profile sequence
- * which is the first in the array, and opens the results in a new frame
- *
- * @param hmmAndSeqs
- */
- protected void realignResults(SequenceI[] hmmAndSeqs)
- {
- /*
- * and align the search results to the HMM profile
- */
- AlignmentI al = new Alignment(hmmAndSeqs);
- AlignFrame frame = new AlignFrame(al, 1, 1);
- List<ArgumentI> alignArgs = new ArrayList<>();
- String alignTo = hmmAndSeqs[0].getName();
- List<String> options = Collections.singletonList(alignTo);
- Option option = new Option(MessageManager.getString("label.use_hmm"),
- "", true, alignTo, alignTo, options, null);
- alignArgs.add(option);
- if (trim)
- {
- alignArgs.add(new BooleanOption(
- MessageManager.getString(TRIM_TERMINI_KEY),
- MessageManager.getString("label.trim_termini_desc"), true,
- true, true, null));
- }
- HmmerCommand hmmalign = new HMMAlign(frame, alignArgs);
- hmmalign.run();
- }
-
- /**
- * Reads in the scores table output by hmmsearch and adds annotation to
- * sequences for E-value and bit score
- *
- * @param inputTableTemp
- * @throws IOException
- */
- void readTable(File inputTableTemp) throws IOException
- {
- BufferedReader br = new BufferedReader(new FileReader(inputTableTemp));
- String line = "";
- while (!line.startsWith("Query:"))
- {
- line = br.readLine();
- }
- for (int i = 0; i < 5; i++)
- {
- line = br.readLine();
- }
-
- int index = 0;
- while (!" ------ inclusion threshold ------".equals(line)
- && !"".equals(line))
- {
- SequenceI seq = seqs[index];
- Scanner scanner = new Scanner(line);
- String str = scanner.next();
- addScoreAnnotation(str, seq, "hmmsearch E-value",
- "Full sequence E-value");
- str = scanner.next();
- addScoreAnnotation(str, seq, "hmmsearch Score",
- "Full sequence bit score");
- scanner.close();
- line = br.readLine();
- index++;
- }
-
- br.close();
- }
-
- /**
- * A helper method that adds one score-only (non-positional) annotation to a
- * sequence
- *
- * @param value
- * @param seq
- * @param label
- * @param description
- */
- protected void addScoreAnnotation(String value, SequenceI seq,
- String label, String description)
- {
- try
- {
- AlignmentAnnotation annot = new AlignmentAnnotation(label,
- description, null);
- annot.setCalcId(HMMSEARCH);
- double eValue = Double.parseDouble(value);
- annot.setScore(eValue);
- annot.setSequenceRef(seq);
- seq.addAlignmentAnnotation(annot);
- } catch (NumberFormatException e)
- {
- System.err.println("Error parsing " + label + " from " + value);
- }
- }
-
-}
+++ /dev/null
-package jalview.hmmer;
-
-import jalview.analysis.SeqsetUtils;
-import jalview.bin.Cache;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignFrame;
-import jalview.gui.JvOptionPane;
-import jalview.gui.Preferences;
-import jalview.io.HMMFile;
-import jalview.io.StockholmFile;
-import jalview.util.FileUtils;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.ws.params.ArgumentI;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
-/**
- * Base class for hmmbuild, hmmalign and hmmsearch
- *
- * @author TZVanaalten
- *
- */
-public abstract class HmmerCommand implements Runnable
-{
- public static final String HMMBUILD = "hmmbuild";
-
- protected final AlignFrame af;
-
- protected final AlignmentI alignment;
-
- protected final List<ArgumentI> params;
-
- /**
- * Constructor
- *
- * @param alignFrame
- * @param args
- */
- public HmmerCommand(AlignFrame alignFrame, List<ArgumentI> args)
- {
- af = alignFrame;
- alignment = af.getViewport().getAlignment();
- params = args;
- }
-
- /**
- * Answers true if preference HMMER_PATH is set, and its value is the path to
- * a directory that contains an executable <code>hmmbuild</code> or
- * <code>hmmbuild.exe</code>, else false
- *
- * @return
- */
- public static boolean isHmmerAvailable()
- {
- File exec = FileUtils.getExecutable(HMMBUILD,
- Cache.getProperty(Preferences.HMMER_PATH));
- return exec != null;
- }
-
- /**
- * Uniquifies the sequences when exporting and stores their details in a
- * hashtable
- *
- * @param seqs
- */
- protected Hashtable stashSequences(SequenceI[] seqs)
- {
- return SeqsetUtils.uniquify(seqs, true);
- }
-
- /**
- * Restores the sequence data lost by uniquifying
- *
- * @param hashtable
- * @param seqs
- */
- protected void recoverSequences(Hashtable hashtable, SequenceI[] seqs)
- {
- SeqsetUtils.deuniquify(hashtable, seqs);
- }
-
- /**
- * Runs a command as a separate process and waits for it to complete. Answers
- * true if the process return status is zero, else false.
- *
- * @param commands
- * the executable command and any arguments to it
- * @throws IOException
- */
- public boolean runCommand(List<String> commands)
- throws IOException
- {
- List<String> args = Platform.isWindows() ? wrapWithCygwin(commands)
- : commands;
-
- try
- {
- ProcessBuilder pb = new ProcessBuilder(args);
- pb.redirectErrorStream(true); // merge syserr to sysout
- final Process p = pb.start();
- new Thread(new Runnable()
- {
- @Override
- public void run()
- {
- BufferedReader input = new BufferedReader(
- new InputStreamReader(p.getInputStream()));
- try
- {
- String line = input.readLine();
- while (line != null)
- {
- System.out.println(line);
- line = input.readLine();
- }
- } catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }).start();
-
- p.waitFor();
- int exitValue = p.exitValue();
- if (exitValue != 0)
- {
- Cache.log.error("Command failed, return code = " + exitValue);
- Cache.log.error("Command/args were: " + args.toString());
- }
- return exitValue == 0; // 0 is success, by convention
- } catch (Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
-
- /**
- * Converts the given command to a Cygwin "bash" command wrapper. The hmmer
- * command and any arguments to it are converted into a single parameter to the
- * bash command.
- *
- * @param commands
- */
- protected List<String> wrapWithCygwin(List<String> commands)
- {
- File bash = FileUtils.getExecutable("bash",
- Cache.getProperty(Preferences.CYGWIN_PATH));
- if (bash == null)
- {
- Cache.log.error("Cygwin shell not found");
- return commands;
- }
-
- List<String> wrapped = new ArrayList<>();
- wrapped.add(bash.getAbsolutePath());
- wrapped.add("-c");
-
- /*
- * combine hmmbuild/search/align and arguments to a single string
- */
- StringBuilder sb = new StringBuilder();
- for (String cmd : commands)
- {
- sb.append(" ").append(cmd);
- }
- wrapped.add(sb.toString());
-
- return wrapped;
- }
-
- /**
- * Exports an alignment, and reference (RF) annotation if present, to the
- * specified file, in Stockholm format
- *
- * @param seqs
- * @param toFile
- * @param annotated
- * @throws IOException
- */
- public void exportStockholm(SequenceI[] seqs, File toFile,
- AnnotatedCollectionI annotated) throws IOException
- {
- if (seqs == null)
- {
- return;
- }
- AlignmentI newAl = new Alignment(seqs);
- if (!newAl.isAligned())
- {
- newAl.padGaps();
- }
-
- if (toFile != null && annotated != null)
- {
- AlignmentAnnotation[] annots = annotated.getAlignmentAnnotation();
- if (annots != null)
- {
- for (AlignmentAnnotation annot : annots)
- {
- if (annot.label.contains("Reference") || "RF".equals(annot.label))
- {
- AlignmentAnnotation newRF;
- if (annot.annotations.length > newAl.getWidth())
- {
- Annotation[] rfAnnots = new Annotation[newAl.getWidth()];
- System.arraycopy(annot.annotations, 0, rfAnnots, 0,
- rfAnnots.length);
- newRF = new AlignmentAnnotation("RF", "Reference Positions",
- rfAnnots);
- }
- else
- {
- newRF = new AlignmentAnnotation(annot);
- }
- newAl.addAnnotation(newRF);
- }
- }
- }
- }
-
- StockholmFile file = new StockholmFile(newAl);
- String output = file.print(seqs, false);
- PrintWriter writer = new PrintWriter(toFile);
- writer.println(output);
- writer.close();
- }
-
- /**
- * Answers the full path to the given hmmer executable, or null if file cannot
- * be found or is not executable
- *
- * @param cmd
- * command short name e.g. hmmalign
- * @return
- */
- protected String getCommandPath(String cmd)
- {
- String binariesFolder = Cache.getProperty(Preferences.HMMER_PATH);
- File file = FileUtils.getExecutable(cmd, binariesFolder);
- if (file == null && af != null)
- {
- JvOptionPane.showInternalMessageDialog(af, MessageManager
- .formatMessage("label.executable_not_found", cmd));
- }
-
- return file == null ? null : getFilePath(file);
- }
-
- /**
- * Exports an HMM to the specified file
- *
- * @param hmm
- * @param hmmFile
- * @throws IOException
- */
- public void exportHmm(HiddenMarkovModel hmm, File hmmFile)
- throws IOException
- {
- if (hmm != null)
- {
- HMMFile file = new HMMFile(hmm);
- PrintWriter writer = new PrintWriter(hmmFile);
- writer.print(file.print());
- writer.close();
- }
- }
-
- /**
- * Answers the HMM profile for the profile sequence the user selected (default
- * is just the first HMM sequence in the alignment)
- *
- * @return
- */
- protected HiddenMarkovModel getHmmProfile()
- {
- String alignToParamName = MessageManager.getString("label.use_hmm");
- for (ArgumentI arg : params)
- {
- String name = arg.getName();
- if (name.equals(alignToParamName))
- {
- String seqName = arg.getValue();
- SequenceI hmmSeq = alignment.findName(seqName);
- if (hmmSeq.hasHMMProfile())
- {
- return hmmSeq.getHMM();
- }
- }
- }
- return null;
- }
-
- /**
- * Answers an absolute path to the given file, in a format suitable for
- * processing by a hmmer command. On a Windows platform, the native Windows file
- * path is converted to Cygwin format, by replacing '\'with '/' and drive letter
- * X with /cygdrive/x.
- *
- * @param resultFile
- * @return
- */
- protected String getFilePath(File resultFile)
- {
- String path = resultFile.getAbsolutePath();
- if (Platform.isWindows())
- {
- // the first backslash escapes '\' for the regular expression argument
- path = path.replaceAll("\\" + File.separator, "/");
- int colon = path.indexOf(':');
- if (colon > 0)
- {
- String drive = path.substring(0, colon);
- path = path.replaceAll(drive + ":", "/cygdrive/" + drive);
- }
- }
-
- return path;
- }
-}
+++ /dev/null
-package jalview.io;
-
-import jalview.api.AlignExportSettingI;
-import jalview.api.AlignmentViewPanel;
-import jalview.datamodel.HMMNode;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.SequenceI;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Scanner;
-
-
-/**
- * Adds capability to read in and write out HMMER3 files. .
- *
- *
- * @author TZVanaalten
- *
- */
-public class HMMFile extends AlignFile
- implements AlignmentFileReaderI, AlignmentFileWriterI
-{
- private static final String TERMINATOR = "//";
-
- /*
- * keys to data in HMM file, used to store as properties of the HiddenMarkovModel
- */
- public static final String HMM = "HMM";
-
- public static final String NAME = "NAME";
-
- public static final String ACCESSION_NUMBER = "ACC";
-
- public static final String DESCRIPTION = "DESC";
-
- public static final String LENGTH = "LENG";
-
- public static final String MAX_LENGTH = "MAXL";
-
- public static final String ALPHABET = "ALPH";
-
- public static final String DATE = "DATE";
-
- public static final String COMMAND_LOG = "COM";
-
- public static final String NUMBER_OF_SEQUENCES = "NSEQ";
-
- public static final String EFF_NUMBER_OF_SEQUENCES = "EFFN";
-
- public static final String CHECK_SUM = "CKSUM";
-
- public static final String STATISTICS = "STATS";
-
- public static final String COMPO = "COMPO";
-
- public static final String GATHERING_THRESHOLD = "GA";
-
- public static final String TRUSTED_CUTOFF = "TC";
-
- public static final String NOISE_CUTOFF = "NC";
-
- public static final String VITERBI = "VITERBI";
-
- public static final String MSV = "MSV";
-
- public static final String FORWARD = "FORWARD";
-
- public static final String MAP = "MAP";
-
- public static final String REFERENCE_ANNOTATION = "RF";
-
- public static final String CONSENSUS_RESIDUE = "CONS";
-
- public static final String CONSENSUS_STRUCTURE = "CS";
-
- public static final String MASKED_VALUE = "MM";
-
- private static final String ALPH_AMINO = "amino";
-
- private static final String ALPH_DNA = "DNA";
-
- private static final String ALPH_RNA = "RNA";
-
- private static final String ALPHABET_AMINO = "ACDEFGHIKLMNPQRSTVWY";
-
- private static final String ALPHABET_DNA = "ACGT";
-
- private static final String ALPHABET_RNA = "ACGU";
-
- private static final int NUMBER_OF_TRANSITIONS = 7;
-
- private static final String SPACE = " ";
-
- /*
- * optional guide line added to an output HMMER file, purely for readability
- */
- private static final String TRANSITIONTYPELINE = " m->m m->i m->d i->m i->i d->m d->d";
-
- private static String NL = System.lineSeparator();
-
- private HiddenMarkovModel hmm;
-
- // number of symbols in the alphabet used in the hidden Markov model
- private int numberOfSymbols;
-
- /**
- * Constructor that parses immediately
- *
- * @param inFile
- * @param type
- * @throws IOException
- */
- public HMMFile(String inFile, DataSourceType type) throws IOException
- {
- super(inFile, type);
- }
-
- /**
- * Constructor that parses immediately
- *
- * @param source
- * @throws IOException
- */
- public HMMFile(FileParse source) throws IOException
- {
- super(source);
- }
-
- /**
- * Default constructor
- */
- public HMMFile()
- {
- }
-
- /**
- * Constructor for HMMFile used for exporting
- *
- * @param hmm
- */
- public HMMFile(HiddenMarkovModel markov)
- {
- hmm = markov;
- }
-
- /**
- * Returns the HMM produced by parsing a HMMER3 file
- *
- * @return
- */
- public HiddenMarkovModel getHMM()
- {
- return hmm;
- }
-
- /**
- * Gets the name of the hidden Markov model
- *
- * @return
- */
- public String getName()
- {
- return hmm.getName();
- }
-
- /**
- * Reads the data from HMM file into the HMM model
- */
- @Override
- public void parse()
- {
- try
- {
- hmm = new HiddenMarkovModel();
- parseHeaderLines(dataIn);
- parseModel(dataIn);
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * Reads the header properties from a HMMER3 file and saves them in the
- * HiddeMarkovModel. This method exits after reading the next line after the
- * HMM line.
- *
- * @param input
- * @throws IOException
- */
- void parseHeaderLines(BufferedReader input) throws IOException
- {
- boolean readingHeaders = true;
- hmm.setFileHeader(input.readLine());
- String line = input.readLine();
- while (readingHeaders && line != null)
- {
- Scanner parser = new Scanner(line);
- String next = parser.next();
- if (ALPHABET.equals(next))
- {
- String alphabetType = parser.next();
- hmm.setProperty(ALPHABET, alphabetType);
- String alphabet = ALPH_DNA.equalsIgnoreCase(alphabetType)
- ? ALPHABET_DNA
- : (ALPH_RNA.equalsIgnoreCase(alphabetType) ? ALPHABET_RNA
- : ALPHABET_AMINO);
- numberOfSymbols = hmm.setAlphabet(alphabet);
- }
- else if (HMM.equals(next))
- {
- readingHeaders = false;
- String symbols = line.substring(line.indexOf(HMM) + HMM.length());
- numberOfSymbols = hmm.setAlphabet(symbols);
- }
- else if (STATISTICS.equals(next))
- {
- parser.next();
- String key;
- String value;
- key = parser.next();
- value = parser.next() + SPACE + SPACE + parser.next();
- hmm.setProperty(key, value);
- }
- else
- {
- String key = next;
- String value = parser.next();
- while (parser.hasNext())
- {
- value = value + SPACE + parser.next();
- }
- hmm.setProperty(key, value);
- }
- parser.close();
- line = input.readLine();
- }
- }
-
- /**
- * Parses the model data from the HMMER3 file. The input buffer should be
- * positioned at the (optional) COMPO line if there is one, else at the insert
- * emissions line for the BEGIN node of the model.
- *
- * @param input
- * @throws IOException
- */
- void parseModel(BufferedReader input) throws IOException
- {
- /*
- * specification says there must always be an HMM header (already read)
- * and one more header (guide headings) which is skipped here
- */
- int nodeNo = 0;
- String line = input.readLine();
- List<HMMNode> nodes = new ArrayList<>();
-
- while (line != null && !TERMINATOR.equals(line))
- {
- HMMNode node = new HMMNode();
- nodes.add(node);
- Scanner scanner = new Scanner(line);
- String next = scanner.next();
-
- /*
- * expect COMPO (optional) for average match emissions
- * or a node number followed by node's match emissions
- */
- if (COMPO.equals(next) || nodeNo > 0)
- {
- /*
- * parse match emissions
- */
- double[] matches = parseDoubles(scanner, numberOfSymbols);
- node.setMatchEmissions(matches);
- if (!COMPO.equals(next))
- {
- int resNo = parseAnnotations(scanner, node);
- if (resNo == 0)
- {
- /*
- * no MAP annotation provided, just number off from 0 (begin node)
- */
- resNo = nodeNo;
- }
- node.setResidueNumber(resNo);
- }
- line = input.readLine();
- }
- scanner.close();
-
- /*
- * parse insert emissions
- */
- scanner = new Scanner(line);
- double[] inserts = parseDoubles(scanner, numberOfSymbols);
- node.setInsertEmissions(inserts);
- scanner.close();
-
- /*
- * parse state transitions
- */
- line = input.readLine();
- scanner = new Scanner(line);
- double[] transitions = parseDoubles(scanner,
- NUMBER_OF_TRANSITIONS);
- node.setStateTransitions(transitions);
- scanner.close();
- line = input.readLine();
-
- nodeNo++;
- }
-
- hmm.setNodes(nodes);
- }
-
- /**
- * Parses the annotations on the match emission line and add them to the node.
- * (See p109 of the HMMER User Guide (V3.1b2) for the specification.) Returns
- * the residue position that the node maps to, if provided, else zero.
- *
- * @param scanner
- * @param node
- */
- int parseAnnotations(Scanner scanner, HMMNode node)
- {
- int mapTo = 0;
-
- /*
- * map from hmm node to sequence position, if provided
- */
- if (scanner.hasNext())
- {
- String value = scanner.next();
- if (!"-".equals(value))
- {
- try
- {
- mapTo = Integer.parseInt(value);
- node.setResidueNumber(mapTo);
- } catch (NumberFormatException e)
- {
- // ignore
- }
- }
- }
-
- /*
- * hmm consensus residue if provided, else '-'
- */
- if (scanner.hasNext())
- {
- node.setConsensusResidue(scanner.next().charAt(0));
- }
-
- /*
- * RF reference annotation, if provided, else '-'
- */
- if (scanner.hasNext())
- {
- node.setReferenceAnnotation(scanner.next().charAt(0));
- }
-
- /*
- * 'm' for masked position, if provided, else '-'
- */
- if (scanner.hasNext())
- {
- node.setMaskValue(scanner.next().charAt(0));
- }
-
- /*
- * structure consensus symbol, if provided, else '-'
- */
- if (scanner.hasNext())
- {
- node.setConsensusStructure(scanner.next().charAt(0));
- }
-
- return mapTo;
- }
-
- /**
- * Fills an array of doubles parsed from an input line
- *
- * @param input
- * @param numberOfElements
- * @return
- * @throws IOException
- */
- static double[] parseDoubles(Scanner input,
- int numberOfElements) throws IOException
- {
- double[] values = new double[numberOfElements];
- for (int i = 0; i < numberOfElements; i++)
- {
- if (!input.hasNext())
- {
- throw new IOException("Incomplete data");
- }
- String next = input.next();
- if (next.contains("*"))
- {
- values[i] = Double.NEGATIVE_INFINITY;
- }
- else
- {
- double prob = Double.valueOf(next);
- prob = Math.pow(Math.E, -prob);
- values[i] = prob;
- }
- }
- return values;
- }
-
- /**
- * Returns a string to be added to the StringBuilder containing the entire
- * output String.
- *
- * @param initialColumnSeparation
- * The initial whitespace separation between the left side of the
- * file and first character.
- * @param columnSeparation
- * The separation between subsequent data entries.
- * @param data
- * The list of data to be added to the String.
- * @return
- */
- String addData(int initialColumnSeparation,
- int columnSeparation, List<String> data)
- {
- String line = "";
- boolean first = true;
- for (String value : data)
- {
- int sep = first ? initialColumnSeparation : columnSeparation;
- line += String.format("%" + sep + "s", value);
- first = false;
- }
- return line;
- }
-
- /**
- * Converts list of characters into a list of Strings.
- *
- * @param list
- * @return Returns the list of Strings.
- */
- List<String> charListToStringList(List<Character> list)
- {
- List<String> strList = new ArrayList<>();
- for (char value : list)
- {
- String strValue = Character.toString(value);
- strList.add(strValue);
- }
- return strList;
- }
-
- /**
- * Converts an array of doubles into a list of Strings, rounded to the nearest
- * 5th decimal place
- *
- * @param doubles
- * @param noOfDecimals
- * @return
- */
- List<String> doublesToStringList(double[] doubles)
- {
- List<String> strList = new ArrayList<>();
- for (double value : doubles)
- {
- String strValue;
- if (value > 0)
- {
- strValue = String.format("%.5f", value);
- }
- else if (value == -0.00000d)
- {
- strValue = "0.00000";
- }
- else
- {
- strValue = "*";
- }
- strList.add(strValue);
- }
- return strList;
- }
-
- /**
- * Appends model data in string format to the string builder
- *
- * @param output
- */
- void appendModelAsString(StringBuilder output)
- {
- output.append(HMM).append(" ");
- String charSymbols = hmm.getSymbols();
- for (char c : charSymbols.toCharArray())
- {
- output.append(String.format("%9s", c));
- }
- output.append(NL).append(TRANSITIONTYPELINE);
-
- int length = hmm.getLength();
-
- for (int nodeNo = 0; nodeNo <= length; nodeNo++)
- {
- String matchLine = String.format("%7s",
- nodeNo == 0 ? COMPO : Integer.toString(nodeNo));
-
- double[] doubleMatches = convertToLogSpace(
- hmm.getNode(nodeNo).getMatchEmissions());
- List<String> strMatches = doublesToStringList(doubleMatches);
- matchLine += addData(10, 9, strMatches);
-
- if (nodeNo != 0)
- {
- matchLine += SPACE + (hmm.getNodeMapPosition(nodeNo));
- matchLine += SPACE + hmm.getConsensusResidue(nodeNo);
- matchLine += SPACE + hmm.getReferenceAnnotation(nodeNo);
- if (hmm.getFileHeader().contains("HMMER3/f"))
- {
- matchLine += SPACE + hmm.getMaskedValue(nodeNo);
- matchLine += SPACE + hmm.getConsensusStructure(nodeNo);
- }
- }
-
- output.append(NL).append(matchLine);
-
- String insertLine = "";
-
- double[] doubleInserts = convertToLogSpace(
- hmm.getNode(nodeNo).getInsertEmissions());
- List<String> strInserts = doublesToStringList(doubleInserts);
- insertLine += addData(17, 9, strInserts);
-
- output.append(NL).append(insertLine);
-
- String transitionLine = "";
- double[] doubleTransitions = convertToLogSpace(
- hmm.getNode(nodeNo).getStateTransitions());
- List<String> strTransitions = doublesToStringList(
- doubleTransitions);
- transitionLine += addData(17, 9, strTransitions);
-
- output.append(NL).append(transitionLine);
- }
- }
-
- /**
- * Appends formatted HMM file properties to the string builder
- *
- * @param output
- */
- void appendProperties(StringBuilder output)
- {
- output.append(hmm.getFileHeader());
-
- String format = "%n%-5s %1s";
- appendProperty(output, format, NAME);
- appendProperty(output, format, ACCESSION_NUMBER);
- appendProperty(output, format, DESCRIPTION);
- appendProperty(output, format, LENGTH);
- appendProperty(output, format, MAX_LENGTH);
- appendProperty(output, format, ALPHABET);
- appendBooleanProperty(output, format, REFERENCE_ANNOTATION);
- appendBooleanProperty(output, format, MASKED_VALUE);
- appendBooleanProperty(output, format, CONSENSUS_RESIDUE);
- appendBooleanProperty(output, format, CONSENSUS_STRUCTURE);
- appendBooleanProperty(output, format, MAP);
- appendProperty(output, format, DATE);
- appendProperty(output, format, NUMBER_OF_SEQUENCES);
- appendProperty(output, format, EFF_NUMBER_OF_SEQUENCES);
- appendProperty(output, format, CHECK_SUM);
- appendProperty(output, format, GATHERING_THRESHOLD);
- appendProperty(output, format, TRUSTED_CUTOFF);
- appendProperty(output, format, NOISE_CUTOFF);
-
- if (hmm.getMSV() != null)
- {
- format = "%n%-19s %18s";
- output.append(String.format(format, "STATS LOCAL MSV", hmm.getMSV()));
-
- output.append(String.format(format, "STATS LOCAL VITERBI",
- hmm.getViterbi()));
-
- output.append(String.format(format, "STATS LOCAL FORWARD",
- hmm.getForward()));
- }
- }
-
- /**
- * Appends 'yes' or 'no' for the given property, according to whether or not
- * it is set in the HMM
- *
- * @param output
- * @param format
- * @param propertyName
- */
- private void appendBooleanProperty(StringBuilder output, String format,
- String propertyName)
- {
- boolean set = hmm.getBooleanProperty(propertyName);
- output.append(String.format(format, propertyName,
- set ? HiddenMarkovModel.YES : HiddenMarkovModel.NO));
- }
-
- /**
- * Appends the value of the given property to the output, if not null
- *
- * @param output
- * @param format
- * @param propertyName
- */
- private void appendProperty(StringBuilder output, String format,
- String propertyName)
- {
- String value = hmm.getProperty(propertyName);
- if (value != null)
- {
- output.append(String.format(format, propertyName, value));
- }
- }
-
- @Override
- public String print(SequenceI[] sequences, boolean jvsuffix)
- {
- if (sequences[0].getHMM() != null)
- {
- hmm = sequences[0].getHMM();
- }
- return print();
- }
-
- /**
- * Prints the .hmm file to a String.
- *
- * @return
- */
- public String print()
- {
- StringBuilder output = new StringBuilder();
- appendProperties(output);
- output.append(NL);
- appendModelAsString(output);
- output.append(NL).append(TERMINATOR).append(NL);
- return output.toString();
- }
-
- /**
- * Converts the probabilities contained in an array into log space
- *
- * @param ds
- */
- double[] convertToLogSpace(double[] ds)
- {
- double[] converted = new double[ds.length];
- for (int i = 0; i < ds.length; i++)
- {
- double prob = ds[i];
- double logProb = -1 * Math.log(prob);
-
- converted[i] = logProb;
- }
- return converted;
- }
-
- /**
- * Returns the HMM sequence produced by reading a .hmm file.
- */
- @Override
- public SequenceI[] getSeqsAsArray()
- {
- SequenceI hmmSeq = hmm.getConsensusSequence();
- SequenceI[] seq = new SequenceI[1];
- seq[0] = hmmSeq;
- return seq;
- }
-
- @Override
- public void setNewlineString(String newLine)
- {
- NL = newLine;
- }
-
- @Override
- public void setExportSettings(AlignExportSettingI exportSettings)
- {
-
- }
-
- @Override
- public void configureForView(AlignmentViewPanel viewpanel)
- {
-
- }
-
- @Override
- public boolean hasWarningMessage()
- {
- return false;
- }
-
- @Override
- public String getWarningMessage()
- {
- return "warning message";
- }
-
-}
-
+++ /dev/null
-package jalview.schemes;
-
-import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.SequenceCollectionI;
-import jalview.datamodel.SequenceI;
-import jalview.util.ColorUtils;
-import jalview.util.Comparison;
-
-import java.awt.Color;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Base class for colour schemes based on a selected Hidden Markov Model. The
- * colour is with reference to an HMM consensus sequence and HMM profile
- * <ul>
- * <li>white for a gap</li>
- * <li>red for an insertion (position is gapped in the HMM consensus)</li>
- * <li>orange for negative information content</li>
- * <li>white to blue for increasing information content</li>
- * </ul>
- * where information content is the log ratio
- *
- * <pre>
- * log(profile match emission probability / residue background probability)
- * </pre>
- *
- * Sub-class implementations use either global ('Uniprot') or local
- * ('alignment') background frequencies.
- *
- * @author tzvanaalten
- * @author gmcarstairs
- */
-public abstract class HmmerColourScheme extends ResidueColourScheme
-{
- private static final Color INSERTION_COLOUR = new Color(230, 0, 0); // reddish
-
- /*
- * the aligned HMM consensus sequence to use as reference for colouring
- */
- private SequenceI hmmSeq;
-
- private HiddenMarkovModel hmm;
-
- private Map<Character, Float> frequencies;
-
- /**
- * Constructor given a list of Hidden Markov Model consensus sequences. The
- * first sequence provides the HMM profile from which we can read the emission
- * probabilities that determine the colour.
- *
- * @param hmmSeqs
- */
- public HmmerColourScheme(List<SequenceI> hmmSeqs)
- {
- hmmSeq = hmmSeqs.isEmpty() ? null : hmmSeqs.get(0);
- hmm = hmmSeq == null ? null : hmmSeq.getHMM();
- }
-
- /**
- * Default constructor (required by ColourSchemes.loadColourSchemes)
- */
- public HmmerColourScheme()
- {
- }
-
- @Override
- public Color findColour(char symbol, int column, SequenceI seq,
- String consensusResidue, float pid)
- {
- return findColour(symbol, column);
- }
-
- /**
- * Returns the colour at a particular symbol at a column in the alignment:
- * <ul>
- * <li>white for a gap</li>
- * <li>red for an insertion</li>
- * <li>orange for negative information content</li>
- * <li>white to blue for increasing information content</li>
- * </ul>
- *
- * @param symbol
- * @param column
- * @return
- */
- private Color findColour(char symbol, int column)
- {
- if (getHmm() == null || Comparison.isGap(symbol))
- {
- return Color.white;
- }
- if (Comparison.isGap(hmmSeq.getCharAt(column)))
- {
- return INSERTION_COLOUR;
- }
- if (Character.isLowerCase(symbol))
- {
- symbol = Character.toUpperCase(symbol);
- }
-
- final double prob = getHmm().getMatchEmissionProbability(column,
- symbol);
-
- Float freq = 0f;
-
- if (!frequencies.containsKey(symbol))
- {
- return Color.WHITE;
- }
- else
- {
- freq = frequencies.get(symbol);
- }
-
- /*
- * Orange if match emission probability is less than background probability
- */
- double infoRatio = prob / freq.floatValue();
- Color colour = Color.ORANGE;
- if (infoRatio >= 1)
- {
- /*
- * log-scale graduated shade of blue if prob is greater than background
- */
- float infoLog = (float) Math.log(infoRatio);
- colour = ColorUtils.getGraduatedColour(infoLog, 0, Color.WHITE,
- getMaxInformationScore(), Color.blue);
- }
-
- return colour;
- }
-
- /**
- * Answers the maximum possible value of information score (log ratio), for
- * use in scaling a graduated colour range
- *
- * @return
- */
- abstract float getMaxInformationScore();
-
- /**
- * Answers a new colour scheme instance based on the HMM of the first sequence
- * in ac that has an HMM
- */
- @Override
- public ColourSchemeI getInstance(AnnotatedCollectionI ac,
- Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
- {
- return newInstance(ac);
- }
-
- /**
- * Answers a new instance of the colour scheme for the given HMM
- *
- * @param ac
- * @return
- */
- protected abstract HmmerColourScheme newInstance(AnnotatedCollectionI ac);
-
- @Override
- public boolean isSimple()
- {
- return false;
- }
-
- /**
- * Answers true if the sequence collection has an HMM consensus sequence, else
- * false
- */
- @Override
- public boolean isApplicableTo(AnnotatedCollectionI ac)
- {
- return !ac.getHmmSequences().isEmpty();
- }
-
- protected Map<Character, Float> getFrequencies()
- {
- return frequencies;
- }
-
- protected void setFrequencies(Map<Character, Float> frequencies)
- {
- this.frequencies = frequencies;
- }
-
- protected HiddenMarkovModel getHmm()
- {
- return hmm;
- }
-
- protected SequenceI getHmmSequence()
- {
- return hmmSeq;
- }
-}
+++ /dev/null
-package jalview.schemes;
-
-import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.SequenceCollectionI;
-
-/**
- * An HMM colour scheme that uses global ('Uniprot') background frequencies for
- * residues
- *
- * @author tzvanaalten
- */
-public class HmmerGlobalBackground extends HmmerColourScheme
-{
- /*
- * The highest possible log ratio is when match emission probability in
- * the HMM model is 1, and background (for W) is 0.0109 giving
- * log(1/0.0109) = log(91.743) = 4.519
- */
- private static final float MAX_LOG_RATIO = 4.519f;
-
- /**
- * Constructor given a sequence collection
- *
- * @param ac
- */
- public HmmerGlobalBackground(SequenceCollectionI ac)
- {
- super(ac.getHmmSequences());
- String alphabetType = getHmm() == null
- ? ResidueProperties.ALPHABET_AMINO
- : getHmm().getAlphabetType();
- setFrequencies(
- ResidueProperties.backgroundFrequencies.get(alphabetType));
- }
-
- /**
- * Default constructor (required by ColourSchemes.loadColourSchemes)
- */
- public HmmerGlobalBackground()
- {
- }
-
- @Override
- public String getSchemeName()
- {
- return JalviewColourScheme.HMMERU.toString();
- }
-
- @Override
- protected HmmerColourScheme newInstance(AnnotatedCollectionI ac)
- {
- return new HmmerGlobalBackground(ac);
- }
-
- @Override
- float getMaxInformationScore()
- {
- return MAX_LOG_RATIO;
- }
-
-}
+++ /dev/null
-package jalview.schemes;
-
-import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.ResidueCount;
-import jalview.datamodel.SequenceCollectionI;
-import jalview.datamodel.SequenceI;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * An HMM colour scheme that uses local (alignment or sub-group) background
- * frequencies for residues
- *
- * @author tzvanaalten
- */
-public class HmmerLocalBackground extends HmmerColourScheme
-{
- float logTotalCount;
-
- /**
- * Constructor given a sequence collection
- *
- * @param ac
- */
- public HmmerLocalBackground(AnnotatedCollectionI ac)
- {
- super(ac.getHmmSequences());
- countFrequencies(ac);
- }
-
- /**
- * Default constructor (required by ColourSchemes.loadColourSchemes)
- */
- public HmmerLocalBackground()
- {
- }
-
- @Override
- public String getSchemeName()
- {
- return JalviewColourScheme.HMMERA.toString();
- }
-
- /**
- * Counts and stores the relative frequency of every residue in the alignment
- * (apart from any HMM consensus sequences)
- *
- * @param sc
- */
- public void countFrequencies(SequenceCollectionI sc)
- {
- // TODO or total counts in Consensus Profile (how do we get at it?)?
- Map<Character, Float> freqs = new HashMap<>();
-
- /*
- * count symbols, excluding any HMM consensus sequences
- */
- ResidueCount counts = new ResidueCount();
- List<SequenceI> seqs = sc.getSequences();
- for (SequenceI seq : seqs)
- {
- if (!seq.hasHMMProfile())
- {
- for (char c : seq.getSequence())
- {
- counts.add(c);
- }
- }
- }
- int total = counts.getTotalResidueCount(); // excludes gaps
-
- for (char symbol : counts.getSymbolCounts().symbols)
- {
- double freq = counts.getCount(symbol) / (double) total;
- freqs.put(symbol, (float) freq);
- }
-
- setFrequencies(freqs);
-
- logTotalCount = (float) Math.log(total);
- }
-
- @Override
- float getMaxInformationScore()
- {
- return logTotalCount;
- }
-
- @Override
- protected HmmerColourScheme newInstance(AnnotatedCollectionI ac)
- {
- return new HmmerLocalBackground(ac);
- }
-}
+++ /dev/null
-package jalview.util;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.DirectoryStream;
-import java.nio.file.FileSystems;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.PathMatcher;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Miscellaneous file-related functions
- */
-public final class FileUtils
-{
-
- /**
- * Answers the executable file for the given command, or null if not found or
- * not executable. The path to the executable is the command name prefixed by
- * the given folder path, optionally with .exe appended.
- *
- * @param cmd
- * command short name, for example hmmbuild
- * @param binaryPath
- * parent folder for the executable
- * @return
- */
- public static File getExecutable(String cmd, String binaryPath)
- {
- File file = new File(binaryPath, cmd);
- if (!file.canExecute())
- {
- file = new File(binaryPath, cmd + ".exe");
- {
- if (!file.canExecute())
- {
- file = null;
- }
- }
- }
- return file;
- }
-
- /**
- * Answers the path to the folder containing the given executable file, by
- * searching the PATH environment variable. Answers null if no such executable
- * can be found.
- *
- * @param cmd
- * @return
- */
- public static String getPathTo(String cmd)
- {
- String paths = System.getenv("PATH");
- // backslash is to escape regular expression argument
- for (String path : paths.split("\\" + File.pathSeparator))
- {
- if (getExecutable(cmd, path) != null)
- {
- return path;
- }
- }
- return null;
- }
-
- /**
- * A convenience method to create a temporary file that is deleted on exit of
- * the JVM
- *
- * @param prefix
- * @param suffix
- * @return
- * @throws IOException
- */
- public static File createTempFile(String prefix, String suffix)
- throws IOException
- {
- File f = File.createTempFile(prefix, suffix);
- f.deleteOnExit();
- return f;
- }
-
- /**
- * Answers a (possibly empty) list of file paths found by searching below
- * <code>from</code> that match the supplied regular expression
- * <code>pattern</code>. Results may include <code>from</code> itself if it
- * matches. If an exception occurs it is written to syserr and any results up to
- * that point are returned. Note that the regular expression match applies to
- * the whole path of any matched file.
- * <p>
- * WARNING: because the whole directory tree below <code>from</code> is
- * searched, this method may be slow if used for a high level directory, or may
- * exit prematurely if security or other exceptions occur.
- *
- * <pre>
- * Example:
- * findMatchingPaths(Paths.get("C:/Program Files"), ".*/chimera.exe$")
- * </pre>
- *
- * @param from
- * @param pattern
- *
- * @return
- * @see https://stackoverflow.com/questions/794381/how-to-find-files-that-match-a-wildcard-string-in-java/31685610#comment62441832_31685610
- */
- public static List<String> findMatchingPaths(Path from, String pattern)
- {
- List<String> matches = new ArrayList<>();
- PathMatcher pathMatcher = FileSystems.getDefault()
- .getPathMatcher("regex:" + pattern);
- try
- {
- Files.walk(from).filter(pathMatcher::matches)
- .forEach(m -> matches.add(m.toString()));
- } catch (IOException e)
- {
- System.err.println(
- "Error searching for " + pattern + " : " + e.toString());
- }
-
- return matches;
- }
-
- /**
- * Answers a (possibly empty) list of paths to files below the given root path,
- * that match the given pattern. The pattern should be a '/' delimited set of
- * glob patterns, each of which is used to match child file names (not full
- * paths). Note that 'directory spanning' glob patterns (**) are <em>not</em>
- * supported by this method.
- * <p>
- * For example
- *
- * <pre>
- * findMatches("C:\\", "Program Files*/Chimera*/bin/{chimera,chimera.exe}"
- * </pre>
- *
- * would match "C:\Program Files\Chimera 1.11\bin\chimera.exe" and "C:\Program
- * Files (x86)\Chimera 1.10.1\bin\chimera"
- *
- * @param root
- * @param pattern
- * @return
- * @see https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob
- */
- public static List<String> findMatches(String root, String pattern)
- {
- List<String> results = new ArrayList<>();
- try
- {
- Path from = Paths.get(root);
- findMatches(results, from, Arrays.asList(pattern.split("/")));
- } catch (Throwable e)
- {
- // Paths.get can throw IllegalArgumentException
- System.err.println(String.format("Error searching %s for %s: %s",
- root, pattern, e.toString()));
- }
-
- return results;
- }
-
- /**
- * A helper method that performs recursive search of file patterns and adds any
- * 'leaf node' matches to the results list
- *
- * @param results
- * @param from
- * @param patterns
- */
- protected static void findMatches(List<String> results, Path from,
- List<String> patterns)
- {
- if (patterns.isEmpty())
- {
- /*
- * reached end of recursion with all components matched
- */
- results.add(from.toString());
- return;
- }
-
- String pattern = patterns.get(0);
- try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(from,
- pattern))
- {
- dirStream.forEach(p -> {
-
- /*
- * matched a next level file - search below it
- * (ignore non-directory non-leaf matches)
- */
- List<String> subList = patterns.subList(1, patterns.size());
- if (subList.isEmpty() || p.toFile().isDirectory())
- {
- findMatches(results, p, subList);
- }
- });
- } catch (IOException e)
- {
- System.err.println(String.format("Error searching %s: %s", pattern,
- e.toString()));
- }
- }
-}
+++ /dev/null
-package jalview.util;
-
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.SequenceI;
-import jalview.io.DataSourceType;
-import jalview.io.FileParse;
-import jalview.io.HMMFile;
-import jalview.io.StockholmFile;
-import jalview.schemes.ResidueProperties;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Scanner;
-import java.util.Vector;
-
-/**
- * Processes probability data. The file indexes used in this program represent
- * the index of the location of a family or hmm in their respective files,
- * starting from 0.
- *
- * @author TZVanaalten
- *
- */
-public class HMMProbabilityDistributionAnalyser
-{
- AlignmentAnnotation reference = null;
-
- Vector<SequenceI> sequences;
-
- HiddenMarkovModel hmm;
-
- // contains the raw data produced
- List<ArrayList<Double>> raw = new ArrayList<>();
-
- // contains binned data
- Map<String, Double> binned = new HashMap<>();
-
- // location of the family file
- String families = "/media/sf_Shared_Folder/PFAM/Family/SeedFamilies.seed";
-
- // location of the file containing the family-clan links
- final static String FAMILIESTOCLAN = "/media/sf_Shared_Folder/PFAM/Family/Clanlinks.dat";
-
- // location of the HMM file
- String hmms = "/media/sf_Shared_Folder/PFAM/HMMs/Pfam-A.hmm";
-
- // suffix for raw file
- final static String RAW = "/Raw.csv";
-
- // suffix for binned file
- final static String BINNED = "/Binned.csv";
-
- // normalisation scale
- final static double SCALE = 1;
-
- // current position in file
- int currentFilePosition = 0;
-
- final static String NL = "\n";
-
- Random generator = new Random();
-
- // current directory
- String currentFolder;
-
- boolean keepRaw = false;
-
- /**
- * Sets the working directory.
- *
- * @param path
- */
- public void setFolder(String path)
- {
- currentFolder = path;
- }
-
- /**
- * Moves a buffered reader forward in the file by a certain amount of entries.
- * Each entry in the file is delimited by '//'.
- *
- * @param index
- * The index of the location in the file.
- * @param br
- * @throws IOException
- */
- public void moveLocationBy(int index, BufferedReader br)
- throws IOException
- {
- for (int i = 0; i < index; i++)
- {
- String line = br.readLine();
- while (!"//".equals(line))
- {
- line = br.readLine();
-
- }
- }
-
- }
-
- /**
- * Analyses a specified number of families and then saves the data. Before
- * analysing the data, the previous saved data will be imported and after
- * analysing this, the data is exported back into the file. The file must be
- * in flat file format.
- *
- * @param increments
- * The number of families to read before saving.
- * @throws IOException
- */
- public void run(int increments, boolean keepRawData) throws IOException
- {
- keepRaw = keepRawData;
- try
- {
- readPreviousData(currentFolder);
- BufferedReader posReader = new BufferedReader(
- new FileReader(currentFolder + "/CurrentPosition.txt"));
-
- String line = posReader.readLine();
- posReader.close();
- currentFilePosition = Integer.parseInt(line);
- } catch (Exception e)
- {
- System.out.println("No previous data found");
- }
-
-
-
- BufferedReader inputSTO = new BufferedReader(new FileReader(families));
- BufferedReader inputHMM = new BufferedReader(new FileReader(hmms));
-
-
-
- moveLocationBy(currentFilePosition, inputHMM);
- moveLocationBy(currentFilePosition, inputSTO);
-
- int filesRead = 0;
- int i = 0;
- while (filesRead < increments)
- {
-
- readStockholm(inputSTO);
-
- readHMM(inputHMM);
-
- int count = countValidResidues();
- processData(count);
- filesRead++;
-
- currentFilePosition++;
- System.out.println(i);
- i++;
- }
-
- PrintWriter p = new PrintWriter(
- new File(currentFolder + "/CurrentPosition.txt"));
- p.print(currentFilePosition);
- p.close();
- exportData(currentFolder);
- raw.clear();
- binned.clear();
-
- }
-
- /**
- * Analyses all families and then saves the data. Before analysing the data,
- * the previous saved data will be imported and after analysing this, the data
- * is exported back into the file. The file must be in flat file format.
- *
- * @param increments
- * The number of families to read before saving.
- * @throws IOException
- */
- public void runToEnd(int minCount, int maxCount, boolean keepRawData,
- boolean forClans)
- throws IOException
- {
- keepRaw = keepRawData;
- BufferedReader inputSTO = null;
- BufferedReader inputHMM = null;
- int size = 0;
- int files = 1;
- try
- {
- if (forClans)
- {
- files = 603;
- }
- int filesRead = 0;
- for (int clan = 0; clan < files; clan++)
- {
- System.out.println(clan);
- String clanPath = "";
- int numberOfFamilies = 0;
- if (forClans)
- {
- clanPath = currentFolder + "/Clan" + clan;
- if (!new File(clanPath).exists())
- {
- continue;
- }
- BufferedReader famCountReader = new BufferedReader(
- new FileReader(clanPath + "/NumberOfFamilies.txt"));
- numberOfFamilies = Integer.parseInt(famCountReader.readLine());
- }
- else
- {
- numberOfFamilies = 1;
- }
-
- for (int fam = 0; fam < numberOfFamilies; fam++)
- {
- if (forClans)
- {
- families = clanPath + "/Families/Fam" + fam + ".sto";
- hmms = clanPath + "/HMMs/HMM" + fam + ".hmm";
- }
-
- inputSTO = new BufferedReader(new FileReader(families));
- inputHMM = new BufferedReader(new FileReader(hmms));
-
-
- int i = 0;
- boolean endReached = atEnd(inputSTO);
- while (!endReached)
- {
- readStockholm(inputSTO);
- readHMM(inputHMM);
-
- int count = countValidResidues();
- if (count >= minCount && count < maxCount)
- {
- processData(count);
- }
- filesRead++;
- System.out.println(filesRead);
- endReached = atEnd(inputSTO);
- }
- }
- }
- } catch (Exception e)
- {
- e.printStackTrace();
- } finally
- {
- exportData(currentFolder);
- raw.clear();
- binned.clear();
- }
- }
-
- /**
- * Reads the previous data from both files
- *
- * @param source
- * @throws IOException
- */
- public void readPreviousData(String source) throws IOException
- {
- readBinned(source);
- if (keepRaw)
- {
- readRaw(source);
- }
- }
-
- /**
- * Reads the previous data from the binned file.
- *
- * @param source
- * @throws IOException
- */
- public void readBinned(String source) throws IOException
- {
- BufferedReader input = new BufferedReader(
- new FileReader(source + BINNED));
- String line = input.readLine();
- binned = new HashMap<>();
- while (!("".equals(line) || line == null))
- {
- Scanner scanner = new Scanner(line);
- scanner.useDelimiter(",");
- String key = scanner.next();
- String value = scanner.next();
- binned.put(key, Double.valueOf(value));
- scanner.close();
- line = input.readLine();
- }
-
- input.close();
- }
-
- /**
- * Reads the previous data from the raw file.
- *
- * @param source
- * @throws IOException
- */
- public void readRaw(String source) throws IOException
- {
- BufferedReader input = new BufferedReader(new FileReader(source + RAW));
- String line = input.readLine();
- if (line == null)
- {
- input.close();
- return;
- }
- Scanner numberScanner = new Scanner(line);
- numberScanner.useDelimiter(",");
- raw = new ArrayList<>();
- while (numberScanner.hasNext())
- {
- numberScanner.next();
- raw.add(new ArrayList<Double>());
- }
- numberScanner.close();
-
- line = input.readLine();
- while (!("".equals(line) || line == null))
- {
- Scanner scanner = new Scanner(line);
- scanner.useDelimiter(",");
-
- int i = 0;
- while (scanner.hasNext())
- {
- String value;
- value = scanner.next();
- if (!value.equals("EMPTY"))
- {
- raw.get(i).add(Double.parseDouble(value));
- }
- else
- {
- raw.get(i).add(null);
- }
-
- i++;
- }
- scanner.close();
- line = input.readLine();
- }
-
- input.close();
- }
-
- /**
- * Counts the number of valid residues in the sequence.
- *
- * @return
- */
- public int countValidResidues()
- {
- int count = 0;
-
- for (int width = 0; width < sequences.size(); width++)
- {
- for (int length = 1; length < hmm.getLength() + 1; length++)
- {
- char symbol;
- int alignPos;
- alignPos = hmm.getNodeMapPosition(length);
-
- symbol = sequences.get(width).getCharAt(alignPos);
- if (ResidueProperties.backgroundFrequencies.get("amino")
- .containsKey(symbol))
- {
- count++;
- }
- }
- }
-
- return count;
- }
-
- /**
- * Processes data, and stores it in both a raw and binned format.
- *
- * @param count
- */
- public void processData(int count)
- {
- int rawPos = 0;
- if (keepRaw)
- {
- raw.add(new ArrayList<Double>());
- rawPos = raw.size() - 1;
- }
- Double total = 0d;
- for (int width = 0; width < sequences.size(); width++)
- {
- for (int length = 1; length < hmm.getLength() + 1; length++)
- {
- char symbol;
- int alignPos;
- alignPos = hmm.getNodeMapPosition(length);
-
- symbol = sequences.get(width).getCharAt(alignPos);
- if (ResidueProperties.backgroundFrequencies.get("amino")
- .containsKey(symbol))
- {
- Double prob;
- Float bfreq;
- Double llr;
- prob = hmm.getMatchEmissionProbability(alignPos, symbol);
- bfreq = ResidueProperties.backgroundFrequencies.get("amino")
- .get(symbol);
- if (prob == 0 || bfreq == 0)
- {
- System.out.println("error");
- }
- llr = Math.log(prob / bfreq);
- if (keepRaw)
- {
- raw.get(rawPos).add(llr);
- }
-
- String output;
- output = String.format("%.1f", llr);
- total += Double.parseDouble(output);
- if ("-0.0".equals(output))
- {
- output = "0.0";
- }
- if (binned.containsKey(output))
- {
- double prev = binned.get(output);
- prev += (SCALE / count);
- binned.put(output, prev);
-
- }
- else
- {
- binned.put(output, SCALE / count);
- }
- }
- }
- }
- System.out.println(total / count);
- }
-
-
- /**
- * Reads in the sequence data from a Stockholm file.
- *
- * @param source
- * @throws IOException
- */
- public void readStockholm(BufferedReader inputSTO) throws IOException
- {
- FileParse parserSTO = new FileParse(inputSTO, "", DataSourceType.FILE);
- StockholmFile file = new StockholmFile(parserSTO);
- Vector<AlignmentAnnotation> annots = file.getAnnotations();
-
- for (AlignmentAnnotation annot : annots)
- {
- if (annot.label.contains("Reference"))
- {
- reference = annot;
- }
- }
- sequences = file.getSeqs();
- }
-
- /**
- * Reads in the HMM data from a HMMer file.
- *
- * @param source
- * @throws IOException
- */
- public void readHMM(BufferedReader inputHMM) throws IOException
- {
- FileParse parserHMM = new FileParse(inputHMM, "", DataSourceType.FILE);
- HMMFile file = new HMMFile(parserHMM);
- hmm = file.getHMM();
-
-
- }
-
- /**
- * Exports both the binned and raw data into separate files.
- *
- * @param location
- * @throws FileNotFoundException
- */
- public void exportData(String location) throws FileNotFoundException
- {
- PrintWriter writerBin = new PrintWriter(new File(location + BINNED));
- for (Map.Entry<String, Double> entry : binned.entrySet())
- {
- writerBin.println(entry.getKey() + "," + entry.getValue());
- }
- writerBin.close();
- if (keepRaw)
- {
-
- PrintWriter writerRaw = new PrintWriter(new File(location + RAW));
-
- StringBuilder identifier = new StringBuilder();
-
- for (int i = 1; i < raw.size() + 1; i++)
- {
- identifier.append("Fam " + i + ",");
- }
-
- writerRaw.println(identifier);
-
- boolean rowIsEmpty = false;
- int row = 0;
- while (!rowIsEmpty)
- {
- rowIsEmpty = true;
- StringBuilder string = new StringBuilder();
- for (int column = 0; column < raw.size(); column++)
- {
- if (raw.get(column).size() <= row)
- {
- string.append("EMPTY,");
- }
- else
- {
- string.append(raw.get(column).get(row) + ",");
- rowIsEmpty = false;
- }
- }
- row++;
- writerRaw.println(string);
- }
- writerRaw.close();
-
- }
-
- }
-
- /**
- * Prints the specified family on the console.
- *
- * @param index
- * @throws IOException
- */
- public void printFam(int index) throws IOException
- {
- BufferedReader br = new BufferedReader(new FileReader(families));
-
- moveLocationBy(index, br);
-
- String line = br.readLine();
-
- while (!"//".equals(line))
- {
- System.out.println(line);
- line = br.readLine();
- }
- System.out.println(line);
- br.close();
-
- }
-
- /**
- * Prints the specified HMM on the console.
- *
- * @param index
- * @throws IOException
- */
- public void printHMM(int index) throws IOException
- {
- BufferedReader br = new BufferedReader(new FileReader(hmms));
-
- moveLocationBy(index, br);
-
- String line = br.readLine();
-
- while (!"//".equals(line))
- {
- System.out.println(line);
- line = br.readLine();
- }
- System.out.println(line);
- br.close();
-
- }
-
- /**
- * Prints the specified family to a .sto file.
- *
- * @param index
- * @throws IOException
- */
- public void exportFam(int index, String location) throws IOException
- {
- BufferedReader br = new BufferedReader(new FileReader(families));
-
- moveLocationBy(index, br);
-
- String line = br.readLine();
- PrintWriter writer = new PrintWriter(
- new FileOutputStream(new File(location), true));
- while (!"//".equals(line))
- {
- writer.println(line);
- line = br.readLine();
- }
- writer.println(line);
- writer.close();
- br.close();
-
- }
-
- public void exportFile(BufferedReader br, String location, boolean append)
- throws IOException
- {
- String line = br.readLine();
- PrintWriter writer = new PrintWriter(
- new FileOutputStream(location, append));
- while (!"//".equals(line))
- {
- writer.println(line);
- line = br.readLine();
- }
- writer.println(line);
- writer.close();
-
-
- }
-
- public String getHMMName(int index) throws IOException
- {
- String name;
-
- BufferedReader nameFinder = new BufferedReader(new FileReader(hmms));
-
- moveLocationBy(index, nameFinder);
-
- nameFinder.readLine();
-
- Scanner scanner = new Scanner(nameFinder.readLine());
- name = scanner.next();
- name = scanner.next();
- scanner.close();
- return name;
- }
-
- public String getFamilyName(int index) throws IOException
- {
- String name;
-
- BufferedReader nameFinder = new BufferedReader(
- new FileReader(families));
-
- moveLocationBy(index, nameFinder);
-
- nameFinder.readLine();
-
- Scanner scanner = new Scanner(nameFinder.readLine());
- name = scanner.next();
- name = scanner.next();
- name = scanner.next();
- scanner.close();
- return name;
- }
-
- /**
- * Prints the specified family to a .hmm file.
- *
- * @param index
- * @throws IOException
- */
- public void exportHMM(int index, String location) throws IOException
- {
-
-
- BufferedReader br = new BufferedReader(new FileReader(hmms));
-
- moveLocationBy(index, br);
-
- String line = br.readLine();
-
- PrintWriter writer = new PrintWriter(
- new FileOutputStream(new File(location), true));
- while (!"//".equals(line))
- {
- writer.println(line);
- line = br.readLine();
- }
- writer.println(line);
- writer.close();
- br.close();
-
- }
-
- /**
- * Clears all raw, binned and current position data in the current directory.
- *
- * @throws FileNotFoundException
- */
- public void clear() throws FileNotFoundException
- {
- PrintWriter pos = new PrintWriter(
- currentFolder + "/CurrentPosition.txt");
- pos.println("0");
-
- PrintWriter raw = new PrintWriter(currentFolder + RAW);
-
- PrintWriter bin = new PrintWriter(currentFolder + BINNED);
-
- pos.close();
- bin.close();
- raw.close();
- }
-
- public void sortIntoClans(String directory) throws IOException
- {
- BufferedReader clanFinder = new BufferedReader(new FileReader(FAMILIESTOCLAN));
- BufferedReader familyReader = new BufferedReader(
- new FileReader(families));
- BufferedReader hmmReader = new BufferedReader(new FileReader(hmms));
- int families = 0;
- // moveLocationBy(7000, familyReader);
- // moveLocationBy(7000, clanFinder);
- // moveLocationBy(7000, hmmReader);
- HashMap<String, Integer> clanIndexes = new HashMap<>();
- ArrayList<Integer> familyCounts = new ArrayList<>();
- int filePos = 0;
- int clanCount = 0;
- String line;
- line = clanFinder.readLine();
-
- while (!"".equals(line) && !" ".equals(line) && line != null)
- {
- String clanName;
- boolean inClan = false;
- while (!(line.indexOf("//") > -1))
- {
-
- if (line.indexOf("#=GF CL") > -1)
- {
- families++;
- System.out.println(families);
- inClan = true;
- Scanner scanner = new Scanner(line);
- scanner.next();
- scanner.next();
- clanName = scanner.next();
- scanner.close();
-
- if (!clanIndexes.containsKey(clanName))
- {
- clanIndexes.put(clanName, clanCount);
- clanCount++;
- familyCounts.add(0);
- }
-
-
- Integer clanI = clanIndexes.get(clanName);
- String clanPath = directory + "/Clan" + clanI.toString();
- createFolders(clanPath);
-
- int index = clanIndexes.get(clanName);
- exportFile(familyReader,
- clanPath + "/Families/Fam" + familyCounts.get(index)
- + ".sto",
- false);
- exportFile(hmmReader,
- clanPath + "/HMMs/HMM" + familyCounts.get(index) + ".hmm",
- false);
-
- int count = familyCounts.get(index);
- count++;
- familyCounts.set(index, count);
- }
- line = clanFinder.readLine();
-
- }
- if (!inClan)
- {
- moveLocationBy(1, familyReader);
- moveLocationBy(1, hmmReader);
- }
- filePos++;
- // System.out.println(filePos + " files read.");
- line = clanFinder.readLine();
-
- }
- clanFinder.close();
-
- for (int clan = 0; clan < clanCount; clan++)
- {
- PrintWriter writer = new PrintWriter(
- directory + "/Clan" + clan + "/NumberOfFamilies.txt");
- int count = familyCounts.get(clan);
- writer.print(count);
- writer.close();
- }
-
- }
-
- public String getFamilies()
- {
- return families;
- }
-
- public void setFamilies(String families)
- {
- this.families = currentFolder + families;
- }
-
- public String getHmms()
- {
- return hmms;
- }
-
- public void setHmms(String hmms)
- {
- this.hmms = currentFolder + hmms;
- }
-
- public void alignWithinClan(String exportLocation, String clansLocation)
- throws IOException, InterruptedException
- {
- int alignmentsExported = 0;
- for (int clan = 0; clan < 604; clan++)
- {
- System.out.println(clan);
- int famCount = 0;
- String clanPath = clansLocation + "/Clan" + clan;
- int numberOfFamilies;
- BufferedReader br = new BufferedReader(
- new FileReader(clanPath + "/NumberOfFamilies.txt"));
- String line = br.readLine();
- numberOfFamilies = Integer.parseInt(line);
- br.close();
- if (numberOfFamilies == 1)
- {
- continue;
- }
- final String commandExportLocation = exportLocation + "/Clan" + clan;
- createFolders(commandExportLocation);
- for (int family = 0; family < numberOfFamilies; family++)
- {
- famCount++;
- ArrayList<Integer> indexes = new ArrayList<>();
- for (int i = 0; i < numberOfFamilies; i++)
- {
- if (i != family)
- {
- indexes.add(i);
- }
- }
-
- int hmmIndex = getRandom(indexes);
- String famPath = clanPath + "/Families/Fam" + family + ".sto";
- String hmmPath = clanPath + "/HMMs/HMM" + hmmIndex + ".hmm";
- String command = "/media/sf_Shared_Folder/hmmer/binaries/hmmalign --mapali "
- + clanPath + "/Families/Fam" + hmmIndex + ".sto"
- + " --trim ";
- command += hmmPath + " ";
- command += famPath;
- final int familyIndex = family;
- final Process p = Runtime.getRuntime().exec(command);
-
- new Thread(new Runnable()
- {
- @Override
- public void run()
- {
- BufferedReader input = new BufferedReader(
- new InputStreamReader(p.getInputStream()));
- String line = null;
-
- try
- {
- PrintWriter writer = new PrintWriter(commandExportLocation
- + "/Families/Fam" + familyIndex + ".sto");
- String lastLine = "";
- boolean dataFound = false;
- while ((line = input.readLine()) != null)
- {
- if (line.contains("#=GR") && !dataFound)
- {
- writer.println(lastLine);
- dataFound = true;
- }
- if (line.contains("#") || dataFound || " ".equals(line)
- || "".equals(line) || "//".equals(line))
- {
- writer.println(line);
- }
- lastLine = line;
- }
- writer.close();
- } catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }).start();
-
- p.waitFor();
-
- BufferedReader hmmExporter = new BufferedReader(
- new FileReader(hmmPath));
-
- exportFile(hmmExporter,
- commandExportLocation + "/HMMs/HMM" + family + ".hmm",
- false);
-
- alignmentsExported++;
-
-
- }
- PrintWriter writer = new PrintWriter(
- commandExportLocation + "/NumberOfFamilies.txt");
- writer.print(famCount);
- writer.close();
- }
-
- }
-
- public boolean atEnd(BufferedReader br) throws IOException
- {
- boolean end = false;
- br.mark(80);
- String line = br.readLine();
- if ("".equals(line) || line == null)
- {
- end = true;
- }
- br.reset();
- return end;
- }
-
- public int getRandom(ArrayList<Integer> list)
- {
- if (!(list.size() > 0))
- {
- System.out.println("Error - size = " + list.size());
- }
- int index = generator.nextInt(list.size());
- int value = list.get(index);
- list.remove(index);
- return value;
- }
-
- public void createFolders(String clanPath)
- {
- File clanFolder = new File(clanPath);
- if (!clanFolder.exists())
- {
- clanFolder.mkdir();
- }
-
- File famFolder = new File(clanPath + "/Families");
- File hmmFolder = new File(clanPath + "/HMMs");
- if (!famFolder.exists())
- {
- famFolder.mkdir();
- hmmFolder.mkdir();
- }
- }
-}
-
-
-
-
+++ /dev/null
-package jalview.util;
-
-import java.io.IOException;
-import java.util.Scanner;
-
-/**
- * This class contains the brain of the analyser program, and contains a number
- * of commands for the processing of data.
- *
- * @author TZVanaalten
- *
- */
-
-public class ProbabilityAnalyserKickstarter
-{
-
- public static void main(String[] args)
- throws IOException, InterruptedException
- {
-
- // this does all of the processing
- HMMProbabilityDistributionAnalyser analyser = new HMMProbabilityDistributionAnalyser();
-
- boolean running = true;
- System.out.println("ACTIVATED");
- while (running)
- {
- Scanner keyboard = new Scanner(System.in);
- String command = keyboard.nextLine();
-
- Scanner inputScanner = new Scanner(command);
- // prints family to console. Syntax is printFam <index>
- if (command.indexOf("printFam") > -1)
- {
- try
- {
- inputScanner.next();
- int index = inputScanner.nextInt();
- analyser.printFam(index);
- continue;
- } catch (Exception e)
- {
- System.out.println("Command failed");
- }
-
- }
- // prints HMM to console. Syntax is printHMM <index>
- if (command.indexOf("printHMM") > -1)
- {
- try
- {
- inputScanner.next();
- int index = inputScanner.nextInt();
- analyser.printHMM(index);
- continue;
- } catch (Exception e)
- {
- System.out.println("Command failed");
- }
- }
- // prints family to file in current folder. Syntax is exportFam <index>.
- if (command.indexOf("exportFam") > -1)
- {
- try
- {
- inputScanner.next();
- int index = inputScanner.nextInt();
- String location = inputScanner.next();
- analyser.exportFam(index, location);
- continue;
- } catch (Exception e)
- {
- System.out.println("Command failed");
- }
- }
- // prints HMM to file in current folder. Syntax is exportHMM <index>.
- if (command.indexOf("exportHMM") > -1)
- {
- try
- {
- inputScanner.next();
- int index = inputScanner.nextInt();
- String location = inputScanner.next();
- analyser.exportHMM(index, location);
- continue;
- } catch (Exception e)
- {
- System.out.println("Command failed");
- }
- }
- // Processes data. Syntax is run <number of loops> <increments>. The
- // number loops specifies the number of increments the program will run.
- // After each increment, the data stored currently in the program is
- // exported and re-read back into the program. This is to ensure that the
- // program can be terminated without losing a large quantity of data. The
- // increment is the number of families read per 'save'.
- if (command.indexOf("run") > -1 && !(command.indexOf("ToEnd") > -1))
- {
- try
- {
-
- inputScanner.next();
-
- int loops = inputScanner.nextInt();
- int increments = inputScanner.nextInt();
- boolean keepRaw = inputScanner.nextBoolean();
-
- for (int i = 0; i < loops; i++)
- {
- analyser.run(increments, keepRaw);
- System.out.println("Saved");
- }
- System.out.println("Task completed");
- continue;
- } catch (Exception e)
- {
- System.out.println("Command failed");
- }
- continue;
- }
- if ((command.indexOf("runToEnd") > -1))
- {
- try
- {
-
- inputScanner.next();
- int minCount = inputScanner.nextInt();
- int maxCount = inputScanner.nextInt();
- boolean keepRaw = inputScanner.nextBoolean();
- boolean forClans = inputScanner.nextBoolean();
- analyser.runToEnd(minCount, maxCount, keepRaw, forClans);
- System.out.println("Task completed");
- } catch (Exception e)
- {
- System.out.println("Command failed");
- }
- continue;
- }
- // terminates program. Syntax is terminate.
- if (command.indexOf("terminate") > -1)
- {
- running = false;
- continue;
- }
- // clears files in current directory (Only a specific set of files).
- // Syntax is clear.
- if (command.indexOf("clear") > -1)
- {
- analyser.clear();
- continue;
- }
- // changes current directory. Syntax is cd <directory>
- if (command.indexOf("cd") > -1)
- {
- try
- {
- inputScanner.next();
- analyser.setFolder(inputScanner.next());
- } catch (Exception e)
- {
- System.out.println("Command failed");
-
- }
- continue;
- }
-
- if (command.indexOf("getFamName") > -1)
- {
- try
- {
- inputScanner.next();
- System.out.println(analyser.getFamilyName(inputScanner.nextInt()));
-
- } catch (Exception e)
- {
- System.out.println("Command failed");
- }
- continue;
- }
- if (command.indexOf("sortIntoClans") > -1)
- {
- inputScanner.next();
- analyser.sortIntoClans(inputScanner.next());
- continue;
-
- }
- if (command.indexOf("setFamilies") > -1)
- {
- inputScanner.next();
- analyser.setFamilies(inputScanner.next());
- continue;
-
- }
-
- if (command.indexOf("setHMMs") > -1)
- {
- inputScanner.next();
- analyser.setHmms(inputScanner.next());
- continue;
-
- }
-
- if (command.indexOf("alignWithinClans") > -1)
- {
- inputScanner.next();
- String export = inputScanner.next();
- String clans = inputScanner.next();
- analyser.alignWithinClan(export, clans);
- continue;
-
- }
-
- System.out.println("Unrecognised command");
- }
-
-
-
-
- }
-
-}
+++ /dev/null
-package jalview.workers;
-
-import jalview.analysis.AAFrequency;
-import jalview.api.AlignViewportI;
-import jalview.api.AlignmentViewPanel;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.ProfilesI;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.util.MessageManager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This class calculates HMM Information Content annotations, based on any HMM
- * consensus sequences and their HMM models. HMM consensus sequences may be
- * present for the whole alignment, or subgroups of it.
- *
- */
-public class InformationThread extends AlignCalcWorker
-{
- public static final String HMM_CALC_ID = "HMM";
-
- /**
- * Constructor
- *
- * @param alignViewport
- * @param alignPanel
- */
- public InformationThread(AlignViewportI alignViewport,
- AlignmentViewPanel alignPanel)
- {
- super(alignViewport, alignPanel);
- }
-
- /**
- * Recomputes Information annotations for any HMM consensus sequences (for
- * alignment and/or groups)
- */
- @Override
- public void run()
- {
- if (alignViewport.getAlignment().getHmmSequences().isEmpty())
- {
- return;
- }
- if (calcMan.isPending(this))
- {
- return;
- }
- calcMan.notifyStart(this);
- // long started = System.currentTimeMillis();
-
- try
- {
- if (calcMan.isPending(this))
- {
- // another instance of this is waiting to run
- calcMan.workerComplete(this);
- return;
- }
- while (!calcMan.notifyWorking(this))
- {
- // another thread in progress, wait my turn
- try
- {
- if (ap != null)
- {
- ap.paintAlignment(false, false);
- }
- Thread.sleep(200);
- } catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
- if (alignViewport.isClosed())
- {
- abortAndDestroy();
- return;
- }
-
- AlignmentI alignment = alignViewport.getAlignment();
- int aWidth = alignment == null ? -1 : alignment.getWidth();
- if (aWidth < 0)
- {
- calcMan.workerComplete(this);
- return;
- }
-
- /*
- * compute information profiles for any HMM consensus sequences
- * for the alignment or sub-groups
- */
- computeProfiles(alignment);
-
- /*
- * construct the corresponding annotations
- */
- updateAnnotation();
-
- if (ap != null)
- {
- ap.adjustAnnotationHeight();
- ap.paintAlignment(true, true);
- }
- } catch (OutOfMemoryError error)
- {
- calcMan.disableWorker(this);
- ap.raiseOOMWarning("calculating information", error);
- } finally
- {
- calcMan.workerComplete(this);
- }
- }
-
- /**
- * Computes HMM profiles for any HMM consensus sequences (for alignment or
- * subgroups). Any alignment profile computed is stored on the viewport, any
- * group profile computed is stored on the respective sequence group.
- *
- * @param alignment
- * @see AlignViewportI#setHmmProfiles(ProfilesI)
- */
- protected void computeProfiles(AlignmentI alignment)
- {
- int width = alignment.getWidth();
-
- /*
- * alignment HMM profile
- */
- List<SequenceI> seqs = alignment.getHmmSequences();
- if (!seqs.isEmpty())
- {
- HiddenMarkovModel hmm = seqs.get(0).getHMM();
- ProfilesI hmmProfiles = AAFrequency.calculateHMMProfiles(hmm, width,
- 0, width, alignViewport.isIgnoreBelowBackground(),
- alignViewport.isInfoLetterHeight());
- alignViewport.setHmmProfiles(hmmProfiles);
- }
-
- /*
- * group HMM profiles
- */
- List<SequenceGroup> groups = alignment.getGroups();
- for (SequenceGroup group : groups)
- {
- seqs = group.getHmmSequences();
- if (!seqs.isEmpty())
- {
- HiddenMarkovModel hmm = seqs.get(0).getHMM();
- ProfilesI hmmProfiles = AAFrequency.calculateHMMProfiles(hmm, width,
- 0, width, group.isIgnoreBelowBackground(),
- group.isUseInfoLetterHeight());
- group.setHmmProfiles(hmmProfiles);
- }
- }
- }
-
- /**
- * gets the sequences on the alignment on the viewport.
- *
- * @return
- */
- protected SequenceI[] getSequences()
- {
- return alignViewport.getAlignment().getSequencesArray();
- }
-
- /**
- * Get the Gap annotation for the alignment
- *
- * @return
- */
- protected AlignmentAnnotation getGapAnnotation()
- {
- return alignViewport.getOccupancyAnnotation();
- }
-
- /**
- * Computes Information Content annotation for any HMM consensus sequences
- * (for alignment or groups), and updates (or adds) the annotation to the
- * sequence and the alignment
- */
- @Override
- public void updateAnnotation()
- {
- AlignmentI alignment = alignViewport.getAlignment();
-
- float maxInformation = 0f;
- List<AlignmentAnnotation> infos = new ArrayList<>();
-
- /*
- * annotation for alignment HMM consensus if present
- */
- List<SequenceI> hmmSeqs = alignment.getHmmSequences();
- if (!hmmSeqs.isEmpty())
- {
- ProfilesI profile = alignViewport.getHmmProfiles();
- float m = updateInformationAnnotation(hmmSeqs.get(0), profile, null,
- infos);
- maxInformation = Math.max(maxInformation, m);
- }
-
- /*
- * annotation for group HMM consensus if present
- */
- for (SequenceGroup group : alignment.getGroups())
- {
- hmmSeqs = group.getHmmSequences();
- if (!hmmSeqs.isEmpty())
- {
- ProfilesI profiles = group.getHmmProfiles();
- float m = updateInformationAnnotation(hmmSeqs.get(0), profiles,
- group, infos);
- maxInformation = Math.max(maxInformation, m);
- }
- }
-
- /*
- * maxInformation holds the maximum value of information score;
- * set this as graphMax in all annotations to scale them all the same
- */
- for (AlignmentAnnotation ann : infos)
- {
- ann.graphMax = maxInformation;
- }
- }
-
- /**
- * Updates (and first constructs if necessary) an HMM Profile information
- * content annotation for a sequence. The <code>group</code> argument is null
- * for the whole alignment annotation, not null for a subgroup annotation. The
- * updated annotation is added to the <code>infos</code> list. Answers the
- * maximum information content value of any annotation (for use as a scaling
- * factor for display).
- *
- * @param seq
- * @param profile
- * @param group
- * @param infos
- * @return
- */
- protected float updateInformationAnnotation(SequenceI seq,
- ProfilesI profile, SequenceGroup group,
- List<AlignmentAnnotation> infos)
- {
- if (seq == null || profile == null)
- {
- return 0f;
- }
-
- AlignmentAnnotation ann = findOrCreateAnnotation(seq, group);
-
- seq.addAlignmentAnnotation(ann);
- infos.add(ann);
-
- float max = AAFrequency.completeInformation(ann, profile,
- profile.getStartColumn(), profile.getEndColumn() + 1);
-
- return max;
- }
-
- /**
- * A helper method that first searches for the HMM annotation that matches the
- * group reference (null for the whole alignment annotation). If found, its
- * sequence reference is updated to the given sequence (the recomputed HMM
- * consensus sequence). If not found, it is created. This supports both
- * creating the annotation the first time hmmbuild is run, and updating it if
- * hmmbuild is re-run.
- *
- * @param seq
- * @param group
- * @return
- */
- AlignmentAnnotation findOrCreateAnnotation(SequenceI seq,
- SequenceGroup group)
- {
- /*
- * can't use Alignment.findOrCreateAnnotation here because we
- * want to update, rather than match on, the sequence ref
- */
- AlignmentAnnotation info = null;
-
- AlignmentI alignment = alignViewport.getAlignment();
- AlignmentAnnotation[] anns = alignment.getAlignmentAnnotation();
- if (anns != null)
- {
- for (AlignmentAnnotation ann : anns)
- {
- if (HMM_CALC_ID.equals(ann.getCalcId()) && group == ann.groupRef)
- {
- info = ann;
- info.setSequenceRef(seq);
- info.label = seq.getName(); // in case group name changed!
- break;
- }
- }
- }
-
- if (info == null)
- {
- int aWidth = alignment.getWidth();
- String desc = MessageManager
- .getString("label.information_description");
- float graphMax = 6.52f; // todo where does this value derive from?
- info = new AlignmentAnnotation(seq.getName(), desc,
- new Annotation[aWidth], 0f, graphMax,
- AlignmentAnnotation.BAR_GRAPH);
- info.setCalcId(HMM_CALC_ID);
- info.setSequenceRef(seq);
- info.groupRef = group;
- info.hasText = true;
- alignment.addAnnotation(info);
- }
-
- return info;
- }
-}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws;
-
-import jalview.bin.Cache;
-import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.DBRefSource;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignFrame;
-import jalview.gui.Desktop;
-import jalview.gui.FeatureSettings;
-import jalview.gui.JvOptionPane;
-import jalview.util.DBRefUtils;
-import jalview.util.MessageManager;
-import jalview.util.UrlLink;
-import jalview.ws.dbsources.das.api.DasSourceRegistryI;
-import jalview.ws.dbsources.das.api.jalviewSourceI;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.biodas.jdas.client.FeaturesClient;
-import org.biodas.jdas.client.adapters.features.DasGFFAdapter;
-import org.biodas.jdas.client.adapters.features.DasGFFAdapter.GFFAdapter;
-import org.biodas.jdas.client.threads.FeaturesClientMultipleSources;
-import org.biodas.jdas.schema.features.ERRORSEGMENT;
-import org.biodas.jdas.schema.features.FEATURE;
-import org.biodas.jdas.schema.features.LINK;
-import org.biodas.jdas.schema.features.SEGMENT;
-import org.biodas.jdas.schema.features.TYPE;
-import org.biodas.jdas.schema.features.UNKNOWNFEATURE;
-import org.biodas.jdas.schema.features.UNKNOWNSEGMENT;
-import org.biodas.jdas.schema.sources.COORDINATES;
-
-/**
- * DOCUMENT ME!
- *
- * @author $author$
- * @version $Revision$
- */
-public class DasSequenceFeatureFetcher
-{
- SequenceI[] sequences;
-
- AlignFrame af;
-
- FeatureSettings fsettings;
-
- StringBuffer sbuffer = new StringBuffer();
-
- List<jalviewSourceI> selectedSources;
-
- boolean cancelled = false;
-
- private void debug(String mesg)
- {
- debug(mesg, null);
- }
-
- private void debug(String mesg, Exception e)
- {
- if (Cache.log != null)
- {
- Cache.log.debug(mesg, e);
- }
- else
- {
- System.err.println(mesg);
- if (e != null)
- {
- e.printStackTrace();
- }
- }
- }
-
- long startTime;
-
- private DasSourceRegistryI sourceRegistry;
-
- private boolean useJDASMultiThread = true;
-
- /**
- * Creates a new SequenceFeatureFetcher object. Uses default
- *
- * @param align
- * DOCUMENT ME!
- * @param ap
- * DOCUMENT ME!
- */
- public DasSequenceFeatureFetcher(SequenceI[] sequences,
- FeatureSettings fsettings, Vector selectedSources)
- {
- this(sequences, fsettings, selectedSources, true, true, true);
- }
-
- public DasSequenceFeatureFetcher(SequenceI[] oursequences,
- FeatureSettings fsettings, List<jalviewSourceI> selectedSources2,
- boolean checkDbrefs, boolean promptFetchDbrefs)
- {
- this(oursequences, fsettings, selectedSources2, checkDbrefs,
- promptFetchDbrefs, true);
- }
-
- public DasSequenceFeatureFetcher(SequenceI[] oursequences,
- FeatureSettings fsettings, List<jalviewSourceI> selectedSources2,
- boolean checkDbrefs, boolean promptFetchDbrefs,
- boolean useJDasMultiThread)
- {
- this.useJDASMultiThread = useJDasMultiThread;
- this.selectedSources = new ArrayList<>();
- // filter both sequences and sources to eliminate duplicates
- for (jalviewSourceI src : selectedSources2)
- {
- if (!selectedSources.contains(src))
- {
- selectedSources.add(src);
- }
- ;
- }
- Vector sqs = new Vector();
- for (int i = 0; i < oursequences.length; i++)
- {
- if (!sqs.contains(oursequences[i]))
- {
- sqs.addElement(oursequences[i]);
- }
- }
- sequences = new SequenceI[sqs.size()];
- for (int i = 0; i < sequences.length; i++)
- {
- sequences[i] = (SequenceI) sqs.elementAt(i);
- }
- if (fsettings != null)
- {
- this.fsettings = fsettings;
- this.af = fsettings.af;
- af.setShowSeqFeatures(true);
- }
- int uniprotCount = 0;
- for (jalviewSourceI source : selectedSources)
- {
- for (COORDINATES coords : source.getVersion().getCOORDINATES())
- {
- // TODO: match UniProt coord system canonically (?) - does
- // UniProt==uniprot==UNIPROT ?
- if (coords.getAuthority().toLowerCase().equals("uniprot"))
- {
- uniprotCount++;
- break;
- }
- }
- }
-
- int refCount = 0;
- for (int i = 0; i < sequences.length; i++)
- {
- DBRefEntry[] dbref = sequences[i].getDBRefs();
- if (dbref != null)
- {
- for (int j = 0; j < dbref.length; j++)
- {
- if (dbref[j].getSource().equals(DBRefSource.UNIPROT))
- {
- refCount++;
- break;
- }
- }
- }
- }
-
- if (checkDbrefs && refCount < sequences.length && uniprotCount > 0)
- {
-
- int reply = JvOptionPane.YES_OPTION;
- if (promptFetchDbrefs)
- {
- reply = JvOptionPane.showInternalConfirmDialog(Desktop.desktop,
- MessageManager.getString(
- "info.you_want_jalview_to_find_uniprot_accessions"),
- MessageManager
- .getString("label.find_uniprot_accession_ids"),
- JvOptionPane.YES_NO_OPTION, JvOptionPane.QUESTION_MESSAGE);
- }
-
- if (reply == JvOptionPane.YES_OPTION)
- {
- Thread thread = new Thread(new FetchDBRefs());
- thread.start();
- }
- else
- {
- _startFetching();
- }
- }
- else
- {
- _startFetching();
- }
-
- }
-
- private void _startFetching()
- {
- running = true;
- new Thread(new FetchSeqFeatures()).start();
- }
-
- class FetchSeqFeatures implements Runnable
- {
- @Override
- public void run()
- {
- startFetching();
- setGuiFetchComplete();
- }
- }
-
- class FetchDBRefs implements Runnable
- {
- @Override
- public void run()
- {
- running = true;
- boolean isNucleotide = af.getViewport().getAlignment().isNucleotide();
- new DBRefFetcher(sequences, af, null, af.featureSettings,
- isNucleotide).fetchDBRefs(true);
-
- startFetching();
- setGuiFetchComplete();
- }
- }
-
- /**
- * Spawns Fetcher threads to add features to sequences in the dataset
- */
- void startFetching()
- {
- running = true;
- cancelled = false;
- startTime = System.currentTimeMillis();
- if (af != null)
- {
- af.setProgressBar(MessageManager.getString(
- "status.fetching_das_sequence_features"), startTime);
- }
- if (sourceRegistry == null)
- {
- sourceRegistry = Cache.getDasSourceRegistry();
- }
- if (selectedSources == null || selectedSources.size() == 0)
- {
- try
- {
- jalviewSourceI[] sources = sourceRegistry.getSources()
- .toArray(new jalviewSourceI[0]);
- String active = Cache.getDefault("DAS_ACTIVE_SOURCE", "uniprot");
- StringTokenizer st = new StringTokenizer(active, "\t");
- selectedSources = new Vector();
- String token;
- while (st.hasMoreTokens())
- {
- token = st.nextToken();
- for (int i = 0; i < sources.length; i++)
- {
- if (sources[i].getTitle().equals(token))
- {
- selectedSources.add(sources[i]);
- break;
- }
- }
- }
- } catch (Exception ex)
- {
- debug("Exception whilst setting default feature sources from registry and local preferences.",
- ex);
- }
- }
-
- if (selectedSources == null || selectedSources.size() == 0)
- {
- System.out.println("No DAS Sources active");
- cancelled = true;
- setGuiNoDassourceActive();
- return;
- }
-
- sourcesRemaining = selectedSources.size();
- FeaturesClientMultipleSources fc = new FeaturesClientMultipleSources();
- fc.setConnProps(sourceRegistry.getSessionHandler());
- // Now sending requests one at a time to each server
- ArrayList<jalviewSourceI> srcobj = new ArrayList<>();
- ArrayList<String> src = new ArrayList<>();
- List<List<String>> ids = new ArrayList<>();
- List<List<DBRefEntry>> idobj = new ArrayList<>();
- List<Map<String, SequenceI>> sqset = new ArrayList<>();
- for (jalviewSourceI _sr : selectedSources)
- {
-
- Map<String, SequenceI> slist = new HashMap<>();
- List<DBRefEntry> idob = new ArrayList<>();
- List<String> qset = new ArrayList<>();
-
- for (SequenceI seq : sequences)
- {
- Object[] idset = nextSequence(_sr, seq);
- if (idset != null)
- {
- List<DBRefEntry> _idob = (List<DBRefEntry>) idset[0];
- List<String> _qset = (List<String>) idset[1];
- if (_idob.size() > 0)
- {
- // add sequence's ref for each id derived from it
- // (space inefficient, but most unambiguous)
- // could replace with hash with _qset values as keys.
- Iterator<DBRefEntry> dbobj = _idob.iterator();
- for (String q : _qset)
- {
- SequenceI osq = slist.get(q);
- DBRefEntry dr = dbobj.next();
- if (osq != null && osq != seq)
- {
- // skip - non-canonical query
- }
- else
- {
- idob.add(dr);
- qset.add(q);
- slist.put(q, seq);
- }
- }
- }
- }
- }
- if (idob.size() > 0)
- {
- srcobj.add(_sr);
- src.add(_sr.getSourceURL());
- ids.add(qset);
- idobj.add(idob);
- sqset.add(slist);
- }
- }
- Map<String, Map<List<String>, Exception>> errors = new HashMap<>();
- Map<String, Map<List<String>, DasGFFAdapter>> results = new HashMap<>();
- if (!useJDASMultiThread)
- {
- Iterator<String> sources = src.iterator();
- // iterate over each query for each source and do each one individually
- for (List<String> idl : ids)
- {
- String source = sources.next();
- FeaturesClient featuresc = new FeaturesClient(
- sourceRegistry.getSessionHandler()
- .getConnectionPropertyProviderFor(source));
- for (String id : idl)
- {
- List<String> qid = Arrays.asList(new String[] { id });
- try
- {
- DasGFFAdapter dga = featuresc.fetchData(source, qid);
- Map<List<String>, DasGFFAdapter> ers = results.get(source);
- if (ers == null)
- {
- results.put(source,
- ers = new HashMap<>());
- }
- ers.put(qid, dga);
- } catch (Exception ex)
- {
- Map<List<String>, Exception> ers = errors.get(source);
- if (ers == null)
- {
- errors.put(source,
- ers = new HashMap<>());
- }
- ers.put(qid, ex);
- }
- }
- }
- }
- else
- {
- // pass them all at once
- fc.fetchData(src, ids, false, results, errors);
- fc.shutDown();
- while (!fc.isTerminated())
- {
- try
- {
- Thread.sleep(200);
- } catch (InterruptedException x)
- {
-
- }
- }
- }
- Iterator<List<String>> idset = ids.iterator();
- Iterator<List<DBRefEntry>> idobjset = idobj.iterator();
- Iterator<Map<String, SequenceI>> seqset = sqset.iterator();
- for (jalviewSourceI source : srcobj)
- {
- processResponse(seqset.next(), source, idset.next(), idobjset.next(),
- results.get(source.getSourceURL()),
- errors.get(source.getSourceURL()));
- }
- }
-
- private void processResponse(Map<String, SequenceI> sequencemap,
- jalviewSourceI jvsource, List<String> ids, List<DBRefEntry> idobj,
- Map<List<String>, DasGFFAdapter> results,
- Map<List<String>, Exception> errors)
- {
- Set<SequenceI> sequences = new HashSet<>();
- String source = jvsource.getSourceURL();
- // process features
- DasGFFAdapter result = (results == null) ? null : results.get(ids);
- Exception error = (errors == null) ? null : errors.get(ids);
- if (result == null)
- {
- debug("das source " + source + " could not be contacted. "
- + (error == null ? "" : error.toString()));
- }
- else
- {
-
- GFFAdapter gff = result.getGFF();
- List<SEGMENT> segments = gff.getSegments();
- List<ERRORSEGMENT> errorsegs = gff.getErrorSegments();
- List<UNKNOWNFEATURE> unkfeats = gff.getUnknownFeatures();
- List<UNKNOWNSEGMENT> unksegs = gff.getUnknownSegments();
- debug("das source " + source + " returned " + gff.getTotal()
- + " responses. " + (errorsegs != null ? errorsegs.size() : 0)
- + " were incorrect segment queries, "
- + (unkfeats != null ? unkfeats.size() : 0)
- + " were unknown features "
- + (unksegs != null ? unksegs.size() : 0)
- + " were unknown segments and "
- + (segments != null ? segments.size() : 0)
- + " were segment responses.");
- Iterator<DBRefEntry> dbr = idobj.iterator();
- if (segments != null)
- {
- for (SEGMENT seg : segments)
- {
- String id = seg.getId();
- if (ids.indexOf(id) == -1)
- {
- id = id.toUpperCase();
- }
- DBRefEntry dbref = idobj.get(ids.indexOf(id));
- SequenceI sequence = sequencemap.get(id);
- boolean added = false;
- sequences.add(sequence);
-
- for (FEATURE feat : seg.getFEATURE())
- {
- // standard DAS feature-> jalview sequence feature transformation
- SequenceFeature f = newSequenceFeature(feat,
- jvsource.getTitle());
- if (!parseSeqFeature(sequence, f, feat, jvsource))
- {
- if (dbref.getMap() != null && f.getBegin() > 0
- && f.getEnd() > 0)
- {
- debug("mapping from " + f.getBegin() + " - " + f.getEnd());
- SequenceFeature vf[] = null;
-
- try
- {
- vf = dbref.getMap().locateFeature(f);
- } catch (Exception ex)
- {
- Cache.log.warn(
- "Error in 'experimental' mapping of features. Please try to reproduce and then report info to jalview-discuss@jalview.org.");
- Cache.log.warn("Mapping feature from " + f.getBegin()
- + " to " + f.getEnd() + " in dbref "
- + dbref.getAccessionId() + " in "
- + dbref.getSource());
- Cache.log.warn("using das Source " + source);
- Cache.log.warn("Exception", ex);
- }
-
- if (vf != null)
- {
- for (int v = 0; v < vf.length; v++)
- {
- debug("mapping to " + v + ": " + vf[v].getBegin()
- + " - " + vf[v].getEnd());
- sequence.addSequenceFeature(vf[v]);
- }
- }
- }
- else
- {
- sequence.addSequenceFeature(f);
- }
- }
- }
- }
- featuresAdded(sequences);
- }
- else
- {
- // System.out.println("No features found for " + seq.getName()
- // + " from: " + e.getDasSource().getNickname());
- }
- }
- }
-
- private void setGuiNoDassourceActive()
- {
-
- if (af != null)
- {
- af.setProgressBar(
- MessageManager.getString("status.no_das_sources_active"),
- startTime);
- }
- if (getFeatSettings() != null)
- {
- fsettings.noDasSourceActive();
- }
- }
-
- /**
- * Update our fsettings dialog reference if we didn't have one when we were
- * first initialised.
- *
- * @return fsettings
- */
- private FeatureSettings getFeatSettings()
- {
- if (fsettings == null)
- {
- if (af != null)
- {
- fsettings = af.featureSettings;
- }
- }
- return fsettings;
- }
-
- public void cancel()
- {
- if (af != null)
- {
- af.setProgressBar(MessageManager.getString(
- "status.das_feature_fetching_cancelled"), startTime);
- }
- cancelled = true;
- }
-
- int sourcesRemaining = 0;
-
- private boolean running = false;
-
- private void setGuiFetchComplete()
- {
- running = false;
- if (!cancelled && af != null)
- {
- // only update the progress bar if we've completed the fetch normally
- af.setProgressBar(MessageManager.getString(
- "status.das_feature_fetching_complete"), startTime);
- }
-
- if (af != null && af.featureSettings != null)
- {
- af.featureSettings.discoverAllFeatureData();
- }
-
- if (getFeatSettings() != null)
- {
- fsettings.complete();
- }
- }
-
- void featuresAdded(Set<SequenceI> seqs)
- {
- if (af == null)
- {
- // no gui to update with features.
- return;
- }
- af.getFeatureRenderer().featuresAdded();
-
- int start = af.getViewport().getRanges().getStartSeq();
- int end = af.getViewport().getRanges().getEndSeq();
- int index;
- for (index = start; index < end; index++)
- {
- for (SequenceI seq : seqs)
- {
- if (seq == af.getViewport().getAlignment().getSequenceAt(index)
- .getDatasetSequence())
- {
- af.alignPanel.paintAlignment(true, true);
- index = end;
- break;
- }
- }
- }
- }
-
- Object[] nextSequence(jalviewSourceI dasSource, SequenceI seq)
- {
- if (cancelled)
- {
- return null;
- }
- DBRefEntry[] uprefs = DBRefUtils.selectRefs(seq.getDBRefs(),
- new String[]
- {
- // jalview.datamodel.DBRefSource.PDB,
- DBRefSource.UNIPROT,
- // jalview.datamodel.DBRefSource.EMBL - not tested on any EMBL coord
- // sys sources
- });
- // TODO: minimal list of DAS queries to make by querying with untyped ID if
- // distinct from any typed IDs
-
- List<DBRefEntry> ids = new ArrayList<>();
- List<String> qstring = new ArrayList<>();
- boolean dasCoordSysFound = false;
-
- if (uprefs != null)
- {
- // do any of these ids match the source's coordinate system ?
- for (int j = 0; !dasCoordSysFound && j < uprefs.length; j++)
- {
-
- for (COORDINATES csys : dasSource.getVersion().getCOORDINATES())
- {
- if (DBRefUtils.isDasCoordinateSystem(csys.getAuthority(),
- uprefs[j]))
- {
- debug("Launched fetcher for coordinate system "
- + csys.getAuthority());
- // Will have to pass any mapping information to the fetcher
- // - the start/end for the DBRefEntry may not be the same as the
- // sequence's start/end
-
- System.out.println(
- seq.getName() + " " + (seq.getDatasetSequence() == null)
- + " " + csys.getUri());
-
- dasCoordSysFound = true; // break's out of the loop
- ids.add(uprefs[j]);
- qstring.add(uprefs[j].getAccessionId());
- }
- else
- {
- System.out.println("IGNORE " + csys.getAuthority());
- }
- }
- }
- }
-
- if (!dasCoordSysFound)
- {
- String id = null;
- // try and use the name as the sequence id
- if (seq.getName().indexOf("|") > -1)
- {
- id = seq.getName().substring(seq.getName().lastIndexOf("|") + 1);
- if (id.trim().length() < 4)
- {
- // hack - we regard a significant ID as being at least 4
- // non-whitespace characters
- id = seq.getName().substring(0, seq.getName().lastIndexOf("|"));
- if (id.indexOf("|") > -1)
- {
- id = id.substring(id.lastIndexOf("|") + 1);
- }
- }
- }
- else
- {
- id = seq.getName();
- }
- if (id != null)
- {
- DBRefEntry dbre = new DBRefEntry();
- dbre.setAccessionId(id);
- // Should try to call a general feature fetcher that
- // queries many sources with name to discover applicable ID references
- ids.add(dbre);
- qstring.add(dbre.getAccessionId());
- }
- }
-
- return new Object[] { ids, qstring };
- }
-
- /**
- * examine the given sequence feature to determine if it should actually be
- * turned into sequence annotation or database cross references rather than a
- * simple sequence feature.
- *
- * @param seq
- * the sequence to annotate
- * @param f
- * the jalview sequence feature generated from the DAS feature
- * @param map
- * the sequence feature attributes
- * @param source
- * the source that emitted the feature
- * @return true if feature was consumed as another kind of annotation.
- */
- protected boolean parseSeqFeature(SequenceI seq, SequenceFeature f,
- FEATURE feature, jalviewSourceI source)
- {
- SequenceI mseq = seq;
- while (seq.getDatasetSequence() != null)
- {
- seq = seq.getDatasetSequence();
- }
- if (f.getType() != null)
- {
- String type = f.getType();
- if (type.equalsIgnoreCase("protein_name"))
- {
- // parse name onto the alignment sequence or the dataset sequence.
- if (seq.getDescription() == null
- || seq.getDescription().trim().length() == 0)
- {
- // could look at the note series to pick out the first long name, for
- // the moment just use the whole description string
- seq.setDescription(f.getDescription());
- }
- if (mseq.getDescription() == null
- || mseq.getDescription().trim().length() == 0)
- {
- // could look at the note series to pick out the first long name, for
- // the moment just use the whole description string
- mseq.setDescription(f.getDescription());
- }
- return true;
- }
- // check if source has biosapiens or other sequence ontology label
- if (type.equalsIgnoreCase("DBXREF") || type.equalsIgnoreCase("DBREF"))
- {
- // try to parse the accession out
-
- DBRefEntry dbr = new DBRefEntry();
- dbr.setVersion(source.getTitle());
- StringTokenizer st = new StringTokenizer(f.getDescription(), ":");
- if (st.hasMoreTokens())
- {
- dbr.setSource(st.nextToken());
- }
- if (st.hasMoreTokens())
- {
- dbr.setAccessionId(st.nextToken());
- }
- seq.addDBRef(dbr);
-
- if (f.links != null && f.links.size() > 0)
- {
- // feature is also appended to enable links to be seen.
- // TODO: consider extending dbrefs to have their own links ?
- // TODO: new feature: extract dbref links from DAS servers and add the
- // URL pattern to the list of DB name associated links in the user's
- // preferences ?
- // for the moment - just fix up the existing feature so it displays
- // correctly.
- // f.setType(dbr.getSource());
- // f.setDescription();
- f.setValue("linkonly", Boolean.TRUE);
- // f.setDescription("");
- Vector newlinks = new Vector();
- Enumeration it = f.links.elements();
- while (it.hasMoreElements())
- {
- String elm;
- UrlLink urllink = new UrlLink(elm = (String) it.nextElement());
- if (urllink.isValid())
- {
- urllink.setLabel(f.getDescription());
- newlinks.addElement(urllink.toString());
- }
- else
- {
- // couldn't parse the link properly. Keep it anyway - just in
- // case.
- debug("couldn't parse link string - " + elm);
- newlinks.addElement(elm);
- }
- }
- f.links = newlinks;
- seq.addSequenceFeature(f);
- }
- return true;
- }
- }
- return false;
- }
-
- /**
- * creates a jalview sequence feature from a das feature document
- *
- * @param feat
- * @return sequence feature object created using dasfeature information
- */
- SequenceFeature newSequenceFeature(FEATURE feat, String nickname)
- {
- if (feat == null)
- {
- return null;
- }
- try
- {
- /**
- * Different qNames for a DAS Feature - are string keys to the HashMaps in
- * features "METHOD") || qName.equals("TYPE") || qName.equals("START") ||
- * qName.equals("END") || qName.equals("NOTE") || qName.equals("LINK") ||
- * qName.equals("SCORE")
- */
- String desc = new String();
- if (feat.getNOTE() != null)
- {
- for (String note : feat.getNOTE())
- {
- desc += note;
- }
- }
-
- int start = 0, end = 0;
- float score = 0f;
-
- try
- {
- start = Integer.parseInt(feat.getSTART().toString());
- } catch (Exception ex)
- {
- }
- try
- {
- end = Integer.parseInt(feat.getEND().toString());
- } catch (Exception ex)
- {
- }
- try
- {
- Object scr = feat.getSCORE();
- if (scr != null)
- {
- score = (float) Double.parseDouble(scr.toString());
-
- }
- } catch (Exception ex)
- {
- }
-
- SequenceFeature f = new SequenceFeature(getTypeString(feat.getTYPE()),
- desc, start, end, score, nickname);
-
- if (feat.getLINK() != null)
- {
- for (LINK link : feat.getLINK())
- {
- // Do not put feature extent in link text for non-positional features
- if (f.begin == 0 && f.end == 0)
- {
- f.addLink(f.getType() + " " + link.getContent() + "|"
- + link.getHref());
- }
- else
- {
- f.addLink(f.getType() + " " + f.begin + "_" + f.end + " "
- + link.getContent() + "|" + link.getHref());
- }
- }
- }
-
- return f;
- } catch (Exception e)
- {
- System.out.println("ERRR " + e);
- e.printStackTrace();
- System.out.println("############");
- debug("Failed to parse " + feat.toString(), e);
- return null;
- }
- }
-
- private String getTypeString(TYPE type)
- {
- return type.getContent();
- }
-
- public boolean isRunning()
- {
- return running;
- }
-
-}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws.dbsources.das.api;
-
-import java.util.List;
-
-import org.biodas.jdas.client.threads.MultipleConnectionPropertyProviderI;
-
-/**
- * API for a registry that provides datasources that jalview can access
- *
- * @author jprocter
- *
- */
-public interface DasSourceRegistryI
-{
-
- List<jalviewSourceI> getSources();
-
- String getDasRegistryURL();
-
- jalviewSourceI getSource(String nickname);
-
- // TODO: re JAL-424 - introduce form where local source is queried for
- // metadata, rather than have it all provided by caller.
- jalviewSourceI createLocalSource(String uri, String name,
- boolean sequence, boolean features);
-
- boolean removeLocalSource(jalviewSourceI source);
-
- void refreshSources();
-
- String getLocalSourceString();
-
- List<jalviewSourceI> resolveSourceNicknames(List<String> sources);
-
- // TODO: refactor to jDAS specific interface
- MultipleConnectionPropertyProviderI getSessionHandler();
-}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws.dbsources.das.api;
-
-import jalview.ws.seqfetcher.DbSourceProxy;
-
-import java.util.List;
-
-import org.biodas.jdas.schema.sources.MAINTAINER;
-import org.biodas.jdas.schema.sources.VERSION;
-
-public interface jalviewSourceI
-{
-
- String getTitle();
-
- VERSION getVersion();
-
- String getDocHref();
-
- String getDescription();
-
- String getUri();
-
- MAINTAINER getMAINTAINER();
-
- String getEmail();
-
- boolean isLocal();
-
- boolean isSequenceSource();
-
- String[] getCapabilityList(VERSION v);
-
- String[] getLabelsFor(VERSION v);
-
- /**
- *
- * @return null if not a sequence source, otherwise a series of database
- * sources that can be used to retrieve sequence data for particular
- * database coordinate systems
- */
- List<DbSourceProxy> getSequenceSourceProxies();
-
- boolean isFeatureSource();
-
- /**
- * returns the base URL for the latest version of a source's DAS endpoint set
- *
- * @return
- */
- String getSourceURL();
-
- /**
- * test to see if this source's latest version is older than the given source
- *
- * @param jalviewSourceI
- * @return true if newer than given source
- */
- boolean isNewerThan(jalviewSourceI jalviewSourceI);
-
- /**
- * test if the source is a reference source for the authority
- *
- * @return
- */
- boolean isReferenceSource();
-
-}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws.dbsources.das.datamodel;
-
-import jalview.bin.Cache;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceI;
-import jalview.util.MessageManager;
-import jalview.ws.dbsources.das.api.jalviewSourceI;
-import jalview.ws.seqfetcher.DbSourceProxy;
-import jalview.ws.seqfetcher.DbSourceProxyImpl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.biodas.jdas.client.SequenceClient;
-import org.biodas.jdas.client.adapters.sequence.DasSequenceAdapter;
-import org.biodas.jdas.client.threads.MultipleConnectionPropertyProviderI;
-import org.biodas.jdas.client.threads.SequenceClientMultipleSources;
-import org.biodas.jdas.schema.sequence.SEQUENCE;
-import org.biodas.jdas.schema.sources.COORDINATES;
-import org.biodas.jdas.schema.sources.SOURCE;
-import org.biodas.jdas.schema.sources.VERSION;
-
-import com.stevesoft.pat.Regex;
-
-/**
- * an instance of this class is created for each unique DAS Sequence source (ie
- * one capable of handling the 'sequence' for a particular MapMaster)
- *
- * @author JimP
- *
- */
-public class DasSequenceSource extends DbSourceProxyImpl
- implements DbSourceProxy
-{
- private jalviewSourceI jsrc;
-
- protected SOURCE source = null;
-
- protected VERSION version = null;
-
- protected COORDINATES coordsys = null;
-
- protected String dbname = "DASCS";
-
- protected String dbrefname = "das:source";
-
- protected MultipleConnectionPropertyProviderI connprops = null;
-
- /**
- * DAS sources are tier 1 - if we have a direct DB connection then we should
- * prefer it
- */
- private int tier = 1;
-
- /**
- * create a new DbSource proxy for a DAS 1 source
- *
- * @param dbnbame
- * Human Readable Name to use when fetching from this source
- * @param dbrefname
- * DbRefName for DbRefs attached to sequences retrieved from this
- * source
- * @param source
- * Das1Source
- * @param coordsys
- * specific coordinate system to use for this source
- * @throws Exception
- * if source is not capable of the 'sequence' command
- */
- public DasSequenceSource(String dbname, String dbrefname, SOURCE source,
- VERSION version, COORDINATES coordsys,
- MultipleConnectionPropertyProviderI connprops) throws Exception
- {
- if (!(jsrc = new JalviewSource(source, connprops, false))
- .isSequenceSource())
- {
- throw new Exception(MessageManager.formatMessage(
- "exception.das_source_doesnt_support_sequence_command",
- new String[]
- { source.getTitle() }));
- }
- this.tier = 1 + ((jsrc.isLocal() || jsrc.isReferenceSource()) ? 0 : 1);
- this.source = source;
- this.dbname = dbname;
- this.dbrefname = dbrefname.toUpperCase();
- if (coordsys != null)
- {
- this.coordsys = coordsys;
- }
- this.connprops = connprops;
- }
-
- public String getAccessionSeparator()
- {
- return "\t";
- }
-
- public Regex getAccessionValidator()
- {
- /** ? * */
- return Regex.perlCode("m/([^:]+)(:\\d+,\\d+)?/");
- }
-
- public String getDbName()
- {
- // TODO: map to
- return dbname + " (DAS)";
- }
-
- public String getDbSource()
- {
- return dbrefname;
- }
-
- public String getDbVersion()
- {
- return coordsys != null ? coordsys.getVersion() : "";
- }
-
- public AlignmentI getSequenceRecords(String queries) throws Exception
- {
- StringTokenizer st = new StringTokenizer(queries, "\t");
- List<String> toks = new ArrayList<String>(),
- src = new ArrayList<String>(), acIds = new ArrayList<String>();
- while (st.hasMoreTokens())
- {
- String t;
- toks.add(t = st.nextToken());
- acIds.add(t.replaceAll(":[0-9,]+", ""));
- }
- src.add(jsrc.getSourceURL());
- Map<String, Map<List<String>, DasSequenceAdapter>> resultset = new HashMap<String, Map<List<String>, DasSequenceAdapter>>();
- Map<String, Map<List<String>, Exception>> errors = new HashMap<String, Map<List<String>, Exception>>();
-
- // First try multiple sources
- boolean multiple = true, retry = false;
- do
- {
- if (!multiple)
- {
- retry = false;
- // slow, fetch one at a time.
- for (String sr : src)
- {
- System.err.println(
- "Retrieving IDs individually from das source: " + sr);
- org.biodas.jdas.client.SequenceClient sq = new SequenceClient(
- connprops.getConnectionPropertyProviderFor(sr));
- for (String q : toks)
- {
- List<String> qset = Arrays.asList(new String[] { q });
- try
- {
- DasSequenceAdapter s = sq.fetchData(sr, qset);
- Map<List<String>, DasSequenceAdapter> dss = resultset.get(sr);
- if (dss == null)
- {
- resultset.put(sr,
- dss = new HashMap<List<String>, DasSequenceAdapter>());
- }
- dss.put(qset, s);
- } catch (Exception x)
- {
- Map<List<String>, Exception> ers = errors.get(sr);
- if (ers == null)
- {
- errors.put(sr,
- ers = new HashMap<List<String>, Exception>());
- }
- ers.put(qset, x);
- }
- }
- }
- }
- else
- {
- SequenceClientMultipleSources sclient;
- sclient = new SequenceClientMultipleSources();
- sclient.fetchData(src, toks, resultset, errors);
- sclient.shutDown();
- while (!sclient.isTerminated())
- {
- try
- {
- Thread.sleep(200);
-
- } catch (InterruptedException x)
- {
- }
- }
- if (resultset.isEmpty() && !errors.isEmpty())
- {
- retry = true;
- multiple = false;
- }
- }
- } while (retry);
-
- if (resultset.isEmpty())
- {
- System.err.println("Sequence Query to " + jsrc.getTitle() + " with '"
- + queries + "' returned no sequences.");
- return null;
- }
- else
- {
- Vector<SequenceI> seqs = null;
- for (Map.Entry<String, Map<List<String>, DasSequenceAdapter>> resset : resultset
- .entrySet())
- {
- for (Map.Entry<List<String>, DasSequenceAdapter> result : resset
- .getValue().entrySet())
- {
- DasSequenceAdapter dasseqresp = result.getValue();
- List<String> accessions = result.getKey();
- for (SEQUENCE e : dasseqresp.getSequence())
- {
- String lbl = e.getId();
-
- if (acIds.indexOf(lbl) == -1)
- {
- System.err.println(
- "Warning - received sequence event for strange accession code ("
- + lbl + ")");
- }
- else
- {
- if (seqs == null)
- {
- if (e.getContent().length() == 0)
- {
- System.err.println(
- "Empty sequence returned for accession code ("
- + lbl + ") from " + resset.getKey()
- + " (source is " + getDbName());
- continue;
- }
- }
- seqs = new java.util.Vector<SequenceI>();
- // JDAS returns a sequence complete with any newlines and spaces
- // in the XML
- Sequence sq = new Sequence(lbl,
- e.getContent().replaceAll("\\s+", ""));
- sq.setStart(e.getStart().intValue());
- sq.addDBRef(new DBRefEntry(getDbSource(),
- getDbVersion() + ":" + e.getVersion(), lbl));
- seqs.addElement(sq);
- }
- }
- }
- }
-
- if (seqs == null || seqs.size() == 0)
- return null;
- SequenceI[] sqs = new SequenceI[seqs.size()];
- for (int i = 0, iSize = seqs.size(); i < iSize; i++)
- {
- sqs[i] = (SequenceI) seqs.elementAt(i);
- }
- Alignment al = new Alignment(sqs);
- if (jsrc.isFeatureSource())
- {
- java.util.Vector<jalviewSourceI> srcs = new java.util.Vector<jalviewSourceI>();
- srcs.addElement(jsrc);
- try
- {
- jalview.ws.DasSequenceFeatureFetcher dssf = new jalview.ws.DasSequenceFeatureFetcher(
- sqs, null, srcs, false, false, multiple);
- while (dssf.isRunning())
- {
- try
- {
- Thread.sleep(200);
- } catch (InterruptedException x)
- {
-
- }
- }
-
- } catch (Exception x)
- {
- Cache.log.error(
- "Couldn't retrieve features for sequence from its source.",
- x);
- }
- }
-
- return al;
- }
- }
-
- public String getTestQuery()
- {
- return coordsys == null ? "" : coordsys.getTestRange();
- }
-
- public boolean isValidReference(String accession)
- {
- // TODO try to validate an accession against source
- // We don't really know how to do this without querying source
-
- return true;
- }
-
- /**
- * @return the source
- */
- public SOURCE getSource()
- {
- return source;
- }
-
- /**
- * @return the coordsys
- */
- public COORDINATES getCoordsys()
- {
- return coordsys;
- }
-
- @Override
- public int getTier()
- {
- return tier;
- }
-}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws.dbsources.das.datamodel;
-
-import jalview.bin.Cache;
-import jalview.ws.dbsources.das.api.DasSourceRegistryI;
-import jalview.ws.dbsources.das.api.jalviewSourceI;
-
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.biodas.jdas.client.ConnectionPropertyProviderI;
-import org.biodas.jdas.client.SourcesClient;
-import org.biodas.jdas.client.threads.MultipleConnectionPropertyProviderI;
-import org.biodas.jdas.dassources.Capabilities;
-import org.biodas.jdas.schema.sources.CAPABILITY;
-import org.biodas.jdas.schema.sources.SOURCE;
-import org.biodas.jdas.schema.sources.SOURCES;
-import org.biodas.jdas.schema.sources.VERSION;
-
-/**
- *
- */
-public class DasSourceRegistry
- implements DasSourceRegistryI, MultipleConnectionPropertyProviderI
-{
- // private org.biodas.jdas.schema.sources.SOURCE[] dasSources = null;
- private List<jalviewSourceI> dasSources = null;
-
- private Hashtable<String, jalviewSourceI> sourceNames = null;
-
- private Hashtable<String, jalviewSourceI> localSources = null;
-
- // public static String DEFAULT_REGISTRY = "http://www.dasregistry.org/das/";
- public static String DEFAULT_REGISTRY = "http://www.ebi.ac.uk/das-srv/registry/das/";
-
- /**
- * true if thread is running and we are talking to DAS registry service
- */
- private boolean loadingDasSources = false;
-
- public boolean isLoadingDasSources()
- {
- return loadingDasSources;
- }
-
- @Override
- public String getDasRegistryURL()
- {
- String registry = jalview.bin.Cache.getDefault("DAS_REGISTRY_URL",
- DEFAULT_REGISTRY);
-
- if (registry.indexOf("/registry/das1/sources/") > -1)
- {
- jalview.bin.Cache.setProperty(jalview.bin.Cache.DAS_REGISTRY_URL,
- DEFAULT_REGISTRY);
- registry = DEFAULT_REGISTRY;
- }
- if (registry.lastIndexOf("sources.xml") == registry.length() - 11)
- {
- // no trailing sources.xml document for registry in JDAS
- jalview.bin.Cache.setProperty(jalview.bin.Cache.DAS_REGISTRY_URL,
- registry = registry.substring(0,
- registry.lastIndexOf("sources.xml")));
- }
- return registry;
- }
-
- /**
- * query the default DAS Source Registry for sources. Uses value of jalview
- * property DAS_REGISTRY_URL and the DasSourceBrowser.DEFAULT_REGISTRY if that
- * doesn't exist.
- *
- * @return list of sources
- */
- private List<jalviewSourceI> getDASSources()
- {
-
- return getDASSources(getDasRegistryURL(), this);
- }
-
- /**
- * query the given URL for DasSources.
- *
- * @param registryURL
- * return sources from registryURL
- */
- private static List<jalviewSourceI> getDASSources(String registryURL,
- MultipleConnectionPropertyProviderI registry)
- {
- try
- {
- URL url = new URL(registryURL);
- org.biodas.jdas.client.SourcesClientInterface client = new SourcesClient();
-
- SOURCES sources = client.fetchDataRegistry(registryURL, null, null,
- null, null, null, null);
-
- List<SOURCE> dassources = sources.getSOURCE();
- ArrayList<jalviewSourceI> dsrc = new ArrayList<jalviewSourceI>();
- HashMap<String, Integer> latests = new HashMap<String, Integer>();
- Integer latest;
- for (SOURCE src : dassources)
- {
- JalviewSource jsrc = new JalviewSource(src, registry, false);
- latest = latests.get(jsrc.getSourceURL());
- if (latest != null)
- {
- if (jsrc.isNewerThan(dsrc.get(latest.intValue())))
- {
- dsrc.set(latest.intValue(), jsrc);
- }
- else
- {
- System.out.println(
- "Debug: Ignored older source " + jsrc.getTitle());
- }
- }
- else
- {
- latests.put(jsrc.getSourceURL(), Integer.valueOf(dsrc.size()));
- dsrc.add(jsrc);
- }
- }
- return dsrc;
- } catch (Exception ex)
- {
- System.out.println(
- "DAS1 registry at " + registryURL + " no longer exists");
- return new ArrayList<jalviewSourceI>();
- }
- }
-
- public void run()
- {
- getSources();
- }
-
- @Override
- public List<jalviewSourceI> getSources()
- {
- if (dasSources == null)
- {
- dasSources = getDASSources();
- }
- return appendLocalSources();
- }
-
- /**
- * generate Sources from the local das source list
- *
- */
- private void addLocalDasSources()
- {
- if (localSources == null)
- {
- // get local sources from properties and initialise the local source list
- String local = jalview.bin.Cache.getProperty("DAS_LOCAL_SOURCE");
-
- if (local != null)
- {
- int n = 1;
- StringTokenizer st = new StringTokenizer(local, "\t");
- while (st.hasMoreTokens())
- {
- String token = st.nextToken();
- int bar = token.indexOf("|");
- if (bar == -1)
- {
- System.err.println(
- "Warning: DAS user local source appears to have no nickname (expected a '|' followed by nickname)\nOffending definition: '"
- + token + "'");
- }
- String url = token.substring(bar + 1);
- boolean features = true, sequence = false;
- if (url.startsWith("sequence:"))
- {
- url = url.substring(9);
- // this source also serves sequences as well as features
- sequence = true;
- }
- try
- {
- if (bar > -1)
- {
- createLocalSource(url, token.substring(0, bar), sequence,
- features);
- }
- else
- {
- createLocalSource(url, "User Source" + n, sequence, features);
- }
- } catch (Exception q)
- {
- System.err.println(
- "Unexpected exception when creating local source from '"
- + token + "'");
- q.printStackTrace();
- }
- n++;
- }
- }
- }
- }
-
- private List<jalviewSourceI> appendLocalSources()
- {
- List<jalviewSourceI> srclist = new ArrayList<jalviewSourceI>();
- addLocalDasSources();
- sourceNames = new Hashtable<String, jalviewSourceI>();
- if (dasSources != null)
- {
- for (jalviewSourceI src : dasSources)
- {
- sourceNames.put(src.getTitle(), src);
- srclist.add(src);
- }
- }
-
- if (localSources == null)
- {
- return srclist;
- }
- Enumeration en = localSources.keys();
- while (en.hasMoreElements())
- {
- String key = en.nextElement().toString();
- jalviewSourceI jvsrc = localSources.get(key);
- sourceNames.put(key, jvsrc);
- srclist.add(jvsrc);
- }
- return srclist;
- }
-
- /*
- *
- */
-
- @Override
- public jalviewSourceI createLocalSource(String url, String name,
- boolean sequence, boolean features)
- {
- SOURCE local = _createLocalSource(url, name, sequence, features);
-
- if (localSources == null)
- {
- localSources = new Hashtable<String, jalviewSourceI>();
- }
- jalviewSourceI src = new JalviewSource(local, this, true);
- localSources.put(local.getTitle(), src);
- return src;
- }
-
- private SOURCE _createLocalSource(String url, String name,
- boolean sequence, boolean features)
- {
- SOURCE local = new SOURCE();
-
- local.setUri(url);
- local.setTitle(name);
- local.setVERSION(new ArrayList<VERSION>());
- VERSION v = new VERSION();
- List<CAPABILITY> cp = new ArrayList<CAPABILITY>();
- if (sequence)
- {
- /*
- * Could try and synthesize a coordinate system for the source if needbe
- * COORDINATES coord = new COORDINATES(); coord.setAuthority("NCBI");
- * coord.setSource("Chromosome"); coord.setTaxid("9606");
- * coord.setVersion("35"); version.getCOORDINATES().add(coord);
- */
- CAPABILITY cap = new CAPABILITY();
- cap.setType("das1:" + Capabilities.SEQUENCE.getName());
- cap.setQueryUri(url + "/sequence");
- cp.add(cap);
- }
- if (features)
- {
- CAPABILITY cap = new CAPABILITY();
- cap.setType("das1:" + Capabilities.FEATURES.getName());
- cap.setQueryUri(url + "/features");
- cp.add(cap);
- }
-
- v.getCAPABILITY().addAll(cp);
- local.getVERSION().add(v);
-
- return local;
- }
-
- @Override
- public jalviewSourceI getSource(String nickname)
- {
- return sourceNames.get(nickname);
- }
-
- @Override
- public boolean removeLocalSource(jalviewSourceI source)
- {
- if (localSources.containsValue(source))
- {
- localSources.remove(source.getTitle());
- sourceNames.remove(source.getTitle());
- dasSources.remove(source);
- jalview.bin.Cache.setProperty("DAS_LOCAL_SOURCE",
- getLocalSourceString());
-
- return true;
- }
- return false;
- }
-
- @Override
- public void refreshSources()
- {
- dasSources = null;
- sourceNames = null;
- run();
- }
-
- @Override
- public List<jalviewSourceI> resolveSourceNicknames(List<String> sources)
- {
- ArrayList<jalviewSourceI> resolved = new ArrayList<jalviewSourceI>();
- if (sourceNames != null)
- {
- for (String src : sources)
- {
- jalviewSourceI dsrc = sourceNames.get(src);
- if (dsrc != null)
- {
- resolved.add(dsrc);
- }
- }
- }
- return resolved;
- }
-
- @Override
- public String getLocalSourceString()
- {
- if (localSources != null)
- {
- StringBuffer sb = new StringBuffer();
- Enumeration en = localSources.keys();
- while (en.hasMoreElements())
- {
- String token = en.nextElement().toString();
- jalviewSourceI srco = localSources.get(token);
- sb.append(token + "|" + (srco.isSequenceSource() ? "sequence:" : "")
- + srco.getUri() + "\t");
- }
- return sb.toString();
- }
- return "";
- }
-
- private static final Hashtable<URL, String> authStash;
- static
- {
- authStash = new Hashtable<URL, String>();
-
- try
- {
- // TODO: allow same credentials for https and http
- authStash.put(
- new URL("http://www.compbio.dundee.ac.uk/geneweb/das/myseq/"),
- "Basic SmltOm1pSg==");
- } catch (MalformedURLException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- @Override
- public MultipleConnectionPropertyProviderI getSessionHandler()
- {
- return this;
- }
-
- @Override
- public ConnectionPropertyProviderI getConnectionPropertyProviderFor(
- String arg0)
- {
-
- final ConnectionPropertyProviderI conprov = new ConnectionPropertyProviderI()
- {
- boolean authed = false;
-
- @Override
- public void setConnectionProperties(HttpURLConnection connection)
- {
- String auth = authStash.get(connection.getURL());
- if (auth != null && auth.length() > 0)
- {
- connection.setRequestProperty("Authorisation", auth);
- authed = true;
- }
- else
- {
- authed = false;
- }
- }
-
- @Override
- public boolean getResponseProperties(HttpURLConnection connection)
- {
- String auth = authStash.get(connection.getURL());
- if (auth != null && auth.length() == 0)
- {
- // don't attempt to check if we authed or not - user entered empty
- // password
- return false;
- }
- if (!authed)
- {
- if (auth != null)
- {
- // try and pass credentials.
- return true;
- }
- // see if we should try and create a new auth record.
- String ameth = connection.getHeaderField("X-DAS-AuthMethods");
- Cache.log.debug("Could authenticate to " + connection.getURL()
- + " with : " + ameth);
- // TODO: search auth string and raise login box - return if auth was
- // provided
- return false;
- }
- else
- {
- // check to see if auth was successful
- String asuc = connection
- .getHeaderField("X-DAS_AuthenticatedUser");
- if (asuc != null && asuc.trim().length() > 0)
- {
- // authentication was successful
- Cache.log.debug("Authenticated successfully to "
- + connection.getURL().toString());
- return false;
- }
- // it wasn't - so we should tell the user it failed and ask if they
- // want to attempt authentication again.
- authStash.remove(connection.getURL());
- // open a new login/password dialog with cancel button
- // set new authStash content with password and return true
- return true; //
- // User cancelled auth - so put empty string in stash to indicate we
- // don't want to auth with this server.
- // authStash.put(connection.getURL(), "");
- // return false;
- }
- }
- };
- return conprov;
- }
-
-}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws.dbsources.das.datamodel;
-
-import jalview.util.MessageManager;
-import jalview.ws.dbsources.das.api.jalviewSourceI;
-import jalview.ws.seqfetcher.DbSourceProxy;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
-import org.biodas.jdas.client.threads.MultipleConnectionPropertyProviderI;
-import org.biodas.jdas.dassources.Capabilities;
-import org.biodas.jdas.dassources.utils.DasTimeFormat;
-import org.biodas.jdas.schema.sources.CAPABILITY;
-import org.biodas.jdas.schema.sources.COORDINATES;
-import org.biodas.jdas.schema.sources.MAINTAINER;
-import org.biodas.jdas.schema.sources.PROP;
-import org.biodas.jdas.schema.sources.SOURCE;
-import org.biodas.jdas.schema.sources.VERSION;
-
-public class JalviewSource implements jalviewSourceI
-{
- SOURCE source;
-
- MultipleConnectionPropertyProviderI connprov;
-
- public JalviewSource(SOURCE local2,
- MultipleConnectionPropertyProviderI connprov, boolean local)
- {
- this.connprov = connprov;
- this.local = local;
- source = local2;
- }
-
- @Override
- public String getTitle()
- {
- return source.getTitle();
- }
-
- @Override
- public VERSION getVersion()
- {
-
- return getVersionFor(source);
- }
-
- @Override
- public String getDocHref()
- {
- return source.getDocHref();
- }
-
- @Override
- public String getDescription()
- {
- return source.getDescription();
- }
-
- @Override
- public String getUri()
- {
- return source.getUri();
- }
-
- @Override
- public MAINTAINER getMAINTAINER()
- {
- return source.getMAINTAINER();
- }
-
- @Override
- public String getEmail()
- {
- return (local) ? null : source.getMAINTAINER().getEmail();
- }
-
- boolean local = false;
-
- @Override
- public boolean isLocal()
- {
- return local;
- }
-
- @Override
- public boolean isSequenceSource()
- {
- String seqcap = "das1:" + Capabilities.SEQUENCE.getName();
- for (String cp : getCapabilityList(getVersionFor(source)))
- {
- if (cp.equals(seqcap))
- {
- return true;
-
- }
- }
- return false;
- }
-
- @Override
- public boolean isFeatureSource()
- {
- String seqcap = "das1:" + Capabilities.FEATURES.getName();
- for (String cp : getCapabilityList(getVersionFor(source)))
- {
- if (cp.equals(seqcap))
- {
- return true;
-
- }
- }
- return false;
- }
-
- private VERSION getVersionFor(SOURCE ds)
- {
- VERSION latest = null;
- for (VERSION v : ds.getVERSION())
- {
- if (latest == null
- || isLaterThan(latest.getCreated(), v.getCreated()))
- {
- // TODO: das 1.6 - should just get the first version - ignore other
- // versions since not specified how to construct URL from version's URI
- // + source URI
- latest = v;
- }
- }
- return latest;
- }
-
- /**
- * compare date strings. null or unparseable dates are assumed to be oldest
- *
- * @param ref
- * @param newer
- * @return true iff ref comes before newer
- */
- private boolean isLaterThan(String ref, String newer)
- {
- Date refdate = null, newdate = null;
- if (ref != null && ref.trim().length() > 0)
- {
- try
- {
- refdate = DasTimeFormat.fromDASString(ref.trim());
-
- } catch (ParseException x)
- {
- }
- }
- if (newer != null && newer.trim().length() > 0)
- {
- try
- {
- newdate = DasTimeFormat.fromDASString(newer);
- } catch (ParseException e)
- {
- }
- }
- if (refdate != null)
- {
- if (newdate != null)
- {
- return refdate.before(newdate);
- }
- return false;
- }
- if (newdate != null)
- {
- return true;
- }
- // assume first instance of source is newest in list. - TODO: check if
- // natural ordering of source versions is newest first or oldest first
- return false;
- }
-
- public String[] getLabelsFor(VERSION v)
- {
- ArrayList<String> labels = new ArrayList<String>();
- for (PROP p : v.getPROP())
- {
- if (p.getName().equalsIgnoreCase("LABEL"))
- {
- labels.add(p.getValue());
- }
- }
- return labels.toArray(new String[0]);
- }
-
- private CAPABILITY getCapability(Capabilities capability)
- {
- for (CAPABILITY p : getVersion().getCAPABILITY())
- {
- if (p.getType().equalsIgnoreCase(capability.getName()) || p.getType()
- .equalsIgnoreCase("das1:" + capability.getName()))
- {
- return p;
- }
- }
- return null;
- }
-
- public String[] getCapabilityList(VERSION v)
- {
-
- ArrayList<String> labels = new ArrayList<String>();
- for (CAPABILITY p : v.getCAPABILITY())
- {
- // TODO: work out what to do with namespace prefix
- // does SEQUENCE == das1:SEQUENCE and das2:SEQUENCE ?
- // for moment, just show all capabilities...
- if (p.getType().startsWith("das1:"))
- {
- labels.add(p.getType());
- }
- }
- return labels.toArray(new String[0]);
- }
-
- @Override
- public List<DbSourceProxy> getSequenceSourceProxies()
- {
- if (!isSequenceSource())
- {
- return null;
- }
- ArrayList<DbSourceProxy> seqsources = new ArrayList<DbSourceProxy>();
- if (!local)
- {
- VERSION v = getVersion();
- Map<String, COORDINATES> latestc = new Hashtable<String, COORDINATES>();
- for (COORDINATES cs : v.getCOORDINATES())
- {
- COORDINATES ltst = latestc.get(cs.getUri());
- if (ltst == null || ltst.getVersion() == null
- || (ltst.getVersion() != null && cs.getVersion() != null
- && isLaterThan(ltst.getVersion(), cs.getVersion())))
- {
- latestc.put(cs.getUri(), cs);
- }
- }
- for (COORDINATES cs : latestc.values())
- {
- DasSequenceSource ds;
- /*
- * if (css == null || css.length == 0) { // TODO: query das source
- * directly to identify coordinate system... or // have to make up a
- * coordinate system css = new DasCoordinateSystem[] { new
- * DasCoordinateSystem() }; css[0].setName(d1s.getNickname());
- * css[0].setUniqueId(d1s.getNickname()); } for (int c = 0; c <
- * css.length; c++) {
- */
- try
- {
- seqsources.add(ds = new DasSequenceSource(
- getTitle() + " (" + cs.getAuthority() + " "
- + cs.getSource()
- + (cs.getVersion() != null ? " " + cs.getVersion()
- : "")
- + ")",
- cs.getAuthority(), source, v, cs, connprov));
- if (seqsources.size() > 1)
- {
- System.err.println("Added another sequence DB source for "
- + getTitle() + " (" + ds.getDbName() + ")");
- }
- } catch (Exception e)
- {
- System.err.println("Ignoring sequence coord system " + cs + " ("
- + cs.getContent() + ") for source " + getTitle()
- + "- threw exception when constructing fetcher.\n");
- e.printStackTrace();
- }
- }
- }
- else
- {
- try
- {
- seqsources.add(new DasSequenceSource(getTitle(), getTitle(), source,
- getVersion(), null, connprov));
- } catch (Exception e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
- if (seqsources.size() > 1)
- {
- // sort by name
- DbSourceProxy[] tsort = seqsources.toArray(new DasSequenceSource[0]);
- String[] nm = new String[tsort.length];
- for (int i = 0; i < nm.length; i++)
- {
- nm[i] = tsort[i].getDbName().toLowerCase();
- }
- jalview.util.QuickSort.sort(nm, tsort);
- seqsources.clear();
- for (DbSourceProxy ssrc : tsort)
- {
- seqsources.add(ssrc);
- }
- }
- return seqsources;
- }
-
- @Override
- public String getSourceURL()
- {
- try
- {
- // kind of dumb, since
- // org.biodas.jdas.dassources.utils.VersionAdapter.getSourceUriFromQueryUri()
- // does this,
- // but this way, we can access non DAS 1.6 compliant sources (which have
- // to have a URL like <sourcename>/das/ and cause a validation exception)
-
- for (CAPABILITY cap : getVersion().getCAPABILITY())
- {
- String capname = cap.getType()
- .substring(cap.getType().indexOf(":") + 1);
- int p = cap.getQueryUri().lastIndexOf(capname);
- if (p < -1)
- {
- throw new Exception(MessageManager.formatMessage(
- "exception.invalid_das_source", new String[]
- { source.getUri() }));
- }
- if (cap.getQueryUri().charAt(p) == '/')
- {
- p--;
- }
- return cap.getQueryUri().substring(0, p);
- }
- } catch (Exception x)
- {
- System.err.println("Serious: Couldn't get the URL for source "
- + source.getTitle());
- x.printStackTrace();
- }
- return null;
- }
-
- @Override
- public boolean isNewerThan(jalviewSourceI other)
- {
- return isLaterThan(getVersion().getCreated(),
- other.getVersion().getCreated());
- }
-
- @Override
- public boolean isReferenceSource()
- {
- // TODO check source object for indication that we are the primary for a DAS
- // coordinate system
- return false;
- }
-}
+++ /dev/null
-package jalview.ws.params.simple;
-
-import jalview.ws.params.ParameterI;
-import jalview.ws.params.ValueConstrainI;
-
-/**
- *
- * @author TZVanaalten
- *
- */
-public class DoubleParameter extends Option implements ParameterI
-{
- double defval;
-
- double min;
-
- double max;
-
- @Override
- public ValueConstrainI getValidValue()
- {
- return new ValueConstrainI()
- {
- @Override
- public ValueType getType()
- {
- return ValueType.Double;
- }
-
- @Override
- public Number getMin()
- {
- return min < max ? min : null;
- }
-
- @Override
- public Number getMax()
- {
- return min < max ? max : null;
- }
- };
- }
-
- public DoubleParameter(DoubleParameter parm)
- {
- super(parm);
- max = parm.max;
- min = parm.min;
- }
-
- public DoubleParameter(String name, String description, boolean required,
- Double defValue, double min, double max)
- {
- super(name, description, required, String.valueOf(defValue), null, null,
- null);
- defval = defValue;
- this.min = min;
- this.max = max;
- }
-
- public DoubleParameter(String name, String description, boolean required,
- Double defValue, Double value, double min, double max)
- {
- super(name, description, required, String.valueOf(defValue),
- String.valueOf(value), null, null);
- defval = defValue;
- this.min = min;
- this.max = max;
- }
-
- @Override
- public DoubleParameter copy()
- {
- return new DoubleParameter(this);
- }
-}
+++ /dev/null
-package jalview.ws.params.simple;
-
-import jalview.ws.params.ValueConstrainI;
-
-/**
- * A class that represents a file parameter. User entry options should include
- * direct input of a file path as text, or file selection using a file browser.
- *
- * @author gmcarstairs
- *
- */
-public class FileParameter extends StringParameter
-{
-
- public FileParameter(String name, String description, boolean required,
- String defValue, String value)
- {
- super(name, description, required, defValue, value);
- }
-
- @Override
- public ValueConstrainI getValidValue()
- {
- return new ValueConstrainI()
- {
-
- @Override
- public ValueType getType()
- {
- return ValueType.File;
- }
-
- @Override
- public Number getMax()
- {
- return null;
- }
-
- @Override
- public Number getMin()
- {
- return null;
- }
- };
- }
-
-}
+++ /dev/null
-package jalview.ws.params.simple;
-
-import jalview.ws.params.ParameterI;
-import jalview.ws.params.ValueConstrainI;
-
-/**
- * A model for a numeric-valued parameter which should be displayed using a
- * logarithmic scale
- *
- * @author TZVanaalten
- */
-public class LogarithmicParameter extends Option implements ParameterI
-{
- final double defval;
-
- final double min;
-
- final double max;
-
- @Override
- public ValueConstrainI getValidValue()
- {
- return new ValueConstrainI()
- {
-
- @Override
- public ValueType getType()
- {
- return ValueType.Double;
- }
-
- @Override
- public Number getMin()
- {
- return min < max ? min : null;
- }
-
- @Override
- public Number getMax()
- {
- return min < max ? max : null;
- }
- };
- }
-
- public LogarithmicParameter(LogarithmicParameter parm)
- {
- super(parm);
- max = parm.max;
- min = parm.min;
- defval = 0D;
- }
-
- public LogarithmicParameter(String name, String description,
- boolean required, Double defValue, double min, double max)
- {
- super(name, description, required, String.valueOf(defValue), null, null,
- null);
- defval = defValue;
- this.min = min;
- this.max = max;
- }
-
- public LogarithmicParameter(String name, String description,
- boolean required, Double defValue, double value, double min,
- double max)
- {
- super(name, description, required, String.valueOf(defValue),
- String.valueOf(value), null, null);
- defval = defValue;
- this.min = min;
- this.max = max;
- }
-
- @Override
- public LogarithmicParameter copy()
- {
- return new LogarithmicParameter(this);
- }
-}
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws.params.simple;
-
-import java.util.List;
-
-/**
- * A parameter with a choice of possible options, preferred to be rendered as
- * radio buttons if possible
- */
-public class RadioChoiceParameter extends StringParameter
-{
-
- /**
- * Constructor
- *
- * @param name
- * @param description
- * @param options
- * @param def
- */
- public RadioChoiceParameter(String name, String description,
- List<String> options, String def)
- {
- super(name, description, true, def, def, options, null);
- }
-}
+++ /dev/null
-package jalview.ws.params.simple;
-
-import jalview.ws.params.ParameterI;
-import jalview.ws.params.ValueConstrainI;
-
-import java.util.List;
-
-public class StringParameter extends Option implements ParameterI
-{
- @Override
- public ValueConstrainI getValidValue()
- {
- return new StringValueConstrain();
- }
-
- @Override
- public ParameterI copy()
- {
- return new StringParameter(this);
- }
-
- private class StringValueConstrain implements ValueConstrainI
- {
-
- @Override
- public ValueType getType()
- {
- return ValueType.String;
- }
-
- @Override
- public Number getMax()
- {
- return null;
- }
-
- @Override
- public Number getMin()
- {
- return null;
- }
-
- }
-
- public StringParameter(StringParameter parm)
- {
- this.name = parm.name;
- this.defvalue = parm.defvalue;
- this.possibleVals = parm.possibleVals;
- this.displayVals = parm.displayVals;
- }
-
- public StringParameter(String name, String description, boolean required,
- String defValue)
- {
- super(name, description, required, String.valueOf(defValue), null, null,
- null);
- this.defvalue = defValue;
- }
-
- public StringParameter(String name, String description, boolean required,
- String defValue, String value)
- {
- super(name, description, required, String.valueOf(defValue),
- String.valueOf(value), null, null);
- this.defvalue = defValue;
- }
-
- /**
- * Constructor for a parameter with a list of possible values and (optionally)
- * corresponding display names
- *
- * @param name2
- * @param description2
- * @param isrequired
- * @param defValue
- * @param value
- * @param possibleVals
- * @param displayNames
- */
- public StringParameter(String name2, String description2,
- boolean isrequired, String defValue, String value,
- List<String> possibleVals, List<String> displayNames)
- {
- super(name2, description2, isrequired, defValue, value, possibleVals,
- displayNames, null);
- }
-}
+++ /dev/null
-package jalview.datamodel;
-
-import static org.testng.Assert.assertEquals;
-
-import jalview.io.DataSourceType;
-import jalview.io.FileParse;
-import jalview.io.HMMFile;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class HMMNodeTest
-{
- private HiddenMarkovModel hmm;
-
- @BeforeClass(alwaysRun = true)
- public void setUp() throws MalformedURLException, IOException
- {
- /*
- * load hmm model of a Kinase domain to a HiddenMarkovModel
- */
- HMMFile file = new HMMFile(new FileParse(
- "test/jalview/io/test_PKinase_hmm.txt", DataSourceType.FILE));
- hmm = file.getHMM();
- }
-
- @Test(groups="Functional")
- public void testGetMaxMatchEmissionIdex()
- {
- assertEquals(hmm.getAlphabetType(), "amino");
- String symbols = hmm.getSymbols();
-
- assertEquals(hmm.getNode(1).getMaxMatchEmissionIndex(),
- symbols.indexOf('Y'));
-
- assertEquals(hmm.getNode(17).getMaxMatchEmissionIndex(),
- symbols.indexOf('K'));
- }
-}
+++ /dev/null
-package jalview.datamodel;
-
-import static org.testng.Assert.assertEquals;
-
-import jalview.io.DataSourceType;
-import jalview.io.FileParse;
-import jalview.io.HMMFile;
-import jalview.schemes.ResidueProperties;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class HiddenMarkovModelTest {
-
- HiddenMarkovModel hmm;
-
- @BeforeClass(alwaysRun = true)
- public void setUp() throws MalformedURLException, IOException
- {
- /*
- * load hmm model of a Kinase domain to a HiddenMarkovModel
- */
- HMMFile file = new HMMFile(new FileParse(
- "test/jalview/io/test_PKinase_hmm.txt", DataSourceType.FILE));
- hmm = file.getHMM();
- }
-
- @Test(groups = "Functional")
- public void testGetMatchEmissionProbabilities()
- throws MalformedURLException, IOException
- {
- /*
- * raw value in file is 3.67403
- * saved as probability e^-X = 0.05259
- */
- double mep = hmm.getMatchEmissionProbability(0, 'R');
- assertEquals(mep, 0.02537400637, 0.0001d);
- assertEquals(mep, Math.pow(Math.E, -3.67403), 0.0001d);
-
- mep = hmm.getMatchEmissionProbability(19, 'W');
- assertEquals(mep, 0.00588228492, 0.0001d);
- assertEquals(mep, Math.pow(Math.E, -5.13581), 0.0001d);
-
- // column 160 is a gapped region of the model
- mep = hmm.getMatchEmissionProbability(160, 'G');
- assertEquals(mep, 0D, 0.0001d);
-
- mep = hmm.getMatchEmissionProbability(475, 'A');
- assertEquals(mep, 0.04995163708, 0.0001d);
- assertEquals(mep, Math.pow(Math.E, -2.99670), 0.0001d);
- }
-
- @Test(groups = "Functional")
- public void testGetInsertEmissionProbabilities()
- {
- double iep = hmm.getInsertEmissionProbability(2, 'A');
- assertEquals(iep, Math.pow(Math.E, -2.68618), 0.0001d);
- // symbol is not case-sensitive
- assertEquals(iep, hmm.getInsertEmissionProbability(2, 'a'));
-
- iep = hmm.getInsertEmissionProbability(5, 'T');
- assertEquals(iep, Math.pow(Math.E, -2.77519), 0.0001d);
-
- // column 161 is gapped in the hmm
- iep = hmm.getInsertEmissionProbability(161, 'K');
- assertEquals(iep, 0D, 0.0001d);
-
- iep = hmm.getInsertEmissionProbability(472, 'L');
- assertEquals(iep, Math.pow(Math.E, -2.69355), 0.0001d);
- }
-
- @Test(groups = "Functional")
- public void testGetStateTransitionProbabilities()
- {
- // * in model file treated as negative infinity
- double stp = hmm.getStateTransitionProbability(475,
- HiddenMarkovModel.MATCHTODELETE);
- assertEquals(stp, Double.NEGATIVE_INFINITY);
-
- // file value is 5.01631, saved as e^-5.01631
- stp = hmm.getStateTransitionProbability(8,
- HiddenMarkovModel.MATCHTOINSERT);
- assertEquals(stp, Math.pow(Math.E, -5.01631), 0.0001D);
-
- stp = hmm.getStateTransitionProbability(36,
- HiddenMarkovModel.MATCHTODELETE);
- assertEquals(stp, Math.pow(Math.E, -5.73865), 0.0001D);
-
- stp = hmm.getStateTransitionProbability(22,
- HiddenMarkovModel.INSERTTOMATCH);
- assertEquals(stp, Math.pow(Math.E, -0.61958), 0.0001D);
-
- stp = hmm.getStateTransitionProbability(80,
- HiddenMarkovModel.INSERTTOINSERT);
- assertEquals(stp, Math.pow(Math.E, -0.77255), 0.0001D);
-
- stp = hmm.getStateTransitionProbability(475,
- HiddenMarkovModel.DELETETOMATCH);
- assertEquals(stp, 1D, 0.0001D);
-
- stp = hmm.getStateTransitionProbability(218,
- HiddenMarkovModel.DELETETODELETE);
- assertEquals(stp, Math.pow(Math.E, -0.95510), 0.0001D);
- }
-
- @Test(groups = "Functional")
- public void testGetConsensusSequence()
- {
- SequenceI seq = hmm.getConsensusSequence();
- String subStr = seq.getSequenceAsString().substring(0, 10);
- assertEquals(subStr, "yelleklGsG");
- subStr = seq.getSequenceAsString().substring(150, 161);
- assertEquals(subStr, "-dllk------");
- }
-
- /**
- * A rather pointless test that reproduces the code implemented and asserts
- * the result is the same...
- */
- @Test(groups = "Functional")
- public void testGetInformationContent()
- {
- /*
- * information measure is sum over all symbols of
- * emissionProb * log(emissionProb / background) / log(2)
- */
- Map<Character, Float> uniprotFreqs = ResidueProperties.backgroundFrequencies
- .get("amino");
- int col = 4;
- float expected = 0f;
- for (char aa : hmm.getSymbols().toCharArray())
- {
- double mep = hmm.getMatchEmissionProbability(col, aa);
- float background = uniprotFreqs.get(aa);
- expected += mep * Math.log(mep / background);
- }
- expected /= Math.log(2D);
-
- float actual = hmm.getInformationContent(col);
- assertEquals(actual, expected, 0.0001d);
- }
-}
+++ /dev/null
-package jalview.hmmer;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import jalview.bin.Jalview;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignFrame;
-import jalview.gui.Desktop;
-import jalview.io.HMMFile;
-import jalview.util.MessageManager;
-import jalview.ws.params.ArgumentI;
-import jalview.ws.params.simple.Option;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class HMMERTest {
-
- AlignFrame frame;
-
- @BeforeClass(alwaysRun = true)
- public void setUpBeforeClass() throws Exception
- {
- /*
- * NB: check HMMER_PATH in testProps.jvprops is valid for
- * the machine on which this runs
- */
- Jalview.main(
- new String[]
- { "-noquestionnaire", "-nonews", "-props",
- "test/jalview/hmmer/testProps.jvprops", "-open",
- "examples/uniref50.fa" });
- frame = Desktop.getAlignFrames()[0];
- }
-
- @AfterClass(alwaysRun = true)
- public static void tearDownAfterClass() throws Exception
- {
- Desktop.instance.closeAll_actionPerformed(null);
- }
-
- /**
- * Test with a dependency on locally installed hmmbuild binaries
- *
- * @throws MalformedURLException
- * @throws IOException
- */
- @Test(groups = "External")
- public void testHMMBuildThenHMMAlign()
- throws MalformedURLException, IOException
- {
- /*
- * run hmmbuild
- */
- testHMMBuild();
- List<SequenceI> hmms = frame.getViewport().getAlignment()
- .getHmmSequences();
- assertFalse(hmms.isEmpty());
-
- /*
- * now run hmmalign - by default with respect to the added HMM profile
- */
- testHMMAlign();
- }
-
- public void testHMMBuild()
- {
- /*
- * set up argument to run hmmbuild for the alignment
- */
- ArrayList<ArgumentI> params = new ArrayList<>();
- String argName = MessageManager.getString("label.hmmbuild_for");
- String argValue = MessageManager.getString("label.alignment");
- params.add(
- new Option(argName, null, false, null, argValue, null, null));
-
- HMMBuild builder = new HMMBuild(frame, params);
- builder.run();
-
- SequenceI seq = frame.getViewport().getAlignment().getSequenceAt(0);
- HiddenMarkovModel hmm = seq.getHMM();
- assertNotNull(hmm);
-
- assertEquals(hmm.getLength(), 148);
- assertEquals(hmm.getAlphabetType(), "amino");
- assertEquals(hmm.getName(), "Alignment_HMM");
- assertEquals(hmm.getProperty(HMMFile.EFF_NUMBER_OF_SEQUENCES),
- "0.648193");
- }
-
- public void testHMMAlign()
- {
- HmmerCommand thread = new HMMAlign(frame,
- new ArrayList<ArgumentI>());
- thread.run();
-
- AlignFrame[] alignFrames = Desktop.getAlignFrames();
- if (alignFrames == null)
- {
- fail("No align frame loaded");
- }
-
- /*
- * now have the original align frame, and another for realigned sequences
- */
- assertEquals(alignFrames.length, 2);
- AlignmentI original = alignFrames[0].getViewport().getAlignment();
- assertNotNull(original);
- AlignmentI realigned = alignFrames[1].getViewport().getAlignment();
- assertNotNull(realigned);
- assertFalse(original.getHmmSequences().isEmpty());
- assertFalse(realigned.getHmmSequences().isEmpty());
-
- SequenceI ferCapan = original.findName("FER_CAPAN");
- assertTrue(ferCapan.getSequenceAsString().startsWith("MA------SVSAT"));
-
- SequenceI ferCapanRealigned = realigned.findName("FER_CAPAN");
- assertTrue(ferCapanRealigned.getSequenceAsString()
- .startsWith("-------m-A----SVSAT"));
- }
-}
-
+++ /dev/null
-#---JalviewX Properties File---
-#Fri Apr 25 09:54:25 BST 2014
-SCREEN_Y=768
-SCREEN_X=936
-SHOW_WSDISCOVERY_ERRORS=true
-LATEST_VERSION=2.8.0b1
-SHOW_CONSERVATION=true
-JALVIEW_RSS_WINDOW_SCREEN_WIDTH=550
-JAVA_CONSOLE_SCREEN_WIDTH=450
-LAST_DIRECTORY=/Volumes/Data/Users/jimp/Documents/testing/Jalview/examples
-ID_ITALICS=true
-SORT_ALIGNMENT=No sort
-SHOW_IDENTITY=true
-WSMENU_BYHOST=false
-SEQUENCE_LINKS=EMBL-EBI Search|http\://www.ebi.ac.uk/ebisearch/search.ebi?db\=allebi&query\=$SEQUENCE_ID$
-SHOW_FULLSCREEN=false
-RECENT_URL=http\://www.jalview.org/examples/exampleFile_2_7.jar
-FONT_NAME=SansSerif
-BLC_JVSUFFIX=true
-VERSION_CHECK=false
-YEAR=2011
-SHOW_DBREFS_TOOLTIP=true
-MSF_JVSUFFIX=true
-SCREENGEOMETRY_HEIGHT=1600
-JAVA_CONSOLE_SCREEN_Y=475
-JAVA_CONSOLE_SCREEN_X=830
-PFAM_JVSUFFIX=true
-PIR_JVSUFFIX=true
-STARTUP_FILE=http\://www.jalview.org/examples/exampleFile_2_3.jar
-JAVA_CONSOLE_SCREEN_HEIGHT=162
-PIR_MODELLER=false
-GAP_SYMBOL=-
-SHOW_QUALITY=true
-SHOW_OCCUPANCY=true
-SHOW_GROUP_CONSERVATION=false
-SHOW_JWS2_SERVICES=true
-SHOW_NPFEATS_TOOLTIP=true
-FONT_STYLE=plain
-ANTI_ALIAS=false
-SORT_BY_TREE=false
-RSBS_SERVICES=|Multi-Harmony|Analysis|Sequence Harmony and Multi-Relief (Brandt et al. 2010)|hseparable,gapCharacter\='-',returns\='ANNOTATION'|?tool\=jalview|http\://zeus.few.vu.nl/programs/shmrwww/index.php?tool\=jalview&groups\=$PARTITION\:min\='2',minsize\='2',sep\=' '$&ali_file\=$ALIGNMENT\:format\='FASTA',writeasfile$
-AUTHORFNAMES=Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton
-JALVIEW_RSS_WINDOW_SCREEN_HEIGHT=328
-SHOW_GROUP_CONSENSUS=false
-SHOW_CONSENSUS_HISTOGRAM=true
-SHOW_OVERVIEW=false
-AUTHORS=J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
-FIGURE_AUTOIDWIDTH=false
-SCREEN_WIDTH=900
-ANNOTATIONCOLOUR_MIN=ffc800
-SHOW_STARTUP_FILE=false
-RECENT_FILE=examples/uniref50.fa\t/Volumes/Data/Users/jimp/Documents/testing/Jalview/examples/RF00031_folded.stk\t/Volumes/Data/Users/jimp/bs_ig_mult.out
-DEFAULT_FILE_FORMAT=FASTA
-SHOW_JAVA_CONSOLE=false
-VERSION=2.8b1
-FIGURE_USERIDWIDTH=
-WSMENU_BYTYPE=false
-DEFAULT_COLOUR=None
-NOQUESTIONNAIRES=true
-JALVIEW_NEWS_RSS_LASTMODIFIED=Apr 23, 2014 2\:53\:26 PM
-BUILD_DATE=01 November 2013
-PILEUP_JVSUFFIX=true
-SHOW_CONSENSUS_LOGO=false
-SCREENGEOMETRY_WIDTH=2560
-SHOW_ANNOTATIONS=true
-JALVIEW_RSS_WINDOW_SCREEN_Y=0
-USAGESTATS=false
-JALVIEW_RSS_WINDOW_SCREEN_X=0
-SHOW_UNCONSERVED=false
-SHOW_JVSUFFIX=true
-DAS_LOCAL_SOURCE=
-SCREEN_HEIGHT=650
-ANNOTATIONCOLOUR_MAX=ff0000
-AUTO_CALC_CONSENSUS=true
-FASTA_JVSUFFIX=true
-DAS_ACTIVE_SOURCE=uniprot\t
-JWS2HOSTURLS=http\://www.compbio.dundee.ac.uk/jabaws
-PAD_GAPS=false
-CLUSTAL_JVSUFFIX=true
-SHOW_ENFIN_SERVICES=true
-FONT_SIZE=10
-RIGHT_ALIGN_IDS=false
-USE_PROXY=false
-WRAP_ALIGNMENT=false
-#DAS_REGISTRY_URL=http\://www.dasregistry.org/das/ # retired 01/05/2015
-DAS_REGISTRY_URL=http\://www.ebi.ac.uk/das-srv/registry/das/
-logs.Jalview.level=DEBUG
-HMMER_PATH=/Users/gmcarstairs/software/hmmer-3.1b2-macosx-intel/binaries
+++ /dev/null
-package jalview.io;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import jalview.datamodel.HMMNode;
-import jalview.datamodel.HiddenMarkovModel;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Scanner;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import junit.extensions.PA;
-
-public class HMMFileTest {
-
- HMMFile fn3;
-
- HMMFile pKinase;
-
- HMMFile made1;
-
- @BeforeClass(alwaysRun = true)
- public void setUp() throws IOException
- {
- fn3 = new HMMFile("test/jalview/io/test_fn3_hmm.txt",
- DataSourceType.FILE);
-
- pKinase = new HMMFile("test/jalview/io/test_PKinase_hmm.txt",
- DataSourceType.FILE);
-
- made1 = new HMMFile("test/jalview/io/test_MADE1_hmm.txt",
- DataSourceType.FILE);
- }
-
- @Test(groups = "Functional")
- public void testParse() throws IOException
- {
- HiddenMarkovModel hmm = pKinase.getHMM();
- assertEquals(hmm.getName(), "Pkinase");
- assertEquals(hmm.getProperty(HMMFile.ACCESSION_NUMBER), "PF00069.17");
- assertEquals(hmm.getProperty(HMMFile.DESCRIPTION),
- "Protein kinase domain");
- assertEquals(hmm.getLength(), 260);
- assertNull(hmm.getProperty(HMMFile.MAX_LENGTH));
- assertEquals(hmm.getAlphabetType(), "amino");
- assertFalse(hmm.getBooleanProperty(HMMFile.REFERENCE_ANNOTATION));
- assertFalse(hmm.getBooleanProperty(HMMFile.MASKED_VALUE));
- assertTrue(hmm.getBooleanProperty(HMMFile.CONSENSUS_RESIDUE));
- assertTrue(hmm.getBooleanProperty(HMMFile.CONSENSUS_STRUCTURE));
- assertTrue(hmm.getBooleanProperty(HMMFile.MAP));
- assertEquals(hmm.getProperty(HMMFile.DATE), "Thu Jun 16 11:44:06 2011");
- assertNull(hmm.getProperty(HMMFile.COMMAND_LOG));
- assertEquals(hmm.getProperty(HMMFile.NUMBER_OF_SEQUENCES), "54");
- assertEquals(hmm.getProperty(HMMFile.EFF_NUMBER_OF_SEQUENCES),
- "3.358521");
- assertEquals(hmm.getProperty(HMMFile.CHECK_SUM), "3106786190");
- assertEquals(hmm.getProperty(HMMFile.GATHERING_THRESHOLD),
- "70.30 70.30");
- assertEquals(hmm.getProperty(HMMFile.TRUSTED_CUTOFF), "70.30 70.30");
- assertEquals(hmm.getProperty(HMMFile.NOISE_CUTOFF), "70.20 70.20");
-
- assertEquals(hmm.getSymbols(), "ACDEFGHIKLMNPQRSTVWY");
-
- assertEquals(hmm.getMatchEmissionProbability(0, 'Y'), 0.16102, 0.001d);
- assertEquals(hmm.getMatchEmissionProbability(11, 'P'), 0.0130, 0.001d);
- assertEquals(hmm.getMatchEmissionProbability(24, 'I'), 0.02583, 0.001d);
- assertEquals(hmm.getMatchEmissionProbability(83, 'C'), 0.008549,
- 0.001d);
- assertEquals(hmm.getMatchEmissionProbability(332, 'E'), 0.07998,
- 0.001d);
- assertEquals(hmm.getMatchEmissionProbability(381, 'D'), 0.014465,
- 0.001d);
- assertEquals(hmm.getMatchEmissionProbability(475, 'Y'), 0.02213,
- 0.001d);
-
- assertEquals(hmm.getInsertEmissionProbability(1, 'C'), 0.012, 0.001d);
- assertEquals(hmm.getInsertEmissionProbability(14, 'H'), 0.02411,
- 0.001d);
- assertEquals(hmm.getInsertEmissionProbability(23, 'L'), 0.06764,
- 0.001d);
- assertEquals(hmm.getInsertEmissionProbability(90, 'D'), 0.0623, 0.001d);
- assertEquals(hmm.getInsertEmissionProbability(374, 'T'), 0.0623,
- 0.001d);
- assertEquals(hmm.getInsertEmissionProbability(470, 'P'), 0.0647,
- 0.001d);
-
- assertEquals(hmm.getStateTransitionProbability(2, 6), 0.3848, 0.001d);
- assertEquals(hmm.getStateTransitionProbability(38, 3), 0.5382, 0.001d);
- assertEquals(hmm.getStateTransitionProbability(305, 3), 0.2916, 0.001d);
- assertEquals(hmm.getStateTransitionProbability(380, 0), 0.99, 0.001d);
- assertEquals(hmm.getStateTransitionProbability(453, 1), 0.0066, 0.001d);
-
- assertEquals(hmm.getNodeMapPosition(3), 3);
- assertEquals(hmm.getReferenceAnnotation(7), '-');
- assertEquals(hmm.getConsensusResidue(23), 't');
- assertEquals(hmm.getMaskedValue(30), '-');
- assertEquals(hmm.getConsensusStructure(56), 'S');
-
- assertEquals(hmm.getNodeMapPosition(78), 136);
- assertEquals(hmm.getReferenceAnnotation(93), '-');
- assertEquals(hmm.getConsensusResidue(145), 'a');
- assertEquals(hmm.getMaskedValue(183), '-');
- assertEquals(hmm.getConsensusStructure(240), 'H');
- }
-
- /**
- * Test that Jalview can parse an HMM file even with a bunch of 'mandatory'
- * fields missing (including no MAP annotation or // terminator line)
- *
- * @throws IOException
- */
- @Test(groups = "Functional")
- public void testParse_minimalFile() throws IOException
- {
- /*
- * ALPH is absent, alphabet inferred from HMM header line
- * Optional COMPO line is absent
- * first line after HMM is a guide line for readability
- * next line is BEGIN node insert emissions
- * next line is BEGIN node transitions
- * next line is first sequence node match emissions 1.1 1.2 1.3
- * next line is first sequence node insert emissions 1.4 1.5 1.6
- * last line is first sequence node transitions
- */
- //@formatter:off
- String hmmData =
- "HMMER3\n" +
- "HMM P M J\n" +
- // both spec and parser require a line after the HMM line
- " m->m m->i m->d i->m i->i d->m d->d\n" +
- " 0.1 0.2 0.3\n" +
- " 0.4 0.5 0.6 0.7 0.8 0.9 0.95\n" +
- " 1 1.1 1.2 1.3 - - - - -\n" +
- " 1.4 1.5 1.6\n" +
- " 1.7 1.8 1.9 2.0 2.1 2.2 2.3\n" +
- " 2 1.01 1.02 1.03 - - - - -\n" +
- " 1.04 1.05 1.06\n" +
- " 1.7 1.8 1.9 2.0 2.1 2.2 2.3\n";
- //@formatter:on
- HMMFile parser = new HMMFile(hmmData, DataSourceType.PASTE);
- HiddenMarkovModel hmm = parser.getHMM();
- assertNotNull(hmm);
- assertEquals(hmm.getSymbols(), "PMJ");
- // no LENG property: this should return node count excluding BEGIN node
- assertEquals(hmm.getLength(), 2);
-
- // node 1 (implicitly mapped to column 0)
- double prob = hmm.getMatchEmissionProbability(0, 'p');
- assertEquals(prob, Math.pow(Math.E, -1.1));
- prob = hmm.getInsertEmissionProbability(0, 'J');
- assertEquals(prob, Math.pow(Math.E, -1.6));
-
- // node 2 (implicitly mapped to column 1)
- prob = hmm.getMatchEmissionProbability(1, 'M');
- assertEquals(prob, Math.pow(Math.E, -1.02));
- prob = hmm.getInsertEmissionProbability(1, 'm');
- assertEquals(prob, Math.pow(Math.E, -1.05));
- }
-
- @Test(groups = "Functional")
- public void testParseHeaderLines_amino() throws IOException
- {
- FileReader fr = new FileReader(
- new File("test/jalview/io/test_fn3_hmm.txt"));
- BufferedReader br = new BufferedReader(fr);
- HiddenMarkovModel hmm = new HiddenMarkovModel();
- HMMFile testee = new HMMFile();
- PA.setValue(testee, "hmm", hmm);
- testee.parseHeaderLines(br);
- br.close();
- fr.close();
-
- assertEquals(hmm.getName(), "fn3");
- assertEquals(hmm.getProperty(HMMFile.ACCESSION_NUMBER), "PF00041.13");
- assertEquals(hmm.getProperty(HMMFile.DESCRIPTION),
- "Fibronectin type III domain");
- assertEquals(hmm.getProperty(HMMFile.LENGTH), "86");
- assertNull(hmm.getProperty(HMMFile.MAX_LENGTH));
- assertEquals(hmm.getAlphabetType(), "amino");
- assertFalse(hmm.getBooleanProperty(HMMFile.REFERENCE_ANNOTATION));
- assertFalse(hmm.getBooleanProperty(HMMFile.MASKED_VALUE));
- assertTrue(hmm.getBooleanProperty(HMMFile.CONSENSUS_RESIDUE));
- assertTrue(hmm.getBooleanProperty(HMMFile.CONSENSUS_STRUCTURE));
-
- assertTrue(hmm.getBooleanProperty(HMMFile.MAP));
- assertEquals(hmm.getProperty(HMMFile.DATE), "Fri Jun 20 08:22:31 2014");
- assertNull(hmm.getProperty(HMMFile.COMMAND_LOG));
- assertEquals(hmm.getProperty(HMMFile.NUMBER_OF_SEQUENCES), "106");
- assertEquals(hmm.getProperty(HMMFile.EFF_NUMBER_OF_SEQUENCES),
- "11.415833");
- assertEquals(hmm.getProperty(HMMFile.CHECK_SUM), "3564431818");
- assertEquals(hmm.getProperty(HMMFile.GATHERING_THRESHOLD), "8.00 7.20");
- assertEquals(hmm.getProperty(HMMFile.TRUSTED_CUTOFF), "8.00 7.20");
- assertEquals(hmm.getProperty(HMMFile.NOISE_CUTOFF), "7.90 7.90");
- assertEquals(hmm.getViterbi(), "-9.7737 0.71847");
- assertEquals(hmm.getMSV(), "-9.4043 0.71847");
- assertEquals(hmm.getForward(), "-3.8341 0.71847");
- }
-
- @Test(groups = "Functional")
- public void testParseHeaderLines_dna() throws IOException
- {
- FileReader fr = new FileReader(
- new File("test/jalview/io/test_MADE1_hmm.txt"));
- BufferedReader br = new BufferedReader(fr);
- HiddenMarkovModel hmm = new HiddenMarkovModel();
- HMMFile testee = new HMMFile();
- PA.setValue(testee, "hmm", hmm);
- testee.parseHeaderLines(br);
- br.close();
- fr.close();
-
- assertEquals(hmm.getName(), "MADE1");
- assertEquals(hmm.getProperty(HMMFile.ACCESSION_NUMBER),
- "DF0000629.2");
- assertEquals(hmm.getProperty(HMMFile.DESCRIPTION),
- "MADE1 (MAriner Derived Element 1), a TcMar-Mariner DNA transposon");
- assertEquals(hmm.getProperty(HMMFile.LENGTH), "80");
- assertEquals(hmm.getProperty(HMMFile.MAX_LENGTH), "426");
- assertEquals(hmm.getAlphabetType(), "DNA");
- assertTrue(hmm.getBooleanProperty(HMMFile.REFERENCE_ANNOTATION));
- assertFalse(hmm.getBooleanProperty(HMMFile.MASKED_VALUE));
- assertTrue(hmm.getBooleanProperty(HMMFile.CONSENSUS_RESIDUE));
- assertFalse(hmm.getBooleanProperty(HMMFile.CONSENSUS_STRUCTURE));
- assertTrue(hmm.getBooleanProperty(HMMFile.MAP));
- assertEquals(hmm.getProperty(HMMFile.DATE), "Tue Feb 19 20:33:41 2013");
- assertNull(hmm.getProperty(HMMFile.COMMAND_LOG));
- assertEquals(hmm.getProperty(HMMFile.NUMBER_OF_SEQUENCES), "1997");
- assertEquals(hmm.getProperty(HMMFile.EFF_NUMBER_OF_SEQUENCES), "3.911818");
- assertEquals(hmm.getProperty(HMMFile.CHECK_SUM), "3015610723");
- assertEquals(hmm.getProperty(HMMFile.GATHERING_THRESHOLD),
- "2.324 4.234");
- assertEquals(hmm.getProperty(HMMFile.TRUSTED_CUTOFF), "2.343 1.212");
- assertEquals(hmm.getProperty(HMMFile.NOISE_CUTOFF), "2.354 5.456");
- assertEquals(hmm.getViterbi(), "-9.3632 0.71858");
- assertEquals(hmm.getMSV(), "-8.5786 0.71858");
- assertEquals(hmm.getForward(), "-3.4823 0.71858");
- }
-
- @Test(groups = "Functional")
- public void testFillList() throws IOException
- {
- Scanner scanner1 = new Scanner("1.3 2.4 5.3 3.9 9.8 4.7 4.3 2.3 6.9");
- ArrayList<Double> filledArray = new ArrayList<>();
-
- filledArray.add(0.27253);
- filledArray.add(0.0907);
- filledArray.add(0.00499);
- filledArray.add(0.02024);
- filledArray.add(0.00005);
- filledArray.add(0.00909);
- filledArray.add(0.01357);
- filledArray.add(0.10026);
- filledArray.add(0.001);
-
- double[] testList = HMMFile.parseDoubles(scanner1, 9);
-
- for (int i = 0; i < 9; i++)
- {
- assertEquals(testList[i], filledArray.get(i), 0.001d);
- }
-
- filledArray.clear();
- scanner1.close();
-
- Scanner scanner2 = new Scanner(
- "1.346 5.554 35.345 5.64 1.4");
- filledArray.add(0.2603);
- filledArray.add(0.00387);
- filledArray.add(0d);
- filledArray.add(0.00355);
- filledArray.add(0.2466);
-
- testList = HMMFile.parseDoubles(scanner2, 5);
-
- for (int i = 0; i < 5; i++)
- {
- assertEquals(testList[i], filledArray.get(i), 0.001d);
- }
- }
-
- @Test(groups = "Functional")
- public void testParseModel() throws IOException
- {
- FileReader fr = new FileReader(
- new File("test/jalview/io/test_MADE1_hmm.txt"));
- BufferedReader br = new BufferedReader(fr);
- HiddenMarkovModel testHMM = new HiddenMarkovModel();
- String line = null;
- do
- {
- line = br.readLine(); // skip header lines up to HMM plus one
- } while (!line.startsWith("HMM "));
- br.readLine();
-
- made1.parseModel(br);
- testHMM = made1.getHMM();
-
- br.close();
- fr.close();
-
- assertEquals(testHMM.getMatchEmissionProbability(1, 'C'), 0.09267,
- 0.001d);
- assertEquals(testHMM.getMatchEmissionProbability(25, 'G'), 0.07327,
- 0.001d);
- assertEquals(testHMM.getMatchEmissionProbability(1092, 'C'), 0.04184,
- 0.001d);
- assertEquals(testHMM.getMatchEmissionProbability(1107, 'G'), 0.07,
- 0.001d);
-
- assertEquals(testHMM.getInsertEmissionProbability(0, 'G'), 0.25,
- 0.001d);
- assertEquals(testHMM.getInsertEmissionProbability(247, 'T'), 0.2776,
- 0.001d);
- assertEquals(testHMM.getInsertEmissionProbability(1096, 'T'), 0.25,
- 0.001d);
- assertEquals(testHMM.getInsertEmissionProbability(1111, 'T'), 0.25,
- 0.001d);
-
- assertEquals(testHMM.getStateTransitionProbability(1, 0), 0.9634,
- 0.001d);
- assertEquals(testHMM.getStateTransitionProbability(5, 1), 0.0203,
- 0.001d);
- assertEquals(testHMM.getStateTransitionProbability(14, 3), 0.2515,
- 0.001d);
- assertEquals(testHMM.getStateTransitionProbability(65, 4), 0.78808,
- 0.001d);
- assertEquals(testHMM.getStateTransitionProbability(1080, 2), 0.01845,
- 0.001d);
- assertEquals(testHMM.getStateTransitionProbability(1111, 6),
- Double.NEGATIVE_INFINITY);
- }
-
- @Test(groups = "Functional")
- public void testParseAnnotations()
- {
- HMMFile testFile = new HMMFile();
- HiddenMarkovModel hmm = new HiddenMarkovModel();
- PA.setValue(testFile, "hmm", hmm);
-
- List<HMMNode> nodes = new ArrayList<>();
- nodes.add(new HMMNode()); // BEGIN node
-
- hmm.setProperty(HMMFile.CONSENSUS_RESIDUE, "yes");
- hmm.setProperty(HMMFile.MAP, "yes");
- hmm.setProperty(HMMFile.REFERENCE_ANNOTATION, "yes");
- hmm.setProperty(HMMFile.CONSENSUS_STRUCTURE, "yes");
- hmm.setProperty(HMMFile.MASKED_VALUE, "yes");
- Scanner scanner = new Scanner("1345 t t t t");
- HMMNode node = new HMMNode();
- nodes.add(node);
- testFile.parseAnnotations(scanner, node);
-
- hmm.setProperty(HMMFile.CONSENSUS_RESIDUE, "yes");
- hmm.setProperty(HMMFile.MAP, "no");
- hmm.setProperty(HMMFile.REFERENCE_ANNOTATION, "yes");
- hmm.setProperty(HMMFile.CONSENSUS_STRUCTURE, "no");
- hmm.setProperty(HMMFile.MASKED_VALUE, "no");
- Scanner scanner2 = new Scanner("- y x - -");
- node = new HMMNode();
- nodes.add(node);
- testFile.parseAnnotations(scanner2, node);
-
- hmm.setNodes(nodes);
-
- assertEquals(hmm.getNodeMapPosition(1), 1345);
- assertEquals(hmm.getConsensusResidue(1), 't');
- assertEquals(hmm.getReferenceAnnotation(1), 't');
- assertEquals(hmm.getMaskedValue(1), 't');
- assertEquals(hmm.getConsensusStructure(1), 't');
-
- scanner.close();
- }
-
- /**
- * tests to see if file produced by the output matches the file from the input
- *
- * @throws IOException
- */
- @Test(groups = "Functional")
- public void testPrint_roundTrip() throws IOException
- {
- String output = pKinase.print();
- HMMFile pKinaseClone = new HMMFile(
- new FileParse(output, DataSourceType.PASTE));
- HiddenMarkovModel pKinaseHMM = pKinase.getHMM();
- HiddenMarkovModel pKinaseCloneHMM = pKinaseClone.getHMM();
-
- checkModelsMatch(pKinaseHMM, pKinaseCloneHMM);
- }
-
- /**
- * A helper method to check two HMM models have the same values
- *
- * @param model1
- * @param model2
- */
- protected void checkModelsMatch(HiddenMarkovModel model1,
- HiddenMarkovModel model2)
- {
- assertEquals(model1.getLength(), model2.getLength());
-
- for (int i = 0; i < model1.getLength(); i++)
- {
- String msg = "For Node" + i;
- assertEquals(model1.getNode(i).getMatchEmissions(),
- model2.getNode(i).getMatchEmissions(), msg);
- assertEquals(model1.getNode(i).getInsertEmissions(),
- model2.getNode(i).getInsertEmissions(), msg);
- assertEquals(model1.getNode(i).getStateTransitions(),
- model2.getNode(i).getStateTransitions(), msg);
-
- if (i > 0)
- {
- assertEquals(model1.getNodeMapPosition(i),
- model2.getNodeMapPosition(i), msg);
- assertEquals(model1.getReferenceAnnotation(i),
- model2.getReferenceAnnotation(i), msg);
- assertEquals(model1.getConsensusResidue(i),
- model2.getConsensusResidue(i), msg);
- }
- }
- }
-
- @Test(groups = "Functional")
- public void testAppendProperties() throws FileNotFoundException
- {
- StringBuilder sb = new StringBuilder();
- fn3.appendProperties(sb);
-
- Scanner testScanner = new Scanner(sb.toString());
-
- String[] expected = new String[] { "HMMER3/f [3.1b1 | May 2013]",
- "NAME fn3", "ACC PF00041.13",
- "DESC Fibronectin type III domain", "LENG 86", "ALPH amino",
- "RF no", "MM no", "CONS yes", "CS yes", "MAP yes",
- "DATE Fri Jun 20 08:22:31 2014", "NSEQ 106", "EFFN 11.415833",
- "CKSUM 3564431818", "GA 8.00 7.20", "TC 8.00 7.20",
- "NC 7.90 7.90", "STATS LOCAL MSV -9.4043 0.71847",
- "STATS LOCAL VITERBI -9.7737 0.71847",
- "STATS LOCAL FORWARD -3.8341 0.71847" };
-
- for (String value : expected)
- {
- assertEquals(testScanner.nextLine(), value);
- }
-
- testScanner.close();
- }
-
- @Test(groups = "Functional")
- public void testAppendModelAsString() throws FileNotFoundException
- {
- StringBuilder sb = new StringBuilder();
- fn3.appendModelAsString(sb);
- String string = sb.toString();
-
- assertEquals(findValue(2, 2, 2, string), "4.42225");
- assertEquals(findValue(12, 14, 1, string), "2.79307");
- assertEquals(findValue(6, 24, 3, string), "0.48576");
- assertEquals(findValue(19, 33, 2, string), "4.58477");
- assertEquals(findValue(20, 64, 2, string), "3.61505");
- assertEquals(findValue(3, 72, 3, string), "6.81068");
- assertEquals(findValue(10, 80, 2, string), "2.69355");
- assertEquals(findValue(16, 65, 1, string), "2.81003");
- assertEquals(findValue(14, 3, 1, string), "2.69012");
- assertEquals(findValue(11, 32, 1, string), "4.34805");
- }
-
- /**
- * A helper method to find a token in the model string
- *
- * @param symbolIndex
- * index of symbol being searched. First symbol has index 1.
- * @param nodeIndex
- * index of node being searched. Begin node has index 0. First node
- * has index 1.
- * @param line
- * index of line being searched in node. First line has index 1.
- * @param model
- * string model being searched
- * @return value at specified position
- */
- private String findValue(int symbolIndex, int nodeIndex, int line,
- String model)
- {
- String value = "";
- Scanner scanner = new Scanner(model);
- scanner.nextLine();
- scanner.nextLine();
-
- for (int lineIndex = 0; lineIndex < line - 1; lineIndex++)
- {
- scanner.nextLine();
- }
- for (int node = 0; node < nodeIndex; node++)
- {
- scanner.nextLine();
- scanner.nextLine();
- scanner.nextLine();
- }
-
- for (int symbol = 0; symbol < symbolIndex; symbol++)
- {
- value = scanner.next();
- if ("COMPO".equals(value))
- {
- scanner.next();
- }
- else if (value.length() < 7)
- {
- scanner.next();
- }
- }
- scanner.close();
- return value;
- }
-}
-
+++ /dev/null
-HMMER3/f [3.1 | February 2013]
-NAME MADE1
-ACC DF0000629.2
-DESC MADE1 (MAriner Derived Element 1), a TcMar-Mariner DNA transposon
-LENG 80
-MAXL 426
-ALPH DNA
-RF yes
-MM no
-CONS yes
-CS no
-MAP yes
-DATE Tue Feb 19 20:33:41 2013
-NSEQ 1997
-EFFN 3.911818
-CKSUM 3015610723
-GA 2.324 4.234
-TC 2.343 1.212
-NC 2.354 5.456
-STATS LOCAL MSV -8.5786 0.71858
-STATS LOCAL VITERBI -9.3632 0.71858
-STATS LOCAL FORWARD -3.4823 0.71858
-HMM A C G T
- m->m m->i m->d i->m i->i d->m d->d
- COMPO 1.24257 1.59430 1.62906 1.16413
- 1.38629 1.38629 1.38629 1.38629
- 0.03960 3.94183 3.94183 1.46634 0.26236 0.00000 *
- 1 2.69765 2.44396 2.81521 0.24089 1 t x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03960 3.94183 3.94183 1.46634 0.26236 1.09861 0.40547
- 2 2.72939 2.37873 2.85832 0.24244 2 t x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03725 4.00179 4.00179 1.46634 0.26236 1.09861 0.40547
- 3 0.16099 3.16370 2.87328 2.99734 3 a x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03604 4.03416 4.03416 1.46634 0.26236 1.09861 0.40547
- 4 1.98862 2.42132 0.42649 2.10770 4 g x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03539 4.05203 4.05203 1.46634 0.26236 1.09861 0.40547
- 5 1.96369 2.69532 0.36534 2.32099 5 g x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03764 4.06427 3.92372 1.46634 0.26236 1.09861 0.40547
- 6 2.56994 2.11239 2.71946 0.30571 6 t x - -
- 1.37159 1.41129 1.39124 1.37159
- 0.03806 3.89715 4.07214 1.50442 0.25122 1.00714 0.45454
- 7 2.58388 2.10353 2.64646 0.31253 12 t x - -
- 1.38764 1.38524 1.38764 1.38465
- 0.03494 4.03864 4.09125 1.40070 0.28293 1.09237 0.40860
- 8 2.18552 2.70201 0.28821 2.64645 14 g x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03628 4.09157 3.96779 1.46634 0.26236 1.09861 0.40547
- 9 2.16916 2.82142 0.28427 2.60854 15 g x - -
- 1.38091 1.39033 1.38365 1.39033
- 0.03566 4.00237 4.08886 1.38021 0.28972 1.01958 0.44745
- 10 2.45517 2.15232 2.42886 0.34277 18 t x - -
- 1.39065 1.39065 1.39065 1.37335
- 0.03536 4.01212 4.09576 1.39554 0.28462 1.09775 0.40589
- 11 2.10260 2.95484 0.28160 2.64222 21 g x - -
- 1.36740 1.40555 1.40555 1.36740
- 0.03843 3.92069 4.02468 1.44733 0.26814 1.09856 0.40549
- 12 2.54740 0.30185 2.61355 2.21647 26 c x - -
- 1.38748 1.38276 1.38748 1.38748
- 0.03457 4.05446 4.09623 1.40847 0.28040 1.05496 0.42803
- 13 0.28443 2.72003 2.32214 2.48149 28 a x - -
- 1.38740 1.38740 1.38298 1.38740
- 0.03441 4.05976 4.10001 1.41198 0.27926 1.09780 0.40587
- 14 0.29412 2.55413 2.49679 2.35701 30 a x - -
- 1.38194 1.39067 1.38194 1.39067
- 0.03505 4.02482 4.10005 1.39522 0.28473 1.09929 0.40512
- 15 0.18837 2.99710 2.82270 2.77556 33 a x - -
- 1.39015 1.39472 1.37503 1.38539
- 0.03725 3.97815 4.02618 1.37955 0.28994 1.10102 0.40426
- 16 0.50816 2.05151 2.22111 1.82407 37 a x - -
- 1.36727 1.38730 1.39683 1.39405
- 0.04830 3.89881 3.61610 1.29026 0.32186 1.05306 0.42905
- 17 2.11260 2.73141 0.29747 2.64152 41 g x - -
- 1.36913 1.40376 1.40376 1.36913
- 0.03705 3.93681 4.08299 1.44872 0.26771 1.07479 0.41759
- 18 2.24459 1.90539 2.34054 0.43234 46 t x - -
- 1.33632 1.42493 1.39937 1.38665
- 0.04427 3.64574 4.06297 1.70501 0.20061 1.21309 0.35279
- 19 0.44322 2.17202 2.18055 2.03175 57 a x - -
- 1.41047 1.41471 1.36338 1.35797
- 0.03970 3.81957 4.07540 1.65588 0.21186 1.22788 0.34660
- 20 0.33340 2.42691 2.40824 2.25160 66 a x - -
- 1.29389 1.44615 1.37917 1.43324
- 0.04223 3.70146 4.09459 1.55158 0.23815 1.05880 0.42598
- 21 2.50563 1.98543 2.69601 0.33746 74 t x - -
- 1.39462 1.39462 1.42862 1.32990
- 0.04184 3.80216 3.98177 1.80466 0.17976 1.00279 0.45705
- 22 2.54484 1.97505 2.66483 0.33806 84 t x - -
- 1.39134 1.39489 1.38662 1.37246
- 0.03877 3.97504 3.95038 1.37620 0.29107 1.13932 0.38572
- 23 2.10159 2.83856 0.29282 2.61635 88 g x - -
- 1.39682 1.39682 1.35536 1.39682
- 0.05046 3.75402 3.65808 1.08330 0.41321 1.13019 0.39004
- 24 2.25298 0.61854 2.50691 1.29221 90 c x - -
- 1.35803 1.49605 1.46737 1.24379
- 0.06091 3.28322 3.83564 1.89752 0.16245 1.28788 0.32276
- 25 1.27819 2.23285 0.76242 1.91259 106 g x - -
- 1.29024 1.67349 1.68279 1.04597
- 0.05752 3.44263 3.73311 2.58671 0.07825 1.26818 0.33037
- 26 1.86925 2.58352 0.39466 2.33986 131 g x - -
- 1.31084 1.49412 1.46666 1.29002
- 0.04698 3.54257 4.07715 2.25245 0.11109 0.86163 0.54900
- 27 2.38297 1.93394 2.39162 0.39800 151 t x - -
- 1.33582 1.47359 1.44163 1.30411
- 0.04951 3.48445 4.03783 2.15951 0.12260 1.21681 0.35122
- 28 2.41717 2.17810 2.62774 0.32113 170 t x - -
- 1.36805 1.48060 1.37439 1.32840
- 0.04849 3.50958 4.05014 2.58370 0.07850 1.22399 0.34822
- 29 2.57764 2.35132 2.56552 0.28512 194 t x - -
- 1.43829 1.43458 1.24787 1.43829
- 0.04667 3.56670 4.05428 2.49706 0.08591 1.23744 0.34267
- 30 2.47248 2.07688 2.62257 0.33172 215 t x - -
- 1.25120 1.52623 1.70635 1.15531
- 0.08932 3.31524 3.01336 2.81842 0.06156 1.22909 0.34610
- 31 2.25937 2.13157 2.02027 0.43957 248 t x - -
- 1.18172 1.43522 1.72841 1.28150
- 0.07936 2.93117 3.77395 2.46269 0.08906 0.60457 0.79034
- 32 2.04508 2.84981 0.30490 2.58263 280 g x - -
- 1.17665 1.66785 1.66218 1.16056
- 0.05998 3.23615 3.96853 2.83684 0.06040 1.01952 0.44749
- 33 2.45103 0.38098 2.56776 1.87147 317 c x - -
- 1.24153 1.52524 1.60663 1.22783
- 0.05538 3.39046 3.90294 2.73920 0.06680 1.18729 0.36391
- 34 2.22082 0.36258 2.75077 2.02704 347 c x - -
- 1.15008 1.62014 1.86511 1.10673
- 0.06086 3.18178 4.04341 2.94504 0.05403 1.25991 0.33363
- 35 0.27033 2.66664 2.52541 2.43767 388 a x - -
- 1.24951 1.47565 1.41392 1.42074
- 0.07123 3.00373 3.95552 3.13655 0.04440 1.28173 0.32512
- 36 2.83107 2.41670 2.97197 0.22235 439 t x - -
- 1.37071 1.57683 1.38637 1.23972
- 0.05293 3.45216 3.91807 2.54402 0.08181 1.14651 0.38235
- 37 2.52322 2.25084 2.45909 0.31611 465 t x - -
- 1.26335 1.55077 1.59008 1.19965
- 0.07504 3.13329 3.55006 3.08962 0.04659 1.13108 0.38962
- 38 0.45807 2.30687 1.98940 2.03143 512 a x - -
- 1.15472 1.67511 1.53797 1.26320
- 0.09820 3.13076 2.99876 2.79197 0.06326 1.39915 0.28343
- 39 2.37471 0.42180 2.44763 1.80427 550 c x - -
- 1.23785 1.49058 1.48364 1.35502
- 0.06081 3.19472 4.01643 2.41851 0.09327 0.94671 0.49105
- 40 2.32826 1.95481 2.36781 0.40458 578 t x - -
- 1.36586 1.46001 1.43000 1.29720
- 0.05257 3.39673 4.03256 1.84862 0.17133 1.40979 0.27997
- 41 2.68669 2.13935 2.81520 0.28200 592 t x - -
- 1.34965 1.42793 1.45781 1.31633
- 0.04735 3.57826 3.99988 2.09424 0.13144 1.22129 0.34934
- 42 2.55904 2.16444 2.70859 0.29952 609 t x - -
- 1.12072 1.61936 1.63578 1.26895
- 0.07346 3.25910 3.42962 2.85641 0.05919 1.38363 0.28857
- 43 1.99923 1.61027 2.26343 0.57851 646 t x - -
- 1.32290 1.58747 1.61095 1.11018
- 0.06656 3.08568 3.97944 2.44774 0.09046 0.75593 0.63407
- 44 0.23887 2.79899 2.55209 2.60783 675 a x - -
- 1.18557 1.50323 1.59070 1.31590
- 0.05597 3.38637 3.88222 2.46900 0.08847 1.27945 0.32599
- 45 0.29593 2.53488 2.53903 2.32335 701 a x - -
- 1.08710 1.54222 1.59276 1.40430
- 0.07539 2.94521 3.91062 1.91623 0.15918 1.22327 0.34852
- 46 2.58352 2.40524 2.76700 0.25955 725 t x - -
- 1.19685 1.58503 1.74852 1.14293
- 0.06124 3.18279 4.02089 2.82961 0.06085 1.05474 0.42814
- 47 2.13251 2.88788 0.29508 2.50964 764 g x - -
- 1.20891 1.55463 1.68206 1.19000
- 0.06526 3.12574 3.94910 2.41448 0.09367 1.10396 0.40280
- 48 2.23841 2.99164 0.25118 2.72900 792 g x - -
- 1.26330 1.55339 1.52606 1.24355
- 0.05464 3.34968 4.01313 2.78872 0.06347 1.15133 0.38012
- 49 2.57533 0.32900 2.64632 2.01501 824 c x - -
- 1.35118 1.39828 1.40141 1.39516
- 0.04340 3.79297 3.91506 1.59549 0.22666 1.20075 0.35806
- 50 0.46433 2.04127 2.23437 2.00605 833 a x - -
- 1.23062 1.36903 1.62282 1.36182
- 0.05764 3.31530 3.92762 2.28791 0.10700 1.07910 0.41536
- 51 0.27513 2.77017 2.28518 2.57549 853 a x - -
- 1.27958 1.58726 1.46109 1.25394
- 0.05750 3.30072 3.96214 2.60776 0.07656 1.25708 0.33475
- 52 0.20149 2.86434 2.84551 2.69770 883 a x - -
- 1.23645 1.62259 1.71174 1.10368
- 0.05756 3.26729 4.02702 2.54508 0.08172 1.27391 0.32814
- 53 0.26982 2.65833 2.50477 2.46835 911 a x - -
- 1.36005 1.50358 1.48100 1.22550
- 0.06921 3.37553 3.42118 2.36646 0.09851 1.27560 0.32748
- 54 0.40022 2.19284 2.22687 2.20396 934 a x - -
- 1.12070 1.60472 1.53213 1.35895
- 0.05523 3.36752 3.94966 2.42917 0.09224 0.84774 0.55928
- 55 2.11356 0.46400 2.46442 1.79955 960 c x - -
- 1.23932 1.35913 1.50478 1.46331
- 0.05187 3.47055 3.94022 2.35854 0.09933 1.12102 0.39445
- 56 1.85868 0.79440 2.22069 1.25971 983 c x - -
- 1.21951 1.50212 1.51138 1.34185
- 0.06404 3.29054 3.69705 1.75742 0.18933 1.18410 0.36532
- 57 1.33272 2.32720 0.71452 1.90215 999 g x - -
- 1.12229 1.49343 1.56653 1.42255
- 0.04920 3.46654 4.08749 2.17995 0.11996 1.31769 0.31164
- 58 2.48337 0.43652 2.46331 1.68683 1017 c x - -
- 1.34704 1.55461 1.38112 1.28222
- 0.04823 3.61532 3.90311 2.20911 0.11631 1.00864 0.45368
- 59 0.41659 2.44509 1.93972 2.20507 1034 a x - -
- 1.38198 1.38198 1.39194 1.38932
- 0.03641 3.98130 4.06929 1.35873 0.29704 1.31330 0.31325
- 60 0.41612 2.39160 1.97116 2.21075 1037 a x - -
- 1.03649 1.46430 1.57421 1.57557
- 0.04769 3.52580 4.06641 2.32461 0.10294 0.84329 0.56263
- 61 2.66264 2.12302 2.82746 0.28581 1056 t x - -
- 1.36925 1.39635 1.38930 1.39048
- 0.04097 3.97400 3.84718 1.39433 0.28502 1.12205 0.39395
- 62 2.26510 2.13196 2.42551 0.37231 1060 t x - -
- 1.37965 1.39147 1.39147 1.38264
- 0.04082 3.91610 3.90805 1.24613 0.33914 0.95192 0.48776
- 63 0.41244 2.25761 2.16787 2.12907 1062 a x - -
- 1.34515 1.41203 1.41203 1.37753
- 0.04054 3.77835 4.08203 1.30483 0.31638 1.11819 0.39582
- 64 2.51464 0.37905 2.62296 1.82008 1068 c x - -
- 1.39543 1.38753 1.39233 1.37008
- 0.03854 3.90584 4.03535 1.36573 0.29463 1.13682 0.38689
- 65 2.16380 2.11332 2.18714 0.42765 1073 t x - -
- 1.38764 1.38471 1.38519 1.38764
- 0.03575 4.05376 4.03073 1.40080 0.28289 1.03825 0.43707
- 66 2.79349 2.39141 2.87271 0.23478 1075 t x - -
- 1.37227 1.39101 1.39101 1.39101
- 0.03597 4.01447 4.05827 1.39017 0.28639 1.06429 0.42308
- 67 2.82488 2.47749 2.93179 0.21887 1078 t x - -
- 1.38141 1.39112 1.38915 1.38353
- 0.03661 3.99477 4.04370 1.35958 0.29675 1.13439 0.38804
- 68 2.77679 2.30433 2.90694 0.24425 1081 t x - -
- 1.37593 1.38989 1.45520 1.32825
- 0.04447 3.68736 3.99242 1.76176 0.18843 0.98580 0.46703
- 69 2.47698 3.17398 0.19595 2.95437 1093 g x - -
- 1.38264 1.38264 1.39734 1.38264
- 0.05358 3.96553 3.40487 1.40348 0.28202 1.03112 0.44100
- 70 2.84327 0.27906 2.97336 2.00890 1097 c x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03412 4.08811 4.08811 1.46634 0.26236 0.69006 0.69625
- 71 0.21870 2.83638 2.69251 2.65798 1098 a x - -
- 1.37446 1.37942 1.39640 1.39509
- 0.03670 3.93983 4.09935 1.41905 0.27700 1.10002 0.40476
- 72 2.35233 0.46085 2.23804 1.78715 1103 c x - -
- 1.38536 1.38781 1.38781 1.38421
- 0.03493 4.03822 4.09272 1.39310 0.28542 1.09638 0.40658
- 73 2.57111 0.32543 2.74124 1.98892 1105 c x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03381 4.09688 4.09688 1.46634 0.26236 1.09626 0.40664
- 74 0.27014 2.61416 2.53262 2.47636 1106 a x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03461 4.09267 4.05587 1.46634 0.26236 1.09748 0.40603
- 75 0.52873 2.16549 1.91736 1.90409 1107 a x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03426 4.08396 4.08396 1.46634 0.26236 1.07423 0.41788
- 76 2.33134 0.38082 2.65861 1.90055 1108 c x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03466 4.07266 4.07266 1.46634 0.26236 1.09861 0.40547
- 77 2.20588 0.45134 2.35553 1.84373 1109 c x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03550 4.04912 4.04912 1.46634 0.26236 1.09861 0.40547
- 78 2.69018 2.22054 2.82311 0.26898 1110 t x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.03711 4.00561 4.00561 1.46634 0.26236 1.09861 0.40547
- 79 0.16248 3.15867 2.86159 2.98963 1111 a x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.04048 3.92018 3.92018 1.46634 0.26236 1.09861 0.40547
- 80 0.17484 3.04770 2.86638 2.88183 1112 a x - -
- 1.38629 1.38629 1.38629 1.38629
- 0.02045 3.90014 * 1.46634 0.26236 0.00000 *
-//
+++ /dev/null
-HMMER3/e [3.0 | March 2010]
-NAME Pkinase
-ACC PF00069.17
-DESC Protein kinase domain
-LENG 260
-ALPH amino
-RF no
-CONS yes
-CS yes
-MAP yes
-DATE Thu Jun 16 11:44:06 2011
-NSEQ 54
-EFFN 3.358521
-CKSUM 3106786190
-GA 70.30 70.30
-TC 70.30 70.30
-NC 70.20 70.20
-STATS LOCAL MSV -10.7215 0.70254
-STATS LOCAL VITERBI -11.6541 0.70254
-STATS LOCAL FORWARD -5.2305 0.70254
-HMM A C D E F G H I K L M N P Q R S T V W Y
- m->m m->i m->d i->m i->i d->m d->d
- COMPO 2.60017 4.19886 2.94089 2.63789 3.35087 2.89119 3.48337 2.79435 2.60265 2.43454 3.62613 3.06133 3.41286 3.09693 2.94507 2.65650 2.87761 2.67871 4.54052 3.43274
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.00000 *
- 1 2.91704 4.31028 4.76351 3.63148 2.10912 3.47710 4.39734 2.27639 3.96619 1.99282 3.42844 4.19567 4.43771 4.11903 3.67403 3.22736 3.14918 2.35905 3.32515 1.82622 1 y - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 2 2.77204 4.20708 3.06476 1.97968 4.66603 3.66509 3.19858 3.37903 2.25347 3.34018 4.38833 2.97180 4.05804 2.36838 2.43173 2.67542 2.50268 2.83403 5.78758 4.38976 2 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 3 2.90076 4.04294 3.31590 2.80413 3.08157 3.87481 4.12616 2.18958 2.49735 1.97194 3.73714 3.32717 3.98753 3.23115 3.12315 2.99137 2.62008 2.29426 5.21478 3.75979 3 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 4 2.89383 4.85429 3.10311 2.63174 3.71383 2.56808 3.47232 2.82076 2.61844 1.98342 3.72320 3.05498 4.17347 3.05527 3.32194 2.85608 2.93671 2.18878 5.40057 3.87183 4 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 5 2.68261 5.39185 2.80437 1.87471 4.73638 2.79887 3.69591 4.22191 2.19487 3.69685 4.08896 3.12413 3.70490 2.48424 2.08916 2.53260 3.02309 3.43812 5.82480 4.41426 5 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 6 2.77253 4.06085 3.07881 2.53373 4.10647 3.71564 3.68370 2.64290 2.00036 2.72968 4.17370 3.24239 3.08607 2.77632 2.72820 2.69921 2.54335 2.71931 5.60386 4.26496 6 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 7 3.42930 4.74416 5.34765 4.76823 3.71832 4.71430 5.09461 1.33015 3.54417 1.12594 3.33523 4.84641 5.00427 4.73010 4.64986 4.05097 3.66327 1.83083 5.51142 4.37013 7 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 8 2.57460 4.94286 4.00732 3.93216 5.40516 0.41612 5.15134 4.86315 4.18766 4.52736 5.33508 4.05990 4.45245 3.74651 4.46171 3.15888 3.14590 4.15180 6.71159 5.52767 8 G - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 9 2.30218 5.38172 3.03799 2.02026 4.18991 3.65799 3.84554 3.67215 2.28945 3.68495 4.42365 2.84227 3.73039 2.44555 2.39428 2.00278 2.95859 3.63127 5.81726 4.40923 9 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 10 4.54226 6.07621 5.39207 5.44513 6.34643 0.07137 6.34600 6.33790 5.73770 5.76452 6.83374 5.56171 5.46536 5.98137 5.73783 4.76037 5.08470 5.67502 7.03864 6.52156 10 G - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 11 2.06444 5.37337 2.91595 2.40063 4.70969 2.61181 3.84889 4.18948 2.46835 3.67503 4.41668 2.62917 4.05392 2.88235 2.66711 2.00495 2.47288 3.39649 5.81159 4.40596 11 s - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 12 2.90920 4.46494 4.12493 3.14570 1.52027 3.22992 4.24969 2.92840 3.46467 2.66529 3.12827 3.55640 4.33979 3.72214 3.72236 2.53517 2.98442 2.55125 5.06498 2.30159 12 f - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 13 2.21104 4.80722 4.64199 4.55509 5.54982 0.52550 5.49025 5.04875 4.70671 4.72740 5.47955 4.30215 4.43233 4.84666 4.86038 1.95116 3.45005 4.17507 6.87595 5.79039 13 G - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 14 2.71551 3.46186 3.01248 2.27453 4.55840 3.55853 3.50842 3.55064 2.03335 3.34882 4.31847 3.17065 4.07218 2.83960 2.83653 2.25762 2.26864 2.61469 5.72841 4.35037 14 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 15 3.17885 3.97005 5.63014 5.16553 4.35293 4.89782 5.77682 2.09398 5.06494 2.94083 4.14496 5.20428 5.30924 5.30763 5.20260 4.32158 3.61414 0.44769 6.26043 5.04118 15 V - - E
- 2.68625 4.42232 2.77526 2.73102 3.46361 2.40519 3.72501 3.29361 2.67747 2.69306 4.24696 2.90353 2.73746 3.18153 2.89807 2.37893 2.77526 2.98499 4.58484 3.61510
- 0.09563 2.43065 5.73865 0.67073 0.71608 0.48576 0.95510
- 16 2.91101 3.31342 4.36759 3.41772 2.45121 4.01227 4.31421 2.75922 2.81772 2.31733 3.50420 3.69862 4.38187 3.88257 3.14725 3.02772 3.14303 2.46483 3.37889 1.69905 18 y - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 17 2.88484 5.28431 3.03179 2.31849 4.58595 3.47769 3.54625 2.98124 1.69233 2.43413 4.04064 3.16353 4.06907 2.72555 2.58277 2.55274 3.04512 3.20501 5.74377 4.36100 19 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 18 1.57125 2.56460 3.38436 3.39201 3.66458 2.34190 4.20526 2.93932 3.32823 2.44127 3.26099 3.74334 4.30466 3.60817 3.63469 3.01628 2.92537 2.55308 5.13581 3.91882 20 a - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 19 2.89298 4.40558 3.44708 2.63051 3.77015 3.77747 2.87940 2.57515 2.33949 2.85128 3.20054 3.37379 4.16367 2.65910 2.52913 2.67954 2.59930 2.46709 5.42679 3.74337 21 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 20 2.88350 5.37811 2.42858 2.28192 4.71668 3.65945 2.35349 4.19788 2.20596 2.91798 4.42054 2.38258 4.05280 2.81490 2.60119 2.77457 3.11461 3.76528 3.43428 3.80493 22 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 21 2.59359 5.30144 3.00667 2.46268 4.60954 3.67285 3.22394 2.91749 2.13087 2.60378 4.35201 3.05590 3.51881 2.48537 2.35096 2.62551 3.00998 2.84793 5.75687 4.36947 23 k - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 22 2.64500 5.38003 2.46961 2.36386 4.71962 2.36153 3.71093 3.77963 2.19342 3.27291 4.42213 2.49968 3.44456 2.94396 2.94770 2.23767 2.90215 3.58800 5.81601 3.79868 24 k - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 23 2.71410 5.35453 2.26257 2.17828 4.68327 3.06138 3.85215 3.65600 2.51871 3.65284 4.39957 2.64619 4.05631 2.95399 2.98284 2.41102 1.94961 3.19379 5.79713 3.78693 25 t - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.03260 5.01631 3.67114 0.61958 0.77255 0.48576 0.95510
- 24 2.77509 4.50579 3.06414 2.40741 4.68877 2.10468 3.84020 4.16638 2.52713 3.65577 4.39945 2.31826 2.82304 2.55347 2.45557 2.51717 3.10489 3.55245 5.79545 3.68618 26 g - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.13496 4.99383 2.12471 0.61958 0.77255 0.54753 0.86365
- 25 2.82390 4.23357 2.59579 2.09029 4.65095 3.47120 3.53571 3.50264 1.93281 3.24335 4.10745 2.98984 3.99409 2.41262 2.43858 2.60001 2.84781 3.57090 5.75206 3.98239 27 k - - E
- 2.68634 4.42166 2.77510 2.73101 3.46370 2.40521 3.72473 3.29370 2.67713 2.69347 4.24706 2.90350 2.73742 3.18145 2.89817 2.37895 2.77536 2.98516 4.58493 3.61485
- 0.21086 2.33296 2.37401 1.37928 0.29003 0.81455 0.58490
- 26 2.79249 4.86773 3.27912 2.48247 3.81836 3.65430 3.86742 2.36980 2.31612 2.40000 3.66176 2.98804 3.52938 2.45192 2.80383 2.80149 2.71760 2.93241 5.39419 3.83742 36 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01259 4.77670 5.49905 0.61958 0.77255 0.27298 1.43175
- 27 2.94684 4.40681 4.93000 4.33270 2.14562 4.19543 4.43742 2.60780 4.12995 2.51432 3.32273 4.32339 4.55150 4.25562 4.15094 3.50804 3.26683 1.12964 4.39266 2.23526 37 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 28 0.67405 4.13502 4.78133 4.26234 4.00859 4.13420 4.88775 2.58668 4.14876 2.87877 3.59530 4.37511 4.66004 4.38446 4.34251 3.50924 3.44597 2.20111 5.62436 4.43519 38 A - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 29 2.77559 4.05359 4.82280 4.21814 3.45081 3.88127 4.46447 1.69887 3.29990 2.06046 2.92956 4.25618 4.49083 4.18293 4.07725 3.28739 3.19210 1.31639 4.98894 3.80930 39 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 30 4.13385 6.06880 4.58555 3.84767 5.73274 4.53840 4.41573 5.06650 0.32256 4.37802 5.30885 4.14872 4.92009 3.55775 2.54913 4.11741 4.25754 4.75872 6.25921 5.22828 40 K - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 31 2.53136 3.93442 3.55191 2.54113 3.59001 3.81267 3.67691 2.09853 2.22431 2.85063 3.63116 3.45300 4.19661 2.87681 2.71089 2.96116 2.67441 2.46338 5.34241 3.76111 41 i - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 32 2.80227 4.30542 4.81704 3.71619 2.31247 3.45194 4.41496 1.85614 4.00698 1.68898 3.06826 4.22398 4.44809 4.15126 4.03957 3.11345 3.01936 1.82478 4.92889 3.75130 42 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 33 2.72320 4.19698 2.89173 2.30854 4.21536 3.66470 3.63903 3.54937 1.81020 3.33297 4.38970 2.50126 3.12497 2.85129 2.61476 2.47307 2.93549 3.43057 4.63863 3.86554 43 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 34 2.73748 5.16363 3.24304 2.62749 4.42406 3.39882 3.64889 3.08793 1.75481 2.64054 4.22767 2.81684 3.49630 2.92572 2.69253 2.71691 2.78362 2.91622 5.65055 3.09244 44 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 35 2.82342 4.21564 2.57688 2.18304 4.09635 3.66104 3.29269 4.17416 2.24176 3.24419 4.40775 3.13331 3.02670 2.66210 2.30119 2.38622 2.91913 2.84969 5.80393 4.13733 45 e - - H
- 2.68618 4.42225 2.77520 2.73124 3.46354 2.40513 3.72495 3.29354 2.67741 2.69355 4.24690 2.90347 2.73731 3.18147 2.89801 2.37887 2.77520 2.98519 4.58477 3.61503
- 0.02362 3.90596 5.73865 0.48782 0.95182 0.48576 0.95510
- 36 2.81479 5.38805 2.34307 2.08229 3.84722 3.00939 3.24618 4.21561 2.24819 3.24444 4.42924 2.80965 3.63231 2.74299 2.65208 2.41080 2.72103 3.26063 5.82196 4.16400 47 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 37 2.42659 5.32934 2.94543 1.98753 4.27035 3.66735 3.85733 2.97282 2.27697 3.20526 3.75542 2.69174 3.50027 2.79550 2.45131 2.66535 2.70832 3.28701 5.77800 4.07668 48 e - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 38 2.82479 5.36482 2.46403 2.36491 4.23121 3.19666 3.53460 3.47934 2.01766 2.87145 4.06028 2.53791 3.88358 2.73438 2.79605 2.39315 2.94316 3.30320 5.80464 3.67777 49 k - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 39 2.81259 3.82036 2.58997 2.16257 3.93187 3.50795 3.44913 3.32347 2.23760 3.42042 3.43188 3.03914 3.18139 2.98833 2.90722 1.97318 3.04237 3.44327 4.85883 4.01646 50 s - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.04017 5.01631 3.41907 0.61958 0.77255 0.48576 0.95510
- 40 2.75150 4.68420 2.78864 2.20581 3.96394 3.14028 3.85474 3.62649 2.17804 2.84544 3.93254 2.66146 3.79370 2.72658 2.87564 2.43841 2.71937 3.23202 3.36778 4.34996 51 k - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01020 4.98634 5.70869 0.61958 0.77255 0.56699 0.83755
- 41 2.52028 4.29421 2.93844 2.26593 3.28616 3.42961 3.89113 3.40312 1.92589 2.89626 3.59280 3.04537 4.08209 2.42956 3.02333 2.89065 2.87512 2.78376 5.62895 3.97726 52 k - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.06456 4.98634 2.88790 0.61958 0.77255 0.56699 0.83755
- 42 2.52102 4.66200 2.60886 2.12080 3.90563 3.43164 3.41299 3.76759 2.19798 2.95231 4.37667 2.71584 3.31098 2.66775 2.46389 2.65499 2.89357 3.57073 4.74853 4.36793 53 e - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.06881 4.93254 2.82535 0.61958 0.77255 0.69302 0.69327
- 43 2.65676 5.27743 2.81592 2.16715 4.59834 3.44096 3.79920 2.82354 2.10889 3.57233 3.78816 2.93522 4.00237 2.20078 2.58862 2.72374 2.99283 3.18643 5.72482 3.30249 54 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.04191 4.87514 3.39892 0.61958 0.77255 0.80592 0.59181
- 44 2.46416 5.14935 3.14274 2.35064 4.42785 3.46788 3.62138 3.06885 2.39724 2.90472 4.00413 2.77252 4.01153 2.56699 2.69346 2.37713 2.33258 3.34725 5.62407 3.30627 55 t - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.15381 4.84499 2.00472 0.61958 0.77255 0.85820 0.55151
- 45 2.15178 5.11690 2.80767 2.47016 4.06926 3.56450 3.25874 3.42510 2.38373 2.72748 4.17388 2.58132 3.95629 2.68997 2.59104 2.52019 2.89357 3.10461 5.58730 3.84420 56 a - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.06869 4.70471 2.85898 0.61958 0.77255 1.05523 0.42788
- 46 2.33893 4.38200 3.78128 3.08857 2.87706 3.76539 4.03303 2.50172 2.82237 2.26545 3.48958 3.56901 4.14175 3.13269 2.43377 3.02211 2.55318 2.18677 4.40164 3.75633 57 v - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.07407 4.65033 2.78326 0.61958 0.77255 1.03937 0.43646
- 47 2.66580 4.77769 3.25859 2.69691 3.69577 3.61140 3.56963 3.36841 2.45062 2.28390 3.86113 2.83101 3.99793 3.01640 2.00932 2.40384 2.97180 2.98514 3.81809 4.01106 58 r - - H
- 2.68588 4.42292 2.77574 2.73101 3.46421 2.40561 3.72562 3.29362 2.67747 2.69305 4.24679 2.90348 2.73776 3.18179 2.89693 2.37874 2.77432 2.98554 4.58544 3.61510
- 0.56084 0.85690 5.33966 1.67148 0.20822 0.22069 1.61932
- 48 3.87852 6.35819 2.88185 0.33512 5.75300 3.98086 4.66680 5.41085 3.73193 4.87592 5.81368 3.19190 4.67406 3.86930 4.28895 3.74624 4.21685 4.94226 6.88673 5.40485 78 E - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 49 2.34469 4.06185 4.67394 3.74635 3.19070 3.72385 4.38165 1.69529 3.89930 1.68521 3.30505 3.88179 4.42519 3.50953 3.71087 3.12279 3.14596 1.99339 4.94125 3.41486 79 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 50 2.41611 3.92039 3.06862 2.24055 4.69692 3.38839 3.50460 4.17440 2.17094 3.43336 4.01855 2.84870 4.05421 2.22409 2.42800 2.49697 2.93959 3.48161 5.80403 3.10747 80 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 51 2.65097 4.31309 4.79937 4.19096 3.25102 4.08746 4.41763 1.57396 3.99634 1.77576 3.18772 3.58572 4.45127 4.14513 4.03729 2.91921 3.15786 1.73265 4.93848 3.33785 81 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 52 2.71474 4.35776 4.49839 3.90546 3.26558 3.60358 3.11363 2.58541 3.76519 1.24138 2.56017 3.78382 4.40165 3.77674 3.90460 2.91080 2.88501 2.43218 4.97232 3.44306 82 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 53 2.21717 5.37509 3.13954 2.36108 4.71254 3.44569 3.50643 4.19289 1.90576 2.89362 4.41783 2.84264 3.50886 2.51670 2.27883 2.73413 2.79427 3.37900 5.81221 4.40629 83 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 54 2.88332 4.76187 3.15794 2.34306 4.64959 3.18467 2.98724 4.11774 2.20976 2.84622 3.53657 2.69640 4.06011 2.81953 2.22587 2.26090 2.67755 3.39248 5.77872 3.89328 84 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 55 2.92075 3.71086 4.82119 4.21031 2.91851 4.08375 4.41406 2.48059 4.00923 1.14255 2.77088 4.22517 4.44739 4.15194 3.51737 2.79440 3.04088 2.14784 4.92583 3.58797 85 l - - H
- 2.68619 4.42231 2.77526 2.73130 3.46360 2.40505 3.72501 3.29360 2.67737 2.69361 4.24696 2.90322 2.73746 3.18153 2.89797 2.37878 2.77526 2.98514 4.58483 3.61509
- 0.21093 1.81438 3.60337 0.15203 1.95873 0.48576 0.95510
- 56 2.87228 4.32697 2.43695 2.52023 4.72535 3.09966 3.42727 4.21076 2.24746 3.68599 4.14994 2.21640 3.70120 2.45856 2.42604 2.20075 2.84715 3.77128 5.81417 4.40372 87 s - - S
- 2.68626 4.42233 2.77498 2.73131 3.46362 2.40515 3.72479 3.29362 2.67733 2.69363 4.24698 2.90355 2.73719 3.18141 2.89809 2.37895 2.77498 2.98527 4.58485 3.61511
- 0.08622 2.53438 5.71435 0.90816 0.51628 0.44628 1.02166
- 57 2.95437 4.05540 4.02453 3.66262 4.73022 3.00582 0.63840 4.27369 3.61156 3.92435 4.76053 3.90244 4.38221 3.97389 3.93213 2.36608 3.39859 3.79517 6.08861 4.80370 91 H - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 58 2.74925 4.59154 2.64384 2.02057 4.69046 3.19970 3.85151 4.16644 2.39568 3.65893 3.99620 3.06676 1.73396 2.95270 2.98758 2.52836 2.96698 3.57815 5.80119 4.39902 92 p - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 59 2.77600 3.63123 3.60742 3.04389 2.88763 3.83093 3.22852 3.27052 2.82124 2.96220 3.83761 1.44485 4.21384 3.33393 3.26463 3.06163 2.84916 2.86372 5.30436 2.85576 93 n - - S
- 2.68619 4.42226 2.77521 2.73125 3.46355 2.40506 3.72496 3.29355 2.67742 2.69356 4.24691 2.90348 2.73741 3.18148 2.89802 2.37880 2.77521 2.98520 4.58478 3.61504
- 0.02736 3.73933 5.73865 0.64347 0.74542 0.48576 0.95510
- 60 3.43736 4.73250 5.40681 4.85032 3.21534 3.89737 5.21348 0.72821 4.70181 2.29095 3.77438 4.92025 5.08011 4.86610 4.77171 4.12622 3.68020 1.72131 5.65218 4.46593 96 i - - B
- 2.68620 4.42119 2.77522 2.73126 3.46356 2.40515 3.72497 3.29356 2.67743 2.69357 4.24692 2.90349 2.73742 3.18149 2.89780 2.37889 2.77522 2.98521 4.58479 3.61505
- 0.04171 3.27988 5.73865 0.65380 0.73410 0.48576 0.95510
- 61 3.22247 3.52386 5.20134 4.62057 3.74032 4.49428 4.89197 1.38422 4.44333 2.03444 3.40884 4.64781 4.83078 4.60265 4.48778 3.55308 3.01459 1.16992 5.37248 4.18666 99 v - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 62 2.72238 4.59459 3.13585 2.30027 4.72566 3.17722 3.67251 4.20868 2.00822 3.53187 4.42604 2.97500 3.44674 2.41134 2.06447 2.53711 2.32763 3.77297 5.81907 4.41084 100 k - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 63 2.75790 4.02501 4.89076 4.27684 2.25991 4.10991 4.44304 2.31340 4.06541 1.38378 2.56521 4.26823 4.47075 4.19670 4.07763 3.42134 2.72551 2.21249 4.93572 3.01728 101 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 64 2.79378 4.36122 4.48297 3.70404 2.84684 4.03133 3.55103 1.94759 2.82835 1.82248 3.32801 4.05424 4.39941 3.70850 3.13439 3.15759 3.14407 2.41334 4.25902 2.30786 102 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 65 2.47264 4.33075 2.07830 2.03157 4.71750 2.27093 3.18950 4.19892 2.58523 3.68152 4.42156 3.04070 4.05295 2.84140 2.67254 2.59104 3.11515 3.76615 5.81569 3.60292 103 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 66 2.10377 4.03530 4.82986 4.21790 2.76136 4.07923 4.41023 2.08081 4.01359 2.30827 2.78821 4.22543 4.44340 4.15406 4.03913 2.38166 2.60707 1.97272 3.19782 3.33258 104 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 67 2.82605 3.67894 3.38070 3.01266 1.82001 3.97118 3.82789 2.76491 3.48734 2.34143 3.24926 3.10725 3.78017 3.42990 3.73647 2.98277 3.13977 2.32864 3.87637 2.72935 105 f - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.04987 5.01631 3.16967 0.61958 0.77255 0.48576 0.95510
- 68 2.55964 4.21441 3.10666 1.94329 4.49707 3.21758 3.46239 3.37098 2.39709 3.00488 3.51821 3.06808 4.06187 2.54621 2.66989 2.75991 2.68522 3.13970 5.68635 3.14043 106 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02094 4.97674 4.28127 0.61958 0.77255 0.42506 1.06054
- 69 2.80310 5.38415 2.22807 2.18295 4.72718 3.65266 3.36574 4.21171 2.46641 3.56699 4.42536 2.57848 3.46451 2.86899 2.36310 2.58224 2.17995 3.52075 5.81804 3.65548 107 t - - E
- 2.68640 4.42162 2.77535 2.73147 3.46354 2.40551 3.72458 3.29233 2.67716 2.69348 4.24762 2.90375 2.73699 3.18187 2.89837 2.37858 2.77480 2.98522 4.58549 3.61548
- 0.36809 1.18844 5.72853 1.68950 0.20409 0.46837 0.98355
- 70 2.88244 5.39287 2.47300 2.29715 3.79460 2.82884 3.28660 4.22374 2.09832 3.69810 4.43357 2.45444 3.07035 2.85151 2.47539 2.34133 3.01376 3.78345 5.82560 4.10620 126 k - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 71 2.57798 5.39101 2.06614 2.42374 4.73510 2.82383 3.84381 4.22040 2.28304 3.69587 4.43195 2.62257 3.38372 2.71683 2.73886 2.29050 2.66881 3.34289 5.82427 4.18691 127 d - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 72 2.58231 5.35788 2.77781 2.22432 4.08337 3.66211 2.49021 4.16401 2.37240 3.16748 4.40241 2.52484 4.05523 2.76334 2.63486 2.49164 2.89823 3.30761 4.95167 3.05734 128 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 73 2.78575 3.74303 4.78141 4.17260 2.95491 4.07322 4.40160 1.89067 3.97854 1.60353 2.95383 3.71592 3.11906 4.12798 3.50390 3.07790 2.85145 2.24111 4.92509 2.91282 129 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 74 2.58399 2.76389 4.59675 3.99881 3.19843 4.04871 3.62339 2.65148 3.84111 2.12752 3.45456 3.62454 3.46238 4.02369 3.94739 2.79096 3.14543 2.42948 3.13888 1.74690 130 y - - E
- 2.68624 4.42096 2.77500 2.73129 3.46360 2.40508 3.72501 3.29360 2.67747 2.69353 4.24696 2.90343 2.73746 3.18153 2.89807 2.37893 2.77510 2.98525 4.58483 3.61509
- 0.10354 2.49668 4.13492 0.66960 0.71726 0.48576 0.95510
- 75 3.07392 4.44555 4.97084 3.81418 2.87255 4.25097 4.57886 1.74564 4.16653 1.31678 2.12605 4.39109 4.59167 3.71495 4.19337 3.56380 3.30386 2.29390 5.05348 3.89648 133 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01003 5.00344 5.72579 0.61958 0.77255 0.52175 0.90012
- 76 2.86449 3.41378 5.01300 4.41506 3.07458 4.28568 4.64425 1.49634 4.22335 2.27773 3.54368 4.43380 4.63588 3.70581 4.25773 3.60458 3.30826 1.19505 5.13861 3.95920 134 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01003 5.00344 5.72579 0.61958 0.77255 0.46390 0.99109
- 77 2.91733 4.35063 4.55668 3.96112 2.40516 4.04680 4.36140 2.56068 3.81048 1.70108 1.79340 3.59899 4.41359 3.09405 3.93172 3.15547 2.48177 2.59902 4.96582 3.78095 135 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 78 2.76564 5.57030 2.50020 1.03018 4.90220 3.70297 3.44513 4.39514 2.75995 3.87044 4.62325 3.16505 3.19754 2.75935 3.27129 2.65802 3.28146 3.95557 6.00401 4.57374 136 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 79 2.81579 3.90369 4.68991 4.08721 2.27644 4.06399 3.63829 2.69790 3.58050 1.84024 3.31248 4.16081 4.42953 4.07816 3.60709 3.36667 3.01039 2.57256 4.40465 1.54393 137 y - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 80 2.45920 2.17262 4.69646 4.09287 3.22405 3.32199 3.21264 2.59887 3.91610 2.06244 2.25581 4.16309 3.61702 4.08102 3.98811 3.14866 3.14614 2.03766 4.93767 3.46778 138 v - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.04171 5.01631 3.37486 0.61958 0.77255 0.48576 0.95510
- 81 2.70314 5.37371 2.37994 1.91497 4.71601 2.93053 3.83161 4.20005 2.46492 3.55263 3.57885 2.58870 2.59223 2.74552 2.71928 2.69862 3.03649 3.29150 5.80804 4.39872 139 e - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01022 4.98481 5.70716 0.61958 0.77255 0.57090 0.83245
- 82 2.41993 3.72287 3.12898 2.52046 4.44831 1.89639 3.49536 3.62837 2.38762 3.31281 3.53904 2.44913 3.42379 3.00780 3.12891 2.87912 2.75467 3.52812 5.65946 3.81984 140 g - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.10979 4.98481 2.33166 0.61958 0.77255 0.57090 0.83245
- 83 2.77350 5.21303 2.43943 2.62703 4.54309 1.39496 3.89257 3.99092 2.60267 3.54085 4.32260 3.04209 4.06226 3.01831 3.03242 2.64588 2.77651 3.04353 5.73236 4.35922 141 g - - -
- 2.68631 4.42210 2.77537 2.73126 3.46359 2.40522 3.72475 3.29338 2.67758 2.69250 4.24657 2.90377 2.73770 3.18148 2.89796 2.37902 2.77541 2.98478 4.58507 3.61496
- 0.21230 1.67338 5.60865 1.39945 0.28334 0.33567 1.25476
- 84 2.88583 5.39491 1.79381 2.06461 4.73890 3.24821 3.51210 4.22442 2.47141 3.51906 4.43601 2.95989 3.57031 2.79057 2.82788 2.02605 2.91163 3.62254 5.82805 4.41723 147 d - - B
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 85 2.90986 4.42406 3.70533 3.66371 3.02577 3.99009 3.90749 2.78363 3.56278 1.02082 3.24022 3.34355 4.36146 3.52102 3.78389 3.13807 2.95820 2.60948 5.03043 3.48016 148 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 86 2.57337 4.10245 3.03950 2.95233 2.09915 3.53742 3.15959 3.37138 2.66519 2.44003 3.54971 3.10382 3.71714 3.06888 3.13958 2.44794 3.05039 3.11306 4.61969 3.07664 149 f - - H
- 2.68621 4.42228 2.77522 2.73126 3.46357 2.40516 3.72497 3.29357 2.67744 2.69358 4.24693 2.90350 2.73735 3.18149 2.89804 2.37890 2.77502 2.98521 4.58480 3.61458
- 0.24291 3.02648 1.78874 0.58545 0.81386 0.48576 0.95510
- 87 2.29362 5.30873 1.92419 2.32474 4.26868 3.43187 3.46788 4.12970 2.37357 3.61146 4.35100 2.92576 3.98105 2.69850 2.60197 2.47206 2.54407 3.69618 5.74493 3.96335 152 d - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01185 4.83724 5.55959 0.61958 0.77255 0.87096 0.54223
- 88 2.24696 4.24235 4.56569 3.96478 2.41045 3.97137 3.29432 2.27668 3.43922 2.04964 3.19406 4.05576 4.33743 3.97000 3.38896 3.27217 3.06100 2.23241 4.18296 2.20711 153 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01185 4.83724 5.55959 0.61958 0.77255 0.87096 0.54223
- 89 3.80243 5.01974 5.81731 5.27268 3.70245 5.26548 5.70409 1.30084 5.15744 0.98923 3.04180 5.42350 5.39649 5.16571 5.17462 4.65797 4.03105 1.75151 5.84473 4.80632 154 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01185 4.83724 5.55959 0.61958 0.77255 0.62617 0.76494
- 90 2.48275 5.13868 3.18520 2.44727 3.97540 3.65122 3.65677 3.36126 2.16734 3.30486 3.19390 3.06911 4.04233 2.41632 2.75033 2.25069 2.41675 3.09873 5.62108 3.69504 155 k - - H
- 2.68595 4.42186 2.77509 2.73103 3.46377 2.40517 3.72421 3.29387 2.67761 2.69368 4.24695 2.90368 2.73754 3.18175 2.89730 2.37895 2.77536 2.98514 4.58473 3.61505
- 0.63487 1.25520 1.68753 1.39580 0.28453 0.74756 0.64154
- 91 2.43987 5.24839 2.75312 2.20207 4.11839 3.54175 3.72993 4.06095 2.07671 3.34429 3.98666 2.75679 3.72576 2.60349 2.28520 2.46158 2.79062 3.43756 5.68761 3.81452 172 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01352 4.70589 5.42824 0.61958 0.77255 0.34096 1.24163
- 92 2.56414 5.37054 2.84426 2.11401 4.71382 2.70860 2.88683 4.19851 2.19051 3.14492 4.41168 2.55924 4.03189 2.79129 2.63798 2.35762 3.09530 3.76022 5.80426 3.44686 173 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01035 4.97167 5.69402 0.61958 0.77255 0.60365 0.79145
- 93 2.86527 4.78061 2.95620 2.59670 4.27271 1.99448 3.84571 3.48713 2.08881 3.39073 4.33266 2.46895 3.64059 2.84730 2.63768 2.84659 2.50396 3.24160 5.73764 4.35043 174 g - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01035 4.97167 5.69402 0.61958 0.77255 0.46145 0.99524
- 94 2.57883 3.45102 3.31966 2.70191 4.02973 3.16828 3.76144 3.12068 2.26544 3.06289 4.10647 2.81108 2.70638 2.99156 2.57108 2.49596 2.68439 2.78596 4.48656 4.03099 175 k - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01001 5.00539 5.72774 0.61958 0.77255 0.51640 0.90799
- 95 3.00846 4.37852 4.95050 4.33851 2.03946 4.18408 4.51243 2.07907 4.13124 1.32746 2.71567 3.86888 4.53472 4.25457 4.14405 3.49709 3.23945 2.15194 4.98866 3.35208 176 l - - T
- 2.68632 4.42239 2.77534 2.73137 3.46298 2.40515 3.72509 3.29351 2.67755 2.69332 4.24641 2.90361 2.73734 3.18136 2.89815 2.37881 2.77519 2.98532 4.58491 3.61446
- 0.13280 2.11108 5.72774 1.00017 0.45858 0.46707 0.98573
- 96 2.55096 5.39506 2.51329 2.14467 4.73966 3.20813 3.84532 4.22553 2.37049 3.70015 4.43599 2.79265 3.16832 2.74582 2.82569 1.88822 2.42672 3.78548 5.82793 4.41687 180 s - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 97 2.55253 5.00371 2.91674 1.56530 3.77486 3.74196 3.71669 3.18678 2.77868 2.90828 3.00031 3.29724 3.28640 3.12328 3.07027 2.76413 2.89289 3.32236 3.74938 3.48354 181 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 98 2.59075 4.32000 2.44335 2.15201 3.95693 3.12347 3.34011 3.83572 2.30797 3.16698 3.93315 2.75363 3.60071 2.81660 2.61665 2.70578 2.85000 3.34465 3.67935 4.00275 182 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 99 2.65092 5.35978 2.44414 1.82235 4.69093 3.44711 3.03513 3.63938 2.46445 2.69072 4.40412 3.13476 3.87902 2.43027 2.99516 2.67955 2.75495 3.20344 5.80088 4.03299 183 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 100 1.86496 3.02665 4.71869 4.11439 3.41506 3.78632 4.39467 1.72869 3.93413 2.03606 3.25110 4.17623 4.43415 4.09606 3.42450 3.02051 2.94480 2.04904 4.94015 3.76003 184 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 101 2.66380 3.60669 3.09016 2.70629 3.97052 3.12773 3.91117 3.25572 1.80561 2.74214 4.19581 3.23071 4.10037 2.51557 2.19861 2.73033 3.11863 2.97558 5.62300 4.27841 185 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 102 2.65525 3.61780 2.73206 2.59880 2.91626 3.69337 3.17740 3.91061 2.06495 2.87551 3.62080 2.65252 4.08468 3.01717 2.55140 2.50072 2.84956 3.37543 5.67937 3.86408 186 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 103 2.78549 3.75825 4.89230 4.27707 2.37628 4.09576 4.42870 1.58181 4.06146 2.16353 2.83229 4.25917 4.45832 4.19107 4.06819 3.40747 3.15724 2.08428 3.94244 2.32199 187 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 104 1.91854 4.04767 4.83572 4.22341 2.21465 3.82491 4.41156 2.18264 4.01792 2.17430 2.43077 4.22827 4.44431 4.15736 4.04152 2.82624 2.88622 2.07903 4.25105 3.74133 188 a - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 105 2.59846 4.94560 3.39451 2.56515 3.67443 3.44440 3.79808 3.54150 2.22767 2.11264 4.02778 3.19297 4.14629 3.16161 2.51054 2.63727 2.68778 3.11215 4.13689 2.62651 189 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 106 2.71202 4.65478 2.93025 2.07602 4.70407 3.24619 3.70431 4.18261 2.58938 3.67040 4.10390 3.00747 4.05496 1.41184 3.00214 2.55548 2.74962 3.75459 5.80879 4.40428 190 q - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 107 3.40758 4.70636 5.39472 4.82751 3.82844 4.73217 5.15283 1.33187 4.66862 1.85779 2.55181 4.88258 5.03394 4.81634 4.72035 4.07618 2.46891 1.37416 5.58393 4.41648 191 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 108 2.29107 3.23763 4.81578 4.20571 3.00975 3.26830 4.41487 2.37700 4.00619 1.39060 3.28560 4.22330 4.44775 4.15070 4.03923 2.94875 3.15303 1.86969 4.92930 3.75166 192 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 109 2.62933 4.07203 2.95927 2.08969 4.71415 3.53463 3.84677 3.97436 2.17805 2.82549 4.41873 2.79932 4.05232 2.53645 2.16719 2.25459 2.86145 3.76301 5.81311 4.40656 193 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 110 1.17650 4.82606 4.24050 3.83461 4.98724 1.08848 4.85992 4.42183 3.81285 4.07900 4.88120 3.97861 4.34888 4.10941 3.49121 2.50205 3.18154 3.58125 6.30917 5.10145 194 g - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 111 3.90271 5.14012 5.90469 5.33230 3.41122 5.28833 5.65529 2.02087 5.19062 0.88043 2.65524 5.45552 5.42442 5.15469 5.16815 4.66249 4.12260 1.40813 5.79888 4.77647 195 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 112 2.18892 5.38966 2.64044 1.97751 4.73333 3.65659 3.60437 3.92129 2.10090 3.35469 4.43069 2.33847 4.05005 2.60616 2.77179 2.58383 3.11351 3.51057 5.82316 3.92131 196 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 113 2.81051 5.07767 4.77644 4.29954 2.03535 4.57845 2.23184 3.59557 4.18346 3.18325 4.21755 4.37554 4.93163 4.33627 4.35340 3.88728 3.48134 3.41897 4.49144 0.85916 197 y - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 114 3.22459 2.61128 5.38969 4.79509 3.58979 4.68737 5.03975 1.79213 4.61293 0.89179 2.61919 4.84389 4.96801 4.69100 4.62327 4.02095 3.66625 2.57847 5.40913 4.29402 198 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 115 4.50357 5.94639 4.67261 4.49457 2.97674 4.90740 0.35314 4.75553 4.20979 3.98991 5.25041 4.60971 5.36272 4.62490 4.36557 4.47961 4.76464 4.60938 4.62703 2.51319 199 H - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 116 2.59851 4.33805 2.68311 2.05797 4.71676 3.15802 3.59362 3.65569 2.43439 3.32473 4.42034 2.78736 4.05190 2.70193 2.69422 1.73897 3.11362 3.60918 5.81450 4.40740 200 s - - H
- 2.68619 4.42226 2.77521 2.73118 3.46355 2.40514 3.72496 3.29355 2.67742 2.69356 4.24691 2.90348 2.73741 3.18131 2.89802 2.37888 2.77521 2.98510 4.58478 3.61505
- 0.04979 3.09322 5.73865 0.35009 1.21950 0.48576 0.95510
- 117 2.54785 4.42029 2.89622 2.25922 4.34868 3.66610 3.21799 3.71995 2.27125 3.07920 3.10189 2.25867 4.05899 2.34775 2.56766 2.85682 3.11428 3.36249 5.78309 3.93739 202 n - - T
- 2.68634 4.42198 2.77524 2.73138 3.46344 2.40486 3.72467 3.29300 2.67713 2.69352 4.24714 2.90371 2.73709 3.18145 2.89825 2.37911 2.77527 2.98532 4.58501 3.61528
- 0.09842 2.40225 5.73865 1.69597 0.20263 0.48576 0.95510
- 118 2.53322 5.34393 2.95935 2.59629 3.94657 1.84501 3.63806 4.14023 2.18335 3.64044 4.39013 2.55576 3.77395 2.95784 2.71428 2.21077 3.11477 3.72355 4.68564 4.39095 213 g - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 119 3.55513 4.24694 5.60079 5.05662 2.60993 4.96071 5.43324 0.97900 4.91818 2.09234 3.80321 5.12225 5.23216 5.06726 4.97588 4.32549 3.79818 1.34455 5.81250 4.64107 214 i - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 120 2.50668 3.55624 4.84676 4.23404 3.24346 4.08398 4.41611 1.66920 4.02684 2.01982 2.79518 4.23489 4.44784 4.16480 3.83668 2.91482 2.83994 1.71230 4.92013 3.32611 215 i - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 121 4.62495 5.94818 4.90176 4.71687 2.80207 5.05504 0.41821 4.71670 4.43975 3.92227 5.21366 4.70109 5.45885 4.74110 4.56151 4.57303 4.86606 4.59605 4.46431 2.05738 216 H - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 122 3.04282 4.16968 3.83274 3.22981 4.12386 3.92565 4.16387 3.45658 2.89535 2.79946 3.52962 3.63885 4.33284 3.40809 0.88367 3.03173 2.91452 3.20781 5.47983 4.24517 217 r - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 123 4.66549 6.56867 0.13049 3.73947 6.20930 4.51726 5.46620 6.15252 4.80154 5.54790 6.65359 4.31602 5.22661 4.77980 5.35908 4.57977 5.04873 5.69924 7.06132 6.05090 218 D - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 124 4.11594 5.30633 6.13178 5.57769 3.73657 5.59693 5.98457 1.50133 5.46568 0.67788 3.07617 5.76705 5.63423 5.36401 5.43088 5.00606 4.33175 2.14525 5.97972 5.01356 219 L - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 125 4.55719 6.24846 4.80697 4.34215 5.94023 4.73956 5.02576 5.52333 0.17090 4.86848 5.87217 4.66859 5.24422 4.23030 3.41495 4.59394 4.77093 5.20290 6.57866 5.65826 220 K - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 126 2.73388 4.87911 3.10327 2.90832 4.07991 3.41413 4.01646 3.20246 2.89177 2.38683 3.78561 3.39051 1.51394 3.22647 3.32105 2.31617 2.81372 3.19214 5.43675 4.15025 221 p - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 127 2.30763 5.39894 2.49711 1.50775 4.74209 3.53358 3.60730 4.22742 2.31483 3.70337 3.89187 2.94609 4.05547 2.65035 3.08133 2.29509 3.12215 3.78862 5.83238 4.42137 222 e - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 128 4.24075 6.04161 4.10323 4.13804 5.66046 4.44992 5.52992 5.77835 4.64675 5.26705 6.30900 0.15130 5.17553 4.91694 4.94682 4.32646 4.70552 5.25421 6.75952 5.61338 223 N - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 129 3.55135 3.88080 5.58388 5.03211 3.05772 4.93598 5.38843 0.81084 4.88763 1.84199 3.74557 5.09695 5.20522 5.02095 4.93631 4.29650 3.79207 1.75582 5.75938 4.60163 224 i - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 130 4.26500 5.46000 6.21355 5.61602 2.31085 5.64571 5.88455 2.68862 5.47780 0.52109 2.36789 5.81754 5.61663 5.25881 5.37169 5.03996 4.45544 2.72136 5.81387 4.88779 225 L - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 131 3.14725 3.80930 5.11896 4.51210 2.75868 4.35237 4.69393 1.48763 4.30885 1.32733 3.15909 4.51494 4.68518 4.42027 4.31553 3.67228 3.37834 1.91515 5.14039 3.60311 226 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 132 2.83132 4.28838 2.02200 2.41335 4.70055 3.12743 3.31546 4.17875 2.06503 3.46693 4.09733 2.49326 4.05387 2.94892 3.07895 2.27711 2.89161 2.90947 5.80603 4.40188 227 d - - E
- 2.68620 4.42227 2.77521 2.73125 3.46356 2.40515 3.72496 3.29356 2.67743 2.69346 4.24692 2.90348 2.73741 3.18137 2.89794 2.37889 2.77521 2.98513 4.58479 3.61505
- 0.19179 2.92011 2.11536 0.31959 1.29625 0.48576 0.95510
- 133 2.77846 5.34345 2.73873 2.12504 4.68884 3.31622 3.10327 4.17503 2.07146 3.64885 4.14408 2.35495 3.55373 2.53396 2.68259 2.30312 2.80970 3.73426 5.77591 4.07717 229 k - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01122 4.89146 5.61380 0.61958 0.77255 0.46383 0.99121
- 134 2.76231 5.37627 2.40965 2.30431 4.72103 3.48860 3.46007 4.20680 2.15285 3.68141 4.41704 2.22463 3.54282 2.67483 2.66394 2.48608 2.48229 3.08661 5.80911 4.39830 230 k - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01030 4.97674 5.69908 0.61958 0.77255 0.42506 1.06054
- 135 2.88621 4.31580 2.58861 2.52891 4.00821 1.80604 3.64216 3.70404 2.55848 3.01103 3.82083 2.93142 3.28125 2.96153 3.15140 2.63196 2.92652 3.07947 5.65563 3.39061 231 g - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 136 2.74326 5.32913 2.62872 2.23118 4.20190 3.27586 3.01088 3.39612 2.54602 3.28443 3.99578 2.66732 4.06020 2.45230 2.82728 2.54748 2.65672 2.69485 5.77785 3.49295 232 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 137 2.61635 3.28525 4.16732 3.71739 2.98202 4.03403 4.34546 2.03775 3.50788 1.92540 3.47356 3.38535 3.11745 3.96570 3.52677 3.32696 2.46663 1.86856 4.97202 3.78516 233 v - - E
- 2.68644 4.42087 2.77438 2.73125 3.46306 2.40580 3.72561 3.29182 2.67742 2.69394 4.24637 2.90298 2.73752 3.18209 2.89809 2.37898 2.77573 2.98487 4.58490 3.61464
- 0.36530 1.19470 5.73865 2.01193 0.14356 0.48576 0.95510
- 138 2.92386 3.12674 3.30583 2.50241 4.41812 3.73989 3.57074 3.83865 1.16713 3.42239 3.64701 3.25964 4.12762 3.06518 2.74407 2.94589 3.15200 3.22587 5.64420 3.71460 253 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 139 3.61791 5.07369 5.93139 5.42030 4.01697 5.40165 5.95563 1.06228 5.32659 1.08905 3.76387 5.56598 5.56723 5.42106 5.39317 4.81179 4.11011 1.74432 6.14737 5.05160 254 i - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 140 1.74479 2.79152 4.35686 3.77898 3.55350 2.78668 4.34505 2.08763 3.66685 2.55990 3.56128 3.98833 4.38080 3.89329 3.86150 2.46831 2.34811 2.41028 5.05799 3.86488 255 a - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 141 4.66549 6.56867 0.13049 3.73947 6.20930 4.51726 5.46620 6.15252 4.80154 5.54790 6.65359 4.31602 5.22661 4.77980 5.35908 4.57977 5.04873 5.69924 7.06132 6.05090 256 D - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 142 4.66482 5.73614 5.86239 5.64956 0.40883 5.43325 4.33355 3.86711 5.42110 2.16428 4.36705 5.11239 5.65371 5.16689 5.27011 4.83252 4.86624 3.98432 3.74189 2.69037 257 F - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 143 3.93699 5.85566 3.02816 3.87037 6.00993 0.21285 5.44927 5.75466 4.70121 5.27717 6.21696 4.31536 4.99427 4.76567 5.12629 4.02226 4.42780 5.10478 6.99282 5.96830 258 G - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 144 2.54355 3.67295 4.73868 4.13265 2.71576 4.06852 3.76754 2.37455 3.94756 1.20416 3.31174 3.74431 4.43365 4.10500 4.00521 2.64259 3.14725 2.29206 4.93223 3.75278 259 l - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.03189 5.01631 3.69859 0.61958 0.77255 0.48576 0.95510
- 145 0.77520 2.86695 4.81978 4.47036 4.95592 3.15951 5.20700 4.36343 4.38394 4.08078 4.90451 4.25075 4.38058 4.58838 4.56864 1.45304 3.34905 3.34992 6.35477 5.22001 260 a - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.07711 4.99453 2.69658 0.61958 0.77255 0.54567 0.86620
- 146 2.54977 3.79925 3.16699 2.32606 4.48674 3.31547 3.84408 3.47518 1.75582 3.12339 4.25869 2.84258 4.04145 2.96441 2.18943 2.71334 2.91887 2.95414 5.67187 4.30075 261 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.13472 4.92824 2.13029 0.61958 0.77255 0.70219 0.68419
- 147 2.64685 3.78445 3.06669 2.61534 3.32325 3.67596 3.69246 3.14713 2.01231 2.43193 3.43451 3.16113 4.06301 2.47274 3.08778 2.74475 2.84906 2.65428 5.37440 4.07606 262 k - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.29473 4.80574 1.39802 0.61958 0.77255 0.92027 0.50818
- 148 2.40579 4.15423 4.25399 3.66267 2.39272 3.57693 3.44550 2.33935 3.03827 1.86796 2.97007 3.83355 4.18573 3.73297 3.67827 3.10851 2.93289 2.21754 4.76738 2.96352 263 l - - .
- 2.68635 4.42219 2.77489 2.73146 3.46367 2.40530 3.72500 3.29419 2.67720 2.69370 4.24630 2.90362 2.73727 3.18122 2.89818 2.37860 2.77478 2.98583 4.58472 3.61420
- 0.77167 0.63015 5.24955 1.50734 0.25038 0.20147 1.70117
- 149 2.68930 5.13793 2.99383 2.28756 4.12167 3.02811 3.40047 2.83046 2.53990 2.67433 3.91490 2.66806 3.85841 2.95123 3.08518 2.54554 2.43488 3.14237 4.83794 3.11842 281 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 150 2.67960 3.59834 3.08049 2.32634 4.00400 2.85568 3.65072 3.26198 2.22635 2.80014 3.89773 3.03566 3.90780 2.84131 2.77630 2.59674 2.54121 2.94346 4.66327 3.60288 282 k - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 151 2.78407 5.36932 2.80723 2.38070 3.95652 3.28210 3.31902 3.80407 2.38757 3.23090 4.41260 2.26860 2.87333 2.94776 2.55475 2.11230 2.82314 3.31603 5.80800 4.40313 283 s - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 152 2.55066 5.37311 2.42428 2.58328 4.70981 2.65546 3.66067 3.46611 2.34139 3.39818 4.41598 2.44705 3.58966 2.48003 2.87086 2.30355 2.92043 3.58081 5.81084 3.32103 284 s - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 153 2.61131 5.36709 3.05324 2.00706 4.70125 2.53001 3.45141 4.17959 2.46541 3.54879 4.41063 3.13225 3.27183 2.67970 2.77280 2.14590 2.62504 2.97295 5.80635 3.79465 285 e - - S
- 2.68619 4.42226 2.77520 2.73124 3.46320 2.40514 3.72495 3.29355 2.67742 2.69356 4.24691 2.90348 2.73740 3.18147 2.89802 2.37888 2.77520 2.98519 4.58478 3.61504
- 0.03620 3.43177 5.73865 0.40966 1.09027 0.48576 0.95510
- 154 2.80870 4.76397 2.82688 2.35901 3.53520 3.31737 3.24083 3.53679 2.31494 2.98485 3.52265 2.69923 3.15465 2.90046 2.56489 2.40361 2.83318 3.04461 5.74293 3.76697 287 k - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 155 2.38638 3.55872 3.84850 3.27925 3.07902 3.89951 3.49984 3.07191 2.87600 2.13071 2.79826 2.94436 3.28103 3.24012 3.30127 2.77627 2.52689 2.66914 5.17020 2.84075 288 l - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 156 2.88266 4.79637 2.63708 2.49106 4.69372 3.27452 3.02757 4.17056 2.31920 3.54781 3.84892 2.54158 3.83133 2.71114 2.83815 2.34796 2.07167 3.53868 4.84477 3.26548 289 t - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 157 2.55115 5.22307 2.81541 2.42597 3.84088 2.72211 3.45978 3.70939 2.65113 3.50012 4.03956 3.00145 3.26637 2.92366 3.12986 2.10982 2.09681 2.95270 4.42058 4.32902 290 t - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 158 2.79383 4.53543 3.94528 3.00256 2.28876 3.25886 4.19260 2.53698 3.31063 2.13485 3.51266 3.25465 3.61933 3.02975 2.60672 3.04108 3.13630 2.22820 5.12884 3.03437 291 l - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 159 2.54133 2.27249 3.62507 3.14565 3.48798 3.47382 4.20805 2.87324 3.24770 2.61629 3.62417 3.76153 4.31084 3.45605 3.15192 3.19594 2.77273 1.44309 5.11140 3.89714 292 v - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 160 2.50560 4.02210 4.21483 3.69251 4.03927 0.87585 4.50859 3.18042 3.62456 3.12203 4.01557 3.91946 4.34666 3.89680 3.91281 2.66630 3.23503 2.52015 5.49804 3.97346 293 g - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 161 2.98792 5.00679 3.18026 3.47531 5.09253 3.65988 4.75357 4.53531 3.72802 4.18133 4.99276 3.79669 4.37930 3.97717 4.12874 1.60941 0.74054 3.97784 6.39182 5.11951 294 t - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 162 2.69840 5.26022 3.00961 2.31122 4.20998 3.68086 3.63617 3.20701 2.41779 2.58849 4.31499 2.98486 2.62271 2.99075 2.13729 2.36313 3.11573 3.42385 5.72545 3.54571 295 r - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 163 2.71301 5.29924 2.59488 2.14743 3.52695 3.04037 3.28275 4.06670 2.61594 3.34508 4.35002 2.84026 3.31113 2.97459 2.36266 2.86533 2.70674 3.41928 3.03699 3.23042 296 e - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 164 4.65993 5.73598 5.69662 5.49898 1.97465 5.32012 3.31709 4.36240 5.29326 3.66395 4.92323 4.93743 5.59573 5.06816 5.17473 4.69695 3.41633 4.25844 2.61302 0.51590 297 Y - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 165 2.46851 3.63596 4.34730 3.76113 3.49978 4.00900 4.30977 2.55613 3.41377 2.11254 1.89168 3.40620 4.37893 3.86942 2.23584 3.08926 3.14320 2.13937 5.00600 3.81292 298 m - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 166 0.54633 4.79516 4.59072 4.34047 5.33605 3.22550 5.27451 4.80651 4.37656 4.47607 5.24769 4.21379 3.02084 4.58677 4.60871 1.81435 3.40538 4.05386 6.66459 5.53199 299 A - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 167 3.08666 5.02380 4.02349 3.92167 5.10908 3.73669 5.07487 4.62556 4.04836 4.33998 5.22795 3.34786 0.41351 4.38870 4.30726 3.26072 3.60085 3.40472 6.47905 5.20179 300 P - - H
- 2.68622 4.42144 2.77523 2.73111 3.46358 2.40517 3.72498 3.29358 2.67745 2.69359 4.24694 2.90351 2.73743 3.18126 2.89786 2.37891 2.77523 2.98522 4.58481 3.61507
- 0.03484 3.47295 5.73865 0.99675 0.46057 0.48576 0.95510
- 168 3.66837 6.19086 2.84947 0.45189 5.55161 3.90523 4.43200 5.09782 3.30487 4.55035 5.42336 3.03786 4.53514 3.60153 3.37398 3.54999 3.95969 4.65772 6.64024 5.17650 305 E - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 169 2.79774 4.32598 4.68241 3.67608 3.42171 4.06471 4.38713 2.01470 3.90321 1.87174 3.44282 4.15860 4.43014 3.77035 3.25202 3.36713 2.95239 1.31877 3.77234 3.76466 306 v - - H
- 2.68603 4.42242 2.77519 2.73104 3.46342 2.40506 3.72511 3.29371 2.67728 2.69322 4.24707 2.90364 2.73756 3.18163 2.89801 2.37893 2.77519 2.98535 4.58494 3.61520
- 0.12919 2.22240 4.35495 1.23224 0.34480 0.48576 0.95510
- 170 2.91184 3.76308 4.76588 4.15799 3.39752 4.06920 3.82796 1.60071 3.96642 1.39613 3.17824 3.65225 4.43387 4.11848 4.01348 2.94594 3.14403 2.21737 4.92444 3.43929 311 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00999 5.00664 5.72898 0.61958 0.77255 0.51297 0.91308
- 171 2.62785 5.06480 3.29796 2.67561 3.73804 3.41086 3.92577 3.21358 2.32640 2.15096 3.31180 2.55443 4.11004 2.47045 2.33927 2.70318 3.11578 3.12852 5.57146 4.24107 312 l - - C
- 2.68631 4.42245 2.77511 2.73076 3.46350 2.40522 3.72547 3.29356 2.67765 2.69366 4.24573 2.90389 2.73738 3.18142 2.89826 2.37846 2.77520 2.98520 4.58530 3.61473
- 0.62427 1.87899 1.16602 1.98855 0.14722 0.46912 0.98231
- 172 2.60166 5.18307 2.62016 2.19793 3.35206 2.39740 3.57105 3.96340 2.18128 3.47543 4.23188 3.01161 3.92489 2.82990 2.86326 2.33987 2.67701 3.55746 5.63416 3.78538 327 k - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01428 4.65191 5.37425 0.61958 0.77255 0.24611 1.52250
- 173 2.37600 3.94341 2.81761 2.45806 4.08381 2.38833 3.32666 4.15213 2.47322 3.64753 4.39446 2.71786 3.74359 2.39493 2.76163 2.38666 3.00597 3.01776 5.79219 3.82026 328 a - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00998 5.00778 5.73012 0.61958 0.77255 0.47101 0.97916
- 174 2.81816 4.87774 2.88922 2.34131 3.91699 3.47934 3.84840 3.76601 2.22767 3.10881 4.41163 2.46519 2.75598 2.51039 2.43545 2.43680 2.76354 3.54179 5.80719 3.84984 329 k - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 175 2.74169 5.33416 2.58184 2.32653 3.61666 2.33545 3.50275 4.12419 2.36762 3.50261 3.56274 2.91332 3.07814 2.74477 2.96926 2.79421 2.92848 3.32496 5.78164 2.72284 330 e - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 176 2.48397 4.72191 2.72922 2.94719 3.45604 3.83733 2.73484 2.72590 3.03376 2.94128 3.81928 3.51045 4.21965 3.13222 3.31573 2.84267 3.12967 2.71705 3.94971 1.76193 331 y - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 177 2.88858 5.15756 2.48812 2.69267 3.68939 2.20273 3.90720 3.84889 2.69072 3.17648 4.22648 3.21985 3.19313 3.04303 3.16266 2.07644 2.02474 3.50391 5.64990 3.69862 332 t - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 178 2.44412 5.27089 3.18567 2.52594 4.01181 3.49400 3.20300 3.68711 2.26882 2.99802 4.32458 3.16791 2.73532 2.67304 2.47574 2.35896 2.41445 3.31659 5.73361 3.79657 333 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 179 2.27957 5.36842 3.14470 2.24142 4.70283 3.35867 3.70433 4.18054 1.84880 3.00297 4.41216 3.13478 2.50109 2.87247 2.49374 2.50485 2.88881 3.75338 5.80713 4.40386 334 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 180 2.25487 3.19836 3.67383 3.53894 3.58335 3.60706 4.24810 2.30247 3.45618 2.57768 3.58074 3.40343 4.33674 3.48890 3.71724 2.25302 2.94661 1.56396 5.07167 3.86608 335 v - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 181 3.32488 6.23611 0.30142 2.99559 5.85936 3.97225 4.81661 5.46625 4.07634 5.00781 5.98660 3.57219 4.70996 4.04099 4.76451 3.76774 4.26196 4.95940 7.04785 5.56474 336 D - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 182 2.97530 4.34655 4.92112 4.31006 3.42469 4.15298 4.48903 1.67409 4.10270 2.14170 2.44181 4.30839 4.51041 4.23558 4.11915 3.46567 2.80277 1.45020 3.28394 3.56694 337 v - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 183 4.60767 5.71652 5.61554 3.89031 2.18526 5.28181 4.15190 4.32304 5.18037 3.62888 4.88484 4.90634 5.56392 5.01906 5.10312 4.65700 4.81381 4.22147 0.60655 1.74323 338 W - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 184 1.30551 4.78823 4.65738 4.37945 5.36630 2.58206 5.28849 4.84019 4.38318 4.50739 5.27020 4.22569 4.39579 4.59600 4.61395 0.79404 2.89139 4.06528 6.68751 5.56026 339 s - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 185 2.44153 3.17932 4.87400 4.25972 2.53121 4.09082 4.42403 2.33144 4.04748 1.34403 2.92510 4.24940 4.45392 4.18053 4.05982 3.14600 3.15398 2.13810 4.92017 3.14864 340 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 186 2.22507 4.96728 4.63623 4.63233 5.66307 0.33314 5.62287 5.16416 4.86793 4.86816 5.66661 4.43512 4.57282 5.01497 4.99264 3.26151 3.63533 4.32703 6.92990 5.89905 341 G - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 187 2.93009 2.13614 4.95885 4.35253 3.48038 4.19799 4.54424 1.68794 4.14925 1.93394 3.18432 4.35359 4.55452 4.28834 4.17024 3.34008 3.23972 1.60527 5.03746 3.47367 342 v - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 188 3.21831 4.55127 5.17022 4.58630 3.70338 4.47717 4.86313 1.30610 4.40976 1.92114 2.79907 4.62299 4.81179 4.56490 4.45688 3.52794 2.67243 1.42404 5.34369 4.16408 343 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 189 2.77853 3.56970 4.91220 4.29933 2.66878 4.13468 4.46922 2.12981 4.08926 1.13811 3.14072 4.29275 4.49323 4.21981 4.10205 3.44689 2.88537 2.20246 4.95897 3.46211 344 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 190 2.08301 4.31008 4.80905 4.20025 2.66597 4.08391 3.54227 2.07553 4.00182 2.35024 3.19529 4.21899 4.44796 4.14611 4.03654 3.39206 3.15615 2.32332 2.91148 1.86433 345 y - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 191 2.65126 3.79080 3.03118 1.37895 4.54227 3.68257 3.87660 3.27048 2.56225 3.53374 4.30787 2.88399 4.07460 2.72714 3.11894 2.49943 2.86114 3.20681 5.71940 3.61825 346 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 192 2.75949 4.33120 4.86063 4.24972 2.93412 4.11800 4.44873 2.58063 4.04775 1.34098 1.86205 4.26240 4.47769 4.18564 4.07448 3.30982 2.87183 2.17494 4.95131 3.25026 347 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 193 2.13730 3.34433 4.84746 4.23449 2.67079 4.08305 4.41495 2.45417 4.02682 1.45586 2.95446 4.23448 4.44687 4.16424 3.65241 3.39295 2.78239 2.10310 4.91833 3.10946 348 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 194 2.61714 3.04119 3.51958 2.50105 3.16562 3.44068 4.02999 3.26384 2.78703 2.46125 3.90521 2.94061 4.18669 3.26384 2.94427 2.45451 1.92365 2.96026 5.36672 3.77569 349 t - - H
- 2.68592 4.42131 2.77530 2.73134 3.46364 2.40523 3.72505 3.29364 2.67751 2.69365 4.24624 2.90357 2.73750 3.18157 2.89769 2.37886 2.77510 2.98507 4.58487 3.61513
- 0.08274 2.77459 4.07273 1.24373 0.34011 0.48576 0.95510
- 195 2.74009 5.38236 2.60734 2.58658 4.30151 1.49346 3.57775 4.19577 2.06867 3.68256 4.42710 2.84258 4.06100 2.86136 2.79826 2.78642 3.12785 3.76776 5.82019 4.41533 355 g - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02515 5.00240 4.01100 0.61958 0.77255 0.52459 0.89600
- 196 2.87057 4.15783 2.81932 2.15097 3.67482 3.00161 3.44561 3.53712 2.01194 3.52030 4.39830 2.84675 4.04172 2.62971 2.18111 2.65254 2.90372 3.46034 5.79407 3.92999 356 k - - S
- 2.68632 4.42239 2.77496 2.73101 3.46368 2.40527 3.72508 3.29339 2.67739 2.69369 4.24616 2.90361 2.73734 3.18160 2.89815 2.37901 2.77533 2.98486 4.58491 3.61430
- 0.06990 2.74572 5.70978 1.46974 0.26135 0.43968 1.03351
- 197 2.53761 4.57755 3.85895 3.05555 3.06219 3.90225 3.89097 2.90555 3.23603 1.98376 3.43681 3.14844 2.18635 3.28921 3.56902 2.76101 2.38583 2.48063 5.16546 3.65117 363 l - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 198 2.94035 4.49377 4.16973 3.59341 3.59928 3.99457 4.28692 2.57573 3.48228 2.11382 3.59630 3.88641 1.19333 3.75706 3.46613 3.08341 3.17527 2.51467 5.10025 3.66586 364 p - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 199 2.95410 3.97958 4.76382 4.16399 1.23466 4.10162 4.38107 2.78567 3.65586 2.19089 3.46719 4.20671 3.78920 4.13156 4.03525 3.25126 3.18603 2.50296 2.73984 2.86766 365 f - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 200 2.72297 4.82530 2.62940 2.35446 3.83755 3.31971 3.71413 4.17131 2.26174 3.54363 4.14174 3.02369 2.60946 2.49179 2.66057 2.21727 2.99115 3.74587 4.55596 3.10965 366 s - - S
- 2.68620 4.42227 2.77522 2.73112 3.46340 2.40515 3.72496 3.29334 2.67743 2.69357 4.24692 2.90349 2.73742 3.18148 2.89803 2.37889 2.77522 2.98520 4.58479 3.61505
- 0.07731 2.84051 4.13492 0.30572 1.33404 0.48576 0.95510
- 201 2.63880 5.38435 2.63657 2.22720 4.72697 1.94780 3.15235 3.87964 2.57669 3.68860 4.42577 2.57921 3.16991 2.74291 2.86900 2.50219 2.85278 3.77370 5.81843 4.40865 368 g - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01003 5.00344 5.72579 0.61958 0.77255 0.52175 0.90012
- 202 2.40102 4.71375 2.46996 2.13243 4.71840 3.11745 3.05416 3.48265 2.25142 3.16134 4.41932 2.93828 3.25177 2.60824 2.79040 2.58260 2.90071 3.38079 5.81277 4.40438 369 e - - S
- 2.68658 4.42180 2.77453 2.73123 3.46394 2.40505 3.72421 3.29333 2.67765 2.69382 4.24730 2.90354 2.73686 3.18110 2.89829 2.37906 2.77522 2.98525 4.58428 3.61543
- 0.55463 1.48984 1.60791 1.39890 0.28351 0.52175 0.90012
- 203 2.69338 5.29005 2.51143 2.25105 4.62988 2.84270 3.49832 3.48405 2.27737 3.31427 4.33211 2.56706 3.20350 2.85310 2.67590 2.21378 2.73620 3.67787 5.72586 4.31806 375 s - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01250 4.78398 5.50633 0.61958 0.77255 0.95212 0.48763
- 204 2.65942 5.19894 2.69156 2.28179 3.77027 3.19251 3.77484 3.06173 2.43464 2.99400 3.94013 2.58274 3.44930 2.63512 2.62020 2.46578 2.71730 3.35179 5.65696 3.80565 376 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01250 4.78398 5.50633 0.61958 0.77255 0.77169 0.62033
- 205 2.38920 5.21254 2.73488 2.26876 4.51445 3.29559 3.03245 3.05648 2.42252 2.83088 3.97624 2.72691 3.66747 2.74292 2.65924 2.79642 2.87825 3.04317 5.67196 3.47007 377 e - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01186 4.83615 5.55849 0.61958 0.77255 0.33713 1.25111
- 206 2.65422 4.48489 1.88534 2.29942 4.71042 3.12833 3.84224 3.67843 2.58000 3.67468 4.41498 2.22848 4.04754 2.86157 2.64414 2.33478 2.73698 3.75923 5.80928 4.40246 378 d - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01003 5.00344 5.72579 0.61958 0.77255 0.52175 0.90012
- 207 2.52228 5.35256 2.79874 2.27245 4.68298 3.15080 3.25420 3.81263 2.42135 3.03021 2.98061 3.02733 3.41549 2.09266 2.89624 2.43800 3.03420 3.22791 5.79412 4.39217 379 q - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01003 5.00344 5.72579 0.61958 0.77255 0.52175 0.90012
- 208 2.88352 5.03264 3.01718 2.64158 3.36791 3.41419 3.67586 2.82361 2.46533 2.06980 3.25199 2.87105 3.91016 2.67457 2.54739 2.67076 3.11488 3.35644 5.54543 3.24074 380 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01003 5.00344 5.72579 0.61958 0.77255 0.52175 0.90012
- 209 2.31106 5.21929 3.20358 2.11286 3.58411 3.54755 3.12693 3.74178 2.35878 3.37262 4.27754 3.18132 3.64073 2.21825 2.83044 2.63943 3.03559 2.71879 4.50670 3.34948 381 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01003 5.00344 5.72579 0.61958 0.77255 0.46390 0.99109
- 210 2.74907 4.02445 4.23598 3.43708 3.16042 3.98772 3.66116 2.29352 2.78065 1.91975 2.65717 3.64306 4.00461 3.79624 2.62994 3.12682 2.72367 2.05105 5.03295 3.83444 382 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 211 2.79706 4.32223 4.14412 4.07508 2.44930 4.05985 3.54709 1.67401 3.90204 2.17979 2.94629 3.31750 4.42562 4.07034 3.98057 2.91878 2.88141 2.01026 4.94063 2.95520 383 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 212 2.43063 3.51667 2.84063 2.33381 3.23751 3.53757 3.64461 3.61354 2.52297 3.04234 3.80037 3.02528 3.31294 2.77439 2.36706 2.71893 3.04140 2.71650 5.64517 3.47973 384 e - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 213 2.54995 5.35768 3.14585 2.23433 4.68798 3.33616 3.38625 3.80986 2.09254 2.85705 3.68757 2.56176 4.05535 2.40160 2.38927 2.57618 3.04385 3.36418 5.79929 3.79887 385 k - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 214 2.66499 5.02053 2.80345 2.59207 4.23983 3.19081 3.94632 1.95336 2.43621 2.96229 3.77095 2.92719 4.12615 3.11304 2.86357 2.94448 2.42822 2.54184 5.53679 4.21766 386 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 215 2.79062 4.84420 3.48859 2.83007 4.02200 3.06268 4.01637 2.98055 2.36084 1.68419 3.06982 3.40535 3.56488 2.89781 2.78978 2.64270 2.97298 2.81255 5.39215 4.11258 387 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 216 2.78422 4.40067 2.87114 2.38957 4.66317 2.42774 3.11725 3.68493 2.29738 3.11118 3.80555 3.07548 3.38861 2.66839 2.52841 2.36297 2.74889 3.71883 4.85618 3.72852 388 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.04975 5.01631 3.17248 0.61958 0.77255 0.48576 0.95510
- 217 2.55009 3.88585 3.08502 2.47179 4.52328 2.60499 3.86026 3.74333 2.31088 3.21633 3.94275 3.03087 2.50945 2.97834 2.41589 2.69163 2.38722 3.38360 5.70135 4.11095 389 k - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01030 4.97686 5.69921 0.61958 0.77255 0.59090 0.80705
- 218 2.71816 5.35510 2.47492 2.28903 4.69101 3.44039 3.67059 2.92462 2.15295 3.03900 4.39818 2.98975 2.40750 2.74839 2.76016 2.49540 2.85213 3.74081 5.79327 4.38792 390 k - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02103 4.97686 4.27462 0.61958 0.77255 0.59090 0.80705
- 219 2.59242 4.56547 3.37418 3.24570 3.28039 3.87349 3.78552 2.80260 2.91515 1.85640 3.67045 2.94464 3.03710 3.48913 3.31352 2.93163 2.57101 2.12270 4.60315 3.29903 391 l - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01041 4.96623 5.68858 0.61958 0.77255 0.61678 0.77584
- 220 2.76552 5.35116 2.75065 2.09233 4.26840 3.39661 3.23930 3.45666 2.13782 2.93921 3.69074 2.78256 2.85112 2.85423 2.61182 2.41762 3.01864 3.73701 5.78920 4.16743 392 e - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01041 4.96623 5.68858 0.61958 0.77255 0.61678 0.77584
- 221 2.56616 4.88573 3.26662 2.33696 2.41520 3.27403 3.41068 2.92250 2.70761 2.68623 3.97070 3.19787 3.38122 3.16656 2.79903 2.47364 2.99470 2.86843 4.82552 3.32054 393 e - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01041 4.96623 5.68858 0.61958 0.77255 0.61678 0.77584
- 222 2.62567 5.35084 2.04845 2.35215 4.39252 3.47212 3.16243 3.98892 2.45186 3.65226 3.66396 2.66846 2.63580 2.82810 3.05661 2.22708 2.99549 3.54011 5.78899 3.92777 394 d - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.03667 4.96623 3.53930 0.61958 0.77255 0.61678 0.77584
- 223 2.86103 4.03193 3.18635 2.38909 3.31435 3.61153 3.49109 2.70908 2.69769 2.69388 3.88535 3.22191 3.67076 3.11276 2.73635 2.49324 3.00545 2.72730 2.94731 2.96802 395 e - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01875 4.94025 4.47244 0.61958 0.77255 0.67631 0.71028
- 224 2.62521 5.12447 2.77972 2.44738 3.31605 3.53418 3.86652 3.33309 2.47319 3.03557 4.18886 3.10134 2.42408 2.60018 2.70100 2.64509 2.92363 3.22521 3.41935 3.46519 396 p - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.05901 4.93227 2.99396 0.61958 0.77255 0.69360 0.69269
- 225 2.68343 5.20702 2.88582 2.22963 3.55567 3.45903 3.65367 3.49248 2.11994 2.97314 4.26172 2.80968 3.57686 2.44336 3.06162 2.53581 2.67303 3.18308 3.73101 3.66292 397 k - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01130 4.88456 5.60691 0.61958 0.77255 0.78866 0.60597
- 226 2.68707 4.98468 2.82158 2.38405 3.75917 3.36024 3.65392 3.18317 2.38508 2.73942 3.76303 3.22111 3.36652 3.04584 2.96704 2.31757 2.64759 2.95752 3.21600 3.40268 398 s - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.11345 4.88456 2.30573 0.61958 0.77255 0.78866 0.60597
- 227 2.79298 3.84213 2.48108 2.52210 3.99851 3.60747 3.12972 3.13545 2.48018 3.05991 4.13768 2.83211 3.54520 2.93964 2.41588 2.35619 2.76810 2.97839 5.56015 3.44494 399 s - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02807 4.78362 3.94704 0.61958 0.77255 0.95264 0.48731
- 228 2.58191 4.56682 2.77742 2.37170 4.46635 3.58143 3.77449 3.50815 2.36445 2.67587 4.22448 2.86502 2.73607 2.80387 2.79297 2.07848 2.75446 3.53442 5.63386 3.74575 400 s - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.14447 4.76826 2.07130 0.61958 0.77255 0.97412 0.47405
- 229 2.74120 5.02625 2.90214 2.38037 3.96892 2.81361 3.75340 3.09744 2.29181 2.85276 3.79351 2.85134 3.31773 2.88600 2.57247 2.48932 2.74923 2.81409 5.51153 4.15648 401 k - - .
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02950 4.63827 3.94280 0.61958 0.77255 1.12880 0.39071
- 230 2.65814 5.03703 2.72915 2.44094 4.30481 3.19996 3.74471 3.73960 2.51991 2.72378 3.12113 3.05398 2.98987 2.79382 2.49179 2.12708 2.96796 3.38544 5.51898 3.52938 402 s - - .
- 2.68724 4.42293 2.77612 2.73159 3.46162 2.40699 3.72369 3.29398 2.67731 2.69321 4.24701 2.90285 2.73662 3.18257 2.89624 2.37860 2.77511 2.98573 4.58252 3.61251
- 0.60323 0.80254 5.34581 2.99471 0.05135 0.22221 1.61320
- 231 2.51767 5.38833 2.69504 1.91983 4.73145 3.65677 3.84405 3.51135 2.26714 3.33248 4.42951 2.74739 2.83044 2.63263 2.69535 2.26534 2.89575 3.77792 5.82218 4.12814 442 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 232 2.61324 5.33087 2.55247 1.71577 3.78905 3.51981 3.85697 4.11872 2.53837 3.37618 3.68276 2.71899 3.50504 2.96215 2.76975 2.43182 2.62759 3.19721 4.83386 4.08215 443 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 233 1.85315 2.66076 4.74963 4.14369 2.72361 2.76389 4.40211 2.66580 3.95769 1.60680 3.08425 4.19191 4.43908 4.11400 4.01342 3.37949 2.94810 2.35782 4.93743 3.75833 444 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 234 2.54113 3.93957 3.31567 2.58263 3.59686 3.36801 3.93655 2.84244 1.77469 2.55244 4.12290 3.02474 4.11900 2.54032 2.70090 2.93506 2.79964 3.23719 5.55956 3.97978 445 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 235 2.66035 5.38903 1.80529 2.16718 4.22724 3.25823 3.17680 4.00903 2.28647 3.50730 4.43018 2.97613 4.05032 2.48614 2.98498 2.31241 3.11375 3.77870 5.82277 3.97909 446 d - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 236 3.21254 4.56529 5.14365 4.53738 1.97526 4.40976 4.73239 2.19759 4.34073 1.04052 3.41232 4.55986 4.72994 4.44093 4.35221 3.72900 3.00622 2.20314 5.16040 3.53582 447 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 237 2.97518 4.05135 5.35921 4.78478 3.77817 4.66169 5.06989 1.35059 4.61468 1.50253 2.60400 4.82061 4.97178 4.75525 4.65269 4.00168 3.59517 1.52175 5.50364 4.33590 448 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 238 2.63113 4.16111 2.70523 2.01221 4.32546 2.89528 3.69801 3.91463 1.97992 3.37990 4.41866 2.72468 4.05215 2.88390 2.65380 2.44936 2.78930 3.52828 5.81309 3.68713 449 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 239 2.79532 4.56741 2.59886 2.26653 4.72524 2.97326 3.84498 4.20852 1.87988 3.68761 4.42563 2.67816 4.05093 2.72680 2.26697 2.39445 3.11354 3.44147 4.06926 3.70096 450 k - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 240 2.76031 1.91137 4.93344 4.32897 3.47342 4.21043 4.55379 2.12811 4.13437 1.60981 2.11111 4.35327 4.56463 4.27495 4.16872 3.52442 2.73881 2.49904 5.05160 3.88034 451 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 241 3.00579 3.43594 4.91160 4.30236 2.88535 4.17356 4.48924 2.41412 3.62991 0.97514 3.41700 4.31537 4.52645 4.23058 4.12367 3.48482 3.23680 2.59853 2.70167 3.78558 452 l - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 242 2.51291 3.86266 2.42773 2.26878 4.71076 3.65927 3.14908 3.51790 2.32370 3.67561 4.41657 2.44903 4.05255 2.58104 2.64695 2.72413 2.48024 3.27065 5.81133 3.77060 453 e - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 243 2.89024 4.99098 3.22187 2.69841 3.16242 3.74556 3.43367 3.45008 2.12873 2.47972 3.65551 3.30484 3.00902 2.69329 2.47140 2.87653 2.77051 2.80352 4.74384 3.09104 454 k - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 244 2.75442 4.59220 1.48443 2.55169 4.69407 3.66624 3.85987 4.16899 2.26580 3.66358 4.41104 2.16093 4.06270 2.96232 2.94350 2.69711 3.00639 3.21953 5.80766 4.40610 455 d - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 245 2.53666 4.51809 3.31495 2.50094 3.81458 3.47863 3.66745 3.68842 2.74796 3.30408 3.76297 2.90283 1.45947 2.98944 2.97069 2.84711 3.12065 2.90248 5.56105 4.23506 456 p - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 246 2.18867 5.36299 2.90524 2.21328 4.32931 3.53924 3.49382 3.97251 2.24621 3.14962 3.99253 2.78034 3.78478 2.54072 2.85251 2.30318 2.70173 3.25844 5.80328 3.47734 457 a - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 247 2.48590 4.36945 2.67418 2.22639 4.72760 3.65776 3.84501 4.21118 1.68322 3.11616 4.42723 3.02530 4.05117 2.52411 2.40832 2.54354 2.78662 3.77464 5.82017 4.41136 458 k - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 248 3.97870 5.88109 4.77637 3.79584 5.10245 4.51923 4.26030 4.68907 2.25479 4.07008 4.99673 4.06985 4.83329 3.42182 0.45649 3.98836 4.07883 4.42272 3.45519 4.78623 459 R - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 249 2.59820 4.04607 4.60274 4.00452 3.26886 3.61184 4.36773 2.06089 3.84570 1.56372 3.45362 4.11687 2.06890 4.02734 3.95003 2.68390 3.14561 2.58630 4.40258 3.38622 460 l - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.04987 5.01631 3.16967 0.61958 0.77255 0.48576 0.95510
- 250 2.79362 5.19179 3.01710 2.75300 4.64905 2.77281 4.01085 4.10036 2.79939 3.46822 4.43166 2.61914 4.12461 3.14023 3.27668 1.68833 1.53351 3.69065 5.84113 4.47617 461 t - - T
- 2.68631 4.42192 2.77519 2.73130 3.46353 2.40482 3.72508 3.29367 2.67738 2.69360 4.24703 2.90360 2.73753 3.18148 2.89804 2.37867 2.77518 2.98532 4.58490 3.61498
- 0.12278 2.37863 3.77824 1.17468 0.36950 0.42506 1.06054
- 251 1.47902 3.78300 4.72209 4.11644 2.74562 3.65840 4.38345 2.02614 3.93274 2.07959 3.21794 4.17061 3.49702 4.09137 3.99270 2.98272 3.05871 2.38788 4.48487 3.74373 467 a - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01009 4.99737 5.71972 0.61958 0.77255 0.53813 0.87669
- 252 2.38222 4.71734 2.84513 2.05232 4.42547 3.25385 3.43556 4.19285 2.14440 3.09056 3.51596 2.80436 3.18490 2.67888 2.63294 2.69832 2.67125 3.58577 5.80764 4.40015 468 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01009 4.99737 5.71972 0.61958 0.77255 0.45436 1.00747
- 253 2.65797 4.06542 2.63237 1.57032 4.71890 3.65831 3.45654 4.20087 2.52289 3.68238 4.00276 3.00654 3.59507 2.12286 2.86428 2.58695 3.11362 3.45316 5.81563 3.91003 469 e - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 254 1.93383 3.77543 4.87213 4.26567 3.27005 3.35948 4.48352 1.60295 4.06924 1.71770 3.29328 4.28554 4.50523 4.21524 4.10410 3.45599 3.20183 2.00553 4.99383 3.81574 470 i - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 255 2.91099 3.35807 4.39311 3.80506 3.12662 3.41984 4.32058 2.74098 2.62412 1.35983 2.89439 3.70896 4.38574 3.55146 3.43970 3.02120 3.14303 2.30767 4.99433 3.18557 471 l - - H
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 256 2.62697 4.23577 2.94369 2.01671 4.73311 3.52212 3.12192 4.21804 1.98366 3.41966 4.43054 2.33684 4.05005 2.29561 2.80226 2.65814 2.90658 3.41449 5.82302 4.41298 472 k - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 5.01631 5.73865 0.61958 0.77255 0.48576 0.95510
- 257 2.67425 5.24257 2.69003 2.64384 4.09422 3.68496 1.59772 3.97575 2.52719 3.06621 3.97630 3.17995 4.07682 2.88982 2.86815 2.31165 2.78826 3.60139 5.71188 4.10399 473 h - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.18941 5.01631 1.79622 0.61958 0.77255 0.48576 0.95510
- 258 2.81850 5.23743 2.76502 2.35780 4.54654 3.39495 3.79640 3.57339 2.36240 3.35446 4.28834 3.08690 1.61434 2.83455 2.79066 2.56844 3.04975 3.37601 5.69198 4.30446 474 p - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01183 4.83873 5.56107 0.61958 0.77255 0.86853 0.54398
- 259 3.22678 4.58175 4.94227 4.40609 1.73776 4.31983 4.20406 3.01156 4.21650 2.23279 3.33965 4.33985 4.66520 3.80636 4.24184 3.63704 3.45535 2.61441 1.69956 1.91736 475 w - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01183 4.83873 5.56107 0.61958 0.77255 0.30436 1.33787
- 260 2.99670 4.36610 4.95290 4.33956 1.72799 3.71830 4.50360 1.92619 4.12878 1.69258 2.79907 4.33234 4.52551 4.25179 4.13733 3.48573 3.22794 1.98896 4.25850 3.81122 476 l - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00667 5.01308 * 0.61958 0.77255 0.00000 *
-//
+++ /dev/null
-HMMER3/f [3.1b1 | May 2013]
-NAME fn3
-ACC PF00041.13
-DESC Fibronectin type III domain
-LENG 86
-ALPH amino
-RF no
-MM no
-CONS yes
-CS yes
-MAP yes
-DATE Fri Jun 20 08:22:31 2014
-NSEQ 106
-EFFN 11.415833
-CKSUM 3564431818
-GA 8.00 7.20
-TC 8.00 7.20
-NC 7.90 7.90
-STATS LOCAL MSV -9.4043 0.71847
-STATS LOCAL VITERBI -9.7737 0.71847
-STATS LOCAL FORWARD -3.8341 0.71847
-HMM A C D E F G H I K L M N P Q R S T V W Y
- m->m m->i m->d i->m i->i d->m d->d
- COMPO 2.70330 4.91262 3.03272 2.64079 3.60307 2.84344 3.74204 3.07942 2.79841 2.65364 4.14864 2.95826 2.87120 3.02176 2.96125 2.44783 2.59757 2.57680 4.02726 3.21526
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.00000 *
- 1 3.16986 5.21447 4.52134 3.29953 4.34285 4.18764 4.30886 3.35801 3.70246 2.11675 4.32057 4.32984 0.76706 3.91880 4.22437 3.23552 3.21670 2.88223 5.80355 3.93889 1 p - - -
- 2.68629 4.42236 2.77530 2.73088 3.46365 2.40512 3.72505 3.29365 2.67737 2.69316 4.24701 2.90358 2.73734 3.18157 2.89812 2.37898 2.77517 2.98515 4.58488 3.61514
- 0.09796 2.38361 6.81068 0.10064 2.34607 0.48576 0.95510
- 2 2.70230 5.97353 2.24744 2.62947 5.31433 2.60356 4.43584 4.79731 3.17221 2.95090 5.01531 3.26630 2.09873 3.30219 3.34190 1.45782 3.14099 3.57507 6.40877 4.25623 3 s - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 3 1.38116 5.98285 3.50784 2.54546 5.32790 3.48945 4.43311 4.81385 2.38773 3.98773 5.02352 3.27895 1.92260 2.69012 2.96119 2.64228 3.29228 3.29618 6.41555 4.20553 4 a - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 4 3.32856 5.10403 4.47046 4.60386 4.23079 4.75438 5.09647 2.69918 4.46632 2.97102 4.23502 4.77984 0.63388 4.68581 3.76781 4.05413 3.46306 2.04533 5.75329 4.56372 5 P - - -
- 2.68616 4.42236 2.77530 2.73134 3.46365 2.40523 3.72505 3.29295 2.67751 2.69303 4.24634 2.90357 2.73739 3.18157 2.89783 2.37897 2.77530 2.98529 4.58488 3.61514
- 0.09682 2.39494 6.81068 0.10162 2.33687 0.48576 0.95510
- 5 2.95325 4.65976 3.57762 2.20709 3.14816 2.51487 3.41109 4.78902 2.65862 3.19599 4.41042 3.45032 3.44719 2.43205 2.26492 2.25400 2.23196 3.66828 4.80003 4.52485 7 e - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01246 6.08833 4.59386 0.61958 0.77255 0.48576 0.95510
- 6 2.74215 5.97618 2.19482 2.69150 4.58171 2.33553 3.83525 3.28222 2.95080 3.32698 5.01691 1.45822 3.52462 2.79670 2.90942 3.13467 3.27956 4.36668 6.40902 3.92307 8 n - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00341 6.07928 6.80162 0.61958 0.77255 0.44282 1.02784
- 7 3.32507 4.98102 3.78072 3.31043 2.85257 4.76439 5.09585 2.50332 4.69760 1.03851 3.36125 4.91001 2.73206 4.83820 4.72389 4.07376 3.83146 1.59790 5.60385 4.42704 9 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.03752 6.08833 3.36505 0.61958 0.77255 0.48576 0.95510
- 8 3.15997 4.90658 3.35204 2.72775 4.53493 3.60960 2.65074 3.69535 2.11078 4.01384 4.99896 3.14668 4.61695 2.40643 2.34723 1.92358 2.03982 3.05153 6.39127 4.98082 10 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00349 6.05430 6.77664 0.61958 0.77255 0.35749 1.20207
- 9 1.76295 3.98252 5.55061 4.93551 2.13202 3.39992 5.09294 2.14638 4.23898 2.23988 3.42109 4.92079 4.39252 3.70640 3.99349 3.50811 3.63432 1.47830 4.51148 4.41177 11 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 10 3.01387 4.98892 2.91217 2.42744 5.22342 4.00576 3.74074 2.67275 2.47618 2.92529 3.89570 3.36720 4.15809 3.26810 2.80854 1.81572 2.02040 2.77133 4.92415 4.31555 12 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 11 2.41247 5.98374 2.24093 2.04842 3.41543 2.59695 4.10033 4.81544 3.05501 4.28918 5.02429 2.22829 2.90635 3.12939 3.01921 2.37278 3.01194 3.02522 6.41619 3.66635 13 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.06784 6.08833 2.75947 0.61958 0.77255 0.48576 0.95510
- 12 2.77725 4.36386 3.23435 2.92496 4.75140 4.31852 4.53101 1.91389 3.01135 2.51491 3.47932 2.97934 3.54432 2.88257 2.68923 3.07794 2.71169 1.80880 6.06849 4.75973 14 v - - E
- 2.68623 4.42259 2.77533 2.73059 3.46323 2.40500 3.72529 3.29333 2.67757 2.69369 4.24724 2.90364 2.73744 3.18108 2.89835 2.37891 2.77531 2.98493 4.58511 3.61510
- 0.22113 1.62346 6.74643 0.44471 1.02446 0.29166 1.37446
- 13 3.17575 5.97994 3.10322 2.84738 5.32369 2.00173 4.43389 4.80873 3.01150 3.75019 4.42663 2.23751 4.64014 2.74467 2.85546 1.99984 1.67133 4.36987 5.08444 3.58488 18 t - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 14 2.14203 5.98483 2.53686 2.20884 5.33077 2.76253 3.61799 4.81737 2.91636 3.96256 5.02525 2.79307 2.44932 3.35978 3.34773 1.76758 2.51815 4.12754 4.53404 4.35768 19 s - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02274 6.08833 3.90154 0.61958 0.77255 0.48576 0.95510
- 15 3.45984 5.96297 2.32904 2.98671 5.30486 3.14893 3.59992 3.68067 2.95954 4.26690 5.00447 2.01875 4.62814 3.51950 2.89162 1.97303 1.47565 3.87160 6.39755 3.59993 20 t - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00344 6.06904 6.79138 0.61958 0.77255 0.40302 1.10352
- 16 2.82603 5.98256 2.96292 2.53617 4.39559 3.14388 4.09532 4.81336 2.59005 4.28779 5.02326 3.12547 4.63955 2.76620 3.03618 1.28432 2.14874 3.55065 4.82032 3.29405 21 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 17 2.29842 4.96481 5.56794 4.95172 2.45211 3.33868 4.31545 1.97312 4.73378 1.34355 2.88087 4.92903 5.12608 4.86259 4.73754 4.07438 3.55674 1.71344 5.58685 3.78328 22 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 18 2.99930 4.68496 3.44656 2.53427 3.92510 4.04338 3.13178 3.10095 3.07007 2.68343 3.58599 3.17010 4.15335 2.63450 2.71950 2.30083 2.03779 2.23518 4.92400 3.84991 23 t - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 19 3.61302 4.50726 5.99163 5.39935 2.74200 5.23506 5.61087 1.85210 5.20622 1.10188 3.56291 5.40353 5.56305 5.33364 5.22134 4.56441 3.85751 1.20867 6.05610 4.88933 24 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 20 2.90508 5.98486 3.37356 2.37027 5.33083 3.46854 3.40789 4.81743 2.65230 3.22177 4.17825 2.67373 4.63906 2.52648 2.39431 1.50547 2.16764 4.37598 5.01440 5.00552 25 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 21 5.54218 6.63564 6.83891 6.61797 2.57168 6.35073 5.30532 3.96643 6.37377 3.18917 5.26281 6.07009 4.35269 6.11992 6.21105 5.74680 5.75143 4.86346 0.24436 3.66807 26 W - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 22 3.10862 5.98423 2.61761 2.10221 4.46995 3.93009 3.84182 3.79843 2.19229 3.09373 4.47555 2.66452 4.06864 2.59255 2.99987 1.99073 2.05618 3.67318 6.41655 4.47364 27 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 23 2.05280 5.87614 3.77610 2.63103 5.17655 3.25143 3.55897 3.09279 2.68152 3.35866 4.92882 3.43937 1.44938 3.29932 2.98336 2.85751 2.78420 3.02863 4.43359 4.47040 28 p - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 24 2.65644 5.88726 3.37601 2.96202 5.19190 3.53629 4.46143 4.20046 2.87295 2.91429 4.93884 3.27084 1.07653 3.39095 3.69926 2.07705 3.29723 2.92337 6.34501 4.95985 29 p - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.32165 6.08833 1.29911 0.61958 0.77255 0.48576 0.95510
- 25 2.44244 5.77880 2.64467 2.21733 3.20572 3.66340 3.27861 4.60939 2.17717 2.95495 4.81953 3.17778 2.62084 2.96028 2.64039 2.55818 2.51134 3.52175 6.21164 4.20060 30 k - - S
- 2.68557 4.42278 2.77404 2.73101 3.46370 2.40555 3.72548 3.29364 2.67779 2.69337 4.24743 2.90378 2.73741 3.18051 2.89835 2.37928 2.77557 2.98526 4.58530 3.61392
- 1.12909 0.74203 1.60680 0.24883 1.51281 1.67198 0.20810
- 26 2.76497 5.64634 2.06362 2.44254 4.06108 3.91520 3.28362 3.73992 2.46695 3.95074 4.68755 2.93859 2.87257 2.71813 3.08100 2.16767 2.28242 3.00778 6.08028 4.00221 33 d - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00580 5.54941 6.27176 0.61958 0.77255 1.23854 0.34222
- 27 2.94904 4.81418 2.88265 2.99332 4.83563 1.49306 3.87927 3.68299 2.59086 2.53757 4.07313 2.89409 2.92833 3.04624 2.88166 2.82744 3.22994 3.21444 4.18838 4.04981 34 g - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00508 5.68074 6.40309 0.61958 0.77255 0.20085 1.70396
- 28 2.96588 5.95917 2.45759 2.65943 5.30490 1.91234 3.11781 3.44164 2.78003 4.01788 4.99965 2.12379 3.26764 2.84040 2.87160 2.26272 3.15721 3.84740 4.86821 3.64128 35 g - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00351 6.05095 6.77330 0.61958 0.77255 0.34864 1.22298
- 29 2.45969 5.96445 2.88574 2.61716 5.30131 1.53630 4.43818 3.46883 2.98393 3.60366 4.33332 3.25719 4.28257 3.08417 2.40821 2.08539 3.20111 2.81105 6.40207 4.25093 36 g - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 30 2.71563 5.98438 2.50720 1.96228 5.33013 3.47246 3.38617 3.68065 2.34086 4.03521 4.36775 3.08029 1.87041 2.90329 3.33287 2.70645 2.77558 2.97286 6.41666 4.17777 37 p - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 31 3.04837 4.96747 2.67316 4.92527 2.42064 4.14655 5.09097 1.34551 4.71334 2.18068 3.34829 4.91585 3.31178 4.15082 4.72663 3.69906 3.53551 1.88881 3.93067 3.04034 38 i - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 32 2.89418 4.58676 2.12720 2.65970 3.99748 4.30700 4.50689 3.12934 2.75241 2.32504 4.34805 3.25317 4.69765 2.93544 2.97945 2.48570 1.85268 2.60501 5.05387 4.40931 39 t - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 33 3.05045 5.96458 3.15002 2.79713 4.16491 1.56242 3.20986 4.07540 2.34002 3.77648 3.66616 2.65073 4.64351 3.21500 2.62101 2.34442 2.98761 3.25677 5.04578 3.36446 40 g - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 34 4.72855 5.99332 6.32397 5.91516 1.75259 5.71064 3.47111 3.64093 3.68669 3.44300 5.13564 5.60513 6.03397 5.64902 5.63703 5.05114 4.95149 3.46344 3.97019 0.49348 41 Y - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 35 3.03913 5.98101 2.74983 1.95825 3.75604 3.98121 3.78677 3.48894 2.41418 2.89991 5.02189 2.66693 4.63989 2.65222 2.20113 2.26435 2.64729 3.16844 6.41420 3.93691 42 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 36 3.75576 5.90373 6.92143 6.48083 5.27028 6.48043 7.33031 1.16190 6.46559 1.72148 4.18143 6.65320 6.63807 6.70678 6.63399 5.94811 5.00240 0.82398 7.51298 6.31097 43 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.04904 6.08833 3.08806 0.61958 0.77255 0.48576 0.95510
- 37 2.63429 4.71789 2.89387 2.04081 4.17861 4.22097 3.38514 2.92734 2.36124 3.26230 4.97143 3.69265 4.61418 2.27063 2.38238 2.70982 2.11937 3.37005 6.36711 3.73375 44 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00353 6.04282 6.76517 0.61958 0.77255 0.32899 1.27173
- 38 3.00800 2.48193 5.53105 4.91728 2.98458 4.75707 4.15268 2.83469 3.12355 2.32451 4.08737 4.91198 5.12099 4.84273 3.46182 3.58557 3.26283 2.28912 2.64554 1.29971 45 y - - E
- 2.68641 4.42053 2.77543 2.73091 3.46377 2.40536 3.72420 3.29377 2.67764 2.69378 4.24582 2.90336 2.73763 3.18113 2.89660 2.37910 2.77543 2.98542 4.58500 3.61526
- 0.12278 2.16768 6.81068 0.54422 0.86820 0.48576 0.95510
- 39 2.52553 4.02469 3.60093 2.65311 4.18239 3.63052 4.17989 3.44209 2.14970 3.12319 4.96260 3.43770 4.02454 2.12722 2.15391 2.32250 3.25888 3.40611 2.73453 3.57446 49 q - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02932 6.08833 3.62591 0.61958 0.77255 0.48576 0.95510
- 40 2.85303 5.96779 2.74660 1.91867 5.31393 3.60453 3.59476 4.33679 2.36399 3.57280 3.62613 2.83996 2.06170 2.51716 3.24767 2.43993 2.61505 3.39964 6.39984 4.98824 50 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00347 6.06248 6.78482 0.61958 0.77255 0.67944 0.70705
- 41 2.55267 3.11480 2.72137 2.31006 5.21613 3.67111 4.08491 3.18721 2.11932 2.73126 3.73119 3.72342 3.44703 2.78931 3.31632 2.60923 2.50487 2.33623 6.34948 4.95631 51 k - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.09789 6.06248 2.39773 0.61958 0.77255 0.38130 1.14877
- 42 3.41114 5.92195 2.00739 2.51445 4.35946 1.85149 4.04885 4.75310 3.02073 3.41727 4.96259 1.88803 4.57836 2.81891 2.77402 2.53317 2.79169 3.60394 6.35459 4.48731 52 g - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00370 5.99676 6.71911 0.61958 0.77255 0.25112 1.50474
- 43 2.89692 5.98568 2.39354 2.04021 5.33202 2.12548 3.27810 4.81889 2.36649 3.39071 4.58505 2.82477 4.63888 2.99231 3.02264 2.04514 2.45319 3.82791 6.41761 5.00590 53 e - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 44 3.10206 5.95088 3.50928 2.19657 4.70794 1.83640 4.44201 3.85177 2.81849 3.20653 3.64542 2.17673 2.82486 2.50236 3.67274 2.64718 2.71954 3.18909 6.39210 3.73228 54 g - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.08059 6.08833 2.58819 0.61958 0.77255 0.48576 0.95510
- 45 2.83017 5.93388 2.31048 1.94273 5.28007 2.46456 3.60606 4.35357 2.35448 2.95362 4.97424 3.06816 3.41033 2.69285 2.84649 2.21743 2.98206 3.67978 4.23187 4.95426 55 e - - C
- 2.68733 4.40831 2.77609 2.73043 3.46444 2.40393 3.72592 3.29278 2.67833 2.69426 4.24827 2.90407 2.73626 3.18024 2.89744 2.37952 2.77650 2.98614 4.58019 3.61570
- 1.45631 0.90375 1.01651 1.51529 0.24813 0.96821 0.47765
- 46 2.32839 5.42660 2.93163 2.28220 4.02543 3.04571 3.03894 3.22247 2.82753 3.21315 3.89864 3.49093 2.50859 3.14260 2.89921 2.69284 3.05772 2.38519 4.38264 3.20345 66 e - - G
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00571 5.56406 6.28641 0.61958 0.77255 0.18459 1.78051
- 47 2.69465 3.91083 2.42967 2.34662 4.43247 3.13708 3.62175 3.49809 2.56727 2.84127 4.03266 3.52527 3.00745 3.22895 3.52756 2.46523 2.69768 3.11906 2.19019 4.92515 67 w - - C
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00353 6.04443 6.76678 0.61958 0.77255 0.33269 1.26228
- 48 2.67627 5.86490 3.17099 3.22595 3.40616 4.27494 3.15476 3.07365 2.21494 2.78239 4.39426 2.30764 3.56160 2.19351 2.71433 2.94392 2.62330 2.55032 5.16850 4.37026 68 q - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 49 3.05871 5.98132 3.36643 1.71285 5.32569 3.90513 2.27648 4.25125 2.92072 4.28630 4.28595 2.90579 3.33969 2.79371 2.63337 2.42582 2.46361 2.81009 3.46671 3.72048 69 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 50 2.88323 4.65127 3.40086 2.73607 2.41972 3.62669 3.91044 2.52424 2.75640 2.37424 3.94274 3.64921 4.76561 2.38668 2.64750 3.03028 3.09193 2.27100 6.08057 3.03402 70 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 51 3.36533 5.95840 2.65995 2.86095 3.44584 4.25167 3.55888 2.90987 2.78397 3.33346 3.90493 2.03375 3.68901 2.80089 2.78508 2.11531 1.97302 3.15541 6.39763 4.99330 71 t - - E
- 2.68571 4.42246 2.77540 2.73144 3.46375 2.40497 3.72515 3.29375 2.67742 2.69376 4.24711 2.90367 2.73710 3.18135 2.89822 2.37876 2.77540 2.98457 4.58498 3.61524
- 0.06628 2.76409 6.81068 0.97562 0.47314 0.48576 0.95510
- 52 2.38926 5.49703 3.09615 2.80044 4.68202 3.76562 4.62096 2.19958 3.33274 2.03099 4.11871 2.97731 4.26404 3.83080 2.89542 3.19964 2.84193 1.56133 6.03936 4.75239 75 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 53 2.79501 4.92737 2.35659 2.60299 4.06511 2.98090 3.88301 4.80087 2.44593 3.57653 5.01701 3.37711 1.76863 3.53250 3.23955 1.94419 2.68524 2.95506 6.41016 5.00121 76 p - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 54 2.44542 5.98316 3.18675 2.55065 5.32835 2.12386 4.43300 4.38419 2.38413 2.93654 5.02378 2.50193 2.49139 3.27226 2.05133 2.36069 3.70337 4.12664 4.32391 4.48343 77 r - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 55 2.77179 5.98329 2.50848 2.76644 5.32854 3.30269 3.08416 4.38434 3.16759 4.28865 5.02390 2.27915 2.67265 2.61285 3.32102 2.18277 1.82444 2.83013 6.41587 4.35727 78 t - - T
- 2.68621 4.42251 2.77546 2.73149 3.46380 2.40468 3.72521 3.29380 2.67767 2.69252 4.24716 2.90344 2.73766 3.18134 2.89827 2.37913 2.77442 2.98545 4.58503 3.61529
- 0.07130 2.69245 6.81068 1.11635 0.39671 0.48576 0.95510
- 56 2.32530 5.97446 3.57954 1.89562 5.31575 4.24796 3.32554 3.73278 2.42253 2.98562 5.01611 3.71687 3.10116 2.71107 2.91871 2.60336 1.70360 3.15915 6.40941 5.00074 83 t - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.35248 6.08833 1.22151 0.61958 0.77255 0.48576 0.95510
- 57 2.95924 5.72336 2.75932 2.63159 3.96190 3.29462 3.22449 3.40062 2.77057 3.18108 3.56769 2.46117 2.98702 3.05715 2.72729 2.56520 1.96589 3.52719 6.16591 2.96938 84 t - - S
- 2.68622 4.42162 2.77539 2.73088 3.46349 2.40510 3.72514 3.29311 2.67761 2.69358 4.24710 2.90367 2.73759 3.18166 2.89753 2.37894 2.77488 2.98538 4.58497 3.61523
- 0.23969 1.55321 6.46298 0.15973 1.91309 0.51157 0.91517
- 58 2.78411 5.86726 3.65151 2.46190 3.55121 3.32277 3.71415 3.82816 2.87545 3.69015 4.27003 2.90512 3.60994 2.68731 2.37548 1.72361 1.95655 3.42914 6.30822 3.85760 87 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00384 5.96109 6.68344 0.61958 0.77255 0.21363 1.64843
- 59 2.13080 3.38910 5.56698 4.95075 2.41578 4.20194 3.39215 2.83299 4.73282 2.14660 3.19234 4.92810 5.12527 4.86169 4.18461 4.07348 3.03808 1.63705 4.66089 1.78369 88 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 60 3.12543 5.93769 2.99354 2.53954 5.26303 4.25659 3.21054 2.85212 2.62935 2.82513 3.45830 2.90110 4.19559 2.80624 3.10357 2.88568 1.50190 2.67316 6.38237 3.93622 89 t - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 61 3.61965 4.99402 3.63828 4.95783 2.26826 4.79135 5.12555 1.86647 4.74679 1.34194 3.74460 4.94944 5.15281 3.10559 4.75989 3.74420 3.85186 1.42486 5.61987 4.44474 90 l - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 62 3.10387 5.98366 3.06368 2.31445 4.05906 3.57903 3.48488 4.81531 2.43543 4.01680 3.91148 2.67498 2.99920 2.70828 2.56621 2.14984 1.90367 3.06274 4.55677 4.37671 91 t - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 63 3.34220 5.98744 1.86090 2.69096 5.33359 1.40608 3.63608 4.82043 2.48624 4.29318 4.45099 1.96888 4.06897 3.19339 3.48838 2.73868 3.70514 4.37867 6.41942 4.25681 92 g - - S
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 64 5.18530 6.36522 4.58586 6.57578 3.53131 6.59442 6.84537 2.81242 6.44067 0.21363 3.54046 6.78308 6.53953 6.19263 6.31583 5.99910 5.37457 3.39834 6.73440 5.83217 93 L - - -
- 2.68590 4.42227 2.77521 2.73125 3.46356 2.40515 3.72496 3.29356 2.67743 2.69357 4.24692 2.90349 2.73741 3.18148 2.89803 2.37889 2.77521 2.98520 4.58479 3.61505
- 0.02033 3.96193 6.81068 0.31431 1.31041 0.48576 0.95510
- 65 2.93361 5.98253 3.16620 2.07447 5.32745 3.84017 3.84639 3.52003 2.07989 2.71701 4.56317 3.05465 3.94228 2.39023 2.13660 2.81003 2.42767 2.98359 6.41531 3.87097 95 e - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 66 2.17452 5.85112 3.79178 2.44872 5.14174 4.27993 4.47388 4.59086 3.04069 4.13287 4.42378 3.36057 0.82761 3.31072 3.71538 3.13243 3.15654 3.97958 4.90439 4.38214 96 p - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 67 2.72531 5.97666 2.50761 2.79752 4.22378 1.29966 2.70734 4.80294 2.85170 4.02964 5.01805 2.59981 4.64085 3.32835 3.25617 2.51345 3.59137 3.91820 4.88800 2.97800 97 g - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 68 2.39925 4.86641 3.79312 2.74568 5.13568 4.27988 3.97435 3.95098 2.69562 3.65359 3.00813 3.38952 4.67180 3.12070 2.33490 2.43668 1.27713 2.90106 6.31421 4.93977 98 t - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 69 2.87821 5.98261 2.71299 2.05681 3.93787 3.36966 3.57296 3.81023 2.25993 3.03102 3.49917 2.39917 3.09415 2.62154 2.82818 2.67359 2.51409 3.67730 4.58228 5.00448 99 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 70 6.32206 7.09639 6.95855 7.01624 2.70399 6.62558 5.12529 5.84365 6.77161 4.03604 6.32463 4.32154 6.86163 6.30239 6.48747 6.05185 6.49899 5.81871 5.18730 0.14189 100 Y - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 71 3.06725 5.97020 3.56838 1.93769 4.23056 3.77167 3.39655 3.53252 2.56448 3.45405 4.47893 2.47898 4.64226 2.55695 2.74362 2.36648 2.01401 2.66399 6.40629 3.70776 101 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 72 3.19486 4.19171 5.58508 4.96942 1.44027 4.15574 5.11433 1.81297 4.75161 2.09873 3.37140 4.94615 5.14143 4.88008 4.75485 4.09123 3.83769 1.47173 5.60267 3.09551 102 f - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 73 3.18039 4.06436 3.15201 2.27681 5.32468 3.77041 3.95744 3.70705 2.23538 4.28548 4.11883 2.88564 4.63997 2.58030 1.70576 2.27707 2.39981 3.62914 4.03739 3.61343 103 r - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 74 3.76685 5.84337 6.79391 6.31497 3.84743 6.27452 6.95358 1.59565 6.25134 2.11498 4.30213 6.44619 6.46746 6.44080 6.36566 5.70153 4.90672 0.53161 7.20703 6.03175 104 V - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 75 2.31005 4.88319 3.40675 2.63903 3.58848 4.26911 3.49342 3.09105 2.39543 3.00463 4.93879 3.41670 4.66153 1.98639 2.22144 3.11070 2.61129 2.78609 6.34491 2.92043 105 q - - E
- 2.68621 4.42228 2.77522 2.73126 3.46357 2.40516 3.72497 3.29357 2.67744 2.69312 4.24693 2.90350 2.73743 3.18149 2.89804 2.37890 2.77522 2.98521 4.58480 3.61506
- 0.03738 3.58894 4.70319 0.25135 1.50394 0.48576 0.95510
- 76 0.79499 5.17226 4.80437 3.93376 4.33120 3.17569 4.96596 3.30029 4.15773 2.86829 4.32533 4.52823 5.01384 4.41886 4.42465 2.28661 2.19420 2.76335 5.81537 4.60940 107 a - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00340 6.08033 6.80268 0.61958 0.77255 0.44741 1.01966
- 77 2.84306 4.15407 4.98296 3.19564 3.23517 4.66606 3.67524 2.49603 3.23224 2.21212 3.84796 4.62630 5.03633 2.88555 2.43211 3.49088 3.22704 1.33993 5.67363 2.88123 108 v - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 78 3.27061 4.75060 2.81965 3.10410 5.31934 3.95942 3.99367 3.88107 2.62205 4.02823 5.01830 1.35628 3.08534 3.32913 3.08546 1.88067 2.21938 4.02145 6.41122 3.76470 109 n - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00992 6.08833 4.87890 0.61958 0.77255 0.48576 0.95510
- 79 2.39836 4.69624 2.57939 2.56364 4.72011 1.55094 3.74815 4.26504 2.61409 4.28517 5.02018 2.82673 4.26340 2.69971 2.87382 2.73983 2.53993 3.07568 6.41202 5.00074 110 g - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00340 6.08180 6.80415 0.61958 0.77255 0.45398 1.00812
- 80 2.22211 4.94595 2.69424 2.44928 4.84552 2.32005 3.06335 2.95704 2.33976 3.55821 4.09648 2.87488 4.09930 2.85656 2.97877 3.08279 3.07714 2.39346 6.40553 4.01548 111 a - - T
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.38398 6.08833 1.15015 0.61958 0.77255 0.48576 0.95510
- 81 2.96920 5.43248 3.46409 2.76236 3.93019 1.02513 4.29951 4.07917 3.10833 3.39330 4.50784 3.40559 4.48149 3.45547 3.56956 2.50552 2.39680 3.76237 5.94228 3.01765 112 g - - E
- 2.68652 4.42259 2.77488 2.73144 3.46170 2.40466 3.72529 3.29388 2.67703 2.69373 4.24724 2.90335 2.73774 3.18162 2.89801 2.37895 2.77529 2.98552 4.58511 3.61537
- 0.29928 1.35852 6.43163 0.48724 0.95274 1.77816 0.18506
- 82 2.84273 4.18992 3.05053 2.12883 3.36284 2.75189 4.25559 3.03507 2.66396 2.65563 4.59024 2.63081 3.84786 2.76844 3.19058 2.84597 2.82776 2.89016 3.06821 3.41272 117 e - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00494 5.70928 6.43163 0.61958 0.77255 1.56406 0.23482
- 83 3.37920 5.61493 3.74277 3.20384 4.92800 1.01625 3.96683 4.35082 2.94708 2.91738 4.72998 3.71516 3.70329 3.52945 3.00683 1.61777 3.61882 4.00263 6.13360 4.80162 118 g - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00481 5.73459 6.45693 0.61958 0.77255 0.30535 1.33510
- 84 2.58463 5.93784 3.04102 2.09605 4.57465 2.51630 3.24109 4.26208 2.60545 3.44607 3.62705 3.20484 1.89678 2.68661 2.74662 2.97880 3.02092 3.23569 6.37074 4.50367 119 p - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00361 6.02233 6.74467 0.61958 0.77255 0.28862 1.38348
- 85 2.48488 5.72055 3.87501 1.97538 3.04853 3.48010 4.51877 3.51898 2.88839 2.73568 4.42660 3.64380 2.08811 3.48814 2.70856 2.40769 2.92982 4.05679 2.77386 3.43366 120 e - - B
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00338 6.08833 6.81068 0.61958 0.77255 0.48576 0.95510
- 86 3.03720 5.94099 3.75455 2.96917 5.26587 2.91682 3.66571 4.11840 2.98472 4.23738 4.98891 3.74380 4.66031 3.40955 3.12788 0.72443 2.46104 4.32115 6.38683 4.99111 121 s - - E
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00227 6.08723 * 0.61958 0.77255 0.00000 *
-//
+++ /dev/null
-package jalview.schemes;
-
-import static org.testng.Assert.assertEquals;
-
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceI;
-import jalview.io.DataSourceType;
-import jalview.io.HMMFile;
-
-import java.awt.Color;
-import java.io.IOException;
-import java.net.MalformedURLException;
-
-import org.testng.annotations.Test;
-
-public class HmmerGlobalBackgroundTest {
-
- @Test(groups = "Functional")
- public void testFindColour() throws MalformedURLException, IOException
- {
- HMMFile file = new HMMFile("test/jalview/io/test_PKinase_hmm.txt",
- DataSourceType.FILE);
-
- SequenceI hmmSeq = file.getSeqsAsArray()[0];
- AlignmentI al = new Alignment(new SequenceI[] { hmmSeq });
- ColourSchemeI scheme = new HmmerGlobalBackground(al);
-
- /*
- * 'A' in column 1, node 2, match emission 2.77204
- * e-2.77204 = 0.0625
- * background frequency is 0.0826
- * ratio is 0.757, log is negative, colour is Orange
- */
- Color actual = scheme.findColour('A', 1, null, null, 0);
- assertEquals(actual, Color.ORANGE);
-
- // gap is white
- actual = scheme.findColour('-', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
- actual = scheme.findColour(' ', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
- actual = scheme.findColour('.', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
-
- /*
- * 'Y' in column 4, node 5, match emission 4.41426
- * e-4.41426 = 0.0121
- * background frequency is 0.0292
- * ratio is 0.414, log is negative, colour is Orange
- */
- actual = scheme.findColour('Y', 4, null, null, 0);
- assertEquals(actual, Color.ORANGE);
-
- /*
- * 'M' in column 109, no matching node, colour is reddish
- */
- actual = scheme.findColour('M', 109, null, null, 0);
- assertEquals(actual, new Color(230, 0, 0));
-
- /*
- * 'I' in column 6, node 7, match emission 1.33015
- * e-1.33015 = 0.2644
- * background frequency is 0.0593
- * ratio is 4.459, log is 1.495
- * colour is graduated 1.495/4.52 or 84/255 of the way from
- * white(255, 255, 255) to blue(0, 0, 255)
- */
- actual = scheme.findColour('I', 6, null, null, 0);
- assertEquals(actual, new Color(171, 171, 255));
-
- /*
- * 'V' in column 14, node 15, match emission 0.44769
- * e-0.44769 = 0.6391
- * background frequency is 0.0686
- * ratio is 9.316, log is 2.232
- * colour is graduated 2.232/4.52 or 126/255 of the way from
- * white(255, 255, 255) to blue(0, 0, 255)
- */
- actual = scheme.findColour('V', 14, null, null, 0);
- assertEquals(actual, new Color(129, 129, 255));
-
- /*
- * invalid symbol is White
- */
- actual = scheme.findColour('X', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
- }
-
-}
+++ /dev/null
-package jalview.schemes;
-
-import static org.testng.Assert.assertEquals;
-
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceI;
-import jalview.io.DataSourceType;
-import jalview.io.HMMFile;
-
-import java.awt.Color;
-import java.io.IOException;
-import java.net.MalformedURLException;
-
-import org.testng.annotations.Test;
-
-public class HmmerLocalBackgroundTest {
-
- @Test(groups = "Functional")
- public void testFindColour() throws MalformedURLException, IOException
- {
- HMMFile file = new HMMFile("test/jalview/io/test_PKinase_hmm.txt",
- DataSourceType.FILE);
-
- /*
- * alignment with 20 residues and background frequencies:
- * A/a, S 3/20 = 0.15
- * M, K 4/20 = 0.2
- * V 2/20 = 0.1
- * Q, R, L 1/20 = 0.05
- * log(totalCount) = log(20) = 2.996
- */
- SequenceI seq1 = new Sequence("seq1", "AAMMMKKKVV");
- SequenceI seq2 = new Sequence("seq2", "aAM-QKRSSSL");
- SequenceI hmmSeq = file.getSeqsAsArray()[0];
- AnnotatedCollectionI ac = new Alignment(
- new SequenceI[]
- { hmmSeq, seq1, seq2 });
- ColourSchemeI scheme = new HmmerLocalBackground(ac);
-
- /*
- * 'A' in column 1, node 2, match emission 2.77204
- * e-2.77204 = 0.0625
- * background frequency is 0.15
- * ratio is < 1, log is negative, colour is Orange
- */
- Color actual = scheme.findColour('A', 1, null, null, 0);
- assertEquals(actual, Color.ORANGE);
-
- // gap is white
- actual = scheme.findColour('-', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
- actual = scheme.findColour(' ', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
- actual = scheme.findColour('.', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
-
- /*
- * 'L' in column 3, node 4, match emission 1.98342
- * e-1.98342 = 0.1376
- * background frequency is 0.05
- * ratio is 2.752, log is 1.012
- * colour is graduated 1.012/2.996 or 86/255 of the way from
- * white(255, 255, 255) to blue(0, 0, 255)
- */
- actual = scheme.findColour('L', 3, null, null, 0);
- assertEquals(actual, new Color(169, 169, 255));
-
- /*
- * invalid symbol is White
- */
- actual = scheme.findColour('X', 2, null, null, 0);
- assertEquals(actual, Color.WHITE);
- }
-
-}
+++ /dev/null
-package jalview.util;
-
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.List;
-
-import org.testng.annotations.Test;
-
-public class FileUtilsTest
-{
- @Test(groups = "Functional")
- public void testFindMatchingPaths() throws IOException
- {
- String expect1 = Paths.get("..", "jalview", "examples", "plantfdx.fa")
- .toString();
- String expect2 = Paths.get("../jalview/examples/plantfdx.features")
- .toString();
- String expect3 = Paths
- .get("../jalview/examples/testdata/plantfdx.features")
- .toString();
-
- List<String> matches = FileUtils
- .findMatchingPaths(Paths.get(".."),
- ".*[/\\\\]plant.*\\.f.*");
- System.out.println(matches);
- assertTrue(matches.contains(expect1));
- assertTrue(matches.contains(expect2));
- assertTrue(matches.contains(expect3));
- }
-
- @Test(groups = "External")
- public void testWindowsPath() throws IOException
- {
- if (System.getProperty("os.name").startsWith("Windows"))
- {
- /*
- * should pass provided Eclipse is installed
- */
- List<String> matches = FileUtils.findMatches("C:\\",
- "Program Files*/eclips*/eclips?.exe");
- assertFalse(matches.isEmpty());
-
- /*
- * should pass provided Chimera is installed
- */
- matches = FileUtils.findMatches("C:\\",
- "Program Files*/Chimera*/bin/{chimera,chimera.exe}");
- assertFalse(matches.isEmpty());
- }
- }
-
- @Test(groups = "Functional")
- public void testFindMatches() throws IOException
- {
- String expect1 = Paths.get("..", "jalview", "examples", "plantfdx.fa")
- .toString();
- String expect2 = Paths.get("../jalview/examples/plantfdx.features")
- .toString();
- String expect3 = Paths
- .get("../jalview/examples/testdata/plantfdx.features")
- .toString();
-
- List<String> matches = FileUtils
- .findMatches("..", "jalview/ex*/plant*.f*");
- System.out.println(matches);
- assertTrue(matches.contains(expect1));
- assertTrue(matches.contains(expect2));
- assertFalse(matches.contains(expect3));
- }
-}
+++ /dev/null
-package jalview.util;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-
-import jalview.datamodel.HMMNode;
-import jalview.datamodel.HiddenMarkovModel;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceI;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.testng.annotations.Test;
-
-import junit.extensions.PA;
-
-public class HMMProbabilityDistributionAnalyserTest {
-
- HMMProbabilityDistributionAnalyser analyser = new HMMProbabilityDistributionAnalyser();
-
- @Test
- public void testMoveToFile() throws IOException
- {
-
- BufferedReader br = new BufferedReader(new FileReader(
- "test/jalview/util/test_Fams_for_probability_analysis"));
- analyser.moveLocationBy(1, br);
-
- String line = br.readLine();
- assertEquals(line, "# STOCKHOLM 1.0");
- line = br.readLine();
- assertEquals(line, "seq1 ATW");
- line = br.readLine();
- assertEquals(line, "seq2 ATI");
-
- }
-
- @Test
- public void testCountValidResidues()
- {
- analyser.sequences = new Vector<>();
- analyser.hmm = new HiddenMarkovModel();
- analyser.hmm.setProperty("LENG", "8");
-
- List<HMMNode> nodes = new ArrayList<>();
- nodes.add(new HMMNode());
- for (int i = 1; i < 9; i++)
- {
- HMMNode node = new HMMNode();
- node.setResidueNumber(i - 1);
- nodes.add(node);
-
- }
- PA.setValue(analyser.hmm, "nodes", nodes);
-
- SequenceI[] sequence = new Sequence[] {
- new Sequence("seq1", "ATGWWSCF"), new Sequence("seq2", "GGMKI"),
- new Sequence("seq3", "--.ATccGc") };
- analyser.sequences.add(sequence[0]);
- analyser.sequences.add(sequence[1]);
- analyser.sequences.add(sequence[2]);
-
- int count = analyser.countValidResidues();
- assertEquals(count, 16);
- }
-
- @Test(priority = 0)
- public void testReadBinned() throws IOException
- {
- analyser.readBinned("test/jalview/util/");
- Map<String, Double> map = analyser.binned;
- assertEquals(map.get("1.8"), 4.53);
- assertEquals(map.get("3.4"), 2.65);
- assertEquals(map.get("6.4"), 10.8);
- assertEquals(map.get("0"), 5.4);
- }
-
- @Test
- public void testReadRaw() throws IOException
- {
- analyser.readRaw("test/jalview/util/");
- List<ArrayList<Double>> list = analyser.raw;
-
- assertEquals(list.get(0).get(0), 1.43);
- assertNull(list.get(0).get(2));
- assertEquals(list.get(1).get(1), 1.2);
- assertEquals(list.get(2).get(0), 5.6);
- assertEquals(list.get(2).get(2), 6.8);
-
- }
-
- @Test(priority = 1)
- public void testProcessData() throws IOException
- {
- analyser.keepRaw = true;
- BufferedReader brFam = new BufferedReader(new FileReader(
- "test/jalview/util/test_Fams_for_probability_analysis"));
- BufferedReader brHMM = new BufferedReader(new FileReader(
- "test/jalview/util/test_HMMs_for_probability_analysis"));
- analyser.readStockholm(brFam);
- analyser.readHMM(brHMM);
- analyser.processData(6);
- Map<String, Double> map = analyser.binned;
- List<ArrayList<Double>> list = analyser.raw;
- assertEquals(map.get("1.8"), 4.863, 0.001d);
- assertEquals(map.get("3.4"), 2.65);
- assertEquals(map.get("0"), 5.4);
- assertEquals(map.get("6.4"), 10.8);
- assertEquals(map.get("1.4"), 0.166667, 0.00001d);
- assertEquals(map.get("4.4"), 0.5);
-
- }
-}
+++ /dev/null
-Seq1, Seq2, Seq3
-1.43, 2.34, 5.6,
-EMPTY, 1.2, 0.05,
-EMPTY, 5.4, 6.8,
\ No newline at end of file
+++ /dev/null
-# STOCKHOLM 1.0
-seq1 AW
-seq2 GW
-seq3 AW
-//
-# STOCKHOLM 1.0
-seq1 ATW
-seq2 ATI
-//
-# STOCKHOLM 1.0
-seq1 R-WW
-seq2 RAWW
-//
\ No newline at end of file
+++ /dev/null
-HMMER3/f [3.1b2 | February 2015]
-NAME test1
-LENG 4
-ALPH amino
-RF no
-MM no
-CONS yes
-CS no
-MAP yes
-DATE Fri Jul 21 06:35:06 2017
-NSEQ 3
-EFFN 3.000000
-CKSUM 657102310
-STATS LOCAL MSV -5.0223 0.82341
-STATS LOCAL VITERBI -4.9569 0.82341
-STATS LOCAL FORWARD -2.0282 0.82341
-HMM A C D E F G H I K L M N P Q R S T V W Y
- m->m m->i m->d i->m i->i d->m d->d
- COMPO 1.94296 5.20658 4.78882 4.52987 4.66525 2.54188 5.19553 2.25221 4.08549 3.87133 5.00250 4.55734 4.73106 4.65220 2.77287 3.67799 1.53923 3.75384 1.48526 4.84023
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01083 4.92694 5.64929 0.61958 0.77255 0.00000 *
- 1 0.67027 4.79120 4.60974 4.51892 5.43734 1.28080 5.43621 4.90028 4.64310 4.61059 5.39837 4.28688 4.41468 4.80804 4.79047 3.08135 3.44468 4.10506 6.74908 5.67939 1 A - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01083 4.92694 5.64929 0.61958 0.77255 0.48576 0.95510
- 2 5.43405 6.34487 5.85697 5.84679 4.39288 5.10370 5.65594 5.70664 5.69821 4.87848 6.25251 5.89664 5.70261 6.00722 5.60902 5.64576 5.80049 5.59366 0.08910 4.36301 2 W - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01083 4.92694 5.64929 0.61958 0.77255 0.48576 0.95510
- 3 3.42384 5.23617 4.84601 4.77568 5.39247 4.01365 5.64153 4.72950 4.75585 4.52264 5.55782 4.69647 4.81267 5.08969 4.87301 3.64217 0.20934 4.25217 6.65833 5.63018 3 T - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01083 4.92694 5.64929 0.61958 0.77255 0.48576 0.95510
- 4 3.53954 5.09963 4.71395 4.06038 4.20429 4.44020 4.65482 0.90152 3.16536 2.96072 4.13056 4.31689 4.83725 3.95143 1.46549 3.86829 3.78084 2.85654 5.74911 4.54685 4 i - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00730 4.92341 * 0.61958 0.77255 0.00000 *
-//
-HMMER3/f [3.1b2 | February 2015]
-NAME test2
-LENG 3
-ALPH amino
-RF no
-MM no
-CONS yes
-CS no
-MAP yes
-DATE Fri Jul 21 06:36:50 2017
-NSEQ 2
-EFFN 2.000000
-CKSUM 777554360
-STATS LOCAL MSV -5.2452 0.95763
-STATS LOCAL VITERBI -5.2886 0.95763
-STATS LOCAL FORWARD -1.5134 0.95763
-HMM A C D E F G H I K L M N P Q R S T V W Y
- m->m m->i m->d i->m i->i d->m d->d
- COMPO 1.33364 4.79082 4.44132 4.24796 3.91456 3.75718 4.85762 2.23342 4.16821 3.09137 4.29744 4.25088 4.41741 4.46803 4.31080 3.33397 1.39376 3.21010 2.54819 4.14914
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01467 4.62483 5.34718 0.61958 0.77255 0.00000 *
- 1 0.32372 4.76536 4.42980 4.32857 5.00499 3.55951 5.22620 4.27004 4.37081 4.10495 5.08789 4.22499 4.36948 4.63911 4.51684 3.12947 3.46009 3.76842 6.33337 5.25783 1 A - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01467 4.62483 5.34718 0.61958 0.77255 0.48576 0.95510
- 2 3.04414 4.87155 4.35068 4.21532 4.89213 3.66881 5.13994 4.14202 4.17893 3.96810 5.00600 4.23490 4.44590 4.53729 4.35178 3.25814 0.35496 3.73038 6.23308 5.12388 2 T - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01467 4.62483 5.34718 0.61958 0.77255 0.48576 0.95510
- 3 3.41901 4.77187 4.98694 4.49106 3.10447 4.49364 4.52024 1.21391 4.22709 2.30875 3.57865 4.53952 4.83367 4.43564 4.31127 3.88439 3.66452 2.61326 1.44329 3.34125 3 i - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 4.62006 * 0.61958 0.77255 0.00000 *
-//
-HMMER3/f [3.1b2 | February 2015]
-NAME test3
-LENG 4
-ALPH amino
-RF no
-MM no
-CONS yes
-CS no
-MAP yes
-DATE Fri Jul 21 06:37:01 2017
-NSEQ 2
-EFFN 2.000000
-CKSUM 986955970
-STATS LOCAL MSV -5.4578 0.80004
-STATS LOCAL VITERBI -5.2499 0.80004
-STATS LOCAL FORWARD -2.1856 0.80004
-HMM A C D E F G H I K L M N P Q R S T V W Y
- m->m m->i m->d i->m i->i d->m d->d
- COMPO 2.16700 5.33023 4.57707 4.32329 4.15728 4.03215 4.83242 4.49728 3.73978 4.00181 5.18156 4.45520 4.63709 4.41734 1.53081 3.84281 4.10073 4.20172 0.82417 4.15750
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01467 4.62483 5.34718 0.61958 0.77255 0.00000 *
- 1 4.09153 5.75008 4.67229 4.09411 5.31638 4.34678 4.67762 4.97541 2.93879 4.35023 5.37643 4.37234 4.85576 3.90366 0.27042 4.17197 4.33362 4.67489 6.11461 5.14175 1 R - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.39762 4.62483 1.14482 0.61958 0.77255 0.48576 0.95510
- 2 0.58385 4.42717 3.89187 3.72118 4.47383 3.23815 4.69159 3.65968 3.74862 3.52210 4.52478 3.76053 4.01438 4.05655 3.96007 2.78076 3.08518 3.24526 5.86063 4.71068 2 A - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.02145 4.24866 4.97100 0.61958 0.77255 0.27360 1.42978
- 3 4.82318 5.87391 5.36844 5.28961 3.81117 4.70308 5.10523 4.98084 5.06729 4.21822 5.56037 5.33222 5.28501 5.40387 5.04111 5.02415 5.17266 4.88017 0.16601 3.78547 3 W - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.01467 4.62483 5.34718 0.61958 0.77255 0.48576 0.95510
- 4 4.82318 5.87391 5.36844 5.28961 3.81117 4.70308 5.10523 4.98084 5.06729 4.21822 5.56037 5.33222 5.28501 5.40387 5.04111 5.02415 5.17266 4.88017 0.16601 3.78547 4 W - - -
- 2.68618 4.42225 2.77519 2.73123 3.46354 2.40513 3.72494 3.29354 2.67741 2.69355 4.24690 2.90347 2.73739 3.18146 2.89801 2.37887 2.77519 2.98518 4.58477 3.61503
- 0.00990 4.62006 * 0.61958 0.77255 0.00000 *
-//
\ No newline at end of file
+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.ws.seqfetcher;
-
-import static org.testng.Assert.assertTrue;
-
-import jalview.bin.Cache;
-import jalview.gui.JvOptionPane;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class DasSequenceFetcher
-{
-
- @BeforeClass(alwaysRun = true)
- public void setUpJvOptionPane()
- {
- JvOptionPane.setInteractiveMode(false);
- JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
- }
-
- @Test(groups = { "Network" })
- public void testDasRegistryContact()
- {
- Cache.getDasSourceRegistry().refreshSources();
- assertTrue(Cache.getDasSourceRegistry().getSources().isEmpty(),
- "Expected to find no DAS sources at the registry. Check config.");
- }
-
-}