Exemplo n.º 1
0
#   ____________________________________________________________________________
#   Load data                                                               ####
expression = task["expression"]
parameters = task["parameters"]

#   ____________________________________________________________________________
#   Infer trajectory                                                        ####
m = matcher.MATCHER([expression.values])
m.infer(quantiles=parameters["quantiles"], method=parameters["method"])

checkpoints["method_aftermethod"] = time.time()

#   ____________________________________________________________________________
#   Save output                                                             ####
dataset = dynclipy.wrap_data(cell_ids=expression.index)

# pseudotime
pseudotime = pd.DataFrame({
    "cell_id": expression.index,
    "pseudotime": m.master_time[0][:, 0]
})

dataset.add_linear_trajectory(pseudotime=pseudotime)

# timings
dataset.add_timings(checkpoints)

# save
dataset.write_output(task["output"])
Exemplo n.º 2
0
# infer pseudotime
m.infer_pseudotime(s_columns=[
    "bgplvm_" + str(i) for i in range(p["ndim"])
])  # use the first two components to infer pseudotime

# model different fates
m.model_fates(C=end_n)

checkpoints["method_aftermethod"] = time.time()

#   ____________________________________________________________________________
#   Process and save output                                                 ####
# pseudotime
pseudotime = m.s.pseudotime.reset_index()
pseudotime.columns = ["cell_id", "pseudotime"]

# dimred
dimred = pd.DataFrame(m.dr_models["bgplvm"].X.mean[:, :].tolist())
dimred["cell_id"] = m.s.pseudotime.index.tolist()

# progressions
end_state_probabilities = pd.DataFrame(m.fate_model.phi)
end_state_probabilities["cell_id"] = m.s.pseudotime.index.tolist()

# save
dataset = dynclipy.wrap_data(cell_ids=m.s.pseudotime.index)
dataset.add_end_state_probabilities(
    end_state_probabilities=end_state_probabilities, pseudotime=pseudotime)
dataset.add_timings(timings=checkpoints)
dataset.write_output(task["output"])
Exemplo n.º 3
0
branches["directed"] = True
output["branches"] = branches

# branch network: determine order of from and to based on difference in average pseudotime
branch_network = milestone_network[["from", "to"]]
average_pseudotime = adata.obs.groupby("louvain")["dpt_pseudotime"].mean()
for i, (branch_from, branch_to) in enumerate(
        zip(branch_network["from"], branch_network["to"])):
    if average_pseudotime[branch_from] > average_pseudotime[branch_to]:
        branch_network.at[i, "to"] = branch_from
        branch_network.at[i, "from"] = branch_to

output["branch_network"] = branch_network

# timings
timings = pd.Series(checkpoints)
timings.index.name = "name"
timings.name = "timings"
output["timings"] = timings

# save
dataset = dynclipy.wrap_data(cell_ids=counts.index)
dataset.add_branch_trajectory(
    grouping=output["grouping"],
    milestone_network=output["milestone_network"],
    branch_progressions=output["branch_progressions"],
    branches=output["branches"],
    branch_network=output["branch_network"])
dataset.add_dimred(dimred=output["dimred"])
dataset.write_output(task["output"])
Exemplo n.º 4
0
import dynclipy
import pandas as pd

cell_ids = pd.Series(["a", "b", "c"])
dataset = dynclipy.wrap_data(cell_ids = cell_ids)
dataset.add_linear_trajectory(pseudotime = pd.Series({"a":1, "b":0.8, "c":0.1}))
dataset.add_dimred(pd.DataFrame({"cell_id":cell_ids, "comp_1":[0, 0, 4], "comp_2":[1,1, 4]}))
dataset.write_output("test.h5")
Exemplo n.º 5
0
###        INFER TRAJECTORY       ###
#####################################
# do PCA
pca = sklearn.decomposition.PCA()
dimred = pca.fit_transform(expression.values)

# extract the component and use it as pseudotimes
pseudotime = dimred[:, params["component"]]
pseudotime = (pseudotime - pseudotime.min()) / (pseudotime.max() - pseudotime.min())

# flip pseudotimes using start_id
if start_id is not None:
  if pseudotime[start_id].mean():
    pseudotime = 1 - pseudotime

checkpoints["method_aftermethod"] = time.time()


#####################################
###     SAVE OUTPUT TRAJECTORY    ###
#####################################
output = dynclipy.wrap_data(cell_ids = cell_ids)
output.add_linear_trajectory(pseudotime = pd.Series(pseudotime, index = expression.index), do_scale_minmax = False)
dimred = pd.DataFrame(dimred)
dimred["cell_id"] = expression.index
output.add_dimred(dimred)
output.add_timings(checkpoints)

# save
output.write_output(task["output"])
Exemplo n.º 6
0
branch_progressions = branch_progressions[["cell_id", "branch_id", "percentage"]]

# branches:
# - length = difference between max and min dpt_pseudotime within every cluster
# - directed = not yet correctly inferred
branches = adata.obs.groupby("louvain").apply(lambda x: x["dpt_pseudotime"].max() - x["dpt_pseudotime"].min()).reset_index()
branches.columns = ["branch_id", "length"]
branches["branch_id"] = branches["branch_id"].astype(np.str)
branches["directed"] = True

# branch network: determine order of from and to based on difference in average pseudotime
branch_network = milestone_network[["from", "to"]]
average_pseudotime = adata.obs.groupby("louvain")["dpt_pseudotime"].mean()
for i, (branch_from, branch_to) in enumerate(zip(branch_network["from"], branch_network["to"])):
  if average_pseudotime[branch_from] > average_pseudotime[branch_to]:
    branch_network.at[i, "to"] = branch_from
    branch_network.at[i, "from"] = branch_to

# save
dataset = dynclipy.wrap_data(cell_ids = adata.obs.index)
dataset.add_branch_trajectory(
  grouping = grouping,
  branch_progressions = branch_progressions,
  branches = branches,
  branch_network = branch_network
)
dataset.add_dimred(dimred = dimred)
dataset.add_timings(checkpoints)

dataset.write_output(task["output"])
Exemplo n.º 7
0
#!/usr/bin/env python

import dynclipy
dataset = dynclipy.main()

import pandas as pd
import sklearn.decomposition

# infer trajectory
pca = sklearn.decomposition.PCA()
dimred = pca.fit_transform(dataset['expression'])
pseudotime = pd.Series(dimred[:, dataset['parameters']['component'] - 1],
                       index=dataset['expression'].index)

# build trajectory
trajectory = dynclipy.wrap_data(cell_ids=dataset['expression'].index)
trajectory.add_linear_trajectory(pseudotime=pseudotime)

# save output
trajectory.write_output(dataset['output'])
Exemplo n.º 8
0
# check waypoints parameter to be lower than # cells
if p["num_waypoints"] > scdata.data.shape[0]:
  p["num_waypoints"] = scdata.data.shape[0]

# run wishbone
wb = wishbone.wb.Wishbone(scdata)
wb.run_wishbone(start_cell=start_cell, components_list=list(range(p["n_diffusion_components"])), num_waypoints=int(p["num_waypoints"]), branch=False, k=p["k"])

checkpoints["method_aftermethod"] = time.time()

#   ____________________________________________________________________________
#   Process output & save                                                   ####
# pseudotime
pseudotime = wb.trajectory.reset_index()
pseudotime.columns = ["cell_id", "pseudotime"]

# dimred
dimred = wb.scdata.diffusion_eigenvectors
dimred.index.name = "cell_id"
dimred = dimred.reset_index()

# save
dataset = dynclipy.wrap_data(cell_ids = dimred["cell_id"])
dataset.add_linear_trajectory(
  pseudotime = pseudotime
)
dataset.add_dimred(dimred = dimred)
dataset.add_timings(timings = checkpoints)
dataset.write_output(task["output"])