Adapter for http://ndbserver.rutgers.edu/ created for biologists, bioinformatics etc.
Project description
Adapter for easy access to NDB resources directly from python (3.*).
Usage
Adapter offers 4 types of search: summary, advanced, dna and rna.
Summary
To get summary of structure, type:
>>> from ndb_adapter import NDB
>>> res = NDB.summary('4Z4B')
>>> res.ndb_id
'4Z4B'
>>> res.title
'2-PYRIDYL HOECHST - A NEW GENERATION DNA-BINDING RADIOPROTECTOR'
>>> res.description
"DNA (5'-D(*CP*GP*CP*AP*AP*AP*TP*TP*TP*GP*CP*G)-3')"
>>> res.get_dict()
{'Molecular Description': "DNA (5'-D(*CP*GP*CP*AP*AP*AP*TP*TP*TP*GP*CP*G)-3')", ...}
As you see some properties are available for summary result. Full list of them is here.
Advanced search
To perform advanced search you should use AdvancedOptions object and pass it as argument to advanced_search function from NDB, however it’s not required. That object has a lot of setters for modify search query. Look at them to search what you want. It’s also possible to change result report type, just pass wanted type into constructor.
>>> from ndb_adapter import *
# options preparation
>>> opt = AdvancedSearchOptions() # default report type NDBStatus
>>> opt.set_crystal_structure(yes_no_ignore=YesNoIgnore.Yes) # default and_or=AndOr.And
>>> opt.set_dna(and_or=AndOr.Or, yes_no_ignore=YesNoIgnore.Yes)
# search
>>> res = NDB.advanced_search(opt)
>>> print(res.count)
4695
>>> print(res.report)
[<ndb_adapter.search_report.NDBStatusReport object at 0x00000248F9E02128>, ...]
# working on result
>>> first = res.report[0] # first structure from search
# if you want have annotations in IDE (i.e. Pycharm) do something like this:
>>> first = res.report[0] # type: ReportType.NDBStatus
>>> print(first.title)
"2-Pyridyl Hoechst - a New Generation DNA-Binding Radioprotector"
Every report type result is different - you can examine theirs properties or use typing.
Some of them has statistics also, for example:
>>> from ndb_adapter import *
>>> opt = AdvancedSearchOptions(ReportType.RNABasePairRelFreq)
>>> opt.set_hybrid(yes_no_ignore=YesNoIgnore.Yes)
>>> res = NDB.advanced_search(opt)
>>> print(res.statistics)
Min: {'Relative cWW': 0.5, 'Relative tWW': 0.0, 'Relative cHS': 0.0, 'Relative tWS': 0.0, ...}
Max: {'Relative cWW': 1.0, 'Relative tWW': 0.05, 'Relative cHS': 0.06, 'Relative tWS': 0.06, ...}
Mean: {'Relative cWW': 0.8, 'Relative tWW': 0.01, 'Relative cHS': 0.01, 'Relative tWS': 0.01, ...}
Standard Deviation: {'Relative cWW': 0.12, 'Relative tWW': 0.01, 'Relative cHS': 0.02, 'Relative tWS': 0.02, ...}
>> print(res.statistics.min)
{'Relative tWS': 0.0, 'Relative tWW': 0.0, 'Relative cHH': 0.0, 'Relative cWW': 0.5, ...}
Dna search
Dna search is very similar to advanced search, but with DnaSearchOptions and smaller amount of setters.
>>> from ndb_adapter import *
# options preparation
>>> opt = DnaSearchOptions()
>>> opt.set_structural_features(StructuralFeatures.A_DNA)
# search
>>> result = NDB.dna_search(opt)
>>> print(result.count)
393
>>> str(result.report)
[<ndb_adapter.search_report.SimpleReport object at 0x00000152D0FCB438>, ...]
# working on result
>>> first = result.report[0] # type: SimpleReport
>>> print(first.title)
"Crystal structure of 60-mer BFDV Capsid Protein ..."
Rna search
Rna search is just like dna search. Options: RnaSearchOptions.
>>> from ndb_adapter import *
# search
>>> result = NDB.rna_search() # default is empty RnaSearchOptions object
>>> print(result.count)
3014
>>> str(result.report)
[<ndb_adapter.search_report.SimpleReport object at 0x0000018B3C877E48>, ...]
# working on result
>>> first = result.report[0] # type: SimpleReport
>>> print(first.title)
"Crystal structure of the bacterial A1408C-mutant ..."
Structure Download
Almost on every result of search you can download related files (.pdb, .cif, .xml etc.) to buffer or save.
>>> from ndb_adapter import NDB
>>> res = NDB.summary('4Z4B')
>>> res.download() # .pdb is default
"HEADER DNA 01-APR-15 4Z4B ..."
>>> from ndb_adapter import DownloadType
>>> res.download(download_type=DownloadType.Cif)
'data_4Z4B\n# \n_entry.id 4Z4B ...'
>>> res = NDB.advanced_search()
>>> res.download(save=True) # saves n files in current directory
>>> res.download(save=True, target_dir='/home/user/Downloads/') # saves n files in ~/Downloads/
>>> res.report[0].download(save=True) # saves first structure file in current directory
You can also search and download in one line:
>>> from ndb_adapter import NDB
>>> res = NDB.download('4Z4B') # like above .pdb is default
"HEADER DNA 01-APR-15 4Z4B ..."
# save and target dir is also available
Requirements
Installation
To install, simply:
$ pip install ndb_adapter
Documentation
Documentation is available at https://michsior14.github.io/ndb_adapter/.
Licence
Software is distributed under the MIT Licence.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ndb_adapter-1.3.zip
.
File metadata
- Download URL: ndb_adapter-1.3.zip
- Upload date:
- Size: 61.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4320ae5689a0787ce339174eb6e78481dad01e4c533e12fdd852ceac62df8b3a |
|
MD5 | 3466c067fffae566882a574ebd20f2ee |
|
BLAKE2b-256 | 9de01b2bd7d9e7d0f2259796bcd33fb0bfc853ed87b004de656ff3c855bab538 |