Brak opisu

Andrej Studen 11696fa54a Update 'Readme.md' 5 miesięcy temu
pythonScripts 8f98e4ce97 Minor changes to testInterface 2 lat temu
LICENSE 623fedc366 Add LICENSE 5 lat temu
Readme.md 11696fa54a Update 'Readme.md' 5 miesięcy temu
config.py d8248b091c Adding scripts that create a default network setup file 1 rok temu
getCSRF.py e892554ee8 adding missing getCSRF.py 6 lat temu
getFile.py fbad6ad2e6 Initial import 6 lat temu
importXLSX.py c7a38eb200 Adding updateAlias as an optional attribute of pars that modifies aliases after the default routine, default is to not modify them 10 miesięcy temu
labkeyDatabaseBrowser.py 28114bd6f0 Prefering utf8 in parsing response for labkeyDatabaseBrowser 1 rok temu
labkeyFileBrowser.py 9c2df6384c Repairng readFileToBuffer 5 lat temu
labkeyInterface.py a576a3bb48 Making OSError more verbose in labkeyInterface 2 lat temu
manageCRF.py c5115ed2d7 Reverting naming inconsistency 9 miesięcy temu
network-config-sample.json fbad6ad2e6 Initial import 6 lat temu

Readme.md

Labkey Python interface

A Python3 urllib3 based interface for communication with the LabKey server. Update over official LabKey version is the use of client certificates to access potentially sensitive sites.

Setup

Update network-config-sample.json with personal information needed to access the site (certificates, keys, username and password) When using labkeyInterface, use the updated file as input to labkeyInterface constructor, ie

import labkeyInterface
net=labkeyInterface.labkeyInterface()
net.init('/path/to/network-config.json')

Use

getFile.py illustrates use to connect to site, collect image and perform image analysis. Typically one would do:

#net created as above
import labkeyDatabaseBrowser
db=labkeyDatabaseBrowser.labkeyDB(net)
import labkeyFileBrowser
fb=labkeyFileBrowser.labkeyFileBrowser(net)
#project='path/to/project/on/Labkey'
#schema='study'
#query='queryName'
ds=db.selectRows(project,schema,query,[])
for r in ds['rows']:
    #r is a dictionary with variables named after column names in labkey
    #for statistics etc. work with variables directly
    #for files, figure out where files are stored
    #typically starting with project, 
    #- a potential subdirectory, 
    #- a set of directories determined from fields in r
    #- a file name from specific field in r
    subdir='preprocessedImages'
    pathList=[subdir,r['ParticipantId'],r['visitId'],r['fileName']]
    path='/'.join(pathList)
    remotePath=fb.formatPathURL(project,path)
    #where to copy file to, adjust if neccesary
    localPath=os.path.join(os.path.expanduser('~'),'temp',r['fileName'])
    fb.readFileToFile(remotePath,localPath)
    #do something with file
#end loop
print('Done')

One can use row data to navigate list of files and/or do statistical analysis of data.

Generate private key without password

To connect, a key without password is needed for compliance with urllib3. Generate it with:

openssl rsa -in [file1.key] -out [file2.key]