Skip to content

Commit

Permalink
Adjust translation row, cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
garrettjstevens committed Jan 24, 2024
1 parent 192c55f commit 91f3136
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,6 @@ export const LinearApolloDisplay = observer(function LinearApolloDisplay(
width: lgv.dynamicBlocks.totalWidthPx,
height: lgv.bpPerPx <= 1 ? 125 : 95,
}}
onContextMenu={(event) => {
event.preventDefault()
if (contextMenuItems.length > 0) {
// There's already a context menu open, so close it
setContextMenuItems([])
} else {
const coord: [number, number] = [event.clientX, event.clientY]
setContextCoord(coord)
setContextMenuItems(getContextMenuItems(coord))
}
}}
>
<canvas
ref={async (node: HTMLCanvasElement) => {
Expand All @@ -113,7 +102,6 @@ export const LinearApolloDisplay = observer(function LinearApolloDisplay(
width={lgv.dynamicBlocks.totalWidthPx}
height={lgv.bpPerPx <= 1 ? 125 : 95}
className={classes.canvas}
style={{ cursor: cursor ?? 'default' }}
data-testid="seqTrackOverlayCanvas"
/>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@ function getMousePosition(

function getSeqRow(feature: AnnotationFeatureI, bpPerPx: number) {
const rowOffset = bpPerPx <= 1 ? 5 : 3
if (feature.type === 'CDS' && feature.phase != undefined) {
if (feature.type === 'CDS' && feature.phase !== undefined) {
return feature.strand === -1
? Math.abs(((feature.end - 1 - feature.phase) % 3) - 2) + rowOffset
: Math.abs(((feature.start - 1 - feature.phase) % 3) - 2)
? ((feature.end - feature.phase) % 3) + rowOffset
: Math.abs(((feature.start + feature.phase) % 3) - 2)
}

if (bpPerPx <= 1) {
Expand All @@ -73,7 +73,7 @@ function highlightSeq(
row: number | undefined,
widthPx: number,
) {
if (row != undefined) {
if (row !== undefined) {
seqTrackOverlayctx.fillStyle =
theme?.palette.action.focus ?? 'rgba(0,0,0,0.04)'
seqTrackOverlayctx.fillRect(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,9 @@ export function sequenceRenderingModelFactory(
if (!self.lgv.initialized || self.regionCannotBeRendered()) {
return
}
if (self.lgv.bpPerPx > 3) {
return
}
const seqTrackctx = self.seqTrackCanvas?.getContext('2d')
if (!seqTrackctx) {
return
Expand All @@ -246,108 +249,109 @@ export function sequenceRenderingModelFactory(
}
const { seq } = await driver.getSequence(region)

if (seq) {
for (const [i, letter] of [...seq].entries()) {
const trnslXOffset =
if (!seq) {
return
}
for (const [i, letter] of [...seq].entries()) {
const trnslXOffset =
(self.lgv.bpToPx({
refName: region.refName,
coord: region.start + i,
regionNumber: idx,
})?.offsetPx ?? 0) - self.lgv.offsetPx
const trnslWidthPx = 3 / self.lgv.bpPerPx
const trnslStartPx = self.displayedRegions[idx].reversed
? trnslXOffset - trnslWidthPx
: trnslXOffset

// Draw translation forward
for (let j = 2; j >= 0; j--) {
if ((region.start + i) % 3 === j) {
drawTranslation(
seqTrackctx,
self.lgv.bpPerPx,
trnslStartPx,
self.sequenceRowHeight * (2 - j),
trnslWidthPx,
self.sequenceRowHeight,
seq,
i,
false,
)
}
}

if (self.lgv.bpPerPx <= 1) {
const xOffset =
(self.lgv.bpToPx({
refName: region.refName,
coord: region.start + i,
regionNumber: idx,
})?.offsetPx ?? 0) - self.lgv.offsetPx
const trnslWidthPx = 3 / self.lgv.bpPerPx
const trnslStartPx = self.displayedRegions[idx].reversed
? trnslXOffset - trnslWidthPx
: trnslXOffset
const widthPx = 1 / self.lgv.bpPerPx
const startPx = self.displayedRegions[idx].reversed
? xOffset - widthPx
: xOffset

// Draw translation forward
for (let j = 2; j >= 0; j--) {
if ((region.start + i) % 3 === j) {
drawTranslation(
seqTrackctx,
self.lgv.bpPerPx,
trnslStartPx,
self.sequenceRowHeight * (2 - j),
trnslWidthPx,
self.sequenceRowHeight,
seq,
i,
false,
)
}
}

if (self.lgv.bpPerPx <= 1) {
const xOffset =
(self.lgv.bpToPx({
refName: region.refName,
coord: region.start + i,
regionNumber: idx,
})?.offsetPx ?? 0) - self.lgv.offsetPx
const widthPx = 1 / self.lgv.bpPerPx
const startPx = self.displayedRegions[idx].reversed
? xOffset - widthPx
: xOffset

// Draw forward
seqTrackctx.beginPath()
seqTrackctx.fillStyle = colorCode(letter, self.theme)
seqTrackctx.rect(
// Draw forward
seqTrackctx.beginPath()
seqTrackctx.fillStyle = colorCode(letter, self.theme)
seqTrackctx.rect(
startPx,
self.sequenceRowHeight * 3,
widthPx,
self.sequenceRowHeight,
)
seqTrackctx.fill()
if (self.lgv.bpPerPx <= 0.1) {
seqTrackctx.stroke()
drawLetter(
seqTrackctx,
startPx,
self.sequenceRowHeight * 3,
widthPx,
self.sequenceRowHeight,
letter,
self.sequenceRowHeight * 3,
)
seqTrackctx.fill()
if (self.lgv.bpPerPx <= 0.1) {
seqTrackctx.stroke()
drawLetter(
seqTrackctx,
startPx,
widthPx,
letter,
self.sequenceRowHeight * 3,
)
}
}

// Draw reverse
const revLetter = revcom(letter)
seqTrackctx.beginPath()
seqTrackctx.fillStyle = colorCode(revLetter, self.theme)
seqTrackctx.rect(
// Draw reverse
const revLetter = revcom(letter)
seqTrackctx.beginPath()
seqTrackctx.fillStyle = colorCode(revLetter, self.theme)
seqTrackctx.rect(
startPx,
self.sequenceRowHeight * 4,
widthPx,
self.sequenceRowHeight,
)
seqTrackctx.fill()
if (self.lgv.bpPerPx <= 0.1) {
seqTrackctx.stroke()
drawLetter(
seqTrackctx,
startPx,
self.sequenceRowHeight * 4,
widthPx,
self.sequenceRowHeight,
revLetter,
self.sequenceRowHeight * 4,
)
seqTrackctx.fill()
if (self.lgv.bpPerPx <= 0.1) {
seqTrackctx.stroke()
drawLetter(
seqTrackctx,
startPx,
widthPx,
revLetter,
self.sequenceRowHeight * 4,
)
}
}
}

// Draw translation reverse
for (let k = 0; k <= 2; k++) {
const rowOffset = self.lgv.bpPerPx <= 1 ? 5 : 3
if ((region.start + i) % 3 === k) {
drawTranslation(
seqTrackctx,
self.lgv.bpPerPx,
trnslStartPx,
self.sequenceRowHeight * (rowOffset + k),
trnslWidthPx,
self.sequenceRowHeight,
seq,
i,
true,
)
}
// Draw translation reverse
for (let k = 0; k <= 2; k++) {
const rowOffset = self.lgv.bpPerPx <= 1 ? 5 : 3
if ((region.start + i) % 3 === k) {
drawTranslation(
seqTrackctx,
self.lgv.bpPerPx,
trnslStartPx,
self.sequenceRowHeight * (rowOffset + k),
trnslWidthPx,
self.sequenceRowHeight,
seq,
i,
true,
)
}
}
}
Expand Down

0 comments on commit 91f3136

Please sign in to comment.