Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
V
vlkb-siav2
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ViaLactea
vlkb-siav2
Commits
b2db84b1
Commit
b2db84b1
authored
6 months ago
by
Robert Butora
Browse files
Options
Downloads
Patches
Plain Diff
fixes overlap code
parent
300126d5
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
data-discovery/src/main/java/search/DbObstap.java
+90
-29
90 additions, 29 deletions
data-discovery/src/main/java/search/DbObstap.java
with
90 additions
and
29 deletions
data-discovery/src/main/java/search/DbObstap.java
+
90
−
29
View file @
b2db84b1
...
...
@@ -60,7 +60,6 @@ public class DbObstap
Double
em_min
,
em_max
,
em_res_power
;
Long
em_xel
;
boolean
em_valid
;
String
o_ucd
;
...
...
@@ -208,7 +207,8 @@ public class DbObstap
String
dbRegion
=
toRegionColumnName
(
pos
.
system
);
String
theQuery
=
"SELECT *,"
+
inputRegion
+
" <@ "
+
dbRegion
+
" AS inputInsideDb, "
+
inputRegion
+
" && "
+
dbRegion
+
" AS inputOverlapsDb, "
+
inputRegion
+
" <@ "
+
dbRegion
+
" AS inputInsideDb, "
+
inputRegion
+
" @> "
+
dbRegion
+
" AS dbInsideInput FROM obscore WHERE (obs_publisher_did IN (\'"
+
commaSepPubdids
+
"\'))"
;
...
...
@@ -257,9 +257,8 @@ public class DbObstap
obstap
.
t_resolution
=
this
.
getDouble
(
res
,
"t_resolution"
);
obstap
.
t_xel
=
this
.
getLong
(
res
,
"t_xel"
);
obstap
.
em_min
=
this
.
getDouble
(
res
,
"em_min"
);
boolean
em_min_valid
=
!
res
.
wasNull
();
obstap
.
em_max
=
this
.
getDouble
(
res
,
"em_max"
);
boolean
em_max_valid
=
!
res
.
wasNull
();
obstap
.
em_valid
=
em_min_valid
&&
em_max_valid
;;
obstap
.
em_min
=
this
.
getDouble
(
res
,
"em_min"
);
obstap
.
em_max
=
this
.
getDouble
(
res
,
"em_max"
);
obstap
.
em_res_power
=
this
.
getDouble
(
res
,
"em_res_power"
);
obstap
.
em_xel
=
this
.
getLong
(
res
,
"em_xel"
);
...
...
@@ -274,16 +273,22 @@ public class DbObstap
// VLKB extension
obstap
.
s_region_galactic
=
this
.
getString
(
res
,
"s_region_galactic"
);
obstap
.
vel_min
=
this
.
getDouble
(
res
,
"vel_min"
);
//boolean em_min_valid = !res.wasNull();
obstap
.
vel_max
=
this
.
getDouble
(
res
,
"vel_max"
);
//boolean em_max_valid = !res.wasNull();
obstap
.
vel_min
=
this
.
getDouble
(
res
,
"vel_min"
);
obstap
.
vel_max
=
this
.
getDouble
(
res
,
"vel_max"
);
boolean
inputOverlapsDb
=
res
.
getBoolean
(
"inputOverlapsDb"
);
boolean
inputInsideDb
=
res
.
getBoolean
(
"inputInsideDb"
);
boolean
dbInsideInput
=
res
.
getBoolean
(
"dbInsideInput"
);
obstap
.
overlapCodeSky
=
convertToOverlapCodeSky
(
inputInsideDb
,
dbInsideInput
);
LOGGER
.
finest
(
"inpOverlapsDb, inpInsideDb, dbInsideInp : "
+
inputOverlapsDb
+
" "
+
inputInsideDb
+
" "
+
dbInsideInput
);
obstap
.
overlapCode
Vel
=
convertToOverlapCode
Vel
(
band
,
obstap
.
em_valid
,
obstap
.
em_min
,
obstap
.
em_max
);
obstap
.
overlapCode
Sky
=
convertToOverlapCode
Sky
(
inputOverlapsDb
,
inputInsideDb
,
dbInsideInput
);
obstap
.
overlapCode
=
convertToOverlapCode
(
obstap
.
overlapCodeSky
,
obstap
.
overlapCodeVel
);
obstap
.
overlapCodeVel
=
convertToOverlapCodeVel
(
band
,
obstap
.
em_min
,
obstap
.
em_max
,
obstap
.
vel_min
,
obstap
.
vel_max
);
obstap
.
overlapCode
=
convertToOverlapCode
(
obstap
.
overlapCodeSky
,
obstap
.
overlapCodeVel
);
obstapList
.
add
(
obstap
);
...
...
@@ -303,24 +308,56 @@ public class DbObstap
return
cubes
;
}
/* convert overlap codes */
/* convert overlap codes (AST definition):
"0 - The check could not be performed because the second Region could not be mapped into the coordinate system of the first Region.",
"1 - There is no overlap between the two Regions.",
"2 - The first Region is completely inside the second Region.",
"3 - The second Region is completely inside the first Region.",
"4 - There is partial overlap between the two Regions.",
"5 - The Regions are identical to within their uncertainties.",
"6 - The second Region is the exact negation of the first Region to within their uncertainties."
*/
private
Integer
convertToOverlapCodeSky
(
boolean
inpOverlapsDb
,
boolean
inpInDb
,
boolean
dbInInp
)
{
if
(
inpOverlapsDb
)
{
if
(!
inpInDb
&&
!
dbInInp
)
return
4
;
else
if
(
inpInDb
&&
!
dbInInp
)
return
3
;
else
if
(!
inpInDb
&&
dbInInp
)
return
2
;
else
return
5
;
}
else
{
return
1
;
}
}
private
boolean
intervalOverlap
(
double
amin
,
double
amax
,
double
bmin
,
double
bmax
)
{
boolean
AoverB
=
(
amin
<=
bmin
)
&&
(
bmin
<=
amax
)
||
(
amin
<=
bmax
)
&&
(
bmax
<=
amax
);
private
Integer
convertToOverlapCodeSky
(
boolean
inpInDb
,
boolean
dbInInp
)
{
if
(!
inpInDb
&&
!
dbInInp
)
return
4
;
// parial overlap
else
if
(
inpInDb
&&
!
dbInInp
)
return
3
;
// input region completely inside fits-datacube
else
if
(!
inpInDb
&&
dbInInp
)
return
2
;
// datacube completely inside input-region
else
return
5
;
// exact match: both inpInDb dbInInp are true
boolean
BoverA
=
(
bmin
<=
amin
)
&&
(
amin
<=
bmax
)
||
(
bmin
<=
amax
)
&&
(
amax
<=
bmax
);
return
AoverB
||
BoverA
;
}
private
Integer
convertToOverlapCodeVel
(
Band
band
,
boolean
v_valid
,
double
v_min
,
double
v_max
)
private
Integer
convertToOverlapCodeVel
(
Band
band
,
Double
w_min
,
Double
w_max
,
// WAVE
Double
v_min
,
Double
v_max
)
// VELO
{
if
(
(
band
!=
null
)
&&
v_valid
)
if
(
band
!=
null
)
{
if
(
band
.
system
==
Band
.
System
.
VELO_LSRK
)
boolean
v_valid
=
(
v_min
!=
null
)
&&
(
v_max
!=
null
);
boolean
w_valid
=
(
w_min
!=
null
)
&&
(
w_max
!=
null
);
if
(
v_valid
&&
(
band
.
system
==
Band
.
System
.
VELO_LSRK
)
)
{
// FIXME assert qArgs: vel_min <= vel_max
// FIXME assert cube: v_min <= v_max
boolean
overlap
=
intervalOverlap
(
band
.
min
,
band
.
max
,
v_min
,
v_max
);;
boolean
dbInInp
=
(
band
.
min
<=
v_min
)
&&
(
v_min
<=
band
.
max
)
&&
(
band
.
min
<=
v_max
)
&&
(
v_max
<=
band
.
max
);
...
...
@@ -328,20 +365,44 @@ public class DbObstap
boolean
inpInDb
=
(
v_min
<=
band
.
min
)
&&
(
band
.
min
<=
v_max
)
&&
(
v_min
<=
band
.
max
)
&&
(
band
.
max
<=
v_max
);
return
convertToOverlapCodeSky
(
inpInDb
,
dbInInp
);
// do as in Sky-overlap
return
convertToOverlapCodeSky
(
overlap
,
inpInDb
,
dbInInp
);
}
else
if
(
w_valid
&&
(
band
.
system
==
Band
.
System
.
WAVE_Barycentric
)
)
{
boolean
overlap
=
intervalOverlap
(
band
.
min
,
band
.
max
,
w_min
,
w_max
);;
boolean
dbInInp
=
(
band
.
min
<=
w_min
)
&&
(
w_min
<=
band
.
max
)
&&
(
band
.
min
<=
w_max
)
&&
(
w_max
<=
band
.
max
);
boolean
inpInDb
=
(
w_min
<=
band
.
min
)
&&
(
band
.
min
<=
w_max
)
&&
(
w_min
<=
band
.
max
)
&&
(
band
.
max
<=
w_max
);
// do as in Sky-overlap
return
convertToOverlapCodeSky
(
overlap
,
inpInDb
,
dbInInp
);
}
else
{
return
null
;
}
else
return
null
;
// FIXME other v_type NotImplemented yet
}
return
null
;
else
{
return
null
;
}
}
private
Integer
convertToOverlapCode
(
Integer
ovcSky
,
Integer
ovcVel
)
{
if
(
ovcVel
==
null
)
return
ovcSky
;
// 2D images
else
if
(
ovcSky
==
ovcVel
)
return
ovcSky
;
else
return
4
;
// partial overlap
if
(
ovcSky
==
null
)
return
ovcVel
;
// spectral images or both null
else
if
(
ovcVel
==
null
)
return
ovcSky
;
// 2D sky images or both null
else
if
((
ovcSky
!=
null
)
&&
(
ovcVel
!=
null
))
{
if
((
ovcSky
==
1
)
||
(
ovcVel
==
1
)
)
return
1
;
// no overlap
else
if
(
ovcSky
==
ovcVel
)
return
ovcSky
;
else
return
4
;
}
else
return
null
;
// both null
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment