Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
R3
legacy
bedtools2
Commits
d98c7f8f
Commit
d98c7f8f
authored
Feb 21, 2015
by
jayhesselberth
Browse files
test stub; refactor num_window calculation
parent
33d4cc21
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/windowMaker/windowMaker.cpp
View file @
d98c7f8f
...
...
@@ -78,9 +78,18 @@ void WindowMaker::MakeBEDWindow(const BED& interval)
MakeFixedCountWindow
(
interval
);
}
uint32_t
WindowMaker
::
CalculateWindows
(
const
BED
&
interval
)
{
uint32_t
num_windows
=
(
interval
.
end
-
interval
.
start
)
/
_step
;
if
((
interval
.
end
-
interval
.
start
)
%
_step
>
0
)
{
// add 1 to num_windows if the last window is less than _step
num_windows
+=
1
;
}
return
num_windows
;
}
void
WindowMaker
::
MakeFixedSizeWindow
(
const
BED
&
interval
)
{
uint32_t
i
=
1
;
uint32_t
num_windows
=
(
interval
.
end
-
interval
.
start
)
/
_step
;
uint32_t
num_windows
=
CalculateWindows
(
interval
);
for
(
uint32_t
start
=
interval
.
start
;
start
<=
interval
.
end
;
start
+=
_step
,
++
i
)
{
string
name
=
GenerateID
(
interval
,
i
,
num_windows
,
_reverse
);
if
((
start
+
_size
)
<=
interval
.
end
)
{
...
...
@@ -95,7 +104,8 @@ void WindowMaker::MakeFixedSizeWindow(const BED& interval) {
void
WindowMaker
::
MakeFixedCountWindow
(
const
BED
&
interval
)
{
uint32_t
interval_size
=
interval
.
end
-
interval
.
start
;
uint32_t
window_size
=
(
interval_size
-
1
)
/
_count
+
1
;
// integer version of ceil(interval_size/_count)
uint32_t
num_windows
=
interval_size
/
window_size
;
uint32_t
num_windows
=
CalculateWindows
(
interval
);
if
(
window_size
==
0
||
interval_size
==
0
)
return
;
...
...
@@ -109,19 +119,21 @@ void WindowMaker::MakeFixedCountWindow(const BED& interval) {
string
WindowMaker
::
GenerateID
(
const
BED
&
interval
,
uint32_t
window_index
,
uint32_t
num_windows
,
bool
_reverse
)
const
{
stringstream
s
;
// cout << "num_windows: " << num_windows << endl;
// cout << "window_index: " << window_index << endl << endl;
switch
(
_id_method
)
{
case
ID_SOURCE_ID
:
s
<<
"
\t
"
<<
interval
.
name
;
break
;
case
ID_WINDOW_NUMBER
:
if
(
_reverse
==
true
)
{
if
(
_reverse
==
true
&&
num_windows
>
0
)
{
s
<<
"
\t
"
<<
num_windows
-
window_index
+
1
;
}
else
{
s
<<
"
\t
"
<<
window_index
;
}
break
;
case
ID_SOURCE_ID_WINDOW_NUMBER
:
if
(
_reverse
==
true
)
{
if
(
_reverse
==
true
&&
num_windows
>
0
)
{
s
<<
"
\t
"
<<
interval
.
name
<<
"_"
<<
num_windows
-
window_index
+
1
;
}
else
{
s
<<
"
\t
"
<<
interval
.
name
<<
"_"
<<
window_index
;
...
...
src/windowMaker/windowMaker.h
View file @
d98c7f8f
...
...
@@ -58,6 +58,7 @@ private:
void
MakeFixedSizeWindow
(
const
BED
&
interval
);
void
MakeFixedCountWindow
(
const
BED
&
interval
);
uint32_t
CalculateWindows
(
const
BED
&
interval
);
string
GenerateID
(
const
BED
&
interval
,
uint32_t
window_index
,
uint32_t
num_windows
,
bool
_reverse
)
const
;
};
test/makewindows/input.bed
0 → 100644
View file @
d98c7f8f
chr5 60000 70000 AAA
chr5 73000 90000 BBB
chr5 100000 101000 CCC
test/makewindows/test-makewindows.sh
0 → 100644
View file @
d98c7f8f
BT
=
${
BT
-../../bin/bedtools
}
check
()
{
if
diff
$1
$2
;
then
echo
ok
else
echo
fail
fi
}
###########################################################
# Test forward and reverse window numbering
############################################################
echo
" makewindows.t01...
\c
"
echo
$BT
makewindows
-b
input.bed
-w
500
-i
winnum
>
obs
check obs exp
rm
obs exp
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment