From 5a450ce3d1dac7190809990c525e27675880b6c1 Mon Sep 17 00:00:00 2001 From: bbimber Date: Mon, 9 Sep 2024 06:29:12 -0700 Subject: [PATCH 1/3] Fix issue with VariantTableWidget and x-data-grid filter panel alignment --- .../components/VariantTableWidget.tsx | 17 +++++++++++++++-- .../components/VariantTableWidget.tsx | 16 ++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/jbrowse/src/client/JBrowse/VariantSearch/components/VariantTableWidget.tsx b/jbrowse/src/client/JBrowse/VariantSearch/components/VariantTableWidget.tsx index ac75ef4de..9a186e493 100644 --- a/jbrowse/src/client/JBrowse/VariantSearch/components/VariantTableWidget.tsx +++ b/jbrowse/src/client/JBrowse/VariantSearch/components/VariantTableWidget.tsx @@ -2,7 +2,7 @@ import { observer } from 'mobx-react'; import { DataGrid, GridColDef, - GridColumnVisibilityModel, + GridColumnVisibilityModel, GridFilterPanel, GridPaginationModel, GridRenderCellParams, GridSortDirection, @@ -420,13 +420,26 @@ const VariantTableWidget = observer(props => { } } + // NOTE: the filterPanel/sx override is added to fix an issue where the grid column filter value input doesn't align with the field and operator inputs const gridElement = ( { } const gridElement = ( + // NOTE: the filterPanel/sx override is added to fix an issue where the grid column filter value input doesn't align with the field and operator inputs rawFeatureToRow(rawFeature, id, gridColumns, trackId))} - slots={{ toolbar: GridToolbar }} + slots={{ toolbar: GridToolbar, filterPanel: GridFilterPanel }} + slotProps={{ + filterPanel: { + filterFormProps: { + valueInputProps: { + sx: { + marginTop: 0 + } + } + } + } + }} pageSizeOptions={[10,25,50,100]} paginationModel={ pageSizeModel } onPaginationModelChange= {(newModel) => setPageSizeModel(newModel)} From b571bbcb24f6dbbbc6586a6eaeff18afd9ab1e80 Mon Sep 17 00:00:00 2001 From: bbimber Date: Wed, 25 Sep 2024 12:54:00 -0700 Subject: [PATCH 2/3] Drop older tool --- .../pipeline_code/sequence_tools_install.sh | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/SequenceAnalysis/pipeline_code/sequence_tools_install.sh b/SequenceAnalysis/pipeline_code/sequence_tools_install.sh index be6ba226c..12d7321cb 100755 --- a/SequenceAnalysis/pipeline_code/sequence_tools_install.sh +++ b/SequenceAnalysis/pipeline_code/sequence_tools_install.sh @@ -311,30 +311,6 @@ else fi -# -# RNA-SeQC -# -echo "" -echo "" -echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" -echo "Install RNA-SeQC" -echo "" -cd $LKSRC_DIR - -if [[ ! -e ${LKTOOLS_DIR}/RNA-SeQC.jar || ! -z $FORCE_REINSTALL ]]; -then - echo "Cleaning up previous installs" - rm -Rf RNA-SeQC* - rm -Rf $LKTOOLS_DIR/RNA-SeQC.jar - - wget $WGET_OPTS https://data.broadinstitute.org/cancer/cga/tools/rnaseqc/RNA-SeQC_v1.1.8.jar - - install ./RNA-SeQC_v1.1.8.jar $LKTOOLS_DIR/RNA-SeQC.jar -else - echo "Already installed" -fi - - # #mosaik # From d9f7c41c48083ec317b8f1de7dee34e14f437f15 Mon Sep 17 00:00:00 2001 From: bbimber Date: Thu, 26 Sep 2024 13:08:13 -0700 Subject: [PATCH 3/3] Update orphan file job to better handle cross-workbook records --- .../pipeline/OrphanFilePipelineJob.java | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/OrphanFilePipelineJob.java b/SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/OrphanFilePipelineJob.java index c3b5f9323..9fae58bb1 100644 --- a/SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/OrphanFilePipelineJob.java +++ b/SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/OrphanFilePipelineJob.java @@ -3,7 +3,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import org.labkey.api.data.ColumnInfo; +import org.jetbrains.annotations.NotNull; import org.labkey.api.data.CompareType; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerManager; @@ -48,7 +48,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -91,7 +90,7 @@ public String getDescription() } @Override - public TaskPipeline getTaskPipeline() + public TaskPipeline getTaskPipeline() { return PipelineJobService.get().getTaskPipeline(new TaskId(OrphanFilePipelineJob.class)); } @@ -129,7 +128,7 @@ public List getProtocolActionNames() } @Override - public PipelineJob.Task createTask(PipelineJob job) + public PipelineJob.Task createTask(PipelineJob job) { return new Task(this, job); } @@ -142,7 +141,7 @@ public boolean isJobComplete(PipelineJob job) } @Override - public RecordedActionSet run() throws PipelineJobException + public @NotNull RecordedActionSet run() throws PipelineJobException { getJob().getLogger().info("## The following sections list any files or pipeline jobs that appear to be orphans, not connected to any imported readsets or sequence outputs:"); @@ -165,7 +164,23 @@ public RecordedActionSet run() throws PipelineJobException knownExpDatas = Collections.unmodifiableSet(knownExpDatas); //messages.add("## total registered sequence ExpData: " + knownExpDatas.size()); - getOrphanFilesForContainer(getJob().getContainer(), getJob().getUser(), orphanFiles, orphanIndexes, orphanJobs, messages, probableDeletes, knownJobPaths, knownExpDatas); + // Build map of URL/ExpData for all data, to cover cross-container files + Map> knownDataMap = new HashMap<>(); + for (Integer d : knownExpDatas) + { + ExpData ed = ExperimentService.get().getExpData(d); + if (ed != null) + { + if (!knownDataMap.containsKey(ed.getDataFileURI())) + { + knownDataMap.put(ed.getDataFileURI(), new HashSet<>()); + } + + knownDataMap.get(ed.getDataFileURI()).add(d); + } + } + + getOrphanFilesForContainer(getJob().getContainer(), getJob().getUser(), orphanFiles, orphanIndexes, orphanJobs, messages, probableDeletes, knownJobPaths, knownExpDatas, knownDataMap); probableDeletes.addAll(orphanIndexes); if (!orphanFiles.isEmpty()) @@ -286,7 +301,7 @@ private Set getKnownSequenceJobPaths(Container c, User u, Collection> getDataMapForContainer(Container c) + private Map> getDataMapForContainer(Container c, Map> knownExpDataMap) { SimpleFilter dataFilter = new SimpleFilter(FieldKey.fromString("container"), c.getId()); TableInfo dataTable = ExperimentService.get().getTinfoData(); @@ -320,10 +335,21 @@ public void exec(ResultSet rs) throws SQLException }); //messages.add("## total ExpData paths: " + dataMap.size()); + // append additional datas: + for (URI u : knownExpDataMap.keySet()) + { + if (!dataMap.containsKey(u)) + { + dataMap.put(u, new HashSet<>()); + } + + dataMap.get(u).addAll(knownExpDataMap.get(u)); + } + return dataMap; } - public void getOrphanFilesForContainer(Container c, User u, Set orphanFiles, Set orphanIndexes, Set orphanJobs, List messages, Set probableDeletes, Set knownSequenceJobPaths, Set knownExpDatas) + public void getOrphanFilesForContainer(Container c, User u, Set orphanFiles, Set orphanIndexes, Set orphanJobs, List messages, Set probableDeletes, Set knownSequenceJobPaths, Set knownExpDatas, Map> knownExpDataMap) { PipeRoot root = PipelineService.get().getPipelineRootSetting(c); if (root == null) @@ -338,7 +364,7 @@ public void getOrphanFilesForContainer(Container c, User u, Set orphanFile messages.add("## processing container: " + c.getPath()); - Map> dataMap = getDataMapForContainer(c); + Map> dataMap = getDataMapForContainer(c, knownExpDataMap); Container parent = c.isWorkbook() ? c.getParent() : c; TableInfo jobsTableParent = PipelineService.get().getJobsTable(u, parent); @@ -438,7 +464,7 @@ public boolean accept(File pathname) { if (child.isWorkbook()) { - getOrphanFilesForContainer(child, u, orphanFiles, orphanIndexes, orphanJobs, messages, probableDeletes, knownSequenceJobPaths, knownExpDatas); + getOrphanFilesForContainer(child, u, orphanFiles, orphanIndexes, orphanJobs, messages, probableDeletes, knownSequenceJobPaths, knownExpDatas, knownExpDataMap); } } }