From 0284022929f88c91ab0e37ad01846b0fae2262b4 Mon Sep 17 00:00:00 2001 From: Brent Pedersen Date: Mon, 12 Sep 2022 13:53:10 -0700 Subject: [PATCH 1/4] initial go at #59 --- .vscode/launch.json | 7 ++++--- d4/src/ssio/reader.rs | 6 +++++- d4tools/src/show/main.rs | 6 ++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 443d9c0..265e71b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,7 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { "type": "lldb", "request": "launch", @@ -15,9 +16,9 @@ ] }, "program": "target/debug/d4tools", - "env": {"RUST_LOG": "info"}, - "args": ["create", "-g", "/tmp/1.g", "/tmp/1.bedgraph"], - "cwd": "/tmp" + "env": {"RUST_LOG": "info", "RUST_BACKTRACE": "1"}, + "args": ["view", "${workspaceFolder}/fdr.peaks.d4", "chr1:1-59999"], + "cwd": "${workspaceFolder}" }, { "type": "lldb", diff --git a/d4/src/ssio/reader.rs b/d4/src/ssio/reader.rs index 0f43962..1df972c 100644 --- a/d4/src/ssio/reader.rs +++ b/d4/src/ssio/reader.rs @@ -131,8 +131,10 @@ impl D4TrackReader { if table_ref.chrom_id == chrom_id { let overlap_begin = table_ref.begin.max(begin); let overlap_end = table_ref.end.min(end); + if overlap_begin < overlap_end { - if overlap_begin == table_ref.begin || self.sfi.is_none() { + //if overlap_begin + 1 == table_ref.begin || self.sfi.is_none() { + if self.sfi.is_none() { secondary_view.push(table_ref.clone()); } else { let sfi = self.sfi.as_ref().unwrap(); @@ -147,6 +149,8 @@ impl D4TrackReader { )); } } + } else { + break; } } } diff --git a/d4tools/src/show/main.rs b/d4tools/src/show/main.rs index 0010dfd..5c968cb 100644 --- a/d4tools/src/show/main.rs +++ b/d4tools/src/show/main.rs @@ -56,9 +56,11 @@ fn parse_region_spec>( for region_spec in regions { if let Some(captures) = region_pattern.captures(®ion_spec) { let chr = captures.name("CHR").unwrap().as_str(); - let start: u32 = captures + // since we are reading a region like chr:start-end which is 1-based, we subtract 1 from the start. + let start: u32 = std::cmp::max(1, captures .name("FROM") - .map_or(0u32, |x| x.as_str().parse().unwrap_or(0)); + .map_or(0u32, |x| x.as_str().parse().unwrap_or(0))) - 1; + let end: u32 = captures .name("TO") .map_or_else(|| { From fb42dac55de2cbd1e662429f6900e5709cdb7e4c Mon Sep 17 00:00:00 2001 From: Brent Pedersen Date: Fri, 23 Sep 2022 12:02:15 -0700 Subject: [PATCH 2/4] bed format to region format requires adding 1 to start. --- d4tools/src/show/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/d4tools/src/show/main.rs b/d4tools/src/show/main.rs index 5c968cb..6c8c16f 100644 --- a/d4tools/src/show/main.rs +++ b/d4tools/src/show/main.rs @@ -313,7 +313,8 @@ pub fn entry_point(args: Vec) -> Result<(), Box> if raw_chr.is_some() && raw_beg.is_some() && raw_end.is_some() { if let Ok(begin) = raw_beg.unwrap().parse::() { if let Ok(end) = raw_end.unwrap().parse::() { - region_list.push(format!("{}:{}-{}", raw_chr.unwrap(), begin, end)); + // region-file is bed format so we add 1 to start to get to chr:start-end + region_list.push(format!("{}:{}-{}", raw_chr.unwrap(), begin + 1, end)); } } buf.clear(); From 93031ff3116f08765672d0805921c80535819365 Mon Sep 17 00:00:00 2001 From: Brent Pedersen Date: Tue, 15 Nov 2022 23:10:41 -0800 Subject: [PATCH 3/4] remove extra logic from ssio/reader --- d4/src/ssio/reader.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/d4/src/ssio/reader.rs b/d4/src/ssio/reader.rs index 1df972c..dddf005 100644 --- a/d4/src/ssio/reader.rs +++ b/d4/src/ssio/reader.rs @@ -133,8 +133,7 @@ impl D4TrackReader { let overlap_end = table_ref.end.min(end); if overlap_begin < overlap_end { - //if overlap_begin + 1 == table_ref.begin || self.sfi.is_none() { - if self.sfi.is_none() { + if overlap_begin + 1 == table_ref.begin || self.sfi.is_none() { secondary_view.push(table_ref.clone()); } else { let sfi = self.sfi.as_ref().unwrap(); @@ -149,8 +148,6 @@ impl D4TrackReader { )); } } - } else { - break; } } } From a731879c3a42f2499e571ffaf5c91a6af4d1161a Mon Sep 17 00:00:00 2001 From: Brent Pedersen Date: Tue, 15 Nov 2022 23:14:59 -0800 Subject: [PATCH 4/4] revert launch.json change --- .vscode/launch.json | 7 +++---- d4/src/ssio/reader.rs | 3 +-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 265e71b..443d9c0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,7 +4,6 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { "type": "lldb", "request": "launch", @@ -16,9 +15,9 @@ ] }, "program": "target/debug/d4tools", - "env": {"RUST_LOG": "info", "RUST_BACKTRACE": "1"}, - "args": ["view", "${workspaceFolder}/fdr.peaks.d4", "chr1:1-59999"], - "cwd": "${workspaceFolder}" + "env": {"RUST_LOG": "info"}, + "args": ["create", "-g", "/tmp/1.g", "/tmp/1.bedgraph"], + "cwd": "/tmp" }, { "type": "lldb", diff --git a/d4/src/ssio/reader.rs b/d4/src/ssio/reader.rs index dddf005..0f43962 100644 --- a/d4/src/ssio/reader.rs +++ b/d4/src/ssio/reader.rs @@ -131,9 +131,8 @@ impl D4TrackReader { if table_ref.chrom_id == chrom_id { let overlap_begin = table_ref.begin.max(begin); let overlap_end = table_ref.end.min(end); - if overlap_begin < overlap_end { - if overlap_begin + 1 == table_ref.begin || self.sfi.is_none() { + if overlap_begin == table_ref.begin || self.sfi.is_none() { secondary_view.push(table_ref.clone()); } else { let sfi = self.sfi.as_ref().unwrap();