Skip to content

Instantly share code, notes, and snippets.

@lpenguin
Created December 13, 2015 16:19
Show Gist options
  • Save lpenguin/c337982a81452da827b9 to your computer and use it in GitHub Desktop.
Save lpenguin/c337982a81452da827b9 to your computer and use it in GitHub Desktop.
agil2ch
from preproc.pipeline import Pipeline
from preproc.pipeline.heplers import extract_supplementary_files, match_samples_in_dir
from ...task import TaskDescription
from os.path import join, basename
from rpy2.robjects import packages as rpackages
import numpy as np
import pandas as pd
import re
from glob import glob
class Agilent2ChPipeline(Pipeline):
def run(self, task_description: TaskDescription, in_dir: str, out_dir: str):
suppl_files = [join(in_dir, basename(f)) for f in task_description.supplementary_files]
extract_supplementary_files(suppl_files, in_dir)
matched_samples = match_samples_in_dir_ch2(in_dir, [".txt.gz"], task_description.samples)
# [(file_name, accession), (file_name, accession)]
for file_name, accession in matched_samples:
data = process(file_name)
series_to_csv_compressed(data['channel1'], out_file)
series_to_csv_compressed(data['channel2'], out_file)
sample_names = glob(join(in_dir, '*.txt.gz'))
scan_upc = rpackages.importr('SCAN.UPC')
biobase = rpackages.importr('Biobase')
for sample_name in sample_names:
res = scan_upc.SCAN_TwoColor(sample_name)
exprs = pd.DataFrame(data=np.log2(np.array(biobase.exprs(res))), columns=['channel1', 'channel2'])
cleaned_sample_name = re.sub(r'(GSM\d+).*', '\1', sample_name)
exprs['channel1'].to_csv(join(out_dir, cleaned_sample_name+'_1'), header=None)
exprs['channel2'].to_csv(join(out_dir, cleaned_sample_name+'_2'), header=None)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment