Example #1
0
  /**
   * Cross-match positionnel (effectué en local)
   *
   * @param p1
   * @param p2
   * @param seuils
   * @param method
   * @param aladin
   */
  public void posXMatch(
      Plan p1,
      Plan p2,
      String label,
      int[] coordTab1,
      int[] coordTab2,
      double[] seuils,
      int method,
      Aladin aladin,
      boolean fromScript) {

    double begin = System.currentTimeMillis();

    if (coordTab1 == null) {
      coordTab1 = findCoord(p1);
      if (coordTab1 == null) {
        Aladin.warning(Aladin.chaine.getString("NOCOOR") + " " + p1.label);
        return;
      }
    }
    if (coordTab2 == null) {
      coordTab2 = findCoord(p2);
      if (coordTab2 == null) {
        Aladin.warning(Aladin.chaine.getString("NOCOOR") + " " + p2.label);
        return;
      }
    }

    // création dès le début du calcul du plan résultat
    PlanCatalog pc = initPlaneCreation(p1, label);

    double[][] array1 = new double[p1.getCounts()][2];
    boolean[] ignoreFlag1 = new boolean[p1.getCounts()];
    fillXMatchArray(p1.pcat, array1, coordTab1, ignoreFlag1);

    double[][] array2 = new double[p2.getCounts()][2];
    boolean[] ignoreFlag2 = new boolean[p2.getCounts()];
    fillXMatchArray(p2.pcat, array2, coordTab2, ignoreFlag2);

    if (!fromScript)
      aladin.console.printCommand(
          "xmatch " + Tok.quote(p1.label) + " " + Tok.quote(p2.label) + " " + seuils[1]);
    double beginXmatch = System.currentTimeMillis();
    Aladin.trace(3, "Total time for extracting coordinates : " + (beginXmatch - begin));
    // TODO : ajouter la possibilité d'interrompre un xmatch en cours en effaçant le plan résultat
    XMatchResult[] result =
        LocalXMatch.xMatch(array1, array2, ignoreFlag1, ignoreFlag2, seuils, method);
    double end = System.currentTimeMillis();
    Aladin.trace(3, "Total time for xmatch : " + (end - beginXmatch));
    fillResultPlane(pc, result, p1, p2, coordTab1, array1, POSXMATCH);
    Aladin.trace(3, "Total time for creation of the plane : " + (System.currentTimeMillis() - end));

    // log
    aladin.log("xmatch", "positional");
  }
Example #2
0
  /**
   * Merge rows on a given field
   *
   * @param p1
   * @param p2
   * @param index1 column index in p1
   * @param index2 column index in p2
   * @param aladin reference to Aladin
   */
  public void xID(Plan p1, Plan p2, String label, int index1, int index2, Aladin aladin) {
    double begin = System.currentTimeMillis();

    // création dès le début du calcul du plan résultat
    PlanCatalog pc = initPlaneCreation(p1, label);

    String[] array1 = new String[p1.getCounts()];
    fillXIDArray(p1.pcat, array1, index1);

    String[] array2 = new String[p2.getCounts()];
    fillXIDArray(p2.pcat, array2, index2);

    double beginXmatch = System.currentTimeMillis();
    Aladin.trace(3, "Total time for extracting fields : " + (beginXmatch - begin));
    XMatchResult[] result = LocalXMatch.xID(array1, array2);
    double end = System.currentTimeMillis();
    Aladin.trace(3, "Total time for xid : " + (end - beginXmatch));
    fillResultPlane(pc, result, p1, p2, null, null, JOIN);

    // log
    aladin.log("xmatch", "xid");
  }
Example #3
0
  /**
   * Cross-match positionnel avec ellipses
   *
   * @param p1
   * @param p2
   * @param seuils
   * @param method
   * @param aladin
   */
  public void posXMatchEllipses(
      Plan p1,
      Plan p2,
      String label,
      int[] coordTab1,
      int[] coordTab2,
      int[] paramEllipses1,
      int[] paramEllipses2,
      double nbSigmaMin,
      double nbSigmaMax,
      int method,
      Aladin aladin) {

    double begin = System.currentTimeMillis();

    if (coordTab1 == null) {
      coordTab1 = findCoord(p1);
      if (coordTab1 == null) {
        Aladin.warning("Coordinates columns not found for plane " + p1.label);
        return;
      }
    }
    if (coordTab2 == null) {
      coordTab2 = findCoord(p2);
      if (coordTab2 == null) {
        Aladin.warning("Coordinates columns not found for plane " + p2.label);
        return;
      }
    }

    // création dès le début du calcul du plan résultat
    PlanCatalog pc = initPlaneCreation(p1, label);

    double[][] array1 = new double[p1.getCounts()][2];
    boolean[] ignoreFlag1 = new boolean[p1.getCounts()];
    fillXMatchArray(p1.pcat, array1, coordTab1, ignoreFlag1);

    double[][] array2 = new double[p2.getCounts()][2];
    boolean[] ignoreFlag2 = new boolean[p2.getCounts()];
    fillXMatchArray(p2.pcat, array2, coordTab2, ignoreFlag2);

    double[] maj1 = new double[p1.getCounts()];
    double[] min1 = new double[p1.getCounts()];
    double[] pa1 = new double[p1.getCounts()];

    fillEllipsesParamArray(p1.pcat, maj1, min1, pa1, paramEllipses1, ignoreFlag1);

    double[] maj2 = new double[p2.getCounts()];
    double[] min2 = new double[p2.getCounts()];
    double[] pa2 = new double[p2.getCounts()];

    fillEllipsesParamArray(p2.pcat, maj2, min2, pa2, paramEllipses2, ignoreFlag2);

    // TODO : faire la commande script correspondante !!
    //        if( !fromScript ) aladin.pad.setCmd("xmatch "+Tok.quote(p1.label)+"
    // "+Tok.quote(p2.label)+" "+seuils[1]);
    double beginXmatch = System.currentTimeMillis();
    Aladin.trace(3, "Total time for extracting coordinates : " + (beginXmatch - begin));
    // TODO : faut il permettre de passer le minimum pour nbSigma ?
    XMatchResult[] result =
        LocalXMatch.xMatchEllipse(
            array1,
            array2,
            maj1,
            min1,
            pa1,
            maj2,
            min2,
            pa2,
            ignoreFlag1,
            ignoreFlag2,
            new double[] {nbSigmaMin, nbSigmaMax},
            method);
    double end = System.currentTimeMillis();
    Aladin.trace(3, "Total time for ellipses xmatch : " + (end - beginXmatch));
    fillResultPlane(pc, result, p1, p2, coordTab1, array1, POSXMATCH_ELLIPSES);

    // log
    aladin.log("xmatch", "ellipses");
  }