std::size_t
CorrelationTimeArcGrbcat::generateCF(Catalog& catalog,
                                     std::vector< std::vector<std::size_t> > hist)
{
  std::size_t pairs = 0;
  GreatCircleDistance distance(_formula);
  std::vector<CatalogEntry*> entries;

  filterEntries(catalog, entries);

  const std::size_t points = entries.size();
  const std::size_t pairsAll = points * (points -1) / 2;
  const std::size_t mod = std::pow(10.0, std::floor(std::log10(pairsAll)) - 4);

  std::printf("ENTRIES = %ld, PAIRS = %ld\n", points, pairsAll);

  std::size_t k = 0;
  for (std::size_t i = 0; i < points - 1; ++i)
  {
    CatalogEntryGrbcat* iEntry = static_cast<CatalogEntryGrbcat*>(entries[i]);
    for (std::size_t j = i + 1; j < points; ++j)
    {
      CatalogEntryGrbcat* jEntry = static_cast<CatalogEntryGrbcat*>(entries[j]);
      type::Float time = std::fabs(jEntry->getCoodinates().getTimeMJD() -
                                   iEntry->getCoodinates().getTimeMJD());
      type::Float dist = distance(jEntry->getCoodinates(), iEntry->getCoodinates());

      std::size_t xIdx = std::floor(time * getXDelta());
      std::size_t yIdx = std::floor(dist * getYDelta());

      if (xIdx < getXPoints() && yIdx < getYPoints())
      {
        ++hist[yIdx][xIdx];
        ++pairs;
      }

      if (++k % mod == 0)
      {
        std::printf("\rProgress %3.2f%% %ld/%ld - pairs = %ld" ,
                    100.0 * k / pairsAll, k, pairsAll, pairs);
      }
    }
  }
  std::printf("\rProgress %3.2f%% %ld/%ld - pairs = %ld\n" ,
              100.0 * k / pairsAll, k, pairsAll, pairs);

  return pairs;
}
Ejemplo n.º 2
0
QAbstractFileEngine::Iterator*
SFtpFileEngine::beginEntryList(QDir::Filters filters,
                              const QStringList &filterNames)
{
    qDebug() << "beginEntryList() : " << _fileName << _fileFlags;

    QString cachePath(getCachePath(_path, true));
    FtpFileInfoCache::QUrlInfoList list =
            _fileInfoCache->findDirInfo(cachePath);

    if (list.size() == 0
            && (_fileFlags & QAbstractFileEngine::DirectoryType)
            && sftpConnect())
    {
        readDir(_path);

        sftpDisconnect();
    }

    QMap<QString, QUrlInfo> entriesMap;

    list = _fileInfoCache->findDirInfo(cachePath);
    if (list.size() > 0)
    {
        FtpFileInfoCache::QUrlInfoListIterator it(list);
        while (it.hasNext())
        {
            QUrlInfo urlInfo = it.next();

            // exclude an empty entry inserted by us and a non-existent entry
            if (urlInfo.isValid() && urlInfo.permissions())
                entriesMap.insert(urlInfo.name(), urlInfo);
        }
    }

    return new FtpFileEngineIterator(filters, filterNames,
                                     filterEntries(filters, filterNames,
                                                   entriesMap));
}