Ejemplo n.º 1
0
  private void loadGroup(DomainFile domainFile, String gene, DomainAcc acc, Polypeptide polypeptide)
      throws IOException {
    logger.debug("In loadGroup()");
    DbXRef interProDbxref = null;
    if (acc != DomainAcc.NULL && analysis.getProgram().equals("iprscan")) {
      logger.debug(
          String.format(
              "Creating InterPro dbxref for '%s' with description '%s'",
              acc.getId(), acc.getDescription()));
      interProDbxref = objectManager.getDbXRef("InterPro", acc.getId(), acc.getDescription());
    }

    int n = -1;
    for (DomainRow row : domainFile.rows(gene, acc)) {
      n++;
      logger.debug(row);

      // Insert polypeptide_domain
      DbXRef dbxref = objectManager.getDbXRef(row.db(), row.nativeAcc(), row.nativeDesc());
      if (dbxref == null) {
        throw new RuntimeException(
            String.format("Could not find database '%s' on line %d", row.db(), row.lineNumber()));
      }

      String domainUniqueName;
      String accessionNumber = acc.getId();
      if (accessionNumber == null) {
        accessionNumber = row.nativeAcc();
      }
      if (n == 0) {
        domainUniqueName =
            String.format("%s:%s:%s", polypeptide.getUniqueName(), row.db(), accessionNumber);
      } else {
        domainUniqueName =
            String.format("%s:%s:%s:%d", polypeptide.getUniqueName(), row.db(), accessionNumber, n);
      }

      PolypeptideDomain polypeptideDomain =
          sequenceDao.createPolypeptideDomain(
              domainUniqueName,
              polypeptide,
              row.score(),
              row.acc().getDescription(),
              row.fmin(),
              row.fmax(),
              dbxref,
              row.evalue(),
              analysis);

      // add GO terms
      addGoTerms(row.getGoTerms(), polypeptide, polypeptideDomain, row.getGoTermComment());

      // link to InterPro dbxref if applicable
      if (interProDbxref != null && analysis.getProgram().equals("iprscan")) {
        FeatureDbXRef featureDbXRef = new FeatureDbXRef(interProDbxref, polypeptideDomain, true);
        sequenceDao.persist(featureDbXRef);
        polypeptideDomain.addFeatureDbXRef(featureDbXRef);
      }
    }
  }