use of org.broad.igv.bbfile.WigItem in project ASCIIGenome by dariober.
the class Utils method initRegionFromBigWig.
private static String initRegionFromBigWig(String bigWigFile) throws IOException {
BBFileReader reader = new BBFileReader(bigWigFile);
if (!reader.isBigWigFile()) {
System.err.println("File " + bigWigFile + " is not bigWig.");
throw new RuntimeException();
}
// Just get chrom to start with
String region = reader.getChromosomeNames().get(0);
for (String chrom : reader.getChromosomeNames()) {
BigWigIterator iter = reader.getBigWigIterator(chrom, 0, chrom, Integer.MAX_VALUE, false);
if (iter.hasNext()) {
WigItem x = iter.next();
region = x.getChromosome() + ":" + (x.getStartBase() + 1);
reader.close();
return region;
}
}
reader.close();
return region;
}
use of org.broad.igv.bbfile.WigItem in project jvarkit by lindenb.
the class VcfEnsemblReg method annotate.
private void annotate(Track track, File inf, File outf) throws IOException {
boolean contained = false;
LOG.info("Processing " + track.id + " (" + track.shortLabel + ") " + track.url);
VcfIterator in = VCFUtils.createVcfIteratorFromFile(inf);
VCFHeader header = in.getHeader();
VCFInfoHeaderLine info = null;
SeekableStream sstream = SeekableStreamFactory.getInstance().getStreamFor(track.url);
BBFileReader bigFile = new BBFileReader(track.url.toString(), new SeekableStreamAdaptor(sstream));
VariantContextWriter w1 = VCFUtils.createVariantContextWriter(outf);
if (bigFile.isBigWigFile()) {
info = new VCFInfoHeaderLine(track.id, 1, VCFHeaderLineType.Float, String.valueOf(track.longLabel) + " " + track.url);
} else {
info = new VCFInfoHeaderLine(track.id, 1, VCFHeaderLineType.String, String.valueOf(track.longLabel) + " " + track.url);
}
header.addMetaDataLine(info);
w1.writeHeader(in.getHeader());
while (in.hasNext()) {
VariantContext ctx = in.next();
String chrom = ctx.getContig();
if (!chrom.startsWith("chr"))
chrom = "chr" + chrom;
if (!chrom.matches("(chrX|chrY|chr[0-9]|chr1[0-9]|chr2[12])")) {
w1.add(ctx);
} else if (bigFile.isBigWigFile()) {
BigWigIterator iter = bigFile.getBigWigIterator(chrom, ctx.getStart() - 1, chrom, ctx.getStart(), contained);
Float wigValue = null;
while (iter != null && iter.hasNext() && wigValue == null) {
WigItem item = iter.next();
wigValue = item.getWigValue();
}
if (wigValue == null) {
w1.add(ctx);
continue;
}
VariantContextBuilder vcb = new VariantContextBuilder(ctx);
vcb.attribute(track.id, wigValue);
w1.add(vcb.make());
} else {
BigBedIterator iter = bigFile.getBigBedIterator(chrom, ctx.getStart() - 1, chrom, ctx.getStart(), contained);
Set<String> bedValues = new HashSet<String>();
while (iter != null && iter.hasNext()) {
BedFeature item = iter.next();
String[] rest = item.getRestOfFields();
if (rest == null || rest.length != 6) {
System.err.println(track.id + " " + Arrays.toString(item.getRestOfFields()));
continue;
}
String color = null;
if (track.parent != null) {
if (track.parent.startsWith("Segway_17SegmentationSummaries")) {
color = segway_17SegmentationSummaries(rest[5]);
} else if (track.parent.startsWith("ProjectedSegments")) {
color = projectedSegments(rest[5]);
} else if (track.parent.startsWith("RegBuildOverview")) {
color = regBuildOverview(rest[5]);
} else if (track.parent.startsWith("Segway_17CellSegments")) {
color = segway_17CellSegments(rest[5]);
} else {
System.err.println("Unknown parent:" + track.parent);
}
}
if (color == null)
continue;
bedValues.add(rest[0] + "|" + color);
}
if (bedValues.isEmpty()) {
w1.add(ctx);
continue;
}
StringBuilder sb = new StringBuilder();
for (String s : bedValues) {
if (sb.length() != 0)
sb.append(",");
sb.append(s);
}
VariantContextBuilder vcb = new VariantContextBuilder(ctx);
vcb.attribute(track.id, sb.toString());
w1.add(vcb.make());
}
}
sstream.close();
in.close();
w1.close();
}
use of org.broad.igv.bbfile.WigItem in project ASCIIGenome by dariober.
the class TrackWiggles method bigWigToScores.
/**
* Populate object using bigWig data
* @throws IOException
* @throws InvalidGenomicCoordsException
*/
private void bigWigToScores(BBFileReader reader) throws InvalidGenomicCoordsException, IOException {
// List of length equal to screen size. Each inner map contains info about the screen locus
List<ScreenWiggleLocusInfo> screenWigLocInfoList = new ArrayList<ScreenWiggleLocusInfo>();
for (int i = 0; i < getGc().getUserWindowSize(); i++) {
screenWigLocInfoList.add(new ScreenWiggleLocusInfo());
}
BigWigIterator iter = reader.getBigWigIterator(getGc().getChrom(), getGc().getFrom(), getGc().getChrom(), getGc().getTo(), false);
while (iter.hasNext()) {
WigItem bw = iter.next();
for (int i = bw.getStartBase(); i <= bw.getEndBase(); i++) {
// Where should this position be mapped on screen?
int idx = Utils.getIndexOfclosestValue(i, this.getGc().getMapping());
screenWigLocInfoList.get(idx).increment(bw.getWigValue());
}
}
List<Float> screenScores = new ArrayList<Float>();
for (ScreenWiggleLocusInfo x : screenWigLocInfoList) {
screenScores.add((float) x.getMeanScore());
}
this.setScreenScores(screenScores);
}
use of org.broad.igv.bbfile.WigItem in project jvarkit by lindenb.
the class Biostar105754 method run.
private void run(final BufferedReader r) throws IOException {
final BedLineCodec codec = new BedLineCodec();
String line;
while ((line = r.readLine()) != null && !this.out.checkError()) {
final BedLine bedLine = codec.decode(line);
if (bedLine == null) {
continue;
}
final String chrom = bedLine.getContig();
int chromStart0 = bedLine.getStart() - 1;
int chromEnd0 = bedLine.getEnd();
if (chrom.isEmpty() || chromStart0 < 0L || chromEnd0 < chromStart0) {
System.err.println("Bad BED line: " + line);
continue;
}
// extends bed area until something was found
int chromStart = chromStart0;
int chromEnd = chromEnd0;
for (; ; ) {
BigWigIterator iter = this.bbFileReader.getBigWigIterator(chrom, chromStart, chrom, chromEnd, false);
if (iter != null) {
WigItem best = null;
while (iter.hasNext()) {
WigItem wigItem = iter.next();
if (best == null || distance(chromStart, chromEnd, best.getStartBase(), best.getEndBase()) > distance(chromStart, chromEnd, wigItem.getStartBase(), wigItem.getEndBase())) {
best = wigItem;
}
}
if (best != null) {
this.out.print(best.getChromosome());
this.out.print("\t");
this.out.print(best.getStartBase());
this.out.print("\t");
this.out.print(best.getEndBase());
this.out.print("\t");
this.out.print(best.getWigValue());
this.out.print("\t");
this.out.print(line);
this.out.println();
break;
}
}
// extend bed area
long start2 = chromStart - EXTEND_SHIFT;
long end2 = chromEnd + EXTEND_SHIFT;
if (start2 < 0)
start2 = 0;
if (end2 > MAX_CHROM_END)
end2 = MAX_CHROM_END;
// too wide, break loop
if (start2 == 0 && end2 == MAX_CHROM_END) {
LOG.warn("no data found for\t" + line);
break;
}
chromStart = (int) start2;
chromEnd = (int) end2;
}
}
}
Aggregations