Summarizing methylation level by CpG Island of the monocyte cells
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Summarizing methylation level by CpG Island of the monocyte cells | |
import xmlrpclib | |
import time | |
# Before going further, we must set up the client: | |
url = "http://deepblue.mpi-inf.mpg.de/xmlrpc" | |
server = xmlrpclib.Server(url, allow_none=True) | |
# You can use the anonymous key or your own user key | |
user_key = "anonymous_key" | |
# Select the biosources related to monocyte | |
(s, monocytes_biosources) = server.get_biosource_children("monocyte", user_key) | |
# Obtain the biosources nams | |
monocytes_biosources_names = server.extract_names(monocytes_biosources)[1] | |
# Obtain the samples from BLUEPRINT | |
(status, samples) = server.list_samples(monocytes_biosources_names, {"source": "BLUEPRINT Epigenome"}, user_key) | |
# Obtain the samples IDs | |
samples_ids = server.extract_ids(samples)[1] | |
# Obtain the experiments | |
(status, experiments) = server.list_experiments("", "", "DNA Methylation", "", samples_ids, "Bisulfite-Seq", "Blueprint Epigenome", user_key) | |
# Filter the experiments that are BS_METH_CALL_CNAG | |
selected_experiments = [] | |
peak_format = "CHROMOSOME,START,END,NAME,SCORE,STRAND,SIGNAL_VALUE,P_VALUE,Q_VALUE" | |
for experiment in experiments: | |
(status, info) = server.info(experiment[0], user_key) # experiment[0] is the ID of the experiment. | |
if info[0]["data_type"] == "signal" and info[0]["extra_metadata"]["FILE_TYPE"] == "BS_METH_CALL_CNAG": | |
selected_experiments.append(experiment) | |
experiment_names = server.extract_names(selected_experiments)[1] | |
# Select the regions of the chromosome 1 | |
(status, query_id) = server.select_regions(experiment_names, None, None, None, None, None, "chr1", None, None, user_key ) | |
# Count how many regions where selected | |
(status, request_id) = server.count_regions(query_id, user_key) | |
# You can see yours requests using list_requests: | |
server.list_requests("", user_key) | |
# Or obtain information about a specific request with the 'info' | |
server.info(request_id, user_key) | |
# Wait for the server processing | |
(status, info) = server.info(request_id, user_key) | |
request_status = info[0]["state"] | |
while request_status != "done" and request_status != "failed": | |
time.sleep(1) | |
(status, info) = server.info(request_id, user_key) | |
request_status = info[0]["state"] | |
(status, count) = server.get_request_data(request_id, user_key) | |
print "We selected", count, "regions" | |
# | |
# Now, we will use te command score_matrix to obtain the regions aggregation scores. | |
# | |
# We will perform the aggregation using the CpG Islands regions | |
(status, annotation_key) = server.select_annotations("Cpg Islands", "GRCh38", None, None, None, user_key) | |
# The aggregation will be made on the columns named VALUE. | |
experiments_columns = {} | |
for experiment_name in experiment_names: | |
experiments_columns[experiment_name] = "VALUE" | |
# The score_matrix has the following parameters experiments_and_columns, aggregation_function, regions_query_id, user_key | |
(status, request_id) = server.score_matrix(experiments_columns, "mean", annotation_key , user_key ) | |
# Wait for the server processing | |
(status, info) = server.info(request_id, user_key) | |
request_status = info[0]["state"] | |
while request_status != "done" and request_status != "failed": | |
time.sleep(1) | |
(status, info) = server.info(request_id, user_key) | |
request_status = info[0]["state"] | |
# Obtain the score matrix data and print it | |
(status, data) = server.get_request_data(request_id, user_key) | |
print data |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment