The Structural Mutation Annotation (StructMAn) software provides annotation of non-synonymous single-nucleotide variants (nsSNVs) in the context of the structural properties of the resulting amino acid changes in the corresponding proteins. Its rationale is that if a mutation is located on an interaction interface between a protein and another protein, DNA, RNA or a small molecule, it is likely to interfere with this interaction, and mutations location in the protein core are likely to influence its stability. StructMAn was first published in Nucl Acids Res, 2016 where we showed that such structural annotation correlate well with established tools for predicting damaging effect of missense mutations. Later we have applied StructMAn to a large collection of disease-associated and neutral mutations and discovered distinct trends of their spatial distribution.
Before you start, please make sure you have internet connection to use SructMAn
NOTE: All the example code/commands here are based on CentOS 7 (everything is executed as root user(denoted by #))
NOTE: Enable/install epel repo if by default it is not available in your system (for CentOS it is not available by default). In this setup we install docker using the yum package manager
# yum install epel-release
# yum install docker
# yum install docker-compose
NOTE 1: Replace "yum install" with the respective command of your operating system to install
NOTE 2: After installing docker, start and enable docker by doing the following (this is the case for CentOS only, check the docker documentation if your OS requires you to do so)
# systemctl start docker
# systemctl enable docker
Download this utility script setup_structman_docker_container.sh to your local machine in order to create the base setup and configuration for your StructMAn to run succesfully using docker-compose client
- Download the script using cURL (you will be prompted for password, since this is a private repo).
# curl -u <github_username> -O https://raw.githubusercontent.com/sanjaysrikakulam/structman/master/utility_scripts/setup_structman_docker_container.sh
- Set the execution flag to the script once it is downloaded from github
# chmod +x <path>/setup_structman_docker_container.sh
- Now use the script to create default setup and configuration for StructMAn (Please change the values in the angular brackets "<>"), make sure you always use the latest version of the sript, as there might be some updates from time to time.
# ./setup_structman_docker_container.sh -p <path/to/create/the/container_directory_name> -c <container_name>
Where:
-p => A path to create the container direcotry
-c => A name for the container (This is an optional parameter, and its default value is "structman")
<container_directory>
└── docker-compose.yml
└── mysql_lib
└── mysql_logs
└── structman
├── input_data
└── results
└── resources
# cd <container_directory>
# docker-compose up -d
# docker-compose logs
# docker ps
Use the following command to run StructMAn, make sure you have some input file located under <container_directory>/structman/input_data
# docker exec -it <container_name> structman.py -i /structman/input_data/<input_file_name>
For ease of use, lets setup an alias for the docker exec command either in the current terminal or by adding it to the end of the .bashrc file like below,
# alias structman='docker exec -it <container_name> structman.py'
Once an alias is set, you can easily access the structman.py from your current terminal simply by,
# structman -i /structman/input_data/<input_file_name>
Refer this tutorial for more details on how to use StructMAn
NOTE: If you do not provide an input file using the "-i" option StructMAn will by default use all input files found in the <container_directory>/structman/input_data directory and store the output in the <container_directory>/structman/results directory. These paths are bind mounted to the container.
- Stop the current running container by providing the path of the docker-compose.yml to the docker-compose client
# docker-compose -f <docker-compose.yml> stop
- Remove the container that we stopped just now
# docker-compose -f <docker-compose.yml> rm -f
- Delete the old image
# docker rmi <image_id>
- Finally pull the latest image and start the container in the detach mode
# docker-compose -f <docker-compose.yml> up -d
- Stop the current running container by providing the path of the docker-compose.yml to the docker-compose client
# docker-compose -f <docker-compose.yml> stop
- Remove the container that we stopped just now
# docker-compose -f <docker-compose.yml> rm -f
- Remove all the files located under mysql_lib directory (Remember that this directory was created with the help of the utility script and that this direcotry is bind mounted into the container. Removing everything inside this folder will reset the database and reinitializes the mysql server setup)
# rm -r <path_to_the_mysql_lib_directory>
- Finally start the container in the detach mode
# docker-compose -f <docker-compose.yml> up -d
NOTE: All the example code/commands here are based on Fedora 30
# dnf install podman
NOTE: Replace "dnf install" with the respective command of your operating system to install
Pull the image, just like with docker
$ podman pull "docker.io/sanjaysrikakulam/structman:latest"
Like in the docker version we provide a setup script that creates the required directory structure and sets up the container with the right bind mounts. Download setup_structman_podman_container.sh instead of setup_structman_docker_container.sh and follow the instruction given for the Docker version of the script.
Now Wait for a while before you start running the commands. To check if the container has properly started or not, check the logs
# podman logs <container_name>
That's it, now you can enjoy structman even without bothering your Admin (Remember with great power comes great responsibility, so!!!)
Almost all docker commands work for podman, just replace docker with podman and if you are not sure use this commands manual
$ podman ps
Use the following command to run StructMAn, make sure you have some input file located under <container_directory>/structman/input_data
$ podman exec -it <container_name> structman.py -i /structman/input_data/<input_file_name>
For ease of use, lets setup an alias for the podman exec command either in the current terminal or by adding it to the end of the .bashrc file like below,
# alias structman='podman exec -it <container_name> structman.py'
Once an alias is set, you can easily access the structman.py from your current terminal simply by,
# structman -i /structman/input_data/<input_file_name>
Refer this tutorial for more details on how to use StructMAn
NOTE: If you do not provide an input file using the "-i" option StructMAn will by default use all input files found in the <container_directory>/structman/input_data directory and store the output in the <container_directory>/structman/results directory. These paths are bind mounted to the container.
If you find these tools useful, please cite:
Gress A, Srikakulam SK, Keller S, Kalinina OV. Container-based tools for structural annotation of genetic variants. submitted.
# docker-compose up -d
# docker start <container_name>
# docker-compose -f <path_to_your_compose_file/docker-compose.yml> up -d
# docker stop <container_name>
# docker logs <container_name>
# docker exec -it <container_name> /bin/bash
# docker images -q -f dangling=true | xargs --no-run-if-empty docker rmi
# docker images -a
# docker rmi <image_name or image_id>
# docker ps -a -f status=exited
# docker rm $(docker ps -a -f status=exited -q)
# docker rm <container_name>
If you encountered a problem running this container, you can file an issue. For us to provide any form of support, be sure to include the following information in your issue:
docker info and docker logs <container_name>Content type
Image
Digest
Size
1.1 GB
Last updated
over 5 years ago
docker pull sanjaysrikakulam/structman