// firstly import the shapefile of your desired region which in our case is Punjab
        // you can upload your own shapefile as an asset in GEE and can be imported from assets taskbar on the left side of GEE
var col = ee.ImageCollection('MODIS/006/MOD13A2').select('NDVI');
var mask = punjab.geometry(); // here punjab is the shapefile needed to import from assets menu bar on the left side of GEE


var region = ee.Geometry.Polygon(
    [[[73.69150301029744, 32.666931574795804],
    [73.69150301029744, 29.410690494860194],
    [77.34995027592244, 29.410690494860194],
    [77.34995027592244, 32.666931574795804]]],
    null,false);

col = col.map(function(img) {
    var doy = ee.Date(img.get('system:time_start')).getRelative('day', 'year');
    return img.set('doy', doy);
});

var distinctDOY = col.filterDate('2013-01-01', '2014-01-01');

// Define a filter that identifies which images from the complete collection
// match the DOY from the distinct DOY collection.
var filter = ee.Filter.equals({leftField: 'doy', rightField: 'doy'});

// Define a join.
var join = ee.Join.saveAll('doy_matches');

// Apply the join and convert the resulting FeatureCollection to an
// ImageCollection.
var joinCol = ee.ImageCollection(join.apply(distinctDOY, col, filter));

// Apply median reduction among matching DOY collections.
var comp = joinCol.map(function(img) {
    var doyCol = ee.ImageCollection.fromImages(
    img.get('doy_matches')
    );
    return doyCol.reduce(ee.Reducer.median());
});

// Define RGB visualization parameters.
var visParams = {
    min: 0.0,
    max: 9000.0,
    palette: [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
    '012E01', '011D01', '011301'
    ],
};

// Create RGB visualization images for use as animation frames.
var rgbVis = comp.map(function(img) {
    return img.visualize(visParams).clip(mask);
});

// Define GIF visualization parameters.
var gifParams = {
    'region': region,
    'dimensions': 600,
    'crs': 'EPSG:3857',
    'framesPerSecond': 3
};

// Print the GIF URL to the console.
print(rgbVis.getVideoThumbURL(gifParams));

// Render the GIF animation in the console.
//print(ui.Thumbnail(rgbVis, gifParams));