Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
openbis
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
sispub
openbis
Commits
fb398da3
Commit
fb398da3
authored
14 years ago
by
tpylak
Browse files
Options
Downloads
Patches
Plain Diff
SE-328 jython dropbox handler (example)
SVN: 19476
parent
4510b740
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
screening/etc/data-set-handler.py
+126
-0
126 additions, 0 deletions
screening/etc/data-set-handler.py
with
126 additions
and
0 deletions
screening/etc/data-set-handler.py
0 → 100755
+
126
−
0
View file @
fb398da3
#! /usr/bin/env python
# This is an example Jython dropbox for importing HCS image datasets
import
os
import
ch.systemsx.cisd.openbis.generic.shared.dto.identifier
as
identifier
import
ch.systemsx.cisd.openbis.generic.shared.basic.dto
as
dto
from
ch.systemsx.cisd.openbis.dss.etl.dto.api.v1
import
ImageFileInfo
,
ImageDataSetInformation
,
Channel
# ------------
# You may want to modify this part.
# ------------
# type of the new dataset
DATASET_TYPE
=
"
HCS_IMAGE
"
# file format of files in a new dataset
FILE_FORMAT
=
"
TIFF
"
# space where the plate for which the dataset has been acquired exist
SAMPLE_SPACE
=
"
DEMO
"
# number of rile rows and columns on a well
TILE_ROWS_NUMBER
=
2
TILE_COLUMNS_NUMBER
=
2
# available channels, for each channel code and label have to be specified
CHANNELS
=
[
Channel
(
"
DAPI
"
,
"
DAPI
"
),
Channel
(
"
FITC
"
,
"
FITC
"
),
Channel
(
"
CY5
"
,
"
Cy5
"
)
]
# extracts code of the sample from the directory name
def
extract_sample_code
(
file_basename
):
return
file_basename
.
split
(
"
.
"
)[
0
]
# Creates ImageFileInfo for a given path to an image
# Example file name: A - 1(fld 1 wv Cy5 - Cy5).tif
def
create_image_info
(
path
):
basename
=
os
.
path
.
splitext
(
path
)[
0
]
wellText
=
basename
[
0
:
find
(
basename
,
"
(
"
)]
# A - 1
well
=
wellText
.
replace
(
"
-
"
,
""
)
fieldText
=
basename
[
find
(
basename
,
"
fld
"
)
+
4
:
find
(
basename
,
"
wv
"
)]
try
:
fieldNum
=
int
(
fieldText
)
-
1
except
ValueError
:
raise
Exception
(
"
Cannot parse field number from
'"
+
fieldText
+
"'
in
'"
+
basename
+
"'
file name.
"
)
channel
=
basename
[
rfind
(
basename
,
"
-
"
)
+
3
:
-
1
]
tileRow
=
(
fieldNum
/
TILE_COLUMNS_NUMBER
)
+
1
tileCol
=
(
fieldNum
%
TILE_COLUMNS_NUMBER
)
+
1
img
=
ImageFileInfo
(
channel
,
tileRow
,
tileCol
,
path
)
img
.
setWell
(
well
)
return
img
# ------------
# You probably do not want to modify this part
# ------------
def
rfind
(
text
,
pattern
):
ix
=
text
.
rfind
(
pattern
)
ensurePatternFound
(
ix
,
text
,
pattern
)
return
ix
def
find
(
text
,
pattern
):
ix
=
text
.
find
(
pattern
)
ensurePatternFound
(
ix
,
text
,
pattern
)
return
ix
def
ensurePatternFound
(
ix
,
file
,
pattern
):
if
ix
==
-
1
:
raise
Exception
(
"
Cannot find
'"
+
pattern
+
"'
pattern in file name
'"
+
file
+
"'"
)
def
create_dataset
():
basename
=
extract_file_basename
(
incoming
.
getName
())
dataset
=
Dataset
()
dataset
.
dataset_type
=
DATASET_TYPE
dataset
.
file_format
=
FILE_FORMAT
dataset
.
sample_space
=
SAMPLE_SPACE
dataset
.
sample_code
=
extract_sample_code
(
basename
)
dataset
.
tile_rows_number
=
TILE_ROWS_NUMBER
dataset
.
tile_columns_number
=
TILE_COLUMNS_NUMBER
return
dataset
def
get_available_channels
():
return
CHANNELS
class
Dataset
:
sample_code
=
None
sample_space
=
None
dataset_type
=
None
file_format
=
None
# -- imaging specific
tile_rows_number
=
-
1
tile_columns_number
=
-
1
def
create_image_infos
(
dir
):
images
=
[]
dir_path
=
dir
.
getPath
()
for
file
in
os
.
listdir
(
dir_path
):
image
=
create_image_info
(
file
)
images
.
append
(
image
)
return
images
def
set_dataset_info
(
registration_details
,
dataset
):
data_set_info
=
registration_details
.
getDataSetInformation
()
data_set_info
.
setSpaceCode
(
dataset
.
sample_space
)
data_set_info
.
setSampleCode
(
dataset
.
sample_code
)
registration_details
.
setFileFormatType
(
dto
.
FileFormatType
(
dataset
.
file_format
));
registration_details
.
setDataSetType
(
dto
.
DataSetType
(
dataset
.
dataset_type
));
registration_details
.
setMeasuredData
(
True
);
# -- imaging specific
data_set_info
.
setTileGeometry
(
dataset
.
tile_rows_number
,
dataset
.
tile_columns_number
)
images
=
create_image_infos
(
incoming
)
data_set_info
.
setImages
(
images
)
channels
=
get_available_channels
()
data_set_info
.
setChannels
(
channels
)
def
extract_file_basename
(
filename
):
lastDot
=
filename
.
rfind
(
"
.
"
)
if
lastDot
!=
-
1
:
return
filename
[
0
:
lastDot
]
else
:
return
filename
dataset
=
create_dataset
()
registration_details
=
factory
.
createRegistrationDetails
()
set_dataset_info
(
registration_details
,
dataset
)
service
.
queueDataSetRegistration
(
incoming
,
registration_details
)
\ No newline at end of file
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