JStruct is a Java-based, free-distribution (*see License), custom-developed, browser-based application using additional open-source software as part of the development. The system stores three-dimensional macromolecular structure files (PDB, CIF, MOE, etc), as well as information parsed from their content.
In addition to storing the structure file and its data, JStruct:
- provides direct URLs for these files (both downloads and content) allowing other systems direct access to the structure files.
- allows for the creation of FASTA files that can used in BLAST database searches.
The primary purpose of JStruct is for "the storage and retrieval of public and proprietary three-dimensional macromolecular structures". These file are retrieved from:
Public: All structure files from the RCSB Protein Data Bank (http://www.rcsb.org/) in PDB or CIF format. Once an initial deposit of files is downloaded into JStruct from the RCSB, automated updates can be configured to import weekly updates from the RCSB. Within JStruct, all users have the ability to view all public structure files.
Proprietary: Manually uploaded (single, or in bulk) structure files; supported formats include: PDB, CIF, and MOE. When uploading these 'private' structure files, the owner has the ability identify read/view/grant permissions to other JStruct users. note: these manually uploaded files are only stored in the local system, and unavailable to anyone without a JStruct login.
Uploaded files are read and parsed, the data is then stored in a relational (structured) database. Data for each structure file is presented in a page specific to that structure (with a unique URL for bookmarking), where users (if logged in) can add notes, labels, and mark structures as favorites.
Additional data for manually uploaded files can be edited, and newer versions of the file can be uploaded when structure data is updated.
Structure data can searched based on a variety of customizable queries, which can be combined to form robust multi-part searches. Searches can be named, saved and revisited at later times.
JStruct integrates with LDAP for authentication, and a user needs to be logged into the application to get the full set of permissions assigned to them. Assignable roles are:
Guest: Not logged in users. Permissions include viewing and searching for structures.
Contributor: Guest plus uploading structure files and saving searches.
Admin: Contributor plus managing automated/manual processes, lists, and users.
Users can assign read, write, and grant permissions on each manually uploaded structure file; these file permissions can be assigned to all or specific users.
The Admin role includes enhanced permissions for managing JStruct. This includes:
Schedule: Start/Stop the automated process that retrieves weekly updates from the RCSB PDB.
Admin Actions: Ability to initiate additional processes related to downloading or re-processing structure file data.
Manage Lists: Add, edit and remove items from the Program and Client lists.
Users/Roles: Add and manage JStruct users and assign appropriate roles.
Properties: Update property values used throughout the application, such as import schedule, email addresses, structure prefix, default URLs, etc.
File Download URLs
|URL example||Comment||File Source|
|http://server:port/jstruct/api/structure/JSTRUCT-12345/file||download a specific RCSB file using the JSTRUCT ID||RCSB|
|http://server:port/jstruct/api/structure/4HHB/file||download a specific RCSB file using the PDB ID||RCSB|
|http://server:port/jstruct/api/structure/JSTRUCT-12345/file?current||download the current version of a RCSB file using the JSTRUCT ID||RCSB|
|http://server:port/jstruct/api/structure/4HHB/file?current||download the current version of a RCSB file using the PDB ID||RCSB|
|http://server:port/jstruct/api/structure/JSTRUCT-12345.6/file||download a specific manually uploaded file using the JSTRUCT ID||manual|
|http://server:port/jstruct/api/structure/JSTRUCT-12345/file||download the current version of a manually uploaded file using the JSTRUCT ID||manual|
|http://server:port/jstruct/api/structure/JSTRUCT-12345/file||download a 'coordinates only' PDB formatted file (only if original file is in MOE format)||manual|
File Display URLs
|URL example||Comment||File Source|
|http://server:port/jstruct/api/structure/JSTRUCT-12345/display||content only of a specific RCSB file using the JSTRUCT ID||RCSB|
|http://server:port/jstruct/api/structure/4HHB/display||content only of a specific RCSB file using the PDB ID||RCSB|
|http://server:port/jstruct/api/structure/JSTRUCT-12345/display?current||content only of the current version of a RCSB file using the JSTRUCT ID||RCSB|
|http://server:port/jstruct/api/structure/4HHB/display?current||content only of the current version of a RCSB file using the PDB ID||RCSB|
|http://server:port/jstruct/api/structure/JSTRUCT-12345.6/display||content only of a specific manually uploaded file using the JSTRUCT ID||manual|
|http://server:port/jstruct/api/structure/JSTRUCT-12345/display||content only of the current version of a manually uploaded file using the JSTRUCT ID||manual|
FASTA File URLs
Creating a FASTA File URL is a bit tricky as the caller needs to know the subquery syntax; the following can be used as an example, however it is much easier to use the Search UI to download FASTA files based on the selected search results.
Example with two subqueries:
example URL creation:
/api/sequence/fastafile? sequence_from= SEQRES | ATOM chain_types= PROTEIN | NUCLEIC_ACID | ... (one or more of) output_file_name= anyname.fasta file_status_rcsb= FILE_STATUS_ACTIVE | FILE_STATUS_OBSOLETE | FILE_STATUS_ALL | FILE_STATUS_NONE file_status_manual= FILE_STATUS_ACTIVE | FILE_STATUS_OBSOLETE | FILE_STATUS_ALL | FILE_STATUS_NONE query_mode= AND | OR subquery= TITLE;foo1:bar1;foo2:bar2,bar2b;foo3:bar3 subquery= OWNER;foo1:bar1 subquery types: FULL_TEXT | IDENTIFIER | SEQUENCE | LABEL | EVERYTHING | ANY_HEADER | TITLE | AUTHOR | OWNER | MODEL | DEPOSIT_DATES | PDB_REMARK | JRNL | COMPND | SOURCE | etc