{"action":"created","comment":{"url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments/26315329","id":26315329,"diff_hunk":"@@ -0,0 +1,478 @@\n+# Copyright (c) 2012-2014 by the GalSim developers team on GitHub\n+# https://github.com/GalSim-developers\n+#\n+# This file is part of GalSim: The modular galaxy image simulation toolkit.\n+# https://github.com/GalSim-developers/GalSim\n+#\n+# GalSim is free software: redistribution and use in source and binary forms,\n+# with or without modification, are permitted provided that the following\n+# conditions are met:\n+#\n+# 1. Redistributions of source code must retain the above copyright notice, this\n+#    list of conditions, and the disclaimer given in the accompanying LICENSE\n+#    file.\n+# 2. Redistributions in binary form must reproduce the above copyright notice,\n+#    this list of conditions, and the disclaimer given in the documentation\n+#    and/or other materials provided with the distribution.\n+#\n+\"\"\"\n+@file wfirst_wcs.py\n+\n+Part of the WFIRST module.  This file includes any routines needed to define and use the WFIRST WCS.\n+\"\"\"\n+import galsim\n+import galsim.wfirst\n+import numpy as np\n+import os\n+\n+# Basic WFIRST reference info, with lengths in mm.\n+pixel_size_mm = 0.01\n+focal_length = 18500.\n+pix_scale = (pixel_size_mm/focal_length)*galsim.radians\n+n_sip = 5 # Number of SIP coefficients used, where arrays are n_sip x n_sip in dimension\n+\n+# Version-related information, for reference back to material provided by Jeff Kruk.\n+tel_name = \"WFIRST\"\n+instr_name = \"WFI\"\n+optics_design_ver = \"4.2.2\"\n+prog_version = \"0.4\"\n+\n+# Information about center points of the SCAs in the WFI focal plane coordinate system (f1, f2)\n+# coordinates.  These are rotated by an angle theta_fpa with respect to the payload axes, as\n+# projected onto the sky. Note that the origin is at the center of the payload axes, on the\n+# telescope boresight, not centered on the FPA.  Since the SCAs are 1-indexed, these arrays have a\n+# non-used entry with index 0.  i.e., the maximum SCA is 18, and its value is in sca_xc_mm[18].\n+# Units are mm.\n+sca_xc_mm = np.array([0., -21.690, -21.690, -21.690, -65.070, -65.070, -65.070, -108.450, -108.450,\n+                      -108.450,  21.690,  21.690,  21.690,  65.070,  65.070,  65.070, 108.450,\n+                      108.450, 108.450])\n+sca_yc_mm = np.array([0., 199.250, 149.824, 242.630, 188.250, 138.824, 231.630, 164.923, 115.498,\n+                      208.304, 199.250, 149.824, 242.630, 188.250, 138.824, 231.630, 164.923,\n+                      115.498, 208.304])\n+# Nominal center of FPA in this coordinate frame, in mm and as an angle.\n+fpa_xc_mm = 0.0\n+fpa_yc_mm = 199.250\n+xc_fpa = np.arctan(fpa_xc_mm/focal_length)*galsim.radians\n+yc_fpa = np.arctan(fpa_yc_mm/focal_length)*galsim.radians\n+\n+# The next array contains rotation offsets of individual SCA Y axis relative to FPA f2 axis. Same\n+# sign convention as theta_fpa. These represent mechanical installation deviations from perfect\n+# alignment and are ideally zero. These will be measured during focal plane integration and\n+# testing.\n+sca_rot = np.zeros_like(sca_xc_mm)\n+\n+# Rotation of focal plane axes relative to payload axes: positive CCW rotation of the f2 axis\n+# relative to -Y_pl, and of f1 relative to +X_pl.\n+theta_fpa = 32.5*galsim.degrees\n+\n+# File with SIP coefficients.\n+sip_filename = os.path.join(galsim.meta_data.share_dir, 'sip_422.txt')\n+\n+def getWCS(PA, world_pos, SCAs=None, PA_is_FPA=False):\n+    \"\"\"\n+    This routine returns a dict containing a WCS for each of the WFIRST SCAs (Sensor Chip Array, the\n+    equivalent of a chip in an optical CCD).  The WFIRST SCAs are labeled 1-18, so these numbers are\n+    used as the keys in the dict.  Alternatively the user can request a subset of the SCAs using the\n+    `SCAs` option.\n+\n+    The user must specify a position for the center of the focal plane array (as a CelestialCoord\n+    `world_pos`) and the orientation.\n+\n+    For this routine, we define several coordinate systems for WFIRST.  The diagram\n+    located on the GalSim wiki,\n+    https://github.com/GalSim-developers/GalSim/wiki/GalSim-WFIRST-module-diagrams\n+    will be useful in understanding the description of these coordinate systems below.\n+\n+    Observatory coordinate system: +X_obs points along the boresight into the sky, +Z_obs points\n+    towards the Sun in the absence of a roll offset, +Y_obs makes a right-handed system.\n+\n+    Payload coordinate system: +X_pl points along -Y_obs, +Y_pl points along +Z_obs, +Z_pl points\n+    along -X_obs (back towards observer).\n+\n+    Wide field imager (WFI) focal plane assembly (FPA) coordinate system: This is defined by a\n+    left-handed system f1, f2, that is rotated by an angle `theta_fpa` with respect to the payload\n+    axes.  +f1 points along the long axis of the focal plane, transverse to the radius from the\n+    telescope optic axis.  +f2 points radially out from the telescope optic axis, along the narrow\n+    dimension of the focal plane.  If +f2 points North, then +f1 points East.  `theta_fpa` is a\n+    positive CCW rotation of the f2 axis relative to -Y_pl, and of f1 relative to +X_pl.  In terms\n+    of focal plane geometry, if +Y_fp is pointing North, then SCAs 3 and 12 will be at highest\n+    declination, 8 and 17 at the lowest.  +Y_fp is aligned with the short axis of the focal plane\n+    array.\n+\n+    There is also a detector coordinate system (P1, P2).  +P1 and +P2 point along the fast- and\n+    slow-scan directions of the pixel readout, respectively.\n+\n+    So, for reference, if the boresight is pointed at RA=90, DEC=0 on March 21st (Sun at vernal\n+    equinox), then +X_obs points at (RA,DEC)=(90,0), +Y_obs points North, and +Z_obs points at the\n+    Sun.  The payload coordinates are +X_pl points South, -Y_pl points East.  Finally, the FPA\n+    coordinate system is defined by +f2 being at a position angle 90+theta_fpa east of North.  If\n+    the observatory +Y axis is at a position angle `pa_obsy` East of North, then the focal plane\n+    (+f2) is at a position angle pa_fpa = pa_obsy + 90 + theta_fpa.\n+\n+    @param PA        Position angle of the observatory Y axis, unless `PA_is_FPA=True`, in which\n+                     case it's the position angle of the FPA.  Must be provided as a galsim.Angle.\n+    @param world_pos A galsim.CelestialCoord indicating the center of the FPA.\n+    @param PA_is_FPA If True, then the position angle that was provided was the PA of the focal\n+                     plane array, not the observatory. [default: False]\n+    @param SCAs      A single number or iterable giving the SCAs for which the WCS should be\n+                     obtained.  If None, then the WCS is calculated for all SCAs.\n+                     [default: None]\n+    @returns a dict of WCS objects for each SCA.\n+    \"\"\"\n+    # Check which SCAs are to be done using a helper routine in this module.\n+    SCAs = galsim.wfirst._parse_SCAs(SCAs)\n+\n+    # Enforce type for PA\n+    if not isinstance(PA, galsim.Angle):\n+        raise TypeError(\"Position angle must be a galsim.Angle!\")\n+\n+    # Parse input position\n+    if not isinstance(world_pos, galsim.CelestialCoord):\n+        raise TypeError(\"Position on the sky must be given as a galsim.CelestialCoord!\")\n+\n+    # Compute position angle of FPA f2 axis, where positive corresponds to the angle east of North.\n+    if PA_is_FPA:\n+        pa_fpa = PA\n+        pa_obsy = PA - 90.*galsim.degrees - theta_fpa\n+    else:\n+        pa_obsy = PA\n+        pa_fpa = PA + 90.*galsim.degrees + theta_fpa\n+    cos_pa = np.cos(pa_fpa.rad())\n+    sin_pa = np.sin(pa_fpa.rad())\n+\n+    # Figure out tangent-plane positions for FPA center:\n+    xc_fpa_tp, yc_fpa_tp = _det_to_tangplane_positions(xc_fpa, yc_fpa)\n+\n+    # Note, this routine reads in the coeffs.  We don't use them until later, but read them in for\n+    # all SCAs at once.\n+    a_sip, b_sip = _parse_sip_file(sip_filename)\n+\n+    # Loop over SCAs:\n+    wcs_dict = {}\n+    for i_sca in SCAs:\n+        # Set up the header.\n+        header = galsim.FitsHeader()\n+        # Populate some necessary variables in the FITS header that are always the same, regardless of\n+        # input and SCA number.\n+        _populate_required_fields(header)\n+\n+        # And populate some things that just depend on the overall locations or other input, not on\n+        # the SCA.\n+        header['RA_TARG'] = (world_pos.ra / galsim.degrees,\n+                             \"right ascension of the target (deg) (J2000)\")\n+        header['DEC_TARG'] = (world_pos.dec / galsim.degrees,\n+                              \"declination of the target (deg) (J2000)\")\n+        header['PA_OBSY'] = (pa_obsy / galsim.degrees, \"position angle of observatory Y axis (deg)\")\n+        header['PA_FPA'] = (pa_fpa / galsim.degrees, \"position angle of FPA Y axis (deg)\")\n+\n+        # Finally do all the SCA-specific stuff.\n+        header['SCA_NUM'] = (i_sca, \"SCA number (1 - 18)\")","path":"galsim/wfirst/wfirst_wcs.py","position":169,"original_position":169,"commit_id":"723edd9fa69af7c51edaeb4f8b258a8ab6171e38","original_commit_id":"40c7dac30cc937ba3d9808b3f3736a3597b52143","user":{"login":"rmjarvis","id":623887,"avatar_url":"https://avatars.githubusercontent.com/u/623887?v=3","gravatar_id":"","url":"https://api.github.com/users/rmjarvis","html_url":"https://github.com/rmjarvis","followers_url":"https://api.github.com/users/rmjarvis/followers","following_url":"https://api.github.com/users/rmjarvis/following{/other_user}","gists_url":"https://api.github.com/users/rmjarvis/gists{/gist_id}","starred_url":"https://api.github.com/users/rmjarvis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmjarvis/subscriptions","organizations_url":"https://api.github.com/users/rmjarvis/orgs","repos_url":"https://api.github.com/users/rmjarvis/repos","events_url":"https://api.github.com/users/rmjarvis/events{/privacy}","received_events_url":"https://api.github.com/users/rmjarvis/received_events","type":"User","site_admin":false},"body":"My original idea was that the user would need to make an `hduList` and write to an hdu instead of a file.  Then have a function that would add items to the header:\r\n```\r\nim = galsim.Image(...)\r\nim.wcs = wcs  # which implies some header keys already\r\n# ... make image\r\nhdu_list = pyfits.HDUList()\r\nim.write(hdu_list = hdu_list)\r\ngalsim.wfirst.populateFitsHeader(hdu_list[-1].header, ...)\r\ngalsim.fits.writeFile(file_name, hdu_list)\r\n```\r\n\r\nBut I think I may have a better idea.  How's this:\r\n```\r\nim = galsim.Image(...)\r\nim.wcs = wcs\r\n# ... make image\r\nim.header = galsim.wfirst.makeFitsHeader(...)\r\nim.write(file_name)\r\n```\r\nThen the `write` function could look for a header object in image, and if there is one there, it uses that.  Otherwise it does the normal thing and lets the wcs write itself to the header.  This seems like a pretty natural syntax I think.\r\n\r\nI'm not sure whether the wcs should also be written to the header if the user provides a header.  And which order if so. I can think of three plausible options:\r\n1. Start by writing the wcs to the header, and then update with whatever else is in `image.header`, possibly overwriting things that the wcs specified\r\n2. Start with `image.header`, and then let the wcs write itself to make sure that's all correct.\r\n3. Just use `image.header` and not call the `wcs.writeToFitsHeader` function if the user has provided a header.  i.e. the user is responsible for using that function if they want it in the final header.\r\n","created_at":"2015-03-12T16:01:05Z","updated_at":"2015-03-12T16:01:05Z","html_url":"https://github.com/GalSim-developers/GalSim/pull/651#discussion_r26315329","pull_request_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651","_links":{"self":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments/26315329"},"html":{"href":"https://github.com/GalSim-developers/GalSim/pull/651#discussion_r26315329"},"pull_request":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651"}}},"pull_request":{"url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651","id":30180104,"html_url":"https://github.com/GalSim-developers/GalSim/pull/651","diff_url":"https://github.com/GalSim-developers/GalSim/pull/651.diff","patch_url":"https://github.com/GalSim-developers/GalSim/pull/651.patch","issue_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/651","number":651,"state":"open","locked":false,"title":"#590 - WFIRST module","user":{"login":"rmandelb","id":1454906,"avatar_url":"https://avatars.githubusercontent.com/u/1454906?v=3","gravatar_id":"","url":"https://api.github.com/users/rmandelb","html_url":"https://github.com/rmandelb","followers_url":"https://api.github.com/users/rmandelb/followers","following_url":"https://api.github.com/users/rmandelb/following{/other_user}","gists_url":"https://api.github.com/users/rmandelb/gists{/gist_id}","starred_url":"https://api.github.com/users/rmandelb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmandelb/subscriptions","organizations_url":"https://api.github.com/users/rmandelb/orgs","repos_url":"https://api.github.com/users/rmandelb/repos","events_url":"https://api.github.com/users/rmandelb/events{/privacy}","received_events_url":"https://api.github.com/users/rmandelb/received_events","type":"User","site_admin":false},"body":"This pull request is for the new WFIRST module (#590), though it also addressed #635 (partially) and #614.  It includes work mostly by @arunkannawadi and me, though with some small updates from @rmjarvis and @jmeyers314 as well.\r\n\r\nTo summarize, it includes:\r\n* All software for the WFIRST module, which knows a lot about WFIRST and can be used to simulate its images easily.\r\n* A demo (demo13.py) that demonstrates use of all routines in the WFIRST module, and steps through the image generation process in detail including IR detector effects.  I encourage those who are checking out this PR to run the demo, in addition to reviewing the code and running unit tests.\r\n* Some software to easily make images of galaxies from the COSMOS dataset in either a real (HST image-based) version or a parametric (Sersic-based) version.\r\n* Smaller updates to other routines, like how FITS headers are handled and some sign conventions in the CelestialCoord class.\r\n\r\nTo be honest, I feel the WFIRST module and the new COSMOS catalog routines do not have enough unit tests.  However, a lot of the routines are meant to do things like read in stored information and pass it to the user in some convenient form, so I had a hard time coming up with unit tests for those.  The demo itself should illustrate whether that functionality is still working, so I'm uncertain to what degree I should work harder to make up unit tests vs. planning to make sure demo13 still runs when evaluating future PRs.  Suggestions for useful unit tests would be very welcome, though!  At minimum, I suppose I could just put in unit tests making sure that all the keyword arguments do what they are supposed to.\r\n\r\n@jasondrhodes and @chazshapiro, take a look!","created_at":"2015-02-27T16:37:06Z","updated_at":"2015-03-12T16:01:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9c27ec9316210f5a73d20e69fc922eb020193fa2","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651/commits","review_comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651/comments","review_comment_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/651/comments","statuses_url":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/723edd9fa69af7c51edaeb4f8b258a8ab6171e38","head":{"label":"GalSim-developers:#590","ref":"#590","sha":"723edd9fa69af7c51edaeb4f8b258a8ab6171e38","user":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"repo":{"id":3510804,"name":"GalSim","full_name":"GalSim-developers/GalSim","owner":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GalSim-developers/GalSim","description":"The modular galaxy image simulation toolkit","fork":false,"url":"https://api.github.com/repos/GalSim-developers/GalSim","forks_url":"https://api.github.com/repos/GalSim-developers/GalSim/forks","keys_url":"https://api.github.com/repos/GalSim-developers/GalSim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GalSim-developers/GalSim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GalSim-developers/GalSim/teams","hooks_url":"https://api.github.com/repos/GalSim-developers/GalSim/hooks","issue_events_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/events{/number}","events_url":"https://api.github.com/repos/GalSim-developers/GalSim/events","assignees_url":"https://api.github.com/repos/GalSim-developers/GalSim/assignees{/user}","branches_url":"https://api.github.com/repos/GalSim-developers/GalSim/branches{/branch}","tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/tags","blobs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/refs{/sha}","trees_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/{sha}","languages_url":"https://api.github.com/repos/GalSim-developers/GalSim/languages","stargazers_url":"https://api.github.com/repos/GalSim-developers/GalSim/stargazers","contributors_url":"https://api.github.com/repos/GalSim-developers/GalSim/contributors","subscribers_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscribers","subscription_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscription","commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/commits{/sha}","git_commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/commits{/sha}","comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/comments{/number}","issue_comment_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/comments{/number}","contents_url":"https://api.github.com/repos/GalSim-developers/GalSim/contents/{+path}","compare_url":"https://api.github.com/repos/GalSim-developers/GalSim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GalSim-developers/GalSim/merges","archive_url":"https://api.github.com/repos/GalSim-developers/GalSim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GalSim-developers/GalSim/downloads","issues_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues{/number}","pulls_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls{/number}","milestones_url":"https://api.github.com/repos/GalSim-developers/GalSim/milestones{/number}","notifications_url":"https://api.github.com/repos/GalSim-developers/GalSim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GalSim-developers/GalSim/labels{/name}","releases_url":"https://api.github.com/repos/GalSim-developers/GalSim/releases{/id}","created_at":"2012-02-22T02:51:45Z","updated_at":"2015-01-27T06:46:41Z","pushed_at":"2015-03-12T15:35:27Z","git_url":"git://github.com/GalSim-developers/GalSim.git","ssh_url":"git@github.com:GalSim-developers/GalSim.git","clone_url":"https://github.com/GalSim-developers/GalSim.git","svn_url":"https://github.com/GalSim-developers/GalSim","homepage":"","size":93562,"stargazers_count":29,"watchers_count":29,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":19,"mirror_url":null,"open_issues_count":51,"forks":19,"open_issues":51,"watchers":29,"default_branch":"releases/1.2"}},"base":{"label":"GalSim-developers:master","ref":"master","sha":"37a52285cba00c68afea55b34b8e87a7ccda8e76","user":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"repo":{"id":3510804,"name":"GalSim","full_name":"GalSim-developers/GalSim","owner":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GalSim-developers/GalSim","description":"The modular galaxy image simulation toolkit","fork":false,"url":"https://api.github.com/repos/GalSim-developers/GalSim","forks_url":"https://api.github.com/repos/GalSim-developers/GalSim/forks","keys_url":"https://api.github.com/repos/GalSim-developers/GalSim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GalSim-developers/GalSim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GalSim-developers/GalSim/teams","hooks_url":"https://api.github.com/repos/GalSim-developers/GalSim/hooks","issue_events_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/events{/number}","events_url":"https://api.github.com/repos/GalSim-developers/GalSim/events","assignees_url":"https://api.github.com/repos/GalSim-developers/GalSim/assignees{/user}","branches_url":"https://api.github.com/repos/GalSim-developers/GalSim/branches{/branch}","tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/tags","blobs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/refs{/sha}","trees_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/{sha}","languages_url":"https://api.github.com/repos/GalSim-developers/GalSim/languages","stargazers_url":"https://api.github.com/repos/GalSim-developers/GalSim/stargazers","contributors_url":"https://api.github.com/repos/GalSim-developers/GalSim/contributors","subscribers_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscribers","subscription_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscription","commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/commits{/sha}","git_commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/commits{/sha}","comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/comments{/number}","issue_comment_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/comments{/number}","contents_url":"https://api.github.com/repos/GalSim-developers/GalSim/contents/{+path}","compare_url":"https://api.github.com/repos/GalSim-developers/GalSim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GalSim-developers/GalSim/merges","archive_url":"https://api.github.com/repos/GalSim-developers/GalSim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GalSim-developers/GalSim/downloads","issues_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues{/number}","pulls_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls{/number}","milestones_url":"https://api.github.com/repos/GalSim-developers/GalSim/milestones{/number}","notifications_url":"https://api.github.com/repos/GalSim-developers/GalSim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GalSim-developers/GalSim/labels{/name}","releases_url":"https://api.github.com/repos/GalSim-developers/GalSim/releases{/id}","created_at":"2012-02-22T02:51:45Z","updated_at":"2015-01-27T06:46:41Z","pushed_at":"2015-03-12T15:35:27Z","git_url":"git://github.com/GalSim-developers/GalSim.git","ssh_url":"git@github.com:GalSim-developers/GalSim.git","clone_url":"https://github.com/GalSim-developers/GalSim.git","svn_url":"https://github.com/GalSim-developers/GalSim","homepage":"","size":93562,"stargazers_count":29,"watchers_count":29,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":19,"mirror_url":null,"open_issues_count":51,"forks":19,"open_issues":51,"watchers":29,"default_branch":"releases/1.2"}},"_links":{"self":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651"},"html":{"href":"https://github.com/GalSim-developers/GalSim/pull/651"},"issue":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/issues/651"},"comments":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/issues/651/comments"},"review_comments":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651/comments"},"review_comment":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/651/commits"},"statuses":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/723edd9fa69af7c51edaeb4f8b258a8ab6171e38"}}}}