diff --git a/factory_jones.ipynb b/factory_jones.ipynb index 5c76464..cbdaf35 100644 --- a/factory_jones.ipynb +++ b/factory_jones.ipynb @@ -277,7 +277,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[\u001b[38;2;128;05;128m2025-02-06 13:23:35,077\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Module path: \u001b[38;2;50;50;205m/home/mystletainn/Development/calviper/src/calviper\u001b[0m \n" + "[\u001b[38;2;128;05;128m2025-02-07 11:53:46,623\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Module path: \u001b[38;2;50;50;205m/home/mystletainn/Development/calviper/src/calviper\u001b[0m \n" ] } ], @@ -692,29 +692,29 @@ " MATRIX (time, baseline_id, frequency, p, q) complex64 11MB (1+0j) ...\n", "Attributes:\n", " calibration_type: gain\n", - " observation_info: {'observer': ['lknee'], 'project': 'uid://A002/X1f841f...
  • calibration_type :
    gain
    observation_info :
    {'observer': ['lknee'], 'project': 'uid://A002/X1f841f/X21d', 'release_date': '1858-11-17T00:00:00.000000000'}
  • " ], "text/plain": [ " Size: 14MB\n", @@ -911,47 +911,110 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "7ccb777d-9509-4d19-a2c1-77d53c9564f9", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(957, 9, 8, 2)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "G.PARAMETER.shape" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "d785e421-250d-4f03-9338-e143789889f4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ItemsView(Coordinates:\n", + " * time (time) float64 8kB 1.503e+09 1.503e+09 ... 1.503e+09 1.503e+09\n", + " * antenna (antenna) \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    nameintentsshapepolarizationscan_numberspw_namefield_namesource_nameline_namefield_coordsstart_frequencyend_frequency
    1gaincaltest2_0[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_1#SW-01#FULL_RES_0[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]8.607155e+108.629030e+10
    0gaincaltest2_2[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_2#SW-01#FULL_RES_1[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]8.794655e+108.816530e+10
    3gaincaltest2_4[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_3#SW-01#FULL_RES_2[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]9.632156e+109.654030e+10
    2gaincaltest2_6[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_4#SW-01#FULL_RES_3[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]9.819656e+109.841530e+10
    \n", - "" - ], - "text/plain": [ - " name intents \\\n", - "1 gaincaltest2_0 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "0 gaincaltest2_2 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "3 gaincaltest2_4 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "2 gaincaltest2_6 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "\n", - " shape polarization \\\n", - "1 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "0 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "3 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "2 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "\n", - " scan_number \\\n", - "1 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "0 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "3 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "2 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "\n", - " spw_name field_name \\\n", - "1 X0000000000#ALMA_RB_03#BB_1#SW-01#FULL_RES_0 [J2255-3500_0] \n", - "0 X0000000000#ALMA_RB_03#BB_2#SW-01#FULL_RES_1 [J2255-3500_0] \n", - "3 X0000000000#ALMA_RB_03#BB_3#SW-01#FULL_RES_2 [J2255-3500_0] \n", - "2 X0000000000#ALMA_RB_03#BB_4#SW-01#FULL_RES_3 [J2255-3500_0] \n", - "\n", - " source_name line_name field_coords \\\n", - "1 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "0 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "3 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "2 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "\n", - " start_frequency end_frequency \n", - "1 8.607155e+10 8.629030e+10 \n", - "0 8.794655e+10 8.816530e+10 \n", - "3 9.632156e+10 9.654030e+10 \n", - "2 9.819656e+10 9.841530e+10 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ps = ms.open_processing_set(\"data/gaincaltest2.ps.zarr\")\n", "\n", @@ -199,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "8218ddec-76b6-409c-a25e-28106f411daf", "metadata": {}, "outputs": [], @@ -209,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "ada6b873-cead-44a8-b651-03f797f9bd82", "metadata": {}, "outputs": [], @@ -219,588 +76,20 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "50542267-b907-461a-9478-3493bc1ab4ba", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[\u001b[38;2;128;05;128m2025-02-06 13:33:15,444\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Module path: \u001b[38;2;50;50;205m/home/mystletainn/Development/calviper/src/calviper\u001b[0m \n" - ] - } - ], + "outputs": [], "source": [ "jones = cmatrix.create_jones(\"gain\").empty_like(sps)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "13af4cf2-87a9-42c5-845e-7cc7096bb6db", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.Dataset> Size: 3MB\n",
    -       "Dimensions:       (time: 957, antenna: 9, frequency: 8, polarization: 2,\n",
    -       "                   scan_id: 957, baseline_id: 45)\n",
    -       "Coordinates:\n",
    -       "  * time          (time) float64 8kB 1.503e+09 1.503e+09 ... 1.503e+09 1.503e+09\n",
    -       "  * antenna       (antenna) <U9 324B 'DA41_A110' 'DA42_A123' ... 'DA49_A127'\n",
    -       "  * frequency     (frequency) float64 64B 8.607e+10 8.61e+10 ... 8.629e+10\n",
    -       "  * polarization  (polarization) <U1 8B 'X' 'Y'\n",
    -       "  * scan_id       (scan_id) int64 8kB 2 2 2 2 2 2 2 2 ... 26 26 26 26 26 26 26\n",
    -       "  * baseline_id   (baseline_id) int64 360B 0 1 2 3 4 5 6 ... 39 40 41 42 43 44\n",
    -       "Data variables:\n",
    -       "    PARAMETER     (time, antenna, frequency, polarization) float64 1MB nan .....\n",
    -       "    WEIGHT        (time, antenna, frequency, polarization) float64 1MB 0.0 .....\n",
    -       "    FLAG          (time, antenna, frequency, polarization) float64 1MB 0.0 .....\n",
    -       "Attributes:\n",
    -       "    calibration_type:  gain\n",
    -       "    observation_info:  {'observer': ['lknee'], 'project': 'uid://A002/X1f841f...
    " - ], - "text/plain": [ - " Size: 3MB\n", - "Dimensions: (time: 957, antenna: 9, frequency: 8, polarization: 2,\n", - " scan_id: 957, baseline_id: 45)\n", - "Coordinates:\n", - " * time (time) float64 8kB 1.503e+09 1.503e+09 ... 1.503e+09 1.503e+09\n", - " * antenna (antenna) \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.Dataset> Size: 14MB\n",
    -       "Dimensions:       (time: 957, antenna: 9, frequency: 8, polarization: 2,\n",
    -       "                   scan_id: 957, baseline_id: 45, p: 2, q: 2)\n",
    -       "Coordinates:\n",
    -       "  * time          (time) float64 8kB 1.503e+09 1.503e+09 ... 1.503e+09 1.503e+09\n",
    -       "  * antenna       (antenna) <U9 324B 'DA41_A110' 'DA42_A123' ... 'DA49_A127'\n",
    -       "  * frequency     (frequency) float64 64B 8.607e+10 8.61e+10 ... 8.629e+10\n",
    -       "  * polarization  (polarization) <U1 8B 'X' 'Y'\n",
    -       "  * scan_id       (scan_id) int64 8kB 2 2 2 2 2 2 2 2 ... 26 26 26 26 26 26 26\n",
    -       "  * baseline_id   (baseline_id) int64 360B 0 1 2 3 4 5 6 ... 39 40 41 42 43 44\n",
    -       "Dimensions without coordinates: p, q\n",
    -       "Data variables:\n",
    -       "    PARAMETER     (time, antenna, frequency, polarization) float64 1MB nan .....\n",
    -       "    WEIGHT        (time, antenna, frequency, polarization) float64 1MB 0.0 .....\n",
    -       "    FLAG          (time, antenna, frequency, polarization) float64 1MB 0.0 .....\n",
    -       "    MATRIX        (time, baseline_id, frequency, p, q) complex64 11MB (1+0j) ...\n",
    -       "Attributes:\n",
    -       "    calibration_type:  gain\n",
    -       "    observation_info:  {'observer': ['lknee'], 'project': 'uid://A002/X1f841f...
    " - ], - "text/plain": [ - " Size: 14MB\n", - "Dimensions: (time: 957, antenna: 9, frequency: 8, polarization: 2,\n", - " scan_id: 957, baseline_id: 45, p: 2, q: 2)\n", - "Coordinates:\n", - " * time (time) float64 8kB 1.503e+09 1.503e+09 ... 1.503e+09 1.503e+09\n", - " * antenna (antenna) )" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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QikpKSorKwvgZN3D7t27FR0dreHDh+vhhx/WsWPHAj1SUPn2W+YdDockqaKiQq2trV6P9xEjRmjgwIE83n3ou+f9W2vXrlX//v01atQoFRQU6NSprvcN4V3i24zxw6WkpGjNmjUaPny46urqVFhYqFtvvVWffPKJwsLCAj1et1BfXy9J7f5ackxMjGcb/CM9PV1Tp05VQkKCampq9Otf/1oZGRkqKytTjx49Aj1el9fW1qZ58+bp5ptv1qhRoyR983gPDQ1t971pPN59p6PzLkl333234uPj5XK5tH//fs2fP19VVVXauHFjAKftPAKlm8jIyPD8nJSUpJSUFMXHx+vNN9/U7NmzAzgZ4H/Tpk3z/JyYmKikpCQNGTJEu3fvVmpqagAnCw45OTn65JNPeF/bJXau856dne35OTExUbGxsUpNTVVNTY2GDBlyqce8aLzE001FRkZq2LBhqq6uDvQo3YbT6ZSkdp9iaGho8GzDpTF48GD179+fx78P5ObmasuWLdq1a5euvPJKz3qn06kzZ87oxIkTXvvzePeNc533jqSkpEhSl3u8EyjdVFNTk2pqahQbGxvoUbqNhIQEOZ1O7dixw7PO7XarvLxcY8eODeBk3c+XX36pY8eO8fj/ASzLUm5urt566y3t3LlTCQkJXtvHjBmjXr16eT3eq6qqdPjwYR7vP8CFzntHKisrJanLPd55iaebePzxx5WZman4+HjV1tZqwYIF6tGjh6ZPnx7o0YJKU1OT1/+lHDx4UJWVlXI4HBo4cKDmzZun559/XldddZUSEhL0zDPPyOVyacqUKYEbOgic77w7HA4VFhYqKytLTqdTNTU1evLJJzV06FBNmjQpgFN3bTk5OVq3bp02b96ssLAwz/tKIiIi1KdPH0VERGj27NnKz8+Xw+FQeHi45s6dq7Fjx+qmm24K8PRd14XOe01NjdatW6fJkycrKipK+/fvV15ensaNG6ekpKQAT99Jgf4YES6Nu+66y4qNjbVCQ0OtK664wrrrrrus6urqQI8VdHbt2mVJarfMnDnTsqxvPmr8zDPPWDExMZbdbrdSU1OtqqqqwA4dBM533k+dOmVNnDjRGjBggNWrVy8rPj7emjNnjlVfXx/osbu0js63JGv16tWeff773/9ajzzyiHX55Zdbffv2tX72s59ZdXV1gRs6CFzovB8+fNgaN26c5XA4LLvdbg0dOtR64oknrMbGxsAOfhH4NmMAAGAc3oMCAACMQ6AAAADjECgAAMA4BAoAADAOgQIAAIxDoAAAAOMQKAAAwDgECgAAMA6BAiBozJo164JfGzB+/HjNmzfvkswD4OLxXTwAgsZvfvMb8cexgeBAoAAIGhEREYEeAYCP8BIPgE7785//rMTERPXp00dRUVFKS0tTc3OzJGnVqlW65pprZLfbFRsbq9zcXM/1li1bpsTERF122WWKi4vTI488oqamJs/2NWvWKDIyUu+9955Gjhypfv36KT09XXV1dd9rru++xNPc3Kx7771X/fr1U2xsrJYuXeqbEwDA7wgUAJ1SV1en6dOn6/7779dnn32m3bt3a+rUqbIsS6+88opycnKUnZ2tf/7zn3r77bc1dOhQz3VDQkK0YsUKffrpp3rttde0c+dOPfnkk17HP3XqlF588UX94Q9/UGlpqQ4fPqzHH3/8omZ94oknVFJSos2bN+tvf/ubdu/erX379v2g+w/gEgnslykD6GoqKiosSdahQ4fabXO5XNZTTz31vY+1YcMGKyoqynN59erVliSrurras664uNiKiYn5XsebOXOmdccdd1iWZVknT560QkNDrTfffNOz/dixY1afPn2sxx577HvPCCAweA8KgE5JTk5WamqqEhMTNWnSJE2cOFF33nmnWltbVVtbq9TU1HNed/v27SoqKtLnn38ut9uts2fP6vTp0zp16pT69u0rSerbt6+GDBniuU5sbKyOHj3a6Tlramp05swZpaSkeNY5HA4NHz6808cCcOnxEg+ATunRo4e2bdumv/71r7r66qv18ssva/jw4WpoaDjv9Q4dOqSf/vSnSkpK0l/+8hdVVFSouLhYknTmzBnPfr169fK6ns1m45M5QDdEoADoNJvNpptvvlmFhYX6xz/+odDQUG3btk2DBg3Sjh07OrxORUWF2tratHTpUt10000aNmyYamtr/TbjkCFD1KtXL5WXl3vW/ec//9G//vUvv90mAN/hJR4AnVJeXq4dO3Zo4sSJio6OVnl5ub766iuNHDlSCxcu1EMPPaTo6GhlZGTo5MmT+vDDDzV37lwNHTpUra2tevnll5WZmakPP/xQK1eu9Nuc/fr10+zZs/XEE08oKipK0dHReuqppxQSwv+XAV0BgQKgU8LDw1VaWqrly5fL7XYrPj5eS5cuVUZGhiTp9OnTeumll/T444+rf//+uvPOOyV9896VZcuW6YUXXlBBQYHGjRunoqIi3XvvvX6bdcmSJWpqalJmZqbCwsL0y1/+Uo2NjX67PQC+Y7N4cRcAABiG5zoBAIBxCBQAXUa/fv3Oubz//vuBHg+AD/ESD4Auo7q6+pzbrrjiCvXp0+cSTgPAnwgUAABgHF7iAQAAxiFQAACAcQgUAABgHAIFAAAYh0ABAADGIVAAAIBxCBQAAGAcAgUAABjn/wBEfspgbmpRaQAAAABJRU5ErkJggg==", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "jones.scan_id.plot.hist()" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "1d4b4f1a-3ea4-48f0-ad29-438807b49191", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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MWPGaPDgwa7LhiUlJcrIyFBGRoZKSkr0ww8/KCMjw220avTo0fr000914MABff755+rZs6fsdrsefvjha/cBAACA65rNXG52UAsVFBRowoQJSklJ0bFjxxQREaGHH35YEydOlJ+fnyRp4MCBOnDggNLS0lz1du3apSeffFKbN29W7dq11adPH02dOtUVtA4cOKCYmJhS+2vXrp1rO3379tXGjRt18uRJ1a1bV3feeaemTZumRo0aXVHb8/PzFRQUpFOnTqlGjRq/7YMAAADXxLU+f3s0aHkzghYAAN7nWp+/edYhAACARQhaAAAAFiFoAQAAWISgBQAAYBGCFgAAgEUIWgAAABYhaAEAAFiEoAUAAGARghYAAIBFCFoAAAAWIWgBAABYhKAFAABgEYIWAACARQhaAAAAFiFoAZXIOYfzkssAAO/i6+kGADjPGKO0zOOatz5Lu3ML1CQ0UMMSY5UYHyKbzebp5gEArgIjWkAlcM7hVOquY3ps2TalZ+epqMSh9Ow8Pbpsm9bvOsbIFgB4KYIWUAn42n00b32WjHEvN0aatyFLvna+qgDgjfjrDVQSu3MLyi4/WnY5AKDyI2gBlUST0MCyy8PKLgcAVH4ELaASOOdwalhirC68591mk564O5Z7tADASxG0gErA1+6jxPgQLUxKUKsGwarmZ1erBsFamJSgxPgQ7tECAC/F9A5AJWGz2dQurq46NA11lZ1zOJnaAQC8GP9MBiqRC0euGMkCAO/GX3EAAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLELQAAAAsQtBCpXLO4bzkMgAA3sTX0w0AfmGMUVrmcc1bn6XduQVqEhqoYYmxSowPkc1m83TzAAAoN0a0UCmccziVuuuYHlu2TenZeSoqcSg9O0+PLtum9buOMbIFAPBKBC1UCr52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JxMcHGyOHj16bTpfyXny2Dz99NMmLS3N7N+/32zevNl07NjR1KlTxxw7duzadN4LWHV8XnzxRePn52f+53/+x22KgIKCArd1goODzd///nezY8cO06NHD6Z3+BVPHZuCggIzevRos2XLFrN//37zySefmFatWpnGjRubn3/++dp9AJWYVcfmhRdeMB9//LHZu3ev2blzp5k1a5bx9fU1b775pmudivjeELRQbvn5+WbEiBGmQYMGpmrVqqZhw4Zm/Pjxpri42LXOgAEDTLt27dzqff/996Zjx44mICDA1KtXz4waNcrtWvn+/fuNpFKvC7fz+uuvmwYNGhg/Pz9z2223mX//+99WdterePLYPPTQQyY8PNz4+fmZyMhI89BDD5msrCyru+xVrDo+UVFRZR6fSZMmudZxOp1mwoQJJjQ01Pj7+5sOHTqY3bt3W91lr+GpY1NUVGQ6depk6tata6pUqWKioqLMY489xj8ef8WqYzN+/HgTGxtrqlatamrWrGluv/12s3LlSrdtVMT3xmbMZaZWBQAAwFXhHi0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQCVjjFGf/rTn1SrVi3ZbDZlZGR4ukkAKsjGjRvVvXt3RUREyGaz6cMPPyxX/Z9//lkDBw5U8+bN5evrq/vvv7/M9dLS0tSqVSv5+/srNjZWS5cu/c1tvxoELQCVztq1a7V06VL94x//UE5Ojm6++WZPNwlABTl9+rR+97vfad68eVdV3+FwKCAgQMOHD1fHjh3LXGf//v3q1q2b7r77bmVkZGjkyJF69NFH9dFHH/2Wpl8V32u+RwC4jL179yo8PFxt2rQp8/2SkhL5+fld41YBqAhdu3ZV165dL/p+cXGxxo8frxUrVigvL08333yzZsyYofbt20uSqlWrpvnz50uSNm/erLy8vFLbWLBggWJiYjR79mxJUtOmTbVp0ya9/PLL6ty5c4X36VIY0QJQqQwcOFBPPvmkDh06JJvNpujoaLVv317Dhg3TyJEjVadOHdcfym+//VZdu3ZV9erVFRoaqkceeUQnTpxwbev06dNKSkpS9erVFR4ertmzZ6t9+/YaOXKka52yLl0EBwe7XWbIzs5Wnz59FBwcrFq1aqlHjx46cOCAW5vvv/9+zZo1S+Hh4apdu7aeeOIJnT171rVOcXGxnn32WdWvX991KWPRokUyxig2NlazZs1ya0NGRoZsNpuysrJ++4cKeJFhw4Zpy5YtWrlypXbs2KHevXurS5cu2rNnzxVvY8uWLaVGuzp37qwtW7ZUdHMvi6AFoFJ59dVX9d///d+qV6+ecnJy9OWXX0qSkpOT5efnp82bN2vBggXKy8tTYmKiWrZsqW3btmnt2rXKzc1Vnz59XNsaM2aMPv30U/3973/Xxx9/rLS0NH399dflas/Zs2fVuXNnBQYG6rPPPtPmzZtVvXp1denSRSUlJa71NmzYoL1792rDhg1KTk7W0qVL3cJaUlKSVqxYoddee03ff/+9/vrXv6p69eqy2WwaPHiwlixZ4rbfJUuW6K677lJsbOxVfIqAdzp06JCWLFmi9957T23btlWjRo00evRo3XnnnaW+I5dy9OhRhYaGupWFhoYqPz9fZ86cqehmXxKXDgFUKkFBQQoMDJTdbldYWJirvHHjxpo5c6ZreerUqWrZsqVeeOEFV9nixYtVv359ZWZmKiIiQosWLdLbb7+tDh06SDof1urVq1eu9rz77rtyOp1auHChbDabpPMhKDg4WGlpaerUqZMkqWbNmpo7d67sdrvi4+PVrVs3paam6rHHHlNmZqZWrVqldevWuf6V3bBhQ9c+Bg4cqIkTJ2rr1q267bbbdPbsWb3zzjulRrmA690333wjh8OhuLg4t/Li4mLVrl3bQ636bQhaALzCrbfe6ra8fft2bdiwQdWrVy+17t69e3XmzBmVlJSodevWrvJatWqpSZMm5drv9u3blZWVpcDAQLfyn3/+WXv37nUtN2vWTHa73bUcHh6ub775RtL5y4B2u13t2rUrcx8RERHq1q2bFi9erNtuu03/+7//q+LiYvXu3btcbQW8XWFhoex2u7766iu375OkMr/rFxMWFqbc3Fy3stzcXNWoUUMBAQEV0tYrRdAC4BWqVavmtlxYWKju3btrxowZpdYNDw+/4nubbDabjDFuZb++t6qwsFC33nqrli9fXqpu3bp1Xf9dpUqVUtt1Op2SdEV/2B999FE98sgjevnll7VkyRI99NBDuummm66oD8D1omXLlnI4HDp27Jjatm171du5/fbb9c9//tOtbN26dbr99tt/axPLjaAFwCu1atVK77//vqKjo+XrW/pPWaNGjVSlShV98cUXatCggSTpp59+UmZmptvIUt26dZWTk+Na3rNnj4qKitz28+677yokJEQ1atS4qrY2b95cTqdTn3766UV/jn7vvfe6fk21du1abdy48ar2BVR2hYWFbv8Q2r9/vzIyMlSrVi3FxcWpf//+SkpK0uzZs9WyZUsdP35cqampuuWWW9StWzdJ0s6dO1VSUqIff/xRBQUFrrn2WrRoIUn6y1/+orlz5+qZZ57R4MGDtX79eq1atUpr1qy51t2VDABUMi+//LKJiopyLbdr186MGDHCbZ0ffvjB1K1b1zz44INm69atJisry6xdu9YMHDjQnDt3zhhjzF/+8hcTFRVlUlNTzTfffGPuu+8+U716dbdt9e3b1zRt2tR8/fXX5ssvvzSJiYmmSpUqZsmSJcYYY06fPm0aN25s2rdvbzZu3Gj27dtnNmzYYJ588kmTnZ1tjDFmwIABpkePHm7tGzFihGnXrp1reeDAgaZ+/fomJSXFtY13333Xrc5zzz1n/Pz8TNOmTX/T5wdUZhs2bDCSSr0GDBhgjDGmpKTETJw40URHR5sqVaqY8PBw07NnT7Njxw7XNqKiosrcxoX7adGihfHz8zMNGzZ0faevNUa0AHiliIgIbd68Wc8++6w6deqk4uJiRUVFqUuXLvLxOf+D6pdeesl1iTEwMFBPP/20Tp065bad2bNna9CgQWrbtq0iIiL06quv6quvvnK9f9NNN2njxo169tln1atXLxUUFCgyMlIdOnQo1wjX/Pnz9dxzz2no0KE6efKkGjRooOeee85tnSFDhuiFF17QoEGDfsMnA1Ru7du3L3W5/teqVKmiyZMna/LkyRdd59fTq1xqP+np6VfTxAplM5fqLQBcZ9q3b68WLVrolVde8XRTSvnss8/UoUMHZWdnl/ppOgDvxIgWAHhYcXGxjh8/rueff169e/cmZAHXESYsBQAPW7FihaKiopSXl+c2VxgA78elQwAAAIswogUAAGARghYAAIBFCFoAAAAWIWgBAABYhKAFAABgEYIWAACARQhaAAAAFiFoAQAAWISgBQAAYJH/H67c/+wjmeK+AAAAAElFTkSuQmCC", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "jones.frequency.plot.scatter()" ] diff --git a/src/calviper/math/tools.py b/src/calviper/math/tools.py index 95e14dd..6879e46 100644 --- a/src/calviper/math/tools.py +++ b/src/calviper/math/tools.py @@ -4,7 +4,9 @@ import toolviper.utils.logger as logger -from typing import Union, List +from typing import Union, List, Any + +from sklearn.preprocessing import LabelEncoder def ravel(array: np.ndarray): @@ -42,7 +44,7 @@ def unravel(array: np.ndarray) -> Union[np.ndarray, None]: return array.reshape(shape_) -def encode(antennas: Union[List[str], np.ndarray]) -> tuple[np.ndarray, np.ndarray]: +def encode(antennas: Union[List[str], np.ndarray]) -> tuple[LabelEncoder, Any]: """ Encode the antenna names into a list of unique integers identifiers. :param antennas: list of antennas to encode @@ -56,7 +58,8 @@ def encode(antennas: Union[List[str], np.ndarray]) -> tuple[np.ndarray, np.ndarr encoder.fit(names) - return encoder.transform(antennas), encoder.classes_ + #return encoder.transform(antennas), encoder.classes_ + return encoder, encoder.classes_ def compute_index(ant, chan, pol, shape=None): @@ -125,7 +128,7 @@ def build_visibility_matrix(array: np.ndarray, index_a: np.ndarray, index_b: np. size = index_a.shape[0] # Determine the number of unique antennas - n_antennas = np.unique(index_a).shape[0] + n_antennas = np.union1d(index_a, index_b).shape[0] # Dimensions are (n_baselines, n_channel, n_polarization) but we are replacing the first index with n_antenna _, n_channel, n_polarization = array.shape diff --git a/testing.ipynb b/testing.ipynb index 09cbefc..4db50c9 100644 --- a/testing.ipynb +++ b/testing.ipynb @@ -57,7 +57,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 4, "id": "868b54cd-e0db-4243-bd26-aee45746b24a", "metadata": {}, "outputs": [ @@ -67,7 +67,7 @@ "(10,)" ] }, - "execution_count": 17, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -122,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 7, "id": "49ad6a73-c7c8-4cb4-b379-264bdcdd8ddb", "metadata": {}, "outputs": [ @@ -132,7 +132,7 @@ "(10, 10)" ] }, - "execution_count": 16, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -159,10 +159,15 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "[\u001b[38;2;128;05;128m2024-12-20 11:08:59,403\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Iteration: (5)\tStopping criterion reached: 0.009207611105772 \n" + "ename": "ValueError", + "evalue": "not enough values to unpack (expected 4, got 2)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[9], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m g \u001b[38;5;241m=\u001b[39m \u001b[43msolver\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msolve\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mvis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43miterations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcv\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmath\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMeanSquaredError\u001b[49m\u001b[43m(\u001b[49m\u001b[43malpha\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.2\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43mstopping\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1e-2\u001b[39;49m\n\u001b[1;32m 6\u001b[0m \u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/Development/calviper/src/calviper/math/solver/least_squares.py:94\u001b[0m, in \u001b[0;36mLeastSquaresSolver.solve\u001b[0;34m(self, vis, iterations, optimizer, stopping)\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msolve\u001b[39m(\u001b[38;5;28mself\u001b[39m, vis, iterations, optimizer\u001b[38;5;241m=\u001b[39mMeanSquaredError(), stopping\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1e-3\u001b[39m):\n\u001b[1;32m 91\u001b[0m \u001b[38;5;66;03m# This is an attempt to do the solving in a vectorized way\u001b[39;00m\n\u001b[1;32m 92\u001b[0m \n\u001b[1;32m 93\u001b[0m \u001b[38;5;66;03m# Unpack the shape\u001b[39;00m\n\u001b[0;32m---> 94\u001b[0m n_channel, n_polarization, n_antenna1, n_antenna2 \u001b[38;5;241m=\u001b[39m vis\u001b[38;5;241m.\u001b[39mshape\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m n_antenna1 \u001b[38;5;241m==\u001b[39m n_antenna2, logger\u001b[38;5;241m.\u001b[39merror(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAntenna indices don\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mt match\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparameter \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mtile(\u001b[38;5;241m0.1\u001b[39m \u001b[38;5;241m*\u001b[39m np\u001b[38;5;241m.\u001b[39mones(n_antenna1, dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mcomplex64), reps\u001b[38;5;241m=\u001b[39m[n_channel, n_polarization, \u001b[38;5;241m1\u001b[39m])\n", + "\u001b[0;31mValueError\u001b[0m: not enough values to unpack (expected 4, got 2)" ] } ], @@ -177,153 +182,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "9d70e83d-e18a-47dd-b4c5-ddd26721cd52", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    nameintentsshapepolarizationscan_numberspw_namefield_namesource_nameline_namefield_coordsstart_frequencyend_frequency
    1gaincaltest2_0[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_1#SW-01#FULL_RES_0[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]8.607155e+108.629030e+10
    0gaincaltest2_2[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_2#SW-01#FULL_RES_1[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]8.794655e+108.816530e+10
    3gaincaltest2_4[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_3#SW-01#FULL_RES_2[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]9.632156e+109.654030e+10
    2gaincaltest2_6[CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON...(957, 45, 8, 4)[XX, XY, YX, YY][2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26]X0000000000#ALMA_RB_03#BB_4#SW-01#FULL_RES_3[J2255-3500_0][J2255-3500_0][][icrs, 22h55m57.68s, -35d00m00.00s]9.819656e+109.841530e+10
    \n", - "
    " - ], - "text/plain": [ - " name intents \\\n", - "1 gaincaltest2_0 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "0 gaincaltest2_2 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "3 gaincaltest2_4 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "2 gaincaltest2_6 [CALIBRATE_DELAY#ON_SOURCE, CALIBRATE_PHASE#ON... \n", - "\n", - " shape polarization \\\n", - "1 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "0 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "3 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "2 (957, 45, 8, 4) [XX, XY, YX, YY] \n", - "\n", - " scan_number \\\n", - "1 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "0 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "3 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "2 [2, 4, 6, 9, 11, 14, 16, 18, 21, 23, 26] \n", - "\n", - " spw_name field_name \\\n", - "1 X0000000000#ALMA_RB_03#BB_1#SW-01#FULL_RES_0 [J2255-3500_0] \n", - "0 X0000000000#ALMA_RB_03#BB_2#SW-01#FULL_RES_1 [J2255-3500_0] \n", - "3 X0000000000#ALMA_RB_03#BB_3#SW-01#FULL_RES_2 [J2255-3500_0] \n", - "2 X0000000000#ALMA_RB_03#BB_4#SW-01#FULL_RES_3 [J2255-3500_0] \n", - "\n", - " source_name line_name field_coords \\\n", - "1 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "0 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "3 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "2 [J2255-3500_0] [] [icrs, 22h55m57.68s, -35d00m00.00s] \n", - "\n", - " start_frequency end_frequency \n", - "1 8.607155e+10 8.629030e+10 \n", - "0 8.794655e+10 8.816530e+10 \n", - "3 9.632156e+10 9.654030e+10 \n", - "2 9.819656e+10 9.841530e+10 " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ps = ms.open_processing_set(\"data/gaincaltest2.ps.zarr\")\n", "\n", @@ -333,7 +195,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "343f09c9-5a90-4943-876f-0057fee9acc9", "metadata": {}, "outputs": [], @@ -343,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "da4a4577-a028-4946-8d36-e9e64799ed3f", "metadata": {}, "outputs": [], @@ -353,7 +215,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "28118277-bed8-4d2c-be6c-2f822ce7953c", "metadata": {}, "outputs": [], @@ -385,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "d2b92546-84f4-4fc1-8d09-6febcc53a943", "metadata": {}, "outputs": [], @@ -423,21 +285,10 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "9c1f3593-91e2-49c1-b9b6-1b48e99c28bc", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(10, 10)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "vis_array = V[:, 0, 0]\n", "\n",