Skip to content

Commit

Permalink
outfactored bcmembers workflow
Browse files Browse the repository at this point in the history
  * bcmembers.py
  * fixed reference to background_df()
  • Loading branch information
weiju committed Aug 30, 2024
1 parent 0a595ad commit c4260d5
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 38 deletions.
37 changes: 2 additions & 35 deletions bin/miner3-bcmembers
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import matplotlib
matplotlib.use('Agg')
from miner import miner, util
from miner import GIT_SHA, __version__ as pkg_version
from miner import bcmembers


DESCRIPTION = """miner3-bcmembers - MINER compute bicluster membership inference.
Expand Down Expand Up @@ -45,39 +46,5 @@ if __name__ == '__main__':

with open(args.regulons) as infile:
regulon_modules = json.load(infile)
bcmembers.bcmembers(exp_data, regulon_modules, args.outdir)

bkgd = miner.backgroundDf(exp_data)
overexpressed_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label=2, p=0.05)
underexpressed_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label=0, p=0.05)
dysregulated_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label="excluded")
coherent_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label="included")

# write the overexpressed/underexpressed members as JSON, tools later in the pipeline can
# easier access them
with open(os.path.join(args.outdir, 'overExpressedMembers.json'), 'w') as out:
json.dump(overexpressed_members, out)
with open(os.path.join(args.outdir, 'underExpressedMembers.json'), 'w') as out:
json.dump(underexpressed_members, out)

overexpressed_members_matrix = miner.membershipToIncidence(overexpressed_members,
exp_data)
overexpressed_members_matrix.to_csv(os.path.join(args.outdir,
"overExpressedMembers.csv"))

underexpressed_members_matrix = miner.membershipToIncidence(underexpressed_members,
exp_data)
underexpressed_members_matrix.to_csv(os.path.join(args.outdir,
"underExpressedMembers.csv"))

dysregulated_members_matrix = miner.membershipToIncidence(dysregulated_members,
exp_data)
dysregulated_members_matrix.to_csv(os.path.join(args.outdir, "dysregulatedMembers.csv"))

coherent_members_matrix = miner.membershipToIncidence(coherent_members,
exp_data)
coherent_members_matrix.to_csv(os.path.join(args.outdir,
"coherentMembers.csv"))
42 changes: 42 additions & 0 deletions miner/bcmembers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""bcmembers.py - Module to compute bicluster memberships"""

import os
import json
from miner import miner

def bcmembers(exp_data, regulon_modules, outdir):
bkgd = miner.background_df(exp_data)
overexpressed_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label=2, p=0.05)
underexpressed_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label=0, p=0.05)
dysregulated_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label="excluded")
coherent_members = miner.biclusterMembershipDictionary(regulon_modules,
bkgd, label="included")

# write the overexpressed/underexpressed members as JSON, tools later in the pipeline can
# easier access them
with open(os.path.join(outdir, 'overExpressedMembers.json'), 'w') as out:
json.dump(overexpressed_members, out)
with open(os.path.join(outdir, 'underExpressedMembers.json'), 'w') as out:
json.dump(underexpressed_members, out)

overexpressed_members_matrix = miner.membershipToIncidence(overexpressed_members,
exp_data)
overexpressed_members_matrix.to_csv(os.path.join(outdir,
"overExpressedMembers.csv"))

underexpressed_members_matrix = miner.membershipToIncidence(underexpressed_members,
exp_data)
underexpressed_members_matrix.to_csv(os.path.join(outdir,
"underExpressedMembers.csv"))

dysregulated_members_matrix = miner.membershipToIncidence(dysregulated_members,
exp_data)
dysregulated_members_matrix.to_csv(os.path.join(outdir, "dysregulatedMembers.csv"))

coherent_members_matrix = miner.membershipToIncidence(coherent_members,
exp_data)
coherent_members_matrix.to_csv(os.path.join(outdir,
"coherentMembers.csv"))
3 changes: 0 additions & 3 deletions miner/miner.py
Original file line number Diff line number Diff line change
Expand Up @@ -1142,7 +1142,6 @@ def biclusterMembershipDictionary(revisedClusters,background,label=2,p=0.05):
members[key] = []
continue
members[key] = list(background.columns[nonMembers])
print("done!")
return members

if label == "included":
Expand All @@ -1158,7 +1157,6 @@ def biclusterMembershipDictionary(revisedClusters,background,label=2,p=0.05):
members[key] = []
continue
members[key] = list(background.columns[included])
print("done!")
return members

members = {}
Expand All @@ -1174,7 +1172,6 @@ def biclusterMembershipDictionary(revisedClusters,background,label=2,p=0.05):
members[key] = []
continue
members[key] = list(background.columns[overExpMembers])
print("done!")
return members

def membershipToIncidence(membershipDictionary,expressionData):
Expand Down

0 comments on commit c4260d5

Please sign in to comment.