import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureSettingsControllerI;
+import jalview.api.FeatureSettingsModelI;
import jalview.api.SplitContainerI;
import jalview.api.ViewStyleI;
import jalview.api.analysis.ScoreModelI;
import jalview.datamodel.AlignmentOrder;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.DBRefSource;
import jalview.datamodel.HiddenSequences;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SeqCigar;
import jalview.structure.StructureSelectionManager;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
+import jalview.ws.SequenceFetcher;
import jalview.ws.jws1.Discoverer;
import jalview.ws.jws2.Jws2Discoverer;
import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.seqfetcher.ASequenceFetcher;
import jalview.ws.seqfetcher.DbSourceProxy;
import java.awt.BorderLayout;
@Override
public void fetchSequence_actionPerformed(ActionEvent e)
{
- new SequenceFetcher(this);
+ new jalview.gui.SequenceFetcher(this);
}
@Override
* alternative protein products for my protein's gene
*/
List<SequenceI> addedPeers = new ArrayList<SequenceI>();
- AlignmentI alignment = AlignFrame.this.getViewport().getAlignment();
+ AlignmentI alignment = AlignFrame.this.getViewport()
+ .getAlignment();
Alignment xrefs = CrossRef.findXrefSequences(sel, dna, source,
alignment, addedPeers);
if (xrefs != null)
{
+ /*
+ * figure out colour scheme if any to apply to features
+ */
+ ASequenceFetcher sftch = new SequenceFetcher();
+ List<DbSourceProxy> proxies = sftch.getSourceProxy(source);
+ FeatureSettingsModelI featureColourScheme = null;
+ for (DbSourceProxy proxy : proxies)
+ {
+ FeatureSettingsModelI preferredColours = proxy
+ .getFeatureColourScheme();
+ if (preferredColours != null)
+ {
+ featureColourScheme = preferredColours;
+ break;
+ }
+ }
Alignment al = makeCrossReferencesAlignment(
alignment.getDataset(), xrefs);
- /*
- * Copy dna-to-protein mappings to new alignment
- */
- // TODO 1: no mappings are set up for EMBL product
- // TODO 2: if they were, should add them to protein alignment, not
- // dna
- // List<AlignedCodonFrame> cf = xrefs.getCodonFrames();
- // for (AlignedCodonFrame acf : cf)
- // {
- // al.addCodonFrame(acf);
- // }
AlignFrame newFrame = new AlignFrame(al, DEFAULT_WIDTH,
DEFAULT_HEIGHT);
String newtitle = String.format("%s %s %s",
if (dna)
{
copyAlignment = AlignmentUtils.makeCdsAlignment(
- sequenceSelection, cf);
+ sequenceSelection, cf, alignment);
+ if (copyAlignment.getHeight() == 0)
+ {
+ System.err.println("Failed to make CDS alignment");
+ }
al.getCodonFrames().clear();
al.getCodonFrames().addAll(cf);
}
sequenceSelection));
copyAlignment.getCodonFrames().addAll(cf);
}
+ copyAlignment.setGapCharacter(AlignFrame.this.viewport
+ .getGapCharacter());
StructureSelectionManager ssm = StructureSelectionManager
.getStructureSelectionManager(Desktop.instance);
ssm.registerMappings(cf);
copyAlignment.addSequence(peer);
}
- /*
- * align protein to dna
- */
- // TODO needs debugging
- // if (dna)
- // {
- // al.alignAs(copyAlignment);
- // }
- // else
- // {
- // copyAlignment.alignAs(al);
- // }
-
- AlignFrame copyThis = new AlignFrame(copyAlignment,
- AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
- copyThis.setTitle(AlignFrame.this.getTitle());
+ if (copyAlignment.getHeight() > 0)
+ {
+ /*
+ * align protein to dna
+ */
+ // FIXME what if the dna is not aligned :-O
+ if (dna)
+ {
+ al.alignAs(copyAlignment);
+ }
+ else
+ {
+ /*
+ * align cdna to protein - currently only if
+ * fetching and aligning Ensembl transcripts!
+ */
+ if (DBRefSource.ENSEMBL.equalsIgnoreCase(source))
+ {
+ copyAlignment.alignAs(al);
+ }
+ }
- boolean showSequenceFeatures = viewport
- .isShowSequenceFeatures();
- newFrame.setShowSeqFeatures(showSequenceFeatures);
- copyThis.setShowSeqFeatures(showSequenceFeatures);
- FeatureRenderer myFeatureStyling = alignPanel.getSeqPanel().seqCanvas
- .getFeatureRenderer();
- /*
- * copy feature rendering settings to split frame
- */
- newFrame.alignPanel.getSeqPanel().seqCanvas
- .getFeatureRenderer().transferSettings(
- myFeatureStyling);
- copyThis.alignPanel.getSeqPanel().seqCanvas
- .getFeatureRenderer().transferSettings(
- myFeatureStyling);
- SplitFrame sf = new SplitFrame(dna ? copyThis : newFrame,
- dna ? newFrame : copyThis);
- newFrame.setVisible(true);
- copyThis.setVisible(true);
- String linkedTitle = MessageManager
- .getString("label.linked_view_title");
- Desktop.addInternalFrame(sf, linkedTitle, -1, -1);
- sf.adjustDivider();
+ AlignFrame copyThis = new AlignFrame(copyAlignment,
+ AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
+ copyThis.setTitle(AlignFrame.this.getTitle());
+
+ boolean showSequenceFeatures = viewport
+ .isShowSequenceFeatures();
+ newFrame.setShowSeqFeatures(showSequenceFeatures);
+ copyThis.setShowSeqFeatures(showSequenceFeatures);
+ FeatureRenderer myFeatureStyling = alignPanel.getSeqPanel().seqCanvas
+ .getFeatureRenderer();
+
+ /*
+ * copy feature rendering settings to split frame
+ */
+ newFrame.alignPanel.getSeqPanel().seqCanvas
+ .getFeatureRenderer().transferSettings(
+ myFeatureStyling);
+ copyThis.alignPanel.getSeqPanel().seqCanvas
+ .getFeatureRenderer().transferSettings(
+ myFeatureStyling);
+
+ /*
+ * apply 'database source' feature configuration
+ * if any was found
+ */
+ // TODO is this the feature colouring for the original
+ // alignment or the fetched xrefs? either could be Ensembl
+ newFrame.getViewport().applyFeaturesStyle(
+ featureColourScheme);
+ copyThis.getViewport().applyFeaturesStyle(
+ featureColourScheme);
+
+ SplitFrame sf = new SplitFrame(dna ? copyThis : newFrame,
+ dna ? newFrame : copyThis);
+ newFrame.setVisible(true);
+ copyThis.setVisible(true);
+ String linkedTitle = MessageManager
+ .getString("label.linked_view_title");
+ Desktop.addInternalFrame(sf, linkedTitle, -1, -1);
+ sf.adjustDivider();
+ }
}
else
{
}
/**
- * @param alignment
- * @param prods
+ * Makes an alignment containing the given sequences; the sequences are
+ * added to the given alignment dataset, and the dataset is set on (shared
+ * by) the new alignment
+ *
+ * @param dataset
+ * @param seqs
* @return
*/
- protected Alignment makeCrossReferencesAlignment(
-Alignment dataset,
- Alignment prods)
+ protected Alignment makeCrossReferencesAlignment(Alignment dataset,
+ Alignment seqs)
{
- SequenceI[] sprods = new SequenceI[prods.getHeight()];
+ SequenceI[] sprods = new SequenceI[seqs.getHeight()];
for (int s = 0; s < sprods.length; s++)
{
- sprods[s] = (prods.getSequenceAt(s)).deriveSequence();
+ sprods[s] = (seqs.getSequenceAt(s)).deriveSequence();
if (dataset.getSequences() == null
|| !dataset.getSequences().contains(
sprods[s].getDatasetSequence()))
alignPanel.paintAlignment(true);
}
}
- else
- {
- new FileLoader().LoadFile(viewport, file, protocol, format);
- }
+ else
+ {
+ new FileLoader().LoadFile(viewport, file, protocol, format);
+ }
}
}
if (isAnnotation)
@Override
public void run()
{
- boolean isNuclueotide = alignPanel.alignFrame
- .getViewport().getAlignment()
- .isNucleotide();
+ boolean isNuclueotide = alignPanel.alignFrame.getViewport()
+ .getAlignment().isNucleotide();
new jalview.ws.DBRefFetcher(alignPanel.av
- .getSequenceSelection(),
- alignPanel.alignFrame, null,
- alignPanel.alignFrame.featureSettings,
- isNuclueotide)
+ .getSequenceSelection(), alignPanel.alignFrame, null,
+ alignPanel.alignFrame.featureSettings, isNuclueotide)
.fetchDBRefs(false);
}
}).start();
@Override
public void run()
{
- final jalview.ws.SequenceFetcher sf = SequenceFetcher
+ final jalview.ws.SequenceFetcher sf = jalview.gui.SequenceFetcher
.getSequenceFetcherSingleton(me);
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
.getSequenceSelection(),
alignPanel.alignFrame, dassource,
alignPanel.alignFrame.featureSettings,
- isNuclueotide)
- .fetchDBRefs(false);
+ isNuclueotide).fetchDBRefs(false);
}
}).start();
}
.getSequenceSelection(),
alignPanel.alignFrame, dassource,
alignPanel.alignFrame.featureSettings,
- isNuclueotide)
- .fetchDBRefs(false);
+ isNuclueotide).fetchDBRefs(false);
}
}).start();
}
.getSequenceSelection(),
alignPanel.alignFrame, dassrc,
alignPanel.alignFrame.featureSettings,
- isNuclueotide)
- .fetchDBRefs(false);
+ isNuclueotide).fetchDBRefs(false);
}
}).start();
}