6. Advanced query features#

This Section introduces:

Load alminer

[2]:
import alminer

6.1 Create and run your own TAP query#

You can use Astronomical Data Query Language (ADQL) to create more complex queries relevant for your work.

The ALminer querying functions provide an option to print the query string that was used to search the ALMA archive for the user by setting print_query parameter to True.

Once you have created the query string of interest, you can run it using the alminer.run_query function.

Example 6.1.1: Retrieve the ADQL query string used in ALminer query functions#

[7]:
obs = alminer.keysearch({'proposal_abstract': ['"planet-forming disk"']},
                        print_targets=False, print_query=True)
================================
alminer.keysearch results
================================
Your query is: SELECT * FROM ivoa.obscore WHERE ((LOWER(proposal_abstract) LIKE '%planet-forming disk%')) AND (LOWER(data_rights) LIKE '%public%') AND (LOWER(scan_intent) LIKE '%target%') ORDER BY proposal_id
--------------------------------
Number of projects = 15
Number of observations = 130
Number of unique subbands = 115
Total number of subbands = 665
Total number of targets with ALMA data = 113
--------------------------------

Example 6.1.2: Modify the query string and run the query#

In the previous example, we searched the ALMA archive for projects with the phrase ‘planet forming disk’ in their abstracts. But let’s say you want to include the filtering options directly through the TAP query, for example to only query observations with angular resolutions less than 0.5”.

You can modify the query string accordingly:

[8]:
query_str = "SELECT * FROM ivoa.obscore WHERE ((LOWER(proposal_abstract) LIKE '%planet-forming disk%')) AND (spatial_resolution < 0.5) AND (LOWER(data_rights) LIKE '%public%') AND (LOWER(scan_intent) LIKE '%target%') ORDER BY proposal_id"

And run the query

[9]:
myquery = alminer.run_query(query_str)

6.2 Convert your own query results into ALminer format#

To make use of other alminer functions, the resulting DataFrame returned from running your query has to be converted to alminer format where a few useful columns are added to the DataFrame. This can be done through the alminer.filter_results function.

Example 6.2.1: Convert query results to ALminer format#

[10]:
myquery_obs = alminer.filter_results(myquery)
--------------------------------
Number of projects = 10
Number of observations = 102
Number of unique subbands = 61
Total number of subbands = 509
100 target(s) with ALMA data = ['HD_163296', 'TW_Hya', 'LupusIII_80', 'LupusIII_115', 'LupusIII_74', 'LupusI_10', 'LupusIII_137', 'LupusIII_73', 'LupusIV_142', 'LupusIII_121', 'LupusIII_72', 'LupusIII_133', 'LupusIII_1004', 'LupusIII_1013', 'LupusIII_70', 'LupusIII_132', 'LupusIII_38', 'LupusIII_103', 'LupusIII_106', 'LupusIII_57', 'LupusIII_1007', 'LupusIV_153', 'LupusIII_18', 'LupusIII_34', 'LupusIII_60', 'LupusIII_1008', 'LupusIII_85', 'LupusI_11', 'LupusIII_43', 'LupusIII_141', 'LupusIII_79', 'LupusIII_1009', 'LupusIII_44', 'LupusIII_42', 'LupusIII_37', 'LupusIII_109', 'LupusI_5', 'LupusIV_144', 'LupusIII_99', 'LupusIII_120', 'LupusIII_89', 'LupusIII_76', 'LupusIII_82', 'LupusIII_28', 'LupusI_14', 'LupusIII_51', 'LupusIII_88', 'LupusIII_75', 'LupusIII_1010', 'LupusIII_68', 'LupusIII_67', 'LupusIII_71', 'LupusIII_26', 'LupusIII_66', 'LupusIII_130', 'LupusIII_53', 'LupusIII_33', 'LupusIII_94', 'LupusIII_40', 'LupusIII_91', 'LupusIV_159', 'LupusIII_65', 'LupusIII_116', 'LupusIII_111', 'LupusIII_19', 'LupusIII_21', 'LupusI_13', 'LupusI_15', 'LupusIII_1005', 'LupusIII_1006', 'LupusIII_1003', 'LupusIII_1002', 'LupusIII_49', 'LupusI_12', 'LupusI_16', 'LupusIII_1001', 'LupusIII_1015', 'LupusIII_50', 'LupusI_4', 'LupusIII_114', 'LupusIV_145', 'LupusIII_30', 'LupusIII_52', 'LupusIV_151', 'LupusIV_150', 'LupusIII_87', 'LupusIV_148', 'LupusIV_147', 'LupusIII_113', 'LupusIII_102', 'LupusIII_1014', 'LupusIII_41', 'Serpens-FIRS1', 'V4046_Sgr', 'DG_Tau', 'AS205A', 'RY_Tau', 'ex_lup', 'EM_star_SR_24_N', 'EM_star_SR_20']
--------------------------------

Now you can use all the analysis and plotting routines presented before on these observations.