Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 33 additions & 9 deletions src/main/java/org/broad/igv/bedpe/BedPE.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,28 @@
package org.broad.igv.bedpe;


import htsjdk.samtools.util.Locatable;
import org.broad.igv.feature.IGVFeature;

import java.awt.*;

public interface BedPE extends Locatable {
public interface BedPE extends IGVFeature {

BedPEFeature get();
default String getName() {
return null;
}

double getScore();
String getChr1();

boolean isSameChr();
int getStart1();

int getEnd1();

void setRow(int row);
String getChr2();

int getRow();
int getStart2();

int getEnd2();

boolean isSameChr();

Color getColor();

Expand All @@ -27,5 +34,22 @@ public interface BedPE extends Locatable {

String getValueString();

double getCenterDistance();
default double getMidStart() {
return Math.min ((getStart1() + getEnd1()) / 2.0, (getStart2() + getEnd2()) / 2.0);
}

default double getMidEnd() {
return Math.max ((getStart1() + getEnd1()) / 2.0, (getStart2() + getEnd2()) / 2.0);
}

default double getCenterDistance() {
return Math.abs((getStart1() + getEnd1()) / 2.0 - (getStart2() + getEnd2()) / 2.0);
}

/**
* @return true if this feature is a shadow complement of an inter-chr feature.
*/
default boolean isComplement() {
return false;
}
}
108 changes: 74 additions & 34 deletions src/main/java/org/broad/igv/bedpe/BedPEFeature.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,42 @@
package org.broad.igv.bedpe;

import org.broad.igv.Globals;
import org.broad.igv.feature.BasicFeature;
import org.broad.igv.feature.IGVFeature;
import org.broad.igv.feature.Strand;
import org.broad.igv.ui.color.ColorUtilities;

import java.awt.*;
import java.util.LinkedHashMap;
import java.util.Map;

/**
* Created by jrobinso on 6/29/18.
*/
public class BedPEFeature implements BedPE {

public String chr1;
public int start1;
public int end1;
public String chr2;
public int start2;
public int end2;
String name;
String scoreString = "";
double score;
Color color;
int thickness = 1;
String type;
protected String chr1;
protected int start1;
protected int end1;
protected Strand strand1 = Strand.NONE; // Default to NONE, can be set later

protected String chr2;
protected int start2;
protected int end2;
protected Strand strand2 = Strand.NONE; // Default to NONE, can be set later

protected String name;
protected String scoreString = "";
protected float score;
protected Color color;
protected int thickness = 1;
protected String type;
Map<String, String> attributes;
int row;
BedPEShape shape;
private boolean isComplement = false;

public BedPEFeature() {
}

public BedPEFeature(String chr1, int start1, int end1, String chr2, int start2, int end2) {
this.chr1 = chr1;
Expand All @@ -33,15 +47,17 @@ public BedPEFeature(String chr1, int start1, int end1, String chr2, int start2,
this.end2 = end2;
}

public BedPEFeature get() {
return this;
public BedPEFeature getComplement() {
BedPEFeature complement = new BedPEFeature(chr1, start1, end1, chr2, start2, end2);
complement.isComplement = true;
return complement;
}

public String getChr() {
if(isSameChr()) {
if (isSameChr()) {
return chr1;
} else {
return null;
return isComplement ? chr2 : chr1;
}
}

Expand All @@ -54,30 +70,25 @@ public int getEnd() {
}

public double getMidStart() {
return Math.min ((start1 + end1) / 2.0, (start2 + end2) / 2.0);
return Math.min((start1 + end1) / 2.0, (start2 + end2) / 2.0);
}

public double getMidEnd() {
return Math.max ((start1 + end1) / 2.0, (start2 + end2) / 2.0);
return Math.max((start1 + end1) / 2.0, (start2 + end2) / 2.0);
}

@Override
public double getScore() {
return score;
}

public boolean isSameChr() {
return chr1.equals(chr2);
public boolean isComplement() {
return this.isComplement;
}

@Override
public void setRow(int row) {
this.row = row;
public float getScore() {
return score;
}

@Override
public int getRow() {
return row;
public boolean isSameChr() {
return chr1.equals(chr2);
}

@Override
Expand Down Expand Up @@ -110,13 +121,13 @@ public String getValueString() {

String locus1 = chr1 + ":" + start1 + "-" + end1;
String locus2 = chr2 + ":" + start2 + "-" + end2;
if(name != null && name.length() > 0 && !name.equals(".")) {
if (name != null && name.length() > 0 && !name.equals(".")) {
buf.append(name + "<br>");
}
buf.append(locus1);
buf.append("<br>" + locus2);
buf.append("<br>Score: " + score);
if(attributes != null) {
if (attributes != null) {
buf.append("<br><hr>");
for (Map.Entry<String, String> entry : attributes.entrySet()) {
buf.append("<br>" + entry.getKey() + ": " + entry.getValue());
Expand All @@ -126,8 +137,37 @@ public String getValueString() {
return buf.toString();
}

public String getChr1() {
return chr1;
}

public int getStart1() {
return start1;
}

public int getEnd1() {
return end1;
}

public String getChr2() {
return chr2;
}

public int getStart2() {
return start2;
}

public int getEnd2() {
return end2;
}

public void setColor(Color color) {
this.color = color;
}

@Override
public double getCenterDistance() {
return Math.abs((start1 + end1) / 2.0 - (start2 + end2) / 2.0);
public String getName() {
return name;
}

}
88 changes: 0 additions & 88 deletions src/main/java/org/broad/igv/bedpe/BedPEInterFeature.java

This file was deleted.

Loading
Loading