Skip to content

Commit

Permalink
- split chart by allele
Browse files Browse the repository at this point in the history
- read info on current position
  • Loading branch information
Chantal-Roth committed Jun 20, 2012
1 parent 317a684 commit 4a6e9fd
Show file tree
Hide file tree
Showing 17 changed files with 287 additions and 84 deletions.
9 changes: 9 additions & 0 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -249,4 +249,13 @@
</antcall>
</target>

<!-- Deploy the application -->
<target name="deploy">
<copy todir="${deploy.dir}" overwrite="true">
<fileset dir="${dist.dir}">
<include name="lib/**"/>
</fileset>
<fileset file="${dist.dir}${jar.name}"/>
</copy>
</target>
</project>
Binary file modified igv.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion launcher/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@


<!-- Sign all jars if a keystore is defined -->
<target name="sign-jars" if="keystore">
<target name="sign-jars" >
<signjar jar="${jar.path}" alias="${alias}" keypass="${key-password}" storepass="${store-password}"
keystore="${keystore}"/>
</target>
Expand Down
2 changes: 1 addition & 1 deletion nbproject/project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ run.classpath=\
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.jvmargs=-Xmx900M -Xms512M
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
Expand Down
20 changes: 18 additions & 2 deletions src/com/iontorrent/data/FlowDistribution.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/
package com.iontorrent.data;

import java.util.ArrayList;
import java.util.TreeMap;

/**
Expand All @@ -18,6 +19,7 @@ public class FlowDistribution {
private int nrflows;
/** the chromosome location */
private int location;
ArrayList<ReadInfo> readinfos;

public FlowDistribution(int location, int nrflows, TreeMap<Short, Integer> map, String name, String information) {
this.map = map;
Expand All @@ -39,7 +41,7 @@ public String toCsv(int binsize) {
String nl = "\n";
StringBuilder csv = new StringBuilder();
csv = csv.append(getInformation());
csv = csv.append("flow value, count\n");
csv = csv.append(nl).append("flow value, count\n");
for (int b = 0; b < bins.length; b++) {
csv = csv.append(b * binsize).append(",").append(bins[b]).append(nl);
}
Expand All @@ -56,7 +58,17 @@ public String toJson() {
buf.append("}\n");
return buf.toString();
}

public String getReadInfoString() {
String nl = "\n";
StringBuilder csv = new StringBuilder();
csv = csv.append(getInformation());
csv = csv.append(nl).append(ReadInfo.getHeader()).append(nl);
for (ReadInfo ri: readinfos) {
csv = csv.append(ri.toCsv()).append(nl);
}
csv = csv.append(nl);
return csv.toString();
}
public int[] getBinnedData(int binsize) {
int maxx = 0;
for (Short x : map.keySet()) {
Expand Down Expand Up @@ -118,4 +130,8 @@ public int getMaxX() {
}
return maxx;
}

public void setReadInfos(ArrayList<ReadInfo> readinfos) {
this.readinfos = readinfos;
}
}
43 changes: 43 additions & 0 deletions src/com/iontorrent/data/ReadInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.iontorrent.data;

/**
*
* @author Chantal Roth
*/
public class ReadInfo {
String readname;
int flowposition;
int flowvalue;
char base;

public ReadInfo(String readname, int flowposition,int flowvalue, char base) {
this.readname = readname;
this.flowposition = flowposition;
this.flowvalue = flowvalue;
this.base = base;
}
public int getFlowPosition() {
return flowposition;
}
public char getBase() {
return base;
}
public String getReadName() {
return readname;
}
public static String getHeader() {
return "Read name, flow position, base, flow value";
}
public String toCsv() {
StringBuilder b = new StringBuilder();
b = b.append(readname).append(",").append(flowposition).append(",").append(base).append(",").append(flowvalue);
return b.toString();
}
public String toString() {
return toCsv();
}
}
14 changes: 14 additions & 0 deletions src/com/iontorrent/views/FlowSignalDistributionPanel.form
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,20 @@
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCopyJsonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/com/iontorrent/views/copyr.png"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="show read info"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="verticalTextPosition" type="int" value="3"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="btnSave">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
Expand Down
55 changes: 45 additions & 10 deletions src/com/iontorrent/views/FlowSignalDistributionPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ private CategoryDataset createCategoryDataset() {
}
return dataset;
}

private XYSeriesCollection createXYDataset() {
XYSeriesCollection dataset = new XYSeriesCollection();
for (int i = 0; i < distributions.length; i++) {
Expand All @@ -132,14 +132,14 @@ private JComponent createChart() {
String yaxis = "count";

XYItemRenderer renderer;

NumberAxis xax = new NumberAxis(xaxis);
NumberAxis yax = new NumberAxis(yaxis);
JFreeChart freechart = null;
// could be another chart option
// XYSplineRenderer renderer = new XYSplineRenderer();
if (chart_type == ChartConfigPanel.TYPE_BAR) {

if (chart_type == ChartConfigPanel.TYPE_BAR) {
CategoryDataset dataset = createCategoryDataset();
freechart = ChartFactory.createBarChart(
plotTitle, // chart title
Expand All @@ -151,15 +151,15 @@ private JComponent createChart() {
true, // tooltips?
false // URLs?
);
freechart.getCategoryPlot().setForegroundAlpha(0.75f);
freechart.getCategoryPlot().setForegroundAlpha(0.75f);

} else if (chart_type == ChartConfigPanel.TYPE_LINE) {
renderer = new XYLineAndShapeRenderer();
XYSeriesCollection dataset = createXYDataset();
XYPlot plot = new XYPlot(dataset, xax, yax, renderer);
freechart = new JFreeChart(plot);
plot.setForegroundAlpha(0.75f);

} else if (chart_type == ChartConfigPanel.TYPE_AREA) {
renderer = new XYAreaRenderer(XYAreaRenderer.AREA);
XYSeriesCollection dataset = createXYDataset();
Expand All @@ -175,7 +175,7 @@ private JComponent createChart() {
} else {
freechart.addSubtitle(new TextTitle(information + ", " + bininfo));
}

ChartPanel chartPanel = new ChartPanel(freechart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
return chartPanel;
Expand All @@ -184,7 +184,7 @@ private JComponent createChart() {
private XYSeries createDataset(FlowDistribution dist) {
int[] bins = dist.getBinnedData(binsize);

p("Flow Dist name: "+dist.getName());
p("Flow Dist name: " + dist.getName());
XYSeries xy = new XYSeries(dist.getName());
for (int b = 0; b < bins.length; b++) {
xy.add(b * binsize, bins[b]);
Expand All @@ -205,11 +205,19 @@ private String getJsonString() {
StringBuilder json = new StringBuilder();
//json = json.append(information).append("\n\n");
for (int i = 0; i < distributions.length; i++) {
json = json.append(distributions[i].toJson());
json = json.append("\n").append(distributions[i].toJson());
}
return json.toString();
}

private String getReadString() {
StringBuilder rinfo = new StringBuilder();
for (int i = 0; i < distributions.length; i++) {
rinfo = rinfo.append("\n").append(distributions[i].getReadInfoString());
}
return rinfo.toString();
}

private void p(String msg) {
log.info(msg);
}
Expand All @@ -230,6 +238,7 @@ private void initComponents() {
buttonToolBar = new javax.swing.JToolBar();
btnCopy = new javax.swing.JButton();
btnCopyJson = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
btnSave = new javax.swing.JButton();
btnConfigure = new javax.swing.JButton();
btnLeft = new javax.swing.JButton();
Expand Down Expand Up @@ -263,6 +272,18 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
buttonToolBar.add(btnCopyJson);

jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/iontorrent/views/copyr.png"))); // NOI18N
jButton1.setToolTipText("show read info");
jButton1.setFocusable(false);
jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
buttonToolBar.add(jButton1);

btnSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/iontorrent/views/save.png"))); // NOI18N
btnSave.setToolTipText("Save data in .csv file (to be used in Excel for instance)");
btnSave.setFocusable(false);
Expand Down Expand Up @@ -383,6 +404,19 @@ private void btnRightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
getListener().locationChanged(location + 1);
}
}//GEN-LAST:event_btnRightActionPerformed

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
String readinfo = getReadString();
// copy to clipboard
StringSelection stringSelection = new StringSelection(readinfo);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);

// also show as popup for copy paste
JTextArea area = new JTextArea(15, 30);
area.setText(readinfo);
JOptionPane.showMessageDialog(this, new JScrollPane(area), "Read info string (it is already in the clipboard)", JOptionPane.INFORMATION_MESSAGE);
}//GEN-LAST:event_jButton1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnConfigure;
private javax.swing.JButton btnCopy;
Expand All @@ -391,6 +425,7 @@ private void btnRightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
private javax.swing.JButton btnRight;
private javax.swing.JButton btnSave;
private javax.swing.JToolBar buttonToolBar;
private javax.swing.JButton jButton1;
// End of variables declaration//GEN-END:variables

public void setDistributions(FlowDistribution[] newdist) {
Expand Down
Binary file added src/com/iontorrent/views/copyr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions src/org/broad/igv/sam/AbstractAlignment.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,28 +129,38 @@ private void bufAppendFlowSignals(AlignmentBlock block, StringBuffer buf, int of
FlowSignalSubContext f = block.getFlowSignalSubContext(offset);
if (null != f && null != f.signals && null != f.bases) {
buf.append("FZ = ");
StringBuffer spos = new StringBuffer();
spos.append("Flow positions = ");
for (i=0;i<f.signals.length;i++) {
if (null != f.signals[i] && 0 < f.signals[i].length) {
if (1 == i) {
if (0 < n) {
buf.append(",");
spos.append(",");
}
buf.append("[");
spos.append("[");
}
for (j=0;j<f.signals[i].length;j++) {
if (1 != i && 0 < n) {
buf.append(",");
spos.append(",");
}
buf.append(f.bases[i][j]);
buf.append(f.signals[i][j]);
spos.append(f.flownumbers[i][j]);
n++;
}
if (1 == i) {
buf.append("]");
spos.append("]");
}
}
}
buf.append("<br>").append(spos);
buf.append("<br>");
// maybe also add flow order?

}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/org/broad/igv/sam/AlignmentBlockFS.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ protected AlignmentBlockFS(int start, byte[] bases, byte[] qualities, FlowSignal
}

public FlowSignalSubContext getFlowSignalSubContext(int offset) {
return new FlowSignalSubContext(this.fContext.signals[offset], this.fContext.bases[offset]);
return new FlowSignalSubContext(this.fContext.signals[offset], this.fContext.bases[offset], this.fContext.flownumbers[offset]);
}


Expand Down
Loading

0 comments on commit 4a6e9fd

Please sign in to comment.