edu.harvard.med.iccbl.screensaver.reports.icbg.AssayInfoProducer.java Source code

Java tutorial

Introduction

Here is the source code for edu.harvard.med.iccbl.screensaver.reports.icbg.AssayInfoProducer.java

Source

// $HeadURL$
// $Id$
//
// Copyright  2006, 2010, 2011, 2012 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.

package edu.harvard.med.iccbl.screensaver.reports.icbg;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Map;

import org.apache.log4j.Logger;
import org.joda.time.LocalDate;

import com.google.common.collect.Maps;

import edu.harvard.med.screensaver.io.workbook2.Row;
import edu.harvard.med.screensaver.io.workbook2.Workbook;
import edu.harvard.med.screensaver.model.screens.Screen;
import edu.harvard.med.screensaver.model.screens.StatusItem;
import edu.harvard.med.screensaver.util.StringUtils;

/**
 * @author <a mailto="john_sullivan@hms.harvard.edu">John Sullivan</a>
 */
public class AssayInfoProducer {
    private static Logger log = Logger.getLogger(AssayInfoProducer.class);
    private String _categoryFilename;
    private Map<String, String> assayCategories;

    public AssayInfoProducer(String filename) throws FileNotFoundException {
        if (!StringUtils.isEmpty(filename))
            _categoryFilename = filename;

        if (_categoryFilename != null) {
            assayCategories = Maps.newHashMap();
            Workbook book = new Workbook(new File(_categoryFilename));
            for (Row row : book.getWorksheet(0)) {
                String temp = row.getCell(0).getString();
                temp = temp.replace("ICCBL", "");
                assayCategories.put(temp, row.getCell(1).getString());

            }
        }
    }

    public AssayInfo getAssayInfoForScreen(Screen screen) throws FileNotFoundException {
        AssayInfo assayInfo = new AssayInfo();
        assayInfo.setAssayName("ICCBL" + screen.getFacilityId());
        assayInfo.setProtocolDescription(screen.getTitle());
        assayInfo.setPNote(screen.getSummary());
        assayInfo.setInvestigator(
                screen.getLabHead() == null ? "" : screen.getLabHead().getLastName().toUpperCase());

        String assayCategoryText = "";
        for (String keyword : screen.getKeywords()) {
            assayCategoryText += keyword.toUpperCase() + " ";
        }
        if (assayCategories != null) {
            assayInfo.setAssayCategory(assayCategories.get(screen.getFacilityId()));
        } else {
            assayCategoryText += screen.getSummary().toUpperCase();
            setAssayCategory(assayInfo, assayCategoryText);
        }
        LocalDate assayDate = screen.getDateCreated().toLocalDate();
        for (StatusItem statusItem : screen.getStatusItems()) {
            LocalDate statusItemDate = statusItem.getStatusDate();
            if (assayDate == null || assayDate.compareTo(statusItemDate) < 0) {
                assayDate = statusItemDate;
            }
        }

        assayInfo.setAssayDate(
                assayDate.getMonthOfYear() + "/" + assayDate.getDayOfMonth() + "/" + (assayDate.getYear()));
        assert assayDate.getYear() >= 1900 : "year should include century";

        return assayInfo;
    }

    private void setAssayCategory(AssayInfo assayInfo, String assayCategoryText) {
        // TODO: the just HAS to be a better way to do this. July!

        // NOTE: assayCategory is a CHAR(30) in NAPIS. some existing values are getting truncated in the
        // ICBG report.
        if (assayCategoryText.contains("MALARIA")) {
            assayInfo.setAssayCategory("ANTI-MALARIA");
        } else if (assayCategoryText.contains("DIABETES") || assayCategoryText.contains("OBESITY")) {
            assayInfo.setAssayCategory("OBESITY_DIABETES");
        } else if (assayCategoryText.contains("TRYPANOSOMIASIS")) {
            assayInfo.setAssayCategory("TRYPANOSOMIASIS");
        } else if (assayCategoryText.contains("LEISHMANIASIS")) {
            assayInfo.setAssayCategory("LEISHMANIASIS");
        } else if (assayCategoryText.contains("INFLAM")) {
            assayInfo.setAssayCategory("INFLAMMATION");
        } else if (assayCategoryText.contains("APOPTOSIS") || assayCategoryText.contains("CYTOTOXIC")
                || assayCategoryText.contains("CELL DEATH")) {
            assayInfo.setAssayCategory("CYTOTOXICITY");
        } else if (assayCategoryText.contains("CONTRACEPTION")) {
            assayInfo.setAssayCategory("CONTRACEPTION");
        } else if (assayCategoryText.contains("CHAGAS")) {
            assayInfo.setAssayCategory("CHAGAS_DISEASE");
        } else if (assayCategoryText.contains("CARDIOVASC")) {
            assayInfo.setAssayCategory("CARDIOVASCULAR");
        } else if (assayCategoryText.contains("CANCER") || assayCategoryText.contains("FANCONI ANEMIA/BRCA PATHWAY")
                || assayCategoryText.contains("E6-DEPENDENT DEGRADATION OF P53")
                || assayCategoryText.contains("NEUROBLASTOMA") || assayCategoryText.contains("FANCD2")
                || assayCategoryText.contains("WNT PATHWAY")) {
            assayInfo.setAssayCategory("ANTI-CANCER");
        } else if (assayCategoryText.contains("TUBERCULOSIS")) {
            assayInfo.setAssayCategory("ANTI-TUBERCULOSIS");
        } else if (assayCategoryText.contains("FUNG")) {
            assayInfo.setAssayCategory("ANTI-FUNGAL");
        } else if (assayCategoryText.contains("ANTHRAX") || assayCategoryText.contains("BOTULINUM")
                || assayCategoryText.contains("TULARENSIS") || assayCategoryText.contains("TULARENSIS")
                || assayCategoryText.contains("CHOLER") || assayCategoryText.contains("AERUGINOSA")
                || assayCategoryText.contains("YERSINIA PESTIS") || assayCategoryText.contains("AMINOARABINOSE")
                || assayCategoryText.contains("LEGIONELLA") || assayCategoryText.contains("SALMONELLA")
                || assayCategoryText.contains("A SCREEN FOR COMPOUNDS THAT INHIBIT GROWTH OF E. COLI")
                || assayCategoryText.contains("BACTERI")) {
            assayInfo.setAssayCategory("ANTI-BACTERIAL");
        } else if (assayCategoryText.contains("ANTIVIRAL") || assayCategoryText.contains("INFLUENZA")
                || assayCategoryText.contains("VACCINIA") || assayCategoryText.contains("WEST NILE")
                || assayCategoryText.contains("VIRUS")) {
            assayInfo.setAssayCategory("ANTI-VIRAL_NO_HIV");
        } else if (assayCategoryText.contains("AIDS") || assayCategoryText.contains("HIV")) {
            assayInfo.setAssayCategory("ANTI-HIV_AIDS");
        } else if (assayCategoryText.contains("INHIBIT THE ATPASE ACTIVITY")) {
            assayInfo.setAssayCategory("OTHER: INHIBIT ATPASE ACTIVITY");
        } else if (assayCategoryText.contains("INHIBIT THE RANGTPASE SYSTEM")) {
            assayInfo.setAssayCategory("OTHER: INHIBIT RANGTPASE SYSTEM");
        } else if (assayCategoryText.contains("CRYPTOSPORIDIUM PARVUM")) {
            assayInfo.setAssayCategory("OTHER: ANTI-PROTOZOA");
        } else if (assayCategoryText.contains("INHIBIT TNF-ALPHA-MEDIATED NECROSIS IN JURKAT CELLS")) {
            assayInfo.setAssayCategory("OTHER: NEURODEGENERATIVE DISEASE");
        } else if (assayCategoryText.contains("SHWACHMAN DIAMOND SYNDROME")) {
            assayInfo.setAssayCategory("OTHER: SHWACHMAN DIAMOND SYNDROME");
        } else if (assayCategoryText.contains("DOWN SYNDROME")) {
            assayInfo.setAssayCategory("OTHER: DOWN SYNDROME");
        } else if (assayCategoryText.contains("MULLERIAN INHIBITING SUBSTANCE")) {
            assayInfo.setAssayCategory("OTHER: HUMAN INFERTILITY");
        } else if (assayCategoryText.contains("ADULT ONSET DEAFNESS SYNDROME")) {
            assayInfo.setAssayCategory("OTHER: ADULT ONSET DEAFNESS");
        } else if (assayCategoryText.contains("S. CEREVISIAE")) {
            assayInfo.setAssayCategory("OTHER: S. CEREVISIAE");
        } else if (assayCategoryText.contains("SUPPRESS S6 PHOSPHORYLATION")
                || assayCategoryText.contains("LUCIFERASE")) {
            assayInfo.setAssayCategory("OTHER: BIOLUMINESCENCE");
        } else if (assayCategoryText.contains("BINUCLEATE CELLS IN DROSOPHILA CELLS")) {
            assayInfo.setAssayCategory("OTHER: CELL DIVISION");
        } else if (assayCategoryText.contains("MITOCHONDRIAL PROLIFERATION")) {
            assayInfo.setAssayCategory("OTHER: MITOCHONDRIAL PROLIFERATION");
        } else if (assayCategoryText.contains("INHIBIT DNA REPLICATION")) {
            assayInfo.setAssayCategory("OTHER: INHIBIT DNA REPLICATION");
        } else if (assayCategoryText.contains("EMBRYONIC STEM (ES) CELL")) {
            assayInfo.setAssayCategory("OTHER: EMBRYONIC STEM CELLS");
        } else if (assayCategoryText.contains("IRON UPTAKE")) {
            assayInfo.setAssayCategory("OTHER: ANEMIA");
        } else if (assayCategoryText.contains("LILY POLLEN TUBES")) {
            assayInfo.setAssayCategory("OTHER: LILY POLLEN TUBES");
        } else if (assayCategoryText.contains("SIRT1")) {
            assayInfo.setAssayCategory("OTHER: ANTI-AGING");
        } else {
            log.info("assigning assay category OTHER for assay category text: " + assayCategoryText);
            assayInfo.setAssayCategory("OTHER");
        }
    }
}