Giter Club home page Giter Club logo

openmalaria's Introduction

OpenMalaria

This git-repository contains source-code for OpenMalaria, a simulator program for studying malaria epidemiology and the impacts of interventions against malaria.


For further documentation, take a look at our wiki.

Also find our code on zenodo, with DOI-references: DOI

Schema documentation for the XML input files can be found on the wiki or in the schema folder (both past releases and development version).

You can download the latest build here: releases

Version

The schema version is specified in the following places (all need to be updated when releasing a new version):

  • DocumentLoader.h
  • schema/scenario.xsd, demography.xsd, etc. (all XSD files without a version number)
  • schema/CMakeLists.txt (namespace-map)
  • copy build/schema/scenario_current.xsd to schema/scenario_XX.xsd
  • test/*.xml — update http://openmalaria.org/schema/scenario_XX and (optionally) schemaVersion="XX"
  • version.txt — needed for build service

In theory the "schema namespace version" doesn't need to match the "OpenMalaria" version and we could update the latter without requiring changes to XML files, however currently we keep both synchronised (in some ways this is simpler).

Installation instructions:

See INSTALLATION.

Build instructions:

mkdir build && cd build
ccmake ..
Press 'c', look over options, press 'c' again and 'g'
make -j4
ctest -j4

For testing and development, ideally use debug builds (which enable some asserts to do with simulation time usage).

Code subdirectories:

- dir - - description -
contrib Third-party libraries, distributed under the same repo for convenience.
model Source code for the malaria model.
test High-level testing: test scenarios with expected outputs. Also run-time files: densities.csv, scenario_?.xsd, Nv0scenario*.txt.
unittest Low-level testing: unittests for the model using cxxunit.
util Extra scripts associated with OpenMalaria.
schema scenario schema files (see schema/policy.txt for details)
schema/scenario.xsd The latest (partial) schema file.
schema/entomology.xsd, schema/demography.xsd, etc components of the latest schema, included from scenario.xsd.
schema/scenario_*.xsd Copies of released schema versions, with all components inlined in the same file.

This git repository is currently maintained by members of the Disease Modelling Unit of the Swiss Tropical and Public Health institute and other collaborators.

License

OpenMalaria is distributed under the terms of the GPL v2 (also see COPYING), or, (at your option) any later version.

openmalaria's People

Contributors

acavelan avatar cotsog avatar dhardy avatar melissapenny avatar nakul7 avatar obriet avatar pemberto avatar rogoerstph avatar thomasasmith avatar tph-thuering avatar waffle-iron avatar

Stargazers

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

Watchers

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

openmalaria's Issues

[bug] [schema-33] [output] Values for measure 3 are greater than those for measures 1 or 6

There is a problem with the output for summary measure 3 (the number of patent hosts).

If you look through an example output file, the value for 3 is greater than 1 (the number of infected hosts) and than 6 (total number of infections). This does not make sense. If you look at the later time steps, there is no malaria in the population, but we still get somewhat large values for 3.

Vectors: cross-species resource competition

Olivier's model: Funestus and Arabiensis larvae shouldn't compete with each
other at all, while indoor-biting and outdoor-biting Arabiensis larvae should
compete for the same resources. Should extend SimpleMPD model to allow this.

Original issue reported on code.google.com by [email protected] on 27 Nov 2013 at 12:12

Openmalaria as a validator

1. Add a compile-time/run-time switch to make openmalaria only do
validation (stop before simulation start).
2. Add pre-sim-start checks for potential errors currently checked during
simulations (largely to do with timed interventions).

Original issue reported on code.google.com by [email protected] on 27 Apr 2010 at 7:59

win32.zip not available for download

What steps will reproduce the problem?
1. Go to the download page under 64-bit Windows Vista and list what is 
available.
2.
3.

What is the expected output? What do you see instead?
Expected to include win32.zip; I don't see it.

.. 
openmalaria-642/ 
r784/ 
r959/ 

Please use labels and text to provide additional information.

Copuld you add more information about what to do in this case?

Original issue reported on code.google.com by [email protected] on 18 Aug 2010 at 2:00

generic interventions

Allow multiple instances of common host specific interventions. To be done for 
schema 32.

Original issue reported on code.google.com by [email protected] on 27 Nov 2013 at 12:19

and a continuous output comparator for built-in tests

As of r976, configurable continuous output appears to work.

We should add a script to approximately compare two continuous outputs in a
similar fashion to compareOutputsFloat.py and then call it after
compareOutputsFloat for all work-units with continuous output.

Original issue reported on code.google.com by [email protected] on 25 May 2010 at 10:09

Migrate from GSL to boost header-only libraries

Reason: ease building by reducing dependencies. GSL is another library that
often needs to be compiled when building openmalaria on windows.

Two remaining uses of GSL:
* PopulationAgeStructure.hpp (see OM_HAVE_GSL),
* random.cpp (several distributions unavailable or used differently in boost)

Original issue reported on code.google.com by [email protected] on 22 Mar 2010 at 1:44

consider effects of vaccines without immediate full effectiveness

Currently vaccines are modelled as reaching full effectiveness immediately on 
administration. Note from the code:

void PerHumanVaccine::update() {
    /*
    Update the effect of the vaccine
    We should assume the effect is maximal 25 days after vaccination
    TODO: consider the sensitivity of the predictions to the introduction
    of a delay until the vaccine has reached max. efficacy.
    */
    if ( _lastVaccineDose >  0) {
    _PEVEfficacy *= Vaccine::PEV.decay;
    _TBVEfficacy *= Vaccine::TBV.decay;
    _BSVEfficacy *= Vaccine::BSV.decay;
    }
}

Action: moving here because its never likely to be acted on in the code.

Original issue reported on code.google.com by [email protected] on 11 Aug 2010 at 5:40

Intervention deployment triggers

Be able to simulate, for example, when a malarial case occurs in a 
low-transmission scenario and more cases are actively looked for.

That is, a malarial fever triggers a mass screen-and-treat intervention.

Original issue reported on code.google.com by [email protected] on 30 Jun 2010 at 12:20

checkpointing: validate array sizes

Many array sizes are known and could be checked when loading a checkpoint.
Currently largely not done since it allows cleaner, more generic code.

However, since check-pointing has had a lot less problems than it used to
since the re-write, this isn't very important (keeping the reading and
writing code identical also has benefits).

Original issue reported on code.google.com by [email protected] on 22 Mar 2010 at 1:56

Cohort studies as an intervention

Rather than see output statistics for all hosts, restrict output to a chosen 
"cohort".

1. Use a model option to turn cohort-mode on, which disables output from 
non-cohort hosts.
2. Add continuous and timed interventions to pick cohort individuals, with age 
restrictions and (probability of being picked or number to pick?).

Original issue reported on code.google.com by [email protected] on 5 Aug 2010 at 9:30

Patent infections (detection)

Currently the count of patent infections (and effects on neonatal
mortality) uses a parasite density limit and has nothing to do with the new
RDT/microscopy test.

For the moment we should not do anything about changing this, since we do
not want to change the fitting models etc.

This is an issue that needs to be addressed at some time in the future e.g.
by introducing a ModelVersion option to change the way that positivity is
determined in surveys.

Original issue reported on code.google.com by [email protected] on 26 Apr 2010 at 11:00

Checkpointing or Saving state every 10%, to avoid CPU time wastage...

What steps will reproduce the problem?

Running the program with normal work units.

1. This is a problem with Version 6.52, across all windows etc versions. This 
problem may or may not have been existent in earlier versions.

2. Each time a WU is less than half done, it has to be restarted. There are 
some variations in this but I have not been able to fully deduce them.


Original issue reported on code.google.com by [email protected] on 29 May 2011 at 7:35

Gaps in documentation

There are still gaps in the wiki documentation:

* non-malaria fever model
* model parameters: descriptions and sets of fit parameters

Probably there are more; please add to this ticket or better resolve.

Original issue reported on code.google.com by [email protected] on 27 Jan 2011 at 1:04

Constant Decay

Hello,

I just downloaded a master today openmalaria-7d07dbfb51f7.

When I am looking in the code:

(1) static const TimeStep? never -> is for an event which has never happened

(2) In class ConstantDecayFunction? : public DecayFunction? TimeStep? 
sampleAgeOfDecay () const{

return TimeStep?::never;
}
(3) and in HumanITN::HumanITN disposalTime = TimeStep?::simulation + 
params.attritionOfNets->sampleAgeOfDecay();

I think you should change "never" for "future" because I think no decay in your 
code means immediate decay.

Nicolas.

Original issue reported on code.google.com by [email protected] on 24 Mar 2014 at 2:02

Weight model heterogeneity

The PKPD model needs to know an individual's mass. For now it uses a very
simple weight model. Ideally there could be some heterogeneity to weights.

Original issue reported on code.google.com by [email protected] on 27 Apr 2010 at 7:45

Reporting from transmission and drug models

Currently reports can go in to one of two files:
* output.txt = main outputs; per time-point, age-group (or other group),
and measure
* vector.txt = simple format with measure per column and row per timestep

The vector.txt output wasn't intended for much usage, but proved useful.
Probably there should be some control of frequency of output and possibly
no output before intervention phase if this is going to continue to be used.

Related, the drug model will need a lot of detailed output in order to
simulate resistance; hence may need a purpose-designed format.

Original issue reported on code.google.com by [email protected] on 27 Apr 2010 at 7:53

create a library of drug parameters

Currently we only have CQ drug parameters, as for example in this scenario
file (near the end):
http://code.google.com/p/openmalaria/source/browse/trunk/test/scenarioESCMTest.x
ml

We need some more for the initial case-management implementation (AL, SP,
IV quinine, IV artesunate, artesunate suppository). Katherine, could you
please provide these?

Original issue reported on code.google.com by [email protected] on 16 Apr 2010 at 3:23

Larviciding decay function

Give larviciding a decay function

Optionally allow more detailed description of effects (may not be necessary)

Original issue reported on code.google.com by [email protected] on 27 Nov 2013 at 11:36

Move some top-level scenario attributes

"mode" should be moved to "entoData" somewhere.
"maximumAgeYrs" should be moved to "demography"
"wuID": in theory we won't need this in the future, when checksum is used
for this validation

Original issue reported on code.google.com by [email protected] on 22 Mar 2010 at 2:06

Continuous interventions: add beginning/end

Continuous interventions currently act throughout the entire intervention 
period. It would be useful if they were limited to a defined time range (within 
this period). Probably description of multiple such time ranges should be 
possible.

This should be done for both the generic continuous deployment mechanism and 
the special vaccine deployment mechanism.

Original issue reported on code.google.com by [email protected] on 29 Jun 2010 at 6:57

DescriptiveIPT model switch: use a model option

Use a ModelOptions switch to choose between descriptive and descriptive+IPT
WH models.

At the moment the presence of an iptiDescription within interventions is
used, but this can be confusing since one would expect descriptions
themselves not to do much.

Original issue reported on code.google.com by [email protected] on 21 May 2010 at 2:56

TODO items in code

There are many FIXME, BUG, WARNING, TODO or NOTE tags in the code. This is
a permanent issue as a reminder to look for these.

Command:

egrep -IR '\b(FIXME|BUG|WARNING|TODO|NOTE|HACK)\b' include/ model/

Items not intended to get attention this way should be renamed (e.g. to
lower-case). Significant items could have an issue added here too/instead.

autogen.sh requires some files to work not on SVN

autogen.sh (for legalese purposes) requires the following files:
NEWS
AUTHORS
COPYING

These files need to be on subversion and currently are not.

(This is mainly to test the issue tracker, but the bug is real anyway)

Original issue reported on code.google.com by [email protected] on 23 Mar 2009 at 3:21

Total EIR (scaling feature) as a single value in XML

Add an attribute to the schema (presumably entoData -> annualEIR) specifying 
the total desired EIR. Must be optional for backwards compatibility.

All descriptions would be scaled to produce this level of EIR.

(In some ways this is related to the --set-EIR option, but a bit different 
since it must adjust the values in memory.)

Original issue reported on code.google.com by [email protected] on 29 Sep 2010 at 4:18

Make MDA interventions with 1-day health system more flexible.

On the 5-day timestep, MDA interventions just cleared parasites.
With the 1-day timestep, it uses the drug model and MDADescription was added to 
describe a drug dose.

This could be extended
1. to allow drug dose to depend on weight
2. to allow mass-screen-and-treat with proper drug costing/resistance effect 
and diagnostic costing.

Probably an easy and general way of doing this would be to give the drug 
description an entire decision tree (ESDecisionMap; change type of 
MDADescription to HSESCaseManagement), since this allows diagnostic and age 
dependence. The disadvantage is that a minimal MDADescription to use mass drug 
administration becomes a lot larger. The general version could be added as a 
separate intervention.

Original issue reported on code.google.com by [email protected] on 10 Aug 2010 at 10:10

Editor for case-management trees

The case management tree descriptions stored in the XML for 1-day model use a 
DSEL. We want some kind of editor for these, to be integrated with Virginia 
Tech's scenario editor. Ideas:

1.  Launch a text-editor for these, potentially with syntax highlighting. This 
does mean (a) users will have to be comfortable editing code and (b) good 
integration with a validation isn't so easy (could work something like code 
IDEs, running openmalaria binary as a validator).
2.  A widget based GUI editor. More work and needs to be kept up to date should 
new features be added to the case management model, but probably less 
intimidating and error-prone.

Original issue reported on code.google.com by [email protected] on 5 Aug 2010 at 9:26

Core Dump on local 32bit linux build?


First, I apologize if this is the wrong venue for this type of concern. I am 
currently embellishing a scenario to introduce a few interventions in a model 
community and I am running into some trouble. I have built from source on my 
linux box and have been running openmalaria successfully (it appears), until 
introducing ITNs. I am using v33 scenarios. Here is a short summary.

What steps will reproduce the problem?
1. Without interventions, all seems to work fine. 
2. If I introduce a scenario with ITNs, most random seeds, but not all, 
terminate before the simulation completes with a core dump. My scenario file 
includes the intervention <ITN> which is virtually the same as that in the test 
file scenarioIRS30.xml

What is the expected output? What do you see instead?

Termination looks like this:
ITN.cpp:469: double 
OM::interventions::ITNComponent::ITNAnopheles::SurvivalFactor::survivalFactor(do
uble, double) const: Assertion `survivalFactor <= 1.0' failed.

and then, 

4521 Aborted                 (core dumped)

Thanks for any insight.

Original issue reported on code.google.com by [email protected] on 5 Mar 2015 at 8:56

Warnings as part of results

Warnings are currently printed to stderr/stdout in some places, where they are 
often overlooked. They should be part of the results output by the simulator 
(those affecting the results).

Original issue reported on code.google.com by [email protected] on 2 Dec 2013 at 2:27

openMalaria - arm build for BOINC of openMalaria fails MSAT test

What steps will reproduce the problem?
1. build openMalaria 6.48 (svn download) for BOINC on an arm system
2. make test

What is the expected output? What do you see instead?

I'd expect it to pass all tests.  Instead it finishes with:

 The following tests FAILED:
          26 - MSAT (Failed)
 Errors while running CTest

(it passes the preceding 25 tests).

Any hints as to finding out *why* it failed?

Original issue reported on code.google.com by [email protected] on 30 Nov 2011 at 11:41

checkpointing bug exhibited by ESCMTest

What steps will reproduce the problem?
    ctest -R ESCMTest
or
    test/run.py ESCMTest -- --checkpoint=950
(with time around 1000; problem not observed with other checkpoint times).

This issue was shown by the change in r1232 or r1234; I presume however that 
it's some other checkpointing error simply revealed by this update.

Valgrind shows some kind of uninitialised value error, but this doesn't seem 
quite accurate (listed variable is not affected by much).

Original issue reported on code.google.com by [email protected] on 22 Jul 2010 at 1:45

OM Beta - PFN_LIST_CORRUPT

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?
Open Malaria Beta seems to be causing PFN_LIST_CORRUPT bsod issues with Win 
7x64.  Crash debug below

Loading User Symbols
PEB is paged out (Peb.Ldr = 00000000`7efdf018).  Type ".hh dbgerr001" for 
details
Loading unloaded module list
........
3: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

PFN_LIST_CORRUPT (4e)
Typically caused by drivers passing bad memory descriptor lists (ie: calling
MmUnlockPages twice with the same list, etc).  If a kernel debugger is
available get the stack trace.
Arguments:
Arg1: 0000000000000099, A PTE or PFN is corrupt
Arg2: 0000000000287a12, page frame number
Arg3: 0000000000000002, current page state
Arg4: 0000000000154391, 0

Debugging Details:
------------------


BUGCHECK_STR:  0x4E_99

DEFAULT_BUCKET_ID:  WIN7_DRIVER_FAULT

PROCESS_NAME:  openMalariaBet

CURRENT_IRQL:  2

LAST_CONTROL_TRANSFER:  from fffff8000ed0f0ec to fffff8000ec88fc0

STACK_TEXT:  
fffff880`0f224e18 fffff800`0ed0f0ec : 00000000`0000004e 00000000`00000099 
00000000`00287a12 00000000`00000002 : nt!KeBugCheckEx
fffff880`0f224e20 fffff800`0ec2cbc0 : 00000000`00000000 fffff680`0003b8a0 
00000000`00000002 00000000`00000001 : nt!MiBadShareCount+0x4c
fffff880`0f224e60 fffff800`0ec58bc3 : fffffa80`10f957d0 fffff700`000056e1 
0000007f`fffffff8 fffff8a0`05826878 : nt! ?? ::FNODOBFM::`string'+0x323e8
fffff880`0f224ef0 fffff800`0ec59c9e : fffffa80`10f957d0 fffffa80`00000000 
fffff8a0`0000518c fffff880`00000000 : nt!MiDeleteAddressesInWorkingSet+0x307
fffff880`0f2257a0 fffff800`0ef5a65a : fffff8a0`26de0a50 fffff880`0f225ae0 
00000000`00000000 fffffa80`13ba9b50 : nt!MmCleanProcessAddressSpace+0x96
fffff880`0f2257f0 fffff800`0ef3db7d : 00000000`c0000005 00000000`c0000001 
00000000`7efdb000 00000000`00000000 : nt!PspExitThread+0x56a
fffff880`0f2258f0 fffff800`0ec7bb3a : 00000000`00000100 fffffa80`13ba9c10 
00000000`00000001 fffff800`0ec7ec3d : nt!PsExitSpecialApc+0x1d
fffff880`0f225920 fffff800`0ec7be80 : 00000000`00000246 fffff880`0f2259a0 
fffff800`0ef3daf0 00000000`00000001 : nt!KiDeliverApc+0x2ca
fffff880`0f2259a0 fffff800`0ec882f7 : fffffa80`13ba9b50 00000000`0000006c 
00000000`00000000 fffffa80`119bf8f0 : nt!KiInitiateUserApc+0x70
fffff880`0f225ae0 00000000`74cd2e09 : 00000000`00000000 00000000`00000000 
00000000`00000000 00000000`00000000 : nt!KiSystemServiceExit+0x9c
00000000`0024ebf8 00000000`00000000 : 00000000`00000000 00000000`00000000 
00000000`00000000 00000000`00000000 : 0x74cd2e09


STACK_COMMAND:  kb

FOLLOWUP_IP: 
nt!MiBadShareCount+4c
fffff800`0ed0f0ec cc              int     3

SYMBOL_STACK_INDEX:  1

SYMBOL_NAME:  nt!MiBadShareCount+4c

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: nt

DEBUG_FLR_IMAGE_TIMESTAMP:  503f82be

IMAGE_NAME:  memory_corruption

FAILURE_BUCKET_ID:  X64_0x4E_99_nt!MiBadShareCount+4c

BUCKET_ID:  X64_0x4E_99_nt!MiBadShareCount+4c

Followup: MachineOwner
---------


http://www.tomshardware.com/forum/568-63-bsod-pfn_list_corrupt


Original issue reported on code.google.com by [email protected] on 13 Jan 2013 at 12:05

#error statement in code prevents BOINC compilation as standard

What steps will reproduce the problem?
1. Set up cmake options for a BOINC build (6.58)
2. start the build
3. watch it fail

What is the expected output? What do you see instead?

I'd expect the compilation to succeed, but it fails with this error message:

 error:  "For BOINC builds: insert checksum perturbation (compile with -DNO_CHECKSUM_PERTURB to ignore)."

which is generated by this code in BoincWrapper.cpp:169

 #       ifndef NO_CHECKSUM_PERTURB
 #       error "For BOINC builds: insert ......
 #       endif

All that this does is prevent the compilation from working.  Setting that 
definition for the build then lets it work, but apart from that doesn't change 
any code.

So all that the code does is force the compilation to fail (it occurs nowhere 
else in the code) - which seems an odd thing to do.
If this is meant it be a (would be nice) "TODO" message then why not make it a 
warn: instead?

Original issue reported on code.google.com by [email protected] on 30 Nov 2011 at 9:15

add reporting for microscopy

Could you please add into the code a function for reporting use of testing by 
microscopy(analogous to that for RDTs)?

Thank you

Original issue reported on code.google.com by [email protected] on 16 Sep 2010 at 2:48

Multiple detection limits

Currently only one detection limit is used in a simulation: PCR, normal 
microscopy or Garki. Multiple limits should be possible. From TS:

{{{
I think there is probably an outstanding item that we should be able to set 
different detection limits for PCR and for microscopy, but at the moment there 
is only a single detection limit in any one simulation.
Ideally one should be able to specify detectionLimitPCR which would default to 
detectionLimit if it is not set, so that if the simulation needs to output both 
prevalence by PCR and prevalence by microscopy (or RDT) then it could do so.  
This will be relevant when we analyse implications of different diagnostic 
technologies.
}}}

Relevant parameter: WithinHostModel::detectionLimit

Uses: WithinHostModel::summarize() (I think measures 1, 3, 5, 6, 8), and 
neonatal mortality estimates (NeonatalMortality.cpp:70).

Original issue reported on code.google.com by [email protected] on 28 Nov 2013 at 11:00

Synchronise transmission model EIR inputs

Currently, a target population-average EIR is input for the vector model via a 
fixed number of Fourier coefficients and an adult-specific EIR for the 
non-vector model via daily entries. We should

1. Change vector model to use adult-specific EIR input

Other thoughts, arguing against some specific changes:

2. It may be desirable to use the same XML element for EIR inputs in both 
models. However, in the vector model, the input is species-specific.
3. Re-examine init order. The vector-model init is dependant upon human 
availability and infectiousness of humans to mosquitoes, so waiting until human 
population has stabilised on a forced EIR is probably correct.

Original issue reported on code.google.com by [email protected] on 9 Jul 2010 at 10:52

vaccine deployment model

Right now, interaction of deployment of continuous (EPI/...) and timed 
(campaign) vaccine deployment is rather odd. Could make a model for this, then 
use more generic code for deployment. Optionally allow configuration of vaccine 
deployment interaction.

Original issue reported on code.google.com by [email protected] on 27 Nov 2013 at 12:17

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.