Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • cfankep/psotdb
  • SOaAS/psotdb
2 results
Show changes
Commits on Source (8)
Database Manager
================
This tool provide the preparation of Databases for several bioinformaticians tools.
The preparated databases can be used on the working computer or can be saved on the cloud Server(Amazon Web Service S3)
so that other computer can be able to download the data from there. It's also possible to delete some undesirable
databases on the working computer and/or in the Cloud.
Supported Databases with associated tools:
* Uniprot-Swissprot [Blast, Ghostx]
* CARD [Blast, Ghostx]
* Pfam [hmmer]
Installation
------------
Prerequisites:
* Python (Version >= 3.7)
* Git
Install for user::
pip install git+https://git.computational.bio.uni-giessen.de/cfankep/psotdb.git
Install for developer::
#checkout repository
git clone git+https://git.computational.bio.uni-giessen.de/cfankep/psotdb.git
#install
pip3 install -e .
Using Database Manager
----------------------
For the general help use::
dbman --help
Checkout which databases are available::
# in the S3 directory
dbman list_remote_databases
# in the local directory
dbman list_local_databases
Checkout which databases with associated transformations are available::
dbman list_recipes
Prepare databases::
# check the available optional parameters
dbman prepare -h
# run the standard preparation
dbman prepare example/database exemple/tool
Transfer databases from the working computer to s3 Cloud::
# check the available optional parameters
dbman upload -h
# run the standard transfer
dbman upload example/database exemple/tool*
Transfer databases from s3 Cloud to working computer::
# check the available optional parameters
dbman download -h
# run the standard download
dbman download example/database exemple/tool*
Delete undesirable databases::
# from the local directory
dbman delete example/database example/tool* local
# from the s3 cloud directory
dbman delete example/database example/tool* s3
remplace the standard directory to save the data::
# change local directory with the environment variable
export DBMAN_DBDIR = example/path
# change remote directory with the environment variable
export DBMAN_S3DIR = example/path
The standard directories(local and remote) can also be change with optional parameters.
(*) For upload, download and delete of the raw databank instead of 'example/tool' enter 'raw'.
README.rst
blast_db.sh
delete_remote_file.sh
download_db.sh
download_json.sh
ghostx_db.sh
hmmer_pfam.sh
prepare_card.sh
prepare_pfam.sh
prepare_swissprot.sh
requirements.txt
setup.cfg
setup.py
test.py
testfile.txt
upload_db.sh
upload_json.sh
dbman/__init__.py
dbman/main.py
dbman.egg-info/PKG-INFO
......@@ -24,6 +14,17 @@ dbman.egg-info/not-zip-safe
dbman.egg-info/pbr.json
dbman.egg-info/requires.txt
dbman.egg-info/top_level.txt
dbman/scripts/blast_db.sh
dbman/scripts/delete_remote_file.sh
dbman/scripts/download_db.sh
dbman/scripts/download_json.sh
dbman/scripts/ghostx_db.sh
dbman/scripts/hmmer_pfam.sh
dbman/scripts/prepare_card.sh
dbman/scripts/prepare_pfam.sh
dbman/scripts/prepare_swissprot.sh
dbman/scripts/upload_db.sh
dbman/scripts/upload_json.sh
local_databases/dbman_metadata.json
local_databases/swissprot_2019_06_blast/uniprot_sprot.fasta.phr
local_databases/swissprot_2019_06_blast/uniprot_sprot.fasta.pin
......
{"git_version": "cfea2f1", "is_release": false}
\ No newline at end of file
{"git_version": "2b012ee", "is_release": false}
\ No newline at end of file
......@@ -85,8 +85,8 @@ def get_remote_databases_directory(args):
web_dir = 's3://db_storage'
if args.store:
web_dir = args.store
elif 'S3_DBDIR' in os.environ:
web_dir = os.environ['S3_DBDIR']
elif 'DBMAN_S3DIR' in os.environ:
web_dir = os.environ['DBMAN_S3DIR']
return web_dir
......@@ -347,36 +347,40 @@ def download(args):
def delete(args):
if args.database in data.keys():
if args.tool in data[args.database]['tool'].keys() or args.tool == "raw":
if args.place == 'local':
version = get_local_json_version(args)
dbman_dir = get_local_databases_directory(args)
directory_to_delete = path_maker(dbman_dir, get_tool_directory_name(args, version))
if os.path.isdir(directory_to_delete):
shutil.rmtree(directory_to_delete)
metadata = get_local_metadata(args)
for position in range(0, len(metadata)):
if metadata[position]['name'] == args.database and metadata[position]['tool'] == args.tool and metadata[position]['version'] == version:
del metadata[position]
break
save_local_metadata(args, metadata)
print("The {} files were successfully delete from: ".format(get_tool_directory_name(args, version)) + os.path.abspath(dbman_dir))
else:
print("The {} files aren't existing in: ".format(get_tool_directory_name(args, version)) + os.path.abspath(dbman_dir))
elif args.place == 's3':
version = get_remote_json_version(args)
web_store = get_remote_databases_directory(args)
web_file = path_maker(web_store, get_tar_filename(args, version))
if web_file in get_remote_files():
subprocess.run([pkg_resources.resource_filename(__name__, "scripts/delete_remote_file.sh"), web_file])
metadata = get_remote_metadata(args)
for position in range(0, len(metadata)):
if metadata[position]['name'] == args.database and metadata[position]['tool'] == args.tool and metadata[position]['version'] == version:
del metadata[position]
break
save_remote_metadata(args, metadata)
print("The {} files were successfully delete from: ".format(get_tool_directory_name(args, version)) + web_store)
else:
print("The {} files aren't existing in: ".format(get_tool_directory_name(args, version)) + web_store)
frage = input('Do you want to continue (Y/N)? ')
if frage.lower() == 'y':
if args.place == 'local':
version = get_local_json_version(args)
dbman_dir = get_local_databases_directory(args)
directory_to_delete = path_maker(dbman_dir, get_tool_directory_name(args, version))
if os.path.isdir(directory_to_delete):
shutil.rmtree(directory_to_delete)
metadata = get_local_metadata(args)
for position in range(0, len(metadata)):
if metadata[position]['name'] == args.database and metadata[position]['tool'] == args.tool and metadata[position]['version'] == version:
del metadata[position]
break
save_local_metadata(args, metadata)
print("The {} files were successfully delete from: ".format(get_tool_directory_name(args, version)) + os.path.abspath(dbman_dir))
else:
print("The {} files aren't existing in: ".format(get_tool_directory_name(args, version)) + os.path.abspath(dbman_dir))
elif args.place == 's3':
version = get_remote_json_version(args)
web_store = get_remote_databases_directory(args)
web_file = path_maker(web_store, get_tar_filename(args, version))
if web_file in get_remote_files():
subprocess.run([pkg_resources.resource_filename(__name__, "scripts/delete_remote_file.sh"), web_file])
metadata = get_remote_metadata(args)
for position in range(0, len(metadata)):
if metadata[position]['name'] == args.database and metadata[position]['tool'] == args.tool and metadata[position]['version'] == version:
del metadata[position]
break
save_remote_metadata(args, metadata)
print("The {} files were successfully delete from: ".format(get_tool_directory_name(args, version)) + web_store)
else:
print("The {} files aren't existing in: ".format(get_tool_directory_name(args, version)) + web_store)
else:
print('delete canceled')
else:
print('Tool error. There are following possibility: {}'.format([tool for tool in data[args.database]['tool'].keys()]))
else:
......@@ -405,7 +409,7 @@ data = {'swissprot': {'prepare': pkg_resources.resource_filename(__name__, "scri
'filename': 'uniprot_sprot.fasta',
'version': get_swissprot_version
},
'pfam': {'prepare': './prepare_pfam.sh',
'pfam': {'prepare': pkg_resources.resource_filename(__name__, "scripts/prepare_pfam.sh"),
'tool': {'hmmer': pkg_resources.resource_filename(__name__, "scripts/hmmer_pfam.sh")},
'filename': 'Pfam-A.hmm',
'version': get_pfam_version
......
Dbxref Quellcode, evtl. als Vorlage nutzbar: https://git.computational.bio.uni-giessen.de/SOaAS/dbxref/tree/master/dbxref
Beschreibung:
Das Protein Sequence Observation Tool integriert diverse bioinformatische Tools zur Anreicherung von Informationen zu Proteinen und normalisiert diese in das JSON Format, sodass die Informationen einfach von weiteren Programmen weiterverarbeitet werden können. In dieser Arbeit soll der ein Hilfsprogramm geschrieben werden, dass von PSOT benötigte Datenbanken vorbereitet und zur Verfügung stellt. Für einzelne Datenbanken gibt es bereits Skripte zur Installation und Aufbereitung. Diese Skripte sollen in einer Anwendung systematisch zusammen geführt und über eine einfach zu nutzende Kommandozeilenschnittstelle nutzbar gemacht werden. Vorraussetzung sind der Umgang mit der Linux Kommandozeile und solide Kenntnisse in Python 3.
Stories:
Verschiedene Rollen:
PSOT Entwickler
PSOT Nutzer
. Der PSOT Entwickler benötigt eine neue Datenbank für sein verteiltes Programm. Er schreibt einmalig ein Script das die Datenbank bezieht (herunterlädt) und eins um die Datenbank für seine Anwendung vorzubereiten. Diese Skripte werden im db Tool hinterlegt und stehen damit allen unter einem definierten Namen (z.B. der Datenbankname und für welches Programm es aufbereitet wurde) zur Verfügung.
. Der PSOT Entwickler hat seine Datenbank vorbereitet und möchte sie jetzt in seiner verteilten Anwendung allen Knoten zur Verfügung stellen. Dazu konfiguriert er das db Tool mit seinem S3 Cloud Speicher und beauftragt es damit die grade erstellte Datenbank dorthin hochzuladen. Die Daten werden komprimiert im Cloud Speicher abgelegt. Auf den Knoten beauftragt er das db Tool die Daten herunterzuladen und an die gewünschte Stelle zu entpacken.
. Der PSOT Nutzer möchte wissen welche Datenbanken in dem öffentlichen Repository liegen. Dazu ruft er das db tool auf und es listet alle verfügbaren Datenbanken auf.
. Das db Tool prüft ob eine bestimmte Datenbank verfügbar ist, damit es diese nicht erneut herunterladen muss.
. Der Nutzer möchte wissen an welcher Stelle im System eine Datenbank für ein bestimmtes Tool abgelegt ist. Er ruft das db tool mit der Datenbank und dem Tool auf und erhält den Pfad zurück.
Beispielaufrufe:
dbman prepare "UniprotKB/swiss-prot" "ghostx"
dbman upload "UniprotKB/swiss-prot" "ghostx"
dbman download "UniprotKB/swiss-prot" "ghostx"
dbman location "UniprotKB/swiss-prot" "ghostx"
dbman list database recipes
dbman list local databases
dbman list remote databases
Beispieldatenbanken:
swissprot
trembl
eggnog
pfam
card
Evtl. kann auch biomaj für das Problem genutzt werden: https://biomaj.genouest.org/
Beispielaufrufe:
# Vorher: In dem Datenbankverzeichnis liegt keine swiss-prot Datenbank fuer ghostx
dbman prepare "UniprotKB/swiss-prot" "ghostx"
-> Ergebnis: In dem Datenbankvorbereitungsverzeichnis liegt die ghostx Datenbank. die datenbank kann benutzt werden
# Vorher In dem Datenbankverzeichnis liegt die swiss-prot Datenbank fuer ghostx
dbman upload "UniprotKB/swiss-prot" "ghostx"
-> Ergebnis: Im S3 liegt die komprimierte swiss-prot Datenbank für ghostx
# Vorher: Im S3 liegt die komprimierte swiss-prot Datenbank für ghostx
dbman download "UniprotKB/swiss-prot" "ghostx"
-> Ergebnis: In dem Datenbankvorbereitungsverzeichnis liegt die ghostx Datenbank. datenbank nutzbar
# Vorher: In dem Datenbankvorbereitungsverzeichnis liegt die ghostx Datenbank
dbman location "UniprotKB/swiss-prot" "ghostx"
-> Ergebnis: Pfad der swiss-prot Datenbank fuer ghostx
# Vorher: Egal
dbman list database recipes
-> Ergebnis:
swiss-prot[ghostx]
swiss-prot[blastp]
pfam[hmmer]
# Vorher: Datenbank sind lokal vorhanden
dbman list local databases
->Ergebnis:
swiss-prot[ghostx] version: x.y.z erstellt am: <datum>
swiss-prot[blastp] version: x.y.z erstellt am: <datum>
dbman list remote databases
->Ergebnis:
swiss-prot[ghostx] version: x.y.z erstellt am: <datum>
swiss-prot[blastp] version: x.y.z erstellt am: <datum>
pfam[hmmer] version: x.y.z erstellt am: <datum>
Database repository---> https://github.com/MGX-metagenomics/databases/blob/master/card.build
......@@ -78,20 +5,11 @@ Database repository---> https://github.com/MGX-metagenomics/databases/blob/maste
anzeigen lassen---> echo $VARIABLE
löschen---> unset VARIABLE
setzen---> export VARIABLE = pfad
https://setuptools.readthedocs.io/en/latest/pkg_resources.html#basic-resource-access
-->ResourceManager API¶
https://docs.python.org/3.7/library/tempfile.html
le programm est-il utilisable sur windows?
commen se fait la remiz? sur CD ?
1-setup.py
2-dbman verzeichnis
3- __init__.py in dbman
pip install git+https://git.computational.bio.uni-giessen.de/cfankep/psotdb.git
\ No newline at end of file
pip install git+https://git.computational.bio.uni-giessen.de/cfankep/psotdb.git
list_remote_databases
\ No newline at end of file