Ei kuvausta

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

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]