Code Monkey home page Code Monkey logo

acstools's Introduction

ACSTOOLS

ascl:2011.024

Documentation Status

Github Actions CI Status

For v3.5 or later:

zenodo.7406933

For older versions:

zenodo.3728240

acstools's People

Contributors

annierose3 avatar bernie-simon avatar dependabot-preview[bot] avatar dependabot[bot] avatar dvstark avatar embray avatar gsanand avatar jamienoss avatar jhunkeler avatar jryon avatar mcara avatar molaes-stsci avatar nden avatar pllim avatar rendinam avatar saogaz avatar stsci-hack avatar stsci-sienkiew avatar tddesjardins avatar zacharyburnett avatar zanecodes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

acstools's Issues

acs_destripe cannot handle new subarrays

For new subarray WFC1A-512 with the following FITS format:

Filename: test_blv_tmp.fits
No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU     235   ()              
1    SCI         ImageHDU        95   (2048, 512)   float32   
2    ERR         ImageHDU        48   (2048, 512)   float32   
3    DQ          ImageHDU        40   (2048, 512)   int16 

StripeArray._get_ref_section() is not extracting the correct DARK sub-section, resulting in an exception caused by array size mismatch when user attempts to run acs_destripe_plus on the subarray, as recommended.

Here are the computed variable values from that test image with the current code:

refaxis1 = 4096
refaxis2 = 2048
sizaxis1 = 2048
sizaxis2 = 512
centera1 = 1037
centera2 = 1793
xdelta = 13
xlo = -1
xhi = 2047
ylo = 1536
yhi = 2048

Add gen2 CTE ISR to docs

At the time of resolving #25 no new ISR was available. When this is available, it needs to be integrated into the docs.

Enhancement: Zeropoint Calculator API

The ACS Zeropoints Calculator is a webtool developed by the ACS Team to provide users with an interface to compute time-dependent zeropoints without having to download the required component files from CRDS. Users submit a date and detector which together comprise an "obsmode" used by pysynphot to compute the STmag, VEGAmag, ABmag zeropoints for all the ACS filters (or just a single one).

We have had several users ask (e.g. INC0130965) if there is anyway to script the process of computing zeropoints for a large number of date and detector combinations. I have re-written the Zeropoints Calculator to work using GET methods, rather than POST. Hence, the user supplied information is now passed via a query string embedded in the URL which means we can finally allow users to batch process things. Next, to give users tools to utilize these updates I wrote a new module in acstools called acszpts that allows users to programmatically query the Zeropoints Calculator and returns the results as an astropy.table.Table with units. The exact API is still a work in progress and I am open to any suggestions. I am opening this issue to keep track of things and provide a forum for discussion.

Example Usage:

In [1]: from acstools import acszpt
The following tasks in the acstools package can be run with TEAL:
          acs2d                  acs_destripe           acs_destripe_plus     
          acsccd                    acscte              acscteforwardmodel    
          acsrej                    acssum                    calacs
PixCteCorr is no longer supported. Please use acscte.

In [2]: zpt_query = acszpt.Query(date='2016-04-04',detector='WFC')

In [3]: zpt_query.submit_request()

In [4]: zpt_query.parse_response()

In [5]: zpt_table = zpt_query.format_results()

In [6]: zpt_table
Out[6]: 
<Table length=13>
FILTER PHOTPLAM        PHOTFLAM         STmag  VEGAmag  ABmag 
       Angstrom erg / (Angstrom cm2 s) mag(ST)   mag   mag(AB)
 str6  float64         float64         float64 float64 float64
------ -------- ---------------------- ------- ------- -------
 F435W   4329.2              3.148e-19  25.155  25.763  25.665
 F475W   4746.2              1.827e-19  25.746  26.149  26.056
 F502N   5023.0              5.259e-18  22.098  22.365  22.285
 F550M   5581.5               3.99e-19  24.898  24.825  24.856
 F555W   5360.9              1.963e-19  25.667  25.713  25.713
 F606W   5922.0              7.811e-20  26.668  26.405  26.498
 F625W   6312.0              1.188e-19  26.213  25.735  25.904
 F658N   6584.0               1.97e-18  23.164  22.381  22.763
 F660N   6599.4              5.156e-18  22.119  21.428  21.714
 F775W   7693.2              9.954e-20  26.405  25.272  25.667
 F814W   8045.0              7.046e-20   26.78  25.517  25.944
F850LP   9033.2               1.52e-19  25.945  24.332  24.858
 F892N   8914.8              1.502e-18  23.458  21.905    22.4

ACSCTE: Populating constant-array extension in output file.

I have noticed that when running ACSCTE on an image with a constant-array extension that the file output by ACSCTE is missing the data from that extension. In this context, jd4zcob5q_flt.fits has been processed with BIASCORR and BLEVCORR.

>>> with fits.open('jd4zcob5q_flt.fits',mode='update') as hdu:
...:    # Print hdu info
...:    hdu.info()
...:    # Show hdu[3].data is nonzero
...:    dq2 = hdu[3].data
...:    print(dq2.shape, len(dq2[dq2!=0]))
...:    # Now set extension to be all zeros
...:    hdu[3].data = np.zeros((hdu[3].header['NAXIS2'], hdu[3].header['NAXIS1']))
...:    # Set the PCTECORR keyword to PERFORM
...:    hdu[0].header['PCTECORR'] = 'PERFORM'
...:    # Set PCTETAB to newest version in jref   
...:    hdu[0].header['PCTETAB']='jref$16k1747tj_cte.fits'

Filename: jd4zcob5q_flt.fits
No.    Name         Type      Cards   Dimensions   Format
  0  PRIMARY     PrimaryHDU     252   ()      
  1  SCI         ImageHDU        95   (4096, 2048)   float32   
  2  ERR         ImageHDU        48   (4096, 2048)   float32   
  3  DQ          ImageHDU        40   (4096, 2048)   int16   
  4  SCI         ImageHDU        95   (4096, 2048)   float32   
  5  ERR         ImageHDU        48   (4096, 2048)   float32   
  6  DQ          ImageHDU        40   (4096, 2048)   int16   
(2048, 4096) 136340
>>> acstools.acscte.acscte('jd4zcob5q_flt.fits')

Setting max threads to 8 out of 8 available
Trying to open jd4zcob5q_flt.fits...
Read in Primary header from jd4zcob5q_flt.fits...


CALACSBEG*** ACSCTE -- Version 9.2.0 (01-Jun-2017) ***
Begin    14-Sep-2017 13:15:17 EDT
Input    jd4zcob5q_flt.fits
Output   jd4zcob5q_flt_blc_tmp.fits
Trying to open jd4zcob5q_flt.fits...
Read in Primary header from jd4zcob5q_flt.fits...
APERTURE WFC
FILTER1 F502N
FILTER2 F660N
DETECTOR WFC
DESCRIP read in as: 

DESCRIP read in as: 

DESCRIP read in as: 



CCDTAB   jref$xa81715gj_ccd.fits
CCDTAB   PEDIGREE=inflight
CCDTAB   DESCRIP =July 2009


PCTECORR PERFORM
PCTEFILE jref$16k1747tj_cte.fits
Trying to open jref$16k1747tj_cte.fits...
Read in Primary header from jref$16k1747tj_cte.fits...
(pctecorr) Generation 2 PCTETAB file auto-detected.
(pctecorr) Reading CTE parameters from PCTETAB file: 'jref$16k1747tj_cte.fits'...
Trying to open jref$16k1747tj_cte.fits...
Read in Primary header from jref$16k1747tj_cte.fits...

CTE_NAME: PixelCTE 2017
CTE_VER: 2.0
CTEDATE0: 52334.9
CTEDATE1: 57710.4
PCTETLEN: 60
PCTERNOI: 3.250000
PCTERNFOR: 5
PCTERNPAR: 7
PCTENSMD: 0
PCTETRSH: -10
FIXROCR: 1
Reading in image from extension 3
Reading in image from extension 4
ERROR:    Keyword = `PCTENSMD'.
ERROR:    Keyword = `PCTETLEN'.
ERROR:    Keyword = `PCTERNOI'.
ERROR:    Keyword = `PCTENFOR'.
ERROR:    Keyword = `PCTENPAR'.
ERROR:    Keyword = `FIXROCR'.
(pctecorr) Read noise level PCTERNCL: 3.250000
(pctecorr) Readout simulation forward modeling iterations PCTENFOR: 5
(pctecorr) Number of iterations used in the parallel transfer PCTENPAR: 7
(pctecorr) CTE_FRAC: 1.052591
(pctecorr) PCTETAB read
(pctecorr) Using parallel processing provided by OpenMP inside CTE routine
(pctecorr) Performing CTE correction for amp C
(pctecorr) Calculating smooth readnoise image...
(pctecorr) Time taken to smooth image: 1.76(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Creating charge trap image...
(pctecorr) Time taken to populate pixel trap map image: 0.00(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Running correction algorithm...
(pctecorr) ...complete.
(pctecorr) Total count difference (corrected-raw) incurred from correction: 7768892.500000 (4.444590%)
(pctecorr) Performing CTE correction for amp D
(pctecorr) Calculating smooth readnoise image...
(pctecorr) Time taken to smooth image: 2.32(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Creating charge trap image...
(pctecorr) Time taken to populate pixel trap map image: 0.00(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Running correction algorithm...
       
(pctecorr) ...complete.
(pctecorr) Total count difference (corrected-raw) incurred from correction: 7965455.500000 (4.196546%)
(pctecorr) CTE run time for current chip: 1891.15(s) with 8 procs/threads

(pctecorr) Using parallel processing provided by OpenMP inside CTE routine
(pctecorr) Performing CTE correction for amp A
(pctecorr) Calculating smooth readnoise image...
(pctecorr) Time taken to smooth image: 2.58(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Creating charge trap image...
(pctecorr) Time taken to populate pixel trap map image: 0.00(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Running correction algorithm...
(pctecorr) ...complete.
(pctecorr) Total count difference (corrected-raw) incurred from correction: 8093220.000000 (4.665939%)
(pctecorr) Performing CTE correction for amp B
(pctecorr) Calculating smooth readnoise image...
(pctecorr) Time taken to smooth image: 2.45(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Creating charge trap image...
(pctecorr) Time taken to populate pixel trap map image: 0.00(s) with 8 threads
(pctecorr) ...complete.
(pctecorr) Running correction algorithm...
(pctecorr) ...complete.
(pctecorr) Total count difference (corrected-raw) incurred from correction: 7466168.500000 (3.768336%)
(pctecorr) CTE run time for current chip: 1897.81(s) with 8 procs/threads

PCTECORR COMPLETE


End      14-Sep-2017 14:22:38 EDT


*** ACSCTE complete ***
>>>with fits.open('jd4zcob5q_flt_blc_tmp.fits') as hdu:
    ...:     hdu.info()
    ...:     print(type(hdu[3].data))
    ...:       
Filename: jd4zcob5q_flt_blc_tmp.fits
No.    Name         Type      Cards   Dimensions   Format
  0  PRIMARY     PrimaryHDU     269   ()      
  1  SCI         ImageHDU        95   (4096, 2048)   float32   
  2  ERR         ImageHDU        48   (4096, 2048)   float32   
  3  DQ          ImageHDU        41   ()      
  4  SCI         ImageHDU        95   (4096, 2048)   float32   
  5  ERR         ImageHDU        48   (4096, 2048)   float32   
  6  DQ          ImageHDU        40   (4096, 2048)   int16   
<class 'NoneType'>

Note tha in the output image, the extension I set to be a constant-array with all zeros is now type NONE instead of an (4096, 2048) array of all zeros. I would upload an example raw file to use, but for my case the file size is too large as it is as full frame image.

ACSCTE Python wrapper cannot run Gen 1

There is no option to pass in --ctegen 1, causing this test failure:

https://ssb.stsci.edu/pandokia/pandokia.cgi?query=detail&key_id=106065914

PCTECORR PERFORM
PCTEFILE pctetab_cte.fits
Trying to open pctetab_cte.fits...
Read in Primary header from pctetab_cte.fits...
(pctecorr) Generation 1 PCTETAB file auto-detected.
ERROR:    (pctecorr) Gen1 algorithm detected in PCTETAB (CTE_NAME). Default is g
en2, use '--ctegen 1' to override.
ERROR:    Error processing jbny01syq_blv_tmp.fits.
ERROR:    Error processing jbny01syq_blv_tmp.fits.
ERROR:    Calibration file(s) missing.

Retire Python 2

Python 2 will not be maintained past Jan 1, 2020 (see https://pythonclock.org/). Please remove all Python 2 compatibility and move this package to Python 3 only.

For conda recipe (including astroconda-contrib), please include the following to prevent packaging it for Python 2 (https://conda.io/docs/user-guide/tasks/build-packages/define-metadata.html?preprocessing-selectors#skipping-builds):

build:
   skip: true  # [py2k]

Please close this issue if it is irrelevant to your repository. This is an automated issue. If this is opened in error, please let pllim know!

Add ability to pass arbitrary options through to called executable

This is effectively a backdoor to passing any and all options (whether they work or not) through to the underlying executable.

c.f. #31

Update:

Not applicable, at least under this issue, to destripe or destripe plus. It covers the other wrappers in acstools:

  • acs2d
  • acsccd
  • acscte
  • acsrej
  • acssum
  • calacs

Allow users to specify number of cores for ACSCTE

At the moment, the only options are one core (which is incredibly slow) or all cores (which can unintentionally eat up all of the computational resources on a large server). Can we add the ability to choose the number of cores across which to distribute the PCTE correction?

Bitwise error with satdet.update_dq().

I get the error TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' from line 878 (old mask = (dqval & dqarr) != 0) when trying to run satdet.update_dq().

Update the help

Tyler Desjardins mentions that we should consider moving emails from help[at]stsci.edu to point to the web portal where possible and appropriate. For HST (or any non-JWST), it is https://hsthelp.stsci.edu . For JWST, it is https://jwsthelp.stsci.edu . Please update info in setup.py, setup.cfg, documentation, etc as appropriate.

Please close this issue if it is irrelevant to your repository. This is an automated issue. If this is opened in error, please let pllim know!

xref spacetelescope/hstcal#317

Fix satdet regression test failure in dev and public

Satellite detection trail regression test in ACSTOOLS started failing on June 14, 2017. At first, I thought it was due to astropy/astropy#6207 but that was not merged into Astropy dev until June 15. Both code and test data have not been recently changed, so it is likely that some behavior change upstream (scipy?) caused this.

https://ssb.stsci.edu/pandokia/pandokia.cgi?query=detail&key_id=102860998

Note: Affects both test machines on dev.

c/c @dborncamp

GIF courtesy of Dave Borncamp blinking between bad output and good "truth":
satdetfail

acs_destripe_plus cannot produce CRJ/CRC

As reported by @dborncamp , there is currently no way for acs_destripe_plus to also generate CRJ/CRC files. This is because while it tries to mimic calacs.e (but with the standalone destriping in between acsccd and acscte), it does not do so completely. It does not invoke acsrej between acscte and acs2d (see http://www.stsci.edu/hst/acs/documents/handbooks/currentDHB/acs_Ch34.html).

Attached is code from Dave Borncamp to work around this limitation: https://gist.github.com/pllim/ef0b8bc20b9b9e106913e82d8acb8297

TST: Move tests off pandokia

Tests to port: https://ssb.stsci.edu/pandokia3/pandokia.cgi?query=treewalk&attn=%2A&compare=0&context=dev%3A3.5.6&host=nott&project=stsci_python&status=%2A&test_name=acstools%2F%2A&test_run=conda-conda_tests_py3_2018-09-14-10%3A30%3A02

For the HSTCAL wrappers, also see spacetelescope/hstcal#341

  • wfc_acs2d.py (wrapper for ACD2D)
  • wfc_acsccd.py (wrapper for ACSCCD)
  • wfc_acscte.py (wrapper for ACSCTE)
  • wfc_acsrej.py (wrapper for ACSREJ)
  • wfc_acssum.py (wrapper for ACSSUM)
  • wfc_destripe.py (ported in #70)
  • wfc_destripe_plus.py (individual CALACS steps + wfc_destripe)
  • wfc_pcte_1.py (already disabled in pandokia)
  • wfc_pcte_2.py (already disabled in pandokia)
  • wfc_satdet.py (ported in #70)

calacs in notebooks messes up logging

When running calacs as part of a jupyter notebook, subsequent tasks that use the logging module (e.g., astrodrizzle) start printing all logging messages to the STDOUT as well as to the logfile they create in addition to the normal messages they print to STDOUT. This has the effect of duplicating much of the information these programs normally print. I've attached an example screenshot.

screen shot 2018-04-17 at 4 20 06 pm

Through testing of individual cells in the notebook, I've narrowed down that it's the cell that imports and runs calacs that is causing this behavior. The cell contains only:

from acstools import calacs

calacs.calacs('j9l960010_asn.fits')

If I save the FLT files calacs produces, restart the kernel in the notebook and clear all outputs, and skip the cell that imports and runs calacs, then I don't get this behavior with the logging messages and only things that are normally printed to STDOUT appear in the output cell.

Update documentation

Currently, the documentation for acstools contains no references to SINKCORR in the calacs.e section. In that same section, it also tells users that CALACS may be downloaded as part of the HSTCAL package in STSDAS. So we should update the docs to include links to astroconda and the SINKCORR step.

CTE Corrected Associations

Need to have some kind of logic for what to do if images in an association have different values of PCTECORR. This may happen if, as Norman pointed out, a mix of full-frame and subarray images have been taken of the same scene or if a user has supplied their own custom made association file as we show them how to do in the ACS Data Handbook.

dask?!

As reported by Joe here

Also:

Processing dependencies for acstools==2.0.3
Searching for dask[array]>=0.5.0
Traceback (most recent call last):
   File "setup.py", line 58, in <module>
     zip_safe=False
   File
".../lib/python2.7/distutils/core.py",
line 151, in setup
     dist.run_commands()
   File
".../lib/python2.7/distutils/dist.py",
line 953, in run_commands
     self.run_command(cmd)
   File
".../lib/python2.7/distutils/dist.py",
line 972, in run_command
     cmd_obj.run()
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/command/install.py",
line 67, in run
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/command/install.py",
line 117, in do_egg_install
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/command/easy_install.py",
line 409, in run
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/command/easy_install.py",
line 645, in easy_install
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/command/easy_install.py",
line 696, in install_item
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/command/easy_install.py",
line 741, in process_distribution
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/pkg_resources/__init__.py",
line 826, in resolve
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/pkg_resources/__init__.py",
line 1092, in best_match
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/pkg_resources/__init__.py",
line 1104, in obtain
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/command/easy_install.py",
line 652, in easy_install
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/package_index.py",
line 611, in fetch_distribution
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/package_index.py",
line 448, in find_packages
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/package_index.py",
line 782, in scan_url
   File
".../lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg/setuptools/package_index.py",
line 290, in process_url
RuntimeError: Setuptools downloading is disabled in conda build. Be sure
to add all dependencies in the meta.yaml
url=https://pypi.python.org/simple/dask/r
+ exit 1
Command failed: /bin/bash -x -e
.../conda_build.sh

acs_destripe to use new FLSHCORR algorithm

In ingest_flash(), there is an attempt to emulate FLSHCORR to the data. This needs to be updated to be in sync with spacetelescope/hstcal#16. While we are at it, probably cleaner to pluck out the CALACS emulation codes and stick them in a separate module. The fix should be merged (and released) at the same time as the mentioned HSTCAL pull request.

Note: Need to make a new release when merged. But how to coordinate with HSTCAL?

no option in acs_destripe_plus to retain BLV_TMP/BLC_TMP files

acs_destripe_plus does not have an option to retain BLV_TMP/BLC_TMP files. Such a feature would be useful for users running the pixel-based CTE forward model on subarray images, since that step should be run after bias correction but before dark correction and flat-fielding.

Pass subprocess.call() results to user

In acstools, all of the subprocess.call() that execute the underlying HSTCAL C executables, never return stdout nor stderr. When the called exe fails it does so silently.

For example, ascrej()

...
  if newbias:
        call_list.append('-newbias')

    if exe_args:
        call_list.extend(exe_args)

    subprocess.call(call_list) # <---------------------------- THIS LINE


def getHelpAsString():
    """
...

Perhaps we should bump this up to using subprocess.run(), e.g.

results = subprocess.run(cmd, shell=True, check=False, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

or subprocess.check_output()

or both e.g. something like this

try:
        results = subprocess.run(cmd, shell=True, check=False, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        if results.returncode:
            return results.stdout.rstrip()
    except AttributeError:
        try:
            results = subprocess.check_output(cmd, shell=True, universal_newlines=True, stderr=subprocess.PIPE)
            return str(results).rstrip()
        except subprocess.CalledProcessError:
            return None
    except:
        return None

or just trivially:

retcode = subprocess.call(call_list)
if retcode:
    print('ERROR: return code:', retcode) 

or better still:

subprocess.check_call(call_list)

or the probably preferred option:

   try:
        subprocess.check_call(call_list)
    except subprocess.CalledProcessError as err:
        if err.returncode < 0:
            raise err
        else:
            return err.returncode
    except:
        raise
    return 0

acs_destripe_plus extract wrong dimension

As reported by Norman (@nagrogin):

might have sniffed out a bug in acs_destripe_plus... tried it on a new-epoch subarray, jdd701a3q_flt.fits... it seems to be doing bad math in _get_ref_section, returning something with dimension 2047 instead of 2048.

Feature Request: CTE forward modeler

There was a CTE forward modeler in PixCteCorr (a hidden function), which was removed along with the standalone CTE removal module that we agreed to no longer support. A proposal was raised to bring just the forward modeler back for general use.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.