Нема описа

Andrej Studen 11696fa54a Update 'Readme.md' пре 5 месеци
pythonScripts 8f98e4ce97 Minor changes to testInterface пре 2 година
LICENSE 623fedc366 Add LICENSE пре 5 година
Readme.md 11696fa54a Update 'Readme.md' пре 5 месеци
config.py d8248b091c Adding scripts that create a default network setup file пре 1 година
getCSRF.py e892554ee8 adding missing getCSRF.py пре 6 година
getFile.py fbad6ad2e6 Initial import пре 6 година
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 месеци
labkeyDatabaseBrowser.py 28114bd6f0 Prefering utf8 in parsing response for labkeyDatabaseBrowser пре 1 година
labkeyFileBrowser.py 9c2df6384c Repairng readFileToBuffer пре 5 година
labkeyInterface.py a576a3bb48 Making OSError more verbose in labkeyInterface пре 2 година
manageCRF.py c5115ed2d7 Reverting naming inconsistency пре 9 месеци
network-config-sample.json fbad6ad2e6 Initial import пре 6 година

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]